发表于:2014/9/18 9:14:55
#0楼
wcc3885:用子程序作一个计时运算,输出运行分钟数和秒数。主程序在调用子程序时,如果单一M0.0或M0.1闭合时能正常工作并运算正确,但同时有M0.0和M0.1闭合时就出错,是那里出错了呢?
主程序:VD0为当前运行秒数,VD4为运行分钟数
网络1
LD M0.0
CALL SBR1,VD0,VD4
网络2
LD M0.1
CALL SBR1,VD8,VD12
子程序:LD0为过程量,LD4为计时值
网络1
LDSM0.5
EU
+D 1,LD0
网络2
LDD= LD0,59
EU
+D 1,LD4
网络3
LDD>= LD0,60
MOVD 0,LD0
下面是我的回帖:
在同一个扫描周期内多次调用同一个子程序时,不能使用上升沿(EU)和下降沿指令。
在检测信号的上升沿或下降沿时,需要用一个位变量来保存上一扫描周期被检测信号的值。S7-200的操作系统为每一条上升沿或下降沿时指定一个位变量,子程序同时被多次调用时,子程序中某条EU(上升沿检测)指令的这个位变量被多次使用,所以程序运行出错。
我是廖常初,是一个高校的老师,曾在企业从事机械、电气技术工作,长期从事工业控制和PLC应用的教学、科研和工程应用工作。博客中的日志除注明外均为原创。愿意在此与大家探讨工控的问题!
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/