EDMI电能表通讯规约中文说明.docx
《EDMI电能表通讯规约中文说明.docx》由会员分享,可在线阅读,更多相关《EDMI电能表通讯规约中文说明.docx(8页珍藏版)》请在冰豆网上搜索。
EDMI电能表通讯规约中文说明
EDMI电表EDMI规约详细说明
以下描述都是以采集表号序列号9的反向总有功电能为例:
规约执行过程:
(以下数据都是16进制)
1.进入命令模式:
上位机(主站)发送:
02450C1F6735000000010001AA7E03
02头
45标志位:
表示可以采集一对多方式(Rs485,Rs422)
0C1F6735字节的表地址(四个就是表序列号9化成16进制的四个字节)00000001四个字节的源地址(可以随便定义)
0001重发序列号高字节,低字节(可以自由定义)
如果下次所发报文重发序列号和本次重发序列号相同,那么电表就会把本次所发的报文再次发给主站。
AA7ECRC(CCITT16bit校验)从头到校验之前的字节数据进行CRC校验,算法后面会附带
03结束符
下位机(电表)发送:
0245000000010C1F67350001062E4B03
02头
45标志位:
表示可以采集一对多方式(Rs485,Rs422)
00000001四个字节的主站源地址
0C1F6735四个字节的电表地址
0001重发序列号
06确认OK。
如果电表认为主站所发报文出错,此字节就是18。
2E4BCRC校验
03结束字符
2.登入命令:
上位机发送(主站):
02450C1F67350000000100004C45444D492C494D4445494D44450010423503
02头
45标志位:
表示可以采集一对多方式(Rs485,Rs422)
0C1F6735四个字节的表地址
00000001四个字节的源地址
0000重发序列号高字节,低字节(进入命令模式是0001,现在是0000)
4C表示是登入电表
45444D49用户名’EDMI’ASCII玛
2C’,’的ASCIIxx
494D4445494D4445密码:
’IMDE’的ASCIIxx
00终止字节(表示前面用户名和密码到现在开始结束)
104235(两个字节的CRC,那为什么是三个字节呢.解释如下)
特别注意:
在此规约中,上行报文在组织报文好后,再要对整个报文进行扫描一遍,如发现在除了02,尾03的其他报文中,有02,03,10,11,13,就把此报文变为两个字节10,40+此字节数据,这样做的目的是在数据体中区分一些特殊字符。
0210,42
0310,43
10,50
1110,51
1310,53
所以CRC原来的报文应该是0235,但是由于有02,所以把02分为10,42,CRC因此就变成10,42,35了。
同样的,在主站接收从表计发来的报文中,如果有10,就把10去掉,10后面的那个字节数据减去42才是真正的数据,然后再报文进行各种数据判断和校验。
下位机(电表)发送:
0245000000010C1F67350000061D7A03
02头
45标志位:
表示可以采集一对多方式(Rs485,Rs422)
00000001四个字节的主站源地址
0C1F6735四个字节的电表地址
0000重发序列号
06确认OK。
如果电表认为主站所发报文出错,此字节就是18。
1D7ACRC校验
03xx字符
3.对电表的读
上位机发送(主站):
读取有功反向总电能累计量(寄存器地址0069)
02450C1F673500000001000052006944CA2403
02头
45标志位:
表示可以采集一对多方式(Rs485,Rs422)
0C1F6735字节的表地址(四个就是表序列号9化成16进制的四个字节)00000001四个字节的源地址(可以随便定义)
0000重发序列号
52功能xx:
’R’的ASCIIxx,说明是读
0069寄存器地址
44标志位(’D’)的ASCII玛,说明时读取Double型的数据
CA24CRC校验
下位机(电表)发送:
0245000000010C1F6735000052006940555CE5AB1680003A4603
02头
45标志位:
表示可以采集一对多方式(Rs485,Rs422)
00000001四个字节的主站源地址
0C1F6735四个字节的电表地址
0000重发序列号
52功能xx:
’R’的ASCIIxx,说明是读
0069寄存器地址
40555CE5AB168000数据内容
根据IEEEfloatPoint算法来计算所得是
85.4515,IEEEfloatpoint算法后面会附带3A46CRC校验
03结束字节
4.退出电表:
上位机发送(主站):
02450C1F67350000000100015800EAFA03
02头
45标志位:
表示可以采集一对多方式(Rs485,Rs422)
0C1F6735字节的表地址(四个就是表序列号9化成16进制的四个字节)00000001四个字节的源地址(可以随便定义)
0001重发序列号
58功能xx退出电表
00空xx
EAFACRC校验
03结束字节
下位机(电表)发送:
0245000000010C1F6735000106482E03(解释如上)这样整个采集过程就此结束
以上的xx部分要特别注意
附件ACCITT16bitCRC算法(查表法)
Constccitt_16:
array[
0..255]ofWord=($00,$1021,$2042,$3063,$4084,$50A5,$60C6,$70E7,
$8108,$9129,$A14A,$B16B,$C18C,$D1AD,$E1CE,$F1EF,
$1231,$0210,$3273,$2252,$52B5,$4294,$72F7,$62D6,
$9339,$8318,$B37B,$A35A,$D3BD,$C39C,$F3FF,$E3DE,
$2462,$3443,$0420,$1401,$64E6,$74C7,$44A4,$5485,
$A56A,$B54B,$8528,$9509,$E5EE,$F5CF,$C5AC,$D58D,
$3653,$2672,$1611,$0630,$76D7,$66F6,$5695,$46B4,
$B75B,$A77A,$9719,$8738,$F7DF,$E7FE,$D79D,$C7BC,
$48C4,$58E5,$6886,$78A7,$0840,$1861,$2802,$3823,
$C9CC,$D9ED,$E98E,$F9AF,$8948,$9969,$A90A,$B92B,
$5AF5,$4AD4,$7AB7,$6A96,$1A71,$0A50,$3A33,$2A12,
$DBFD,$CBDC,$FBBF,$EB9E,$9B79,$8B58,$BB3B,$AB1A,
$6CA6,$7C87,$4CE4,$5CC5,$2C22,$3C03,$0C60,$1C41,
$EDAE,$FD8F,$CDEC,$DDCD,$AD2A,$BD0B,$8D68,$9D49,
$7E97,$6EB6,$5ED5,$4EF4,$3E13,$2E32,$1E51,$0E70,
$FF9F,$EFBE,$DFDD,$CFFC,$BF1B,$AF3A,$9F59,$8F78,
$9188,$81A9,$B1CA,$A1EB,$D10C,$C12D,$F14E,$E16F,
$1080,$00A1,$30C2,$20E3,$5004,$4025,$7046,$6067,
$83B9,$9398,$A3FB,$B3DA,$C33D,$D31C,$E37F,$F35E,
$02B1,$1290,$22F3,$32D2,$4235,$5214,$6277,$7256,
$B5EA,$A5CB,$95A8,$8589,$F56E,$E54F,$D52C,$C50D,
$34E2,$24C3,$14A0,$0481,$7466,$6447,$5424,$4405,
$A7DB,$B7FA,$8799,$97B8,$E75F,$F77E,$C71D,$D73C,
$26D3,$36F2,$0691,$16B0,$6657,$76,$4615,$5634,
$D94C,$C96D,$F90E,$E92F,$99C8,$89E9,$B98A,$A9AB,
$5844,$4865,$7806,$6827,$18C0,$08E1,$3882,$28A3,
$CB7D,$DB5C,$EB3F,$FB1E,$8BF9,$9BD8,$ABBB,$BB9A,
$4A75,$5A54,$6A37,$7A16,$0AF1,$1AD0,$2AB3,$3A92,
$FD2E,$ED0F,$DD6C,$CD4D,$BDAA,$AD8B,$9DE8,$8DC9,
$7C26,$6C07,$5C64,$4C45,$3CA2,$2C83,$1CE0,$0CC1,
$EF1F,$FF3E,$CF5D,$DF7C,$AF9B,$BFBA,$8FD9,$9FF8,
$6E17,$7E36,$4E55,$5E74,$2E93,$3EB2,$0ED1,$1EF0);
functionEdmi_Create_crc16(varptx:
arrayofByte;Constlen:
integer):
Word;
Var
Crc:
Word;
i:
integer;
begin
crc:
=0;
fori:
=0tolen-1do
begin
crc:
=ccitt_16[(CRCShR8)xorptx[i]]xor((crcshL8));
end;
result:
=CRC;
end;
附件BIEEEFloatPoint算法:
IEEE754:
StandardforBinaryFloating-PointArithmeticFloatingpointnumbersaresent/receivedintheIEEEstandardformatsforsingleprecisionfloatingpointnumbers,oroptionallydoubleprecision.
Theformatofsingleprecisionfloatingpointnumbersisasfollows:
-----------------
*sign*1bit
-----------------
*exponent*8bits
-----------------
*mantissa*23bits+1impliedbit=24bits
-----------------
Doublefloatingpointisasfollows:
-----------------
*sign*1bit
-----------------
*exponent*11bits
-----------------
*mantissa*52bits+1impliedbit=53bits
-----------------
Theimpliedbitisalways1exceptforazerovaluewhereitiszero.Azerovalueisindicatedbyazeroexponent.Theexponentforafloatisstoredasexcess127(i.e.anexponentof0isrepresentedby127)andforadoubleasexcess
102.Themantissaisin
positivemagnitudeform.
SosayforexamplereadingregisterE002(phaseCvoltage)returns
43717388
Asa32bitbinarynumberthisis
01000011011100010111001110001000
Signbit:
0
Exponent:
100110
Mantissawithoutimpliedbit:
11100010111001110001000
Wenowaddtheimpliedbitandshowthepoint:
1.11100010111001110001000Theexponentis134indecimal.Theexponentisthus134-127=
7.Thismeanswemustmultiplythemantissaby2
7.Thiscanbeachievedbyshiftingthepointrightby7bits.Themantissawethengetis:
A-6EDMIGeniusRegisterManual
110001.0111001110001000
Toconvertthistodecimalweusetwostages.Firstofallthewholepart:
110001binary=241decimal
Nowthefractionalpart:
0111001110001000binary=29576decimal
thendivideby2tothepowerofthenumberofbinarydigits:
16decimal=
0.45129decimal
Combingwholeandfractionalparts:
241.45129
Thesignbitwasazero,indicatingthatthenumberispositive,givingusafinalanswer
of+241.45129volts