PLC与其它控制系统的不同,主要就在CPU模块上。而开放式PLC与普通PLC的区别,也主要体现在CPU模块上。许多人认为,PLC就是微型或小型的DCS,或者将工控机的物理结构改变一下就是PLC。这是大错而特错的。PLC之所以能够经历这么多年而长盛不衰,就是因为它的独特的CPU模块的机构和内部程序的运行方式。
1 CPU 程序扫描周期
1.1 CPU的内部结构
不同阶段的开放式PLC的CPU的配置和结构都不尽相同,但它们还是有共性的。所有的OpenPLC的CPU模块的内部结构可以列举如下:
图3.1 CPU模块的内部结构
CPU的功能是命令并统治整个PLC系统的活动。这是通过对系统程序的解释和执行来进行的。这个系统程序通常称为执行程序或应用程序,也叫FIRMWARE或固件。执行程序是由一组程序构成的,永久储存在CPU内部,并视作是CPU本身的一部分。该程序执行,使CPU可以进行控制、处理、通讯、和其它的内部管理功能。OpenPLC与其它的PC-based控制系统、专用控制器、各类嵌入式控制系统、DCS系统的不同,就在于FIRMWARE的独特性。
执行程序也负责CPU和编程器件的通讯,同样也支持其他外部设备的通讯,如现场器件的监控;电源的诊断信息,I/O模块的信息,和内存信息等,以及与操作员界面的通讯。
CPU模块的核心是处理器(MPU),处理器硬件是用来处理数字算法和逻辑功能的。CPU模块的核心是微处理器芯片,称为MPU。MPU内部包括几种类型的寄存器,用来存放信息,这些信息是执行程序是要用到的。这些寄存器包括:
累加器
存放MPU要处理的数据字,PLC的编程语言通常只允许直接使用一到两种累加器。累加器的位数是有CPU可处理的最大位数决定的。OpenPLC的累加器有16位和32位的。
状态寄存器
存放MPU所处理的数据所影响的状态位。有些PLC将这些状态寄存器的位直接拷贝到可寻址内存中,这样用户程序可以直接对其进行访问。PLC的程序员可以使用的状态位包括:
零状态位:最新处理的数据为零时,该位置1。
符号位:表示最近所处理的数据的最高位(MSB)的状态。
CARRY BIT:如果最新处理的数据产生的位数超出MPU的处理能力(因此结果不正确),则置为1。
溢出位:如果一个最大的数的结果的最高位从0变为1,或者一个最小数的结果的标志位从1变为0,表示数据溢出。
逻辑操作位(RLO):作为复杂布尔逻辑的每一步的运算的结果。
图3.2 MPU的数据处理模型
地址寄存器
MPU用地址寄存器作为目前正在使用的内存的起始地址,包括用户程序的内存区域和各种可寻址内存区域。
MPU的功能是接收、分析、处理和传送数据,处理器的数据模型如下图:
MPU的能力通常由两个指标判定:位数和时钟速度。位数目前有8-,16-,32-,也有64位的。时钟从1MHZ到300MHZ,大部分PLC是8位和4M的,有一些是16位和33MHZ的。OpenPLC采用的比较多的是INTEL的处理器,INTEL的各种MPU的能力如下:
Micro-Processor Bit Size(bit) Clock Speed(MHz)
8085 8 1
8086 16 4.77
80186 16 8
80286 16 12.5
80386 32 33
80486 32 50
Pentium 32/64 200
图中的CONTROL SECTION是处理器的心脏,由控制单元、算法逻辑单元和一些临时寄存器组成,控制SECTION决定了操作的功能、顺序和运行时间。
输入扫描区将扫描输入区的状态并将单个的输入状态放在RAM中,分析后,逻辑扫描功能(通过梯形图程序)将输出扫描区更新为合适的值,然后,输出将被扫描,并更新。输出的状态根据逻辑分析的结构确定是改变或保留,输出状态取决于CPU的输出状态信号。
图3.2也给出了处理器的其它功能。
1.2 OpenPLC程序扫描周期
每个OpenPLC的程序都是由三个运行周期组成的:1) 输入扫描,2) 程序扫描,3) 输出扫描。整个程序的运行时间有CPU的运行速度和程序的大小决定。对于高速的CPU和不太长的程序,往往周期在1毫秒之内。
扫描通常是连续进行的,先读取输入状态,再经过评估和执行控制逻辑,然后在刷新输出。
需要指出的是, 上述每个周期的三个部分的程序,即,输入、程序和输出扫描是独立的功能,也就是说,在程序扫描期间或输出扫描期间,如果输入发生了变化,只有在下一个周期内才会被MPU所知道;而程序扫描期间对输出状态的变化,也只有到输出扫描期间才会真实地改变到外部的输出器件中。如果输入信号的变化比扫描周期快,如在程序扫描时变化了,但在下一个输入周期之前由回复到以前的状态,则信号可能会被漏读,从而造成逻辑的错误。
在程序扫描周期内,对于一个梯形图来说,通常扫描是从左到右、从上到下的(大部分PLC都是采取这种方式,如AB即如此;但是有的OPENPLC如合控电气的P11系列和小型系列,则是按列扫描,从上到下,再从下到上,如此进行的;在PLC制造商中,SCHNEIDER的MODICON也是按列扫描的,)。
扫描周期的三个过程是周而复始的,内部的处理器有一个信号,被称为EOS信号,(end of scan),是用来表示每次扫描周期的结束的。通常,整个梯形图的扫描时间从几十分之一毫秒到几十个毫秒之间。对于一个固定的PLC来说,扫描时间取决于两个因素:1)用于存放控制程序的内存数量,2)程序所使用的指令类型(因为每个指令的执行时间都不同)。
远程I/O的采用会增加扫描时间,因为扫描周期中包含了与远程I/O通讯的时间。同样,监控程序的扫描时间也会较长,因为要将线圈和触点的状态送到显示器件上去。
图3.3 PLC程序扫描周期的三个阶段
对于更高速度的扫描要求来说,除了采用更快的CPU外,还可以采用一些特别的软件编程方法来解决,使得比如说5毫秒的周期可以满足0.5毫秒的扫描要求。中断是快速响应信号的一个方法。还有对于瞬态脉冲信号,可以采用脉宽延长的方式,但如果脉冲数量多,则此法不可行。
1楼
0
0
回复
1 CPU 程序扫描周期
1.1 CPU的内部结构
不同阶段的开放式PLC的CPU的配置和结构都不尽相同,但它们还是有共性的。所有的OpenPLC的CPU模块的内部结构可以列举如下:
图3.1 CPU模块的内部结构
CPU的功能是命令并统治整个PLC系统的活动。这是通过对系统程序的解释和执行来进行的。这个系统程序通常称为执行程序或应用程序,也叫FIRMWARE或固件。执行程序是由一组程序构成的,永久储存在CPU内部,并视作是CPU本身的一部分。该程序执行,使CPU可以进行控制、处理、通讯、和其它的内部管理功能。OpenPLC与其它的PC-based控制系统、专用控制器、各类嵌入式控制系统、DCS系统的不同,就在于FIRMWARE的独特性。
执行程序也负责CPU和编程器件的通讯,同样也支持其他外部设备的通讯,如现场器件的监控;电源的诊断信息,I/O模块的信息,和内存信息等,以及与操作员界面的通讯。
CPU模块的核心是处理器(MPU),处理器硬件是用来处理数字算法和逻辑功能的。CPU模块的核心是微处理器芯片,称为MPU。MPU内部包括几种类型的寄存器,用来存放信息,这些信息是执行程序是要用到的。这些寄存器包括:
累加器
存放MPU要处理的数据字,PLC的编程语言通常只允许直接使用一到两种累加器。累加器的位数是有CPU可处理的最大位数决定的。OpenPLC的累加器有16位和32位的。
状态寄存器
存放MPU所处理的数据所影响的状态位。有些PLC将这些状态寄存器的位直接拷贝到可寻址内存中,这样用户程序可以直接对其进行访问。PLC的程序员可以使用的状态位包括:
零状态位:最新处理的数据为零时,该位置1。
符号位:表示最近所处理的数据的最高位(MSB)的状态。
CARRY BIT:如果最新处理的数据产生的位数超出MPU的处理能力(因此结果不正确),则置为1。
溢出位:如果一个最大的数的结果的最高位从0变为1,或者一个最小数的结果的标志位从1变为0,表示数据溢出。
逻辑操作位(RLO):作为复杂布尔逻辑的每一步的运算的结果。
图3.2 MPU的数据处理模型
地址寄存器
MPU用地址寄存器作为目前正在使用的内存的起始地址,包括用户程序的内存区域和各种可寻址内存区域。
MPU的功能是接收、分析、处理和传送数据,处理器的数据模型如下图:
MPU的能力通常由两个指标判定:位数和时钟速度。位数目前有8-,16-,32-,也有64位的。时钟从1MHZ到300MHZ,大部分PLC是8位和4M的,有一些是16位和33MHZ的。OpenPLC采用的比较多的是INTEL的处理器,INTEL的各种MPU的能力如下:
Micro-Processor Bit Size(bit) Clock Speed(MHz)
8085 8 1
8086 16 4.77
80186 16 8
80286 16 12.5
80386 32 33
80486 32 50
Pentium 32/64 200
图中的CONTROL SECTION是处理器的心脏,由控制单元、算法逻辑单元和一些临时寄存器组成,控制SECTION决定了操作的功能、顺序和运行时间。
输入扫描区将扫描输入区的状态并将单个的输入状态放在RAM中,分析后,逻辑扫描功能(通过梯形图程序)将输出扫描区更新为合适的值,然后,输出将被扫描,并更新。输出的状态根据逻辑分析的结构确定是改变或保留,输出状态取决于CPU的输出状态信号。
图3.2也给出了处理器的其它功能。
1.2 OpenPLC程序扫描周期
每个OpenPLC的程序都是由三个运行周期组成的:1) 输入扫描,2) 程序扫描,3) 输出扫描。整个程序的运行时间有CPU的运行速度和程序的大小决定。对于高速的CPU和不太长的程序,往往周期在1毫秒之内。
扫描通常是连续进行的,先读取输入状态,再经过评估和执行控制逻辑,然后在刷新输出。
需要指出的是, 上述每个周期的三个部分的程序,即,输入、程序和输出扫描是独立的功能,也就是说,在程序扫描期间或输出扫描期间,如果输入发生了变化,只有在下一个周期内才会被MPU所知道;而程序扫描期间对输出状态的变化,也只有到输出扫描期间才会真实地改变到外部的输出器件中。如果输入信号的变化比扫描周期快,如在程序扫描时变化了,但在下一个输入周期之前由回复到以前的状态,则信号可能会被漏读,从而造成逻辑的错误。
在程序扫描周期内,对于一个梯形图来说,通常扫描是从左到右、从上到下的(大部分PLC都是采取这种方式,如AB即如此;但是有的OPENPLC如合控电气的P11系列和小型系列,则是按列扫描,从上到下,再从下到上,如此进行的;在PLC制造商中,SCHNEIDER的MODICON也是按列扫描的,)。
扫描周期的三个过程是周而复始的,内部的处理器有一个信号,被称为EOS信号,(end of scan),是用来表示每次扫描周期的结束的。通常,整个梯形图的扫描时间从几十分之一毫秒到几十个毫秒之间。对于一个固定的PLC来说,扫描时间取决于两个因素:1)用于存放控制程序的内存数量,2)程序所使用的指令类型(因为每个指令的执行时间都不同)。
远程I/O的采用会增加扫描时间,因为扫描周期中包含了与远程I/O通讯的时间。同样,监控程序的扫描时间也会较长,因为要将线圈和触点的状态送到显示器件上去。
图3.3 PLC程序扫描周期的三个阶段
对于更高速度的扫描要求来说,除了采用更快的CPU外,还可以采用一些特别的软件编程方法来解决,使得比如说5毫秒的周期可以满足0.5毫秒的扫描要求。中断是快速响应信号的一个方法。还有对于瞬态脉冲信号,可以采用脉宽延长的方式,但如果脉冲数量多,则此法不可行。