欢迎来到西门子工业支持中心网站!
欢迎来到西门子工业支持中心网站!
悬赏:5分 | 解决时间:2012-09-11 19:03
产品版区:
SIMATIC S7-300(F)/S7-400(F/H/FH)
月亮的后面
作了一个FC(用作超限报警),在OB1中调用了四次,分别是低报、低低报、高报、高高报。明明是低报触发了报警,其他三个也同时报警。在FC内,都用了相同的地址(例如M10.0),和这有关系吗?如果有冲突,应如何编写FC。
问题补充:
根据大家的建议,我已经把FC中M地址改变为FC中的临时变量#temp,但情况照旧。请大家再给些意见。
小程序:
最佳答案
回答者:
半瓶醋
回答时间:2012-09-09 22:19
提问者对于答案的评价:
按您的意见修改了程序,可行,就是语句太多了。
专家置评
已阅,最佳答案正确。
置评专家:西门子自动化技术支持 2012-09-14 21:24
这个当然会有冲突,你可以使用交叉索引,看到你的问题所在:使用菜单命令“视图 ”—— “地址的交叉索引”,可显示包括所选地址的多重访问在内的所有交叉索引。 点击相关的变量地址,鼠标右键--->Go to---->Location打开的窗口显示了该地址的所有使用地方。
为了避免这种情况,你可以使用内部变量来做你的程序。
M10.0用在FC的什么地方?相同的地址是什么的地址?
FC内尽量避免用全局变量。
在FC中编写程序的时候,使用的是形式参数,每次调用的时候,这些形式参数均与不同的实际参数相对应,这样只要每次调用时的实际参数不同,就不会发生类似的冲突了,也就是在FC中不要涉及具体的地址。在FC中的【接口】窗口中设置好相应的输入输出变量就好了。
在FC内,都用了相同的地址(例如M10.0),这应该就是问题之所在。无论FC、FB编程,除非特殊原因,都要尽量避免使用全局变量(M、I、Q、DB等等),应该使用临时变量,对全局变量的存取应由FC、FB的输入、输出及输入/输出引脚来完成。
如果FC中用到的外部数据,尽量分配独立的DB块和地址,避免干扰。
你应该将它做成FB功能块,通过分给不同的DB号或用指针间接寻址指定同一DB号的不同区域,然后 逐一将FB中的形参赋值,即可 ,注意数据类型的一致性
放在一个FC里吧。核心应该是比较吧。
现赠您1张1847体验会员卡,可免费领取,畅学1847会员内容,是否领取?
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!