西门子中断指令什么时候用

西门子中断指令什么时候用,第1张

西门子中断指令通常用于实时控制的应用中,例如工业自动化生产线、机器人控制等。当控制系统需要及时响应某些事件或条件时,可以使用中断指令。中断指令可以将控制器从当前执行的程序中暂停,转而执行中断处理程序,等到中断处理程序执行完毕后再返回原程序继续执行。这样可以保证控制系统对实时性的要求,提高系统的响应速度和稳定性。同时,中断指令也可以用于各种异常处理,例如输入/输出错误、内存溢出等异常情况。

西门子300plc高速计数器中断 oB40的方法:在初始化时设置初始计数方向和计数的预置值,允许全局中断,设置在当前值等于预置值时启动中断程序。在当前值等于设定值时,系统程序自动调用中断程序。在中断程序中,修改有关的PLC开关量输出点的状态,写入新的预置值和计数方向,清除高速计数器的当前值。可以多次重复上述的 *** 作。

响应来自不同模块(如I/O模块、CP模块或FM模块)发出的过程警告或硬件中断请求信号.

OB 40运行时, *** 作系统不再接收其它硬件中断的请求.

对于可修改参数的模拟或数字模块,用编程工具来设定由哪个信号启动OB 40.对于CP和FM,必须用与模块配套同时提供的软件设定.通过调用SFC,也能在程序运行时在线设定是否用某模块的硬件中断。

系统配置模拟量输入模板时,用户可以设定测量值的允许范围,如果测量值超过这个界限,OB40将被调用执行。该功能与OB1中的比较逻辑相似,但是它省略了在OB1中的控制程序,节约了循环扫描时间。

我用西门子多年了,很少用到OB10到OB17,根据我的理解,这8个OB是用于定时启动和停止的。一般工业控制一个设备运行多长时间,然后停止多长时间,再启动,这样的你用FC和定时器就能够实现,那8个专用OB中所谓的定时,是要设定PLC的真实时间,然后在某年某月某日来启动,这样子。

OB35,是我用得很多的一个循环中断,它的意思是定时扫描。因为你在OB1中调用的普通程序,其扫描周期可能会根据PLC性能和程序量的大小而不一样,一般在10—100ms之间,但是OB35是可以在硬件里设置固定的扫描的时间的,比如设成100ms,那么不管你的程序量大小,OB35都会在每100ms来扫描一次这里面的程序语句。我们做物流设备的,一般用OB35来计算和控制机器行走的速度。

如果你在OB35里写一句话,条件满足的话,它和写在OB1里结果是一样的,只是PLC扫描的时间不一样而已。但是你在OB10——17里写一句话,它的效果可能是会在你设定的某一个时间来启动,启动之后也和OB1里调用是一样的。

建议采用FC里用定时器来实现你的设备按时启停,你要的不是中断。

希望对你有帮助。

子程序和中断服务程序

子程序和中断服务程序都是程序的组织结构,它们和主程序一起被称为POU(程序组织单元)。

在S7-200中,每个POU可以单独加密,保护作者的知识产权。

子程序

子程序可以把整个用户程序按照功能进行结构化的组织。一个“好”的程序总是把全部的控制功能分为几个符合工艺控制规律的子功能块,每个子功能块可以由一个或多个子程序组成。这样的结构也非常有利于分步调试,以免许多功能综合在一起无法判断问题的所在;而且,几个类似的项目也只需要对同一个程序作不多的修改就能适用。

子程序在调用时会保持当前的逻辑运算结果,但是不保存累加器(ACx)的内容

子程序在执行到末尾时自动返回,不必加返回指令;在子程序中间也可以使用条件返回指令

子程序不能使用跳转语句跳入、跳出

子程序返回时,回到调用子程序的指令后面,继续执行上一级程序

S7-200 CPU最多可以调用64个子程序(CPU226为128个)

子程序可以嵌套调用,即子程序中再调用子程序,一共可以嵌套8层

在中断服务程序中不能欠套调用子程序,被中断服务程序调用的子程序中不能再出现子程序调用

子程序可以带参数调用,在子程序的局部变量表中设置参数的类型;一共可以带16个参数(形式参数)

有关子程序的详情,请看《S7-200系统手册》相关部分。

中断服务程序

中断功能是S7-200的重要功能,用及时处理与用户程序的执行时序无关的 *** 作,或者不能事先预测何时发生的“事件”。

S7-200中使用中断服务程序来响应这些内部、外部的中断事件。中断服务程序需要通过用户编程与特定的中断事件联系起来,才能工作。中断程序与子程序最大的不同是,中断服务程序不能由用户程序调用,而只能由特定的事件触发执行。

无法准确预测何时执行中断服务程序。

