关于200调用子程序的若干问题

1.在子程序中使用局部变量,同时调用多次的时候,为什么监控子程序中只是显示第一次调用的值。
2.在程序中多次使用子程序,并且同时调用子程序时,能不能使用特殊辅助继电器,例如SM0.5等。用SM0.5主要能计时。我知道计数器与时间继电器是不是能同时多次调用的,但不知道SM0.5等特殊辅助继电器能不能用。要是不能用该怎么解决。

最佳答案

1、转帖典型问题:使用子程序时,为何动作只能执行一次,或者某些状态不能结束?
如果发生动作不能重复执行,或者状态不能结束(像锁死了一样),而这些功能都与子程序有关时,请检查是否有条件调用子程序。调用子程序的条件在上述动作执行后,或者进入某个状态后不再有效,无法再次“激活”,而脱离上述状态或复位的指令正好在子程序内,必然造成上述的现象。
2、转帖典型问题:定时器在子程序中的表现?
在条件调用子程序的主程序中,当停止子程序调用时,如果定时器已经激活正在计时,停止调用这个子程序会造成定时器的失控。不管此时定时器前面的激活条件如何变化,定时器(1ms、10ms 时基的)会一直走到最大值,定时器输出也会在达到设定值时接通;(100ms 时基的定时器会在上述情况下停止计时,但在逻辑上处于失控状态)。
 如果用 SM0.0 调用子程序;或者在控制逻辑的时序上做到能够保证定时功能完整执行,定时器会正常运行。使用条件调用含有定时器的子程序时,一定要注意时序逻辑,以免造成程序运行错误。
3、子程序注意事项:
、子程序在调用时会保持当前的逻辑运算结果,但是不保存累加器(ACx)的内容 
、子程序在执行到末尾时自动返回,不必加返回指令;在子程序中间也可以使用条件返回指令 
、子程序不能使用跳转语句跳入、跳出 
、子程序返回时,回到调用子程序的指令后面,继续执行上一级程序 
、S7-200 CPU最多可以调用64个子程序(CPU226为128个) 
、子程序可以嵌套调用,即子程序中再调用子程序,一共可以嵌套8层 
、在中断服务程序中不能欠套调用子程序,被中断服务程序调用的子程序中不能再出现子程序调用 
、子程序可以带参数调用,在子程序的局部变量表中设置参数的类型;一共可以带16个参数(形式参数)

提问者对于答案的评价:
3Q

专家置评

请参考阿鸣的回答!
补充一点:子程序使用局部变量,主程序中多次调用子程序时,子程序不能调用定时器。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日
下一篇 2020年10月31日

相关推荐

  • 请教大家顺序停止方法

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

    SIMATIC S7-200 2020年11月1日
  • 高速计数器重置编译没有错误,下载发生非致命错误

    用HC0高速计数器,当前值等于设定值时,用事件12连接中断程序INT_1,在里面重置HC0,编译没有错误,下载发生非致命错误,,PLC信息是89,在重置程序后加RETI解决不了问题…

    2018年12月5日
  • S7-200中的模拟量处理

    各位师傅,能否帮我介绍一下在S7200中模拟量是怎样一个处理过程(怎样编程),最好举上一两个例子。 最佳答案 1 每个指令都有操作数,把所有操作数包含AIW的指令都列出来…

    SIMATIC S7-200 2021年7月5日
  • 224xp em253相对运动,goto指令

    用em253控制步进电机,用goto指令进行相对运动,电机需要从A到B.停止一段时间,从B到C.停止一段时间,从C到D.按照事先设定好的速度和脉冲数,每次走的位置都有偏差,没在点上…

    2017年6月12日
  • 74LS248译码器和数码管显示

    我想用S7-200配合4个74LS248译码器控制四位数码管显示时间,用Q0.0控制小时的十位显示,Q0.1显示小时的个位,Q0.2为分钟的十位,Q0.3为分钟的个位,Q0.4Q0…

    SIMATIC S7-200 2021年7月5日
  • MOUDUS通讯

    PLC和其他设备的通讯,比如PLC  和PLC    。PLC和变频器,和伺服器等通讯。用MODBUS &nb…

    SIMATIC S7-200 2021年7月5日
  • PLC s7-200 多个模拟量输入无法都正常工作

    各位同行:    用三个电位器分别接上5V的电压作为模拟量输入模块的输入,但是当调节电位器的时候,只有调节第三个电位器才能让输出的数值连续变…

    2018年12月5日
  • S7-200数据处理指令怎么做到只操作一次

    详见图片中类似的数值处理程序,多个扫描周期会多次执行,请问有什么方式让这段程序在某个位动作之后的第一个周期执行一次,之后都不执行,请问该怎么写程序? 问题补充:我使用了上升沿触发,…

    2017年6月9日
  • 中断事件优先等级可以修改吗?

    问: 我想把定时中断优先级提到最高,然后再执行通讯中断,可以用指令来修改中断优先级吗? 最佳答案 不可以,建议用定时器来做.  提问者对于答案的评价:多谢,在定…

    SIMATIC S7-200 2021年7月5日
  • 测试

    测试测试 钻石用户推荐最佳答案 测得不错 提问者对于答案的评价:

    SIMATIC S7-200 2021年7月5日