APP下载

控制系统主站编程工具开发

2023-02-06高朝阳陈凌宇王晓宇

光学精密工程 2023年1期
关键词:功能块主站插件

周 敏, 高朝阳, 陈凌宇, 王晓宇*

(1.华中科技大学 机械科学与工程学院,湖北 武汉 430074;2.国防科技大学 智能科学学院,湖南 长沙 410073)

1 引 言

可编程控制系统主站编程工具是用户实现可编程控制系统控制逻辑、控制算法的关键途径,也是连接系统硬件、总线、末端设备并实现系统控制功能的主要工具,其广泛应用于工业现场控制、数控加工、机器人等领域。由于技术涉及面广,软件开发需要长期的技术积累和不断的升级改造,加上我国工业软件基础薄弱,造成Codesys,OpenPCS等国外软件对我国工业控制软件领域的垄断局面[1]。开发符合国际标准的工业控制程序开发环境、代码生成工具链以及包含下载、调试功能的可编程控制系统的软件编程工具,是实现工业控制自主可控的重要环节。

早期的工业控制系统编程软件是在各厂商专用的硬件、操作系统、编程语言等条件下设计的,这使得组态配置方法和程序设计方法在不同产品之间的兼容性很差,技术壁垒高筑,严重影响行业的发展[2]。IEC61131-3标准的颁布,为PLC提供了逻辑编程的结构、语法、语义规范,其规定了5种标准的编程语言:梯形图(LD)、指令表(IL)、结构化文本(ST)、功能框图(FBD)和顺序功能图(SFC)[3]。采用软件定义硬件的方式,减少了用户程序开发与移植的时间,也使供应商能够专注于产品性能提升方面的工作。IEC61131-3的广泛使用,使基于工业PC的软PLC技术逐渐替代原有的硬PLC技术。在工业PC操作系统环境中,将IEC61131-3程序转换为可执行的C代码来实现PLC的控制功能的方式,很大程度上降低了PLC逻辑对硬件的依赖程度和开发难度,使程序开发越来越标准化与开放化[4]。Beremiz是一个在GNU许可下发布的,符合IEC61131-3,PLCopen,CANopen等规范的多平台开源IDE,能够实现IEC61131-3程序编写以及其向ANSI C文件的转换,并提供简单的C程序编译、下载及调试功能[5]。在Beremiz基本架构基础上进行优化和改造,形成功能完善的IDE,是实现自主可控的有效方法。不少学者通过设计改造,使Beremiz架构在数控系统开发环境[6]、机器人运动控制器[7-8]、运动规划[9]、PLC信息加密[10]等方面得到了应用。Beremiz提供了插件集成功能,用户可以根据需要集成软件生成过程中所需的系统配置相关插件以及用户编程使用的用户插件。文献[11]通过分析典型的工业通信协议,在Beremiz中集成了EtherCAT,BACnet/IP,OPC-UA等协议插件,使它生成的代码能够适应各种工业控制通信环境。文献[12]为减小运动控制算法的程序开发复杂度,将PLCopen运动控制库的功能进行了集成设计开发,在Beremiz中形成了运动控制功能库插件。此外,研究人员比较了Beremiz与商用软件的性能差异。文献[13]将Beremiz与Codesys进行了实验对比,结果表明二者的基本功能与实时性相当。

本文深入分析了Beremiz的功能原理以及实际系统对生成代码的功能需求,提出了在Beremiz通用架构下实现可编程控制系统程序开发、下载、调试的主站编程工具架构。为适应总线式控制系统的实际控制需求,设计了IDE系统插件以及主站Runtime功能组件,打通了IDE程序设计到实际系统运行相关的代码下载、转换、运行及调试通道。针对系统控制过程中的功能安全问题,安全集成功能库,从软件上则可实现对现场设备的安全逻辑设计。最后,搭建典型应用实验系统,对IDE程序设计与Runtime程序执行功能进行了测试,验证了所提出的主站编程工具的功能完善性。该主站编程工具支持90%以上IEC61131-3标准的特性,生成运行时系统的稳定性是工业级的,在FBD灵活性、SFC支持特性方面具有一定优势,操作也更为简单直观,尤其是项目级插件的设计,可为平台不断积累行业知识,形成数字资产库,为后续项目的快速构建提供了有力支撑。

