Modbus通讯地址设定方法说明
Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一种通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一个控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
Modbus通讯地址设定
利用Modbus协议可以实现设备间的数据交换。Modbus通讯理论上支持4种ModiconPLC地址,即0*、1*、3*和4*四种,分别表示开出(中间线圈)、开入、模入、模出(中间寄存器)等数据地址。与西门子或其它设备中的开入、开出、模入、模出地址完全不对应。可以理解为0*和1*对应位地址的读写操作,3*和4*字地址的读写操作。
此处0*、1*、3*和4*表示长度有的为5位数字、有的为6位,其实和Modbus通讯无关,只是和软件的表示方式有关。
按照Modbus通讯时最常用的是RTU读请求格式:
从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)
可见,只需设置起始从站数据区起始地址和通讯长度即可。
特别注意,Modbus地址遵从IEC1的地址标准(最小地址为*1),西门子遵从IEC0的标准(最小地址为0,如M0.0)。因此,不同标准的地址做通讯时需要做地址变换,即加1的操作。
ACRXXXE的应用细节及参量地址表
该系列测量值用Modbus-RTU 通讯规约的03号命令读出。
通讯值与实际值之间的对应关系如下表:(约定Val_t为通讯读出值,Val_s为实际值)
几点说明:
1 数据类型:“BYTE”指1个字节;“word” 指16位无符号整数;“Integer”指16位有符号整数;“Dword” 指32位无符号整数,“Fword”指32位浮点数。
2 读写属性:“R”只读,读参量用03H号命令;“R/W”可读可写,写系统参量用10H号命令。禁止向未列出的或不具可写属性的地址写入。
3 波特率的设定范围4800 bps,9600 bps,19200 bps,38400 bps.在此范围外的设定是不允许的。如果写入超范围的设定值,仪表会启用默认波特率:38400 bps。
4 ACR320EFK所测电能值均为二次侧电能。高字节在前,低字节在后,单位WH 或VARH, 统计一次侧电能数据的时候,请乘以相应的变比。例如10KV/100V,75A/5A 的仪表,请在计量抄表的数据乘以PT=100和CT=15 的乘积1500。
5 ACR320EFK 提供4 路开关量输入功能和2路继电器开关量输出功能。4 路开关输入是采用湿接点电阻开关信号输入方式,仪表内部配备+5V 的工作电源,无须外部供电。当外部接通的时候,经过仪表开关输入模块DI 采集其为接通信息、显示为1;当外部断开的时候,经过仪表开关输入模块DI 采集其为断开信息、显示为0。开关量输入模块不仅能够采集和显示本地的开关信息,同时可以通过仪表的数字接口RS485 实现远程传输功能,即“遥信”功能;2路继电器输出功能可用于各种场所下的报警指示、保护控制等输出功能。在开关输出有效的时候,继电器输出导通,显示为1;开关输出关闭的时候,显示为0,继电器输出关断。
6 ACRXXXE(K)电度一次侧时的值采用浮点变量数据类型。它用符号位表示数的符号,用阶码和尾数表示数的大小。仪表采用的数据格式为IEEE754数据格式具有24位精度,尾数的高位始终为“1”,因而不保存,位的分布如下
● 1位符号位;
● 8位指数位;
● 23位尾数。
符号位是最高位,尾数为最低的23位,按字节描述如下:
范例:UA的通讯读出值为08C6H(2246),DPT为5,则UA的实际值
Va =(2246/10000)*(10^5) = 22.46KV。
IA的通讯读出值为0FA0H(4000),DCT为3,则IA的实际值
Ia =(4000/10000)*(10^3) = 400.0A。
其中, S:符号位,1表示负,0表示正;
E:阶码(在两个字节中)偏移为127;
M:23位尾数,最高位为“1”。
具体举例如下:
读出0 10001110 100 1011 1010 1100 0000 0000B
0 代表符号位,“1”为负,“0”为正;
10001110 为计算指数,设为a, a为10进制,a为142;
100 1011 1010 1100 0000 0000 为计算尾数,设为b,b为10进制,b为4959232。
计算公式:
一次侧电量=
上例计算结果为:
==52140
通讯应用格式祥解
Addr:从机地址
Fun:功能码
Data start reg hi:数据起始地址 寄存器高字节
Data start reg lo:数据起始地址 寄存器低字节
Data #of reg hi:数据读取个数 寄存器高字节
Data #of reg lo:数据读取个数 寄存器低字节
CRC16 Hi: 循环冗余校验 高字节
CRC16 Lo: 循环冗余校验 低字节
推荐阅读