内容摘要
适用范围
图 1:TC2中的梯形图和IEC运算符

图 2:TC 2中用ST表达IEC运算符
尽管如此,ST并不能完全取代梯形图。不仅是传统的电气工程师习惯了使用梯形图,实际上对于逻辑顺序清晰的应用,使用梯形图来表达和监视确实会更加直观。在TwinCAT 2中,IEC运算符不能串联使梯形图程序变得很长——其它PLC用一行可以表达的逻辑在TC2中需要好几行,而频繁换行也使各个动作的逻辑相关性监视起来过于“曲折”。
在TwinCAT 3中已经解决了这个问题,而对于长期使用TwinCAT 2的老用户还是受到这个问题的困扰。作者本人制作的库文件“Lib_ForLD”,通过把IEC运算符封装成带使能输入EN和执行输出ENO的功能块,使得在梯形图中这些FB实例可以任意串联。这些功能块包括:



图 3:Lib_ForLD 中替换IEC运算符的FB

图 4:功能块“ADD_R”的接口和说明

5:用Lib_ForLD 重写图1的逻辑
需要说明的是,目前MOVE指令还做不到自动识别类型转换,引用FB时要区分是字符串还是数值。字符串赋值要用MOVE_S,其它变量的赋值用MOVE_R,而MOVE_R的输出变量需要用F_LREAL或者F_INT显性指定其变量类型。在线监视图5的执行情况,示例如下:
图 6:MOVE和SIN运算示例
图6中调用了两次MOVE_R实例,其实例名称与FB名称相同,这种用法完全将FB作为FC使用——不需要记忆,即时输出运算结果,下一次运算清除上一次的运算结果。两个MOVE_R,第1次把浮点数赋给整数,用F_INT指定输出格式,结果是四舍五入的整数。第2次把整数赋给浮点数,用F_LREAL指定输出格式,这个结果是确定的,不会有什么歧义。尝试把第1次MOVE_R的输入值从15.69改为15.49,它的输出就从16变成了15,如下图所示:

图 7: MOVE_R的四舍五入
图5和图6中顺便可以观察SIN_R的使用,SIN(1)等于0.8415,SIN(2)等于0.9093。其它功能块都几乎与IEC运算符相同,望文知义,不需要逐一说明。有任何疑问,请联系作者本人。
(1) 关于TwinCAT 3
(2) 关于代码“翻译”
ftp://baclizzy.com.cn:21/Lizzy的倍福园地/20191115TC2LD

喜欢本文?识别二维码,可关注公众号




