s7200自己做的库文件重复调用,输出混乱

s7200自己做的库文件重复调用会输出混乱的情况,都是用的L寄存器搞不懂。
很简单的一个东西,统计设备运行时间

Network 2 // 秒基准用sm0.5上升沿
// 网络注释
LD     SM0.0
LPS
A      L0.0
INCB   LB20
LRD
AB>=   LB20, 60
MOVB   0, LB20
INCB   LB21
LRD
AB>=   LB21, 60
MOVB   0, LB21
INCB   LB22
LRD
AB>=   LB22, 24
MOVB   0, LB22
INCB   LB23
LRD
AB>=   LB23, 30
MOVB   0, LB23
INCB   LB24
LPP
AB>=   LB24, 12
MOVB   0, LB24
INCB   LB25
网络3
LD     SM0.0
BMB    LB20, LB1, 8LD

问题补充:
把ld的类型由out改为in_out也不行,由混乱变为第二次调用的无输出了

钻石用户推荐最佳答案

转帖:
S7-200使用子程序注意事项:
1、 使用子程序时,为何动作只能执行一次,或者某些状态不能结束?
如果发生动作不能重复执行,或者状态不能结束(像锁死了一样),而这些功能都与子程序有关时,请检查是否有条件调用子程序。调用子程序的条件在上述动作执行后,或者进入某个状态后不再有效,无法再次“激活”,而脱离上述状态或复位的指令正好在子程序内,必然造成上述的现象。
2、 带形式参数的子程序,定义为OUT类型的变量为何会在多次调用子程序时互相干扰?
那是因为定义为 OUT 类型的形式参数并非每次调用子程序时在其内部都有确定的赋值操作。可以将此类参数定义为 IN_OUT 类型,或者确保在每次调用子程序时都有赋值操作。
3、使用了L寄存器,为什么子程序的输出不正常?
由于子程序的局部变量仅在本次调用时有效,且每次获取到的局部变量资源有一定的随机性,有可能已经具有一个随机的数据存储在该局部变量地址中,因此对于OUT类型的接口变量,必须保证每次调用程序都对其进行写操作,否则就是编程逻辑的不严密。当然,用户也可以考虑使用IN_OUT变量类型代替OUT变量类型。
4、为什么子程序中的定时器和计数器不工作或者工作不正常?
如果有下面情况产生:
一个在内部使用了定时器或计数器的子程序,在同一时刻被调用了多次 
相同编号的定时器或计数器被多个子程序使用,且同一时刻这些子程序有两个或者以上被调用 
则定时器或者计数器资源会因重叠使用而相互影响,造成程序逻辑等方面的错误。

提问者对于答案的评价:

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午12:05
下一篇 2021年7月5日 下午12:05

相关推荐

  • 请教大家顺序停止方法

    我用计时器做的顺序启动,就是一台电机启动5s或10s后下一台电机启动。共14台电机。现在想让整个系统停车时按照相反的顺序停止,请问大家怎么做比较好?  CPU型…

    SIMATIC S7-200 2020年11月1日
  • 顺控scr指令

    请教一个问题在s7-200顺控scr指令里,能调用子程序吗? 问题补充:我第一次调用好用。在调用就跳过,第一步s0.0是什么原因。 最佳答案 当然可以的。每一个活动步中均允许调用你…

    SIMATIC S7-200 2021年7月5日
  • S7-200 SMART PID温控不正常,自整定也不好用

    如题,首先我一开始都没想到要自己去调PID的参数,因为以往控温都是用温控仪,无论是欧姆龙的还是RKC的,都非常好用,不需要做任何设置,直接启动自整定,过一会PID的参数就出来了,然…

    2021年7月5日
  • 如何升级

    我的提问4次已经满了,为何还升不到下一级黄金呢 最佳答案 赶上疫情,包括奖品发放都有所迟缓。请谅解。敬请期待。 提问者对于答案的评价:这跟疫情有关系吗??? 最佳答案作者回复:个人…

    SIMATIC S7-200 2021年7月5日
  • 昆仑通态触摸屏MCGS组态软件怎么和西门子200plc变量对应

    昆仑通态触摸屏MCGS组态软件怎么和西门子200plc变量对应。我现在用笔记本电脑里MCGS组态软件来调试,请问MCGS软件里的变量怎么和PLC程序的I Q M…

    SIMATIC S7-200 2020年10月31日
  • 位状态是0,输出的导通了?

    V120.2是回零完成标志,监控状态也是0,后面的输出为什么导通了,没有双线圈输出 图片说明:    最佳答案 M11.7检查一下是否在其他位置对其置为或赋值了…

    2021年7月5日
  • 如何判定一个模拟量是否发生突变?

    我现在用s7-200实时采集一个模拟量信号,我想请教一下大家,怎么去判定这个模拟量发生了突变。比如说从一秒前还是20,一秒后变成了50。 谢谢大家指教 问题补充:多谢大家…

    SIMATIC S7-200 2020年10月31日
  • wincc和200cn 通过EM241可联机吗

    各位前辈:     请教一个问题;226cn能和wincc联机吗?现有个项目试验,远程控制设备在上海,而我在广东可以监控它,并且能…

    SIMATIC S7-200 2021年7月5日
  • S7-224CN

    请问我下位是S7-224CN,上面加了一个TD400C,程序因为要大量设定一些数值,因此最好要用TD400C来连接调试,请问怎样可以将PPI编程电缆和TD电缆同时接入S7-224C…

    SIMATIC S7-200 2020年11月1日
  • PTO_CTRL 具体的用法及用途

    我最近在做PLC控制步进电机。用向导生成的PTO。但是对于子程序PTO_CTRL 的具体使用方法及作用,不是很清楚。烦请高手指点迷津 是否可以不使用这个子程序呢…

    SIMATIC S7-200 2021年7月4日

发表回复

登录后才能评论