2 自主可控主站编程工具分析与设计

2.1 主站编程工具架构

主站编程工具是实现用户可视化程序编辑、编译、下载和运行等功能的软件系统,由IDE和Runtime构成。IDE是为用户提供程序开发的应用程序,包括程序编辑器、编译器、图形用户界面(GUI)等。用户可根据实际系统的控制需求,采用符合IEC61131-3标准的编程语言进行系统程序开发。编译器将IEC61131-3代码编译后传输到Runtime。Runtime集成在可编程控制系统主站中,根据主站操作系统运行环境将IDE生成的代码再次编译,生成可执行程序作为系统的应用程序。组件管理器是每个运行环境中不可或缺的核心组件,用于管理和控制运行环境中所有组件。此外,系统应用程序还需要实现用户HMI通信、控制现场总线等功能来保证可编程控制系统的正常运行。图1为可编程控制系统典型的主站编程工具架构原理。

图1 典型的主站编程工具原理Fig.1 Architecture schematic of typical master programming tool

2.2 Beremiz原理

Beremiz是一个跨平台的开源IDE,为自动化、机器人、可编程控制系统等提供符合IEC61131-3,PLCopen等标准的程序开发、编译及下载功能。本质上,Beremiz提供了一个开源的IEC61131-3框架,主要由前端PLCopen编辑器、后端MatIEC编译器以及用户可开发的插件构成。其中,PLCopen编辑器由Python语言编写,支持IEC61131-3规范中定义的IL,LD,FBD,ST,SFC五种编程语言的GUI界面。为用户提供IEC61131-3标准程序开发界面,并根据PLCopen标准TC6-XML方案对程序进行导入和导出,实现符合PLCopen标准的IEC 61131-3语言编辑器之间的项目交换。

MatIEC编译器可将图形语言FBD,LD转换为ST,也可将ST代码编译转换成为ANSI C代码。

插件为用户提供IEC61131-3标准代码开发之外的系统级或用户级的功能库集成方法。IEC61131-3纯逻辑代码在相关系统中运行离不开通信协议、数据交换等功能,用户通过实际系统需要开发相关的插件对IEC61131-3代码进行协议、系统配置等相关的补充,使生成的代码适应目标运行系统。

Beremiz系统构成原理如图2所示。用户在PLCopen编辑器内根据控制系统功能需求编写IEC61131-3标准的程序代码。在Beremiz插件树中设计并集成系统运行相关的系统插件以及用户编程使用的用户插件,生成主从站系统运行所需的通信协议、HMI协议、运动控制库等相关的C文件。MatIEC编译器将PLCopen编辑器中IEC61131-3标准代码转换为ANSI C代码。所有ANSI C代码由主站Runtime接收,通过联合编译后生成可执行文件,最终运行在主站系统中。

图2 Beremiz系统原理Fig.2 Schematic diagram of Beremiz system

2.3 自主可控主站编程工具架构

利用PLCopen编辑器和MatIEC编译器实现可视化编程功能,通过设计并集成用户代码与实际总线系统运行所需的系统插件,为IDE代码提供协议相关的功能库支持,即可形成功能完善的集成开发环境。在运行Linux操作系统的目标系统中,设计具有代码接收管理、应用程序编译生成、底层通信API操作等功能的组件,可实现运行环境的主要功能。本文提出的基于Beremiz开源IDE的自主可控主站编程工具架构如图3所示。

图3 自主可控主站编程工具架构及原理Fig.3 Architecture and schematic diagram of autonomous and controllable master programming tool

IDE主要以PLCopen编辑器、MatIEC编译器、插件管理组件、可视化远程调试组件构成。PLCopen编辑器提供用户IEC61131-3程序开发GUI。MatIEC实现IEC61131-3标准程序向ANSI C的转换。可视化远程调试组件通过与运行环境的数据交换,在PLCopen编辑器用户代码中实现数据显示、在线修改等调试功能。在插件管理组件中,按照PLCopen XML接口规范设计IEC61131-3程序在目标系统中运行所需的系统功能库插件以及用户可扩展的逻辑功能库插件。

