当前位置:文档之家› 阳光电源并网逆变器MODBUS通讯协议培训资料

阳光电源并网逆变器MODBUS通讯协议培训资料

客服中心2012年4月培训资料

一、MODBUS通讯协议

1、 MODBUS通讯协议简介:

Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给IDA(Interface for Distributed Automation,分布式自动化接口)组织,并成立了Modbus-IDA组织,为Modbus今后的发展奠定了基础。在中国,Modbus已经成为国家标准GB/T19582-2008。

Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。

当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。

而在一个系统中,对具体命令代码执行的动作就需要对协议按照协议公约进行解析(相当于翻译的过程,确定此代码具体包含何种信息)。应用到公司生产的逆变器设备,就需要掌握公司制定的光伏并网逆变器通讯协议。

2、 MODBUS的特点:

(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。

(2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。

(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

3、 MODBUS的分类:

MODBUS通讯协议分为RTU协议和ACSII协议两种。

ASCII 模式:当控制器设为在Modbus 网络上以ASCII (美国标准信息交换代码)模式通信,在消息中的每个8位字节都作为一个ASCII 码(两个十六进制字符)发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。

RTU 模式: 当控制器设为在Modbus 网络上以RTU (远程终端单元)模式通信,在消息中的每个8位字节包含两个4位的 十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII 方式传送更多的数据。 (为什么公司的通讯协议选用RTU 模式???) 两种协议的区别:

ASCII 协议和RTU 协议相比拥有开始和结束标记,因此在进行程序处理时能更加方便,而且由于传输的都是可见的ASCII 字符,所以进行调试时就更加的直观,另外它的LRC 校验(纵向冗长检测) 也比较容易。

RTU 传输的数据每一个字节ASCII 都要用两个字节来传输,比如RTU 传输一个十六进制数0xF9,ASCII 就需要传输’F’’9’的ASCII 码0x39和0x46两个字节,这样它的传输的效率就比较低。所以一般来说,如果所需要传输的数据量较小可以考虑使用ASCII 协议,如果所需传输的数据量比较大,最好能使用RTU 协议。RTU 协议采用CRC 校验(循环冗长检测) 。

二、光伏并网逆变器通讯协议

1、报文格式(上位机发送或下位机响应的报文,十六进制): 数据格式: 数据长度:

地址码:设备的地址,即逆变器上设置的485通讯地址;

功能码:

作为上位机请求发送,通过功能码告诉从机执行什么动作。 作为下位机响应,下位机发送的功能码与从上位机发送来的功能码一样,并表明下位机已响应上位机进行操作。

MODBUS 通讯规约定义功能码为0x01到0xff 。公司光伏并网逆变器仅使用功能码0x03、0x04、0x06、0x10。 各功能码定义如下: 功能码0x03: 读取保持寄存器(读取4x 地址类型) ; 功能码0x04: 读取输入寄存器(读取3x 地址类型) ;

功能码0x06: 向保持寄存器写单个字(写入4x 地址类型) ; 功能码0x10: 向保持寄存器写多个字(写入4x 地址类型)。

地址码 功能码 数据区 错误校验 1字节

1字节

N 字节

CRC 码

两类地址类型区别如下(此处地址为机器电路板上通讯芯片内部寄存器的地址,和机器的485通讯地址不同):

3x地址类型该区域地址空间只读;

4x地址类型该区域地址空间可读可写。

数据区:分三种情况

(1) 对于功能码0x03和0x04(读取数据):

上位机读取下位机数据:[要读取的寄存器前一位地址高8位(注意:是前一位,比如要读地址5000的数据,就是地址4999)] [低8位] [读取几个寄存器高8位] [低8位]

此时下位机响应的数据:[返回几个数据][数据1][数据2]...[数据n]

(2) 对于功能码0x06(写入单个数据):

上位机写入下位机数据:[需写入的寄存器前一位地址高8位] [低8位] [写入的数据高8位] [低8位]

下位机响应的数据:[需写入的寄存器前一位地址高8位] [低8位] [写入的数据高8位] [低8位](同发送的数据一样)

(3) 对于功能码0x10(写入多个数据):

上位机写入下位机数据:[需写入的寄存器前一位地址高8位] [低8位] [写入几个寄存器高8位] [低8位] [数据1][数据2]...[数据n]

下位机响应的数据:[需写入的寄存器前一位地址高8位] [低8位] [写入几个寄存器高8位] [低8位]

错误校验:CRC校验,在COMTEST里由COMTEST软件自动完成。

2、光伏并网逆变器通讯协议的解析:

光伏并网逆变器地址定义表如下所示

“地址”栏中为需要读写的内部寄存器的地址,“数据范围”栏中为寄存器中的数据,“地址类型”栏中分3x地址和4x地址两种。

其中“设备状态”寄存器5038中的数据对应于“附录一”中的“状态码”(即逆变器的实时工作状态)一栏

相关主题