登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:[求助]调用PWN模块SFB49后,无脉冲输出的原因在哪?

点击:3257 回复:11


仿真器: 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
SET
S  M2.0 //打开软件门
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#768
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 //作业请求
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  10
END1: NOP
05-02-25 09:01
更正:
END:  L  19
        T  M19
END1: NOP 0
05-02-25 09:35
大虾若能COPY一个调试好的调用SFB49的实例,放在这上面就更好,谢谢!
05-02-25 14:51
SFB49中的JOB_DONE9(作业完成)是一个由1变0脉冲,怎么样才能捕获?
我用下面方法好象不行:
SET
S M2.3 //作业请求
WAIT: A M11.3
JNC GG
JU WAIT //等待新作业允许
05-02-25 16:04
请大虾赐教,谢谢!
05-02-28 10:44
用了FN命令也不行,好象是没有产生一个JOB_DONE脉冲,上面程序问题在哪里,
请大虾赐教,谢谢!
SET
S M2.3 //作业请求
WAIT: A M11.3
FN M30.0
JC GG
JU WAIT //等待新作业允许

没有产生JOB_DONE脉冲,就不能进行新的作业.
怎么样才能产生JOB_DONE脉冲?
05-02-28 15:26
请教楼主,现在调试好了吗?OUT_PVAL是指什么,是指要输出的脉冲总的个数吗?怎么是INT型的呀,是不是太小了啊,那就是一次只能输出32000多个脉冲啊?
05-03-02 13:33
问题没查出,还没有调试好
OUTP_VAL是输出值(default output value),范围是0-27648,是INT型.
我的理解是脉冲宽度,不是输出的脉冲总的个数,不知对否?
问题就卡在没有出现JOB_DONE脉冲处.
请大虾赐教,谢谢!
05-03-02 14:23
那脉冲个数呢?比如我想输出10000个脉冲就停止,怎么做?西门子的资料太少了,而且参数特多,烦! 还有你说是脉冲宽度?那怎么在组态硬件时有三个选项“一个是选时基1ms/0.1ms,一个是选周期,一个是选最小脉冲宽度“  。就是说在组态硬件时就已经把这些固定好了,那怎么还要在写程序时写这些参数呢?
05-03-02 15:39
更正: 新作业允许时JOB_DONE=1.
有详细的实例就好了,给出的例子不明不白,浪费很多时间.
05-03-03 18:06

上一页下一页

工控新闻

更多新闻资讯