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日

相关推荐

  • 如何将流量计5v的高速脉冲接入s7 200

    流量计输出的高速脉冲是5v的,要怎么接入s7 226cn呢 最佳答案 可以直接接入,但要选S7-200 224XP或S7-200 224XP&nbsp…

    SIMATIC S7-200 2020年11月1日
  • 请教关于TP-178触摸屏的问题,

    请问tp-178触摸屏和电脑的连接线是什么??tp-178触摸屏和S7-200的连接线是MPI线吗? 问题补充:xsxzc你好,PPI不是PLC和电脑之间的连接线吗?TP-178屏…

    SIMATIC S7-200 2021年7月5日
  • 前辈,师傅们—虚心请教

    请各位师傅帮忙推荐一本书吧,西门子PLC,重点是讲模拟量处理,编码器等,因为单位设备都是西门子的PLC,有控制温度的,有控制位置的,控制温度的是226CN加231模块,控制位置的是…

    SIMATIC S7-200 2020年11月1日
  • 请问:西门子S7-200系列的脉冲输出时阻抗是多少?

    西门子S7-200系列的PLC的 Q0.0 作为PWM输出时阻抗是多少?   最佳答案 不知有何用? DCDCDC型输出点置1时,…

    SIMATIC S7-200 2021年7月5日
  • 使用PID 使电机实现恒转矩调速的问题

    设备是一个三相异步电动机带一个直流发电机转,S7-200接MM440控制电动机,并用模拟量输出控制发电机励磁电流。我想通过USS协议读MM440变频器里的转矩参数,然后作为PID的…

    SIMATIC S7-200 2017年11月25日
  • 有关PID向导的设置

    我做的温度控制,传感器是PT100经过温度变送器转换成0-20ma电流进EM235,EM235拨码设置成0-20ma,EM235输出电流信号去控制比例调节阀,比例调节阀是4-20m…

    2020年10月31日
  • AQW能转成AIW么??

    俺有个情况,就是PID调节这边温度的变化情况PV-I这边要用两个温度的平均值来作为调节的反馈。。但我把两个温度都转换为实数了了。。后来又把这两个实数的平均值转换成AQW了。。然后我…

    SIMATIC S7-200 2020年10月31日
  • 200PLC怎么设置周期性的密码?

    用200的PLC外带smart700的触摸屏怎么能设置3-5个月的密码,到设定时间后PLC停止,并且可以通过触摸屏解除这个状态?求大神指教。 问题补充:定时方面是不是一般通过读取P…

    SIMATIC S7-200 2018年12月3日
  • s7200的流量计算问题

    现流量计输入4~20ma的信号(瞬时流量),在s7200中如何计算累计流量呢?? 最佳答案 对的,首先确定你的流量单位,再用定时中断累加这个值;注意定时中断的时间间隔采集的流量要对…

    SIMATIC S7-200 2021年7月4日
  • 请问怎么算开立方呢

    请问大家实数开立方要怎么编程呢?现有的实数只能开平方 最佳答案 虽然s7-200没有开立方的指令,但是有指数、对数函数呀,您可以利用这些指令组合任意次方的。以27开立方为例:exp…

    SIMATIC S7-200 2020年11月1日