Modbus规约转换器在工程项目中的开发及应用

2012-10-24 06:47王春卫
上海电气技术 2012年3期
关键词:规约字节定值

王春卫

(上海继电器有限公司,上海200072)

国内光纤纵差线路保护屏的工程项目中,常采用上海施耐德电气电力自动化有限公司(原AREVA电力自动化有限公司)的P546电流差动保护装置。这些保护装置选用的是Modbus-RTU通讯协议,而这些工程项目的技术协议书要求保护装置必须采用标准的IEC-103通讯协议与后台监控及信息子站通讯(IEC 60870-5-103协议,简称IEC 103协议,是一个用于电力系统控制和信息采集的通信协议,由国际电工委员会(International Electrotechnical Commission,IEC)57号工作组制定)。为了满足这一要求,必须添加一台规约转换器实现此功能。规约转换器主要用于各种自动化网络通信场合,进行通讯规约的转换,即将不同的2种通讯语言,通过它来完成翻译,经程序处理后按照用户指定的通信语言送往监控后台或其他应用系统。本Modbus规约转换器需将P546的信息由Modbus总线通讯协议转为国内通用的IEC-103通讯协议规约,再转发给后台监控和信息子站。该规约转换器若从AREVA公司购买非常昂贵,上海继电器有限公司的线路保护屏也就失去了竞争力,故决定自行开发规约转换器。

1 开发软硬件平台的选用

在某变电站综合自动化工程项目中,有一款上海继电器有限公司研发生产的CBZ6800通讯管理机,它在变电站综合自动化系统中作为各级智能设备与上级监控中心之间的数据枢纽,并带有完善的IEC-103通讯协议。在实际应用中,与其他公司的监控设备配合良好,故以此通讯管理机作为开发规约转换器的软硬件平台可以起到事半功倍的效果。由于硬件是现成的,故只要对软件架构进行调整,并编写相关的源代码,该规约转换器开发工作即可完成。

2 软件架构的分析

CBZ6800通信管理机的软件从结构上分为3层,即引导程序、系统程序和用户进程,如图1所示[1]。

图1 软件层次结构

在通信管理机系统上电或复位时,首先运行的是引导程序(Basic Input Output System,BIO),引导程序将对CPU及周边接口部件进行初始化,执行系统自诊断程序,判断系统程序及用户进程是否有效[2]。系统引导成功后将控制权交给系统程序并开始运行用户进程。在自诊断出致命的错误(如ROM出错、RAM出错等)后,引导程序将不再运行系统程序和用户进程。而这3个层次程序按优先级的不同分成3块,每一块程序占用CPU不同的资源,由调度程序进行管理[3],如图2所示。

图2 软件优先级结构

位于顶端的任务优先级最高,它可以打断其他两级任务而被优先执行,所有对时间敏感的服务程序均存放于此;位于中间的一部分服务程序40ms左右被调用一次,所有对时间要求较高的服务程序均放于此;主程序1s左右被调用一次,在层次图最下面,所有对时间要求不高的服务程序均存放于此[1]。

管理机的各个应用程序进程之间通过发送消息进行通信。消息队列是保存消息的数据结构,按照先进先出的队列原则存放消息。系统产生的消息从队列的尾部插入,处理时从队列的头部读取消息[4]。一个应用进程最多可接受8个消息。当某一个任务(进程)希望请求其他任务服务时,该进程先创建一个临时消息结构,然后调用消息发送程序将该消息发往目标任务。应用进程不断地检查自己的消息队列,当收到新的消息后,从消息队列中读取一条消息进行处理,处理完毕后重新更改消息队列指针以便接收新的消息。

