基于CODESYS平台的库CAA_BehaviourModel.library之ETrigA详解

    上升沿开始动作,在动作完成或内部发生错误或外部中止之前下降沿,输出值仅变化1个周期,在动作完成或内部发生错误或外部中止之后下降沿,输出值保留到下降沿。外部中止, 动作立即停止并且输出复位到初始状态。

FUNCTION_BLOCK ETrigA IMPLEMENTS IFBCommand
VAR_INPUT
	xInExecute: BOOL;	
	xInAbort: BOOL;

END_VAR
VAR_OUTPUT
	xOutDone: BOOL;		    //完成
	xOutBusy: BOOL;		    //执行中
	xOutError: BOOL;		//出错
	xOutAborted : BOOL;	    //被用户中止
END_VAR
VAR
	xPreviousAbortInProgress: BOOL;	//上一周期xAbortInProgress的值
	xPreviousExecute: BOOL;			//上一周期xExecute的值
	xAbortInProgress: BOOL;			//中止处理中
	iError: INT;					//错误代码
END_VAR

IF xInAbort AND xOutBusy AND NOT xAbortInProgress THEN  //在功能执行中且内部未出现中止时用户中止
   xAbortInProgress:= TRUE;
END_IF;

IF NOT (xAbortInProgress OR xInAbort) THEN	//中止未请求
   IF NOT xOutBusy THEN
	  IF NOT xInExecute AND xPreviousExecute THEN	    //下降沿复位输出
		 prvResetOutputs();
	  ELSIF xInExecute AND NOT xPreviousExecute THEN	//上升沿开始动作
		 xOutBusy:= TRUE;
		 xPreviousExecute := TRUE;
		 prvStart();
	   END_IF;
	END_IF;

	IF xOutBusy THEN
	   prvCyclicAction();
	   IF xOutDone THEN
		  xOutBusy:= FALSE;
	   END_IF;
	END_IF;

	IF xOutBusy THEN
	   IF iError <> 0 AND NOT xPreviousAbortInProgress THEN
		  xAbortInProgress:= TRUE;
	   END_IF;
	END_IF;
END_IF;

IF NOT xInExecute AND xInAbort AND NOT xAbortInProgress AND xOutAborted THEN	//执行中出现错误 或被用户中止
   prvResetOutputs();
END_IF;

IF xAbortInProgress THEN
   prvAbort();
   IF NOT xAbortInProgress THEN	//中止完成
	  xOutBusy:= FALSE;
	  IF iError <> 0 THEN
		 xOutError:= TRUE;
	  END_IF;
	  IF xInAbort THEN
		 xOutAborted:= TRUE;
	  END_IF;
   END_IF;
END_IF;

xPreviousAbortInProgress:= xAbortInProgress;

  prvAbort(),prvCyclicAction(),prvResetOutputs(),prvStart()为标准接口IFBCommand中的4个方法。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Codesys_PEPSI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值