Runtime集成在可编程控制系统主站中,主要由程序接收组件、编译器控制组件、程序调试组件、应用层协议组件和通信外设操作组件构成。程序接收组件控制程序加载接口将IDE生成代码接收后传输至编译器控制组件,通过调用编译器生成主站操作系统可执行的应用程序。应用层协议组件集成了主从站系统通信所需的应用层协议栈,保证应用程序按照规定的协议实现数据收发调度。通信外设操作组件则提供主站与外部设备通信所需的底层接口操作库,包括现场总线收发接口库和用户HMI通信接口库。程序调试组件建立与应用程序的数据交换通道。在调试状态时,程序调试组件通过程序调试接口将IDE中用户修改的代码变量更新至应用程序中,还将应用程序中各变量读取后发送至IDE,实现调试功能。

3 IDE系统插件分析与设计

用户编写的IEC61131-3代码可实现可编程控制系统的复杂逻辑控制功能。但是,在实际的总线式控制系统中,需要将控制逻辑与总线操作规范相结合,达到通过总线数据交换来实现逻辑代码对总线设备控制的目的。

本文通过设计、开发可被IDE识别并加载的插件,实现了IEC61131-3生成代码和已有的本地代码的综合。因此,除两者之间的数据访问接口外,还要为IDE设计统一的调用、注册和代码生成接口,IDE启动后会根据注册信息动态加载插件类,在生成代码时动态调整本地代码的数据访问接口,实现与生成代码的综合,其设计的主要难点在于它是基于高度动态性,且具有一定的模板编程能力。

3.1 IDE代码功能架构

在自研可编程控制系统中,现场总线采用NCUC2.0实时以太网总线实现链路层数据的传输。应用层采用CANopen协议。主站通过NCUC2.0读写各从站对象字典采集末端设备的控制与状态。Modbus/TCP总线用于实现主站与用户HMI设备的通信。因此,建立IEC61131-1逻辑代码与NCUC2.0总线、Modbus/TCP总线的操作接口及功能库,是实现总线控制与HMI数据交互的必要条件。

在IDE中设计总线组态插件与HMI数据访问插件,用户可根据实际系统连接状态通过可视化界面设置NCUC2.0总线和Modbus/TCP总线运行相关参数、协议相关参数。配置完成后,总线组态插件和HMI数据访问插件会分别生成NCUC2.0总线操作功能库和Modbus/TCP总线从操作功能库,连同用户IEC61131-3程序生成的ANSI C代码一并下载到主站。主站POU运行过程中,通过调用插件生成的功能库可以实现对现场总线设备以及HMI设备的操作。IDE代码生成结构与功能原理如图4所示。

图4 IDE代码生成功能原理Fig.4 Schematic diagram of IDE code generation function

3.2 总线组态插件

总线组态是将现场总线上从站数量、节点号、各从站类型、从站操作方法等描述作为配置文件的形式集成在主站中,使主站可以清晰地掌控所需要控制的总线链路上所有硬件设备的完整信息的过程, 也是总线式控制系统正常运行的必要条件。

在图4所示的现场总线架构中,NCUC2.0总线操作功能库不仅需要满足NCUC2.0总线链路层数据传输的基本协议要求,还应符合CANopen应用层数据的传输及操作规范。根据NCUC2.0总线通道的数据传输要求,将NCUC2.0总线初始化、通道传输等总线操作以功能函数的形式集成在.c文件库中。此外,将CANopen协议状态机、PDO配置、OD配置等指令发送过程以函数的形式整合在.c文件库中。最终,形成的多个C文件作为IEC61131-3代码总线操作功能库一起下载到主站中。最后,在IDE中设计用户可视化配置界面作为插件与用户的数据传输接口。总线组态插件功能原理如图5所示。

图5 总线组态插件功能原理Fig.5 Function schematic diagram of bus configuration plug-in

