沧海一声笑
级别: 探索解密
精华主题: 0
发帖数量: 86 个
工控威望: 196 点
下载积分: 1844 分
在线时间: 75(小时)
注册时间: 2011-03-28
最后登录: 2021-12-16
查看沧海一声笑的 主题 / 回贴
楼主  发表于: 2012-03-19 18:34
把程序下载到PLC运行,运算结果不对,然后将PLC内存清除之后再下载运行就可以了,请问这是什么原因造成的。
tuanailing
精细出真功
级别: 工控侠客
精华主题: 0
发帖数量: 584 个
工控威望: 2254 点
下载积分: 1748 分
在线时间: 427(小时)
注册时间: 2011-03-19
最后登录: 2024-05-10
查看tuanailing的 主题 / 回贴
1楼  发表于: 2012-03-20 09:16
很正常,不行就清内存,这是常识
做工控,做人生
崇庆阳光
不懈努力,一切皆有可能...
级别: VIP会员

精华主题: 1 篇
发帖数量: 770 个
工控威望: 1500 点
下载积分: 7402 分
在线时间: 153(小时)
注册时间: 2006-08-10
最后登录: 2024-04-19
查看崇庆阳光的 主题 / 回贴
2楼  发表于: 2012-03-20 09:21
可能16位和32位寄存器有混淆
不懈努力,一切皆有可能 ...
znz43
工控职业已成回忆 只因爱好常回家园 乐此不疲
级别: 工控侠客

精华主题: 0
发帖数量: 1055 个
工控威望: 4898 点
下载积分: 7346 分
在线时间: 2552(小时)
注册时间: 2010-06-24
最后登录: 2024-05-06
查看znz43的 主题 / 回贴
3楼  发表于: 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位指令。
出门打工难,打工学艺难,学艺拜师难,找到好师傅更难。
赠人玫瑰,手留余香。舍得舍得,有舍才有得。
沧海一声笑
级别: 探索解密
精华主题: 0
发帖数量: 86 个
工控威望: 196 点
下载积分: 1844 分
在线时间: 75(小时)
注册时间: 2011-03-28
最后登录: 2021-12-16
查看沧海一声笑的 主题 / 回贴
4楼  发表于: 2012-04-08 15:10