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

主题:[求助]为什么捕捉不到SFB49中的JOB_DONE脉冲?

点击:1798 回复:5


仿真器: PLCSIM5.2
组态: CPU-313C,period-2000ms,minimum pulse-100ms
JOB_DONE脉冲是新作业允许,没有JOB_DONE脉冲出现,就不能控制SFB49.
第一次使用SFB49,调试SFB49功能的全部程序如下,请大虾赐教:
STAR:  SET
       R  M2.3 //预备作业请求
////////////////////////////////////////////////////////

CAON: CALL SFB49,DB49
LADDR:=W#16#768
CHANNEL:=0 //通道号
SW_EN:=1 //软件门
MAN_DO:=
SET_DO:=
       JOB_REQ:=M2.3   //作业请求
OUTP_VA:=500 //PWM输出值
JOB_ID:=w#16#1 //作业号
JOB_VAL:=2000 //写作业请求值 (写周期长度为2000ms)
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 //作业请求
WAIT: A  M11.3
               FN M30.0
JC  GG
JU  WAIT //等待新作业允许
运行程序后,程序就一直在WAIT中循环,应是没有JOB_DONE的下降沿脉冲.
问题在哪里,请大虾赐教,谢谢!
05-03-02 14:33
你是用了系统默认的LADDER?那个应该是十进制的768,而不是W#16#768吧? 你看看你的CPU是不是有高速脉冲输出啊。如果连脉冲输出都没有,那个JOB_DONE位肯定没有啦
05-03-02 15:56
JOB_DONE应该不是你所说的那样吧,怎么会是必须要下降沿才允许新的作业呢?我理解应该是当JOB_DONE为1时就允许新的作业,而每一次作业开始,系统会自动把JOB_DONE位清零,作业完成后又会置1(总为1,而不是脉冲) 。所以在第一次作业时要人为的把该位置“1” ?你试试看吧。就是在系统启动时(OB100)里把对应的JOB_DONE位置1试试
05-03-02 16:00
还有,你的那个LADDER值应该是十进制的768,即W#16#300。我也是猜的,呵呵,我也从没有用过SFB49,现在也想研究研究。因为我马上要做一台机器,我想改成S7-300来做(原来用的欧姆龙CJ1M系列的),就是SFB49输出的频率太低了,最高才2.5K,这也太差劲了!
05-03-02 16:04
呵,再看了一下,在系统启动时JOB_DONE的默认值就是TRUE !只要在SFB进行作业的过程中才清零了,在作业完后又会置1 !!!
05-03-02 16:08
谢谢指点!
你说的都对.
05-03-03 17:11

工控新闻

更多新闻资讯