根据NCUC2.0实时以太网总线工作原理,在建立正常通信之前需要对各从站NCUC控制器进行配置,这包括各从站地址配置、通道配置、映射配置、DC时钟配置、中断配置等。因此,分别设计Addr.c,Channel.c,Mapping.c,DC_clk.c,IRQ.c操作函数,并在函数中定义了NCUC2.0关于站地址、通道、映射、DC时钟、中断的配置的底层总线收发帧操作流程。这样,用户只需要根据总线使用需求,在IDE总线配置界面中输入相关的配置参数,插件将各参数导入到总线配置参数中,生成具有总线配置功能的NCUC_cfg.c文件。NCUC2.0总线初始化部分代码如下:

在CANopen协议中,从站对末端设备的控制和状态监控都是基于对象字典来实现的。主站通过现场总线修改和读取各从站对象字典中的参数,则可实现基于现场总线的设备控制。在IDE中设计对象字典编辑界面,用户根据实际系统中各从站节点号、类型进行对象字典编辑,形成系统中各从站对象字典文件。最终,生成包含总线上所有从站对象字典信息的主站对象字典Master_OD.c文件。

CANopen中实现周期数据传输的过程通道(PDO)在初始状态时为关闭状态,用户需要通过服务数据通道(SDO)配置并打开。PDO的相关配置主要包括PDO通道数量、TPDO参数及映射,以及RPDO参数及映射。在IDE中设计从站PDO配置界面,用户可根据各从站需要进行周期性传输对象的索引号、子索引号、数据格式进行PDO相关配置。然后,插件根据配置结果,将实现各从站PDO配置的CANopen数据帧按顺序打包形成PDO配置函数。最后,再将各从站PDO配置函数合并为PDO_cfg.c文件。

3.3 HMI数据访问插件

HMI设备是实现系统人机交互的终端设备。通过与主站建立通信关系,用户可以在HMI界面上通过指令下达来控制整个系统。此外,用户也可以通过HMI界面实时显示由主站上传的系统的关键参数状态。

在自研可编程控制系统中,HMI设备采用基于以太网链路的Modbus/TCP协议与PLC进行通信。因此,以插件形式构建HMI设备与主站IEC61131-3代码的数据交换通道是人机界面操作功能实现的关键。Modbus协议提供了数据访问规范,但直接以IEC61131-3代码中变量作为Modbus数据区会影响IEC61131-3代码执行的可靠性。设计独立于IEC61131-3代码的数据区,并建立数据区与代码变量之间的映射关系,通过周期性更新数据区与代码变量实现HMI数据访问的功能。HMI数据访问插件原理如图6所示。

图6 HMI数据访问插件功能原理Fig.6 Functional schematic diagram of HMI data access plug-in

根据Modbus协议规范,设计索引为0x0000~0xFFFF的Modbus数据区,实现与用户HMI的数据交换。在IDE中设计Modbus参数映射编辑界面,用户通过界面配置逻辑代码中的变量与Modbus数据区的数据映射关系表,建立IEC61131-3程序变量与Modbus数据之间的联系。设置Modbus数据更新周期,使IEC61131-3代码中被HMI监控的变量周期性地写入Modbus数据区。同时,IEC61131-3代码中被HMI控制的变量也跟随Modbus数据区周期性地更新。插件最终生成Modbus_operation.c操作函数和数据区Modbus_data.c库文件。

4 主站运行环境设计

主站Runtime是集成在主站中用于管理IDE生成代码的编译、执行等功能的相关所有软件组件的集合,也是主站编程工具的重要组成部分。

4.1 主站Runtime功能

IDE解决了面向用户使用的前端程序开发问题,主站Runtime则需要实现ANSI C代码下载、编译、执行、调试的功能。由于IDE与Runtime都在PC平台上运行,因此通过标准以太网接口使用TCP/IP协议在不同状态下分别进行代码和数据的传输,可以简单、高效地实现程序下载及调试功能。GCC是功能强大的开源编译器,可将C语言编译生成可执行文件,因而被Linux等系统作为标准编译器广泛使用。因此,在主站中集成GCC编译器是实现IDE代码编译功能的有效手段。主站Runtime还需要建立主站与外设接口的底层操作接口API,实现现场总线通信控制、HMI设备数据交换功能。

