仿真器: PLCSIM5.2
组态: CPU-313C,period-2000ms,minimum pulse-100ms
第一次使用SFB49,调试SFB49功能的全部程序如下,请大虾赐教:
STAR: SET
R M2.3 //预备作业请求
L MB 18 //检查初始化标志
L 18
<>I //不相等,进行初始化
JN S0
==I //相等,则进行下一步
JZ S1
S0: L 0 //清作业完成标志
T MB19
L 2
T MW0 //置脉冲通道为2
L 1000 //PWM输出值(ms)
T MW3
L W#16#0
T MW5 //作业号置0
L 18
T MB18 //置初始化标志
JU CAON //调用SFB49
//检查作业号
S1: L MB19
L 19
==I //相等则作业完成
JZ END1
L MW5
L W#16#1
==I //为作业号1,调用SFB49,写周期长度
JZ CAON
//检查作业号
L MW5
L W#16#4
==I //为作业号4,调用SFB49,写最小脉冲宽度
JZ CAON
//检查作业号
L MW5
L W#16#81
==I //为作业号H81,调用SFB49,写读取周期长度
JZ CAON
//检查作业号
L MW5
L W#16#84
==I //为作业号H84,调用SFB49,读取最小宽度
JZ CAON
L 0 //作业号错误处理
T MW5
T MB18
T MB19
JU STAR
////////////////////////////////////////////////////////
CAON: CALL SFB49,DB49
LADDR:=W#16#300
CHANNEL:=MW0 //通道号
SW_EN:=M2.0 //软件门
MAN_DO:=2.1
SET_DO:=M2.2
JOB_REQ:=M2.3 //作业请求
OUTP_VA:=MW3 //PWM输出值
JOB_ID:=MW5 //作业号
JOB_VAL:=MD7 //写作业请求值
STS_EN:=M11.0 // ENABLE STATUS
STS_STRT:=M11.1
STS_DO:=M11.2 //OUTPUT STATUS
JOB_DONE:=M11.3 //NEW JOB CAN BE STARTED
JOB_ERR:=
JOB_STAT:=
/////////////////////////////////////////////////////////////
SET
S M2.3 //作业请求
S M2.0 //打开软件门
L MW5
L W#16#84
==I
JZ END //作业请求完成
WAIT: A M11.3
JC GG
JU WAIT //等待新作业允许
GG: L MW5
L 0
==I
JZ SS1 //更改作业号为 W#16#01
L MW5
L W#16#01
==I
JZ SS2 //更改作业号为 W#16#04
L MW5
L W#16#04
==I
JZ SS4 //更改作业号为 W#16#81
L MW5
L W#16#81
==I
JZ SS4 //更改作业号为 W#16#84
L MW5
L W#16#84
==I
JZ END //作业完成
SS1: L 1
T MW5
L L#2000
T MD7 //写周期长度为2000ms
JU CAON
SS4: L 4
T MW5
L L#100
T MD7 //写最小脉冲宽度为100ms
JU CAON
SS81: L W#16#81
T MW5
L L#3000
T MD7 //写读取周期长度为3S
JU CAON
SS84: L W#16#84
T MW5
L L#100
T MD7 //读取最小宽度为100ms
JU CAON
END: L 19
T MB 19
END1: NOP