版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ST语言(结构化文本StructuredText)编程手册依据:IEC61131-3国际标准;适用于Codesys、汇川、倍福、施耐德、欧姆龙、三菱GXWorks、西门子SCL(SCL为ST的厂商实现版本),语法主体通用,仅部分内置库存在厂商差异。面向PLC工程师、自动化工程师,定位为基础语法手册+标准样例+工程规范。一、概述ST(StructuredText,结构化文本)是IEC61131-3定义的文本型PLC编程语言,语法源自Pascal,适合复杂算法、批量运算、数据处理、通信解析、顺控状态机开发;可和LD、FBD、SFC混合编程。优势:可读性强、适合复杂数学逻辑、便于封装FB复用、方便版本管理短板:纯联锁逻辑直观性不如梯形图注意:西门子叫SCL,属于ST的厂商方言;Codesys、汇川、倍福为原生标准ST。二、词法基础2.1注释st
注释写法
//单行注释
(*多行注释
支持换行*)2.2标识符规则字母、数字、下划线,不能以数字开头不区分大小写(标准ST,部分厂商可设置区分)禁止使用关键字:IF、THEN、ELSE、ELSIF、END_IF、CASE、OF、FOR、WHILE、REPEAT、UNTIL、RETURN、EXIT、VAR、FUNCTION、FUNCTION_BLOCK、PROGRAM、TYPE、END_TYPE2.3常量写法st
常用常量
i:=10;//INT
r:=3.14;//REAL
b:=TRUE;//BOOL
s:='HELLOST';//STRING
dt:=DT#2026-10-30T12:00:00;//DATE_AND_TIME三、基础数据类型(IEC标准)类型说明BOOL布尔:TRUE/FALSEBYTE/WORD/DWORD/LWORD8/16/32/64位无符号SINT/INT/DINT/LINT有符号整数USINT/UINT/UDINT/ULINT无符号整数REAL/LREAL单精度/双精度浮点数STRING字符串TIME时间:T#10s、T#5m30sDATE/TIME_OF_DAY/DT日期、时刻、日期时间衍生类型:数组ARRAY、结构体STRUCT、枚举ENUM、指针POINTER、引用REF_TO。四、变量声明(核心)变量块必须成对,以VAR开头、END_VAR结尾。st
变量声明示例
VAR_INPUT
Start:BOOL;
SetSpeed:INT;
END_VAR
VAR_OUTPUT
Run:BOOL;
ActSpeed:INT;
END_VAR
VAR_IN_OUT
SetPoint:REAL;
END_VAR
VAR//内部静态变量(FB静态,OB/FC无记忆)
Timer1:TON;
Count:INT:=0;//初始化赋值
END_VAR
VAR_TEMP//临时变量,每次调用不保存,FC常用
TempCalc:REAL;
END_VAR:=赋值;=>输出参数传递(FB调用)初始化仅在首次上电执行,循环扫描不会重复赋值五、运算符与优先级(从高到低)括号()一元:NOT、-乘除:*、/、MOD加减:+、-比较:>、<、>=、<=、=、<>逻辑与AND逻辑异或XOR逻辑或ORst
运算符示例
Result:=(A+B)*10MOD5;
Flag:=(Speed>50)ANDEnable;六、控制语句(标准语法)6.1IF分支st
IF示例
IFStartANDNOTFaultTHEN
Run:=TRUE;
ELSIFStopTHEN
Run:=FALSE;
ELSE
Run:=Run;//保持
END_IF;关键:关键字是ELSIF(不是ELSEIF),这是ST标准写法。6.2CASE状态机(顺控首选)st
CASE状态机
CASEStepOF
0:
//初始态
IFStartTHENStep:=1;END_IF;
1:
Run:=TRUE;
IFTimer1.QTHENStep:=2;END_IF;
2:
Run:=FALSE;
ELSE
Step:=0;//异常复位
END_CASE;6.3FOR循环(已知次数)st
FOR示例
FORi:=0TO9DO
Buffer[i]:=0;
END_FOR;
//步长STEP
FORi:=0TO100STEP10DO
END_FOR;6.4WHILE(先判断,条件满足才执行)st
WHILE示例
WHILE(i<100)DO
i:=i+1;
END_WHILE;6.5REPEAT(先执行一次,后判断)st
REPEAT示例
REPEAT
i:=i+1;
UNTILi>=100
END_REPEAT;⚠️注意:PLC循环严禁死循环!PLC是周期扫描,死循环会触发看门狗报错停机;循环内尽量加EXIT保护。EXIT跳出当前循环;RETURN直接退出当前FC/FB。st
循环保护
FORi:=0TO999DO
IFFaultTHENEXIT;END_IF;
END_FOR;七、FUNCTION/FUNCTION_BLOCK/PROGRAM7.1FUNCTION函数(无记忆,无内部静态变量)st
函数定义
FUNCTIONCalcArea:REAL
VAR_INPUT
Width:REAL;
Height:REAL;
END_VAR
CalcArea:=Width*Height;
END_FUNCTION调用:Area:=CalcArea(Width:=10.0,Height:=20.0);7.2FUNCTION_BLOCK功能块(有状态、有记忆)st
功能块定义
FUNCTION_BLOCKFB_Motor
VAR_INPUT
Start:BOOL;
Stop:BOOL;
END_VAR
VAR_OUTPUT
Run:BOOL;
END_VAR
VAR
T1:TON;
END_VAR
IFStartTHEN
Run:=TRUE;
ELSIFStopTHEN
Run:=FALSE;
END_IF;
T1(IN:=Run,PT:=T#5s);
END_FUNCTION_BLOCK调用(必须实例化):st
功能块调用
VAR
Motor1:FB_Motor;
END_VAR
Motor1(Start:=DI_Start,Stop:=DI_Stop,Run=>DO_Run);7.3PROGRAM程序(OB级,分配给PLC任务周期执行)st
程序定义
PROGRAMMain
VAR
MotorA:FB_Motor;
END_VAR
MotorA(Start:=StartBtn,Stop:=StopBtn);
END_PROGRAM八、自定义类型:数组、结构体、枚举8.1枚举ENUMst
枚举定义
TYPE
State_Enum:(INIT,RUN,STOP,FAULT);
END_TYPE
VAR
Step:State_Enum;
END_VAR8.2结构体STRUCTst
结构体定义
TYPE
MOTOR_STRUCT:
STRUCT
Enable:BOOL;
SetSpeed:INT;
ActSpeed:INT;
Fault:BOOL;
END_STRUCT;
END_TYPE
VAR
M1:MOTOR_STRUCT;
END_VAR
//访问
M1.Enable:=TRUE;8.3数组ARRAYst
数组定义
VAR
DataBuf:ARRAY[0..31]OFINT;
END_VAR
DataBuf[0]:=100;多维数组:ARRAY[0..7,0..15]OFREAL;九、定时器、计数器标准调用样例st
TON与CTU调用
VAR
T_Delay:TON;
C_Up:CTU;
END_VAR
//TON:IN触发,PT预设时间,Q输出
T_Delay(IN:=Run,PT:=T#3s);
Flag_Delay:=T_Delay.Q;
//CTU上升沿计数
C_Up(CU:=RiseSignal,R:=Reset,PV:=100);
Cnt_Val:=C_Up.CV;说明:TON/TOF/TP/CTU/CTD/CTUD是IEC标准FB,各平台均支持,仅个别库命名存在差异。十、编程规范(工程落地强制推荐)变量命名:驼峰/下划线风格,见名知义,禁止a、b、temp1无意义命名每个FB单一职责(单一功能原则),一个FB不要同时做电机+配方+通信状态机优先CASE,不使用大量嵌套IF循环尽量短,大批量数据处理建议拆到多个扫描周期输出变量建议先复位、再置位,避免锁存逻辑混乱所有FB实例必须单独定义,禁止匿名调用注释写为什么,不要重复翻译代码本身故障码、状态码统一用枚举,不要硬编码数字魔法值十一、兼容性与常见坑关键字:标准是ELSIF,不要写ELSEIF(C语言习惯,会编译报错)赋值:=,等于判断=;不等<>,不是!=浮点数比较:禁止直接IFr1=r2THEN,存在浮点误差,用差值判断:st
IFABS(r1-r2)<0.001THEN
END_IF;FB和FC区别:FC无记忆、FB有静态记忆,电机、定时器、带状态逻辑必须用FB字符串:标准STRING有长度限制,LSTRING(Codesys/新IEC)长字符串厂商支持不一西门子SCL:大体兼容,但部分内置函数名、AT寻址写法与标准ST有差异,跨平台移植需单独适配十二、综合完整示例:电机启停+延时故障检测st
FB_Motor_FaultDetect完整示例
FUNCTION_BLOCKFB_Motor_FaultDetect
VAR_INPUT
StartBtn:BOOL;
StopBtn:BOOL;
Feedback:BOOL;//电机反馈
FaultRst:BOOL;
END_VAR
VAR_OUTPUT
RunOut:BOOL;
FaultOut:BOOL;
END_VAR
VAR
RunLatch:BOOL;
T_Fault:TON;
END_VAR
//启停自锁
IFStartBtnTHEN
RunLatch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 报关内勤工作介绍课件
- 2026年版全国计算机等级考试模拟试卷带答案
- 2026年车削加工工艺模拟试题(含答案)
- 2026年殡仪行业考试模拟试卷带答案
- 2026年广东广州市暨南大学博士后招聘模拟试卷(含答案)
- 国家开放大学电大本科市场营销策划(本)2025期末模拟试题及参考答案
- 2026年北森招聘考试模拟试卷带答案
- 2026年班组安全生产培训模拟试卷目带答案
- 2026年安徽药学单招模拟试题(含答案)
- 2026年施工吊装考试题库及参考答案
- 天津港集团招聘笔试真题
- 【初中 地理】知识点汇Z-2025-2026学年七年级地理上学期(湘教版2024)
- 广东省广州市2026届高三年级上学期12月调研测试(广州零模)历史试卷
- 2025届高三下学期《十八而志大任始承-高三成人礼》主题班会课件
- 船舶船员心理卫生指南
- 仪表管理标准制度
- 宫颈癌疫苗接种知识培训课件
- 检验室现场管理制度
- 学校交通安全家长会课件
- 临床技术操作规范麻醉学分册
- 泰勒《课程与教学的基本原理》讲义
评论
0/150
提交评论