主站Runtime功能原理如图7所示,Runtime由组件管理器、程序调试组件、Modbus收发组件、NCUC收发组件和协议栈组件构成。其中,组件管理器是Runtime中管理各组件的关键组件,主要功能是加载和初始化其他组件,使各组件与软PLC之间相互调用和数据交换。用户使用IDE设计开发逻辑程序后在界面中发送程序下载指令,组件管理器通过控制程序下载接口,接收IDE发送的ANSI C代码,然后调用GCC编译器对ANSI C代码进行联合编译生成主站可执行程序。用户进行程序调试时,Runtime中程序调试组件通过程序调试以太网接口,将IDE中程序变量与POU中变量同步更新,实现IDE可视化调试功能。Runtime中Modbus收发组件、NCUC收发组件根据Modbus/TCP和NCUC2.0通信链路底层接口收发操作规范分别形成了通信收发API库,为软PLC代码执行提供外设操作库。由于自研可编程控制系统采用CANopen协议作为应用层协议,在POU中实现对各从站的通信控制必须遵循CANopen协议中NMT,SDO,PDO的传输规范。因此,在总线协议栈组件中集成CANopen协议栈供POU调用,为POU总线通信控制过程提供协议支持。

图7 主站Runtime功能原理Fig.7 Schematic diagram of main station runtime function

4.2 组件管理器程序流程

在Runtime中,组件管理器通过对各功能组件以及主站其他模块的管理,建立了与IDE的交互通道,也构建了功能完善且能够独立运行的Runtime环境。

组件管理器程序流程如图8所示。在上电之初,组件管理器初始化Runtime中其他功能组件。然后,读取硬盘中上次掉电时设置的上电启动状态,若为运行态,则加载硬盘中软PLC代码并运行。此时,若IDE发送调试指令,组件管理器启动程序调试组件通过程序调试网口建立IDE调试通道,调试过程中若IDE发送结束指令,则结束调试运行过程。若上电启动状态为下载态,则开始等待程序下载网口数据。当程序下载网口检测到IDE下载握手信号时,组件管理器开始操作网口接收代码数据。接收完成后调用GCC编译器,将ANSI C编译后生成主站可执行的软PLC代码并存在硬盘中。

图8 组件管理器程序流程Fig.8 Flow chart of component manager program

4.3 Runtime功能组件

Runtime功能组件为主站软PLC代码实现IDE调试相关数据通信、NCUC2.0总线通信控制、用户HMI设备数据交换提供了相关的底层接口操作函数和通信协议支持。根据实际设备所采用的通信链路和协议,设计程序调试组件、Modbus收发组件、NCUC收发组件、总线协议栈组件分别实现IDE调试、总线控制、HMI通信功能。

4.3.1 程序调试组件

用户进行IEC61131-3程序设计时,需要对所有程序中变量的类型、数据格式、初始值进行定义,形成用户程序变量表。通过下载和重编译,用户程序变量表在Runtime中生成了PUO程序变量表,二者结构及变量是一致的。

在Runtime中设计程序调试组件,周期性地将POU程序变量表中的所有数据读取,按照帧结构定义将各变量组合形成以太网帧,通过程序调试以太网口发送至IDE中用户程序变量表中,实现IDE界面对POU中各变量的在线监视。当用户在IDE程序GUI中修改用户程序变量表中的变量值时,新修改的变量通过以太网帧发送至主站程序调试以太网口。程序调试组件将收到的网络帧解析后写入POU程序变量表,实现在线参数修改功能。为了避免对POU程序变量表中参数进行同时读写操作,设计写优先机制。在接收到IDE发送的参数修改帧时,暂停读操作,待写入完成后继续。程序调试组件工作原理如图9所示。

图9 程序调试组件工作原理示意图Fig.9 Schematic diagram of working principle of program debugging component

4.3.2 Modbus收发组件

用户HMI设备采用Modbus/TCP通信协议实现对软PLC代码中Modbus数据区的数据访问。设计如图10所示的Modbus收发组件,集成Modbus/TCP协议,作为Modbus/TCP链路中从站设备接收来自用户HMI设备指令。HMI收发组件接收到网络数据帧后,根据Modbus/TCP协议解析网络数据帧中事务处理标识、协议标识符、长度、单元标识符、功能码和数据信息。若功能码为写操作,则根据数据地址、长度将数据写入Modbus数据区中。若功能码为读操作,则根据数据地址、长度将Modbus数据区中相应数据读出并按Modbus/TCP数据帧格式组帧后通过HMI以太网口发送至用户HMI设备。

