[西门子] 西门子 200smart中断程序编程

[复制链接]
查看260 | 回复0 | 2024-7-10 19:48:14 | 显示全部楼层 |阅读模式
>
01
什么是中断程序中断就是中止当前正在运行的程序,去执行需要立刻响应的信号而编写的中断服务程序,执行完毕后再返回原来中止的程序并继续执行。所以中断程序一般用于需要立即执行,而不受扫描周期限制的场合。



中断功能用中断程序及时地处理中断事件。中断事件与用户程序的执行时序无关,有的中断事件不能事先预测何时发生,中断事件可能发生在PLC程序扫描循环周期中的任意时刻。中断程序不由用户程序调用,而是在中断事件发生时由操作系统调用中断程序。响应中断事件而执行的程序称为中断服务程序。需要由用户程序把中断程序与中断事件连接起来,并且在允许系统中断后,才进入等待中断事件触发中断程序执行的状态。中断程序执行完毕会返回到之前中断的地方,继续扫描其它程序。


使用中断快速响应时,一般会将输入I点的滤波设置为微妙级,加上中断不受扫描周期的限制,所以响应速度要比普通程序快,然而在使用I/O 中断时,很容易受到外部信号的干扰造成误动作,所以在选择输入传感器时应考虑抗干扰的问题,尽量选择带屏蔽的传感器,并保证可靠接地,走线时应做到强、弱点分开走,远离干扰源。
中断一共128个,INT0-INT127,队列响应,单一执行;中断程序每次只执行一个扫描周期。02
中断程序指令ATCH:中断连接指令,建立中断事件号与中断程序的连接,连接中断号并不代表会产生中断事件。多个事件号可以连接同一个中断程序,当中断事件发生时,按照先后顺序和优先级排队执行此中断子程序。同一个中断事件号不可以同时和两个或两个以上的中断子程序进行关联,否则,会以最后扫描到的关联关系为准。

​ENI:中断允许指令,全局性启用所有附加中断事件进程。200 SMART中断功能默认是禁止状态,需要使用中断功能时,使用ENI指令允许开放中断功能。只需执行一次,即可启用所有中断。一般用SM0.1或边沿触发执行,ENI指令不能写在中断里面。

​只有在执行了全局中断允许指令ENI和ATCH指令后,出现对应的中断事件时,CPU才会执行连接的中断程序。



DISI:全局禁止中断,禁止处理中断服务程序,但中断事件仍然会排队等候。

​DTCH:中断分离,将中断事件号与中断服务程序之间的关联切断,并禁止该中断事件。所以中断程序不会执行,除非再次连接中断事件和中断程序,中断程序才会执行。


​RETI:条件中断返回,根据逻辑操作的条件,从中断服务程序中返回。无条件中断返回时,执行完中断程序的最后一条指令之后,从中断程序返回,继续执行被中断的操作。需要注意的是写在中断程序内部,不要写错位置。



CLR_EVNT:清空中断队列。在DISI指令禁止中断时,中断事件依然发生,只是不再执行中断程序,一旦再次开放中断,那么在禁止中断期间所发生的所有中断事件会依照先后顺序和优先级依次排队执行中断子程序。而这是有问题的,所以一般在再次开放中断之前先执行一次清除中断事件指令,从而把禁止中断期间所发生的所有中断事件清除。

03
中断程序相关事件号为了便于识别,PLC系统给每个中断事件都分配了一个编号,又称中断事件号。中断事件可以分为三大类:通信中断、I/O中断、定时中断。


通信中断:CPU的串行通信端口可以由用户进行控制,称为自由端口模式,在该模式下接收信息完成、发送信息完成、接收一个字符均可以产生中断事件,利用接收和发送中断可以简化程序对通信的控制。


I/O中断:上升沿中断、下降沿中断、高速计数器中断。CPU可以为输入点I0.0至I0.3以及可选信号板的I7.0和I7.1的上升沿或下降沿产生中断。高速计数器中断允许响应HSC的计数器当前值等于设定值、计数方向改变、计数器外部复位等中断事件。硬件中断会检测物理接口,程序内部强制时无效。


