twincat3编程规范
twincat编程遵循IEC61131-3标准
1.声明变量及数据类型:
- 变量名不区分大小写;
- 变量名首字符是字母或下划线,由字母、数字、下划线组成;
- 变量名不能包含空格、连续下划线、特殊字符;
- 声明输入输出变量,例如: regwordout AT%Q* :WORD; regwordin AT%I* :WORD;
- 断电保持变量PERSISTENT:在PLC关机时保存,PLC上电后读取。调用功能块Tc2_Utilities.LIB、FB_WritePersistenData;
- 初始化常量
2.关键字
- IEC61131-3标准中的关键字不能做为变量名、功能块名,如AND、INT、STRUCT、FUNCTION;
- 关键字在程序中自动显示为蓝色大写。
3.注释
4.基本数据类型
- bool\byte\word数据类型
- int数据类型
U无符号,S短,D双,Prefix:前缀,用于标识变量和常量的数据类型。
- 浮点型数据类型
REAL32位,LREAL在倍福3中才支持。
- 日期时间数据类型
TIME可精确到毫秒,Prefix前缀常用。
- string字符串类型
支持ASCII表,最大255个字符,一个字符1字节(8位),string字符必须带/0结束符(长度+1)。
- wstring字符串类型
twincat3新增,支持unicode、多国语言、特殊字符,一个字符2字节(16位),ASCII表意外的字符就需要用到wstring类型。
- 数组类型
可以将结构体做为数组元素,如:Positions:ARRAY[100] OF DrillPos;DrillPos为结构体名称,数组中每一个元素都是一个结构体。
通过功能块CheckBounds可以检查下标是否超范围,如果下标越界,自动把多余的值赋给最后一个元素。
5.溢出
- 变量超出数据类型长度范围导致溢出
6.常用功能块-读取系统时间并转换为其他格式
- 导入功能函数库;
- 变量定义后按下F2快捷键;
-
点击active configration--login--start,使能后点击Write values;
-
systemtime1转化为dt格式,dt格式转化为tod格式。
7.字符串处理
- 查询-FIND
- 替换-REPLACE
8.全局变量和局部变量
- 局部变量只能用在我们声明变量所在的块或程序内,全局变量可以用在一个项目的多个块中;
- 在程序B中声明的固定地址变量,在程序A中可以通过固定地址读取,值不变;
- 全局变量与局部变量重名时,可通过命名空间与变量名的组合进行访问,如Gvl1.Var1为全局变量,Var1为局部变量;
9.自定义数据类型
- 别名
如果一个全局变量的声明发生改变,则在功能块中的所有声明都要发生改变,此时就需要用别名统一修改。
也可以通过软件界面右击DUTs文件夹新增。
- 枚举类型
由于枚举名字的区别,相同的枚举量可以使用两次。例如Woche.Dn,Richtung.Dn.
默认从0开始枚举。
- 结构体,将同一类变量放在一起为一个结构体
结构体调用之前需要在变量声明区进行实例化,如:KL5101_OUT1:KL5101_OUT;
调用:KL5101_OUT1.Ctrl:=1;
- 共用体,共用体中变量使用同一内存,可以分离一个变量
10 .运算优先级
11.常用指令
- 条件语句-IF ELSE
- 选择语句-CASE
CASE语句与IF语句结合使用
枚举形式表示CASE语句
- 循环语句-FOR/WHILE/REAPET,三种循环都可以exit退出
FOR循环,BY表示步长;
WHILE循环,while语句后的表达式为True则一直循环;
REAPET循环,直到循环语句为True才退出循环,先执行后判断。
知己者不怨人,知命者不怨天。