图10 Modbus收发组件工作原理示意图Fig.10 Schematic diagram of working principle of Modbus transceiver components

4.3.3 NCUC收发组件

NCUC2.0实时以太网总线基于IEEE802.3以太网数据传输格式,将各从站CANopen数据帧集成在网络数据帧中的NCUC报文区域内,通过线型级联网络拓扑架构实现对总线上各从站的通信数据交换。设计如图11所示的NCUC收发组件,建立与总线协议栈组件和总线上各从站通信链路。NCUC收发组件根据总线协议组件的CANopen数据帧收发调度指令,将各从站CANopen帧格式转换为NCUC2.0数据帧格式后,调用网口发送API将数据帧发送至总线。数据帧经过各从站处理后返回至总线以太网口,NCUC收发组件将数据帧接收后解析成各从站CANopen返回帧格式,并送总线协议栈组件进行处理。此外,NCUC2.0数据帧格式通过读取NCUC_cfg.c总线配置函数进行设置。NCUC收发组件的工作原理如图11所示。

图11 NCUC收发组件工作原理示意图Fig.11 Schematic diagram of working principle of NCUC transceiver components

4.3.4 总线协议栈组件

总线协议栈组件是集成CANopen CiA301协议的通信协议栈,通过POU调用实现符合CANopen协议的通信收发逻辑。总线协议栈组件集成了开源的CANfestival库作为CANopen协议栈,可实现通信收发调度管理、节点管理、PDO传输、SDO传输、同步对象等协议相关的所有操作。在组件管理器初始化总线协议栈组件时,根据总线组态插件中PDO配置函数PDO_cfg.c对各从站PDO进行配置。正常运行状态下,协议栈被POU调用,将主站对象字典中数据以CANopen帧形式发出至NCUC收发组件。在收到NCUC收发组件返回的CANopen帧后,调用协议栈对主站对象字典进行更新处理。

5 安全集成功能库设计

在工业生产和设备制造中,人员与设备的安全是系统工作过程中必须考虑的首要因素。而工业控制现场安全保护措施一般采用电气互锁或是自行编写安全逻辑程序实现。电气互锁的复杂性和应用开发者的差异性导致实际安全功能难以满足需求,甚至可能造成事故。针对可编程控制系统中运动控制部件的安全问题,本文根据PLCopen功能块开发规范,设计IEC61800-5-2安全功能库,并以用户插件的形式集成在IDE中,实现软件定义安全的功能。

5.1 功能库的实现原理

IEC61800-5-2对调速电气设备提出了17项安全功能建议,包括运动设备的停止功能、状态监视功能和安全输出功能三类。利用IDE用户可扩展插件功能,采用IEC61131-3语言或C语言对各项功能进行描述设计,并采用PLCopen XML接口规范定义接口,最终形成包含17项安全功能块的安全功能库(Safety)。在进行IDE程序开发时,根据系统安全要求,通过拖拽的方式调用功能库中安全功能块进行安全相关的程序设计。

图12展示了安全集成功能库的使用原理。用户进行IEC61131-3程序开发时,调用安全集成功能库插件,将插件中安全功能块与用户程序逻辑关联,实现安全功能。根据实际系统设备的工作状态,用户可根据逻辑执行过程中的异常状态调用安全停止功能块使设备停止,也可以根据安全监视功能块对设备运动过程中转矩、速度、加速度、位置、温度等参数进行实时监控。当参数超过设定的安全区间后,调用安全停止功能块来停止设备。同时,也可以通过安全输出功能块对外部安全设备(如抱闸制动等设备)进行控制,保证设备安全运行。安全集成功能库插件通过GCC编译后,作为Runtime中主站POU的Safety.c功能库被POU调用。

图12 Safety功能实现原理Fig.12 Schematic diagram of implementation of safety function

5.2 安全集成功能库

根据IEC61800-5-2规范对各项安全功能的描述,采用FBD对安全功能块进行接口描述和逻辑算法设计。由于文章篇幅限制,根据安全功能分类,以典型的安全停止1(SS1)以及安全速度范围(SSR)安全功能为例进行具体描述。

