广告招募

当前位置:全球贸易网 > 技术中心 > 所有分类

S7-300/400移植到S7-1500编程语言混用造成混乱的原因及解决方法

2026年03月01日 08:48:04      来源:云南昌晖仪表制造有限公司 >> 进入该公司展台      阅读量:3

分享:

本文揭秘 S7-300/400程序移植到S7-1500后发生的数据混乱谜团!

有的人发现将S7-300/400程序移植到S7-1500后,一些数据出现了混乱!检查程序发现两者相同!


那为什么相同的程序结果却不同呢?下面告诉你答案。


S7-300/400不同的程序段可以使用不同编程语言,我们来看下面这段程序。



程序段2使用梯形图编程,变量B加上变量C等于变量D,D当前值为5并存储在累加器1中,而程序段3则使用了语句表编程,装载变量E到累加器1中,原累加器1中的值即5被压入到累加器2中,该段程序相当于变量D+E,然后将结果传送到变量F中,从在线监视中可以看到变量F等于15。


这里尽管使用了不同的编程语言,但是编译器相同,程序段上下间对系统寄存器的操作是连续的。


我们再看看移植到PLC S7-1500后的程序监控状态。



相同的程序,但是变量F的值却等于11了,这里可以看到,在执行程序段1时,将1装载到累加器1中,然后再传送到变量A中。执行程序段2后,累计器1中的值未受到影响,然后与程序段3中的变量E相加,结果输出到变量F中,E等于10, 所以F就等于11了。


造成这种问题的原因是系统发生了变化,S7-1500底层不支持语句表,为了移植的需求,就虚拟了一套系统运行语句表程序,这样语句表和梯形图的编译器就不相同了,表面看上起来与原程序相同,实际上程序段1、3与程序段2是独立的,这样就造成了运算结果的偏差。


解决这个问题的方法很简单,就是保证每一个程序段相对独立,例如在程序段3的开头,将变量D装载到累加器1中就可以了。



作者:崔坚
版权与免责声明:
1.凡本网注明"来源:全球贸易网"的所有作品,版权均属于全球贸易网,转载请必须注明全球贸易网。违反者本网将追究相关法律责任。
2.企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
3.本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。 4.如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系。