各位高手们,我在做S7300程序是用到的计时SD,用户希望在实际应用中,这个时间可以在组态画面上修改。SD的时间格式为S5T#2s,那么我想用MW100来储存SD的时间值,如下图1,但是在MD108中我预设置有数值,但是在运行后我监视PLC运行,显示为0,MW164输出也是0,定时器没有运行。这个问题我请教过多次,是否会是我没有设定时基?另外在“定时器程序”贴图中我搞不清AW是啥意思。请解释下STL语句:
L MW 100
ITB 将MW100数值转换为BCD?
L W#16#2FFF
AW AW是什么?
T MW 120
还有在有的用OW,又是什么?对于时基要在哪里设置?敬请指教!y6843@sina.com 673049828
问题补充:
能否将STL语句的程序转为梯形图?谢谢!
L MW 100
ITB
L W#16#2FFF
AW
T MW 120
图片说明:
最佳答案
CPU中定时器的设定值,分为时间基数和时间数值,其中时间的数值是以BCD码的形式进行存储的,所以要HMI设定的数值要进行一次的改变;
L MW 100
ITB //将时间的数值转化为BCD码的格式,但是这个时候时间基数没有体现出来,
L W#16#2000 //W#16#2000转化为二进制的话,只有12-15位是特殊的为2 也就是0010那么时基就是1S
OW //字逻辑或以后就只有形成了一个定时器的数据格式了,有数值的才能保存,为0的去除;
T MW120 //这时这个数就可以用来作为定时器的时间了
这个程序,最重要的是要了解定时器的时间格式,的0到11位保留二进制编码的十进制格式时间值(BCD格式:由四位组成的每一组都包含一个十进制值的二进制代码)。第12和13位存放二进制编码的时间基准。在编程手册里翻看下有关定时器的部分
FC40是库文件提供的一个IEC时间转化功能。调用即可。
//抱歉,之前程序没有给你分析好,现在的这个事正确的,图片里是LAD的
图片说明:
提问者对于答案的评价:
谢谢指教,原来的是我程序里有个脉冲上升沿地址不对。谢谢!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc227509.html