资源描述
福州博峰智能电器有限公司
PBF系列多功能电力仪表
通讯协议
版本号: V1.2
日期:2023.6.11
在本章重要讲述如何运用软件通过通讯口来操控PBF系列多功能电力仪表。本章内容的掌握需要您具有ModBUS协议的知识储备并且通读了本册其它章节所有内容,对本产品功能和应用概念有较全面了解。
本章内容涉及:ModBUS协议简述,通过应用格式详解,本机的应用细节及参量地址表。
ModBUS协议简述
PBF系列多功能电力仪表使用的是ModBUS-RTU通讯协议,ModBUS协议具体定义了校验码、数据序列等,这些都是特定数据互换的必要内容。
ModBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。一方面,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。ModBUS协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据互换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。
查询回应周期
Query message from Master
Device Address
Function Code
Eight-Bit
Data Bytes
Error Check
Device Address
Function Code
Eight-Bit
Data Bytes
Error Check
Response message from Slave
图3-1 主—从 查询—回应周期表
查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是规定从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否对的的方法。
回应
假如从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段涉及了从设备收集的数据:比如寄存器的值或状态。假如有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。
传输方式
传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与ModBUS协议RTU方式相兼容的传输方式。合用于PBF系列多功能电力仪表全系列产品。
每个字节的位
·1个起始位
·8个数据位,最小的有效位先发送
·无奇偶校验位
·1个停止位
错误检测(Error checking)CRC(循环冗余校验)
协议
当数据帧到达终端设备时,它通过一个简朴的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,假如没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任务错误都不会有成功的响应。或者返回一个错误指示帧。
数据帧格式
Address
Function
Data
Check
8-Bits
8-Bits
n×8-Bits
16-Bits
地址(Address)域
地址域在帧的开始部分,由一个字节(8位二进制码)组成,十进制为0-255,在我们的系统中只使用1-247,其它地址保存。这些位标明了用户指定的终端设备的地址,该设备将接受来自与之相连的主机数据。每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。当在同一条总线上终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。
功能(Function)域
功能域代码告诉了被寻址到的终端执行何种功能。下表列出了PBF系列多功能电力仪表用到的功能码,以及它们的意义和功能。
代码
意义
行为
01
读DO状态
获得数字(继电器)输出的当前状态(ON/OFF)
02
读DI状态
获得数字输入的当前状态(ON/OFF)
03
读数据寄存器
获得一个或多个寄存器的当前二进制值
05
控制DO
控制数字(继电器)输出状态(ON/OFF)
16
预置多寄存器
设定二进制值到一系列多寄存器中
数据(Data)域
数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这些数据的内容也许是数值、参考地址或者设立值。例如:功能域码告诉终端读取一个寄存器,数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同内容而有所不同。
错误校验(Check)域
该域允许主机和终端检查传输过程中的错误。有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上也许会发生一些改变,犯错校验可以保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,错误校验使用了16位循环冗余的方法(CRC16)。
错误指示帧和错误指示码
假如从机检测到主机发送的数据存在的逻辑错误,比如地址不存在或者数据个数超过范围,则向主机发送错误指示帧。错误指示帧的定义为:功能域(Function)的最高位(MSB)设立为1,其它位保持不变,数据域(Data)定义了错误类型(即错误指示码Err Code)
例如主机请求读数字输出状态,但是给出的地址超过有效范围,在这种情况下,从机发犯错误指示码:
Addr
Fun
Byte count
Err Code
CRC16hi
CRC16lo
32H
81H
01H
FFH
1FH
64H
本例中错误指示码为FFH,功能域为81H(它将请求的功能码01H最高位b7设立为1)
错误检测的方法
错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。CRC值由传输设备计算出来,然后附加到数据帧上,接受设备在接受数据时重新计算CRC值,然后与接受到的CRC域中的值进行比较,假如这两个值不相等,就发生了错误。
CRC运算时,一方面将一个16位的寄存器预置为全1,然后连续把数据帧中的每个字节中的8位与该寄存器的当前值进行运算,仅仅每个字节的8个数据位参与生成CRC,起始位和终止位以及也许使用的奇偶位都不影响CRC。在生成CRC时,每个字节的8位与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位(LSB)移出并检测,假如是1,该寄存器就与一个预设的固定值(0A001H)进行一次异或运算,假如最低位为0,不作任何解决。
上述解决反复进行,直到执行完了8次移位操作,当最后一位(第8位)移完以后,下一个8位字节与寄存器的当前值进行异或运算,同样进行上述的另一个8次移位异或操作,当数据帧中的所有字节都作了解决,生成的最终值就是CRC值。
生成一个CRC的流程为:
1、预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。
2、把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。
3、将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。
4、假如最低为0:反复第三步(下一次移位);假如最低位为1:将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。
5、反复第三步和第四步直到8次移位。这样解决完了一个完整的八位。
6、反复第2步到第5步来解决下一个八位,直到所有的字节解决结束。
7、最终CRC寄存器的值就是CRC的值。
此外尚有一种运用预设的表格计算CRC的方法,它的重要特点是计算速度快,但是表格需要较大的存储空间,该方法此处不再赘述,请参阅相关资料。
通讯应用格式详解
本节所举实例将尽也许的使用如图所示的格式,(数字为16进制)。
Addr
Fun
Data start
reg hi
Data start
reg lo
Data #of
Regs hi
Data #of
regs lo
CRC16lo
CRC16hi
32H
03H
00H
00H
00H
03H
00H
08H
Addr:从机地址
Fun:功能码
Data start reg hi:数据起始地址寄存器高字节
Data start reg lo:数据起始地址寄存器低字节
Data #of reg hi:数据读取个数寄存器高字节
Data #of reg lo:数据读取个数寄存器低字节
CRC16 Hi:循环冗余校验高字节
CRC16 Lo:循环冗余校验低字节
读数字输出状态(功能码01)
·查询数据帧
查询数据帧,主机发送给从机的数据帧。01号功能允许用户获得指定地址的从机的DO(继电器)输出状态ON/OFF(1=ON,0=OFF),除了从机地址和功能域,数据帧还需要在数据域中包含将被读取DO(继电器)的初始地址和要读取的DO(继电器)数量。PBF系列多功能电力仪表中DO(继电器)的地址从0000H开始(DO1=0000H,DO2=0001H)。
下面的例子是从地址为50(十进制)的从机读取DO1到DO2的状态。
(例如:PBF305有2个DO,DO的地址为0000H—0001H)
Addr
Fun
DO start
reg hi
DO start
reg lo
DO #of
Regs hi
DO #of
regs lo
CRC16lo
CRC16hi
32H
01H
00H
00H
00H
02H
B8H
08H
·响应数据帧
响应数据帧,从机回应主机的数据帧,包含从机地址、功能码、数据的数量和CRC错误校验,数据包中每个DO占用一位(1=ON,0=OFF),第一个字节的最低位为寻址到的DO值,其余的在后面。
下面的例子是读数字输出状态响应的实例。
Addr
Fun
Byte count
Date
CRC16lo
CRC16hi
32H
01H
01H
02H
DFH
0FH
Data为DO状态,它的定义是:
0
0
0
0
0
0
DO2
DO1
b7
b6
b5
b4
b3
b2
b1
b0
MSB LSB
(DO1=OFF,DOI=ON)
·错误指示码
假如主机请求的地址不存在或数据个数不对的则返回错误指示码:FFH。
读数字输入状态(功能码02)
·查询数据帧
此功能允许用户获得的DI的状态ON/OFF(1=ON,0=OFF),除了从机地址和功能域,数据帧还需要在数据域中包含将被读取DI的初始地址和要读取的DI数量。PBF系列多功能电力仪表中DI的地址从0000H开始(DI1=0000H,DI2=0001H)。
下面的例子是从地址为50(十进制)的从机读取DI1到DI2的状态。
Addr
Fun
DI start
Addr hi
DI start
Addr hi
DI #regs
of hi
DO#regs
of lo
CRC16lo
CRC16hi
32H
02H
00H
00H
00H
02H
FCH
08H
·响应数据帧
响应包含从机地址、功能码、数据的数量和CRC错误校验,数据帧中每个DI占用一位(1=ON,0=OFF),第一个字节的最低位为寻址到的DI值,其余的在后面。
下面的例子为读数字输入状态响应的实例。
Addr
Fun
Byte count
Date
CRC16lo
CRC16hi
32H
02H
01H
01H
6FH
0CH
Data为DI状态,它的定义是:
0
0
0
0
0
0
DI2
DI1
b7
b6
b5
b4
b3
b2
b1
b0
(DI1=ON,DI2=OFF)
上表为读DI1到DI2状态的响应
·错误指示码
假如主机请求的地址不存在或数据个数不对的则返回错误指示码:FFH。
读数据(功能码03)
·查询数据帧
此功能允许用户获得设备采集与记录的数据及系统参数。主机一次请求的数据个数没有限制,但不能超过定义的地址范围。
下面的例子是从地址为50(十进制)的从机读3个采集到的基本数据(数据帧中每个地址占用2个字节)F,Va,Vb,PBF系列多功能电力仪表系统中F的地址为0130H,Va的地址为0131H,Vb的地址为0132H。
Addr
Fun
Data start
Addr hi
Data start
Addr lo
Data #of
regs hi
Data #of
regs lo
CRC16lo
CRC16hi
32H
03H
01H
30H
00H
01H
80H
3AH
·响应数据帧
响应包含从机地址、功能码、数据的数量和CRC错误校验。
下面的例子是读取F,Va,Vb(F=1388H(5000Hz),Va=03E7H(99.9v),Vb=03E9H(100.1v)的响应。
Addr
Fun
Byte
count
Data1hi
Data1 lo
Data2 hi
Data2 lo
Data3 hi
Data3 lo
CRC16lo
CRC16hi
32H
03H
06H
13H
88H
03H
E7H
03H
E9H
F2H
35H
·错误指示码
假如主机请求的地址不存在则返回错误指示码:FFH。
控制DO(继电器)(功能码05)
·查询数据帧
该数据帧强行设立一个独立的DO为ON或OFF,PBF系列多功能电力仪表的DO的地址从0000H开始(DO1=0000H,DO2=0001H)。注意:ON的定义不一定是输出回路的闭合,根据设立参数的不同设立一次ON时,也也许在硬件上输出一个脉冲。
数据FF00H将设DO为ON状态,而0000H则将设DO为OFF状态;所有其它的值都将导致从机发送错误指示码,并且不影响DO状态。
下面的例子请求从地址为50(十进制)的从机设立D1为ON状态。
Addr
Fun
DO
Addr hi
DO
Addr lo
Value hi
Value lo
CRC16 lo
CRC16 hi
32H
05H
00H
00H
FFH
00H
89H
F9H
·响应数据帧
对这个命令请求的正常响应是在DO状态改变以后回传接受到的数据。
Addr
Fun
DO
Addr hi
DO
Addr lo
Value hi
Value lo
CRC16 lo
CRC16 hi
32H
05H
00H
00H
FFH
00H
89H
F9H
上表4-10控制独立DO的响应
·错误指示码
假如主机请求的地址不存在或数据个数不对的则返回错误指示码:FFH。
预置多寄存器(功能码16)
·查询数据帧
功能码16允许用户改变多个寄存器的内容,PBF系列多功能电力仪表中系统参数、电度量可用此功能号写入。主机一次最多可以写入16个(32字节)数据。
下面的例子是预50(十进制)号从机吸取有功电度(正有功电度)EP_imp为17807783.3Kwh。存储电度是数值X0.1Kwh,因此写入的数值为,16进制为0A9D4089H。EP_imp的地址是0156H、0157,EP_imp占用32位,共4个字节。
Addr
Fun
Date start
reg hi
Date start
reg lo
Date #of
regs hi
Date #of
regs lo
32H
10H
01H
56H
00H
02H
Byte
Count
Value hi
Value lo
Value hi
Value lo
CRC16lo
CRC16hi
04H
0AH
9DH
40H
89H
E9H
3DH
·响应数据帧
对于预置单寄存器请求的正常响应是在寄存器值改变以后回应机器地址、功能号、数据起始地址、数据个数、CRC校验码。如表。
Addr
Fun
Date start
reg hi
Date start
reg lo
Date #of
regs hi
Date #of
regs lo
CRC16hi
CRC16lo
32H
10H
01H
56H
00H
02H
A5H
E7H
·错误指示码
假如主机请求的地址不存在或数据个数不对的则返回错误指示码:FFH。
PBF系列多功能电力仪表的应用细节及参量地址表
PBF系列多功能电力仪表测量值用ModBUS-RTU通讯规约的03号命令读出。
通讯值与实际值之间的相应关系如下表:(约定Va_t)为了通讯读出值,Va_s为实际值)
合用参量
相应关系
单位
电压值 V1,V2,V3,
Vvavg,V12,V23,V31,Vlavg
Val_s=Val_t×(PT1/PT2)/10
伏
电流值I1,I2,I3,lavg,ln
Val_s=Val_t×(CT/5)/1000
安培
功率值P1,P2,P3,Q1,Q2,Q3,S1,
S2,S3
Val_s=Val_t×(PT1/PT2) ×(CT/5) /10
瓦
乏
伏安
功率值Psum,Qsum,Ssum
Val_s=Val_t×(PT1/PT2) ×(CT/5) /10
电度量
EP_imp,EP_exp,EP_total,EP_net,
EQ_imp,EQ_exp,EQ_total,EQ_net
Val_s=Val_t/10
Kwh
Kvarh
功率因数值PFa,PFb,PFc,Pfcon
Val_s=Val_t/1000
无单位
频率F
Val_s=Val_t/100
赫兹(HZ)
说明:PT1/PT2就是PT比例;CT/5就是CT比例。
范例:Va的通讯读出值为2246,PT1为100,PT2为100,则Va的实际值
Va=2246×(100/100)/10=224.6V。
PBF系列多功能电力仪表参量地址表
以下为基本测量参量地址区:03H功能码读
地址
参数
读写属性
数值范围
数据类型
130H
频率F
R
4500~6500
Word
131H
相电压V1
R
0~65535
Word
132H
相电压V2
R
0~65535
Word
133H
相电压V3
R
0~65535
Word
134H
保存
R
0~65535
Word
135H
线电压V12
R
0~65535
Word
136H
线电压V23
R
0~65535
Word
137H
线电压V31
R
0~65535
Word
138H
保存
R
0~65535
Word
139H
相(线)电流l1
R
0~65535
Word
13AH
相(线)电流l2
R
0~65535
Word
13BH
相(线)电流l3
R
0~65535
Word
13CH
保存
R
0~65535
Word
13DH
保存
R
0~65535
Word
13EH
分相有功功率P1
R
-32768~32767
Integer
13FH
分相有功功率P2
R
-32768~32767
Integer
140H
分相有功功率P3
R
-32768~32767
Integer
141H
系统有功功率PSum
R
-32768~32767
Integer
142H
分相无功功率Q1
R
-32768~32767
Integer
143H
分相无功功率Q2
R
-32768~32767
Integer
144H
分相无功功率Q3
R
-32768~32767
Integer
145H
系统无功功率Qsum
R
-32768~32767
Integer
146H
分相视在功率S1
R
0~65535
Word
147H
分相视在功率S2
R
0~65535
Word
148H
分相视在功率S3
R
0~65535
Word
149H
系统视在功率Ssum
R
0~65535
Word
14AH
分相功率因数PF1
R
-1000~1000
Integer
14BH
分相功率因数PF2
R
-1000~1000
Integer
14CH
分相功率因数PF3
R
-1000~1000
Integer
14DH
系统功率因数PF
R
-1000~1000
Integer
14EH(高16位)
14FH(低16位)
系统有功功率PLsum
R
0~65535
Dword
150H(高16位)
151H(低16位)
系统无功功率QLsum
R
0~65535
Dword
152H(高16位)
153H(低16位)
系统视在功率SLsum
R
0~65535
Dword
PBF系列多功能电力仪表参量地址表
以下为电度参量地址区:03H功能码读,10H功能码写
地址
参数
读写属性
数值范围
数据类型
156H(高16位)
157H(低16位)
有功电度Ep_imp
R/W
0~
Dword
158H(高16位)
159H(低16位)
有功电度Ep_exp
R/W
0~
Dword
15AH(高16位)
15BH(低16位)
感性无功电度Eq_imp
R/W
0~
Dword
15CH(高16位)
15DH(低16位)
容性无功电度Eq_exp
R/W
0~
Dword
15EH(高16位)
15FH(低16位)
净有功电度Ep_total
R/W
0~
Dword
160H(高16位)
161H(低16位)
网络有功电度Ep_net
R/W
0~
Dword
162H(高16位)
163H(低16位)
净无功电度Eq_total
R/W
0~
Dword
164H(高16位)
165H(低16位)
网络无功电度Eq_net
R/W
0~
Dword
以下为DI地址:02H读
地址
参数
数值范围
数据类型
读写属性
0000H
DI1
1=ON,0=OFF
bit
R
0001H
DI2
1=ON,0=OFF
bit
R
以下为DO地址:01H读,05H写
地址
参数
数值范围
数据类型
读写属性
0000H
DO1
1=ON,0=OFF
bit
R/W
0001H
DO2
1=ON,0=OFF
bit
R/W
PBF系列多功能电力仪表参量地址表
以下为系统参量地址区:03H功能码读,10H功能码写
地址
参数
读写属性
数值范围
数据类型
100H
保护密码
R/W
0~9999
Word
101H
通讯地址
R/W
1~247
Word
102H
通讯波特率
R/W
0~6:相应600,1200,
2400,4800,
19200,38400bps
Word
103~104H
保存
-
-
-
105H
PT1高字
R/W
0~220×10000
PT1=hi*10000+lo
Word
106H
PT1低字
R/W
0~9999
PT1:100~2202300
Word
107H
PT2
R/W
100,220,380
Word
108H
CT1 *NOTE
R/W
5~6000
Word
109H
DO工作方式选择
R/W
0——电度脉冲方式
——继电器方式
Word
10AH~10DH
保存
-
-
Word
10EH
继电器1工作方式选择
R/W
——电平
1 ——脉冲
Word
10FH
继电器1脉冲宽度设定
R/W
1~40单位是50ms
Word
110H
继电器2工作方式选择
R/W
——电平
1 ——脉冲
Word
111H
继电器2脉冲宽度设定
R/W
1~40单位是50ms
Word
112H
测量参数自动显示
R/W
0~手动
1~10-自动(间隔时间单位秒)
Word
113H~117H
保存
-
Word
□表达出厂默认值
NOTE:CT1代表三相电流的统一的一次值。
NOTE:
1、数据类型:“bit”指1位二进制位;“Word”指16位无符号整数;“Integer”指16位有符号整数;“Dword”指32位无符号整数。
2、读写属性:“R”只读,读DI用02H号命令;读DO用01H号命令;读其它参量用03H号命令;“R/W”可读可写,写(控)DO用05H号命令;写系统参量用10H命令。严禁向未列出的或不具可写属性的地址写入。
3、电度量为32位无符号整数,高位、低位各占一个地址。上位软件应当将高位数值乘以65536再加低位数值才可得出参量值再除以10方可得到这一参量值。然后再考虑通讯值和实际值之间的关系得该参量实际值的结论。此外,电度量累积到(通讯值,实际值为99999999.9KWH或KVarH)后自动清零,各电度量间不互相影响。尚有,电度参量是可写的,即可以手动清零或改写成你需要的值。
4、波特率的设定范围600bps,1200bps,4800 bps,9600 bps,19200 bps,38400 bps,在此范围外的设定是不允许的。假如写入超范围的设定值,仪表会启用默认波特率;9600 bps。
5、关于DO的设立:目前DO可以选择在继电器输出方式和电度输出方式(功能码03地址109H),假如设定为电度输出方式,继电器的相关设立(功能码03地址10EH,10FH,110H,111H)将不起作用,控制继电器的输出(功能码01)也不起作用;假如设定为继电器方式,电度脉冲的相关设立(功能码03地址10AH,10BH,10CH,10DH)将不起作用。
6、关于继电器输出的工作方式:假如设定为脉冲方式(功能码03地址10EH,110H),当DO输出1时(功能码01地址01H,02H),系统将根据脉冲宽度的设定(功能码03地址10FH,111H)输出相应宽度的脉冲,随后复位继电器,此后读DO的状态将变为O。
7、电度的存储时间细度为50mS,即每50mS存储一次,但是16个地址分时存储,即每个电度量存储一次的时间间隔为0.8秒。
8、电度的显示值为有功电度Ep_imp /感性无功电度Eq_imp,其他分量需从通讯读出或者定制。
9、电度的潜动实验标准为0.5%:即潜动电压0.5V,潜动电流0.025A。只有电压和电流同时高于该启动值时,电能才开始计量。
协议补充:
新增谐波内容:
电压谐波:
地址
参数
读写属性
范围
数据类型
200H..220H
A相电压谐波
R
0~1000
word
240H..260H
B相电压谐波
R
0~1000
word
280H..2A0H
C相电压谐波
R
0~1000
word
电流谐波:
地址
参数
读写属性
范围
数据类型
320H..340H
A相电流谐波
R
0~1000
word
360H..280H
B相电流谐波
R
0~1000
word
400H..420H
C相电流谐波
R
0~1000
word
说明:实际数据为小数点1位(即结果/10)
展开阅读全文