用户进程是位于系统程序和引导程序之上的完成各种用户接口的程序。在该部分程序中实现了现场智能设备的接入和远方调度规约。用户进程按优先级也分为3块,但用户进程不能直接运行,它必须等到系统调度并分配给资源之后才能被调度执行。用户进程采用面向对象机制生成,支持对象复制。同一时间可运行多个拷贝,在系统程序的支撑下用户进程之间可相互发送消息和交换数据。典型的用户进程的逻辑框图如图3所示[1]。

通过以上分析可知,只需要添加一个用于Modbus通讯的用户进程子程序,并对IEC-103对应的用户进程子程序加以修改就可以满足实际需求。

图3 典型用户通信进程逻辑图

3 通讯协议需求分析

3.1 功能需求

在现场实际应用中,后台监控和信息子站均只需要读取P546装置的遥信、事件和定值,而不需要修改任何参数[5]。因此,可以确定通讯协议程序的主要功能如下。

(1)Modbus通讯子程序应该能满足读遥信、遥测、事件记录及保护定值;

(2)IEC-103通讯子程序应在响应总召唤报文时上送遥信状态,将遥测数据和定值数据都以组的形式以类型标识为ASDU10的报文上送,并主动上送最新发生的事件信息。

3.2 P546的Modbus信息点表分析

通过分析P546的Modbus信息点表可知:

(1)装置共有32个开入量,存于4个连续的字节内,每个字节的每一位分别代表一个遥信位,32个遥信按顺序排列。当实际位存在开入信息时,该位的值为“1”,否则为“0”。开入状态可以通过一帧询问报文读取。

(2)装置共有32个开出量,同开入信息类似,也顺序的保存于4个连续的字节内,当实际开出位置闭合时,对应位为“1”,否则为“0”。开出状态也可以通过一帧询问报文读取。

(3)至于遥测数据,现场只需要Ia、Ib、Ic三相电流幅值和Uab,Ubc,Uca这3个线电压幅值,而在P546的Modbus信息点表中,这6个值也保存在连续的地址内;因此,可以通过一帧报文读取。

(4)采用Modbus通讯协议读取P546的事件记录通常需要4个步骤。第1步,读取一个地址固定的标志字节,通过判断该字节内相应的一位是否为“1”来判断是否存在新事件(即未被确认的事件),该位如为“1”则表示有事件需要读取,如为“0”则表示无新事件需要读取。判断存在新事件后,则进入第2步,向P546装置一个指定地址发送报文写入数据,即通知P546装置准备读取事件。第3步,则是发送询问报文读取具体事件内容。第4步,向指定地址写入数据,表示上一个事件已经确认读取。如果存在多个事件,则重复上述4个步骤即可。

(5)P546装置将不同的保护定值通过不同的数据类型存储于不同的寄存器地址内。只需根据现场用户提供的定值整定清单读取所需的定值。现场定值一旦被输入后,也不会轻易修改,故不必随时读取发送报文装置定值。

3.3 Modbus通讯过程

通过上述情况分析,可以设计Modbus通讯过程流程图如图4所示。

图4 通讯过程流程图

4 通讯程序设计

Modbus通讯的通讯报文结构如图5所示,其中地址码为P546装置的通讯地址,由于现场一台P546配置一台规约转换器,故地址可以固化。Modbus通讯报文中的功能码、数据区中的地址与数据长度在之前的功能分析中都已明确,故之前所设计的4个通讯步骤中,对应的6800管理机向P546装置发送的读取数据的报文内容实际上都可以固定下来,这样可以大大简化程序内容,只需在相应的通讯步骤中将固定的报文填入发送缓冲区内即可。

图5 Modbus通讯报文结构

