一种可编程的智能测控平台系统研究

2020-06-05 12:17唐先玮
小型微型计算机系统 2020年6期
关键词:上位序号指令

王 兴,唐先玮

1(中国科学院大学,北京100049)

2(太原科技大学,太原030024)

1 引 言

目前工业领域中的监控软件大多只能应用在固定的控制系统中,不具备程序重构功能,一旦原有的工艺发生改变,就需要专业人员对源代码进行修改,周期较长且比较麻烦,甚至可能因为超出服务时间原公司不再提供更新服务,导致用户无法根据工艺的改变对程序进行二次修改,给用户带来极大的不便.另外智能制造的提出迎合了当今对智能化的要求,但传统的控制系统智能化水平较低,造成了不必要的人力资源浪费,缺乏自学习功能会让控制系统较为死板.为此,设计一种用户可以自己编程,可以根据工艺的不同重构控制程序[1],使用门槛低、灵活性强且在一定时间范围内可生长的通用性智能测控平台系统是很有必要的.本文详细阐述了该平台系统的工作原理及操作流程、通信指令集的设计、软件设计、专家控制方法.提出了一种工业领域中可编程的智能化测控方法,提高了工业过控制的开发与修改效率,在一定程度上促进了社会经济的发展.

2 系统的总体设计

2.1 系统的组成

系统主要由上位机组态软件、下位机主机、云共享数据库、电脑端或手机端、测控对象和其他外部通信设备组成.系统总体架构如图1 所示.

2.2 系统的工作原理

首先,用户明确控制系统的组成以此来制定I/O 表,设计一个背景画面,导入组态软件中,根据I/O 表添加监控点,以此来构成一个完整的监控画面.进入编程模式后,用户需要将工艺转换成步,每一步对应一条指令,通过点击对应的指令按钮,将每条指令按工艺的顺序添加到程序运行窗口,即可完成编程.程序以.txt格式保存,可以部分或完全调用已有的程序,另外还提供一种进阶的编程方式,根据建立的指令集标准,通过PC 或手机端直接对程序文件进行编辑,由互联网远程发送到上位机中,通过对文件中的指令语句进行识别,以此完成程序的编写.将控制系统中所有测控对象根据I/O表接入到下位机提供的输入输出接口上,再将上位机与下位机通过串行通信方式进行连接,用户在组态软件中点击运行,控制系统启动,上位机将用户所编的程序通过指令的形式下发给下位机,下位机根据指令做出相应的动作,并且会实时的将当前状态反馈给上位机[2],状态信息会反应在用户设计的监控画面当中[3].也可以一对多或多对多的和其他外部通信设备进行连接,根据双方的指令集规则,实现上位机组态软件控制其他系统或设备,也可以被其他系统或设备所控制.最后用户可将程序上传至云共享数据库中,这样其他用户在开发自己的控制系统时,可能部分或者全部功能可以从云共享数据库中直接搜索到,通过下载直接嵌入到自己的程序当中,这样不断壮大的云共享数据库会让系统不断生长[4].另外系统中采用的专家控制,会根据知识库中提供信息进行运算,实现智能控制和智能处理.系统操作流程如图2 所示.

图1 系统总体架构图Fig.1 System architecture

图2 系统操作流程图Fig.2 System operation flow chart

3 通信指令集的设计

3.1 指令设计

指令扮演着信使的角色,一方面用户在使用上位机组态软件时,一系列的操作会转换成一条条指令,组态软件通过识别不同的指令来做出相应的动作,另一方面上位机与下位机交互时,也是通过识别指令来做出相应动作,这样制定一套指令规则才能让人与机器、机器与机器之间有了沟通前提.所有指令的集合称之为指令集,本系统的指令集中包含的指令类型分别为系统操作指令、报警指令、程序调用指令、设备动作指令、逻辑判断指令、参数设置指令和函数指令.同时指令的设计需要考虑指令的可读性和快速识别性.系统部分指令集如表1 所示.

表1 系统部分指令集Table 1 System partial instruction set

以下为所有指令类型的结构说明,其中每条指令的前三位为指令序号.

