查字典论文网 >> 变电站智能辅助控制系统协议测试软件的实现研究

变电站智能辅助控制系统协议测试软件的实现研究

小编:惠怀海

0 引言

目前,在变电站智能辅助控制系统中,现有的Modbus 协议测试软件多以报文形式出现,缺乏专有软件来测试设备间通信,测试结果不直观,且缺乏针对性。笔者在标准Modbus RTU 报文测试基础上,设计了一套针对变电站智能辅助控制系统进行测试的模型配置文件,通过将模型配置文件和Modbus协议测试进行关联,从而可以弥补现有软件的不足。文中所述是变电站智能辅助控制系统测试技术研究的一部分,辅助控制系统检测平台主要由综合应用服务器、智能管理主机和子设备模拟器组成。笔者主要开展智能管理主机和子系统设备间基于Modbus 协议的功能测试方法的研究,旨在设计出一款实用的变电站智能辅助控制系统Modbus 协议测试软件,为变电站智能辅助系统的检测、建设与验收提供标准和检测平台。

1 Modbus 协议

目前,在变电站智能管理主机和子设备之间,多采用基于RS - 485 总线的Modbus 协议。该协议是由modicon 公司推出的一种在工业领域应用广泛的通信标准之一。Modbus 是一种应用层报文传输协议,与底层的物理接口及电气规范无关,它支持传统的RS22/422/485 设备和最新发展出来的以太网设备等。Modbus 协议采用主从方式,包括一个主节点和多个从节点,在串行网络中,只有被指定为主节点的节点可以启动一个命令。每个从节点设备都有一个唯一的地址,该地址编码范围为l ~ 247,地址0 是广播地址。广播方式时,所有收到指令的设备都会执行,但不回应指令。

1. 1 Modbus RTU 与ASCII 码的比较

在串行链路上,Modbus 协议有两种传输模式,即Modbus RTU 与Modbus ASCII 模式。两种方式的信息单元都以帧的方式传输,每个Modbus 帧都包括地址域、功能域、数据域、错误检测域[3]。相对于ASCⅡ模式,RTU 模式表达相同的信息需要较少的位数,且在相同通讯速率下具有更大的数据流量[4 - 7]。因此,工业现场一般都是采用Modbus RTU 协议。

1. 2 Modbus RTU 信息帧

在RTU 模式下,帧间字符间隔时间不能超过1. 5 个字符传输时间。帧与帧间时间间隔不能超过3. 5 个字符传输时间。如果一帧之内有超过1. 5 个字符时间的停顿,接收设备将刷新不完整的消息并假设下一个字节是一个新消息的地址域。Modbus 的协议数据单元( PDU) 与基础通信层无关,特定总线或网络上的Modbus 协议映射能够在应用数据单元( ADU) 上引入一些附加域[9]。通

用Modbus 帧结构

2 软件设计总体结构

变电站智能辅助控制系统Modbus 协议测试软件内置于智能管理主机,通过智能管理主机向下与采用Modbus 协议的子系统设备通信,完成对子系统设备的状态检测和控制。智能管理主机向子系统设备发送请求,子系统设备连接成功后正确响应,并向智能管理主机发送对应的所需信息。通过上述过程,完成智能管理主机对子系统设备的信息交换、数据采集和控制输出功能。测试软件总体设计结构见该测试软件主要包括配置文件解析、通信、协议分析、显示、提示五个模块。智能管理主机通过通信模块与被测子系统设备进行连接通信,接收和发送协议息,接收到消息后交给协议分析模块进行协议验证和分析,并得出分析结果,由显示模块和提示模块显示分析结果。配置文件解析模块对智能管理主机模拟器读入的配置文件进行解析,以方便测试的形式显示出来。

3 测试软件的实现

在Qt 软件开发环境中,为简化程序,提高开发效率,设计采用第三方开发的协议栈Libmodbus 来进行Modbus RTU 协议测试软件的开发,用Qt + Libmodbus

开发的软件可在不同平台上运行,具有很好的移植性。Libmodbus 协议栈包含针对不同功能码的API 操作函数。从模型文件或参数输入部分获取API 操作函数的输入参数,程序处理后调用相应操作函数,进而实现通信测试。利用Libmodbus 开

3. 1 模型配置

