◎ 范灼航
(广东省储备粮管理总公司东莞直属库,广东 东莞 523000)
保障国家粮食安全是一个永恒的课题,任何时候这根弦都不能松。抓好粮食物流的信息化建设是保障国家粮食安全的重要一环。其中,粮食物流作业流程信息记录的电子化有利于提高生产作业管理的精细化水平。
为此,在基于InTouch 的粮食物流输送控制系统中,与MySQL 数据库进行连接及数据交互,实现了自动记录生产作业流程的路线、启动时间、停止时间、日期、流程号等作业信息的功能,并可在InTouch 中进行查询显示。
InTouch 是一种工业自动化组态软件,用于可视化和控制工业生产过程,是一个开放、可扩展的人机界面,为定制应用程序设计提供了灵活性,同时为工业中的各种自动化设备提供了连接能力[1-2]。
MySQL 是一个关系型数据库管理系统,使用标准的SQL 数据语言形式,可允许运行于多个系统上,并支持多种编程语言,包括C、C++、Python、Java、Perl、PHP、Ruby 等[3-4]。
开放数据库连接(Open Database Connectivity,ODBC)为异构数据库访问提供统一接口,允许应用程序以SQL 为数据存取标准,存取不同DBMS 管理的数据[5-6]。
InTouch 通过向ODBC 发送数据库操作指令,实现对MySQL 数据库中的数据列表进行插入新数据行、更新数据信息、查询数据信息等操作,其数据交互如图1 所示。
图1 数据交互示意图
InTouch 与SQL 交互需在InTouch 中建立绑定列表,变量标记名需与SQL 数据表中的列名一一对应,实现流程信息自动记录的绑定列表配置,如表1 所示[7-8]。
表1 InTouch 与SQL 绑定列表配置表
在InTouch 中,通过触发脚本程序的形式实现流程信息的自动记录,其设计思路如图2 所示。
图2 流程信息自动记录设计思路图
系统上电运行后,判断流程是否启动,当作业流程启动时,触发SQL 插入表脚本程序,依次完成连接ODBC、发送SQL 插入语句、记录唯一序号、断开ODBC 的操作,实现记录流程启动日期、时间、流程号等信息;当作业流程停止时,触发SQL 更新表脚本程序,依次完成连接ODBC、发送SQL 更新语句、断开ODBC 的操作,实现记录该次流程的停止日期及时间。流程信息自动记录脚本代码如下:
当流程运行变量标志R1_STR_OK_REAL 为1 时,即流程启动时,对相关信息变量进行赋值,通过函数SQLConnect()连接指定的数据库成功后,通过函数SQLInsert()按InTouch 的绑定表“PLC_RECORD_STR”执行插入新数据行的命令,插入新数据行完成后,将该新数据行的唯一序号赋值到变量PLC_RECORD_ID_R1 中,最后断开数据库连接,完成记录流程启动的相关信息。
当流程运行变量标志R1_STR_OK_REAL 为0时,即流程停止时,对相关变量进行赋值后,通过函数SQLConnect()连接指定的数据库成功后,通过函数SQLUpdate()按流程记录唯一序号的变量PLC_RECORD_ID_R1 进行检索,并按InTouch 的绑定表“PLC_RECORD_STP”执行更新数据行的命令,完成后断开数据库连接,完成记录该条流程停止的相关信息。
实现流程信息查询的绑定列表配置如表2 所示。
表2 InTouch 与SQL 绑定列表配置表
在InTouch 中通过窗口按钮触发程序的形式实现流程信息查询,其设计思路如图3 所示。
图3 流程信息查询设计思路图
系统上电运行后,判断查询信息按钮是否按下,当按下查询流程信息按钮时,触发流程信息查询程序,依次完成连接ODBC、发送SQL 查询语句、根据查询结果编译表格控件、断开ODBC 的操作,其中表格控件按(1,0)、(1,1)、(1,2)…(n,6)的阵列顺序依次编译。流程信息查询代码如下:
按下流程信息查询按钮,连接数据库成功后,通过函数SQLSelect()按InTouch 的绑定表“LC”按检索条件查询数据行,设置表格控件列表的表头为“序号|日期|流程号|流程信息|开机时间|停机时间”。
先按(1,0)、(1,1)、(1,2)、(1,3)、(1,4)、(1,5)的顺序依次编写单元格内容为查询结果第一条数据中的“数据序号”“开机日期”“流程号”“流程信息”“开机时间”及“停机时间”。完成第一条数据的单元格内容编写后,转至第二条数据并开始编写第二行,按顺序循环执行至查询结果列表的最后一行,完成查询流程信息及编写表格控件的操作。实现流程信息的便捷查询。
完成程序设计调试后,系统能实现自动记录流程作业信息的功能,InTouch 实现便捷查询流程信息功能,数据库数据如表3,InTouch 查询流程信息功能如图4。
图4 InTouch 查询流程信息功能图