Bachmann PLC IEC61131 编程指导.docx
《Bachmann PLC IEC61131 编程指导.docx》由会员分享,可在线阅读,更多相关《Bachmann PLC IEC61131 编程指导.docx(18页珍藏版)》请在冰点文库上搜索。
BachmannPLCIEC61131编程指导
IEC61131-3编程标准化介绍
(BachmannPLC编程语言介绍)
一,IEC61131-3编程语言的分类
常用的PLC编程语言分为:
IL(语句表),LD(梯形图),FBD(功能图),SFC(顺控图),CFC(改进的功能图),ST(类似于C语言,可以用记事本文件打开)。
二,各种语言的功能使用列举
1,IL语句表(没有实用价值,略)
2,LD梯形图
(1),实现逻辑运算
与运算(当a1,a2全部为TRUE时候,b1为TRUE。
)
或运算(当a1,a2有一个为TRUE时候,b1为TRUE。
)
非运算(a1==TRUE,a2==FALSE,b1为TRUE)
以上运算也可以用:
AND,OR,来实现,如:
RS,SR运算(有优先级的,RS为复位优先;SR置位优先)
如:
(a1==TRUE,a2==FALSE,b1为TRUE)
(a1==TRUE,a2==TRUE,b1为FALSE)
如:
(a1==TRUE,a2==FALSE,b1为TRUE)
(a1==TRUE,a2==TRUE,b1为TRUE)
(2)实现算术运算
其他常用的数学运算还有:
EXP,EXPT,SIN,COS,TAN,ASIN,ACOS,ATAN。
还有常用的MOVE。
(3)脉冲运算
F_TRIG,R_TRIG分别产生一个下降沿,上升沿;
(4)计数器与定时器
0001的含义是在程序上电时候,将a2置位为TRUE(第一个扫描周期,上电初始化程序可以参考该模式);当a2==TRUE将其复位(第2及以后的扫描周期)。
0002的含义是:
每3s钟t1导通一次(导通的次数由c1的设定来决定的),同时c1的次数当前数减少一次。
0003的含义是:
t1导通一次以后,关断t1。
0004的含义是:
导通次数达到设定数据以后,b2导通,同时关断t1。
TON:
通电延时。
TOF:
断电延时。
TP:
产生一段时间脉冲,与R_TRIG相似(但TP有时间规定,R_TRIG为一个扫描周期)。
(5),比较运算
EQ(等于),NE(不等于),GT(大于),LT(小于),GE(大于,等于),LE(小于,等于)。
当a1==TRUE,b100(BOOL类型)=TRUE。
其他与其操作等同的。
(6),移位操作
SHL,SHR,ROL,ROR
如:
AAAAAA为:
BYTE类型,16#10执行SHL,变成16#20。
SHR类似。
ROL,ROR为带循环移位的。
如:
使用不多,可以不看(一般在顺控程序作为执行阶段标志,如:
将AAAAAA初始化为:
0X01,当>>1表示在第一步,>>2表示在第二步,……,在第8步,有循环到第1步)。
(7),数据转换运算
定时器一般以ms为单位的,可以通过TIME_TO_INT,TIME_TO_REAL
同时也可以:
INT_TO_TIME,INT_TO_REAL.
(8),可以自己根据需要定制需要的函数.
主程序调用部分(由于使用的是梯形图,必须先定义en,eno作为其程序使用的入口与出口,en:
定义为input,bool.eno定义为output,bool).
(9),字符串运算:
主要针对于通讯的运算校验与分割,由于我们采用的CAN通信总线,内部已经做好了MODBUSCRC校验,本部分可以省略.
3,FBD功能图
不建议使用,其操作和LAD十分相识,但是在调用函数(如:
自定义的函数无法实现,只能是子程序才能使用)很不方便.
4,CFC同FBD基本一致.
5,ST语言.
由于PLC内部的SMC_PLC工具没有提供模块的EN与ENO接口,在LAD调用时,很不方便,最好使用ST.
(1),ST实现逻辑与数据运算列举.
主程序调用方法如下:
(2),ST常见的流程控制运算方法.
选择运算一般采用IF…ELSEIF…ELSE…END_IF.
如:
主程序调用as2的方法.
循环运算的方法:
●FOR循环(知道循环次数时使用).
●WHILE循环(不知道循环次数时,使用)
使用技巧:
由于BOOL数据,INT数据在初始化的时候,一般是FALSE与0,但是不能保证绝对是该数据,为了保证程序引用SIGN_AS3作为初始化标志位,在主程序初始化的时候,将其设置为FALSE(与as3的程序相对应).
(3),常用的函数在ST语言中调用
●Timer
T1;//函数声明.类型为TON.
T1.INT1.PT是属性设置.
●Counter
●RS
●ARRAY使用说明
(4),如何实现在ST语言下面的函数调用
注:
在ST语言中,如果想要实现函数的相互调用,最好在Program下实现.
下面是在主程序(用LAD编写),调用US2(设置us1的子程序,用ST编写),us1是执行函数(可以被主程序和US2调用).
注:
us1的是PRG函数类型的.如果在LAD想调用该程序,必须要有BOOL输入与输出量,并且在合适的位置.该函数的含义是:
当输入BOOL为TRUE时,求平均数.
编写US2函数,其为PRG类型.调用us1函数,并且设置其INPUT的属性,调用OUTPUT方法.
由于,要在LAD中调用US2的方法,所以,必须要有BOOL类型的INPUT与OUTPUT(EN与ENO).
0002中,调用US2(US2包括对us1的属性设置).
0003中,调用us1(us1的属性在PLC_PRG中设置).