CN112153089A - 一种读写opc数据块的方法 - Google Patents

一种读写opc数据块的方法 Download PDF

Info

Publication number
CN112153089A
CN112153089A CN201910569767.9A CN201910569767A CN112153089A CN 112153089 A CN112153089 A CN 112153089A CN 201910569767 A CN201910569767 A CN 201910569767A CN 112153089 A CN112153089 A CN 112153089A
Authority
CN
China
Prior art keywords
data
opc
reading
block
read
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
Application number
CN201910569767.9A
Other languages
English (en)
Inventor
王绪国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Meishan Iron and Steel Co Ltd
Original Assignee
Shanghai Meishan Iron and Steel Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Meishan Iron and Steel Co Ltd filed Critical Shanghai Meishan Iron and Steel Co Ltd
Priority to CN201910569767.9A priority Critical patent/CN112153089A/zh
Publication of CN112153089A publication Critical patent/CN112153089A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C19/00Electric signal transmission systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种读写OPC数据块的方法,所述***包括统调度模块、事件触发读OPC数据块的功能模块、周期读OPC数据块的功能模块、写OPC数据块的功能模块以及画面配置模块;通过画面进行相应的配置,实现对OPC数据块的读写,便于项目工程人员的应用开发及后期维护。

Description

一种读写OPC数据块的方法
技术领域
本发明涉及一种读写OPC数据块的方法,属于自动化控制技术领域。
背景技术
炼钢生产的控制***,包括基础自动化***、过程控制***(PCS***)、生产执行***(MES***)。过程控制***起到承上启下的作用,一是读取并存储生产过程中基础自动***的实绩数据;二是根据MES***的生产计划、制造标准、目标要求等,通过模型计算,将计算结果下装到基础自动***,控制PLC的动作,实现生产的顺利进行;三是与MES***进行通信。为了保证过程控制***的正常运行,必须确保过程控制***与基础自动化***的通信。国内目前常用的对OPC数据块读写的方法,一是购买成熟的软件,如达涅利公司多数***使用美国Rockwell公司的RSSQL通信软件,该软件经过OPC地址的配置,自动连接OPC相应的数据块,通过对数据库存储过程或表的配置,实现事件触发或周期读取OPC数据块,将数据存储在数据库中或通过存储过程更新数据库的数据,其缺陷不能在此基础上调用其他的应用进程。因此,迫切的需要一种新的方案解决上述技术问题。
发明内容
本发明正是针对现有技术中存在的问题,提供一种读写OPC数据块的方法,提供一种炼钢过程自动化***与OPC之间的通信方法,项目工程人员以及终端用户后期维护,通过画面进行相应的配置,实现对OPC数据块的读写,便于项目工程人员的应用开发及后期维护。
为了实现上述目的,本发明的技术方案如下,一种读写OPC数据块的***,包括***调度模块、事件触发读OPC数据块的功能模块、周期读OPC数据块的功能模块、写OPC数据块的功能模块、画面配置模块;
所述的***调度模块:用于执行事件触发读OPC数据块的功能模块、周期读OPC数据块的功能模块、写OPC数据块的功能模块的启、停等调度管理;
所述的事件触发读OPC数据块的功能模块:用于事件触发读OPC数据块,要包括进程READ_EVENT_OPC_DATA(用于读取OPC事件发生时的数据块数据)及相应的辅助进程(所谓事件触发读OPC数据块,即某一生产事件(如转炉的吹氧结束时间)的发生,在OPC数据块中对应某一数据块,此时的值为Ture(1)或为False(0),在该事件发生,应用程序需要读取一批OPC数据块的值);
所述的周期读OPC数据块的功能模块:用于读取周期数据,包括READ_CYC_OPC_DATA(用于读取周期数据)及相应的辅助进程(所谓周期读OPC数据块,即应用程序定周期读取一批OPC数据块的值,如在转炉吹氧过程中,每间隔一固定时间(2-5秒),读取氧枪高度、氧气流量、氧气压力、吹氧总量等对应的OPC数据块的值);
所述的写OPC数据块的功能模块:用于写OPC数据,包括WRITE_OPC_DATA(用于写OPC数据)及相应的辅助进程(例如,在转炉静态模型计算后,需要将计算的需要的吹氧量写到对应的OPC数据块);
所述的画面配置模块:用于在画面上进行配置需要读、写OPC的相关信息,包括事件触发读OPC数据块配置画面子模块、周期读OPC数据块配置画面子模块、写OPC数据块配置画面子模块。
为了解决上述技术问题,该技术包括如下方法:
一、OPC数据块的读写
(一)事件触发读OPC数据块
在后台数据库有表:
T_TRIGGER:用于存储触发读数据的事件(结构见表1);
T_TRIGGER_BLOCK:用于存储触发需要读取得OPC数据块(结构见表2)。
表1表T_TRIGGER结构
Figure BDA0002110622570000021
Figure BDA0002110622570000031
APP_PROG1、APP_PROG2、APP_PROG3、APP_PROG4,根据应用的要求,可以设计成多个应用程序(,此处只列举4个应用程序),也可以设计成一个,将需要的多个应用程序的功能,包括在一个应用程序中。
表2表T_TRIGGER_BLOCK结构
Figure BDA0002110622570000032
用C语言编写程序(为进程形式)READ_EVENT_OPC_DATA,用于读取OPC事件发生时的数据块数据。事件触发读OPC数据块的流程如下。
1.读取数据库T_TRIGGER中的记录集;
2.转记录集的第一条记录;
3.判断READ_STATUS是否为1,如不为1转12;
(READ_STATUS为1时,读取相应的事件的数据,否则读取相应的事件的数据。)
4.根据记录集记录的OPC_BLOCK,读取OPC对应的数据块;
5.判断读取的数据块的值与录集记录的TRIG_TYPE值是否一致(假定高位触发);
6.如果不一致,转11;
7.如果一致;
8.读取数据库T_TRIGGER_BLOCK;
9.读取对应的OPC数据块的数据;
10.将该事件触发的数据块值置0;
11.将数据存入后台数据库,调用APP_PROG_SAVEDA、应用程序1、调用应用程序2、调用应用程序3、调用应用程序4(此处也可以调用一个进程,其功能包括需要的多个程序的功能);
12.判断是否是该记录集的最后一条记录;
13.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
14.延时Δt(根据不同***的不同要求,一般取值在(50ms-500ms)之间),转步骤1;
15.结束。
(二)周期读OPC数据块数据
在后台数据库有表:
T_CYC:用于存储周期数据集(结构见表3);
T_CYC_BLOCK:用于存储需要周期读取得OPC数据块(结构见表4)。
与事件触发读取OPC数据块数据不同,根据经验一般读周期数据时,不调用相关的应用程序,(如相关的应用程序计算需要周期数据,直接读取存储周期数据的数据库相应的表接口);如需要调用应用程序,也可以在表T_CYC中增加相应的字段,用于调用相关应用程序。
表3表T_CYC结构
Figure BDA0002110622570000041
Figure BDA0002110622570000051
表4表T_CYC_BLOCK结构
Figure BDA0002110622570000052
用C语言编写程序(为进程形式)READ_CYC_OPC_DATA,用于读取周期数据。周期读OPC数据块的流程如下。
1.读取数据库T_CYC中的记录集;
2.转记录集的第一条记录;
3.判断READ_STATUS是否为1,如不为1转6;
4.根据记录的CYC_SEQ_NUM读取T_CYC_BLOCK的数据;
5.按CYC_TIME的循环周期,每一周期时间内读取对应的OPC数据块的数据一次;
6.调用APP_PROG_SAVEDA进程,将数据存入后台数据库;
7.判断是否是该记录集的最后一条记录;
8.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
9.结束。
(三)写OPC数据块;
在后台数据库有表:
T_WRITE:用于存储写OPC的数据集(结构见表5);
T_WIRITE_BLOCK:用于存储需要写OPC的数据块(结构见表6);
T_WIRITE_BLOCK_DATA:用于存储需要写OPC数据块的数据(结构见表7)
表5表T_WRITE结构
Figure BDA0002110622570000053
Figure BDA0002110622570000061
表6表T_WIRITE_BLOCK结构
Figure BDA0002110622570000062
表7表T_WIRITE_BLOCK_DATA结构
Figure BDA0002110622570000063
用C语言编写程序(为进程形式)WRITE_OPC_DATA,用于写OPC数据。写OPC数据块的流程如下。
1.读取数据库T_WIRITE_BLOCK_DATA中,查询得到需要写OPC的数据集,即DATA_STATUS为1且WRITE_STATUS为1的记录集;
2.转记录集的第一条记录;
3.根据记录的WRITE_SEQ_NUM和BLOCK_SEQ_NUM读取T_WIRITE_BLOCK的数据定义;
4.根据OPC_BLOCK_TYPE,将数据转化为相应的数据类型;
5.将数据写入OPC_BLOCK数据块;
6.将该记录的DATA_STATUS字段的值更新为0;
7.判断是否是该记录集的最后一条记录;
8.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
9.等待Δt2(时间根据应用的具体要求确定,一般取值50-500ms),转步骤1;
10.结束。
二、读写OPC数据块的配置画面
(一)事件触发读OPC数据块配置画面
画面如图1所示。增加事件按钮:增加触发事件的记录配置;保存按钮:保存新增、修改的触发事件的配置;选中触发读数据的事件配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要读的数据块信息配置;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置;在事件触发读OPC数据块配置画面中,某事件的读写状态设定为0,则对应的所有数据块不读。
表8触发读数据的事件配置画面格式
Figure BDA0002110622570000071
表9 OPC数据块配置画面格式
Figure BDA0002110622570000072
Figure BDA0002110622570000081
(二)周期读OPC数据块数据配置画面
画面如图2所示。增加事件按钮:增加周期数据集的记录配置;保存按钮:保存新增、修改的周期数据集的配置;选中存储周期数据集配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要读的数据块信息配置;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置。在周期数据集配置画面中,某数据集的读写状态设定为0,则对应的所有数据块不读。
表10存储周期数据集配置画面格式
Figure BDA0002110622570000082
表11 OPC数据块配置画面格式
Figure BDA0002110622570000083
(三)写OPC数据块画面配置
画面如图3所示。增加数据集按钮:增加写数据集的记录配置;保存按钮:保存新增、修改的写数据集的配置;选中写数据集配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要写的数据块配置信息;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置。在写OPC的数据集配置画面中,某数据集的读写状态设定为0,则对应的所有数据不写入相应的数据块。
表12写OPC的数据集配置画面格式
Figure BDA0002110622570000091
表13 OPC数据块配置画面格式
Figure BDA0002110622570000092
在上文中结合具体的示例性实施例详细描述了本发明。但是,应当理解,可在不脱离由所附权利要求限定的本发明的范围的情况下进行各种修改和变型。详细的描述和附图应仅被认为是说明性的,而不是限制性的,如果存在任何这样的修改和变型,那么它们都将落入在此描述的本发明的范围内。此外,背景技术旨在为了说明本技术的研发现状和意义,并不旨在限制本发明或本申请和本发明的应用领域。
相对于现有技术,本发明的技术效果如下:
采用本发明提供的技术方案,与已有的公知技术相比,具有如下显著效果:
1、减少项目工程人员的工作量,降低后期的维护的成本:由于对OPC数据块的读写功能由事件触发读OPC数据块的功能模块、周期读OPC数据块的功能模块、写OPC数据块的功能模块完成,上述模块由研发人员完成,项目工程人员针对不同的应用,只需在画面配置模块上进行配置,无需对代码进行修改,既项目工程人员的工作量,又降低后期的维护的成本;
2、适用范围广:由于该***适用C语言开发,可以适用Windows、Aix、Linux等多种操作***;适用Oracle、DB2、SqlServer等多种数据库;数据库与该通信进程可以在一个***,也可以不在一个***;OPC服务器与该通信进程可以在一个***,也可以不在一个***;
3、应用行业广泛:该技术可以应用冶金行业的过程控制***与OPC之间的通信,也可以应用于电力、化工等多个行业;
方便终端用户的后期维护:在***上线后,终端用户的后期维护,通信部分的维护只需在画面上进行配置,无需修改程序,方便了终端用户的后期维护。
附图说明
图1为本发明模块逻辑关系图。
图2事件触发读OPC数据块流程图
图3周期读OPC数据块数据流程图
图4写OPC数据块流程图。
具体实施方式:
为了加深对本发明的理解,下面结合附图对本实施例做详细的说明。
实施例1:参见图1,
以梅钢一炼钢转炉L2与L1通信为例。
梅钢一炼钢转炉L1采用西门子S7 400 PLC,工业以太网;L2服务器为容错5700,采用Windows 2008 Server操作***,数据块为Oracle 10g;OPC Server服务器与L2服务器为一个,即在L2服务器上安装Smartic,在Smartic上配置OPC相关数据块。
所述的***调度模块:用于执行事件触发读OPC数据块的功能模块、周期读OPC数据块的功能模块、写OPC数据块的功能模块的启、停等调度管理;
所述的事件触发读OPC数据块的功能模块:用于事件触发读OPC数据块,要包括进程READ_EVENT_OPC_DATA(用于读取OPC事件发生时的数据块数据)及相应的辅助进程(所谓事件触发读OPC数据块,即某一生产事件(如转炉的吹氧结束时间)的发生,在OPC数据块中对应某一数据块,此时的值为Ture(1)或为False(0),在该事件发生,应用程序需要读取一批OPC数据块的值);
所述的周期读OPC数据块的功能模块:用于读取周期数据,包括READ_CYC_OPC_DATA(用于读取周期数据)及相应的辅助进程(所谓周期读OPC数据块,即应用程序定周期读取一批OPC数据块的值,如在转炉吹氧过程中,每间隔一固定时间(2-5秒),读取氧枪高度、氧气流量、氧气压力、吹氧总量等对应的OPC数据块的值);
所述的写OPC数据块的功能模块:用于写OPC数据,包括WRITE_OPC_DATA(用于写OPC数据)及相应的辅助进程(例如,在转炉静态模型计算后,需要将计算的需要的吹氧量写到对应的OPC数据块);
所述的画面配置模块:用于在画面上进行配置需要读、写OPC的相关信息,包括事件触发读OPC数据块配置画面子模块、周期读OPC数据块配置画面子模块、写OPC数据块配置画面子模块。
为了解决上述技术问题,该技术包括如下方法:
一、OPC数据块的读写
(一)事件触发读OPC数据块
在后台数据库有表:
T_TRIGGER:用于存储触发读数据的事件(结构见表1);
T_TRIGGER_BLOCK:用于存储触发需要读取得OPC数据块(结构见表2)。
APP_PROG1、APP_PROG2、APP_PROG3、APP_PROG4,根据应用的要求,可以设计成多个应用程序(,此处只列举4个应用程序),也可以设计成一个,将需要的多个应用程序的功能,包括在一个应用程序中。
用C语言编写程序(为进程形式)READ_EVENT_OPC_DATA,用于读取OPC事件发生时的数据块数据。事件触发读OPC数据块的流程如下。
1.读取数据库T_TRIGGER中的记录集;
2.转记录集的第一条记录;
3.判断READ_STATUS是否为1,如不为1转12;
(READ_STATUS为1时,读取相应的事件的数据,否则读取相应的事件的数据。)
4.根据记录集记录的OPC_BLOCK,读取OPC对应的数据块;
5.判断读取的数据块的值与录集记录的TRIG_TYPE值是否一致(假定高位触发);
6.如果不一致,转11;
7.如果一致;
8.读取数据库T_TRIGGER_BLOCK;
9.读取对应的OPC数据块的数据;
10.将该事件触发的数据块值置0;
11.将数据存入后台数据库,调用APP_PROG_SAVEDA、应用程序1、调用应用程序2、调用应用程序3、调用应用程序4(此处也可以调用一个进程,其功能包括需要的多个程序的功能);
12.判断是否是该记录集的最后一条记录;
13.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
14.延时Δt(根据不同***的不同要求,一般取值在(50ms-500ms)之间),转步骤1;
15.结束。
(二)周期读OPC数据块数据
在后台数据库有表:
T_CYC:用于存储周期数据集(结构见表3);
T_CYC_BLOCK:用于存储需要周期读取得OPC数据块(结构见表4)。
与事件触发读取OPC数据块数据不同,根据经验一般读周期数据时,不调用相关的应用程序,(如相关的应用程序计算需要周期数据,直接读取存储周期数据的数据库相应的表接口);如需要调用应用程序,也可以在表T_CYC中增加相应的字段,用于调用相关应用程序。
用C语言编写程序(为进程形式)READ_CYC_OPC_DATA,用于读取周期数据。周期读OPC数据块的流程如下。
1.读取数据库T_CYC中的记录集;
2.转记录集的第一条记录;
3.判断READ_STATUS是否为1,如不为1转6;
4.根据记录的CYC_SEQ_NUM读取T_CYC_BLOCK的数据;
5.按CYC_TIME的循环周期,每一周期时间内读取对应的OPC数据块的数据一次;
6.调用APP_PROG_SAVEDA进程,将数据存入后台数据库;
7.判断是否是该记录集的最后一条记录;
8.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
9.结束。
(三)写OPC数据块
在后台数据库有表:
T_WRITE:用于存储写OPC的数据集(结构见表5);
T_WIRITE_BLOCK:用于存储需要写OPC的数据块(结构见表6);
T_WIRITE_BLOCK_DATA:用于存储需要写OPC数据块的数据(结构见表7)
用C语言编写程序(为进程形式)WRITE_OPC_DATA,用于写OPC数据。写OPC数据块的流程如下。
1.读取数据库T_WIRITE_BLOCK_DATA中,查询得到需要写OPC的数据集,即DATA_STATUS为1且WRITE_STATUS为1的记录集;
2.转记录集的第一条记录;
3.根据记录的WRITE_SEQ_NUM和BLOCK_SEQ_NUM读取T_WIRITE_BLOCK的数据定义;
4.根据OPC_BLOCK_TYPE,将数据转化为相应的数据类型;
5.将数据写入OPC_BLOCK数据块;
6.将该记录的DATA_STATUS字段的值更新为0;
7.判断是否是该记录集的最后一条记录;
8.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
9.等待Δt2(时间根据应用的具体要求确定,一般取值50-500ms),转步骤1;
10.结束。
二、读写OPC数据块的配置画面
(一)事件触发读OPC数据块配置画面
画面如图1所示。增加事件按钮:增加触发事件的记录配置;保存按钮:保存新增、修改的触发事件的配置;选中触发读数据的事件配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要读的数据块信息配置;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置;在事件触发读OPC数据块配置画面中,某事件的读写状态设定为0,则对应的所有数据块不读。
(二)周期读OPC数据块数据配置画面
画面如图2所示。增加事件按钮:增加周期数据集的记录配置;保存按钮:保存新增、修改的周期数据集的配置;选中存储周期数据集配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要读的数据块信息配置;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置。在周期数据集配置画面中,某数据集的读写状态设定为0,则对应的所有数据块不读。
(三)写OPC数据块画面配置
画面如图3所示。增加数据集按钮:增加写数据集的记录配置;保存按钮:保存新增、修改的写数据集的配置;选中写数据集配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要写的数据块配置信息;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置。在写OPC的数据集配置画面中,某数据集的读写状态设定为0,则对应的所有数据不写入相应的数据块。
在上文中结合具体的示例性实施例详细描述了本发明。但是,应当理解,可在不脱离由所附权利要求限定的本发明的范围的情况下进行各种修改和变型。详细的描述和附图应仅被认为是说明性的,而不是限制性的,如果存在任何这样的修改和变型,那么它们都将落入在此描述的本发明的范围内。此外,背景技术旨在为了说明本技术的研发现状和意义,并不旨在限制本发明或本申请和本发明的应用领域。
实施例2
以梅钢二炼钢转炉L2与L1通信为例。
梅钢二炼钢转炉L1采用西门子S7 400PLC,工业以太网;L2服务器为容错服务器ftServer 6100,采用LinuxRedhat 5.5操作***,数据块为DB2 10.5;OPC Server服务器为惠普DL 580,操作***为Windows 2008 Server,双机互为热备。
所述的***调度模块:用于执行事件触发读OPC数据块的功能模块、周期读OPC数据块的功能模块、写OPC数据块的功能模块的启、停等调度管理;
所述的事件触发读OPC数据块的功能模块:用于事件触发读OPC数据块,要包括进程READ_EVENT_OPC_DATA(用于读取OPC事件发生时的数据块数据)及相应的辅助进程(所谓事件触发读OPC数据块,即某一生产事件(如转炉的吹氧结束时间)的发生,在OPC数据块中对应某一数据块,此时的值为Ture(1)或为False(0),在该事件发生,应用程序需要读取一批OPC数据块的值);
所述的周期读OPC数据块的功能模块:用于读取周期数据,包括READ_CYC_OPC_DATA(用于读取周期数据)及相应的辅助进程(所谓周期读OPC数据块,即应用程序定周期读取一批OPC数据块的值,如在转炉吹氧过程中,每间隔一固定时间(2-5秒),读取氧枪高度、氧气流量、氧气压力、吹氧总量等对应的OPC数据块的值);
所述的写OPC数据块的功能模块:用于写OPC数据,包括WRITE_OPC_DATA(用于写OPC数据)及相应的辅助进程(例如,在转炉静态模型计算后,需要将计算的需要的吹氧量写到对应的OPC数据块);
所述的画面配置模块:用于在画面上进行配置需要读、写OPC的相关信息,包括事件触发读OPC数据块配置画面子模块、周期读OPC数据块配置画面子模块、写OPC数据块配置画面子模块。
为了解决上述技术问题,该技术包括如下方法:
一、OPC数据块的读写
(一)事件触发读OPC数据块
在后台数据库有表:
T_TRIGGER:用于存储触发读数据的事件(结构见表1);
T_TRIGGER_BLOCK:用于存储触发需要读取得OPC数据块(结构见表2)。
APP_PROG1、APP_PROG2、APP_PROG3、APP_PROG4,根据应用的要求,可以设计成多个应用程序(,此处只列举4个应用程序),也可以设计成一个,将需要的多个应用程序的功能,包括在一个应用程序中。
用C语言编写程序(为进程形式)READ_EVENT_OPC_DATA,用于读取OPC事件发生时的数据块数据。事件触发读OPC数据块的流程如下。
1.读取数据库T_TRIGGER中的记录集;
2.转记录集的第一条记录;
3.判断READ_STATUS是否为1,如不为1转12;
(READ_STATUS为1时,读取相应的事件的数据,否则读取相应的事件的数据。)
4.根据记录集记录的OPC_BLOCK,读取OPC对应的数据块;
5.判断读取的数据块的值与录集记录的TRIG_TYPE值是否一致(假定高位触发);
6.如果不一致,转11;
7.如果一致;
8.读取数据库T_TRIGGER_BLOCK;
9.读取对应的OPC数据块的数据;
10.将该事件触发的数据块值置0;
11.将数据存入后台数据库,调用APP_PROG_SAVEDA、应用程序1、调用应用程序2、调用应用程序3、调用应用程序4(此处也可以调用一个进程,其功能包括需要的多个程序的功能);
12.判断是否是该记录集的最后一条记录;
13.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
14.延时Δt(根据不同***的不同要求,一般取值在(50ms-500ms)之间),转步骤1;
15.结束。
(二)周期读OPC数据块数据
在后台数据库有表:
T_CYC:用于存储周期数据集(结构见表3);
T_CYC_BLOCK:用于存储需要周期读取得OPC数据块(结构见表4)。
与事件触发读取OPC数据块数据不同,根据经验一般读周期数据时,不调用相关的应用程序,(如相关的应用程序计算需要周期数据,直接读取存储周期数据的数据库相应的表接口);如需要调用应用程序,也可以在表T_CYC中增加相应的字段,用于调用相关应用程序。
用C语言编写程序(为进程形式)READ_CYC_OPC_DATA,用于读取周期数据。周期读OPC数据块的流程如下。
1.读取数据库T_CYC中的记录集;
2.转记录集的第一条记录;
3.判断READ_STATUS是否为1,如不为1转6;
4.根据记录的CYC_SEQ_NUM读取T_CYC_BLOCK的数据;
5.按CYC_TIME的循环周期,每一周期时间内读取对应的OPC数据块的数据一次;
6.调用APP_PROG_SAVEDA进程,将数据存入后台数据库;
7.判断是否是该记录集的最后一条记录;
8.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
9.结束。
(三)写OPC数据块
在后台数据库有表:
T_WRITE:用于存储写OPC的数据集(结构见表5);
T_WIRITE_BLOCK:用于存储需要写OPC的数据块(结构见表6);
T_WIRITE_BLOCK_DATA:用于存储需要写OPC数据块的数据(结构见表7)
用C语言编写程序(为进程形式)WRITE_OPC_DATA,用于写OPC数据。写OPC数据块的流程如下。
1.读取数据库T_WIRITE_BLOCK_DATA中,查询得到需要写OPC的数据集,即DATA_STATUS为1且WRITE_STATUS为1的记录集;
2.转记录集的第一条记录;
3.根据记录的WRITE_SEQ_NUM和BLOCK_SEQ_NUM读取T_WIRITE_BLOCK的数据定义;
4.根据OPC_BLOCK_TYPE,将数据转化为相应的数据类型;
5.将数据写入OPC_BLOCK数据块;
6.将该记录的DATA_STATUS字段的值更新为0;
7.判断是否是该记录集的最后一条记录;
8.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
9.等待Δt2(时间根据应用的具体要求确定,一般取值50-500ms),转步骤1;
10.结束。
二、读写OPC数据块的配置画面
(一)事件触发读OPC数据块配置画面
画面如图1所示。增加事件按钮:增加触发事件的记录配置;保存按钮:保存新增、修改的触发事件的配置;选中触发读数据的事件配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要读的数据块信息配置;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置;在事件触发读OPC数据块配置画面中,某事件的读写状态设定为0,则对应的所有数据块不读。
(二)周期读OPC数据块数据配置画面
画面如图2所示。增加事件按钮:增加周期数据集的记录配置;保存按钮:保存新增、修改的周期数据集的配置;选中存储周期数据集配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要读的数据块信息配置;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置。在周期数据集配置画面中,某数据集的读写状态设定为0,则对应的所有数据块不读。
(三)写OPC数据块画面配置
画面如图3所示。增加数据集按钮:增加写数据集的记录配置;保存按钮:保存新增、修改的写数据集的配置;选中写数据集配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要写的数据块配置信息;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置。在写OPC的数据集配置画面中,某数据集的读写状态设定为0,则对应的所有数据不写入相应的数据块。
需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基础上所作出的等同变换或替代均落入本发明权利要求所保护的范围。