系统操作指令的指令功能分别为“运行”、“暂停”、“执行下一条指令”、“中断程序”,指令是由指令序号+四位字符组成,例如:“003NEXT”表示执行下一条指令操作.

报警指令是由指令序号+“Wam”+三位报警编号组成,例如“000Wam100”表示PLC 通信故障.

程序调用指令是由指令序号+“Load_”+十位字符组成,例如“004Load_TrcLig”表示调用本地本件名为“TrcLig”的程序.

设备动作指令即为数字量输出指令,结构为指令序号+“QX.Y=Z”其中“X.Y”表示 PLC 的数字量输出地址,“Z”表示 0 或 1,例如“026Q1.5=1”表示将 PLC 数字量输出Q1.5置为高电平.

参数设置指令是由指令序号+“AOX=”+十二位设定值组成,例如“004AO5=100”表示将模拟量输出口5 的值设定成100.

逻辑判断指令包含数字量输入逻辑判断、数字量输出逻辑判断和模拟量输入逻辑判断.其结构分别为指令序号+“?IX.Y=Z”、指令序号+“?Q X.Y=Z”、指令序号+“?AIXYY”+十二位设定值,其中数字量输入输出的逻辑判断与动作指令结构类似,对于模拟量输入逻辑判断中“YY”表示逻辑符号,逻辑符号有“==”、“》”、“《”“≥”“≤”五类,例如“011?Q0.5==0”表示判断数字输出Q0.5 是否为低电平,“015?AI4>>200”表示判断模拟量输入口4 的值是否大于200.

函数指令是由定时器指令、循环指令、跳转指令、逻辑“或”指令和注释指令组成.

3.2 指令集的动态调整

指令集包含公共部分和自定义部分,所有用户的指令集公共部分是相同的,而自定义部分可能是不同的,用户只能对指令集的自定义部分进行操作,而不能操作公共部分.如果对控制系统进行调整,指令集则需要同步调整,才能实现正确的对应关系.在遇到如下情况时组态软件会动态修改指令集:

1)在遇到复杂的控制系统时,提供的I/O 口不能满足用户需要,系统提供了扩展功能,可根据用户需要加装输入输出模块;

2)删除多余的I/O 口;

3)系统提供自定义报警条件设置功能,用户可以自行添加或删除报警指令;

4)平台系统对功能进行调整时;

5)从云共享数据库中下载的程序所用的指令集与自己的指令集不同时.

为了降低添加或删除指令后指令集修改次数,将可能需要调整的指令类型给予一套独立的指令序号,而系统操作指令、程序调用指令和函数指令是不会发生改变的,则将其组合起来赋予一套独立的指令序号,具有独立指令序号的部分称为指令块,每一个指令块存储在独立的数组当中.

指令集的调整分为添加指令和删除指令两种情况,添加指令时,根据指令的类型找到所属的指令块,在该指令块的最后位置添加,添加时需要按顺序给予一个指令序号.对于删除指令,需要将该指令块中处于被删除的指令位置之后的所有指令前移一个位置,并修改指令序号为连续的.

对于云共享数据库,每当对整个平台系统的功能进行调整时,可能会增加或删除一些指令,则需要修改指令集的公共部分,通过网络下发给所有用户,让用户及时更新指令集.当用户通过云共享数据库下载调用他人的程序时,会同步下载对应指令集,并将他人的指令集自定义部分与当前的进行对比,将当前指令集中没有的指令添加进来,这样才能正确运行他人的程序.

3.3 程序执行

在程序执行方面着重考虑数据结构的选用,因为合适的数据结构将会让指令的处理速度大大提高,通常工业环境中的过程控制都是按生产工艺一步一步进行下去,而生产工艺的每一步即对应一条指令,即按先来先处理的原则,为了避免“假溢满”,数据结构选用线性表中的循环队列[5],但在工业控制中经常会出现部分操作循环执行,甚至在循环中继续嵌套多层循环,这就会出现循环部分的指令重复入队与出队,浪费了大量的指令读写时间,为此提出一种嵌套循环队的数据结构,在循环队列的基础上嵌套增加线性表.

图3 嵌套循环队的原理图Fig.3 Nested circular queue

