请教激情如火:硬件中断 点击:711 | 回复:4



gdldq

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:28帖 | 153回
  • 年度积分:0
  • 历史总积分:242
  • 注册:2002年6月04日
发表于:2007-08-20 10:00:00
楼主
我想让某个输入点的上升沿和下降沿均产生一个中断,让PLC作相应的处理。该如何办。我的办法是:在硬件组态中(S7300系列)设好需要产生中断的点及调用的OB块,如OB40,在相应的OB块中编写相应的程序。然后将硬件和OB块下装到CPU,但相应的OB块总是不能执行,不论程序多简单均是如此。(我用的是模拟器作试验)请问问题出在什么地方。需要在OB1中再调用相应的OB块吗? 如果我的中断处理中还要用到这个输入点的上升沿指令行吗?



gdldq

  • 精华:0帖
  • 求助:1帖
  • 帖子:28帖 | 153回
  • 年度积分:0
  • 历史总积分:242
  • 注册:2002年6月04日
发表于:2007-08-20 11:01:00
1楼
其它人对硬件中断有认识的也请赐教,谢谢。

ShowFine

  • 精华:1帖
  • 求助:1帖
  • 帖子:57帖 | 753回
  • 年度积分:0
  • 历史总积分:1671
  • 注册:2003年10月29日
发表于:2007-08-20 11:13:00
2楼
你需要使能硬件中断,即一般在OB100内调用SFC40,如下
      CALL  "EN_IRT"   //SFC40
       MODE   :=B#16#0
       OB_NR  :=0
       RET_VAL:=MW40
另外可以调用SFC39禁止中断,MODE决定了模式,具体你可以选中该SFC块然后按下F1,看帮助.

然后在OB40内通过OB40_MDL_ADDR(LW6)来判断中断模板的地址,通过OB40_POINT_ADDR(LD8)来确定更详细的中断通道,比如我做的一个,有硬件中断和FM350的计数中断,判断如下:
      L     #OB40_MDL_ADDR
      L     W#16#7C                     //CPU集成I/O中断
      ==I   
      JC    IOIT
      TAK   
      L     W#16#150                    //FM350-2高速计数中断
      ==I   
      JC    HC0I
      BE    

....
IOIT: AN    L     11.0                  //I124.0上升沿中断
      BEC   

春华★秋实

  • 精华:0帖
  • 求助:0帖
  • 帖子:103帖 | 1038回
  • 年度积分:0
  • 历史总积分:3013
  • 注册:2007年5月17日
发表于:2007-08-21 16:40:00
3楼
请问在中断中,可以调用中断程序吗?

ShowFine

  • 精华:1帖
  • 求助:1帖
  • 帖子:57帖 | 753回
  • 年度积分:0
  • 历史总积分:1671
  • 注册:2003年10月29日
发表于:2007-08-21 19:23:00
4楼
中断是由PLC系统自己管理的,你不可能在里面再调用中断,中断可以排队,中断可以有优先级,唯独不能调用。 但是可以调用FB、FC、SFB、SFC。

热门招聘
相关主题

官方公众号

智造工程师