签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
编程过程中小小的“粗心”造成的一串问题
先上交叉引用表,图示:
MD188与MD190之间的地址区占用情况:
MD188 = MW190 + MD188
MD190 = MW192 + MD190
而实际应用这些地址且且是调用模拟量转换实际工程量FC105时OUT4输出的地址分配区。通道输出的MD188的数据正好落在MW190上,造成其它通道的FC105输出管脚OUT4与该MD188地址数据叠加,数据出错。图示:
于是乎,下面的运算、控制就会莫名其妙的产生了,此处省略600字。哎,这“乌龙”闹的,无语、、、、、、
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1476812&b_id=4&s_id=26&num=4
由此可见,一些中间变量、计算过程的地址选择是多么的重要。
过去,一直认为调用中间过程数据采用数据块是一件得不偿失的事情。
现在看来,你调用一个地址必须先弄清楚数据类型,地址占用区域,然后再调用就不容易闹乌龙了。
我就是喜欢DB+UDT组合!M区几乎不用。
看来不用M区是有道理的。
编程的确是马虎不得,严重的可以带来严重的破坏性。
我现在基本上都是使用DB,M地址如果使用都是事先做好规划再使用,我刚刚入门时也是经常犯这样的错误
地址重叠问题比较难查,一楼本例的问题还相对比较好查,要是用到类似P#Mx.y byte n 这样的隐藏寻址,那估计真的是要疯了!
这个“乌龙”闹的有一点大了,哎,还是无语。
多么疼的领悟。
这个控制程序在用已经有快10年了,以前正常工作时,2个传感器是“异步”工作的,所以平时使用到没有什么问题,最近工艺变更,需要变更程序控制,才发现这个的。
我现在也用M位很少,一般就前面几个特殊含义用下,其他中间信号大部分是用DB块
好习惯,必须赞一个。
用DB就不会重复了啊,重复了会报错吗?一直没注意过这点。
地址重叠的事情,每次都要犯错,我是因为编址比较乱的原因;
用数据块地址DB,仍然会有地址重叠的可能。
良好的习惯的确保问题的根本。
对于交叉引用我更喜欢看这个,编完程序会大概看一下左边导航区,有没有用重复的地址。
认真对待地址的使用,良好的习惯是确保类似问题的保障。
每个人的习惯不同,我个人也喜好用数据块来做中间过程变量,那样查找起来更方便。
原因是调用前你必须先定义名称、数据类型后才能使用。
老司机也粗这种问题了。
闹心。。。。。。
个人一般都是DB块了,很少用M区。
不是的,是帮人找到这个问题。
哎,说来话长,我一直让他自己仔细找找的。
学习了!编程确实需要严谨!谢谢楼主分享!
地址冲突了,我喜欢用DB,基本不用M区。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录