twincat3编程规范

发布时间 2023-09-05 11:47:27作者: 心如__止水

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才退出循环,先执行后判断。

 

 

 

 

愿景: 1.让后人不必再走吃苦探寻真理的老路 2.健全自身价值体系,找到本我 3.报效善育之恩、关爱之恩 4.尽长辈之责,树立榜样,传递普世价值观 5.了解社会,商业运行真相