基于CODESYS平台的库CAA_BehaviourModel.library之ETrig详解-CODESYS V3-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6490-cn中国制造,中国芯~
查看: 2419|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    2017-11-20 22:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2023-9-22 22:24:08 | 显示全部楼层 |阅读模式
    输入上升沿开始动作,在动作完成或内部发生错误之前输入下降沿,输出值仅变化1个周期,在动作完成或发生错误之后输入下降沿,输出值保留到输入下降沿时。
    1. FUNCTION_BLOCK ETrig IMPLEMENTS IFBCommand
    2. VAR_INPUT
    3.         xInExecute: BOOL;               
    4. END_VAR
    5. VAR_OUTPUT
    6.         xOutDone: BOOL;                    //完成
    7.         xOutBusy: BOOL;                    //执行中
    8.         xOutError: BOOL;                //出错
    9. END_VAR
    10. VAR
    11.         xPreviousExecute: BOOL;                        //上一周期xExecute的值
    12.         xPreviousAbortInProgress: BOOL;        //上一周期xAbortInProgress的值
    13.         xAbortInProgress: BOOL;                        //中止处理中
    14.         iError: INT;                                        //错误代码
    15. END_VAR
    16. IF NOT xAbortInProgress THEN        //中止未请求
    17.         IF NOT xOutBusy THEN
    18.                 IF NOT xInExecute AND xPreviousExecute THEN            //下降沿复位输出
    19.                    prvResetOutputs();
    20.                 ELSIF xInExecute AND NOT xPreviousExecute THEN        //上升沿开始动作
    21.                    xOutBusy:= TRUE;
    22.                    xPreviousExecute:= TRUE;
    23.                    prvStart();
    24.                 END_IF;
    25.         END_IF;
    26.         IF xOutBusy THEN
    27.                 prvCyclicAction();
    28.                 IF xOutDone THEN
    29.                    xOutBusy:= FALSE;
    30.                 END_IF;
    31.         END_IF;
    32.         IF xOutBusy THEN
    33.            IF iError <> 0 AND NOT xPreviousAbortInProgress THEN        //执行中出现错误
    34.                   xAbortInProgress:= TRUE;
    35.            END_IF;
    36.         END_IF;
    37. END_IF;
    38. IF xAbortInProgress THEN
    39.         prvAbort();
    40.         IF NOT xAbortInProgress THEN        //中止完成
    41.                 xOutBusy:= FALSE;
    42.                 IF iError <> 0 THEN
    43.                         xOutError:= TRUE;
    44.                 END_IF;
    45.         END_IF;
    46. END_IF;
    47. xPreviousAbortInProgress := xAbortInProgress;
    复制代码
    prvAbort(),prvCyclicAction(),prvResetOutputs(),prvStart()为标准接口IFBCommand中的4个方法。
    +10
    不赞一个?
    打赏鼓励一下!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|Archiver|手机版|小黑屋|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

    GMT+8, 2026-10-23 18:25 , Processed in 0.134386 second(s), 42 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

    快速回复 返回顶部 返回列表