中断服务程序只有由用户程序把中断服务程序标号(名称)与中断事件联系起来,并且开放系统中断后才能进入等待中断并随时执行的状态

多个中断事件可以连接同一个中断服务程序;一个中断服务程序只能连接一个中断事件

中断服务程序也可由用户程序取消与中断事件的连接;队列中的特定中断事件可以被指令取消;也可用指令禁止全部中断

中断程序只需与中断事件连接一次,除非需要重新连接

进入中断服务程序时,S7-200的 *** 作系统会“保护现场”,从中断程序返回时,仍然恢复当时的程序执行状态

中断事件各有不同的优先级别

中断服务程序不能再被中断。中断程序执行时,如果再有中断事件发生,会按照发生的时间顺序和优先级排队

中断服务程序执行到末尾会自动返回,也可以由逻辑控制中途返回

S7-200 CPU最多可以使用128个中断程序,中断程序不能嵌套

在中断程序中只能调用一层子程序,中断程序中的子程序不能嵌套,否则会出错

中断程序应短小而简单,执行时对其他处理不要延时过长,即越短越好

在《S7-200系统手册》中有关中断指令的叙述十分详细,建议初学者仔细阅读。

跳转至标签(JMP)指令对程序中的指定标签(n)执行分支 *** 作。跳转接受时,堆栈顶值始终为逻辑1。标签(LBL)指令标记跳转目的地(n)的位置。您可以在主程序、子程序或中断例行程序中使用"跳转"指令。"跳转"及其对应的"标签"指令必须始终位于相同的代码段中(主程序、子程序或中断例行程序)。您不能从主程序跳转至子程序或中断例行程序中的标签,与此相似,您也不能从子程序或中断例行程序跳转至该子程序或中断例行程序之外的标签。您可以在SCR段中使用"跳转"指令,但对应的"标签"指令必须位于相同的SCR段内

常问问题

使用子程序时,为何动作只能执行一次,或者某些状态不能结束?

如果发生动作不能重复执行,或者状态不能结束(像锁死了一样),而这些功能都与子程序有关时,请检查是否有条件调用子程序。调用子程序的条件在上述动作执行后,或者进入某个状态后不再有效,无法再次“激活”,而脱离上述状态或复位的指令正好在子程序内,必然造成上述的现象。

另可参见:定时器在条件调用的子程序中

带形式参数的子程序,定义为OUT类型的变量为何会在多次调用子程序时互相干扰?

那是因为定义为OUT类型的形式参数又在子程序内部参与了运算。凡是此类参数都应当定义为IN_OUT类型。

与中断服务程序有关的计算任务,为何会偶尔得出不正确的结果?

出现这种现象的原因多是在主(子)程序和中断程序之间传递数据的机制不当。

中断程序可能在任何时刻执行,如果此时主程序(或子程序)正在对中断程序使用的数据进行 *** 作,其中间结果可能带入中断程序,造成计算结果的变化;同样地,在中断程序中产生数据也对主(子)程序中的计算有类似影响。

解决办法是保证可能产生中间结果的数据不直接参与计算:

使用STL指令计算单个中断程序使用的数据

在梯形图(LAD)编程时,用MOV(传送)指令准备最后的数据(单个数据)

准备成批的数据时,先禁止中断,完成后再允许中断

简单的数据准备或者结果计算可直接放在中断程序中进行

详情请看《S7-200系统手册》的中断指令相关章节。

中断服务程序看起来没有执行?

可以在中断程序中加一个测试程序段,如使用SM00(常为“1”)将一个输出点置位(使用Set指令),观察是否进入中断服务程序。

中断程序不执行,多数原因是初始化(连接中断事件和中断程序)的问题,或者没有“开中断”。

应该使用SM01(或沿触发)执行一次初始化,然后开中断。

什么时候执行子程序和什么时候执行中断程序并无定数,是控制对象和需求而定。中断程序由对应的中断事件触发,比如定时器、计数器或者通信等。200系列一共有33个中断事件。它和跳转指令有本质的区别的,主要体现在中断事件的产生和触发不受主程序扫描时间的影响,有更高更快的优先级

高速运算和处理的时候需要用到中断程序

填写相应事件号,指定执行的中断程序即可。

中断分离指令取消中断事件与所有中断例行程序之间的关联,并禁用中断事件。在激活中断例行程序之前,必须在中断事件和用户希望在事件发生时执行的程序段之间建立联系。

在激活中断例行程序之前,必须在中断事件和用户希望在事件发生时执行的程序段之间建立联系。使用中断连接指令可将中断事件与程序段联系在一起。

以上就是关于西门子中断指令什么时候用全部的内容,包括:西门子中断指令什么时候用、西门子300plc高速计数器怎么中断 oB40、西门子PLC S7300的中断问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9407047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存