西门子plc编程软件中MOV_W、MOV_B、SHR_B的含义,其管脚都的作用。
移动字节(MOVE)指令将输入字节(IN)移至输出字节(OUT),不改变原来的数值。
移动字(MOVW)指令将输入字(IN)移至输出字(OUT),不改变原来的数值。
右移字节(SRB)和左移字节(SLB)指令将输入数值(IN)根据移位计数(N)向右或向左移动,并将结果载入输出字节(OUT)。
移位指令对每个移出位补0。如果移位数目(N)大于或等于8,则数值最多被移位8次。
编程手册中有详尽的介绍,这里摘抄下梯形图的编制规则:
1)、所有输出线圈Y不能与左母线直接连接
2)、所有输入继电器触点X不能与右母线直接连接。
3)、常开触点应在常闭触点前面
4)、输出线圈的自锁触点应与常开触点并联在一起。
5)、输出线圈只能使用一次,但触点使用次数无限,
6)、输入触点在编程时,使用次数无限,
7)、内部继电器线圈R,T只能使用一次,触点使用次数无限
plc采用逐行梯级扫描式,每一个周期接受一个输入信号.m是内部继电器,有一般用和特殊用继电器之分。
T是计时器,也有一般用和停电保持等特殊类之分。
二、西门子PLC MOV_W BLKMOV_W指令的使用问题
问题:
第一个图,书上说定时器的预设值为16位的整数,故用字的传送,我看不懂20从十进制转换成二进制就是10100,才5位怎么就变成16位了?应该用MOV_B指令?
第二个图字块传送,书上说是VW0对应VW100,VW2对应VW102,VW4对于VW104,为什么不是VW0对应VW100,VW1对应VW101,VW2对应VW102?
图2
图3
解答:
1、因为定时器T的预设值为16位字,所以采用MOV_W,虽然20的二进制为10100,实际上就是:
0000 0000 0001 0100 ,当然,你采用MOV_B 将20传输给 VB5也是可以的,但是你需要确保VB4中的值为0。
2、因为西门子中,其地址序号是按字节来排列的,所以,VW100实际上是由VB100,VB101组成的,如果你直接使用了VW100,VW101,那么就会产生地址重叠的问题,VW100由VB100,VB101组成,VW101由VB101,VB102组成,地址会发生重叠,所以,为了避免由于地址重叠而造成一些逻辑错误,一般对于字的应用,采用偶数地址序号。
附,其它网友的答案:
第一个问题:vw4 包含vb4和vb5 如果你只用movb指令给vb4赋值,那么vb5的值就是不确定的,最后你写到定时器T37的预设值就可能不是你期望的值。当然如果你确认vb4里本来就是0,那么直接给vb5赋值20也是没问题的。
第二个问题:你的块传送指令选的是按字传送,所以传送3次,要传送的是3个字。
要注意,一个字饱含两个字节的含义。
第二个问题,还是不懂,1字=2字节=16位,也就是1个VW等于=2VB=16B,VW0 VW1 VW2不是刚好对应VW100 VW101 VW102吗?
解答:
vw0=vb0+vb1
vw1=vb1+vb2
vw2=vb2+vb3
3个word一共是4个byte,但是这里面有字节重合了。
而在这种word操作中,每次操作的是2个byte。总共应该是6个byte。
因此,应该是:
vw0、vw2、vw4。
小编总结:以上有关西门子plc编程软件中MOV_W、MOV_B、SHR_B的含义与用法,算是非常详尽了,希望帮助大家掌握这几个指令的使用方法。