程序执行时,指令将按顺序入队,当遇到循环开始指令时,将与之对应的循环结束指令之间所有指令存入到单独的线性表中,将线性表中第一条指令的地址指针* Dop 存入上一层循环开始指令的位置中,记录下上一层循环开始指令的下一条指令的地址指针* Upt,并记录当前层循环次数Num,对于线性表来说,执行完最后一条指令后将指针减去线性表长度即可指向第一条指令,这样将完成一次循环,每执行完一次循环将Num 减1,当Num=0 时将调用* Upt 返回上一层,并将线性表的内存释放.嵌套循环队的原理如图3 所示.

3.4 指令查找

用户操作上位机的是通过指令传达,下位机反馈给上位机信息也是通过指令传达,当上位机收到指令后需要在指令集中查找到该指令所表达的意思,再执行其相应的动作,对于小系统来说差异不大,但是对于指令较多的复杂系统来说,指令类型较多,指令查找方法将会影响整个系统的运行速度,基于前文指令的设计提出了一种索引查找法,需要将不同的指令块存入单独的数组当中,按指令序号从小到大的顺序依次存入数组,这样每条指令的指令序号即为对应数组中的下标,对指令进行查找时需要分两步进行,第一步需要提取指令的第四位和第五位,根据索引表找到该指令所属的数组.第二步数组下标为指令序号的即为目标指令.索引表如表2 所示.

表2 索引表Table 2 Index table

因此该索引查找法的平均查找长度ASL 为两个部分的平均查找长度之和,即式(1)所示:

对于指令集C[1:n]中每条指令的查找概率相同为Pi=1/n,第二步即为直接定址法,每个元素的比较次数均为1,设逻辑判断指令的指令个数为L,即数组Com2、Com3、Com4 中指令个数之和为L,则平均查找长度如式(2)所示:

由结果可知 0<L/n<1,所以平均查找长度 2<ASL<3.时间复杂的为O(1).不难看出该指令集的设计在兼顾可读性和扩展性的同时,大大缩短了指令查找的时间,提高了系统整体的运行效率.

3.5 指令优化调度

系统指令分为内部和外部指令,上位机指令库中保存的为内部指令,用来给编程提供判断、循环、函数、逻辑等语句,使外部通信设备产生动作的指令为外部指令,系统中每条指令都有优先级,有些为系统自带,有些则需要用户自己定义.系统中外部通信设备以下位机PLC 为主,也可以连接其他通信设备或系统,实现本系统控制其他系统或设备,也可以被其他系统所控制,由于外部通信设备种类繁多,每个设备的指令集都不同,通信接口也不统一,这样一个好的指令调度策略才会使系统有条不紊的运行.系统指令调度如图4 所示.

图4 指令调度图Fig.4 Instruction scheduling

系统中定义的外部指令是针对PLC 而设置的,因为将所有外部通信设备的指令集全部记录下来是非常困难的,为了提供连接其他外部通信设备的功能,系统提供外部指令输入功能,用户根据外部通信设备的指令集规则输入控制指令,再添加到程序运行窗口,当上位机编程完成后,系统将线性运行程序,当收到指令完成反馈后再执行下一条,运行到不同外部指令时,系统将自动打开对应通信通道,但是当上位机收到其他外部通信设备的控制指令时将与正在运行的程序发生冲突,并且同一时间可能会有多条外部控制指令,则需要按优先级大小顺序执行,优先级最高的则首先于上位机中正在运行的指令优先级进行对比,优先级高的将会获得上机的控制权,按此策略直至程序结束.

4 软件设计

对于工业环境中的过程控制,虽然控制流程多种多样,但是可以将其拆分成最基本的输入输出的动作.对于该平台系统的上位机组态软件来说,充分考虑了工业环境中过程控制的特点、编程方式、程序修改等,提出一种新的设计理念,让用户根据控制系统的特点自己设计监控画面,并将所有输入输出的动作提供给用户,用户根据系统需要自行选择与定义动作[6].软件将每条控制指令封装至按钮中,用户可以自己编写程序,需要将控制流程拆分成动作,每个动作对应一条指令,通过点击对应指令按钮或输入外部指令,将指令按顺序添加到程序运行窗口,配合载入、程序调用、添加、删除、清除等操作完成程序的编写,整个编程过程简单快速,同样只需要进行简单的操作即可对已有的程序进行二次修改[7],使其具有重构功能,并具备程序检测功能,检测程序语法、逻辑、格式错误[8].软件建立了一个故障报警库,保存了系统中存在的故障,采用专家控制结构,可以对故障进行智能化处理,并提供扩展功能,用户可以自己定义报警条件和处理方案.除此之外,还具备自定义报表打印、曲线图绘制与打印等功能.

