登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:S7-300 ITD指令的疑问

点击:1095 回复:0

下面是网友不可取代给出的老外编的某设备的局部程序:
L     #VehiclesLeftToDo           //Load vehicle number
ITD                             //Convert from integer to double integer
SLD   4                           //Shift left 4 bits (align byte boundary and multiply by 2)
LAR1                               //Save in address register 1
装入的 #VehiclesLeftToDo都是正数。
使人困惑的是程序中有的地方有ITD指令,有的地方又没有ITD指令。
下面是我的回帖:
ITD指令用来将16位的整数转换为32位的双整数。转换时应保证符号位不变。
正数的符号位为0,对正数执行ITD指令,得到的双整数的高16位全部为0。L指令将正数 #VehiclesLeftToDo传入累加器低16位后,高16位自动变0,所以可以省去ITD。
负数的符号位为1,对负数执行ITD指令,得到的双整数的高16位全部为1。如果传入累加器的是负数,必须使用ITD指令,否则负数就变成正数了。
[/URL] [/URL]
13-12-23 09:28

工控新闻

更多新闻资讯