沧海一声笑
级别: 探索解密
精华主题: 0
发帖数量: 86 个
工控威望: 196 点
下载积分: 1844 分
在线时间: 75(小时)
注册时间: 2011-03-28
最后登录: 2021-12-16
查看沧海一声笑的 主题 / 回贴
楼主  发表于: 2012-03-19 18:34
把程序下载到PLC运行,运算结果不对,然后将PLC内存清除之后再下载运行就可以了,请问这是什么原因造成的。
znz43
工控职业已成回忆 只因爱好常回家园 乐此不疲
级别: 工控侠客

精华主题: 0
发帖数量: 1057 个
工控威望: 4900 点
下载积分: 7351 分
在线时间: 2561(小时)
注册时间: 2010-06-24
最后登录: 2024-12-16
查看znz43的 主题 / 回贴
1楼  发表于: 2012-03-20 11:43
编程未注意细节,程序有有BUG。如用MOV送16Bit到D100中,而后用32位的运算指令,但D101又未先清零,结果D100的32位数据就不是原先送入的16位数字,运算结果肯定错误。
把内存清零后,D100只要送16位正数,因D101已为零,32位的值也和16位的值一样,结果当然正确。
要避免此类错误,编程时要注意在MOV 16位数据到D时,如后面是32位指令,必须再 MOV  K0 到 (D+1)处。或者用16位转换32位指令先转换成32位指令。
出门打工难,打工学艺难,学艺拜师难,找到好师傅更难。
赠人玫瑰,手留余香。舍得舍得,有舍才有得。