CN101211172A - 一种采用缓冲模式的生产线实时数据采集方法 - Google Patents
一种采用缓冲模式的生产线实时数据采集方法 Download PDFInfo
- Publication number
- CN101211172A CN101211172A CNA2007101729625A CN200710172962A CN101211172A CN 101211172 A CN101211172 A CN 101211172A CN A2007101729625 A CNA2007101729625 A CN A2007101729625A CN 200710172962 A CN200710172962 A CN 200710172962A CN 101211172 A CN101211172 A CN 101211172A
- Authority
- CN
- China
- Prior art keywords
- data
- plc
- module
- register
- enter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
一种涉及工业领域中现场实时信息数据采集方法,尤旨一种在现场数据采集过程中采用在可编程逻辑控制器PLC中做缓存、人机界面HMI上位机轮询的方法,主要应用于工业现场环境下确保其数据不丢失的实时采集PLC中的重要数据的一种采用缓冲模式的生产线实时数据采集方法。该方法包括:可编程逻辑控制器PLC数据供应程序设计和人机界面HMI数据轮询程序设计两大部分;主要解决如何采集PLC中的实时数据和数据不丢失等有关技术问题。本发明的积极效果是:实现了采集PLC中的实时数据,在遇通讯网络中断或上位机人机界面HMI出现故障时,数据不丢失,具有使用方便、控制简捷有效等优点。
Description
技术领域
本发明涉及一种工业领域中现场实时信息数据采集方法,尤旨一种在现场数据采集过程中采用在可编程逻辑控制器PLC(Programmable Logic Controller)中做缓存、人机界面HMI(HumanMachine Interface)上位机轮询的方法,主要应用于工业现场环境下确保其数据不丢失的实时采集PLC中的重要数据。
背景技术
随着科学技术的发展,在工业领域中机器的运作不再是密闭的黑匣子,越来越多的自动控制核心处理单元已经变得可监控化和可记录化。目前,自动化程度较高的工厂都采用大大小小的PLC作为其某个生产单元的主控制器,伴随着这些PLC一般都会有功能强弱不同的专用HMI上位机软件,用来监控PLC的运作和关键数据的采集记录。
一般典型的HMI的数据采集方法都是为某个所要发生的数据建立一个事件(Event),如为某个PLC中的寄存器绑定一个事件,该事件触发(Trigger)的条件是这个寄存器的值发生变化,事件触发以后一般都是执行一段脚本,将相应的信息作为监控或记入到数据库中,如下表5.2所示意的点值变化和触发的情况。
数据值变化触发示意表
类别 | 时间点1 | 时间点2 | 时间点3 | 时间点4 | 时间点5 | 时间点6 |
某点值 | 0208 | 0208 | 0209 | 0209 | 0210 | 0210 |
是否触发记录 | 不触发 | 不触发 | 触发 | 不触发 | 触发 | 不触发 |
很明显,理论上当值0208在时间点3和时间点5的时候,分别变为0209和0210,因此先后二次触发这个绑定的事件。但事实上,由于HMI上位机软件时常会因为PLC与HMI上位机通讯中断、PLC中数值变化过快、基于PC的HMI上位机自身系统不稳定等等原因错过某些变化的值,以致造成大量关键性数据的丢失。如下表当PLC与HMI上位机通讯中断时,时间点3数据变化的某个值将被丢失:
类别 | 时间点1 | 时间点2 | 时间点3 | 时间点4 | 时间点5 | 时间点6 |
某点值 | 0208 | 0208 | 0209(丢失) | 0209 | 0210 | 0210 |
通讯状况 | 良好 | 中断 | 中断 | 中断 | 中断 | 良好 |
是否触发记录 | 不触发 | 不触发 | 不触发 | 不触发 | 不触发 | 触发 |
因此,在这种情况下,研究开发一种不丢失数据的可编程逻辑控制器PLC中的重要数据实时采集的方法就显得具有非常重要的实用意义。
发明内容
为了克服上述不足之处,本发明的主要目的旨在提供一种确保数据不丢失的实时采集可编程逻辑控制器PLC中的数据的方法;该方法通过利用可编程逻辑控制器PLC多余的寄存器作为数据缓冲池,将发生的数据先不让人机界面HMI读到,而是按次序,加上时间、生产线、工位等信息,一一放入缓冲池;然后按先进先出的原则,把数据放入与人机界面HMI的接口处;并与人机界面HMI取数据约定控制信号,即一些状态的标志位,用PLC的位寄存器,使人机界面HMI与可编程逻辑控制器PLC双方均可读写;并可以避免数据丢失的一种采用缓冲模式的生产线实时数据采集方法。
本发明要解决的技术问题是:主要解决如何采集PLC中的实时数据,确保在通讯网络中断或上位机HMI出现故障时数据不丢失等有关技术问题。
本发明解决其技术问题所采用的技术方案是:该方法通过可编程逻辑控制器PLC为生产单元的主控制器,和专用人机界面HMI为上位机软件,用来监控PLC的运作和关键数据的采集记录,完成自动控制核心处理单元的监控化和记录化,该方法利用可编程逻辑控制器PLC多余的寄存器作为数据缓冲池,分别在人机界面HMI和可编程逻辑控制器PLC二端都开发一段程序,并定义通讯接口,然后,可编程逻辑控制器PLC端不停的把变化的数据存入缓冲中去,人机界面HMI端则不停读取通讯接口上的数据;该实时数据采集方法至少包括:可编程逻辑控制器PLC数据供应程序设计和人机界面HMI数据轮询程序设计两大部分;其中:
A)、所述可编程逻辑控制器PLC数据供应程序设计是用可编程逻辑控制器PLC多余的寄存器作为数据缓冲池,将发生的数据先不让人机界面HMI读到,而是按次序,加上时间、生产线、工位信息,一一放入缓冲池;然后按先进先出的原则,把数据放入与人机界面HMI的接口处;并与人机界面HMI取数据约定控制信号,为状态的标志位,用可编程逻辑控制器PLC的位寄存器,达到人机界面HMI与可编程逻辑控制器PLC双方均可读写;当有数据变化时,记录到数据缓冲池中去,不停的判别到数据缓冲池是否有数据,同时判别通讯接口处数据是否被取走;如果数据缓冲池中有数据且通讯接口处数据被取走,则立即往通讯接口处送上数据缓冲池中的最先进来的数据;该可编程逻辑控制器PLC数据供应程序设计的具体工作步骤是:
步骤1.开始A
初始化开始A;
步骤2.判断是否有变化的新数据
执行完开始A模块后,则进入判断是否有变化的新数据模块;如果是有变化的新数据,则进入将变化的数据记录到数据缓冲池内;如果没有变化的新数据,则进入清控制段寄存器R1-R5和清数据段寄存器R6-R30模块;
步骤3.将变化的数据记录到数据缓冲池内
执行完将变化的数据记录到数据缓冲池内模块后,则进入清控制段寄存器R1-R5和清数据段寄存器R6-R30模块;
步骤4.判断缓冲池内有数据?
执行完清控制段寄存器R1-R5和清数据段寄存器R6-R30模块后,则进入判断缓冲池内有数据模块;如果缓冲池内有数据,则进入判断标志位R1为“1”A模块;如果缓冲池内没有数据,则进入结束A模块;
步骤5.判断标志位R1为“1”A?
如果标志位R1是“1”,则进入结束B模块;如果标志位R1不是“1”,则进入将缓冲池内数据复制到寄存器R6-R30中模块;
步骤6.置控制段寄存器R1值为“1”
执行完将缓冲池内数据复制到寄存器R6-R30中模块后,则进入置控制段寄存器R1值为“1”模块;
步骤7.将缓冲池内刚才已复制的数据删除,将寄存器读地址指针减25,下移到下一笔数据的首地址
执行完置控制段寄存器R1值为“1”模块后,则进入将缓冲池内刚才已复制的数据删除,将寄存器读地址指针减25,下移到下一笔数据的首地址模块;
步骤8.结束C
执行完将缓冲池内刚才已复制的数据删除,将寄存器读地址指针减25,下移到下一笔数据的首地址(20)模块后,则进入结束C(21)模块;
B)、所述人机界面HMI数据轮询程序设计是用循环程序完成的,循环体内程序是被不停的执行的,一旦判别标志位已置,表明数据已准备好,判别数据的有效性,若有效则将数据记入数据库,如无效,则记入事务日志,为维护人员日后分析;该人机界面HMI数据轮询程序设计的具体工作步骤是:
步骤1.开始B
初始化开始B;
步骤2.初始化各变量参数状态
执行完开始B模块后,则进入初始化各变量参数状态;
步骤3.判变量X,是否循环?
执行完初始化各变量参数状态模块后,则进入循环体中的判变量X,是否循环模块;如果变量X,是循环,则进入判断标志位R1为“1”B模块;如果变量X,不是循环,则进入结束D模块;
步骤4.判断标志位R1为“1”B?
如果标志位R1是“1”,则进入判别数据是否有效模块;如果标志位R1不是“1”,则进入无条件延时一秒模块;
步骤5.判别数据是否有效?
如果数据是有效,则进入将数据记入数据库中模块,如果数据无效,则进入将存入事务日志,待日后维护人员分析模块;
步骤6.将存入事务日志,待日后维护人员分析
执行完将存入事务日志,待日后维护人员分析模块后,则进入无条件延时一秒模块;
步骤7.置控制段寄存器R1值为“0”
执行完将数据记入数据库中模块后,则进入置控制段寄存器R1值为“0”模块;
步骤8.无条件延时一秒
执行完置控制段寄存器R1值为“0”模块后,则进入无条件延时一秒模块;
步骤9.循环
执行完无条件延时一秒模块后,则反馈进入循环体中的判变量X,是否循环模块。
本发明的有益效果是:该方法利用可编程逻辑控制器PLC多余的寄存器作为数据缓冲池,分别在人机界面HMI和可编程逻辑控制器PLC二端都开发一段程序,并定义通讯接口,实现了采集PLC中的实时数据,具有在遇通讯网络中断或上位机人机界面HMI出现故障时数据不丢失等优点。
附图说明
下面结合附图和实施例对本发明进一步说明。
附图1为本发明可编程逻辑控制器PLC数据供应程序设计流程示意图;
附图2为本发明人机界面HMI数据轮询程序设计流程示意图;
附图3为本发明数据缓冲池监控界面示意图;
附图中标号说明:
10-开始A;
11-是否有变化的新数据;
12-清控制段寄存器R1-R5和清数据段寄存器R6-R30;
13-将变化的数据记录到数据缓冲池内;
14-缓冲池内有数据;
15-结束A;
16-标志位R1为“1”A;
17-将缓冲池内数据复制到寄存器R6-R30中;
18-结束B;
19-置控制段寄存器R1值为“1”;
20-将缓冲池内刚才已复制的数据删除,将寄存器读地址指针减25,下移到下一笔数据的首地址;
21-结束C;
30-开始B;
31-初始化各变量参数状态;
32-判变量X,是否循环;
33-结束D;
34-标志位R1为“1”B;
35-判别数据是否有效;
36-将存入事务日志,待日后维护人员分析;
37-将数据记入数据库中;
38-置控制段寄存器R1值为“0”;
39-无条件延时一秒;
具体实施方式
请参阅附图1、2、3所示,本发明的方法通过可编程逻辑控制器PLC为生产单元的主控制器,和专用人机界面HMI为上位机软件,用来监控PLC的运作和关键数据的采集记录,完成自动控制核心处理单元的监控化和记录化,该方法利用可编程逻辑控制器PLC多余的寄存器作为数据缓冲池,分别在人机界面HMI和可编程逻辑控制器PLC二端都开发一段程序,并定义通讯接口,然后,可编程逻辑控制器PLC端不停的把变化的数据存入缓冲中去,人机界面HMI端则不停读取通讯接口上的数据;该实时数据采集方法至少包括:可编程逻辑控制器PLC数据供应程序设计和人机界面HMI数据轮询程序设计两大部分;其中:
A)、所述可编程逻辑控制器PLC数据供应程序设计是用可编程逻辑控制器PLC多余的寄存器作为数据缓冲池,将发生的数据先不让人机界面HMI读到,而是按次序,加上时间、生产线、工位信息,一一放入缓冲池;然后按先进先出的原则,把数据放入与人机界面HMI的接口处;并与人机界面HMI取数据约定控制信号,为状态的标志位,用可编程逻辑控制器PLC的位寄存器,达到人机界面HMI与可编程逻辑控制器PLC双方均可读写;当有数据变化时,记录到数据缓冲池中去,不停的判别到数据缓冲池是否有数据,同时判别通讯接口处数据是否被取走;如果数据缓冲池中有数据且通讯接口处数据被取走,则立即往通讯接口处送上数据缓冲池中的最先进来的数据;该可编程逻辑控制器PLC数据供应程序设计的具体工作步骤是:
步骤1.开始A10
初始化开始A10;
步骤2.判断是否有变化的新数据11
执行完开始A10模块后,则进入判断是否有变化的新数据11模块;如果是有变化的新数据,则进入将变化的数据记录到数据缓冲池内13;如果没有变化的新数据,则进入清控制段寄存器R1-R5和清数据段寄存器R6-R30 12模块;
步骤3.将变化的数据记录到数据缓冲池内13
执行完将变化的数据记录到数据缓冲池内13模块后,则进入清控制段寄存器R1-R5和清数据段寄存器R6-R30 12模块;
步骤4.判断缓冲池内有数据14 ?
执行完清控制段寄存器R1-R5和清数据段寄存器R6-R30 12模块后,则进入判断缓冲池内有数据14模块;如果缓冲池内有数据,则进入判断标志位R1为“1”A16模块;如果缓冲池内没有数据,则进入结束A15模块;
步骤5.判断标志位R1为“1”A16 ?
如果标志位R1是“1”,则进入结束B18模块;如果标志位R1不是“1”,则进入将缓冲池内数据复制到寄存器R6-R30中17模块;
步骤6.置控制段寄存器R1值为“1”19
执行完将缓冲池内数据复制到寄存器R6-R30中17模块后,则进入置控制段寄存器R1值为“1”19模块;
步骤7.将缓冲池内刚才已复制的数据删除,将寄存器读地址指针减25,下移到下一笔数据的首地址20
执行完置控制段寄存器R1值为“1”19模块后,则进入将缓冲池内刚才已复制的数据删除,将寄存器读地址指针减25,下移到下一笔数据的首地址20模块;
步骤8.结束C21
B)、所述人机界面HMI数据轮询程序设计是用循环程序完成的,循环体内程序是被不停的执行的,一旦判别标志位已置,表明数据已准备好,判别数据的有效性,若有效则将数据记入数据库,如无效,则记入事务日志,为维护人员日后分析;该人机界面HMI数据轮询程序设计的具体工作步骤是:
步骤1.开始B30
初始化开始B30;
步骤2.初始化各变量参数状态31
执行完开始B30模块后,则进入初始化各变量参数状态31;
步骤3.判变量X,是否循环32 ?
执行完初始化各变量参数状态31模块后,则进入循环体中的判变量X,是否循环32模块;如果变量X,是循环,则进入判断标志位R1为“1”B34模块;如果变量X,不是循环,则进入结束D33模块;
步骤4.判断标志位R1为“1”B34 ?
如果标志位R1是“1”,则进入判别数据是否有效35模块;如果标志位R1不是“1”,则进入无条件延时一秒39模块;
步骤5.判别数据是否有效35 ?
如果数据是有效,则进入将数据记入数据库中37模块,如果数据无效,则进入将存入事务日志,待日后维护人员分析36模块;
步骤6.将存入事务日志,待日后维护人员分析36
执行完将存入事务日志,待日后维护人员分析36模块后,则进入无条件延时一秒39模块;
步骤7.置控制段寄存器R1值为“0”38
执行完将数据记入数据库中37模块后,则进入置控制段寄存器R1值为“0”38模块;
步骤8.无条件延时一秒39
执行完置控制段寄存器R1值为“0”38模块后,则进入无条件延时一秒39模块;
步骤9.循环
执行完无条件延时一秒39模块后,则反馈进入循环体中的判变量X,是否循环32模块。
本发明的系统组成与工作原理
本发明提供一种确保数据不丢失的实时采集PLC中的数据的方法,该方法通过利用PLC多余的寄存器作为数据缓冲池,将发生的数据先不让HMI读到,而是按次序,加上时间、生产线、工位等信息,一一放入缓冲池;然后按先进先出的原则,把数据放入与HMI的接口处;并与HMI取数据约定控制信号,即一些状态的标志位,用PLC的位寄存器,使HMI与PLC双方均可读写;这样,可以避免数据的丢失。
本发明利用PLC多余的寄存器作为数据缓冲池,分别在HMI和PLC二端都开发一段程序,并定义通讯接口。然后,PLC端不停的把变化的数据存入缓冲中去,HMI端则不停读取通讯接口上的数据。
HMI部分程序设计的指导思想概括为:循环体内程序是被不停的执行的,一旦判别标志位已置,表明数据已准备好,判别数据的有效性,若有效则将数据记入数据库,如无效,则记入事务日志,供维护人员日后分析。
PLC的该部分程序设计的指导思想概括为:一旦判别到数据缓冲池有数据,且上一笔数据已被取走,立即送上数据缓冲池中的最先进来的数据。
实现方法
软件平台分析
在采集数据之前,先来分析一下软件开发的平台。按二部分来考虑:一是,被采集的对象PLC的软件环境;二是,采集的数据库服务器的软件环境。
PLC的软件环境
PLC的品牌是美国GE FANUC,型号是9030系列,MDL374的CPU,这些决定了PLC的编程工具必须采用GE FANUC Proficy MachineEdition,我们此次开发所用的版本号为Ver.5.50。
数据库服务器的软件环境
数据库服务器是要通过以太网读取PLC中寄存器的数据。因此,采用了GE FANUC公司出品的,与PLC配套的专用软件CIMPLICITY HMI(下文简称HMI)。我们此次开发所用的版本号为Ver.6.1。这套软件中既有专为读取PLC寄存器的通讯协议,又提供了可以开发人机友好界面的平台,其编程语法类似微软的Visual Basic。所以,在工控行业比较受开发者的青睐。
数据寄存器
PLC中根据CPU的型号不同,所拥有的寄存器的类型、数量都不同。寄存器,其实可以理解为高级语言里各种类型的变量。所不同的是高级语言里往往是先定义后使用,变量多少、大小一般不受限制。而GE FANUC系列的PLC的寄存器是固定的,即只有规定的几种类型和规定的最大的数量限制。我们此次采用MDL374的CPU,它拥有I、Q、M、R、AI、AQ等主要的寄存器,其中:
●I为位寄存器,即BIT,用于设备输入映射,只读;最多可达2048个Bit。项目中所有数字量输入的位信号都采用该类寄存器。
●Q为位寄存器,即BIT,用于设备输出映射,可读写;最多可达2048个Bit。项目中所有数字量输出的位信号都采用该类寄存器。
●M为位寄存器,即BIT,用于编程时状态存储,可读写;最多可达4096个Bit。
●R为双字节寄存器,即二个字节或称为一个Word,其值范围为0-FFFF(Hex),是编程时状态存储的主要寄存器,可读写;最多可达32767个。
●AI为双字节寄存器,即二个字节或称为一个Word,其值范围为0-FFFF(Hex),可用于设备输入映射,亦可用于编程时数值存储,可读写;最多可达32767个。项目中串口输入地址即采用该类寄存器。
●AQ为双字节寄存器,即二个字节或称为一个Word,其值范围为0-FFFF(Hex),可用于设备输出映射,亦可用于编程时数值存储,可读写;最多可达32767个。项目中串口输出地址即采用该类寄存器。
这些寄存器无论在PLC还是在HMI中,都被称为点,一个类型加一个具体的地址称为一个点,如“I0001”,“I0002”称为二个输入点;如果连续的地址也可被成为数组点,如“R0301”到“R0310”,从R301首地址开始的10个点的数组点。
经过我们的分析,双字节寄存器可以用来存储ASCII码字符串,每个双字节寄存器可以存储2个ASCII字符,如R1的值为4131(Hex),其代表着字母和数字“A1”。HMI通过组态、建单点、数组点等方式,数据库服务器就可以方便的读取上述各种类型的寄存器的值。因此,在PLC寄存器中相同类型的连续地址,采用ASCII码值的方式可以让HMI读取到一串字符串,如在PLC中R1-R5连续地址,其值如下表所示。
数据存储示意表
软件环境 | R1 | R2 | R3 | R4 | R5 |
在PLC中,十六进制显示 | 4A53 | 3631 | 3236 | 3032 | 3038 |
在HMI中建数组点以后,以文本方式显示 | JS61260208 |
这正好用来传送扫描所得的二维码数据以及其他一些信息。
在实现这一切之前,不得不先考虑一下PLC的寄存器资源问题。因为,PLC寄存器的资源毕竟是有限的。
寄存器资源的规划
上文已经对项目使用型号的PLC的主要寄存器进行详细的解释,接下来就对寄存器进行分析,选出可作缓冲池的寄存器类型和计算最大容量。
首先,我们认为I、Q、M等位寄存器显然不适合用作存储字符串数据,而且数量极少,又要被程序使用,故放弃。
接着,R寄存器为双字节类型,可以存储字符串数据。虽然有3.2万余,但是,编程本身需要使用,而且使用量不确定,故我们将其作为可考虑的备选方案。
最后,AI、AQ寄存器也是双字节类型,可以存储字符串数据,各有32767个,加起来有6.5万之多。但是,要用它作为串口的映射地址,故我们也将其作为可考虑的备选方案。
通过我们的计算,发现一个串口用掉8个AI寄存器和8个AQ寄存器。一台PLC管理一条生产线,一条生产线十几、三十个工位不等。而且,并不是所有工位都需要扫描二维码。目前,只有关键工位才需要。因此,假设每条生产线有最多有100个工位,每个工位都需要扫描二维码,即都需要8个AI寄存器和8个AQ寄存器作为串口地址的映射,这样最多也就消耗掉800个AI寄存器和800个AQ寄存器,这根本用不完AI寄存器和AQ寄存器。所以,我们如下表这样设计。
表AI、AQ寄存器使用设计
用途 | AI | AQ |
缓冲池 | AI00001-AI30000 | AQ00001-AQ30000 |
串口映射 | AI30001-AI32000 | AQ30001-AQ32000 |
这样,就有了60K的双字节寄存器可以用于数据缓冲池。
HMI与PLC的接口定义
有了数据缓冲池,我们还需要定义一个HMI和PLC之间逐条传输数据的接口。为了满足HMI和PLC都可以读写的要求,我们在PLC中划分出一段连续的地址作为接口的实际地址。
假设R1-R5做控制位,即上文提到的标志位,而R6-R20作为数据,存二维码、生产线、工位等字符串信息,数据结构定义如下表所示。
表 HMI与PLC的接口定义
寄存器地址段 | 寄存器数量 | 说明 | PLC操作 | HMI操作 |
R1 | 1 | 新数据的控制位,1代表PLC已把R6-R30新数据放置好,可供HMI读。 | 置1 | 清0 |
R2-R5 | 4 | 预留。 | / | / |
R6 | 1 | 生产线代号。 | 写 | 读 |
R7 | 1 | 工位代号。 | ||
R8-R10 | 3 | 数据发生的年(二位)、月(二位)、日(二位)。 | ||
R11-R13 | 3 | 数据发生小时(24小时制,即00-23)、分钟(二位)、秒(二位)。 | ||
R14 | 1 | 预留。 | ||
R15-R22 | 8 | 零部件的二维码编号,如JS61260208,实际一般占用5个寄存器,已考虑了预留量。 | ||
R23-R30 | 8 | 如果是装配工位,有主部件的二维码编号,如KY61260208,也已考虑了预留量。 |
参照这样一个接口定义,每条数据占用25个寄存器,可以计算一下:
60,000(总寄存器数量)÷25(每条数据占用数量)=2,400(条数据)
所以,最多可以存储2400条数据,从实际情况来估算,每条生产线最多也就十个工位需要追溯,这些工位每分钟都发生一条数据,则:
2,400(条数据)÷10(工位数量)=240(分钟)
240(分钟)÷60=4(小时)
因此,参照我们设计的这套方式,系统的每条生产线的PLC可以缓冲4小时数据,即网络可以中断长达四小时,系统可以保证不丢数据,完全能实现设计目标,满足用户的此项要求。
程序结构
方式、方案、接口等指导了程序的设计与编程,我们就上述思想,设计了PLC数据供应的程序、HMI轮询的程序、缓冲池的监控界面。
PLC数据供应程序设计
我们把PLC的该部分程序设计的指导思想概括为:当有数据变化时,记录到数据缓冲池中去。不停的判别到数据缓冲池是否有数据,同时判别通讯接口处数据是否被取走。如果数据缓冲池中有数据且通讯接口处数据被取走,则立即往通讯接口处送上数据缓冲池中的最先进来的数据。
由于PLC的原理关系,图1程序是被从开始到结束、再有开始到结束……如此一遍遍不停的反复执行的。
HMI数据轮询程序设计
我们把HMI的该部分程序设计的指导思想概括为:循环体内程序是被不停的执行的,一旦判别标志位已置,表明数据已准备好,判别数据的有效性,若有效则将数据记入数据库,如无效,则记入事务日志,供维护人员日后分析。
有效性主要判别年份应为数字、月份应在01-12之间的数字,再根据年份月份判别日期的正确性,以及生产线代号、工位代号等是否正确,最后按照编码原则判别编码的正确性。
如图2所示,我们所设计的这部分的程序结构框图,由于是高级语言程序,所以要做一个始终循环的结构。
其中,变量X控制循环体是否继续循环。其类型是全局性的,通过另外的程序控制其值,主要是提供一个循环控制开关,目的是为了方便维护,如更修改程序等。
在最后的,无条件延时一秒,是为了缓解程序执行速度,在此期间,可以释放计算机CPU来计算其他程序。实践证明,不加这一秒时,CPU使用率为100%,而增加这一秒CPU的使用率只比平时多了2%。
同时,为了可以监控到该程序在时刻不停的运行,在循环体内可以做一个标志位,在每次循环时,置相反状态值,增加类似下面的代码:
IF booRunState then’假设booRunState为Boolean类型,代表程序运行的状态
BooRunState=0
Else
BooRunState=1
End If
这样配合一秒的延时,可以制造出一秒的方波来。在界面上做一个指示灯,根据该值的变化使指示灯一亮一灭,维护人员可以方便监控到该程序的状态。
HMI缓冲池监控界面设计
请参阅附图3所示,在PLC中有了缓冲池,有效降低数据丢失发生几率。但是,缓冲池相对维护人员来说是不可见的。所以,为了更直观的表示PLC中数据缓冲池的使用情况,我们开发了简单图示比例界面,如图3所示为AI寄存器的缓冲池使用情况。
其中,它的读指针值为1501,即指向以AI1501为首地址的数据段开始读,而写指针值为7501,即指向以AI7501为首地址的数据段开始写,所以它的使用率是:
7501-1501=6000,6000÷25(每条数据占用数量)=240(条数据)
6000÷30000=0.2,即20%的使用率。
同样的,AQ寄存器的使用我们也设计这样的图示来表达其缓冲池使用情况,本文不再复述。
项目概要介绍
系统结构的每一条线生产线采用一套PLC单独控制。各生产线PLC分为主站和从站:主站最为简单,只有CPU模块和ProfibusDP网卡及一些辅助设备;从站设置在工位附近,它们通过ProfibusDP总线与主站相连。
数据库服务器和维护计算机放置在机房中。数据库服务器运行数据采集程序,采集各条生产PLC中的数据,存入数据库中。数据库服务器是系统中最重要的部分,是系统的意义所在,故采用了双机冷备份、磁盘阵列等多种方式保护该单元的运行。维护计算机主要用来设置参数、数据维护、监控各生产线PLC等,用户可按实际使用情况增减维护计算机的数量。
根据用户需求,在办公室的固定几个点摆放了一些计算机,用于数据查询。
将数据库服务器、维护计算、查询计算机和各生产线的PLC都通过以太网相连。由于地域较大,所以物理上,需要经过多个交换机、路由器等,而逻辑上采用不同网段、防火墙等技术,使连通与隔离都作了适当设置。
数据产生于各个工位,自动映射到PLC的CPU的内存里,上位计算机运行HMI程序读取各个生产线PLC的CPU的内存里采集相应的数据,并记录到数据库中。客户端查询访问数据库中的数据。
Claims (1)
1.一种采用缓冲模式的生产线实时数据采集方法,该方法通过可编程逻辑控制器PLC为生产单元的主控制器,和专用人机界面HMI为上位机软件,用来监控PLC的运作和关键数据的采集记录,完成自动控制核心处理单元的监控化和记录化,其特征在于:该方法利用可编程逻辑控制器PLC多余的寄存器作为数据缓冲池,分别在人机界面HMI和可编程逻辑控制器PLC二端都开发一段程序,并定义通讯接口,然后,可编程逻辑控制器PLC端不停的把变化的数据存入缓冲中去,人机界面HMI端则不停读取通讯接口上的数据;该实时数据采集方法至少包括:可编程逻辑控制器PLC数据供应程序设计和人机界面HMI数据轮询程序设计两大部分;其中:
A)、所述可编程逻辑控制器PLC数据供应程序设计是用可编程逻辑控制器PLC多余的寄存器作为数据缓冲池,将发生的数据先不让人机界面HMI读到,而是按次序,加上时间、生产线、工位信息,一一放入缓冲池;然后按先进先出的原则,把数据放入与人机界面HMI的接口处;并与人机界面HMI取数据约定控制信号,为状态的标志位,用可编程逻辑控制器PLC的位寄存器,达到人机界面HMI与可编程逻辑控制器PLC双方均可读写;当有数据变化时,记录到数据缓冲池中去,不停的判别到数据缓冲池是否有数据,同时判别通讯接口处数据是否被取走;如果数据缓冲池中有数据且通讯接口处数据被取走,则立即往通讯接口处送上数据缓冲池中的最先进来的数据;该可编程逻辑控制器PLC数据供应程序设计的具体工作步骤是:
步骤1.开始A(10)
初始化开始A(10);
步骤2.判断是否有变化的新数据(11)
执行完开始A(10)模块后,则进入判断是否有变化的新数据(11)模块;如果是有变化的新数据,则进入将变化的数据记录到数据缓冲池内(13);如果没有变化的新数据,则进入清控制段寄存器R1-R5和清数据段寄存器R6-R30(12)模块;
步骤3.将变化的数据记录到数据缓冲池内(13)
执行完将变化的数据记录到数据缓冲池内(13)模块后,则进入清控制段寄存器R1-R5和清数据段寄存器R6-R30(12)模块;
步骤4.判断缓冲池内有数据(14)?
执行完清控制段寄存器R1-R5和清数据段寄存器R6-R30(12)模块后,则进入判断缓冲池内有数据(14)模块;如果缓冲池内有数据,则进入判断标志位R1为“1”A(16)模块;如果缓冲池内没有数据,则进入结束A(15)模块;
步骤5.判断标志位R1为“1”A(16)?
如果标志位R1是“1”,则进入结束B(18)模块;如果标志位R1不是“1”,则进入将缓冲池内数据复制到寄存器R6-R30中(17)模块;
步骤6.置控制段寄存器R1值为“1”(19)
执行完将缓冲池内数据复制到寄存器R6-R30中(17)模块后,则进入置控制段寄存器R1值为“1”(19)模块;
步骤7.将缓冲池内刚才已复制的数据删除,将寄存器读地址指针减25,下移到下一笔数据的首地址(20)
执行完置控制段寄存器R1值为“1”(19)模块后,则进入将缓冲池内刚才已复制的数据删除,将寄存器读地址指针减25,下移到下一笔数据的首地址(20)模块;
步骤8.结束C(21)
执行完将缓冲池内刚才已复制的数据删除,将寄存器读地址指针减25,下移到下一笔数据的首地址(20)模块后,则进入结束C(21)模块;
B)、所述人机界面HMI数据轮询程序设计是用循环程序完成的,循环体内程序是被不停的执行的,一旦判别标志位已置,表明数据已准备好,判别数据的有效性,若有效则将数据记入数据库,如无效,则记入事务日志,为维护人员日后分析;该人机界面HMI数据轮询程序设计的具体工作步骤是:
步骤1.开始B(30)
初始化开始B(30);
步骤2.初始化各变量参数状态(31)
执行完开始B(30)模块后,则进入初始化各变量参数状态(31);
步骤3.判变量X,是否循环(32)?
执行完初始化各变量参数状态(31)模块后,则进入循环体中的判变量X,是否循环(32)模块;如果变量X,是循环,则进入判断标志位R1为“1”B(34)模块;如果变量X,不是循环,则进入结束D(33)模块;
步骤4.判断标志位R1为“1”B(34)?
如果标志位R1是“1”,则进入判别数据是否有效(35)模块;如果标志位R1不是“1”,则进入无条件延时一秒(39)模块;
步骤5.判别数据是否有效(35)?
如果数据是有效,则进入将数据记入数据库中(37)模块,如果数据无效,则进入将存入事务日志,待日后维护人员分析(36)模块;
步骤6.将存入事务日志,待日后维护人员分析(36)
执行完将存入事务日志,待日后维护人员分析(36)模块后,则进入无条件延时一秒(39)模块;
步骤7.置控制段寄存器R1值为“0”(38)
执行完将数据记入数据库中(37)模块后,则进入置控制段寄存器R1值为“0”(38)模块;
步骤8.无条件延时一秒(39)
执行完置控制段寄存器R1值为“0”(38)模块后,则进入无条件延时一秒(39)模块;
步骤9.循环
执行完无条件延时一秒(39)模块后,则反馈进入循环体中的判变量X,是否循环(32)模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101729625A CN101211172A (zh) | 2007-12-25 | 2007-12-25 | 一种采用缓冲模式的生产线实时数据采集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101729625A CN101211172A (zh) | 2007-12-25 | 2007-12-25 | 一种采用缓冲模式的生产线实时数据采集方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101211172A true CN101211172A (zh) | 2008-07-02 |
Family
ID=39611248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101729625A Pending CN101211172A (zh) | 2007-12-25 | 2007-12-25 | 一种采用缓冲模式的生产线实时数据采集方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101211172A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364088B (zh) * | 2008-09-12 | 2010-12-29 | 深圳市合信自动化技术有限公司 | 工业人机界面变量访问方法及系统 |
CN101673421B (zh) * | 2009-10-12 | 2011-12-14 | 武汉钢铁(集团)公司 | 一种生产线设备运转时间自动记录系统 |
CN101404676B (zh) * | 2008-11-06 | 2012-06-06 | 丹东华通测控有限公司 | 一种低压配电系统大数据量调用的处理方法 |
CN103092150A (zh) * | 2011-08-10 | 2013-05-08 | 马尔和赫兰股份有限公司 | 有效的气溶胶罐生产线 |
CN103440279A (zh) * | 2013-08-13 | 2013-12-11 | 江苏华大天益电力科技有限公司 | 一种数据采集过程中的数据适配器及其数据适配方法 |
CN103809502A (zh) * | 2012-11-14 | 2014-05-21 | 欧姆龙株式会社 | 控制器及程序 |
CN104460488A (zh) * | 2014-11-04 | 2015-03-25 | 山东中烟工业有限责任公司 | 一种提高加料机过程数据分析精度的方法 |
CN105652707A (zh) * | 2015-12-14 | 2016-06-08 | 重庆川仪自动化股份有限公司 | 一种信号采集方法、装置及系统 |
CN107390625A (zh) * | 2017-08-25 | 2017-11-24 | 湖南三德科技股份有限公司 | 一种煤样检测系统中的plc数据读写方法及系统 |
CN107908166A (zh) * | 2017-11-20 | 2018-04-13 | 上海亚太计算机信息系统有限公司 | 一种基于工业互联网的汽车制造mes数据采集系统 |
CN108398918A (zh) * | 2018-02-11 | 2018-08-14 | 湖南三德科技股份有限公司 | 一种plc信息流转方法、存储器、plc及系统 |
CN111930721A (zh) * | 2020-09-11 | 2020-11-13 | 山东钢铁集团日照有限公司 | 一种多属性连续性工业生产数据的整合方法 |
CN113009876A (zh) * | 2021-02-26 | 2021-06-22 | 共享智能铸造产业创新中心有限公司 | 系统集成时的数据确信方法 |
-
2007
- 2007-12-25 CN CNA2007101729625A patent/CN101211172A/zh active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364088B (zh) * | 2008-09-12 | 2010-12-29 | 深圳市合信自动化技术有限公司 | 工业人机界面变量访问方法及系统 |
CN101404676B (zh) * | 2008-11-06 | 2012-06-06 | 丹东华通测控有限公司 | 一种低压配电系统大数据量调用的处理方法 |
CN101673421B (zh) * | 2009-10-12 | 2011-12-14 | 武汉钢铁(集团)公司 | 一种生产线设备运转时间自动记录系统 |
CN103092150A (zh) * | 2011-08-10 | 2013-05-08 | 马尔和赫兰股份有限公司 | 有效的气溶胶罐生产线 |
CN103809502A (zh) * | 2012-11-14 | 2014-05-21 | 欧姆龙株式会社 | 控制器及程序 |
CN103440279A (zh) * | 2013-08-13 | 2013-12-11 | 江苏华大天益电力科技有限公司 | 一种数据采集过程中的数据适配器及其数据适配方法 |
CN104460488A (zh) * | 2014-11-04 | 2015-03-25 | 山东中烟工业有限责任公司 | 一种提高加料机过程数据分析精度的方法 |
CN105652707A (zh) * | 2015-12-14 | 2016-06-08 | 重庆川仪自动化股份有限公司 | 一种信号采集方法、装置及系统 |
CN105652707B (zh) * | 2015-12-14 | 2019-04-19 | 重庆川仪自动化股份有限公司 | 一种信号采集方法、装置及系统 |
CN107390625A (zh) * | 2017-08-25 | 2017-11-24 | 湖南三德科技股份有限公司 | 一种煤样检测系统中的plc数据读写方法及系统 |
CN107908166A (zh) * | 2017-11-20 | 2018-04-13 | 上海亚太计算机信息系统有限公司 | 一种基于工业互联网的汽车制造mes数据采集系统 |
CN107908166B (zh) * | 2017-11-20 | 2020-10-09 | 上海亚太计算机信息系统有限公司 | 一种基于工业互联网的汽车制造mes数据采集系统 |
CN108398918A (zh) * | 2018-02-11 | 2018-08-14 | 湖南三德科技股份有限公司 | 一种plc信息流转方法、存储器、plc及系统 |
CN111930721A (zh) * | 2020-09-11 | 2020-11-13 | 山东钢铁集团日照有限公司 | 一种多属性连续性工业生产数据的整合方法 |
CN113009876A (zh) * | 2021-02-26 | 2021-06-22 | 共享智能铸造产业创新中心有限公司 | 系统集成时的数据确信方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101211172A (zh) | 一种采用缓冲模式的生产线实时数据采集方法 | |
US11644803B2 (en) | Control system database systems and methods | |
CN101354758B (zh) | 整合实时数据和关系数据的系统和方法 | |
CN103592880B (zh) | 用于大型工程类设备的智能控制器系统 | |
Cota et al. | A modification of the process interaction world view | |
CN103384268A (zh) | 一种基于网络的嵌入式集成制造数据采集终端 | |
CN104104674A (zh) | 设备传感器的多协议分布式数据采集控制系统及方法 | |
CN111915135A (zh) | 一种生产运营监管系统 | |
CN101315558A (zh) | 用于存取与过程控制系统有关的信息的设备及方法 | |
CN108418849A (zh) | 一种油气管道scada系统 | |
CN101763582A (zh) | 发电厂eam系统的计划检修管理模块 | |
CN102663543A (zh) | 一种用于企业数据统一平台的调度系统 | |
CN110032157A (zh) | 一种仓库控制系统 | |
Wu et al. | The Internet of Things enabled shop floor scheduling and process control method based on Petri nets | |
EP1993016B1 (en) | Embedded historians with data aggregator | |
CN103425093A (zh) | 生产工厂中故障状态自动恢复的方法和系统 | |
CN101685452A (zh) | 数据仓库调度方法及调度系统 | |
CN115391444A (zh) | 一种异构数据采集与交互方法、装置、设备及存储介质 | |
CN202141924U (zh) | 一种沥青搅拌设备的监控系统 | |
CN105227648A (zh) | 一种基于时间桶的地铁综合监控系统时间序列触发方法 | |
CN115755803A (zh) | 一种卷烟生产智能应用平台及应用方法 | |
CN102183952A (zh) | 一种在plc中嵌入非致命故障诊断的方法 | |
CN105512154A (zh) | 一种基于嵌入式数据库的环保数据采集方法及系统 | |
CN102789182A (zh) | 基于arm的风力发电机齿轮箱润滑油在线监测控制平台 | |
CN103455374A (zh) | 一种基于MapReduce的分布式计算方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080702 |