S7-200子程序中使用L区(临时变量/局部变量)编写程序实现电机启保停功能,子程序多次调用时,输出异常

S7-200中编写程序实现电机启动,保持,停止功能
子程序中局部变量中定义:启动和停止为输入类型,电机启动定义为输出类型
子程序中程序仅写了启保停回路
子程序调用多次时,实际上不该启动的电机启动了
问题出在哪儿了?

最佳答案

左共解释的很好了,我这有个补充:
首先大家可以看一个关于S7-200的官方FAQ:
在S7-200的子程序中使用局部变量类型 OUT 和 TEMP 时需要注意什么?
https://support.industry.siemens.com/cs/cn/zh/view/7116338

从中可以得知几个重要信息:
1.
如果使用 LAD 或 FBD 编程,局部存储器的最后四个字节为 STEP 7 Micro/WIN 保留。 
如果在 STEP 7 Micro/WIN 中的同一级嵌套里调用多个子程序,那么这些子程序使用相同的局部存储器。 当使用变量类型 OUT 和 TEMP 时,这些局部地址从相同嵌套级别的前一子程序取值。 
注:那左工描述的“那么当主程序第二次调用该子程序时,开辟临时存储空间,但是此时的存储空间与第一次调用时开辟的不一定一致",其实如果是相同嵌套级别的,那可以确定使用的是同一临时变量区。也就是说如果一个子程序在OB 1 中被调用了多次,那么第一次调用和以后的N次调用占用的都是调用层级1 的L 区。被调用多次子程序其实使用的L 区都是同一个地址区域。临时区存储机制可以参考附件截图。

2.如果不初始化临时变量,相同嵌套级别的上一次被调用的子程序中的值会被保持。这样会导致问题,特别是在边沿信号检测时。 ZHCYS遇到的也是类似的问题。

3.当子程序被调用时,局部数据类型 IN 和 TEMP 不被初始化和删除。 
但是,局部数据类型 IN 和 IN_OUT 在子程序开始调用时被定义为分配的值或全局变量。 
所以使用时把OUT变量声明为IN_OUT会解决类似子程序调用出错的问题。
参考资料:S7-200 系统手册,全球技术资源FAQ

图片说明:

S7-200子程序中使用L区(临时变量/局部变量)编写程序实现电机启保停功能,子程序多次调用时,输出异常  

提问者对于答案的评价:
大家回答的都很好,很受启发!但是只能有一个最佳答案,谢谢@左转和@芳季

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc124069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年5月28日
下一篇 2017年5月28日

相关推荐

  • 查表指令

    谁能给一个S7-200查表指令的应用实例。谢谢! 最佳答案 表格查找(TBL)指令在表格(TBL)中搜索与某些标准相符的数据。"表格查找"指令搜索表,从INDX…

    SIMATIC S7-200 2021年7月5日
  • S7-200CPU 224XP CN 脉冲输出

    请高手指教:我的CPU是S7-200 XP CN交流220V电源供电的,继电器输出类型。网上资料显示可以实现24VDC的100KHz的高速脉冲输出,但是继电器输…

    SIMATIC S7-200 2021年7月4日
  • 谁提供个win7下可以安装的step7 microwin v4.0 sp9的完整。

    网上搜的说是完整版但还是装不起来。说是什么升级版。安装了也升级不了。有没有谁提供个靠谱点的安装包。直接安装的。谢谢了。。 最佳答案 下载链接——http://www.gongyek…

    SIMATIC S7-200 2017年11月27日
  • s7-200的modbus/tcp通信

    请问有什么模块可以将CP243-1的通讯转换为modbus/tcp吗?或者s7-200怎么和modbus/tcp的上位机通信? 最佳答案 这个真不行,你只能买三方设备,将Modbu…

    SIMATIC S7-200 2017年6月1日
  • 恒压供水中变频运行转工频的工艺问题

    请教:带PLC控制的  恒压供水中变频运行转工频的工艺问题一号泵运行频率达到50HZ延时后,转工频运行,请问可以直接一起关闭变频器和变频接触器吗?我的一个朋友给…

    SIMATIC S7-200 2017年12月10日
  • CPU226用两种总线

    一台CPU226,同时运行在两种总线上。一方面它通过EM277作为PROFIBUS的一个从站,受S7-300控制,另一方面它又作为modbus的主站,控制两台ABB变频器和三台松下…

    SIMATIC S7-200 2021年7月5日
  • td400c和s7200和5611

    224XP一个口做自由通信,另一个口连接TD400C和5611卡,不知道是否可以通信上,WINCC FLEXIBLE应该选MPI还是DP。 最佳答案 1、224XP一个口…

    SIMATIC S7-200 2020年10月31日
  • S7-200 SMart 不能通讯

    1.   电脑与s7-200 smart 通过网线进行通讯,但是一直没有通讯上,不知应该怎样做?见图片2.  …

    2021年7月5日
  • S7-200 SMART V2.3 软件安装后的问题

    请教一下, s7-200 SMART V2.3 软件安装后只能写入符号,写入地址和常数都不行,请问这是怎么回事? 最佳答案 写入后点回车不要…

    SIMATIC S7-200 2021年7月5日
  • smart200读取电量后的计算方法对吗?

    请各位帮我看一下我写的程序对吗? 在每个月的1号早上8点,读取电量,并传到VD200中,然后M2.3从站实际输出值完成,置1后,则将vb3000中的电量转换成整数放到VD…

    2021年7月5日