定时中断:以1毫秒为增量,周期时间可以取1毫秒至255毫秒。定时中断0和定时中断1的时间间隔分别写入特殊寄存器字节SMB34和SMB35。通常可以使用定时中断来采集模拟量或定时执行PID控制程序。定时器中断,T32和T96允许及时响应一个给定时间间隔的结束,只有1毫秒分辨率的接通延时TON和断开延时TOF定时器,T32和T96支持此类中断,启用中断后当定时器的当前值等于预设值时,在CPU的1毫秒定时刷新中执行被连接的中断程序。

[tr]事件号  事件CR20s
CR30s
CR40s
CR60sSR20/ST20
SR30/ST30
SR40/ST40
SR60/ST60[/tr]
0I0.0 上升沿       有
1I0.0 下降沿       有
2I0.1 上升沿       有
3I0.1 下降沿       有
4I0.2 上升沿       有
5I0.2 下降沿       有
6I0.3 上升沿       有
7I0.3 下降沿       有
8端口 0 接收字符       有
9端口 0 发送完成       有
10定时中断 0(SMB34设定 控制时间间隔)      有
11定时中断 1(SMB35设定 控制时间间隔)      有
12HSC0 CV=PV(当前值 = 预设值)     有
13HSC1 CV=PV(当前值 = 预设值)    有
1415保留    无
16HSC2 CV=PV(当前值 = 预设值)    有
17HSC2 方向改变    有
18HSC2 外部复位    有
19PTO0 脉冲计数完成    有
20PTO1 脉冲计数完成    有
21定时器 T32当前时间 = 预设时间    有
22定时器 T96 当前时间 = 预设时间    有
23端口 0 接收消息完成    有
24端口 1 接收消息完成    有
25端口 1 接收字符    有
26端口 1 发送完成    有
27HSC0 方向改变    有
28HSC0 外部复位    有
29HSC4 CV=PV    有
30HSC4 方向改变    有
31HSC4 外部复位    有
32HSC3 CV=PV(当前值 = 预设值)    有
33HSC5 CV=PV    有
34PTO2 脉冲计数完成    有
35I7.0 上升沿(信号板)    有
36I7.0 下降沿(信号板)    有
37I7.1 上升沿(信号板)    有
38I7.1 下降沿(信号板)    有
43HSC5 方向改变    有
44HSC5 外部复位    有
  不同的中断事件有不同的优先权,多个中断事件同时发生时,根据优先级组以及组内优先权来确定首先处理哪一个中断事件。优先级相同时,CPU按照先来先服务的原则处理中断。在执行I/O中断时,通信中断又产生了,此时不会马上去执行通信中断,而是执行完正在执行的I/O中断后再执行通信中断。

任何时刻CPU只执行一个中断程序。一旦一个中断程序开始执行,要一直执行到完成,即使更高优先级的中断事件发生,也不能中断正在执行的中断程序。正在处理中断时发生的另一个中断会进行排队等待。



200 SMART PLC中断优先级由高到低依次是通信中断、I/O中断、定时中断。


04
中断子程序编程1、最基本的中断应用程序案例

​2、通过中断编程按下开始工作按钮I0.3,实现第一次按下I0.0时,Q1.0点亮,第二次按下I0.0,Q1.0熄灭,如此循环。

​主程序建立中断连接,0号事件为I0.0上升沿和中断程序INT_0建立连接,并开放中断。第一次按下I0.0,执行中断程序0。


​在中断程序0中,置位点亮Q1.0,同时把0号事件和中断程序1建立连接,这样自动会和0号中断程序断开连接,再次按下I0.0时会执行中断程序1中的程序。

​在中断程序1中,复位Q1.0,同时把0号事件和中断程序0建立连接,自动和1号中断程序断开连接,下次按I0.0时执行中断程序0中的程序。




3、​使用定时中断实现对50ms定时周期计数。

​注意:定时中断启用后,将连续运行,每个连续时间间隔后,会执行连接的中断程序。如果退出 RUN 模式或分离定时中断,定时中断将禁用。如果执行了DISI中断禁止指令,定时中断会继续出现,但是尚未处理所连接的中断程序。中断程序的初始化只需执行一次。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则