论文部分内容阅读
【摘 要】论文旨在探讨在工业控制领域PLC程序的智能化开发问题。通过对罗克韦尔Logix平台的研究与分析,在掌握了RSLogix 5000工程文件的格式和编码规范的基础上,以轨道交通BAS系统PLC开发为应用例子,采用Microsoft C#语言实现了BAS系统的智能化开发。
【Abstract】The paper aims to explore the intelligent development of the PLC program in the field of industrial control. Through researching and analyzing the Logix platform of Rockwell, and on the basis of mastering the format and encoding specifications of RSLogix5000 project file, the paper takes the PLC development of rail transit BAS system as an application example, and realizes the intelligent development of BAS system by using Microsoft C # language.
【关键词】PLC;智能开发;Logix平台;工业控制
【Keywords】PLC; intelligent development; Logix platform; industrial control
【中图分类号】TP273 【文献标志码】B 【文章编号】1673-1069(2019)02-0170-02
1 引言
在工业控制系统内,一个PLC控制器往往需要对几百甚至上千个设备进行监控,每个设备又有若干个不同的监控点。PLC编程的过程中,需要将这些设备的监控点规划分配到PLC程序里,这将是一件极度烦琐而又容易出错的工作。传统的工业控制PLC系统开发流程是先在Excel文档里对所有的监控点进行规划分配,然后再将规划好的设备监控点填入到PLC程序里[1]。
2 Logix平台简介
罗克韦尔自动化Logix平台提供了单一的集成化控制构架,能够实现离散、传动、运动以及过程控制。这种集成式的Logix控制构架提供了通用的控制引擎、软件编程环境和跨多硬件平台的通讯支持。
3 工程定义
工程定義主要由工程本身属性定义、用户数据类型、模块组态定义、用户指令、TAG变量、PLC程序、PLC任务等组成,格式为:CONTROLLER 工程名称 (ProcessorType := “控制器类型”,Major := 程序主版本号,[其他工程属性 := 属性定义]),[用户数据类型]、[模块组态定义]、[用户指令]、[TAG变量]、[PLC程序]、[PLC任务]、[其他定义]、END_CONTROLLER,其中工程本身属性定义包括指定工程名称、控制器类型、程序主版本号等。
第一,用户数据类型,格式为:DATATYPE 用户数据类型名称,[各数据成员定义]、END_DATATYPE;其中各数据成员定义格式为:数据类型 : 成员名称;数据类型可以是内置类型(BOOL、INT、DINT、COUNTER、TIMER、CONTROL等)也可以是用户定义的数据类型。
第二,模块组态定义,格式为:MODULE 模块名称 (Parent := “父节点模块名称”,CatalogNumber := “模块型号”,[其他模块属性 := 属性定义]);[模块配置等定义]、END_MODULE;模块以属性Parent说明模块关联的父节点模块。PLC控制器模块名称默认为与工程一致,Parent属性默认为Local,本地模块的Parent皆为Local。
第三,用户指令,格式为:、ADD_ON_INSTRUCTION_DEF
INITION 指令名称([指令创建信息]),PARAMETERS,[各指令参数定义],END_PARAMETERS,LOCAL_TAGS,[各本地标签定义],END_LOCAL_TAGS,ROUTINE Logic,[例程各逻辑定义],END_ROUTINE,END_ADD_ON_INSTRUCTION_DEFINIT
ION,其中参数定义和本地标签定义格式见下面TAG变量定义部分。例程每一行逻辑以“N:”开始,以“;”结束。
第四,TAG变量,格式为:变量名 : 数据类型(显示样式) := 默认值;其中数据类型可以是内置类型或者用户定义类型。
第五,PLC程序,格式为:PROGRAM MainProgram (MAIN := "主例程名称")TAG,[各本地TAG变量],END_TAG,ROUTINE 例程名称,[例程各逻辑定义],END_ROUTINE,END_PROGRAM,各本地TAG变量定义见TAG变量定义部分,例程每一行逻辑以“N:”开始,以“;”结束。 第六,PLC任务,格式为:TASK MainTask (Type := 任务类型),[任务内各程序];,END_TASK
任务类型分为三种:连续性任务、周期性任务和事件触发任务。任务内程序必须是PLC程序部分定义了的程序名称。
4 编程实现PLC智能开发系统
在轨道交通BAS系统中,BAS系统的PLC除了对它们进行实时监控外还需要向综合监控系统上传设备的状态信息,同时接收综合监控系统命令并下发给设备以执行相应动作[2]。因此BAS系统的设计开发流程需要统一规范,一般分为以下几个工作:①将设计院蓝图设计好的监控设备点分配到指定的远程IO控制箱具体模块点位上,形成设备监控点表文件,此为BAS-设备IO映射过程;②分门别类规划好各种设备在综合监控系统上的地址,形成数据点表文件,此为综合监控-BAS IO映射过程;③设计各种设备PLC驱动程序,程序以功能块形式封装,方便调用;④根据远程IO箱的模块配置信息组态IO模块;⑤将①和②映射好的数据分别填到设备驱动功能块参数上,至此基本完成一个完整的BAS PLC程序。
BAS智能开发系统主要就是对以上的④和⑤实现自动化。
4.1 实现自动组态
系统自动组态的前提条件是获取IO模块组态信息,以下提供了一种最简单的模块组态信息定义格式:
[DI,DO,CE,AI,AO; DI,DO,CE,AI,AO]
其中,中括号将不同的远程IO箱模块隔开,IO箱内以“;”间隔每个通信模块上的IO模块(往往一个通信模块会带若干个IO模块),而每个模块的类型又以DI、DO、AI、AO或CE形式表示,并以“,”隔开,其中CE表示的是模块之间连接的扩展电缆。
智能开发系统读取模块组态信息,通过图1所以流程完成对模块组态信息的分析,并最终形成RSLogix 5000工程文件模块组态定义部分。
4.2 實现自动编程
PLC程序设备驱动功能块一般都包括输入输出参数,输入参数对应BAS-设备IO映射数据,输出参数对应综合监控-BAS IO映射数据。功能块内部逻辑程序以文本的形式固化在程序模板上。因此,将IO映射数据填写到相应的功能块输入输出参数上便实现了BAS系统PLC的自动化编程。具体流程如图2所示。图3所示为采用Microsoft C#语言实现的BAS智能开发系统的软件界面。经过现场实地使用,发现软件大大提高了工程开发和调试的效率,PLC程序出错率大大降低。
5 结论及展望
①通过对RSLogix 5000工程文件的格式以及规律的分析,结合现有的BAS系统设计开发流程,实现了BAS系统的智能化开发[3]。②在实际应用过程中,智能开发系统能够极大降低BAS系统开发过程的重复劳动,从而提高工作效率,减少逻辑程序出错的概率。③本文仅仅实现了Logix平台的智能化开发,由于标准不统一,不同的自动控制系统平台有着不同的工程文件格式,后续的工作应该努力将智能化开发应用到多种平台上。
【参考文献】
【1】薛迎成.罗克韦尔PLC技术基础及应用[M].北京:中国电力出版社,2009.
【2】邓李.ControlLogix系统实用手册[M].北京: 机械工业出版社,2008.
【3】黄允凯,谈英姿. 深入浅出NetLinx网络架构[M].北京: 机械工业出版社,2009.
【Abstract】The paper aims to explore the intelligent development of the PLC program in the field of industrial control. Through researching and analyzing the Logix platform of Rockwell, and on the basis of mastering the format and encoding specifications of RSLogix5000 project file, the paper takes the PLC development of rail transit BAS system as an application example, and realizes the intelligent development of BAS system by using Microsoft C # language.
【关键词】PLC;智能开发;Logix平台;工业控制
【Keywords】PLC; intelligent development; Logix platform; industrial control
【中图分类号】TP273 【文献标志码】B 【文章编号】1673-1069(2019)02-0170-02
1 引言
在工业控制系统内,一个PLC控制器往往需要对几百甚至上千个设备进行监控,每个设备又有若干个不同的监控点。PLC编程的过程中,需要将这些设备的监控点规划分配到PLC程序里,这将是一件极度烦琐而又容易出错的工作。传统的工业控制PLC系统开发流程是先在Excel文档里对所有的监控点进行规划分配,然后再将规划好的设备监控点填入到PLC程序里[1]。
2 Logix平台简介
罗克韦尔自动化Logix平台提供了单一的集成化控制构架,能够实现离散、传动、运动以及过程控制。这种集成式的Logix控制构架提供了通用的控制引擎、软件编程环境和跨多硬件平台的通讯支持。
3 工程定义
工程定義主要由工程本身属性定义、用户数据类型、模块组态定义、用户指令、TAG变量、PLC程序、PLC任务等组成,格式为:CONTROLLER 工程名称 (ProcessorType := “控制器类型”,Major := 程序主版本号,[其他工程属性 := 属性定义]),[用户数据类型]、[模块组态定义]、[用户指令]、[TAG变量]、[PLC程序]、[PLC任务]、[其他定义]、END_CONTROLLER,其中工程本身属性定义包括指定工程名称、控制器类型、程序主版本号等。
第一,用户数据类型,格式为:DATATYPE 用户数据类型名称,[各数据成员定义]、END_DATATYPE;其中各数据成员定义格式为:数据类型 : 成员名称;数据类型可以是内置类型(BOOL、INT、DINT、COUNTER、TIMER、CONTROL等)也可以是用户定义的数据类型。
第二,模块组态定义,格式为:MODULE 模块名称 (Parent := “父节点模块名称”,CatalogNumber := “模块型号”,[其他模块属性 := 属性定义]);[模块配置等定义]、END_MODULE;模块以属性Parent说明模块关联的父节点模块。PLC控制器模块名称默认为与工程一致,Parent属性默认为Local,本地模块的Parent皆为Local。
第三,用户指令,格式为:、ADD_ON_INSTRUCTION_DEF
INITION 指令名称([指令创建信息]),PARAMETERS,[各指令参数定义],END_PARAMETERS,LOCAL_TAGS,[各本地标签定义],END_LOCAL_TAGS,ROUTINE Logic,[例程各逻辑定义],END_ROUTINE,END_ADD_ON_INSTRUCTION_DEFINIT
ION,其中参数定义和本地标签定义格式见下面TAG变量定义部分。例程每一行逻辑以“N:”开始,以“;”结束。
第四,TAG变量,格式为:变量名 : 数据类型(显示样式) := 默认值;其中数据类型可以是内置类型或者用户定义类型。
第五,PLC程序,格式为:PROGRAM MainProgram (MAIN := "主例程名称")TAG,[各本地TAG变量],END_TAG,ROUTINE 例程名称,[例程各逻辑定义],END_ROUTINE,END_PROGRAM,各本地TAG变量定义见TAG变量定义部分,例程每一行逻辑以“N:”开始,以“;”结束。 第六,PLC任务,格式为:TASK MainTask (Type := 任务类型),[任务内各程序];,END_TASK
任务类型分为三种:连续性任务、周期性任务和事件触发任务。任务内程序必须是PLC程序部分定义了的程序名称。
4 编程实现PLC智能开发系统
在轨道交通BAS系统中,BAS系统的PLC除了对它们进行实时监控外还需要向综合监控系统上传设备的状态信息,同时接收综合监控系统命令并下发给设备以执行相应动作[2]。因此BAS系统的设计开发流程需要统一规范,一般分为以下几个工作:①将设计院蓝图设计好的监控设备点分配到指定的远程IO控制箱具体模块点位上,形成设备监控点表文件,此为BAS-设备IO映射过程;②分门别类规划好各种设备在综合监控系统上的地址,形成数据点表文件,此为综合监控-BAS IO映射过程;③设计各种设备PLC驱动程序,程序以功能块形式封装,方便调用;④根据远程IO箱的模块配置信息组态IO模块;⑤将①和②映射好的数据分别填到设备驱动功能块参数上,至此基本完成一个完整的BAS PLC程序。
BAS智能开发系统主要就是对以上的④和⑤实现自动化。
4.1 实现自动组态
系统自动组态的前提条件是获取IO模块组态信息,以下提供了一种最简单的模块组态信息定义格式:
[DI,DO,CE,AI,AO; DI,DO,CE,AI,AO]
其中,中括号将不同的远程IO箱模块隔开,IO箱内以“;”间隔每个通信模块上的IO模块(往往一个通信模块会带若干个IO模块),而每个模块的类型又以DI、DO、AI、AO或CE形式表示,并以“,”隔开,其中CE表示的是模块之间连接的扩展电缆。
智能开发系统读取模块组态信息,通过图1所以流程完成对模块组态信息的分析,并最终形成RSLogix 5000工程文件模块组态定义部分。
4.2 實现自动编程
PLC程序设备驱动功能块一般都包括输入输出参数,输入参数对应BAS-设备IO映射数据,输出参数对应综合监控-BAS IO映射数据。功能块内部逻辑程序以文本的形式固化在程序模板上。因此,将IO映射数据填写到相应的功能块输入输出参数上便实现了BAS系统PLC的自动化编程。具体流程如图2所示。图3所示为采用Microsoft C#语言实现的BAS智能开发系统的软件界面。经过现场实地使用,发现软件大大提高了工程开发和调试的效率,PLC程序出错率大大降低。
5 结论及展望
①通过对RSLogix 5000工程文件的格式以及规律的分析,结合现有的BAS系统设计开发流程,实现了BAS系统的智能化开发[3]。②在实际应用过程中,智能开发系统能够极大降低BAS系统开发过程的重复劳动,从而提高工作效率,减少逻辑程序出错的概率。③本文仅仅实现了Logix平台的智能化开发,由于标准不统一,不同的自动控制系统平台有着不同的工程文件格式,后续的工作应该努力将智能化开发应用到多种平台上。
【参考文献】
【1】薛迎成.罗克韦尔PLC技术基础及应用[M].北京:中国电力出版社,2009.
【2】邓李.ControlLogix系统实用手册[M].北京: 机械工业出版社,2008.
【3】黄允凯,谈英姿. 深入浅出NetLinx网络架构[M].北京: 机械工业出版社,2009.