西门子(中国)授权总代理-西门子工控机授权总代理-金昌市SIEMENS一级经销商

供应商
广东湘恒智能科技有限公司
认证
西门子PLC
西门子伺服电机
西门子触摸屏
西门子电缆
西门子变频器
西门子模块
联系电话
13510737515
手机号
13185520415
联系人
董海波
所在地
惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房(仅限办公)
更新时间
2024-09-08 08:00

详细介绍

今天咱们继续揭秘plc 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中就可以了。


甘肃西门子PLC总代理,甘肃西门子变频器总代理,甘肃西门子电机总代理,甘肃西门子工控机总代理,金昌西门子工控机总代

展开全文

我们其他产品
我们的新闻
微信咨询 在线询价 拨打电话