s7-300 的数据类型比较奇葩,到底如何去理解?例如:我用move指令编程,IN端输入C#999,确认后,IN端立马变为W#16#999,到底怎么回事?输入端改为2#1111_1111_1111_1111_1111_1111_1111_1111后,立马又变为DW#16#FFFFFFFF,到底是怎么回事?如何理解?
问题补充:
我的意思是我输入端为2#1111_1111_1111_1111_1111_1111_1111_1111,为什么会变为DW#16#FFFF_FFFF,虽然最终数值是一样,但为何不原原本本的显示,而要变为16进制显示呢?
最佳答案
MOVE指令用于将从输入端(IN端)输入的数据传送到输出端(OUT端),可以对字节(B)、字(W)、双字(DW)等类型的数据进行传送。MOVE指令可以对任何类型的数据进行传送,但是应注意输入与输出的数据宽度一般应该一致;如果输入和输出的数据宽度不一致,PLC系统能够自行转换。
如果输入端数据比输出端长,则、只将与输出端长度相当且位置相同的输入数据传送。
如果输入端数据比输出端短,则、低位传送高位自动补0。
由此看似随意的指令,需要注意输入、输出的数据类型,除非你有意这样操作。
2#1111_1111类型是二进制数表达
DW#16#是双字16进制数表达
W#16#是字16进制数表达
补充问题回复:
16#数据显示格式是系统默认,你可以设置显示格式。
右键点击数据地址区,弹窗中选择你需要的数据格式。
提问者对于答案的评价:
明白了,谢谢。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc165724.html