TwinCAT3中使用梯形图编程
目录
1、梯形图程序创建
(1)程序创建
(2)局部变量
(3)全局变量
2、LdTest_ACT1程序功能说明
(1)数值计算
(2)数值比较判断
(3)置位和复位
3、LdTest_ACT2程序功能说明
4、自定义系统变量
(1)全局变量定义
(2)Main中ST程序代码实现
5、字和位说明
6、TwinCAT中的操作符说明
(1)操作符功能说明
(2)梯形图程序中使用操作符的2种方法
7、下载链接
(1)TwinCAT编程手册
(2)测试工程
1、梯形图程序创建
(1)程序创建
在Main程序中添加两个ACTION动作,然后在Main中调用
LdTest_ACT1(); LdTest_ACT2();
(2)局部变量
PROGRAM MAIN VAR TON_0: TON; TON_1: TON; TON_2: TON; TON_3: TON; TON_4: TON; TON_5: TON; TON_6: TON; TON_7: TON; TON_8: TON; dTemp1: LINT; dTemp2: LINT; dTemp3: LINT; dTemp4: LINT; dTemp5: LINT; dTemp6: LINT; R_TRIG_0: R_TRIG; R_TRIG_1: R_TRIG; R_TRIG_2: R_TRIG; R_TRIG_3: R_TRIG; _Flash_10ms: MyFlash_FB; //10毫秒脉冲 _Flash_50ms: MyFlash_FB; //50毫秒脉冲 _Flash_100ms: MyFlash_FB; //100毫秒脉冲 _Flash_250ms: MyFlash_FB; //250毫秒脉冲 _Flash_500ms: MyFlash_FB; //100毫秒脉冲 _Flash_1000ms: MyFlash_FB; //1000毫秒脉冲 _Flash_2000ms: MyFlash_FB; //2000毫秒脉冲 END_VAR
(3)全局变量
VAR_GLOBAL // bg_AlwaysOn: BOOL:=TRUE; //始终ON bg_AlwaysOff: BOOL:=FALSE; //始终OFF bg_FirstCircleOn: BOOL:=TRUE; //第一次上电导通 // bg_Puls_10ms: BOOL; //10毫秒通断脉冲 bg_Puls_50ms: BOOL; //50毫秒通断脉冲 bg_Puls_100ms: BOOL; //100毫秒通断脉冲 bg_Puls_250ms: BOOL; //250毫秒通断脉冲 bg_Puls_500ms: BOOL; //500毫秒通断脉冲 bg_Puls_1000ms: BOOL; //1000毫秒通断脉冲 bg_Puls_2000ms: BOOL; //2000毫秒通断脉冲 // W1: LINT; W2: LINT; W3: LINT; W4: LINT; W5: LINT; W6: LINT; W7: LINT; W8: LINT; W9: LINT; W10: LINT; // M1: LINT; M2: LINT; M3: LINT; M4: LINT; M5: LINT; M6: LINT; M7: LINT; M8: LINT; M9: LINT; M10: LINT; // bg_M0: BOOL; bg_M1: BOOL; bg_M2: BOOL; bg_M3: BOOL; bg_M4: BOOL; bg_M5: BOOL; bg_M6: BOOL; bg_M7: BOOL; bg_M8: BOOL; bg_M9: BOOL; // bg_M10: BOOL; bg_M11: BOOL; bg_M12: BOOL; bg_M13: BOOL; bg_M14: BOOL; bg_M15: BOOL; bg_M16: BOOL; bg_M17: BOOL; bg_M18: BOOL; bg_M19: BOOL; // bg_M20: BOOL; bg_M21: BOOL; bg_M22: BOOL; bg_M23: BOOL; bg_M24: BOOL; bg_M25: BOOL; bg_M26: BOOL; bg_M27: BOOL; bg_M28: BOOL; bg_M29: BOOL; // bg_M30: BOOL; bg_M31: BOOL; bg_M32: BOOL; bg_M33: BOOL; bg_M34: BOOL; bg_M35: BOOL; bg_M36: BOOL; bg_M37: BOOL; bg_M38: BOOL; bg_M39: BOOL; // bg_M40: BOOL; bg_M41: BOOL; bg_M42: BOOL; bg_M43: BOOL; bg_M44: BOOL; bg_M45: BOOL; bg_M46: BOOL; bg_M47: BOOL; bg_M48: BOOL; bg_M49: BOOL; // bg_M50: BOOL; bg_M51: BOOL; bg_M52: BOOL; bg_M53: BOOL; bg_M54: BOOL; bg_M55: BOOL; bg_M56: BOOL; bg_M57: BOOL; bg_M58: BOOL; bg_M59: BOOL; // bg_M60: BOOL; bg_M61: BOOL; bg_M62: BOOL; bg_M63: BOOL; bg_M64: BOOL; bg_M65: BOOL; bg_M66: BOOL; bg_M67: BOOL; bg_M68: BOOL; bg_M69: BOOL; END_VAR
2、LdTest_ACT1程序功能说明
(1)数值计算
(2)数值比较判断
(3)置位和复位
3、LdTest_ACT2程序功能说明
使用循环左移ROL指令实现流水灯功能
4、自定义系统变量
实现类似于其它传统品牌PLC的系统变量如:第一次上电导通、常ON、常OFF以及通断脉冲变量等。
(1)全局变量定义
// bg_AlwaysOn: BOOL:=TRUE; //始终ON bg_AlwaysOff: BOOL:=FALSE; //始终OFF bg_FirstCircleOn: BOOL:=TRUE; //第一次上电导通 // bg_Puls_10ms: BOOL; //10毫秒通断脉冲 bg_Puls_50ms: BOOL; //50毫秒通断脉冲 bg_Puls_100ms: BOOL; //100毫秒通断脉冲 bg_Puls_250ms: BOOL; //250毫秒通断脉冲 bg_Puls_500ms: BOOL; //500毫秒通断脉冲 bg_Puls_1000ms: BOOL; //1000毫秒通断脉冲 bg_Puls_2000ms: BOOL; //2000毫秒通断脉冲
(2)Main中ST程序代码实现
// _Flash_10ms(FlashTime:=T#10MS,bFlashVar=>bg_Puls_10ms); //10毫秒通断脉冲 _Flash_50ms(FlashTime:=T#50MS,bFlashVar=>bg_Puls_50ms); //50毫秒通断脉冲 _Flash_100ms(FlashTime:=T#100MS,bFlashVar=>bg_Puls_100ms); //100毫秒通断脉冲 _Flash_250ms(FlashTime:=T#250MS,bFlashVar=>bg_Puls_250ms); //250毫秒通断脉冲 _Flash_500ms(FlashTime:=T#500MS,bFlashVar=>bg_Puls_500ms); //500毫秒通断脉冲 _Flash_1000ms(FlashTime:=T#1000MS,bFlashVar=>bg_Puls_1000ms); //1000毫秒通断脉冲 _Flash_2000ms(FlashTime:=T#2000MS,bFlashVar=>bg_Puls_2000ms); //2000毫秒通断脉冲 //第一次上电导通 IF bg_FirstCircleOn THEN bg_FirstCircleOn:=FALSE; END_IF
5、字和位说明
譬如
(1)定义变量W1为INT,则对应的32BOOL位分别是W1.0-W1.15
(2)定义变量W2为LINT,则对应的32BOOL位分别是W2.0-W2.31
6、TwinCAT中的操作符说明
具体说明见TwinCAT编程手册
(1)操作符功能说明
(2)梯形图程序中使用操作符的2种方法
方法1,直接在工具箱中找到需要使用的功能块拖动到程序中即可。(如果工具箱中没有需要使用的功能块,则使用方法2)
方法2,在程序中鼠标右击->插入运算库,在输入助手中输入需要的功能块
如1:加功能:ADD
如2:伺服使能
TwinCAT中如何使用梯形图控制伺服,参见教程:TwinCAT3入门教程4-伺服常用功能程序实现_twincat3入门手册-CSDN博客
7、下载链接
(1)TwinCAT编程手册
https://download.csdn.net/download/panjinliang066333/89554294
(2)测试工程
https://download.csdn.net/download/panjinliang066333/89554296