图5 功能逻辑架构Fig.5 Functional structure diagram

图6 编程界面Fig.6 Programming interface

智能测控平台系统软件的功能逻辑架构是对开发某控制系统需要的所有部分进行划分,并列出每个部分的功能,各部分之间协同运行,加之软件高度自定义特性和简单的操作逻辑,让软件实现各个功能的同时,给用户带来良好的使用体验[9].功能逻辑架构如图5 所示,如图6 为软件对水清洗机控制程序进行测试的编程界面.

5 专家控制方法

专家系统是一个智能计算机程序,智能体现在将某领域内一个或多个专家的知识与经验存起来,遇到问题时将根据所存的知识进行推理与判断,模拟专家的推理与决策,从而解决那些复杂的问题[10].本系统中专家控制主要应用于故障监测与报警、语法检测、指令调度、指令查找、指令集动态调整.专家控制结构如图7 所示.

图7 专家控制结构Fig.7 Expert control structure

5.1 知识库的设计

首先,将系统的语法检测规则、指令调度策略、指令查找方法、指令集动态调整策略、故障信息与处理方法录入到知识库中,并提供自定义接口,用于对用户开放知识库,可以将用户自定义的故障报警信息翻译成专家控制专用表示形式,进而存入知识库中.用户设备解决不了的问题,会将信息上传云数据库,由专业人员解决后,对知识库进行升级.对于所有用户,只要设备接入网络,软件会自动将知识库中的信息上传至云共享数据库中,云共享数据库会对收集到的知识库进行整合,并通过筛选和判别机制删除无意义的规则,结合平台系统升级后可能会对各个规则、策略、方法进行改进和扩充,最终得到全新的知识库,同时将其下发给所有用户.通过云平台与所有用户不断的交互,会高效的扩大知识库,从而让系统更加完善.

5.2 推理机的设计

图8 诊断流程图Fig.8 Diagnostic flowchart

对于专家控制系统,推理机为核心部分[11].对于本系统,一个问题的出现可能是由多种情况导致的,则给所有情况分配一个优先级,初始值均为0,优先级高的情况优先被诊断,诊断成功后将该情况频数加1,一轮诊断后将该问题的所有情况按频数大小调整优先级.诊断推理流程如图8 所示.

5.3 规则的制定

专家系统采用产生式规则进行知识表示,系统采用判断语句作为产生式规则,其规则的一般表示形式如下:

1)If(条件1)Then(动作或结论1)

2)If(条件1)And(条件2)…(条件n)Then(动作或结论1)

Else(动作或结论2)

3)If(条件1)Then(动作或结论1)

ElseIf(条件2)Then(动作或结论2)

4)If(条件1)And(条件2)…(条件n)Then(动作或结论1)

ElseIf(条件1)And(条件2)…(条件n)Then(动作或结论2)[12]

6 结 论

考虑到目前工业领域中监控软件只能使用在当前控制系统中且不具备程序重构功能,本文通过建立指令集,并对其进行按钮化处理,使用户自己完成程序编写与修改工作.通过对不同控制系统的大量测试,可知该平台系统具有较强的通用性,操作逻辑简单,编程快速,软件会对程序进行正确性检测,指令的可读性较强,在遇到故障时有较强的处理能力,用户可以随着工艺的改变对程序进行二次修改,让编程不再是专业人员的专属,为提高工业过程控制的开发与修改效率提供了思路.

猜你喜欢
上位序号指令
《单一形状固定循环指令G90车外圆仿真》教案设计
一场史无前例的乐队真人秀
新机研制中总装装配指令策划研究
关于ARM+FPGA组建PLC高速指令控制器的研究
技术指标选股
技术指标选股
技术指标选股
技术指标选股
基础油“上位”
太空第一人