对于Modbus通讯程序,当通讯过程和发送的报文确定后就需要对P546装置返回的报文加以处理。首先应对接受报文进行CRC校验,算出校验码,与接受报文的校验码进行比较,若一致则判断接受报文完整正确,然后再对报文内的数据进行具体分析处理;若不一致则丢弃该帧接受报文,并重复发送上一次发送的报文,直到校验正确为止。同时,对连续接受校验不正确的报文次数进行计数,当该计数达到一定值时,可以判断通讯出错,并发出通讯出错的事件报文,这样可以避免程序陷入死循环。校验正确后,随即处理具体的数据内容。其中开入、开出和遥测数据相对容易处理,只需将相应的数据存入公共数据缓冲区中,IEC-103转发协议程序可以直接从该公共数据缓冲区中按照事先约定的格式和地址读取相应数据。另外,在Modbus报文中,开入开出信息存在于字节中的顺序位,而IEC-103报文中则是一个开入量(或开出量)对应一个字节,所以,需要编写程序将Modbus报文中保存开入开出信息的数据字节按位分离并将每一个数据位单独保存为一个字节,如:Modbus报文中的一个数据字节为47H,在程序中应将该字节处理为4个8个字节“00H,01H,00H,00H,00H,01H,01H,01H”并保存。

由于P546装置上送的Modbus报文中只提示发生遥信变位并上送时间信息,并没有明确指出是哪一个遥信点发生变位事件,这就需要在程序内部进行处理加以分辨。在程序中,除了将每次读到的遥信状态存于公共缓冲区内,还应单独存放一个固定位置作为历史数据加以保存。每次读到新的遥信数据都应与历史数据进行比较,采用按位异或的方式找出发生变位的遥信点号,再以该点号在当前遥信数据中查出对应的状态信息。将变位的遥信点号、遥信状态和时间信息合成一条6800管理机内部使用的消息,通过消息队列发给IEC-103通讯协议程序,由IEC-103通讯协议程序解读、打包并转发。

对于事件信息,将P546通讯报文中包含的事件信息提取出来,只需要事件点号、事件状态、时间信息,将这些信息按照消息的格式打包通过消息队列发给IEC-103通讯协议程序,再由IEC-103转发。

对于定值信息,可以将定值数据以约定好的格式存储到具体的位置并将该位置的地址通过消息的方式传送给IEC-103通讯协议程序。读取定值需要较多步骤,应当在读取全部定值并将全部定值都按照相应约定格式存储完成后,才能使用消息通知IEC-103通讯程序。另外,在IEC-103相应组值的报文中主要使用两种数据类型:用ASICⅡ码表示字符型数据,用浮点数表示具体数值。而在P546中则使用实数表示具体数值,使用具体代码表示定值字符串,所以需要对定值类型进行转换。将P546通讯报文中的实数转为浮点数,用查表法将具体代码转为ASICⅡ码字符串,将转换后的数据存于相应位置。

5 结 语

Modbus规约转换器在实际工程中已投入使用近百套,运行稳定可靠,充分说明本方案是完全可行并能满足实际要求的,该规约转换器的开发应用为公司节约成本百万余元。

[1]张毅刚,徐 辉,叶剑峰.多功能通信管理机[J].上海电器技术,2008(2):34-39.

[2]赵 琦,姚庆梅.基于ARM及嵌入式操作系统的通信管理机[J].山东建筑大学学报,2009,24(1):54-58.

[3]尹小夺,闫 鹏.基于通信管理机的变电站自动化系统改造方案设计与实现[J].陕西电力,2008,36(9):16-19.

[4]牛青松,张 颜.DF3211通信管理机的结构及功能[J].科技情报开发与经济,2010,20(1):109-111.

[5]刘振亚.智能电网知识读本[M].北京:中国电力出版社,2010.

猜你喜欢
规约字节定值
圆锥曲线的一类定值应用
No.8 字节跳动将推出独立出口电商APP
“大处着眼、小处着手”解决圆锥曲线中的定值问题
No.10 “字节跳动手机”要来了?
电力系统通信规约库抽象设计与实现
一种在复杂环境中支持容错的高性能规约框架
10kV线路保护定值修改后存在安全隐患
10kV线路保护定值修改后存在安全隐患
一种改进的LLL模糊度规约算法
简谈MC7字节码