SS1的功能被定义为,在设定的限值内启动并控制(监视)电机减速使电机停止,当电机速度低于规定的限值时,启动STO功能;或在应用规定的时间延时后,启动电机减速并启动STO功能。因此,SS1功能块具有两种工作模式,分别为基于时间停止模式和基于速度停止模式。SS1功能块时序原理如图13所示。

图13 SS1功能块时序图Fig.13 Sequence chart of SS1 function block

SS1功能块接口如表1所示。在基于时间停止模式时,SS1信号下降沿会触发SS1功能。此时,SS1功能块会以恒定的减速度Dcc控制Axis_id电机进行匀减速运动。SS1_st由低变高,表示SS1功能正在执行。经过t_d1时间后,根据设定减速度,电机应减速至设定的速度范围[-vel_th,vel_th]内。此时,将STO_st输出至高,控制STO功能模块执行STO操作。SS1_st输出由高变低,表示SS1功能已经结束。在基于速度停止模式时,SS1信号下降沿会启动SS1停止功能,以设定的减速度Dcc控制轴号为Axis_id的电机进行匀减速运动。当电机的实际速度减低至[-vel_th, vel_th]时,开始监控电机速度。在t_d2时间内,若电机的实际速度vel_fd仍处于[-vel_th,vel_th]内,则经过t_d3延时后启动STO;否则,输出错误。

表1 SS1功能块接口定义Tab.1 SS1 function block interface definition

SSR功能块主要通过监视电机运行速度是否在设定的上限和下限之内,当实际速度超过设定速度范围时,SSR输出有效电平,用户通过SSR输出电平状态实现安全停止等其他功能操作。设计SSR功能块,输入信号包括SSR使能、电机轴号、上限速度、下限速度、实际速度和时间阈值,输出信号为SSR状态。时序逻辑如图14所示。

图14 SSR功能块时序图Fig.14 Sequence chart of SSR function block

在启动SSR功能块之前,设置电机轴号、速度上限、速度下限和延时时间,并将电机实际速度输入至SSR功能块。控制SSR信号节点电平为低,启动SSR功能块。当实际速度超过设定范围后,等待延时时间t_d。此时,实际速度仍超过速度的上下限,则SSR_st输出为高,表示实际速度超过设定范围。同理,当实际速度回归至设定区间后,等待延时时间t_d,SSR_st输出为低,表示实际速度满足设定要求。

6 实 验

6.1 实验平台原理及构成

图15 可编程控制系统实验设备构成原理框图Fig.15 Schematic block diagram of experimental equipment for programmable control system

本文采用自研的可编程控制系统主从站及外设对主站编程工具进行功能测试。平台设备构成及连接原理如图15所示。采用嵌入式PC作为系统主站,通过NCUC2.0实时以太网总线将1个数字量IO从站和2个运动控制从站相连。数字量IO从站节点号为2号,外接IO接口板作为开关量信号输入或输出的接口。两个运动控制从站节点号分别为3和4,分别控制1个伺服驱动器实现对伺服电机的运动控制。在PC上运行自研IDE,开发IEC61131-3用户代码,通过主站网口下载至主站Runtime中并运行,控制各从站外设实现既定的控制功能。此外,HMI组态屏与主站采用Modbus/TCP通信协议进行人机交互。

根据图15所示的实验设备原理搭建硬件平台,如图16所示。

图16 可编程控制系统实物连接图Fig.16 Physical connection diagram of programmable control system

在IDE中进行IEC61131-3程序开发,编译后下载至主站Runtime中运行。通过实验说明IDE程序开发和下载过程,以及主站Runtime运行程序后对各从站的控制情况,验证本文所提出的主站编程工具的功能完整性。

6.2 编程开发过程

图17展示了上述功能在IDE中程序开发过程。首先,根据总线上从站连接关系、节点号、从站类型等状态在插件配置界面中进行总线组态配置。然后,在IEC61131-3程序开发界面进行程序的编写,再在IDE中对编写的程序进行C代码构建。最后,下载到主站Runtime中。在主站Runtime运行过程中,通过可视化调试界面可以实现对程序中变量的在线监控和修改。