Claims (8)

1.一种读写OPC数据块的***,其特征在于,所述***包括统调度模块、事件触发读OPC数据块的功能模块、周期读OPC数据块的功能模块、写OPC数据块的功能模块以及画面配置模块;
所述的***调度模块:用于执行事件触发读OPC数据块的功能模块、周期读OPC数据块的功能模块、写OPC数据块的功能模块的启、停等调度管理;
所述的事件触发读OPC数据块的功能模块:用于事件触发读OPC数据块,要包括进程READ_EVENT_OPC_DATA(用于读取OPC事件发生时的数据块数据)及相应的辅助进程(所谓事件触发读OPC数据块,即某一生产事件的发生,在OPC数据块中对应某一数据块,此时的值为Ture(1)或为False(0),在该事件发生,应用程序需要读取一批OPC数据块的值);
所述的周期读OPC数据块的功能模块:用于读取周期数据,包括READ_CYC_OPC_DATA(用于读取周期数据)及相应的辅助进程(所谓周期读OPC数据块,即应用程序定周期读取一批OPC数据块的值,如在转炉吹氧过程中,每间隔一固定时间(2-5秒),读取氧枪高度、氧气流量、氧气压力、吹氧总量等对应的OPC数据块的值);
所述的写OPC数据块的功能模块:用于写OPC数据,包括WRITE_OPC_DATA(用于写OPC数据)及相应的辅助进程(例如,在转炉静态模型计算后,需要将计算的需要的吹氧量写到对应的OPC数据块);
所述的画面配置模块:用于在画面上进行配置需要读、写OPC的相关信息,包括事件触发读OPC数据块配置画面子模块、周期读OPC数据块配置画面子模块、写OPC数据块配置画面子模块。
2.一种读写OPC数据块的方法,其特征在于,所述方法如下:
步骤一:OPC数据块的读写;
(一)事件触发读OPC数据块;
(二)周期读OPC数据块数据;
(三)写OPC数据块;
步骤二:读写OPC数据块的配置画面;
(一)事件触发读OPC数据块配置画面;
(二)周期读OPC数据块数据配置画面;
(三)写OPC数据块画面配置。
3.根据权利要求1所述的读写OPC数据块的方法,其特征在于,所述(一)事件触发读OPC数据块;
在后台数据库有表:
T_TRIGGER:用于存储触发读数据的事件;
T_TRIGGER_BLOCK:用于存储触发需要读取得OPC数据块;
APP_PROG1、APP_PROG2、APP_PROG3、APP_PROG4,根据应用的要求,可以设计成多个应用程序(,此处只列举4个应用程序),也可以设计成一个,将需要的多个应用程序的功能,包括在一个应用程序中。
用C语言编写程序(为进程形式)READ_EVENT_OPC_DATA,用于读取OPC事件发生时的数据块数据,事件触发读OPC数据块的流程如下,
1.读取数据库T_TRIGGER中的记录集;
2.转记录集的第一条记录;
3.判断READ_STATUS是否为1,如不为1转12;
(READ_STATUS为1时,读取相应的事件的数据,否则读取相应的事件的数据。)
4.根据记录集记录的OPC_BLOCK,读取OPC对应的数据块;
5.判断读取的数据块的值与录集记录的TRIG_TYPE值是否一致(假定高位触发);
6.如果不一致,转11;
7.如果一致;
8.读取数据库T_TRIGGER_BLOCK;
9.读取对应的OPC数据块的数据;
10.将该事件触发的数据块值置0;
11.将数据存入后台数据库,调用APP_PROG_SAVEDA、应用程序1、调用应用程序2、调用应用程序3、调用应用程序4(此处也可以调用一个进程,其功能包括需要的多个程序的功能);
12.判断是否是该记录集的最后一条记录;
13.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
14.延时Δt(根据不同***的不同要求,一般取值在(50ms-500ms)之间),转步骤1;
15.结束。
4.根据权利要求3所述的读写OPC数据块的方法,其特征在于,所述步骤(二)周期读OPC数据块数据,具体如下,
在后台数据库有表:
T_CYC:用于存储周期数据集;
T_CYC_BLOCK:用于存储需要周期读取得OPC数据块;
与事件触发读取OPC数据块数据不同,根据经验一般读周期数据时,不调用相关的应用程序,(如相关的应用程序计算需要周期数据,直接读取存储周期数据的数据库相应的表接口);如需要调用应用程序,也可以在表T_CYC中增加相应的字段,用于调用相关应用程序。
用C语言编写程序(为进程形式)READ_CYC_OPC_DATA,用于读取周期数据。周期读OPC数据块的流程如下,
1.读取数据库T_CYC中的记录集;
2.转记录集的第一条记录;
3.判断READ_STATUS是否为1,如不为1转6;
4.根据记录的CYC_SEQ_NUM读取T_CYC_BLOCK的数据;
5.按CYC_TIME的循环周期,每一周期时间内读取对应的OPC数据块的数据一次;
6.调用APP_PROG_SAVEDA进程,将数据存入后台数据库;
7.判断是否是该记录集的最后一条记录;
8.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
9.结束。
5.根据权利要求4所述的读写OPC数据块的方法,其特征在于,所述步骤(三)写OPC数据块,具体如下,
在后台数据库有表:
T_WRITE:用于存储写OPC的数据集;
T_WIRITE_BLOCK:用于存储需要写OPC的数据块;
T_WIRITE_BLOCK_DATA:用于存储需要写OPC数据块的数据;
用C语言编写程序(为进程形式)WRITE_OPC_DATA,用于写OPC数据,写OPC数据块的流程如下:
1.读取数据库T_WIRITE_BLOCK_DATA中,查询得到需要写OPC的数据集,即DATA_STATUS为1且WRITE_STATUS为1的记录集;
2.转记录集的第一条记录;
3.根据记录的WRITE_SEQ_NUM和BLOCK_SEQ_NUM读取T_WIRITE_BLOCK的数据定义;
4.根据OPC_BLOCK_TYPE,将数据转化为相应的数据类型;
5.将数据写入OPC_BLOCK数据块;
6.将该记录的DATA_STATUS字段的值更新为0;
7.判断是否是该记录集的最后一条记录;
8.不是最后一条记录,读取该记录集的下一条记录,转步骤3;
9.等待Δt2(时间根据应用的具体要求确定,一般取值50-500ms),转步骤1;
10.结束。
6.根据权利要求5所述的读写OPC数据块的方法,其特征在于,所述(一)事件触发读OPC数据块配置画面,如下,增加事件按钮:增加触发事件的记录配置;保存按钮:保存新增、修改的触发事件的配置;选中触发读数据的事件配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要读的数据块信息配置;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置;在事件触发读OPC数据块配置画面中,某事件的读写状态设定为0,则对应的所有数据块不读。
7.根据权利要求5所述的读写OPC数据块的方法,其特征在于,所述(二)周期读OPC数据块数据配置画面,如下,增加事件按钮:增加周期数据集的记录配置;保存按钮:保存新增、修改的周期数据集的配置;选中存储周期数据集配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要读的数据块信息配置;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置。在周期数据集配置画面中,某数据集的读写状态设定为0,则对应的所有数据块不读。
8.根据权利要求5所述的读写OPC数据块的方法,其特征在于,所述(三)写OPC数据块画面配置,如下,增加数据集按钮:增加写数据集的记录配置;保存按钮:保存新增、修改的写数据集的配置;选中写数据集配置画面中的某一行(双击/单击鼠标右键),则在OPC数据块配置画面显示对应需要写的数据块配置信息;增加数据块按钮:在OPC数据块配置画面增加新的一行信息;保存按钮:保存新增、修改的OPC数据块配置。在写OPC的数据集配置画面中,某数据集的读写状态设定为0,则对应的所有数据不写入相应的数据块。
CN201910569767.9A 2019-06-27 2019-06-27 一种读写opc数据块的方法 Pending CN112153089A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910569767.9A CN112153089A (zh) 2019-06-27 2019-06-27 一种读写opc数据块的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910569767.9A CN112153089A (zh) 2019-06-27 2019-06-27 一种读写opc数据块的方法

