西门子PLC的ATCH中断指令使用

工控 时间:2023-02-16 17:42:44 回答数:7条 机械归档 醉学网
西门子PLC的ATCH中断指令使用

最佳答案


Notice: Undefined variable: v in /home/www/wwwroot/926169/file/cache/tpl/default/know/show.php on line 116

Notice: Undefined variable: v in /home/www/wwwroot/926169/file/cache/tpl/default/know/show.php on line 120
粗心的斑马

风趣的小虾米

2023-02-16 17:42:44

中断连接指令(ATCH)使中断事件(EVNT)与中断程序号码(INT)相联系,并启动中断事件。根据指定事件优先级组,PLC按照先来先服务的顺序对中断提供服务。

任何时刻只能激活一个用户中断。其它中断处于激活状态时,CPU发出中断暂时入队,等待以后处理。如果发生的中断数目过多,队列无法处理,则设定队列溢出状态位。当队空时,重置这些位。

中断程序必须由三部分构成:中断程序标号(即中断事件的编号)、中断程序指令和无条件返回指令。在中断程序中不能使用DISI、ENI、HDEF、LSCR和END指令。

扩展资料:

中断优先级

给中断源指定处理的次序就是给中断源确定中断优先级。中断按以下固定的优先级顺序执行:通信(最高优先级)、I/O中断和定时中断(最低优先级)。在上述3个优先级范围内,CPU按照先来先服务的原则处理中断,任何时刻只能执行一个用户中断程序。

如果发生中断过于频繁,使中断产生的速率比可处理的速率快,或中断被DISI指令禁止,中断队列溢出状态位被置1。只应在中断程序中使用这些位,因为当队列变空或返回主程序时,这些位会被复位。

参考资料:百度百科-中断指令

其他答案共有6条回答

  • 仁爱的柠檬
    2023-02-16 17:42:44

    定义高速计数器无外乎下面几个步骤:

    1、建一个初始化程序,用SM0.1控制;

    2、在初始化程序中,初始化高速计数器,置控制寄存器(HSC0为SMB37),不同的计数器对应不同的DI点,HSC0为I0.0,HSC3为I0.1,HSC4为I0.2,HSC5为I0.3(222不支持HSC1和HSC2),执行HDEF指令,你可以用模式0。

    3、置计数器初始值(HSC0为SMD38),如果从零启动就置零。

    4、置预置值(HSC0为SMD42),计数器计到这个值可以产生一个中断,一般利用这个中断调用相应的中断程序把当前值(SMD38)复零,否则计数器到头就不再计数了,当然你也可以置一个大点的值,在其他程序中清除当前值(SMD38),确保永远到不了头就可以了。

    5、指定中断程序(ATCH),中断事件是12,程序号看你程序了。

    6、打开中断(ENI),这条指令没有的话,2.5是不起作用的。

    7、启动高速计数器(HSC),按前面的初始化,你就要启动HSC0,即N为0。

    8、程序中读取高速计数器的值,对于HSC0,HC0单元中的内容就是当前的计数值,这个单元只读不能写,你可以通过修改SMD38的内容改变当前的计数值。

  • 迅速的朋友
    2023-02-16 17:42:44

    Input:要线性转换的输入

    ISH: 输入值的上限

    ISL:输入值的下限

    OSH:输出值的上限

    OSL:输出值的下限

    Output:线性转换后的值

    例如:要将4-20mA信号转换0.0~10.0的输出值,那么:Input填写输入,例如AIW0

    ISH填写32000(S7-200的4-20mA对应于6400~32000)

    ISL填写6400

    OSH填写10.0

    OSL填写0.0

    Output填写要保存的输出值,例如VD0

    中断连接指令

    中断连接指令的表示:中断连接指令由指令的允许端 EN、指令助记符ATCH、中断程序号(入口号)INT n和中断事件的事件号 EVNT 构成。用梯中断连接指令的操作:中断连接指令(ATCH)使中断事件(EVNT)与中断程序号码(INT)相联系,并启动中断事件。根据指定事件优先级组,PLC按照先来先服务的顺序对中断提供服务。

    以上内容参考:百度百科-ATCH

  • 迷路的水池
    2023-02-16 17:42:44

    首先你需要在主程序或者在初次调用子程序中编写T96的定时时间和开全局中断ENI。然后再用ATCH中断连接指令连接T96的中断号位22号,就可以了,之后你在所对应的中断程序中,编写你想处理的程序就可以了

    以下举例:

    主程序

    LD

    I0.0

    TON

    T96,100

    定时器t96的定时时间是100ms

    LD

    SM0.1

    ATCH

    INT_22,0

    解释;连接T96的中断,当T96的定时时间等于设定时间时调用INT_0中断程序

    ENI

    开全局总中断

    中断程序(INT_0)

    LD

    I0.0

    这是在中断程序中需要做的事情

    OUT

    Q0.0

  • 贪玩的小蚂蚁
    2023-02-16 17:42:44

    I_DI,整数(INT)转为双整数(DINT)

    DI_R,双整数(DINT)转为浮点数(实数REAL)

    DIV_R,浮点数(REAL)除法

    CTCH,未找到这条指令;

    MUL_R,浮点数(REAL)乘法

    ROUND,浮点数(REAL)取整为双整数(DINT)

    I,即INT,(单)整数;

    DI,即DINT,双整数;

    R,即REAL,浮点数;

    一般有四则运算符(加ADD、减SUB、乘MUL、除DIV)之后加“_I”,就是对整数进行运算;加“_DI”,就是对双整数进行算;加“_R”,就是对浮点数进行运算。

  • 闪闪的白猫
    2023-02-16 17:42:44

    PLC的通信、输入输出接口以及定时等状态发生改变时即发生中断事件。如通信端口的字符或报文接收、发送完成,当高速脉冲输出完成,对应输入端口的信号处于上升沿或下降沿,高速计数器的输入方向改变(增计数/计数)等,均发生中断事件。每一个中断事件都对应有一个中断号。通过中断连接指令ATCH来建立中断事件(EVNT)和处理此事件中断程序(INT)之间的联系。指令语句格式为 ATCH INT,EVNT。在启动中断程序前,应在中断事件和该事件发生时需要执行的中断程序之间用ATCH指令建立联系,执行ATCH指令后,该中断程序在中断事件发生时自动执行。此外还有用于断开中断事件和中断程序的连接的语句指令 DTCH EVNT和清除中断事件的语句指令CEVNT EVNT(梯形图选CLR_EVNT)。中断事件由中断事件号指定,中断程序由中断程序号指定。

  • 笨笨的大象
    2023-02-16 17:42:44

    应该不会影响到其他程序的,在程序中开放中断前的ATCH指令,将中断程序和中断事件联系起来。如果仅有中断事件,而没有中断程序,那么该中断事件对程序的执行就没有说明意义。怎么会影响到其他子程序的执行呢?换句话说,即使编写了中断子程序,如果没有与中断事件相连,同样也是没有意义的。当然,如果要想使中断事件对其他子程序产生影响,以定时中断为例,那么建议你在定时中断事件相连接的那个中断子程序中,编写程序,使其与(想要被影响的)主/子程序共用部分内存。