将智能辅助控制系统中采用Modbus RTU 信息量的子设备,按四遥类型和设备类型相结合的方式分类。这样,可以有针对性地为设备建立对象信息模型,从而方便地将Modbus 报文测试和模型文件进行关联,以直观的方式显示功能测试内容。另外,该模型文件可按照被测厂家自己对通信寄存器地址功能的规定进行配置,具有灵活性的优势。XML 文件具有简单、互操作性、规范统、与平台无关和可扩展的特点,设计采用XML 格式配置模型文件。

3. 2 通信连接

该部分是为了在智能管理主机和子系统设备间建立通信链路,以便进行报文传输。在进行通信连接前,需设定通信超时时间,超时时间主要用来设置对应答报文的等待时间,等待时间的长短与波特率和应答帧的长度有关。在libmodbus 协议栈中有专门设置超时时间的变量struct timeval,其内部成员long tv_sec 以秒为单位设置, long tv_usec 以微秒为单位设置,软件默认超时时间为1 000 000 s。置完超时时间后,需要完成对Modbus RTU 的基础串口参数的设置,完成Modbus RTU 主机与子设备的通信连接,主要包括串口号选择,波特率选择,数据位选择,检验位选择,停止位选择等。

先利用API函数* modbus_t * modbus_new_rtu ( const char * device, intbaud,char parity,int data_bit,int stop_bit) 来设置RTU 连接参数,再利用API函数* int modbus_connect( modbus_t * ctx) 建立通信连接,当连接建立成功时函数将返回0,否则返回- 1。

3. 3 状态检测与控制

该部分依据Modbus 协议标准规定格式进行报文格式封装,功能码功能与标准功能码功能相同,这样可对Modbus 报文进行规范化、标准化方面的测试。

此部分是测试软件的主体部分,主要是报文的传输,用于控制子设备动作或查询子设备状态。在libmodbus 协议栈中,针对不同功能码设置了不同的API 函数,用于读写操作的API 函数主要有

* int modbus_read_bits( ) ,

* int modbus_read_input_bits( ) ,

* int modbus_write_bits( ) ,

* int modbus_write_registers( ) 等函数

前面在模型文件中将子系统设备及其需要测试的功能进行了分类,这里可根据这些功能的特点直接调用响应的API 函数。在进行读写操作前,要先利用* intmodbus _ set _ slave ( modbus _ t * ctx,intslave) 设置从机地址。

4 通信测试

通过虚拟串口,利用Modbus Slave 软件模拟Modubs 从站,对Modbus 客户端软件进行测试,ModbusSlave 的数值是以十进制显示,Modbus 客户端测试软件除当前值和设置值两列用十进制表示外,其余数值全部采用十六进制数表示。在进行测试时,须要注意数值变换。

4. 1 读功能测试

以遥信量为测试对象,将Slave 中的设备ID 设为01,功能码设为02,修改通信寄存器地址0000H ~ 0004H 中的值为1、0、1、1、1。模型通信参数设备9600、8、N、1 。然后通过虚拟串口建立连接,在上位机软件中勾选需要测试的功能,点击更新按钮,可以发现,从机模拟器中对应的值被正确读出。测试结果如表2 所示。表1 Modbus Slave 设置数据Table 1 Setting date of Modbus slave

4. 2 写功能测试

以遥调量为测试对象,以设置温湿度传感器的温度和湿度的告警限值为例,从上位机设置温湿度对应的值,看slave 从机模拟器是否有变化,如果显示数据和上位机一致,则写入成功,表为测试结果。

5 结束语

智能辅助控制系统Modbus 协议测试软件可以满足测试需求,其模型实现简单,开发成本低。该软件通过建立对象信息模型,将Modbus 协议测试和变电站智能辅助系统特定功能进行关联,可以方便地对智能辅助控制系统的功能进行测试,其配置的对象信息模型,可按照被测试厂家自己的规定灵活配置,使软件具有更强的针对性。另外,软件依据标准开发,可起到规范、标准化作用。用于辅助系统测试可以严把系统设备建设、入网关,对保证变电站建设质量和电网安全运行具有重要意义。

热点推荐

上一篇:VirtualLab 虚拟仿真在物理光学中的应用研究

下一篇:如何对幼儿进行德育教育论文 幼儿园关于德育教育之类的论文