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日 上午12:22
下一篇 2017年5月28日 上午12:22

相关推荐

  • 200以太网设置问题

    我最近在做项目,两个cpu226cn,两台上位机,要求,cpu之间有数据交换,上位机可以同时监控2个cpu。问题:1、在以太网向导中,“对等链接”,数量该如何设,我看到有资料说过,…

    SIMATIC S7-200 2017年11月12日
  • S7-200与PC(主站)通讯问题

    小弟刚开始研究PLC不久,现在想用224XP采集模拟量,并通过串口传给电脑。请问没有softwarewedge之类的软件,我只用STEP7-MicroWIN 是否可以实现…

    SIMATIC S7-200 2021年7月5日
  • 高速脉冲信号如何转成速度值?

    我现在在做一个小项目,三台变频器(AC20)、S7200及增量编码器(1000转每周),现在用三种变量,编码器高速脉冲信号、AIW及AQW,AIW及AQW都经过线性化处理;工艺要求…

    SIMATIC S7-200 2020年11月1日
  • s7-200与wincc通讯 电脑上需要装step7MivroWin吗?

    s7-200与wincc通讯 电脑上需要装step7MivroWin吗? 问题补充:这两个软件都装上了,但是在wincc的条目管理器里找不到 pc a…

    SIMATIC S7-200 2017年11月27日
  • PLC Programming软件的PLC指令

    有的功能指令在828D数控系统编程软件PLC Programming中没有是怎么回事?比如,编码指令ENCO、译码指令DECO、循环移位指令(循环左移、循环右移)包括三角…

    2021年7月5日
  • MicroWin V4 SP

    MicroWin V4 SP6, SP7, SP8有什么区别吗? 最佳答案 西门子S7-200软件MicroWin V4&nbsp…

    SIMATIC S7-200 2020年10月31日
  • S7-200程序方式

    S7-200可不可以把实现不同功能的程序由不同的子程序块来完成,然后在主程序(OB1)中来调用这些子程序块这样的程序结构。需要注意是么?像S7-300一样OB1是组织块,在OB1中…

    SIMATIC S7-200 2021年7月4日
  • S7-200编程软件安装不上

    按照步骤先装MICROWINV4.0,安装完成后重启电脑,然后卸载MICROWINV4.0,再安装MICROWINV4.0SP4,可电脑还是提示必须先卸载MICROWINV4.0,…

    SIMATIC S7-200 2021年7月4日
  • S7-200 CPU224CN解密求助

    我公司用的是S7-200 CPU224CN的PLC,目前怀疑一个输出点坏,,但由于没有原程序,导致无法监控,连上编程电缆及笔记本后,准备上载程序至PLC,但马上得到提示:…

    SIMATIC S7-200 2021年7月5日
  • 添加Modbus RTU主站指令库

    添加modbus RTU主站指令库中,在编程软件的指令树的“指令库”文件夹中,可以看到添加的库文件夹“modbus Master Port0”、“mo…

    SIMATIC S7-200 2021年7月5日