Publications (1)

Publication Number Publication Date
CN112153089A true CN112153089A (zh) 2020-12-29

Family

ID=73868863

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910569767.9A Pending CN112153089A (zh) 2019-06-27 2019-06-27 一种读写opc数据块的方法

Country Status (1)

Country Link
CN (1) CN112153089A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100114994A1 (en) * 2008-10-08 2010-05-06 Oracle International Corporation Xml-based event driven interface for opc data access
CN102520687A (zh) * 2011-12-12 2012-06-27 攀钢集团攀枝花钢钒有限公司 基于opc的通用接口***及控制方法
CN107885782A (zh) * 2017-10-16 2018-04-06 深圳市合信自动化技术有限公司 一种通过sql数据库来读写plc变量的方法及装置
CN108469790A (zh) * 2018-03-19 2018-08-31 武汉理工大学 一种基于opc协议的plc现场数据采集与监控模块及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100114994A1 (en) * 2008-10-08 2010-05-06 Oracle International Corporation Xml-based event driven interface for opc data access
CN102520687A (zh) * 2011-12-12 2012-06-27 攀钢集团攀枝花钢钒有限公司 基于opc的通用接口***及控制方法
CN107885782A (zh) * 2017-10-16 2018-04-06 深圳市合信自动化技术有限公司 一种通过sql数据库来读写plc变量的方法及装置
CN108469790A (zh) * 2018-03-19 2018-08-31 武汉理工大学 一种基于opc协议的plc现场数据采集与监控模块及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张军: "基于OPC技术的煤矿井下数据监测中间件的设计", 《中国优秀硕士学位论文全文数据库》 *

