TwinCAT编程笔记

更新时间:2023-09-30 13:50:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1. 配置

一个配置就是一个控制系统,一个配置可以有一个或多个资源,在TwinCAT中一个或多个PLC。

2. 资源

资源就是PLC的运行核,资源包括全局变量、任务、POU(程序组织单元) 一个资源可以有一个或多个任务

3. 任务

一个资源有一个或多个任务,任务具有优先级( 0 - 3),任务调用一个或多个程序,任务决定了所关联程序的时间调度。

4. 程序

根据控制过程的需要,包含函数和功能块的一个POU,任务调用程序,程序调用函数和功能块

5. 功能块(FB)

每次被执行就是运行一段程序编码,有变量输入输出和运算法则,可以调用函数和功能块

6. 函数

被函数或功能块调用,可以调用其他函数但是不能调用功能块

7. 局部变量

在一个POU(程序、功能块、函数)中定义,只能在POU中访问

8. 全局变量

在资源(PLC运行核)中申明,每个POU可以访问

9. 直接描述变量

具有固定地址的变量

地址:输入(I), 输出(Q) , 标记(M)

类型:位 (X), 字节 (B), 字 (W) , 双字 (D) 例如: %IW12, %QX1.1, %MB5

10. 冷启动

所有变量被初始化

11. 热启动

不进行变量初始化、原值被使用

12. 限定字符

不分大小写,关键字总是大写,无国家字符

13. 标识符

第一个不能使数字,不能连续多于一个下划线

14. 关键字

关键字总是大写

15. 注释

被(*和*)框住的内容,不能放在语句中,不允许嵌套

16. 数据类型

整型:SINT (8) ,INT(16),DINT(32),LINT(64) 无符号的在前面加U,允许十进制,十六进制(16#),八进制(8#),可以用_进行单元分隔 浮点:REAL(32) LREAL(64)

时间与日期: TIME(32) TIME#或T#/t#,允许溢出如25 DATE(32) DATE# D#/d# 字符串:以’’引括字符,用$表示特殊字符 换行($L)

位和位组:BOOL(1) BYTE(8) WORD(16) DWORD(32) LDWORD(64)

17. 自定义数据类型

TYPE ... END_TYPE 类型重定义相当于c/c++ typedef STRUCT ... END_STRUCT 定义自己的数据结构 定义枚举类型:TYPE Modes:

(Initting:=0,Runnin:=1,Idel,Reset,Faulty) END_TYPE

数组是具有相同数据类型的数值集合,允许三维数组存在 TYPE matrix:

ARRAY[1..23,0..1] OF INT END_TYPE

18. 变量

VAR

A,c,b : REAL; d,e :BOOL;

f : ARRAY[1..12] OF BOOL; END_VAR

在程序中,函数或者功能块的输入变量 VAR_INPUT A,b,c :REAL; END_VAR

输出变量: VAR_OUTPUT d,e : REAL; END_VAR

输入输出变量: 在POU内部允许更改变量 VAR_IN_OUT X :STRING; END_VAR

全局变量:允许从所有POU中读取的变量 VAR_GLOBAL var:UINT; END_VAR 变量属性:

RETAIN:断电后值被保存,TwinCAT启动后值被恢复 CONSTANT:常量值不能被修改

AT:变量被指定存储位置(固定地址) 直接表示变量:

以%开头,第二个为I/Q/M,第三个为X/B/W/D 如:%IB24, %QX1.1, %MW12

地址可以交迭,%MB12 是%MW12 的第一个字节,也是%MD12 的第一个字节 ? %MX12.0 是 %MB12 的第一位

变量初始化:每个变量在启动时被赋初值,所有变量可改变默认值 VAR

A :REAL := 12.0;

B : STRING := ‘Hello World!’; C: INT :=22; END_VAR

派生数据类型变量的初始化: 结构:用括号对每个成员赋初值 VAR

a :mystruct :=

(

Status := TRUE; InputVar := 2.5; )

END_VAR

数组:用逗号分隔设定多重初值 VAR

a :ARRAY[1..10] OF INT :=

1,2,3,4,5,6,7,8,9,0; END_VAR

19. 函数

内部数据不存储 几个输入值 一个输出值

用户定义的函数可以用各种语言编辑代码 (除了SFC) 函数名必须是返回值的名

超载函数

一些函数可以处理不同的数据类型(调用操作) a,b :REAL; c,d:INT;

a := ABS(b); (* 用REAL做输入输出 *) c := ABS(d); (* INT做输入输出 *) 数据类型转换函数

在不同的数据类型之间需要转换数值,你必须要用转换函数 a :REAL; b:INT;

b := REAL_TO_INT(a); 标准IEC61131函数

位组:AND,OR,XOR,NOT,SHL,SHR,ROL,ROR

数学:ADD,SUB,MUL,DIV,MOD,EXPT,ABS,SQRT,LN,LOG,EXP,SIN,COS,TAN,ASIN,ACOS,ATAN 类型转换:BOOL_TO_BYTE,REAL_TO_DINT 选择:SEL,MIN,MAX,LIMIT,MUX 比较:GT,GE,EQ,LT,LE,NE

字符串:LEN,LEFT,RIGHT,MID,CONCAT,INSERT,DELETE,REPLACE,FIND

20. 功能块

设立输入、输出和内部变量

运算法则建立新的输出和内部变量

参数被保持到下次执行(保存在存储器中)

功能块例程是一个结构,包含所有输入、输出和内部变量 一个FB允许建立读个例程

在FB的外部,只有输入、输出和输入/输出变脸传递参数 在其他的FB程序中,以不同的变成语言使用FB调用 一个FB例程在调用的FB/程序中是一个变量或全局变量 FB例程可以使对其他FB/程序的输入变量

触发器SR, RS, SEMA 沿探测 R_TRIG, F_TRIG 记数器CTU, CTD, CTUD 定时器TP, TON, TOF, RTC

21. 程序

程序可以有输入, 输出, 局部变量和算法的程序代码部分 不同于FB: 程序没有例程 程序没有存储器

在程序中使用各种语言

程序由任务来调用(TwinCAT : 可由其它程序调用)

22. 任务

用任务控制执行

执行不同循环时间的程序

指派任务的优先级(要求无间断运行程序必须有最高优先级) TwinCAT:每个PLC运行核有四个任务 强制优先时序 23. 编程语言

文本语言:结构文本(ST)、指令表(IL)

图形语言:功能图(FBD)、梯形图(LD)、顺序功能图(SFC) 24.

本文来源:https://www.bwwdw.com/article/o2fd.html

Top