您现在的位置是:首页 > PLC技术 > PLC技术

日期时间中断组织块

来源:艾特贸易2018-03-26

简介1 .设置和启动日期时间中断 为了启动日期时间中断,用户首先必须设置日期时间中断的参数,然后再激活它。有以下 3 种方法可以启动日期时间中断。 ①在用户程序中用 SFC 28 “ SE


  1.设置和启动日期时间中断

  为了启动日期时间中断,用户首先必须设置日期时间中断的参数,然后再激活它。有以下3种方法可以启动日期时间中断。

①在用户程序中用SFC 28SET_TINT”和SFC 30ACT_TINT”设置和激活日期时间中断,如图4-35所示。

 

4-35利用用户程序进行中断

    ②在STEP 7中打开硬件组态工具,双击机架中CPU模块所在的行,打开设置CPU属性的对话框,如图4-36所示,点击“Time_Of_Day Interrupts”选项卡,设置启动时间日期中断的日期和时间,如图4-37所示,选中“Active”(激活)多选框,在“Execution”列表框中选择执行方式。将硬件组态数据下载到CPU中,可以实现日期时间中断的自动启动。

③用上述方法设置日期时间中断的参数,但是不选择“Active”,而是在用户程序中用SFC 30ACT_TINT”激活日期时间中断。

 

4-36  CPU属性对话框

 

4-37Time_Of_Day Interrupts”选项卡

    2.查询日期时间中断

    要查询设置了哪些日期时间中断以及这些中断什么时间发生,用户可以调用SFC 31QRY_TINT”,或查询系统状态表中的“中断状态”表,如表4-10所示。

4-10    SFC 31输出的状态字节STATUS

 

    3.禁止日期时间中断

    用户可以用SFC 29CAN_TINT”取消(禁止)日期时间中断,当用户又要重新使用这些日期时间中断时,可以用SFC 28SET_TINT”和SFC 30ACT_TINT”重新设置和激活这些日期时间中断。

    4.日期时间中断的优先级

    8个日期时间中断组织块(OB)均具有相同的默认优先级(第2级),它们之间的优先级是按启动事件发生的顺序来进行处理,用户可以通过选择适当的参数来改变优先级。

    日期时间中断组织块OB10的局域变量如表4-11所示。

4-11    日期时间中断组织块0810的局域变量表

 

    在调用SFC 28时,如果参数“OB10_PERIOD_EXE”为十六进制数W#16#0000W#16#0201W#16#0401W#16#1001W#16#1201W#16#1401W#16#1801W#16#2001,分别表示执行一次、每分钟、每小时、每天、每周、每月、每年和月末执行一次。

【例4-11IO.O的上升沿时启动日期时间中断0810,在IO.11时禁止日期时间中断,每次中断使MW21。从2004718时开始,每分钟中断一次,每次中断MW2被加1

 

4-38  IB10例程SIMATIC管理器示意图

STEP 7中生成项目“OB10例程”,为了便于调用,例程中对日期时间中断的操作都放在功能FC 12中,如图4-38所示。在OB1中用指令CALL FC l2调用它。下面是用STL编写的FC 12的程序代码,它有一个临时局域变量“OUT_TIME_DATE”。

    IEC功能DTOD_TD (FC3)在程序编辑器左边指令目录与程序库窗口的文件夹\LibrariesStandard LibraryIEC Function Blocks中。

    Network 1:查询0810的状态

    CALL  SFC 31    //查询日期时间中断0810的状态

    OB_NO    =10    //日期时间中断OB的编号

    RET_VAL    =MW208    //保存执行时可能出现的错误代码,为0时无错误

    STATUS    =MW16    //保存日期时间中断的状态字,MB17为低字节

    Network 2:合并日期时间

    CALL  FC 3    //调用IEC功能D_TOD_TD

    IN1    =D#2004-7-1  //设置启动中断的日期和时间

    IN2    =TOD#8:0:00

    RET_VAL  =#OUT_TIME_DATE    //合并日期和时间

    Network 3:在10.0的上升沿设置和激活日期时间中断

    A    IO.O

    FP    Ml.0    //如果在IO.O的上升沿,Ml.01

    AN  M17.2    //如果日期时间中断已被激活时,M17.2的常闭触点闭合

    A    M17.4    //如果装载了日期时间中断OB时,M17.4的常开触点闭合

    JNB  m005    //没有同时满足以上3个条件则跳转

    CALL SFC28    //同时满足则调用SFCSET_TINT”,设置日期时间中断参数

    OB_NO=10    //日期时间中断OB编号

    SDT  =#OUT_TME_DATE//启动中断事件,秒和毫秒被置为0

    PRRIOD=W#16#201    //设置产生中断的周期为每分钟一次

    RET_VAL: =MW200    //保存执行时可能出现的错误代码,为0时无错误

    CALL    SFC 30    //调用SFCACT_TINT”,激活日期时间中断

    OB_NO  =10    //日期时间中断OB编号

    RET_VAL=MW204    //保存执行时可能出现的错误代码,为0时无错误

    M005NOP 0

    Network 4:IO.1的上升沿禁止日期时间中断

    A    IO.1

    FP    Ml.l    //检测IO.1的上升沿

    JNB    m004    //表示IO1上升沿则跳转

    CALL    SFC 29    //调用SFCCAN_TINT”,禁止日期时间中断

    OB_NO=10    //日期时间中断OB编号

    RET__VAL: =MW210    //保存执行时可能出现的错误代码,为0时无错误

    M004:  NOP 0

    下面是用STL编写的0810中断程序,每分钟MW2被加1一次。

    Network 1

    LMW2

    +    1

    TMW2

    有时间错误出现时,CPU的操作系统调用OB80。时间错误包括以下几种。

    ①实际循环时间超过在CPU模块属性中设置的最大循环时间。

    ②执行OB时的应答错误。

    ③应为向前修改时间而跳过日期时间中断OB的启动时间。

    ④CiR(在CPU中组态)之后恢复为RUN方式。

    如果0880未编写程序,CPU将转换到STOP模式。下面是用STL编写的0880的程序代码,如果出现了时间错误,Q4.1将被置位,并将OB80的启动事件信息保存到MW110MW119中。

    Network 1

    AN    Q4.1

    SQ4.1

    CALL    SFC 20    //数据块传送

    SRCBLK  =#OB80_EV_CLASS    //指定源地址

    RET_VAL=MW210    //保存可能的错误信息

    DSTBLK  =P#Mll0.0 Byte 20    //指定目的地址,复制20个字节

    可以在PLCSIM仿真软件中运行上述例程,运行时监视M 17.2M17.4MW2M17.21时表示日期时间中断被激活,17.4l时表示已经装载了日期时间中断组织块OB10。用IO.O激活日期时间中断,M17.2变为1状态,每分钟MW2将被加1。用IO.I禁止日期时间中断,M17.2变为0状态,MW2停止加1

 

 

(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:艾特贸易网客服为您服务