zs8823
级别: 家园常客
精华主题: 0
发帖数量: 85 个
工控威望: 512 点
下载积分: 1359 分
在线时间: 29(小时)
注册时间: 2008-06-21
最后登录: 2023-06-30
查看zs8823的 主题 / 回贴
楼主  发表于: 2010-11-12 04:27
图片:
图片:
遇到一个问题,写了一个如图所示的子程序,在主程序中两次调用,但只有第一个调用有输入输出,第二个调用的输入好象未传入子程序,但输出完全与第一个输出同值且同步变化.不知道错在哪里,请高手指点,CPU226.
cgyu5892483
级别: 探索解密
精华主题: 0
发帖数量: 27 个
工控威望: 180 点
下载积分: 576 分
在线时间: 22(小时)
注册时间: 2009-03-26
最后登录: 2019-07-10
查看cgyu5892483的 主题 / 回贴
1楼  发表于: 2010-11-12 13:53
反复调用子程序时,调用计数,系统时钟,系统脉冲等指令需要慎重。
程序扫描是从左至右,从上至下,看主程序:执行第一个调用子程序后,立马进入下一个子程序调用,那问题就来了:
LD4是输出,并且在扫描到C100为ON时才输出,下一步是L20.0为ON,下一步跳出第一个子程序并进入第二个子程序,此时L20.0在扫描周期内被置位为ON,C100复位。也就是说主程序没进入第二个周期,C100就被复位了。所以第二个子程序永远只能读到第一个子程序的块输出。