基于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]