S7-21x的时间控制中断

问题:
如何编程S7-21x的时间控制中断?

解答:
下列CPU可以处理时间控制中断:

中断

CPU 210

CPU 212

CPU 214

CPU 215

CPU 216

支持的时间控制中断的数量n

无n

1n

2n

2n

2n

中断号n

无n

0n

0 和 1n

0 和 1n

0 和 1n

可能的中断程序号n

无n

INT 0
至 127n

INT 0
至 127n

INT 0
至 127n

INT 0
至 127n

S7-21x支持一个或更多的时间控制中断。可以用时间控制中断来执行需要循环执行的动作。
循环时间按每步 1 ms定义,范围在 5 ms (5)255 msn(255)

可以在特殊寄存器SMB34里为中断程序 0写入循环时间,并在SMB35为时间控制的中断程序n1写入循环时间。

每次当延时到达时,时间控制中断事件就会调用相应的中断程序。
通常使用时间控制中断进行模拟量输入采样。当分配一个中断程序到一个时间控制中断事件时,时间控制中断激活并开始计时。

在样例中,定时中断的初始化由只调用一次的启动子程序“SBR_0”完成。系统确定循环时间使以后所做的更改不会影响到循环时间。如果想要更改循环时间,必须为循环时间指定一个新值然后把中断程序重新分配到时间控制中断。重新分配时,此功能会删除以前定义的计时时值并开始以新时间值运行。

命令的作用

命令

操作数

操作数实例

主程序

网络 1n

通过引用只在第一个周期里置“1”的标志,给该事件分配一个独一无二的中断程序号n

LDn

SM 0.1n

SM 0.1n

在第一个循环中调用子程序“0”n

CALLn

0n

主程序结束n

MENDn

启动子程序“0”

SBRn

0n

使用“分配确定的 1 值”的系统标志SM 0.1n”,将时间控制段的时间间隔设置为 100 * 1ms = 100 msn

LD
MOVBn

SM 0.1
100,SMB 34n

允许所有中断n

ENIn

分配时间控制中断“0”到中断程序“0”n

ATCHn

INT,EVENT
INT=
中断程序数
EVENT=
中断事件数n

0,10n

终止子程序n

RETn

启动中断程序

INTn

0n

现在可以编写想要每隔 100 毫秒处理一次的那个程序n

.......n

....n

....n

终止中断程序n

RETIn

注意事项:

  • CPU根据中断发生的次序和它的优先级状态对其进行处理。因此对于中断处理始终只能有一个程序被激活。如果一个中断程序正在被处理,那么它就会先处理完毕。它不会被后面的中断程序所打断即使那个程序有更高的优先级。当一个中断正在被处理时,发生了另一个中断,那么后面的中断就会被放入队列中等待以后的处理。下表显示中断的三个队列以及可放入每个队列的最多的中断数。n

队列

CPU210

CPU212

CPU214

CPU215

CPU216

时间控制中断n

2n

4n

8n

8n

  • 有时候发生出现的中断要多与队列里可容纳的中断个数,这样,系统就会发出独特的队列溢出标志以指出不能被放入队列的中断事件的类型。下面的表格为发生队列溢出时所设置的特殊标志。只能在中断程序中使用位nSM 4.0 ton4.2,因为当队列被处理完毕、主程序的处理继续进行时,他们会被复位。n

队列

特殊标志

通讯中断的队列溢出n

SM 4.0n

I/O中断的队列溢出n

SM 4.1n

时间控制中断的队列溢出n

SM 4.2n

在条目ID 1109154下的S7-21x系统手册中可以找到更多的消息。

关键字:
程序组态

 

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc341203.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论