PLC程序中经常用到中断功能,中断相当于子程序,子程序相当于主程序,说起来 PLC里的中断平时根本没什么用。这么说,像告诉脉冲处理,不用中断,只用1MS的计时能实现其功能,但是却没有中断计时来的精确,毕竟不用中断,程序扫瞄受扫描周期束缚。
但有些程序,必须要用到中断,典型的就是PID,检测读取周期必须精确。不管是以前自己编PID中断程序,还是现在集成的PID中断程序块,都使用到了精确的时间控制,立即处理信息的中断。
今天这篇文章,我们就来谈谈,PLC中断功能怎么用?
PLC这样理解中断功能,在理解中断时,首先要清楚PLC的运算周期或者说是扫描周期,有必要说下PLC顺控循环执行的流程,这是理解中断的前提,必须要掌握,分为三部分,输入处理、程序处理、输出处理。
1、输入处理
可编程控制器在执行程序前,将可编程控制器的所有输入端子的ON/OFF状态读入输入映像区,程序执行过程中即使输入发生变化,输入映像区的内容也不会变化,在执行下一个循环的输入处理时读取该变化。
2、程序处理
PLC根据程序内存中的指令内容,从输入映像区和其他软元件的映像区中读出各软元件的ON/OFF状态,然后从0步依次开始运算,并将每次得出的结果写入到映像区中。因此,各软元件的映像区随着程序的执行逐步改变其内容,此外,输出继电器的内部触点根据输出映像区的内容而执行动作。
3、输出处理
所有指令执行结束后,输出Y映像区中的,ON/OFF状态会传送至输出锁存内存,这个就作为可编程控制器的实际输出。
执行以一次动作所需要的时间就是运算周期也叫扫描时间,那么中断与扫描周期有什么联系呢,中断就是不按照从上到下顺序的完整执行,而是中断程序优先单独运行程序处理而且是立即输出不参与整个周期运算。 中断的作用是什么呢,我们知道plc扫描周期是很短的,因此我们很难看出plc顺控执行过程,这里我们不妨假设扫描周期为10s的时间,就是执行全部的程序需要10s的时间,有一个很简单的程序LD X0,OUT Y0,根据上图当X0为ON时,Y0不是马上就有输出的,而是等到10s后才输出,断开X0后,同样Y0也不是马上就关闭的,都需要得到扫描完后才有结果。那么这样在我们实际应用中plc就没什么使用了设备就无法进行工作了,这时候就需要中断处理了,采用输入中断功能,立即执行输入。实际上plc的运算时间是很短只有几毫秒,完全能够满足需要,但一些如高频脉冲输入、脉冲捕捉等时间在微秒级的肯定要受到周期运算的影响了。 因此如果在一个周期内要完成很多次ON/OFF状态处理时,必须使用中断功能了。在我们一般情况下很少用到中断,即使需要PLC的高速指令都带有中断功能无需自己专门编写中断子程序了,例如高速计数器采用中断的方式对从特定的输入继电器出来的高速脉冲进行处理,所以无论运算时间多少都可进行计数,计数的结果或是使用高速计数器专用的比较指令立即输出,或是对高速计数器的计数值用高速计数器中断方式执行特定的程序处理。 对高频脉冲进行计数不采用高速计数器进行计数,我们举例使用中断功能对高速输入进行计数,示例如下,从EI到FEND是主程序,从指针I101(输入X0的中断指针)开始到IRET是中断子程序,每当感应到X1的上升沿就执行子程序将数值立即传送到D10中,这样就避免了PLC运算周期的影响。
关键字:PLC 中断 中断功能
引用地址:
如何理解PLC中断,PLC中断功能怎么用?
推荐阅读最新更新时间:2024-11-11 19:46
STM32学习笔记整理之(2)——外部中断
学习STM32也快一年了,现在工作的内容跟用的是STM32平台的,趁着年前工作量比较小,总结一下STM32的基础知识,不出意外的话将会连续发布完整的笔记整理,学习的时候主要是跟着野火教程学的,然后在整理出适合自己的笔记。 2.1 NVIC配置 1、中断分组 在配置优先级的时候,NVIC 只可以配置 16 种中断向量的优先级,抢占优先级和响应优先级的数量由一个 4 位的数字来决定,把这个 4 位数字的位数分配成抢占优先级部分和响应优先级部分。 有 5 组分配方式: 第0组:所有4位用来配置响应优先级。 第1组:最高1位配抢占优先级,低3位配响应优先级。2^1=2 种抢占优先级(0,1),2^3=8 种响应优先级, 第2组:2位
[单片机]
C51入门2,定时器和中断应用
实验一:定时器中断闪灯 程序: #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #include reg52.h //端口设置 sbit P10=P1^0; sbit K1=P3^2; char code dx516 _at_ 0x003b; //主函数 void main(void) { TMOD=0x01; //设置定时器0工作再方式1 TR0=1; //启动定时器0,TR0必须置1 ET0=1; //开定时器中断 EA=1; //开总中断 while(1) //死循环 { ;
[单片机]
stm32_can错误中断 清除重点
整理:MilerShao 某日,有一客户反映他们在做STM32F407的CAN通信的出错测试时,发现出现类似死机的现象。后来跟踪调试发现是开启了出错中断,因其不停中断导致的貌似死机现象。纳闷的是,经过进一步测试,发现即使清除了“中断请求标志”后也无效。大致情形如下: 在CAN通讯时候让某节点做插拔、断电等测试,人为的产生一些CAN总线错误,看看能否让总线恢复正常。 结果测试发现,如果总线出现错误,并且打开了CAN错误中断处理的话,通过仿真器调试发现CPU一直在处理CAN错误中断,其他程序得不到处理而呈死机状态。 先是怀疑CAN控制器因为各类错误条件而进入错误中断后,虽在错误中断里清除了相关中断状态标志,但由于计数器值没有清零的原
[单片机]
PIC单片机引脚中断程序设计技巧
所有的中档系列PIC单片机,PORTB端口最高的4个引脚(RB7~RB4)在设为输入模式时,当输入电平由高到低或由低到高发生变化时,可以让单片机产生中断。这就是通常所说的引脚状态变化中断。 在设计引脚中断程序时,有三个需要特别注意的地方。一是,在清除P0RTB中断标志位RBIF之前,必须安排一条必不可少的,以PORTB端口数据寄存器PORTB为源寄存器的读操作指令。放置这一指令的目的有时并不只是为了读取有用的数据,而是为了取消状态变化的硬件信号,以便顺利清除RBIF标志位,为下一次中断做好准备。二是,由于端口PORTB是引脚电子变化中断,即无论引脚出现上升沿还是下降沿都会产生中断请求,所以必须处理好不需要的虚假中断。三是,
[单片机]
STM32_EXTI外部中断学习笔记
参考资料:《STM32F4xx中文参考手册》系统配置控制器以及中断和事件章节。 EXTI( External interrupt /evet controller) 之前接触过51单片机的都了解到51单片机有两个外部中断 ,分别为外部中断0、1。用来实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。而STM32的则有与之功能相同的外部中断事件控制器。外部中断/事件控制器(EXTI)管理了控制器的 23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的
[单片机]
plc有哪两种工作状态 plc处理的是什么信号
plc有哪两种工作状态 PLC具有两种工作状态,分别是运行状态和停止状态。 运行状态:PLC处于运行状态时,输入模块采集外部信号,CPU根据预先编写的程序进行逻辑运算,输出模块控制外部设备。PLC在运行状态下可以实现各种逻辑控制功能,实现工业自动化控制。 停止状态:PLC处于停止状态时,输入模块不再采集外部信号,CPU停止对程序进行逻辑运算,输出模块不再控制外部设备。PLC在停止状态下无法对外部设备进行控制,此时可以对PLC进行参数设置、程序修改、故障诊断等操作。 PLC的工作状态可以通过PLC的操作面板、编程软件等进行切换。需要注意的是,当PLC处于运行状态时,应该避免对PLC进行参数设置、程序修改等操作,以
[嵌入式]
西门子PLC程序的检查
在plc程序设计完成后,为了保证程序的可靠性,通常需要对编制的程序进行一次语法、格式的全面检查。检查应包括如下基本内容: ①程序中一般不应有重复线圈(特殊使用除外); ②程序中一般不应出现只有触点、没有输出的信号: ③如果程序中使用了符号地址,一般不应有未定义符号的变量; ④程序中一般不应有未编程的输出点: ⑤程序中一般不应有未使用的输入点: ⑥程序中一般不应有未调用的逻辑块。 在西门子STEP7中,以上内容均可以通过对所谓“参考数据(Reference Data)”的显示,进行专门的统计、归纳与汇总。
[嵌入式]
GD32 MCU是如何进入中断函数的
用过GD32 MCU的小伙伴们都知道,程序是顺序执行的,但当有中断来的时候程序会跳转到中断函数,执行完中断函数后程序又继续回到原来的位置继续执行,那么你们知道MCU是如何找到中断函数入口的吗? 今天我们就以GD32F303系列的EXTI0中断来描述下MCU是如何进入中断的。 首先来看一个简单的代码(以Keil为开发环境): 这段程序初始化了两个LED灯,并将一个按键设置为中断模式,这里用的是PA0,所以中断号也为0,即EXTI0。 再来看一下中断函数: 中断函数也很简单,当有中断发生的时候,去翻转一个LED灯状态。 好,我们通过map文件看下这个中断函数的地址在哪里(不会的小伙伴可以看看前面的视频——《如果查看
[单片机]