三相电流/电压表AV-300
一、通讯
1-1通讯协定
采用Modus protocol –RTU模式之通讯协定。
编码
|
8位元之2进位制数值
|
起始位
|
1位
|
模式
|
异步
|
数据长度
|
8位
|
奇偶校验
|
无
|
停止位
|
2位
|
错误校验
|
CRC(冗余循环码)
|
起始标志=≥4字节的时间
位址码 = 1字节
功能码 = 1字节
数据区 =N字节
错误校验 = 16位CRC码
结束标志=≥4字节的时间
1-2结构
位址码
|
功能码
|
数据区
|
校验码
|
8位元
|
8位元
|
N×8位元
|
16位元
|
1-3位址区
位址码为讯息组的起始位元组(8位元),从1~247这个位元组表示由用户设置位址的从站将接收由主站发送来的讯息。每个从站都必须有唯一的位置码,并且只有符合位址码之从站才能回应。当从站回应讯息时,其位址码表示其讯息来自何处。
1-4功能区
主站发送之功能码告诉从站要执行之任务,以下列出功能码都有具体的含义及操作。
代码
|
含义
|
操作
|
03
|
读取数据
|
读取当前暂存器一个或多个之二进位值
|
06
|
预置单一暂存器
|
把设置之二进位值写入单一暂存器
|
1-5数据区
数据区包含需要从站执行之动作或由从站采集的反送讯息,这些讯息可以是数值,参考地址等等。例如:功能码告诉从站读取暂存器的值,则数据区必包含要读取暂存器的起始位址及读取长度,对于不同的从站,位址和数据讯息都不相同。
1-6错误校验码
主站或从站可用校验码进行判别接收讯息是否出错,当讯息在传送过程中,由于电子讯或其他的干扰,而产生不确定性的变化,错误校验码可以保证主站或从站在传送过程中出错的讯息不被认定,如此可确立系统的可靠性。(错误校验采CRC-16校验方法)
- 位址码,功能码,数据区和错误讯息组成的格式都是相同的※
1-7错误校验码
冗余循环码(CRC)包含2个位元组,16位元二进位数值CRC码由发送设备计算,置于发送讯息的尾部。接收讯息设备再重新计算接收到讯息CRC码,比较计算得到的CRC码是否与接收到的相符合,如果两者不相符合,则表明出错,即传讯资料不被确定就执行错误处理。
计算CRC码的步骤:
- 预置16位元暂存器为十六进位FFFF(即全为1)。称此为CRC之暂存器。
- 把第一个8位数位元组与16位CRC暂存器之较低位元组做互斥或运算,把结果置于CRC暂存器内。
- 把CRS暂存器的内容右移一位元(朝低元),用0填补最高位元,再验查最低位元。
- 如果最低位元为0:重复第3步骤(再次移位)。
如果最低位元为1:CRC暂存器与多项式A001(1010 0000 0000 0001)做互斥或运算。
- 重复步骤3和4,知道右移8次为止,将全部8位数位元组全部进行处理。
- 重复步骤2到步骤5,进行下一个8位数位元组全部进行处理。
- 最后得到的CRC暂存器即为CRC码。
二、通讯功能说明
2-1读取暂存器内容:(Function code:03H)
此一功能允许使用者选取测量值,记录资料及系统所设定参数
Address
|
Function
|
Data start
Addr
|
Data of
Regs
|
CRC 16
Low
|
CRC 16
Hi
|
01H
|
03H
|
03H
|
00H
|
|
|
Response:所回传的资料中包含了从站的位置,功能码,资料的长度,资料位元组及检查码。
Address
|
Function
|
Data count
|
Data
|
CRC 16
Low
|
CRC 16
Hi
|
01H
|
03H
|
02H
|
27H
|
0
|
|
2-2变更单一暂存器的内容:(Function code:06H)
此一功能允许使用者变更任何经许可的单一暂存器位置,但其变更的资料必须是在被接收的范围内,当此表在正常的工作状态下,此功能在任何时间均可执行。
Address
|
Function
|
Data of
Regs
|
Value
|
CRC 16
Low
|
CRC 16
Hi
|
01H
|
06H
|
0BH
|
00H
|
|
|
Response:在常态回应时,回应通常延迟至暂存器变更之后
Address
|
Function
|
Data of
Regs
|
Value
|
CRC 16
Low
|
CRC 16
Hi
|
01H
|
06H
|
0BH
|
00H
|
|
|
2-3错误讯息
Address
|
Function
|
Error code
|
CRC 16
Low
|
CRC 16
Hi
|
01H
|
6EH
|
02H
|
0
|
|
其功能码的最高位元更改为high
错误码:01 = 错误的功能码(Error Function)
02= 错误的资料位置(Error Data Address)
03 = 错误的资料值(Error Data Value)
三、数据结构:
1.仪表的任何一个参数值都是由一个整数值和一个小数点组成(整数值为仪表显示值去掉小数点的值)。
2.参数值范围超过255的为两个字节,否则为1个字节。
例如:电压显示为355.5V
那么电压值为3555(十六进制为0X0DE3)
即电压的高字节为0X0D
电压的低字节为0XZ3
电压的小数点位置为1
地址表
0
|
A相电压的高字节
|
unsigned char
|
0~255
|
1
|
A相电压的低字节
|
unsigned char
|
0~255
|
2
|
B相电压的高字节
|
unsigned char
|
0~255
|
3
|
B相电压的低字节
|
unsigned char
|
0~255
|
4
|
C相电压的低字节
|
unsigned char
|
0~255
|
5
|
C相电压的低字节
|
unsigned char
|
0~255
|
6
|
A相电流的高字节
|
unsigned char
|
0~255
|
7
|
A相电流的低字节
|
unsigned char
|
0~255
|
8
|
B相电流的高字节
|
unsigned char
|
0~255
|
9
|
B相电流的高字节
|
unsigned char
|
0~255
|
10
|
C相电流的高字节
|
unsigned char
|
0~255
|
11
|
C相电流的高字节
|
unsigned char
|
0~255
|
12
|
电压高端报警值的高字节
|
unsigned char
|
0~255
|
13
|
电压高端报警值的低字节
|
unsigned char
|
0~255
|
14
|
电压低端报警值的高字节
|
unsigned char
|
0~255
|
15
|
电压低端报警值的低字节
|
unsigned char
|
0~255
|
16
|
电流高端报警值的高字节
|
unsigned char
|
0~255
|
17
|
电流高端报警值的低字节
|
unsigned char
|
0~255
|
18
|
电流低端报警值的高字节
|
unsigned char
|
0~255
|
19
|
电流低端报警值的低字节
|
unsigned char
|
0~255
|
20
|
报警延迟时间的高字节
|
unsigned char
|
0~255
|
21
|
报警延迟时间的低字节
|
unsigned char
|
0~255
|
22
|
从机地址
|
unsigned char
|
0~255
|
23
|
波特率
|
unsigned char
|
0~255
|
备注:波特率0---->4800
波特率1---->9600
波特率2---->19200