Similar Documents

Publication Publication Date Title
US8803667B2 (en) Systems and methods for notifying multiple hosts from an industrial controller
CN108009258B (zh) 一种可在线配置的数据采集与分析平台
US20050203648A1 (en) System and method for accessing PLC data on demand
CN102520687B (zh) 基于opc的通用接口***及控制方法
CN113220229B (zh) 一种用于分布式控制***的在线式i/o无扰组态方法
CN101872191A (zh) 一种生产线设备的工艺任务调度方法及装置
CN111752545A (zh) 一种支持数据重放的流计算方法
CN113094125B (zh) 业务流程处理方法、装置、服务器及存储介质
CN112153089A (zh) 一种读写opc数据块的方法
CN115952227A (zh) 数据采集***及方法、电子设备和存储介质
JPH03505383A (ja) データ処理装置用オペレーションプログラム
CN114896031A (zh) 一种兼容调度多rpa的方法及***
CN113343037B (zh) 一种嵌入式主从设备的数据映射方法
CN115686575A (zh) 边缘控制器固件更新方法、***、存储介质及服务器
CN114020368A (zh) 基于状态机的信息处理方法、装置和存储介质
CN109542598B (zh) 定时任务管理方法及装置
CN113076359B (zh) 一种基于rssql通讯软件将数据库数据直接下装opc的方法
CN117743472B (zh) 一种存储任务断点同步方法、装置、介质及设备
CN114721325B (zh) 一种多平台多版本plc工程兼容的方法
CN112799816B (zh) 一种嵌入式操作***的多任务程序指定任务调试方法
CN112846476B (zh) 智能一体化的搅拌摩擦焊数控***
JPH0762838B2 (ja) システム構成の動的変更方式
CN117527827A (zh) 一种集装箱码头跨服务信息通信和数据同步方法
CN117667896A (zh) 一种业务迁移方法、装置、设备、存储介质及***
CN117807025A (zh) 基于文件同步运行数据至时序库的方法、存储介质及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination