资源描述:
《twincat编程笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.配置一个配置就是一个控制系统,一个配置可以有一个或多个资源,在TwinCAT中一个或多个PLC。2.资源资源就是PLC的运行核,资源包括全局变量、任务、POU(程序组织单元)一个资源可以有一个或多个任务3.任务一个资源有一个或多个任务,任务具有优先级(0-3),任务调用一个或多个程序,任务决定了所关联程序的时间调度。4.程序根据控制过程的需要,包含函数和功能块的一个POU,任务调用程序,程序调用函数和功能块5.功能块(FB)每次被执行就是运行一段程序编码,有变量输入输出和运算法则,可以调用函数和功
2、能块6.函数被函数或功能块调用,可以调用其他函数但是不能调用功能块7.局部变量在一个POU(程序、功能块、函数)中定义,只能在POU中访问8.全局变量在资源(PLC运行核)中申明,每个POU可以访问9.直接描述变量具有固定地址的变量地址:输入(I),输出(Q),标记(M)类型:位(X),字节(B),字(W),双字(D)例如:%IW12,%QX1.1,%MB510.冷启动所有变量被初始化11.热启动不进行变量初始化、原值被使用12.限定字符不分大小写,关键字总是大写,无国家字符13.标识符第一个不能使数
3、字,不能连续多于一个下划线14.关键字关键字总是大写15.注释被(*和*)框住的内容,不能放在语句中,不允许嵌套16.数据类型整型:SINT(8),INT(16),DINT(32),LINT(64)无符号的在前面加U,允许十进制,十六进制(16#),八进制(8#),可以用_进行单元分隔浮点:REAL(32)LREAL(64)时间与日期:TIME(32)TIME#或T#/t#,允许溢出如25DATE(32)DATE#D#/d#字符串:以’’引括字符,用$表示特殊字符换行($L)位和位组:BOOL(1)B
4、YTE(8)WORD(16)DWORD(32)LDWORD(64)1.自定义数据类型TYPE...END_TYPE类型重定义相当于c/c++typedefSTRUCT...END_STRUCT定义自己的数据结构定义枚举类型:TYPEModes:(Initting:=0,Runnin:=1,Idel,Reset,Faulty)END_TYPE数组是具有相同数据类型的数值集合,允许三维数组存在TYPEmatrix:ARRAY[1..23,0..1]OFINTEND_TYPE2.变量VARA,c,b:REA
5、L;d,e:BOOL;f:ARRAY[1..12]OFBOOL;END_VAR在程序中,函数或者功能块的输入变量VAR_INPUTA,b,c:REAL;END_VAR输出变量:VAR_OUTPUTd,e:REAL;END_VAR输入输出变量:在POU内部允许更改变量VAR_IN_OUTX:STRING;END_VAR全局变量:允许从所有POU中读取的变量VAR_GLOBALvar:UINT;END_VAR变量属性:RETAIN:断电后值被保存,TwinCAT启动后值被恢复CONSTANT:常量值不能被
6、修改AT:变量被指定存储位置(固定地址)直接表示变量:以%开头,第二个为I/Q/M,第三个为X/B/W/D如:%IB24,%QX1.1,%MW12地址可以交迭,%MB12是%MW12的第一个字节,也是%MD12的第一个字节•%MX12.0是%MB12的第一位变量初始化:每个变量在启动时被赋初值,所有变量可改变默认值VARA:REAL:=12.0;B:STRING:=‘HelloWorld!’;C:INT:=22;END_VAR派生数据类型变量的初始化:结构:用括号对每个成员赋初值VARa:mystru
7、ct:=(Status:=TRUE;InputVar:=2.5;)END_VAR数组:用逗号分隔设定多重初值VARa:ARRAY[1..10]OFINT:=1,2,3,4,5,6,7,8,9,0;END_VAR1.函数内部数据不存储几个输入值一个输出值用户定义的函数可以用各种语言编辑代码(除了SFC)函数名必须是返回值的名超载函数一些函数可以处理不同的数据类型(调用操作)a,b:REAL;c,d:INT;a:=ABS(b);(*用REAL做输入输出*)c:=ABS(d);(*INT做输入输出*)数据类
8、型转换函数在不同的数据类型之间需要转换数值,你必须要用转换函数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,LIM