图17 IDE程序设计开发流程Fig.17 IDE program design and development process

6.3 实验设计

在实验系统硬件平台基础上,按上述编程开发过程可实现对外设的灵活编程控制。本文对典型的数字量IO控制、电机速度及位置控制为例,对主站编程工具进行功能验证。

在IDE中设置总线通信周期为1 ms,控制数字量IO从站以100 ms为周期将输出口电平取反,通过示波器可观察程序执行状况。设置扫描周期为20 ms,控制数字IO从站以1 s为周期进行流水灯控制,通过IDE的在线调试功能验证逻辑的正确性。将伺服驱动器设置为位置模式,通过运动控制从站发送脉冲信号控制电机1和电机2运动。在IDE中编写运动控制从站指令发送逻辑,以1 s间隔交替发送±600 r/min的速度指令,电机2以1 s间隔交替发送±360°的位置指令以及300 r/min的速度指令。利用主站记录从站中电机实际速度和实际位置的反馈数据。

6.4 实验结果

图18 系统外设实验结果Fig.18 System peripheral experiment result

图18展示了主从站系统正常运行时各从站外设运行状态。从图18(a)可以看出,数字量IO从站外设接口板的DO_0~DO_2输出接口呈现幅值为0~24 V,频率为5 Hz的方波。当采用T#20 ms扫描周期设计跑周期为1 s的流水灯程序控制时,IDE调试工具呈现的IO波形图显示每个IO持续时间为T#1 s,运行结果与设计保持一致,如图18(b)所示。图18(c)为运动控制从站(ID=3)控制的电机1的实际速度曲线。从t=0.685 s开始,电机1速度曲线近似幅值为600 r/min,频率为0.5 Hz的方波。图18(d)为运动控制从站(ID=4)控制的电机2的实际位置曲线。从t=0.485 s开始,电机2以±360°的指令往复运动。综上,各外设运行状态与程序设计一致。实验结果表明,本文设计的自主可控主站编程工具可实现IEC61131-3程序开发、编译、下载、调试等功能。

7 对标情况及应用推广可行性分析

本项目主站编程工具整体对标328项,其中不 支 持20项,可 等 效 替 换 项 为3项[14],与IEC61131-3标准[15]符合度达90%以上。因此,在实际应用的推广过程中,任何符合IEC61131-3标准的控制程序,只要与上述特性无关,均可在本项目的主站编程工具上通过编译并正常执行,本文实验采用的IO和伺服电机的控制逻辑,都是IEC61131-3标准的代码,验证了系统的控制性能,可满足各行业的相关控制需求,实现国产化替代。

8 结 论

本文针对可编程控制系统软件开发工具自主可控的问题,以开源的IEC61131-3编程平台Beremiz为基础,提出了一种针对自主可控主从站硬件系统和NCUC2.0实时以太网总线的主站编程工具架构。在Beremiz环境中设计了总线组态和HMI数据访问插件,为主站逻辑代码实现现场总线通信控制和HMI设备数据访问提供了功能库支持。根据主站运行过程中通信收发底层的操作需求,在Runtime中设计了通信相关的收发操作组件,形成了内部POU逻辑和外部设备的连接通道。通过分析运动设备的安全运行问题,设计符合IEC61800-5-2规范的安全集成功能库,使功能安全能够在软件上集成设计。最后,搭建可编程控制系统实验平台,验证了主站编程工具程序开发、编译、下载、调试功能。由此表明,我们已经初步掌握可编程控制系统软件开发工具自主可控的设计方法。

猜你喜欢

功能块主站插件
三种国外集散控制系统(DCS)功能块扫描规则和执行顺序的分析和总结
自编插件完善App Inventor与乐高机器人通信
基于S7-1200 PLC的DP总线通信技术在马里古伊那水电站泄洪冲沙孔门机上的应用
变电站综合自动化系统调试新方法研究
Ovation系统FIRSTOUT和FIFO跳闸首出比较
EtherCAT主站与主站通信协议的研究与实现*
基于jQUerY的自定义插件开发
多表远程集抄主站系统
自定义功能块类型在电解槽联锁中的应用
基于Revit MEP的插件制作探讨