西门子plc的atch中断指令使用-www.尊龙凯时888

工控 时间:2023-04-08 22:29:09 回答数:7条
西门子plc的atch中断指令使用

最佳答案

俏皮的项链

怕黑的橘子

2023-04-08 22:29:09

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

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

中断程序必须由三部分构成:中断程序标号(即中断事件的编号)、中断程序指令和无条件返回指令。在中断程序中不能使用disi、eni、hdef、lscr和end指令。

扩展资料:

中断优先级

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

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

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

其他答案共有6条回答

  • 飘逸的奇异果
    2023-04-08 22:29:09

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

    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-04-08 22:29:09

    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-04-08 22:29:09

    首先你需要在主程序或者在初次调用子程序中编写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-04-08 22:29:09

    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-04-08 22:29:09

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

  • 感动的自行车
    2023-04-08 22:29:09

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

(c)2020-2022 名片网 system all rights reserved   powered by

备案:

网站地图