Vous êtes sur la page 1sur 53

WEGDrives&ControlsAutomaoLtda

RelsEletrnicos/SmartGrid

RichardH.Baeumle
PauloC.S.Ficagna
December2015
Draft

SMWSecureMODBUSCommunicationProtocolSpecification

Abstract

ThisdocumentdescribestheMODBUSclient/servercommunicationforWEG
SmartMetersandclientdevices.

Copyrightnotice

Copyright2015WEGAutomacaoLtda.AllRightsReserved.Donotduplicate
ordistributewithoutwrittenpermissionfromWEGDrives&Controls
AutomaoLtda.

Distributionlist

CompanyContactname
WAY2AdrissonC.Floriano<adrisson.floriano@way2.com.br>

Baeumle,Ficagna

Confidential

[Page1]

TableofContents

1.Introduction
..................................................... 4

1.1.Features
..................................................... 4

1.2.Terminology
.................................................. 4
2.SMWSecureModbusProtocol
....................................... 4

2.1.MessagingModel
.............................................. 5

2.2.Query/ReplyModel
............................................ 5

2.3.SecureSession
............................................... 5
3.MessageSemantics
................................................ 6

3.1.Read
......................................................... 6

3.2.Write
........................................................ 6

3.3.Read+Write
................................................... 6
4.MessageTransmission
............................................. 6

4.1.MessageSize
................................................. 7

4.2.Endianess
.................................................... 7

4.3.TransmissionParameters
...................................... 7
5.EstablishingaSecureSession
.................................... 7

5.1.DeviceIdentification
........................................ 8

5.2.ExchangePublicKeys
......................................... 9

5.3.ExchangeSignaturesofPublicKeys
.......................... 10

5.4.ExchangeDiffieHellmanPublicValues
....................... 11

5.5.ExchangeSignaturesofDiffieHellmanPublicValues
......... 14

5.6.SharedSecretGeneration&EncryptedCommunication
.......... 15

5.7.Troubleshooting
............................................. 15
6.Messages&Description
.......................................... 16

6.1.FirmwareIdentification
..................................... 16

6.2.InstantaneousValues
........................................ 17

6.2.1.RMSVoltage
.......................................... 17

6.2.2.RMSCurrent
.......................................... 18

6.2.3.ActivePower
......................................... 18

6.2.4.ReactivePower
....................................... 19

6.2.5.ApparentPower
....................................... 20

6.2.6.PowerFactor
......................................... 20

6.2.7.TotalHarmonicDistortion
............................ 21

6.2.8.InternalTemperature
................................. 22

6.2.9.SupplyFrequency
..................................... 22

6.2.10.AngleofU(Li)
...................................... 23

6.2.11.BatteryCharge
...................................... 23

6.3.Energy
...................................................... 24

6.4.TariffRates
................................................ 25

6.5.Configuration
............................................... 25

6.5.1.General
.............................................. 25

6.5.2.Activation
........................................... 33

6.6.LoadProfile
................................................ 34

6.7.QualityIndexes
............................................. 37

6.8.CommunicationSession
....................................... 37

6.9.DisconnectControl
.......................................... 37

6.9.1.Reconnect
............................................ 37

6.9.2.Disconnect
........................................... 38

6.9.3.OutputState
......................................... 38

Baeumle,Ficagna

Confidential

[Page2]


6.10.FirmwareUpgrade
...........................................

6.11.Logs
.......................................................

6.11.1.Errors&Alarms
.....................................

6.11.2.ParameterChanges
...................................

6.11.3.FirmwareUpgrade
....................................

6.11.4.UserIds
............................................
7.FinalConsiderations
............................................
APPENDIXA:SMWQUICKQUERYGUIDE
...................................
APPENDIXB:OBISANDSDKEQUIVALENTCODES
...........................

Baeumle,Ficagna

Confidential

39
40
40
40
42
44
45
46
50

[Page3]

1.Introduction

WEGSmartMetersallowtheuseofplugandplaycommunicationdevicesfor
remotecommunication.Theinformationexchangebetweencommunication
deviceandmeterreliesonaproprietaryprotocolknownasSMWSecure
Modbus.
Themeterhaveauniqueregisterforeachreadingandconfiguration
parameter.ThecommunicationdeviceactsastheModbusclientandthe
accesstotheregistersisgrantedafterasecurehandshakeandsession
establishmentprocess.

1.1.Features

SMWSecureModbushasthefollowingfeatures:

oMutualauthenticationwithdigitalcertificates
oSynchronousmessageexchanges
oMessageencryption(secrecy)
oLowheaderoverheadandparsingcomplexity
oSupporttoallmeterread/writeconfigurations.

1.2.Terminology

Client
Theoriginatingendpointofaquerythedestinationendpointofa
reply.

Meter
Thedestinationendpointofaquerytheoriginatingendpointof
areply.

SecureSession
Asemipermanentinteractiveinformationinterchangebetweenthe
clientandthemeter.

2.SMWSecureModbusProtocol

ThecommunicationprotocolusedbyWEGSmartMetersusesModbusRTUwith
securitymechanismstoensurethesecrecyandauthenticityofthedata
exchangedwiththemeterandalsotoavoiddatafabrication.Itcanbe
logicallydescribedasamultilayerprotocol(seeFigure1):

++
|Application|
++
++\
|Session||
++|
++|SMWSecure
|Queries/Replies||Modbus
|||

Baeumle,Ficagna

Confidential

[Page4]

|Messages/Encryption||
++/
++
|UART|
++
Figure1:AbstractLayeringof
SMWSecureModbus

2.1.MessagingModel

Theinteractionmodeloftheprotocolisthetraditionalclient/server
modelusedinModbusprotocol.Aclientsendsaquerytothemeteraddress
0x01(thequerymustbeavalidModbusfunction)requestingtoread/write
aregisterinthemeterordobothatthesametime.Themeterthensends
aresponsecontainingitsaddressandthesamefunctioncodeofthe
requestfollowedbythepayload.BothqueryandreplyendswithaCRC16.
ThemessageflowisdepictedinFigure2:

ClientMeter
||
|Query[fun.code]|
+>|
||
|Reply[fun.code]|
|/Errorcode|
|<+
||
Figure2:MessageTransmission

2.2.Query/ReplyModel

Thereare3typesofqueriessupportedbythemeter:read,writeor
read+write.Ifthemeterdoesnotsupportaspecificquery,itwill
respondwithaMODBUSerrorcode.

2.3.SecureSession

Whenaclientdeviceisattachedtothemeteritmustestablishasecure
communicationchannelinordertoreadandwriteregistersinthemeter.
ThesecurechannelrequiresanECCcertificatesignedbyWEGCA.The
securesessionisstartedbytheclientbysendingitscertificatetothe
meterandreceivingthecertificateofthemeter.Ifthecertificatesare
valid,clientandmeterstartaDiffieHellmanhandshaketogeneratea
sharedsecret.ThesharedsecretishashedusingSHA256andthenusedas
AES256CBCkeytoencryptanddecryptallmessagesinthesession.
Thesecuresessiondoesnotimplementatimeout,butitisautomatically
closedwhenthedeviceisphysicallydetachedorwhenthemeter/client
receives3sequentialinvalidmessages.

Thefollowingalgorithmsareusedinthesecuresessionestablishment:

Baeumle,Ficagna

Confidential

[Page5]

ECCKeyPairCurveSECP256R1
Generatedbytheclient,signedbyWEGCA
ECDSARequiredtoverifythesignatures
DHSharedsecretgeneration
Withpublicvaluesignatureverification
SHA256Defaulthashingalgorithm
AESCBC256Messageencryption.

3.MessageSemantics

3.1.Read

ClientMeter
||
|ReadHoldingRegisters[0x03,length]|
+>|
||
|ReadHoldingRegistersResponse[0x03,data]|
|<+
||
Figure3:ReadHoldingRegistersMessageTransmission

3.2.Write

ClientMeter
||
|WriteMultipleRegisters[0x10,data]|
+>|
||
|WriteMultipleRegistersResponse[0x10,writtenLength]|
|<+
||
Figure4:WriteMultipleRegistersMessageTransmission

3.3.Read+Write

ClientMeter
||
|Read+WriteMultipleRegisters[0x17,data,readLength]|
+>|
||
|Read+WriteMultipleRegistersResponse[0x17,data]|
|<+
||
Figure5:Read+WriteMultipleRegistersMessageTransmission

4.MessageTransmission

Thissectiondescribeconstraintsregardingthemessagetransmission.

Baeumle,Ficagna

Confidential

[Page6]

4.1.MessageSize

ThemaximumsizeofaModbusProtocolDataUnit(PDU)shouldnotexceed
253bytes(2562bytesCRC1byteserveraddress).

4.2.Endianess

ValuescarriedinMODBUSApplicationDataUnit(ADU)aretransmittedin
networkbyteorder.Thedefaultendiannessusedinthemeterandclientis
littleendian.Theclientmustswapthevaluesifusingadifferentbyte
order.

4.3.TransmissionParameters

Theclientconfigurationwhenconnecteddirectlytotheserialline(UART)
ofthemetershouldusethefollowingconnectionparameters:

+++
|Parameter|Value|
+++
|Speed|115200bps|
|Stopbits|2|
|Parity|none|
+++
TableX:Serialportparameters.

Theresponsetimeoutistypically300msformostqueries.Specific
queries,suchasDHsignatureexchangemaytakeupto3seconds.

5.EstablishingaSecureSession

Sessionestablishmentcomprehendstheidentificationofthemeterdevice,
mutualauthenticationwithECpublickeyssignedbyWEGCA,and,the
generationofasessionkeyusingamodifiedDiffieHellman(DH)algorithm
thatsignandverifypublicvaluestoavoidManInTheMiddle(MITM)
attacks.TheDHsessionkeyisusedtoencryptalllatermessagesusing
AES256CBC.Acompletesequenceofeventsthatmustoccurduringsession
establishmentisdepictedinFigure6:

ClientMeter
||
|(1)ReadDeviceIdentification|
+>|
|[manufacturer,model,version]|
|<+
||
|(2)ExchangePublicKeys[clientkey]|
+>|
|[meterkey]|
|<+
||

Baeumle,Ficagna

Confidential

[Page7]

|(3)ExchangeSignatureofPublicKeys[clientsignature]|
+>|
|[metersignature]|
|<+
||
+++|
||(4)SignatureVerification||
|<++>|
||
|(5)ExchangeDHPublicValues[clientDHpublicvalue]|
+>|
|[meterDHpublicvalue]|
|<+
||
|(6)ExchangeSignatureDHPublicValues[clientDHsignature]|
+>|
|[meterDHsignature]|
|<+
||
+++|
||(7)DHSignatureVerification||
|<++>|
||

+++|
||(8)GenerateSessionKey||
|<++>|
||
|(9)Securemessaging[encryptedquery]|
+>|
|[encryptedreply]|
|<+
||
Figure6:SequenceofEventsinSessionEstablishment

Ifanyeventfails,forinstance,ifthesignaturecannotbeverified,the
processmustbeabortedandstartedfromthebeginninginthenext
attempt.
Oncethesessionisopen,itdoesnothaveatimeout.However,ifoneend
receivesasequenceof3invalidpackages,thesessionmustbe
automaticallyclosed.

5.1.DeviceIdentification

Thefirststepofthesessionestablishmentshouldbealwaystoreadthe
deviceidentification.Themeterresponseshallcontainthemanufacturer
name,metermodelandfirmwareversion.

MODBUSFunctionCode
ReadDeviceId

Baeumle,Ficagna

Confidential

[Page8]

Request

5
012b0e0100
server,functioncode,MEI,category,object
7
7077
CRC16

Response

5
012b0e0101
server,functioncode,MEI,device,conformity
8
000003
morefollows,nextobjectid,objectcount
9
00
objectid(manufacturer)
10
03
manufacturerobjectlength
13
574547
manufacturerstringWEG
14
01
objectid(model)
15
08
modelobjectlength
20
534d573330
modelstringSMW300>
23
300000
...<
24
02
objectid(version)
25
04
versionobjectlength
30
302e303100
versionstring0.01
32
c434
CRC16

Manufacturer,modelandversionfieldsarerepresentedbyASCII
characters.FormoredetailsonMEI,object,categoryandconformity
fields,pleaserefertoMODBUSoriginalspecificationavailableat
<http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf>.

5.2.ExchangePublicKeys

Thesecondstepofthesessionestablishmentistoobtainthepublickey
ofthemeterandupdateclientskeyinthemeter.Itisaccomplishedin
onemessage.
ThepublickeysaregeneratedusingEllipticCurveCryptography(ECC).The
curveshouldbeSecp256R1.

MODBUSFunctionCode
Read+WriteMultipleRegisters

Request

2
0117
server,functioncode
4

006f
readpublickeyofthemeter
6

0021
readsizeinwords
8

0071
updateclientspublickey
10

0021
clientspublickeysizeinwords
11

42
clientspublickeysizeinbytes66
16
04d94f0c5b
clientspublickey>
21
91aeebf0d1

...
26
22862bf049

...
31
3271e15d1e

...
36
1353f28270

...
41
ccaa7f51e2

...

Baeumle,Ficagna

Confidential

[Page9]

46
39014ac1a3

...
51
f9e05f3b4f

...
56
1c0bd3b809

...
61
6bebd2c4f0

...
66
8757273651

...
71
c201cc209c

...
76
262d445066

...
77
00

...<
79
3db7
CRC16

Response

2
0117
server,functioncode
3
42
meterspublickeysizeinbytes
8
040cb8ae78
meterspublickey>
13
24b5112fe1...
18
9447f04c72...
23
423e7a25ac...
28
272bf71e6c...
33
4925edcbcb...
38
f72a535d25...
43
4e9e9a9d1c...
48
6186888de1...
53
3aafe11bb5...
58
6e2d6edda3...
63
bb4a23fbb1...
68
61bdc3e94c...
69
ff
...<
71
252b
CRC16

5.3.ExchangeSignaturesofPublicKeys

Inthethirdstep,theclientshouldstartthesignatureexchange.Each
sidewillverifythesignatureusingWEGCApublickey.Thepurposeof
thismutualverificationistoalloweachparttoidentifytheotherasan
authorizedequipment.ThesignaturesareASN.1encodedandtheirsizesare
typically72byteslong.

MODBUSFunctionCode
Read+WriteMultipleRegisters

Request

2
0117
server,functioncode
4
0070
readsignatureofthemeter
6
0024
readsizeinwords
8
0072
updateclientssignature
10
0024
clientssignaturesizeinwords
11
48
clientssignaturesizeinbytes72
16
3046022100
clientssignature>
21
16097d0150...

Baeumle,Ficagna

Confidential

[Page10]

26
5368b083aa...
31
47a0ec294c...
36
3268767598...
41
a29643cd1b...
46
887146e255...
51
bd89022100...
56
851422d5c7...
61
1168d03a19...
66
74db02e1ee...
71
3109d3296b...
76
e0d8158f8e...
81
7122a5d787...
83
7b13
...<
85
1f4c
CRC16

Response

2
0117
server,functioncode
3
48
meterssignaturesizeinbytes72
8
3046022100
meterssignature>
13
1e64935978...
18
3d1caa37b3...
23
b6d0d8d9e8...
28
dbba8409ee...
33
789251b67a...
38
528b525ffb...
43
e81e022100...
48
d5ace576b7...
53
cbf3ad8e30...
58
1282bfd9a9...
63
95fb7b5712...
68
fb5b66615a...
73
1c1df04d54...
75
d8f3
...<
77
a14f
CRC16

5.4.ExchangeDiffieHellmanPublicValues

IfthepublickeysareverifiedwithWEGCApublickey,thenextstepis
toexchangeDHpublicvalues.Thepublicvalueistypically220bytes
long.TheclientmustgenerateanewDHpublicvalueeachsession
establishment.Thefollowingpandgparametersshouldbeusedinthe
DHprivate/publicvaluepairgeneration:

p[220]={
0x0F,0x52,0xE5,0x24,0xF5,0xFA,0x9D,0xDC,
0xC6,0xAB,0xE6,0x04,0xD7,0x5E,0x46,0x29,
0xAF,0xB1,0xF4,0x81,0xAF,0xFC,0x9A,0xEF,
0xFA,0x89,0x9E,0x0A,0xFB,0x16,0xE3,0x8F,
0x01,0xA2,0xC8,0xDD,0xB4,0x47,0x12,0xF8,

Baeumle,Ficagna

Confidential

[Page11]

0x29,0x09,0x13,0x6E,0x9D,0xA8,0xF9,0x5D,
0x08,0x00,0x3A,0x8C,0xA7,0xFF,0x6C,0xCF,
0xE3,0x7C,0x3B,0x6B,0xB4,0x26,0xCC,0xDA,
0x89,0x93,0x01,0x73,0xA8,0x55,0x3E,0x5B,
0x77,0x25,0x8F,0x27,0xA3,0xF1,0xBF,0x7A,
0x73,0x1F,0x85,0x96,0x0C,0x45,0x14,0xC1,
0x06,0xB7,0x1C,0x75,0xAA,0x10,0xBC,0x86,
0x98,0x75,0x44,0x70,0xD1,0x0F,0x20,0xF4,
0xAC,0x4C,0xB3,0x88,0x16,0x1C,0x7E,0xA3,
0x27,0xE4,0xAD,0xE1,0xA1,0x85,0x4F,0x1A,
0x22,0x0D,0x05,0x42,0x73,0x69,0x45,0xC9,
0x2F,0xF7,0xC2,0x48,0xE3,0xCE,0x9D,0x74,
0x58,0x53,0xE7,0xA7,0x82,0x18,0xD9,0x3D,
0xAF,0xAB,0x40,0x9F,0xAA,0x4C,0x78,0x0A,
0xC3,0x24,0x2D,0xDB,0x12,0xA9,0x54,0xE5,
0x47,0x87,0xAC,0x52,0xFE,0xE8,0x3D,0x0B,
0x56,0xED,0x9C,0x9F,0xFF,0x39,0xE5,0xE5,
0xBF,0x62,0x32,0x42,0x08,0xAE,0x6A,0xED,
0x88,0x0E,0xB3,0x1A,0x4C,0xD3,0x08,0xE4,
0xC4,0xAA,0x2C,0xCC,0xB1,0x37,0xA5,0xC1,
0xA9,0x64,0x7E,0xEB,0xF9,0xD3,0xF5,0x15,
0x28,0xFE,0x2E,0xE2,0x7F,0xFE,0xD9,0xB9,
0x38,0x42,0x57,0x03}

g[1]={
0x02
}

MODBUSFunctionCode
Read+WriteMultipleRegisters

Request
2
0117
server,functioncode
4
0075
readDHpublicvalueofthemeter
6
006e
readsizeinwords
8
0075
updateclientsDHpublicvalue
10
006e
clientsDHpublicvaluesizewords
11
dc
clientsDHpublicvaluesizeinbytes220
16
06ca6c240e
clientsDHpublicvalue>
21
6125a28adb
...
26
eff4dc7bcc
...
31
94ac9b1929
...
36
0684bd95b4
...
41
b28f7c1fbe
...
46
0d6a635f59
...
51
6d87bb9daa
...
56
79f9c87246
...
61
4622576e20
...
66
aa88d53665
...
71
d2e33cb032
...
76
ec2553f2d3
...

Baeumle,Ficagna

Confidential

[Page12]

81
9f97860e55
...
86
20571e28cf
...
91
d434c17d84
...
96
ce7a945b6b
...
101
2de388de3c
...
106
7dc9d788d1
...
111
1f365333b7
...
116
06acccfb26
...
121
a333cf9087
...
126
0b70fc8df8
...
131
a1e96b5867
...
136
d832524ec6
...
141
a8d67eb6a2
...
146
261767be53
...
151
edac5ae153
...
156
ef80d644a1
...
161
afbc0cb43f
...
166
d462f03830
...
171
d424943e85
...
176
bad3d632de
...
181
28d158df04
...
186
cfdebce56b
...
191
1d898dc99b
...
196
16d1e29328
...
201
06f66c8e1c
...
206
362feabd8d
...
211
d877df45a5
...
216
809d998d18
...
221
b384ebc756
...
226
9556407e9f
...
231
4072720302
...<
233
d07a
CRC16

Response

2
0117
server,functioncode
3
dc
metersDHpublicvaluesizeinbytes220
8
0d469f7cb8
meter'sDHpublicvalue>
13
5f8aed56e2
...
18
8b40914736
...
23
682553401b
...
28
71e6cbaaed
...
33
14dc2ebe3d
...
38
eeec192b63
...
43
2517412780
...
48
524e08771c
...
53
ccf1bb8ec0
...
58
4c1e1c5cf5
...
63
a2fef462ad
...
68
29fc6cbc0b
...
73
f97a7644ee
...

Baeumle,Ficagna

Confidential

[Page13]

78
1a32914660
...
83
f833a1b4f4
...
88
c30ef7d7ec
...
93
4a1f049afa
...
98
4b2d2f0111
...
103
27c0136b7f
...
108
3baf528348
...
113
6bd0628e44
...
118
3bc8567482
...
123
bd1282edfb
...
128
e8dd9e0a21
...
133
c40c6a2aa9
...
138
de8be1dd56
...
143
906fe532e5
...
148
8197aef740
...
153
21a33bc50b
...
158
d84de0ce49
...
163
5bfc8cb53e
...
168
3b280457ce
...
173
77bea492fa
...
178
74842dba38
...
183
132277e32a
...
188
982ff944d0
...
193
4a8ccb2533
...
198
0d599f8cfb
...
203
e241b784e0
...
208
1c70bb2304
...
213
4a4e972eaf
...
218
626046c111
...
223
4c9b7d36a6
...<
225
0a87
CRC16

5.5.ExchangeSignaturesofDiffieHellmanPublicValues

Thepublicvaluesshallbesignedbyeachsideandthenexchangedsoeach
canconfirmthepublicvalueisgeneratedbytheotherandnotbyathird
party.ThisstepisperformedtoavoidMITMattacks.Thesignatureshould
begeneratedusingECDSAalgorithmandtheECCprivatekey.The
verificationusesthereceivedsignatureandtheECCpublickeyofthe
otherpart,receivedinthepublickeyexchangeevent.

MODBUSFunctionCode
Read+WriteMultipleRegisters

Request

2
0117
server,functioncode
4
0074
readDHsignatureofthemeter
6
0024
readsizeinwords
8
0074
updateclientsDHsignature
10
0024
clientsDHsignaturesizewords

Baeumle,Ficagna

Confidential

[Page14]

11
48
clientsDHpublicsignatureinbytes72
16
3046022100
clientsDHsignature>
21
9bfbedd0fd
...
26
1aa8c6c96a
...
31
bea3d49a1d
...
36
5890f148f4
...
41
f5ac68aace
...
46
b17f0552a1
...
51
6413022100
...
56
71e0ffc646
...
61
17cd17337e
...
66
56cbac0fc8
...
71
da9b36d2d9
...
76
3cb66ff87d
...
81
ee9ef45ee0
...
83
4095
...<
85
b92d
CRC16

Response

2
0117
server,functioncode
3
48
metersDHsignaturesizeinbytes72
8
3046022100
...
13
c1d66d7989
...
18
0424792da1
...
23
f39e581804
...
28
94ea8c6e45
...
33
9313371112
...
38
97011531cc
...
43
13d1022100
...
48
7263777655
...
53
05cd653c37
...
58
5dfe8ba9d6
...
63
9f182d8a01
...
68
2587b9fa42
...
73
f215dbe212
...
75
9597
...<
77
fb92
CRC16

5.6.SharedSecretGeneration&EncryptedCommunication

OncethesignatureoftheDHpublicvalueisverifiedbyclientandmeter
individually,eachpartcangeneratethesharedsecretusingDHalgorithm.
ThesessionkeyistheSHA256ofthestandardsharedsecret.

Afterthat,allfurtherMODBUSmessages(thewholedataunit,including
CRC)shouldbeencryptedwithAESCBC256usingthesessionkey.

5.7.Troubleshooting

Themeterdoesnotreplythesignatureexchangewithavalidanswer:

Baeumle,Ficagna

Confidential

[Page15]


Inthiscaseyoushouldcheckthesignaturetransmittedtothemeteris
properlysignedbyWEGCA.Anyothersignaturewillbediscardedbythe
meter.

ThemeterisnotreplyingtotheDHpublicvalueorsignature:

UsuallythisstepstakeslongerbecauseDHcomputationkeypair
computationandsignatureverificationtakesmoreprocessing
capabilities.Therecommendedsolutioninthissituationistoincrease
thetimeoutofthereplies.

6.Messages&Description

Thissectiondescribethemessagesexchangedwiththemeterinthesecure
session.Itisassumedthatthereaderisawarethatallmessagesmustbe
encryptedbeforetransmissionanddecryptedinthereception,exceptwhen
explicitlystatedotherwise.

6.1.FirmwareIdentification

Thisfunctiondoesnotneedanopensecuresession,soitdoesnotneedto
beencrypted.Itusesthestandardreaddeviceidentificationfunction
codeofMODBUSspecification.

MODBUSFunctionCode
ReadDeviceIdentification

MessageFormat

Request
+++++++
|Server|Function|MEI|Catego|Object|CRC16|
|Address|Code|Type|ry|Id|Swapped|
|1byte|1byte|1byte|1byte|1byte|2bytes|
+++++++
|0x01|0x2b|0x0e|0x01|0x00|0x700x77|
+++++++

Response
++++++++
|Server|Function|MEI|Device|Confor|More|Next|
|Address|Code|Type|IdCode|mity|Follows|Obj.Id|
|1byte|1byte|1byte|1byte|1byte|1byte|1byte|
++++++++
|0x01|0x2b|0x0e|0x01|0x01|0x00|...|
++++++++

+++
Obj.|Objects|CRC16|
Count|List|Swapped|

Baeumle,Ficagna

Confidential

[Page16]

1byte|nbytes|2bytes|
+++
...|...|......|
+++

6.2.InstantaneousValues

InstantaneousvaluesarereadonlyandmustbeobtainedusingMODBUSread
holdingregistersfunctioncode.Thesizemayvaryaccordingtothevalue
toberead.FigureXcontainthetypicalpayloadformatsforinstantaneous
values:

(a)Total
++
|Value|
|8bytes|
++
(b)PerPhase
++++
|L1Value|L2Value|L3Value|
|8bytes|8bytes|8bytes|
++++
(c)Total+PerPhase
+++++
|Total|L1Value|L2Value|L3Value|
|8bytes|8bytes|8bytes|8bytes|
+++++
FigureX:TypicalPayloadFormatsforInstantaneousValues

6.2.1.RMSVoltage

RetrievetheinstantaneousRMSvoltageofthe3phases.Nonexisting
phases(i.e.monoorbiphasicmeters)willhavevalue0.Thevalueofeach
phaseisa64bitunsignedvalue.Thevaluesaregiveninmillivolts[mV].

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x00|0x000x0c|0x450xcf|
++++++

Response
+++++++
|Server|Function|Byte|L1Value|L2Value|L3Value|
|Address|Code|Length|(uint64_t)|(uint64_t)|(uint64_t)|
|1byte|1byte|1byte|8bytes|8bytes|8bytes|
+++++++
|0x01|0x03|0x18|...|...|...|

Baeumle,Ficagna

Confidential

[Page17]

+++++++

+
CRC16|
Swapped|
2bytes|
+
...|
+

6.2.2.RMSCurrent

RetrievetheinstantaneousRMScurrentofthe3phases.Nonexisting
phases(i.e.monoorbiphasicmeters)willhavevalue0.Thevalueofeach
phaseisa64bitunsignedvalue.Thevaluesaregiveninmilliamperes
[mA].

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x04|0x000x0c|0x040x0e|
++++++

Response
+++++++
|Server|Function|Byte|L1Value|L2Value|L3Value|
|Address|Code|Length|(uint64_t)|(uint64_t)|(uint64_t)|
|1byte|1byte|1byte|8bytes|8bytes|8bytes|
+++++++
|0x01|0x03|0x18|...|...|...|
+++++++

+
CRC16|
Swapped|
2bytes|
+
...|
+

6.2.3.ActivePower

Retrievetheinstantaneousactivepower(totalandperphase).
Nonexistingphases(i.e.monoorbiphasicmeters)willhavevalue0.The
valueofeachphaseandtotalare64bitsignedvalues.Negativevalues
meanstheconsumerisgeneratingtothegrid.Positivevaluesmeansthe
consumerisimportingfromthegrid.Thevaluesaregiveninmilliwatts
[mW].

Baeumle,Ficagna

Confidential

[Page18]


Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x18|0x000x10|0xc40x01|
++++++

Response
+++++++
|Server|Function|Byte|TotalV.|L1Value|L2Value|
|Address|Code|Length|(int64_t)|(int64_t)|(int64_t)|
|1byte|1byte|1byte|8bytes|8bytes|8bytes|
+++++++
|0x01|0x03|0x20|...|...|...|
+++++++

++
L3Value|CRC16|
(int64_t)|Swapped|
8bytes|2bytes|
++
...|...|
++

6.2.4.ReactivePower

Retrievetheinstantaneousreactivepower(totalandperphase).
Nonexistingphases(i.e.monoorbiphasicmeters)willhavevalue0.The
valueofeachphaseandtotalare64bitsignedvalues.Negativevalues
meanstheconsumerisgeneratingtothegrid.Positivevaluesmeansthe
consumerisimportingfromthegrid.Thevaluesaregivenin
millivoltamperereactive[mVAR].

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x19|0x000x10|0x950xc1|
++++++

Response
+++++++
|Server|Function|Byte|TotalV.|L1Value|L2Value|
|Address|Code|Length|(int64_t)|(int64_t)|(int64_t)|
|1byte|1byte|1byte|8bytes|8bytes|8bytes|
+++++++

Baeumle,Ficagna

Confidential

[Page19]

|0x01|0x03|0x20|...|...|...|
+++++++

++
L3Value|CRC16|
(int64_t)|Swapped|
8bytes|2bytes|
++
...|...|
++
6.2.5.ApparentPower

Retrievetheinstantaneousapparentpower(totalandperphase).
Nonexistingphases(i.e.monoorbiphasicmeters)willhavevalue0.The
valueofeachphaseandtotalare64bitsignedvalues.Negativevalues
meanstheconsumerisgeneratingtothegrid.Positivevaluesmeansthe
consumerisimportingfromthegrid.Thevaluesaregivenin
millivoltampere[mVA].

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x1a|0x000x10|0x650xc1|
++++++

Response
+++++++
|Server|Function|Byte|TotalV.|L1Value|L2Value|
|Address|Code|Length|(int64_t)|(int64_t)|(int64_t)|
|1byte|1byte|1byte|8bytes|8bytes|8bytes|
+++++++
|0x01|0x03|0x20|...|...|...|
+++++++

++
L3Value|CRC16|
(int64_t)|Swapped|
8bytes|2bytes|
++
...|...|
++

6.2.6.PowerFactor

Retrievethepowerfactor(totalandperphase).Nonexistingphases(i.e.
monoorbiphasicmeters)willhavevalue0.Thevalueofeachphaseand
totalare64bitsignedvalues.Negativevaluesmeanstheconsumeris

Baeumle,Ficagna

Confidential

[Page20]

generatingtothegrid.Positivevaluesmeanstheconsumerisimporting
fromthegrid.Thevaluesaregivenin[m%].

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x22|0x000x10|0xe40x0c|
++++++

Response
+++++++
|Server|Function|Byte|TotalV.|L1Value|L2Value|
|Address|Code|Length|(int64_t)|(int64_t)|(int64_t)|
|1byte|1byte|1byte|8bytes|8bytes|8bytes|
+++++++
|0x01|0x03|0x20|...|...|...|
+++++++

++
L3Value|CRC16|
(int64_t)|Swapped|
8bytes|2bytes|
++
...|...|
++

6.2.7.TotalHarmonicDistortion

Retrievethevoltagetotalharmonicdistortion(onlycomputedwithpower
notnull)values(totalandperphase).Eachvalueisrepresentedbya
64bitunsignedinteger.

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x27|0x000x10|0xf40x0d|
++++++

Response
+++++++
|Server|Function|Byte|TotalV.|L1Value|L2Value|
|Address|Code|Length|(uint64_t)|(uint64_t)|(uint64_t)|
|1byte|1byte|1byte|8bytes|8bytes|8bytes|
+++++++
|0x01|0x03|0x20|...|...|...|

Baeumle,Ficagna

Confidential

[Page21]

+++++++

++
L3Value|CRC16|
(uint64_t)|Swapped|
8bytes|2bytes|
++
...|...|
++

6.2.8.InternalTemperature

Retrievetheinternaltemperatureofthemeter.Theresponsecontainsa
64bitsignedvalue.Validtemperaturevaluesrangebetween10to100C.

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x6a|0x000x04|0x640x15|
++++++

Response
++++++
|Server|Function|Byte|Temp.Value|CRC16|
|Address|Code|Length|(uint64_t)|Swapped|
|1byte|1byte|1byte|8bytes|2bytes|
++++++
|0x01|0x03|0x08|...|...|
++++++

6.2.9.SupplyFrequency

Retrievethegridsupplyfrequency.Theresponsecontainsa64bit
unsignedinteger.Thevalueisgivenin[E2Hz].

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x80|0x000x04|0x450xe1|
++++++

Response
++++++
|Server|Function|Byte|FrequencyValue|CRC16|
|Address|Code|Length|(uint64_t)|Swapped|

Baeumle,Ficagna

Confidential

[Page22]

|1byte|1byte|1byte|8bytes|2bytes|
++++++
|0x01|0x03|0x08|...|...|
++++++

Valueconversionexample
Ifthesupplyfrequencyvaluefieldis00000000000017b6bthe
equivalentvalueis5992x10^2Hz.

6.2.10.AngleofU(Li)

Gettheangleofvoltagebetweenthephases(RST).Eachangleis
representedbya64bitunsignedinteger.Thevalueisgivenin[E3].

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x99|0x000x0c|0x950xe0|
++++++

Response
+++++++
|Server|Function|Byte|TSValue|SRValue|RTValue|
|Address|Code|Length|(uint64_t)|(uint64_t)|(uint64_t)|
|1byte|1byte|1byte|8bytes|8bytes|8bytes|
+++++++
|0x01|0x03|0x18|...|...|...|
+++++++

+
CRC16|
Swapped|
2bytes|
+
...|
+

Valueconversionexample
IfTSis000000000001cb06theequivalentvalueis117.510.

6.2.11.BatteryCharge

Retrievethebatterychargestatus.Theresponsecontainsa64bit
unsignedintegerrangingbetween04.Theequivalencybetweenthevalue
andpercentagearegivenintheFigureXbelow:

+++
|Value|Charge|

Baeumle,Ficagna

Confidential

[Page23]

+++
|0|0%|
|1|25%|
|2|50%|
|3|75%|
|4|100%|
+++
FigureX:BatteryCharge
ValuesinPercent

MODBUSFunctionCode
ReadHoldingRegisters

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x020xbe|0x000x04|0x250x95|
++++++

Response
++++++
|Server|Function|Byte|BatteryStatus|CRC16|
|Address|Code|Length|(uint64_t)|Swapped|
|1byte|1byte|1byte|8bytes|2bytes|
++++++
|0x01|0x03|0x08|...|...|
++++++

6.3.Energy

EnergyvaluesarereadonlyandmustbeobtainedusingMODBUSreadholding
registersfunctioncode.Thesizemayvaryaccordingtothevaluetobe
read.FigureXcontainthetypicalpayloadformatsusedinenergyreplies:
(a)Total
++
|Value|
|8bytes|
++
(d)Total+PerTariffRate
++++++
|Total|R1Value|R2Value|R3Value|R4Value|
|8bytes|8bytes|8bytes|8bytes|8bytes|
++++++
FigureX:TypicalPayloadFormatsusedinEnergyReplies

6.4.TariffRates

Baeumle,Ficagna

Confidential

[Page24]

Retrievethecurrenttariffzone.Toconfigurethetariffrates,referto
GeneralConfigurationPart2.

a.CurrentTariffZone

Retrievethecurrenttariffzonecode.Thefollowinggroupvaluesare
validaccordingtotheBrazilianelectricityregulation:

(0)Offpeak
(1)Intermediate
(2)Peak
(3)Special

MODBUSFunctionCode
ReadHoldingRegisters

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x61|0x000x04|0x150xd7|
++++++

Response
++++++
|Server|Function|Byte|TariffZone|CRC16|
|Address|Code|Length|(uint64_t)|Swapped|
|1byte|1byte|1byte|8bytes|2bytes|
++++++
|0x01|0x03|0x08|...|...|
++++++

6.5.Configuration

Meterconfigurationissubdividedintothefollowingcategories:

oGeneralConfiguration
Part1:
Active(running)
Inactive
Part2:
Active(running)
Inactive

6.5.1.General

Retrieveandconfiguremostparameters.Theconfigurationisdividedin
twocommands:

Baeumle,Ficagna

Confidential

[Page25]

Part1
+++
|Field|Description|
+++
|DisplayCycling||
|Rate|Cyclingrateinseconds.|
|Button|Enable/disablecyclingbutton.|
|SavingInterval|LoadProfilesavingintervalinmins[560].|
|DecimalPoint||
|Voltage|Displaydecimalptposition:voltagevalues.|
|Current|Displaydecimalptposition:currentvalues.|
|Energy|Displaydecimalptposition:energyvalues.|
|Power|Displaydecimalptposition:powervalues.|
|GeneralPurpose|Displaydecimalptposition:generalpurpose.|
|Identification||
|ManufacturerId|Readonlymanufacturernumber(32bit).|
|SerialNumber|Readonlyserialnumber(32bit).|
|UtilityNumber|Read+writeutilitynumber(32bit).|
|ConsumerUnit|Read+writeconsumerunit(32bit).|
|Display||
|Default|Maindisplayconfiguration.|
|Alternative|Shownwhencyclingbuttonishold.|
|NominalValues||
|Voltage|Nominalvoltagein[V].|
|Current|Nominalcurrentin[A].|
|PhaseCount|Accordingtothemodel.|
|Reserved||
|LastCalibration||
|Day|8bit.|
|Month|8bit.|
|Year|8bit.|
|LastFirmwareUpgrade||
|Day|8bit.|
|Month|8bit.|
|Year|8bit.|
|DaylightSavings||
|Begin||
|Day|8bit.|
|Month|8bit.|
|Year|8bit.|
|End||
|Day|8bit.|
|Month|8bit.|
|Year|8bit.|
|Holidays||
|Month1|Numberofthemonth112.|
|Holidays|Listof8holidays(255fornonused).|
|...||
|Month12|Numberofthemonth112.|
|Holidays|Listof8holidays(255fornonused).|
|OpticalPortPassword||

Baeumle,Ficagna

Confidential

[Page26]

|Read|Passwordtoreaddataviaopticalport.|
|Write|Passwordtowritedataviaopticalport.|
+++

Part2
+++
|Field|Description|
+++
|LPChannelCount|NumberofchannelsusedbyLoadProfile.|
|LPChannels|ListofchannelsassignedforLoadProfile.|
||Thelistcontain52values.Notassigned|
||channelshavevalue255.|
||Possiblevalues:(0)PhaseRVoltage,|
||(1)PhaseSVoltage,|
||(2)PhaseTVoltage,|
||(3)PhaseRSVoltage,|
||(4)PhaseRTVoltage,|
||(5)PhaseTSVoltage,|
||(6)A.EnergyImportT.,|
||(7)A.EnergyExportT.,|
||(8)R.EnergyImportT.,|
||(9)R.EnergyExportT.,|
||(10)A.EnergyImportOffpeak|
||(11)A.EnergyImportInterm.|
||(12)A.EnergyImportPeak|
||(13)A.EnergyImportSpecial|
||(14)A.EnergyExportOffpeak|
||(15)A.EnergyExportInterm.|
||(16)A.EnergyExportPeak|
||(17)A.EnergyExportSpecial|
||(18)R.EnergyImportOffpeak|
||(19)R.EnergyImportInterm.|
||(20)R.EnergyImportPeak|
||(21)R.EnergyImportSpecial|
||(22)R.EnergyExportOffpeak|
||(23)R.EnergyExportInterm.|
||(24)R.EnergyExportPeak|
||(25)R.EnergyExportSpecial|
||(26)PhaseRCurrent,|
||(27)PhaseSCurrent,|
||(28)PhaseTCurrent,|
||(29)A.PowerImport,|
||(30)A.PowerExport,|
||(31)R.PowerImport,|
||(32)R.PowerExport,|
||(33)ApparentPowerImport,|
||(34)ApparentPowerExport,|
||(35)PolyPhasePowerFactor,|
||(36)PhaseRPowerFactor,|
||(36)PhaseSPowerFactor,|
||(36)PhaseTPowerFactor,|

Baeumle,Ficagna

Confidential

[Page27]

||(37)Temperature,|
||(38)PowerSupplyFrequency,|
||(39)THD|
|TariffRates|Contain12blocksoftariffrates.|
|Tariff#1||
|BeginHour||
|BeginMinute||
|Zone|Possiblevalues:(0)offpeak,|
||(1)intermediate,|
||(2)peak,|
||(3)special,|
|||
|Daytype|Possiblevalues:(0)weekday,|
||(1)weekend,|
||(2)holiday|
|...||
|Tariff#12||
|[sameasabove]||
|Config.FileVersion|Incrementalnumber.|
|LastConfig.Date||
+++

a.Active(running)

Containtheconfigurationthatisrunninginthemeter.Itcannotbeset
directly,butitcanberead.

Request(Part1)
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000xac|0x000x58|0x840x11|
++++++

Response(Part1)
+++++++
|Server|Function|Byte|Display|DisplayCycl.|LPSaving|
|Address|Code|Length|Cycl.Rate|Button|Interval|
|1byte|1byte|1byte|1byte|1byte|1byte|
+++++++
|0x01|0x03|0xb0|...|...|...|
+++++++
\displayparams/
+++++
Voltage|Current|Energy|Power|GPDecimal|
DecimalPt|DecimalPt|DecimalPt|DecimalPt|Point|
1byte|1byte|1byte|1byte|1byte|
+++++
...|...|...|...|...|

Baeumle,Ficagna

Confidential

[Page28]

+++++
\displaydecimalpoint/

++++++
Manufacturer|Serial|Utility|Consumer|Display|Display|
Id|Number|Number|Unit|Default|Altern.|
4bytes|4bytes|4bytes|4bytes|8bytes|8bytes|
++++++
...|...|...|...|...|...|
++++++
\identificationnumbers/\displaycfg/

+++++++
Nominal|Nominal|Phase|Reser|LastCal|LastCal|LastCal|
Voltage|Current|Count|ved|Day|Month|Year|
1byte|1byte|1byte|4bytes|1byte|1byte|1byte|
+++++++
...|...|...|...|...|...|...|
+++++++
\nominalvalues/\lastcalibration/

++++++
LastFU|LastFU|LastFU|Savings|Savings|Savings|
Day|Month|Year|Beg.Day|Beg.Month|Beg.Year|
1byte|1byte|1byte|1byte|1byte|1byte|
++++++
...|...|...|...|...|...|
++++++
\firmwareupgrade/\daylightsavingsbegin/

+++++
Savings|Savings|Savings|Holidays|HolidaysDays|
EndDay|EndMonth|EndYear|Month#i|inMonth#i|
1byte|1byte|1byte|1byte|8bytes|
+++++
...|...|...|...|...|
+++++
\daylightsavingsend/\holidays,x12/

+++
OpticalP.|OpticalP.|CRC16|
ReadPwd|WritePwd|Swapped|
4bytes|4bytes|2bytes|
+++
...|...|...|
+++
\opticalportpwds/

Request(Part2)
++++++
|Server|Function|Meter|Word|CRC16|

Baeumle,Ficagna

Confidential

[Page29]

|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000xad|0x000x36|0x540x3d|
++++++

Response(Part2)
+++++++
|Server|Function|Byte|Numberof|Listofchann.|Tariff|
|Address|Code|Length|Channels|Assigned|#1|
|1byte|1byte|1byte|1byte|52bytes|4bytes|
+++++++
|0x01|0x03|0x6c|...|...|...|
+++++++
\LPChannel/\LPChannels/\
count
++++++++
|Tariff|Tariff|Tariff|Tariff|Tariff|Tariff|Tariff|
|#2|#3|#4|#5|#6|#7|#8|
|4bytes|4bytes|4bytes|4bytes|4bytes|4bytes|4bytes|
++++++++
|...|...|...|...|...|...|...|
++++++++

++++++
|Tariff|Tariff|Tariff|Tariff|Tariff|
|#9|#10|#11|#12(beginhour)|#12(beginmin)|
|4bytes|4bytes|4bytes|1byte|1byte|
++++++
|...|...|...|...|...|
++++++
TariffRates

++++++
|Tariff|Tariff|Config.file|Lastconfig.|CRC16|
|Zone|Daytype|Version|Date|Swapped|
|1byte|1byte|4bytes|4bytes|4bytes|
++++++
|...|...|...|...|...|
++++++
/

b.Inactive

Theinactiveconfigurationisaconfigurationthatiswaitingtobe
activated.Changesintheconfigurationshouldalwaysbeperformedinthe
inactiveconfigurationandthenactivatedusingtheactivationcommandand
itsdatastructureisexactlythesameofactiveconfigurationdescribed
previously.

Baeumle,Ficagna

Confidential

[Page30]


RequestPart1(Read)
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000xae|0x000x58|0x250xd1|
++++++

ResponsePart1
Theresponseissimilartothepreviouslydescribedatitema.

RequestPart1(Write)
++++++++
|Server|Function|Meter|Word|Byte|Display|Disp.|
|Address|Code|Register|Length|Count|C.Rate|C.B.|
|1byte|1byte|2bytes|2bytes|1byte|1byte|1byte|
++++++++
|0x01|0x10|0x000xae|0x000x58|0xb0|...|...|
++++++++
\displayparams/
+++++++
|LPSaving|Voltage|Current|Energy|Power|GPDecimal|
|Interval|DecimalPt|DecimalPt|DecimalPt|Dec.Pt|Point|
|1byte|1byte|1byte|1byte|1byte|1byte|
+++++++
|...|...|...|...|...|...|
++++++
\displaydecimalpoint/

++++++
Manufacturer|Serial|Utility|Consumer|Display|Display|
Id|Number|Number|Unit|Default|Altern.|
4bytes|4bytes|4bytes|4bytes|8bytes|8bytes|
++++++
...|...|...|...|...|...|
++++++
\identificationnumbers/\displaycfg/

+++++++
Nominal|Nominal|Phase|Reser|LastCal|LastCal|LastCal|
Voltage|Current|Count|ved|Day|Month|Year|
1byte|1byte|1byte|4bytes|1byte|1byte|1byte|
+++++++
...|...|...|...|...|...|...|
+++++++
\nominalvalues/\lastcalibration/

++++++
LastFU|LastFU|LastFU|Savings|Savings|Savings|

Baeumle,Ficagna

Confidential

[Page31]

Day|Month|Year|Beg.Day|Beg.Month|Beg.Year|
1byte|1byte|1byte|1byte|1byte|1byte|
++++++
...|...|...|...|...|...|
++++++
\firmwareupgrade/\daylightsavingsbegin/

+++++
Savings|Savings|Savings|Holidays|HolidaysDays|
EndDay|EndMonth|EndYear|Month#i|inMonth#i|
1byte|1byte|1byte|1byte|8bytes|
+++++
...|...|...|...|...|
+++++
\daylightsavingsend/\holidays,x12/

+++
OpticalP.|OpticalP.|CRC16|
ReadPwd|WritePwd|Swapped|
4bytes|4bytes|2bytes|
+++
...|...|...|
+++
\opticalportpwds/

ResponsePart1
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x10|0x000xae|0x000x58|0xa00x12|
++++++

RequestPart2(Read)
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000xaf|0x000xcc|0x750xbe|
++++++

ResponsePart2
Theresponseissimilartothepreviouslydescribedatitema.

RequestPart2(Write)
++++++++
|Server|Function|Meter|Word|Num.of|L.of|Tar.|
|Address|Code|Register|Length|Chann.|Ch.a.|#1|

Baeumle,Ficagna

Confidential

[Page32]

|1byte|1byte|2bytes|2bytes|1byte|1byte|1byte|
++++++++
|0x01|0x10|0x000xaf|0x000xcc|...|...|...|
++++++++
++++++++
|Tariff|Tariff|Tariff|Tariff|Tariff|Tariff|Tariff|
|#2|#3|#4|#5|#6|#7|#8|
|4bytes|4bytes|4bytes|4bytes|4bytes|4bytes|4bytes|
++++++++
|...|...|...|...|...|...|...|
++++++++

++++++
|Tariff|Tariff|Tariff|Tariff|Tariff|
|#9|#10|#11|#12(beginhour)|#12(beginmin)|
|4bytes|4bytes|4bytes|1byte|1byte|
++++++
|...|...|...|...|...|
++++++

++++
|Tariff|Tariff|CRC16|
|Zone|Daytype|Swapped|
|1byte|1byte|4bytes|
++++
|...|...|...|
++++

6.5.2.Activation

Inordertoactivateaconfiguration,anactivationrequestmessagemust
besenttothemeteraftertheinactiveconfigurationsareset.

MODBUSFunctionCode
WriteMultipleRegisters

Request
++++++
|Server|Function|Meter|Word|Valuefilled|
|Address|Code|Register|Length|with1s|
|1byte|1byte|2bytes|2bytes|8bytes|
++++++
|0x01|0x10|0x000x86|0x000x04|0x01..0x01|
++++++

+
CRC16|
Swapped|
2bytes|
+

0x260x18
|

Baeumle,Ficagna

Confidential

[Page33]

Reponse
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|2bytes|2bytes|2bytes|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x10|0x000x96|0x000x04|0x210xe6|
++++++

6.6.LoadProfile

Themetercapturesandstoresmeteringdatainconfigurableintervals.The
configurationofthecapturedata(channels)isalsopossible.TheLPhas
thefollowingcharacteristics:

oUpto52configurablechannels
oConfigurablecaptureinterval(560minutes)seeGeneral
Configuration
oStorageproportionaltothenumberofchannels(52channels@15
mins=48daysofstorage).
oCapturabledata:
RMSCurrentandVoltageperLine
Energy(TotalsandperLine)
Power
PowerFactor(TotalandperLine)
Temperature
Frequency
THD.

TheLPisretrievedusingthefollowingqueries:

a.IdofFirst(Oldest)LPRecord
b.IdofLast(Recent)LPRecord
c.LPRecord
d.LPChannels.

a.IdofFirst(Oldest)LPRecord

Gettheindexofthefirst(oldest)LPrecordavailableinthemeter.

MODBUSFunctionCode
ReadHoldingRegisters

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++

Baeumle,Ficagna

Confidential

[Page34]

|0x01|0x03|0x020xbc|0x000x04|0x840x55|
++++++

Response
++++++
|Server|Function|Byte|IdofFirst|CRC16|
|Address|Code|Length|LPRecord|Swapped|
|1byte|1byte|1byte|8bytes|2bytes|
++++++
|0x01|0x03|0x08|...|...|
++++++

b.IdofMostRecentLPRecord

GettheindexofthelatestLPrecordavailableinthemeter.

MODBUSFunctionCode
ReadHoldingRegisters

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000xd0|0x000x04|0x450xf0|
++++++

Response
++++++
|Server|Function|Byte|IdofLast|CRC16|
|Address|Code|Length|LPRecord|Swapped|
|1byte|1byte|1byte|8bytes|2bytes|
++++++
|0x01|0x03|0x08|...|...|
++++++

c.LPRecord

RetrievetheLPrecordatspecifiedindex.

MODBUSFunctionCode
Read+WriteMultipleRegisters

Request
+++++++
|Server|Function|MeterR+|ReadWord|MeterW+|WriteWord|
|Address|Code|Register|Length|Register|Length|
|1byte|1byte|2bytes|2bytes|2bytes|2bytes|
+++++++
|0x01|0x17|0x000xce|0x000x0c|0x000xce|0x000x02|

Baeumle,Ficagna

Confidential

[Page35]

+++++++

+++
Byte|Record|CRC16|
Length|Index|Swapped|
1byte|8bytes|2bytes|
+++
0x04|...|...|
+++

Response
++++++++
|Server|Function|Byte|LP|LP|LP|LP|
|Address|Code|Length|Day|Month|Year|Hour|
|1byte|1byte|1byte|1bytes|1byte|2bytes|1byte|
++++++++
|0x01|0x17|0x18|...|...|...|...|
++++++++

+++++
Log|Channel|Data|Data|CRC16|
Minute|Id|Id|Value|Swapped|
1byte|1byte|1byte|4bytes|2bytes|
+++++
...|...|...|...|...|
+++++

d.LPChannels

Retrieveandconfigurethelistofchannelsforloadprofile.

oRead

Request
TBD.

Response
TBD.

oConfigure

Request
TBD.

Response
TBD.

6.7.QualityIndexes

TBD.

Baeumle,Ficagna

Confidential

[Page36]

6.8.CommunicationSession

Thesefunctionsarepriortohavingasecuresessionopen,sotheyare
transmittedwithoutencryption.

Messagesdescribedin
Chapter5
.

6.9.DisconnectControl

Thebreakerisanoptionalaccessoryofthemeter.Itisusedforremote
(re)connection/disconnectionoftheconsumerunit.Theclientcan(1)
open,(2)close,and(3)getthestatusofthebreaker.

[conditions]
o/>00
Disconnected<Connected

FigureX:Remote(re)connection/disconnection.

6.9.1.Reconnect

The(re)connectionoccursonlyifthefollowingconditionsaremet:

a.Networkvoltageisbetween80%and106%ofthenominalvaluein
allphases
b.Thereisnovoltageintheloadside.

MODBUSFunctionCode
WriteMultipleRegisters

Request
+++++++
|Server|Function|Meter|Word|Byte|Registers|
|Address|Code|Register|Length|Count|Values|
|1byte|1byte|2bytes|2bytes|1byte|8bytes|
+++++++
|0x01|0x10|0x000x96|0x000x04|0x08|0x00...0x00|
+++++++

++
|CRC16|
|Swapped|
|2bytes|
++
|0x7d0xf3|
++

Reponse
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|2bytes|2bytes|2bytes|

Baeumle,Ficagna

Confidential

[Page37]

|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x10|0x000x96|0x000x04|0x210xe6|
++++++

6.9.2.Disconnect

Remotedisconnectionisalwaysallowed.

MODBUSFunctionCode
WriteMultipleRegisters

Request
+++++++
|Server|Function|Meter|Word|Byte|Registers|
|Address|Code|Register|Length|Count|Values|
|1byte|1byte|2bytes|2bytes|1byte|8bytes|
+++++++
|0x01|0x10|0x000x97|0x000x04|0x08|0x00...0x00|
+++++++

++
|CRC16|
|Swapped|
|2bytes|
++
|0x800x30|
++

Reponse
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x10|0x000x97|0x000x04|0x700x26|
++++++

6.9.3.OutputState

Retrievetheoutputstateofthedisconnectcontrol.Thefollowingstates
arevalidfortheoutputstatefield:

(0)Disconnected
(1)Connected

MODBUSFunctionCode
ReadHoldingRegisters

Request
++++++

Baeumle,Ficagna

Confidential

[Page38]

|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x020x98|0x000x04|0xc50xe6|
++++++

Reponse
++++++
|Server|Function|Byte|OutputState|CRC16|
|Address|Code|Length|(uint64_t)|Swapped|
|1byte|1byte|1byte|8bytes|2bytes|
++++++
|0x01|0x03|0x08|...|...|
++++++

6.10.FirmwareUpgrade

Firmwareupgradeconsistsof3steps(FigureX):(1)startthetransfer
(informthesizeofthenewfirmware)(2)transfertheblocks(3)
transferthesignatureofthefirmware(finishthetransfer).

ClientMeter
||
|(1)WriteMultipleRegisters[0x10,fwLength]|
+>|
||
|[writeok]|
|<+
||
|while(remainingblocks)|
||
|(2)WriteMultipleRegisters[0x10,block]|
+>|
||
|[writeok]|
|<+
||
|(3)WriteMultipleRegisters[0x10,signature]|
+>|
||
|[writeok]/[noreply(error)]|
|<+
||
FigureX:StepsofFirmwareUpgrade

Afterthesignaturetransfer,themetershallreboot(theclientpowered
bythemetershouldalsoreboot).Theversioncanbeverifiedwiththe
firmwareversionquery.IfMODBUSwriteOKisnotreceivedinanyofthe
steps,itmeansanerroroccurredandtheprocessmustberestarted.

Baeumle,Ficagna

Confidential

[Page39]

6.11.Logs

Retrievemeterlogs.

6.11.1.Errors&Alarms

Retrievealistwiththe10mostrecenterrorsoralarms.

MODBUSFunctionCode
ReadHoldingRegisters

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x84|0x000x33|0x450xf6|
++++++

Reponse
++++++++
|Server|Function|Byte|Error|Alarm|Day|Month|
|Address|Code|Length|Code|Code|131|112|
|1byte|1byte|1byte|2bytes|2bytes|1byte|1byte|
++++++++
|0x01|0x03|0x66|...|...|...|...|
++++++++
\repeats10times...
+++++
Year|Hour|Minute|Second|CRC16|
0255|0023|0059|0059|Swapped|
1byte|1byte|1byte|1byte|2bytes|
+++++
...|...|...|...|...|
+++++
.../

Note
Unfilledeventshavevalue255(0xff).forinstance,ifalarmcodeis
255anderrorcodeisnot,thenthelineisanerrorandviceversa.

6.11.2.ParameterChanges

Retrieveinformationaboutpastparameterchangeevents.Twocommandscan
beusedinconjunction:

oIdofMostRecentParameterChange
oParameterChangeLog(idmustbeprovided).

a.IdofMostRecentFirmwareLog

Baeumle,Ficagna

Confidential

[Page40]


MODBUSFunctionCode
ReadHoldingRegisters

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|
++++++
|0x01|0x03|0x000x90|0x000x04|0x150xe4|
++++++

Reponse
++++++
|Server|Function|Byte|IdofMostRecent|CRC16|
|Address|Code|Length|Log(uint64_t)|Swapped|
|1byte|1byte|1byte|8bytes|2bytes|
++++++
|0x01|0x03|0x08|...|...|
++++++

b.ParameterChangeLog

MODBUSFunctionCode
Read+WriteHoldingRegisters

Request
+++++++
|Server|Function|MeterR+|ReadWord|MeterW+|WriteWord|
|Address|Code|Register|Length|Register|Length|
|1byte|1byte|2bytes|2bytes|2bytes|2bytes|
+++++++
|0x01|0x17|0x000x8f|0x000x2a|0x000x8f|0x000x04|
+++++++

+++
Byte|Idofthe|CRC16|
Length|Log|Swapped|
1byte|8bytes|2bytes|
+++
0x08|...|...|
+++

Response
+++++++
|Server|Function|Byte|Modified|Log|User|
|Address|Code|Length|ParamCode|Index|Id|
|1byte|1byte|1byte|4bytes|4bytes|4bytes|
+++++++
|0x01|0x17|0x54|...|...|...|

Baeumle,Ficagna

Confidential

[Page41]

+++++++

++++++
Log|Log|Log|Log|Log|Log|
Day|Month|Year|Hour|Minute|Second|
4bytes|4bytes|4bytes|4bytes|4bytes|4bytes|
++++++
...|...|...|...|...|...|
++++++

+++
ParamOld|ParamNew|CRC16|
Value|Value|Swapped|
24bytes|24bytes|2bytes|
+++
...|...|...|
+++

oModifiedParameterCode([07]|9|65535)
Mayassumeoneofthefollowingvalues:
(0)Date
(1)Time
(3)TariffId
(4)DayType
(5)TariffRate
(6)Holiday
(7)DaylightSavings
(9)Invalidlog.
oLogIndex
Istheidoftherequestedlog.
oUserId
Correspondtooneofthevaluesfromuseridslog.

6.11.3.FirmwareUpgrade

Retrieveinformationaboutpastfirmwareupgradeattempts.Twocommands
canbeusedinconjunction:

oIdofMostRecentFWLog
oFWLog(idmustbeprovided).

a.IdofMostRecentFirmwareLog

MODBUSFunctionCode
ReadHoldingRegisters

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|

Baeumle,Ficagna

Confidential

[Page42]

++++++
|0x01|0x03|0x000x91|0x000x04|0x150xe4|
++++++

Reponse
++++++
|Server|Function|Byte|IdofMostRecent|CRC16|
|Address|Code|Length|Log(uint64_t)|Swapped|
|1byte|1byte|1byte|8bytes|2bytes|
++++++
|0x01|0x03|0x08|...|...|
++++++

b.FirmwareUpgradeLog

MODBUSFunctionCode
Read+WriteHoldingRegisters

Request
+++++++
|Server|Function|MeterR+|ReadWord|MeterW+|WriteWord|
|Address|Code|Register|Length|Register|Length|
|1byte|1byte|2bytes|2bytes|2bytes|2bytes|
+++++++
|0x01|0x17|0x000x8f|0x000x2a|0x000x8f|0x000x04|
+++++++

+++
Byte|Idofthe|CRC16|
Length|Log|Swapped|
1byte|8bytes|2bytes|
+++
0x08|...|...|
+++

Response
+++++++
|Server|Function|Byte|Modified|Log|User|
|Address|Code|Length|ParamCode|Index|Id|
|1byte|1byte|1byte|4bytes|4bytes|4bytes|
+++++++
|0x01|0x17|0x54|0x08|...|...|
+++++++

++++++
Log|Log|Log|Log|Log|Log|
Day|Month|Year|Hour|Minute|Second|
4bytes|4bytes|4bytes|4bytes|4bytes|4bytes|
++++++
...|...|...|...|...|...|
++++++

Baeumle,Ficagna

Confidential

[Page43]


+++
ParamOld|ParamNew|CRC16|
Value|Value|Swapped|
24bytes|24bytes|2bytes|
+++
...|...|...|
+++

oModifiedParameterCode
8ifthelogisvalid,9ifnotvalid.
oLogIndex
Istheidoftherequestedlog.
oUserId
Correspondtooneofthevaluesfromuseridslog.

6.11.4.UserIds

Retrievealistofthedevicesthatauthenticatedwiththemeter.The
responsecontainsthesignatureofthepublickeyofeachauthenticated
device.Themeterholdsapointertothelastretrieveduserid,sowhena
newrequestismade,itwillrespondwiththenextidinthelist.When
thepointerreachesthelastid,theresponsewillhaveanidwithmaximum
uin32_tvalue(0xffffffff).

MeterUserIdList
+++
|Id|Signature|
+++
|00000001|0b1b2345fcd...|
|00000002|0dabc333afa...|
|00000003|fc1f2322ad3...|<replypointer
|00000004|db1a2315bc2...|(movesnexteachquery)
|...||
|ffffffff|fffffffffff...|^returnstotop
+++
FigureX:MeterUserId
ListPointer.

oIdisasequentialnumberassociatedtothesignature.
oSignatureisthe32bytesignedhashofthepublicECkeyofthe
client.

MODBUSFunctionCode
ReadHoldingRegisters

Request
++++++
|Server|Function|Meter|Word|CRC16|
|Address|Code|Register|Length|Swapped|
|1byte|1byte|2bytes|2bytes|2bytes|

Baeumle,Ficagna

Confidential

[Page44]

++++++
|0x01|0x03|0x000xb1|0x000x12|0x950xe0|
++++++

Note:itispossibletoreadmorewords(multiplesof12).
MaximumModbusPDUsizemustberespected.

Reponse
+++++++
|Server|Function|Byte|User|User|CRC16|
|Address|Code|Length|Signature|Id|Swapped|
|1byte|1byte|1byte|32bytes|4bytes|2bytes|
+++++++
|0x01|0x03|0x24|...|...|...|
+++++++

7.FinalConsiderations

ClientsprivateECkeymustbestoredinasecurewayandshouldbe
uniqueforeachdevice.
Allcommunicationwiththemeterexceptthesessionestablishmentshould
beencrypted.
TheclientshouldfollowstandardMODBUSRTUrecommendationswithregards
totimeoutsandframeformat.

Baeumle,Ficagna

Confidential

[Page45]

APPENDIXA:SMWQUICKQUERYGUIDE

Instantaneousvalues
++++++
|Query|Unit/|Access|MODBUS|Reg.|R/W
No|Description|Format|Rights|Fun.Code|Addr.|Length
++++++
01|Inst.RMSVoltage|mV|R|0x03|0x00|12
02|Inst.RMSCurrent|mA|R|0x03|0x04|12
03|Inst.ActivePower|mW|R|0x03|0x18|16
04|Inst.ReactivePower|mVAR|R|0x03|0x19|16
05|Inst.ApparentPower|mVA|R|0x03|0x1a|16
06|Inst.PowerFactor|

|R|0x03|0x22|16
07|TotalHarmonicDist.|

|R|0x03|0x27|16
08|InternalTemperature|C|R|0x03|0x6a|4
09|SupplyFrequency|E2Hz|R|0x03|0x80|4
10|AngleofU(Li)|E3|R|0x03|0x99|4
11|BatteryCharge||R|0x03|0x2be|4
++++++

Configuration
++++++
|Query|Unit/|Access|MODBUS|Reg.|R/W
No|Description|Format|Rights|Fun.Code|Addr.|Length
++++++
12|Clock|ddmmyy|R,W|0x03,0x10|0x63|4
||hhMMss||||
13|Re.FlowAlm.Timeout||R,W|0x03,0x10|0x63|4
14|RunningConf.(p.1)||R|0x03|0xac|88
15|RunningConf.(p.2)||R|0x03|0xad|54
16|InactiveConf.(p.1)||R,W|0x03,0x10|0xae|88
17|InactiveConf.(p.2)||R,W|0x03,0x10|0xaf|54
18|RunningDisp.Config.||R|
0x03|0x20d|
|NormalMod|||
||
19|RunningDisp.Config.||R|
0x03|0x20e|
|Altern./AnalysisMode|||
||
20|InactiveDisp.Config.||R,W|0x03,0x10
|0x5f|
|NormalMode|||
||
21|InactiveDisp.Config.||R,W|0x03,0x10
|0x60|
|Altern./AnalysisMode|||
||
++++++

LoadProfile
++++++
|Query|Unit/|Access|MODBUS|Reg.|R/W
No|Description|Format|Rights|Fun.Code|Addr.|Length
++++++
22|LP||R|0x17|0xce|
23|IdofFirst(Oldest)||R|0x03|0x2bc|4
24|IdofLast(Recent)||R|0x03|0xd0|4
++++++

Baeumle,Ficagna

Confidential

[Page46]


TariffRates
++++++
|Query|Unit/|Access|MODBUS|Reg.|R/W
No|Description|Format|Rights|Fun.Code|Addr.|Length
++++++
25|CurrentTariffZone||R|0x03|0x61|4
++++++

QualityIndexes
++++++
|Query|Unit/|Access|MODBUS|Reg.|R/W
No|Description|Format|Rights|Fun.Code|Addr.|Length
++++++
26|DRPRegisters||R|0x03||
27|DRPLast||R|0x03||
28|DRPAverage||R|0x03||
29|DRCRegisters||R|0x03||
30|DRCLast||R|0x03||
31|DRCAverage||R|0x03||
32|DRP/DRCReset||W|0x10||
33|DIC/FICRegisters||R|0x03||
34|DIC/FICReset||W|0x10||
35|SAGCounter||R|0x03||
36|SAGReset||W|0x10||
37|SWELLCounter||R|0x03||
38|SWELLReset||W|0x10||
++++++

Energy
++++++
|Query|Unit/|Access|MODBUS|Reg.|R/W
No|Description|Format|Rights|Fun.Code|Addr.|Length
++++++
39|ActiveEnergy,|mWh|R|0x03|0x08|4
|Total,Import+Export|||||
40|ActiveEnergy,|mWh|R|0x03|0x0a|16
|Import,PerTariffRate|||||
41|ActiveEnergy,|mWh|R|0x03|0x0b|4
|Total,Import|||||
42|ActiveEnergy,|mWh|R|0x03|0x0c|16
|Export,PerTariffRate|||||
43|ActiveEnergy,|mWh|R|0x03|0x0d|4
|Export,Total|||||
44|ReactiveEnergy,|mVARh|R|0x03|0x12|4
|Total,Import+Export|||||
45|ReactiveEnergy,|mVARh|R|0x03|0x13|16
|Import,PerTariffRate|||||
46|ReactiveEnergy,|mVARh|R|0x03|0x14|4
|Import,Total|||||
47|ReactiveEnergy,|mVARh|R|0x03|0x15|16

Baeumle,Ficagna

Confidential

[Page47]

|Export,PerTariffRate|||||
48|ReactiveEnergy,|mVARh|R|0x03|0x16|4
|Export,Total|||||
++++++

MODBUSCommunicationSession
+++++
|Query|Access|MODBUS|Reg.|R/W
No|Description|Rights|Fun.Code|Addr.|Length
+++++
49|MeterPublicKey|R|0x17|0x6f|33
50|SignatureofMeterPublicKey|R|0x17|0x70|36
51|ClientPublicKey|R,W|0x17|0x71|33
52|SignatureofClientPublicKey|R,W|0x17|0x72|36
53|DHPublicValue|R,W|0x17|0x75|110
53|SignatureofDHPublicValue|R,W|0x17|0x74|24
+++++

DisconnectControl
+++++
|Query|Access|MODBUS|Reg.|R/W
No|Description|Rights|Fun.Code|Addr.|Length
+++++
55|Reconnect|W|0x10|0x96|4
56|Disconnect|W|0x10|0x97|4
57|OutputState|R|0x03|0x98|4
+++++

FirmwareUpgrade
+++++
|Query|Access|MODBUS|Reg.|R/W
No|Description|Rights|Fun.Code|Addr.|Length
+++++
58|NewFirmwareTransfer|W|0x10|0x9a|2
59|TransferBlock|W|0x10|0x9b|
60|TransferSignature|W|0x10|0x9c|
+++++

Logs
+++++
|Query|Access|MODBUS|Reg.|R/W
No|Description|Rights|Fun.Code|Addr.|Length
+++++
61|Errors&Alarms|R|0x03|0x84|51
62|ParameterChanges|R|0x17|0x8e|42
63|IdofMostRecentParamChange|R|0x03|0x90|4
64|FirmwareUpgrade|R|0x17|0x8f|42
65|IdofMostRecentFWUpgrade|R|0x03|0x91|4
66|UserIds|R|0x03|0xb1|18
+++++

Baeumle,Ficagna

Confidential

[Page48]

FirmwareIdentification
+++++
|Query|Access|MODBUS|Reg.|R/W
No|Description|Rights|Fun.Code|Addr.|Length
+++++
67|FirmwareHash|R|0x03|0x2bd|16
68|FirmwareVersion|R|0x03|0x85|8
+++++

Notes

1"Readlength"istheregisterlengthgivenbythenumberofwords.For
bytelengthmustmultiplybyafactorofx2.
2Instantaneousreadingsreturnthevaluesperphaseinthesamemessage.
Nonexistingphaseshavevalue0.
3Powerreadingsreturnthevaluesperphaseinthesamemessage.
Nonexistingphaseshavevalue0.
4Energyreadingsreturnthetotalandpertariffvalueinthesame
message.
5Clockanddate/timevaluesarerepresentedintheformatddmmyyhhMMss
unlessstatedotherwise.

Baeumle,Ficagna

Confidential

[Page49]

APPENDIXB:SDKANDOBISEQUIVALENTCODES

COSEMClass1DataObjects
++++
|Obis|Description|SDKCommand|
++++
|00:0.2.0.255|ActiveFWidentifier|kFirmwareVersion|
|00:0.2.1.255|ActiveFWversion|kFirmwareVersion|
|00:96.1.0.255|Serialnumber|kRunningConfiguration|
|00:96.1.1.255|Manufacturingnumber|kRunningConfiguration|
|00:96.1.2.255|Utilitynumber|kRunningConfiguration|
|10:96.1.0.255|Consumerunit|kRunningConfiguration|
|00:97.97.0.255|Errors|kEventsLog|
|00:97.98.0.255|Alarms|kEventsLog|
|10:128.128.0.255|Displayconfig|kRunningConfiguration|
|10:128.128.1.255|PhaseCount|kRunningConfiguration|
|10:94.55.1.255|DRP|kDrp|
|10:94.55.2.255|DRC|kDrc|
|00:42.0.0.255|COSEMdevicename||
|00:96.2.0.255|No.ofconfiguration|kRunningConfigurationB|
||programchanges||
|00:96.2.1.255|Dateoflastconfig|kRunningConfigurationB|
||programchange||
|00:96.2.5.255|Dateoflastcalib|kRunningConfiguration|
|00:96.2.13.255|DateoflastFW|kRunningConfiguration|
||activation||
|10:128.128.3.255|RW+opticalport|kRunningConfiguration|
||passwords||
++++

COSEMClass3RegisterObjects
++++
|Obis|Description|SDKCommand|
++++
|10:12.32.0.255|SAGcounter|kSagRead,kSagReset|
|10:12.36.0.255|SWELLcounter|kSwellRead,kSwellReset|
|10:0.6.0.255|Nominalvoltage|kRunningConfiguration|
|10:0.6.1.255|Nominalcurrent|kRunningConfiguration|
|10:81.7.2.255|AngleU(L3)U(L1)|kPhaseAngle|
|10:81.7.10.255|AngleU(L1)U(L2)|kPhaseAngle|
|10:81.7.21.255|AngleU(L2)U(L3)|kPhaseAngle|
|10:15.7.124.255|THD|kTotalHarmonicDistortion|
|10:35.7.124.255|THD,L1|kTotalHarmonicDistortion|
|10:55.7.124.255|THD,L2|kTotalHarmonicDistortion|
|10:75.7.124.255|THD,L3|kTotalHarmonicDistortion|
|10:1.7.0.255|ActivePwrI+Total|kActivePower|
|10:21.7.0.255|ActivePwrI+L1|kActivePower|
|10:41.7.0.255|ActivePwrI+L2|kActivePower|
|10:61.7.0.255|ActivePwrI+L3|kActivePower|
|10:2.7.0.255|ActivePwrE+Total|kActivePower|
|10:22.7.0.255|ActivePwrE+L1|kActivePower|

Baeumle,Ficagna

Confidential

[Page50]

|10:42.7.0.255|ActivePwrE+L2|kActivePower|
|10:62.7.0.255|ActivePwrE+L3|kActivePower|
|10:3.7.0.255|ReactivePwrI+Total|kReactivePower|
|10:23.7.0.255|ReactivePwrI+L1|kReactivePower|
|10:43.7.0.255|ReactivePwrI+L2|kReactivePower|
|10:63.7.0.255|ReactivePwrI+L3|kReactivePower|
|10:4.7.0.255|ReactivePwrE+Total|kReactivePower|
|10:24.7.0.255|ReactivePwrE+L1|kReactivePower|
|10:44.7.0.255|ReactivePwrE+L2|kReactivePower|
|10:64.7.0.255|ReactivePwrE+L3|kReactivePower|
|10:13.7.0.255|PowerFactor,Total|kInstantaneousPowerFactor|
|10:33.7.0.255|PowerFactor,L1|kInstantaneousPowerFactor|
|10:53.7.0.255|PowerFactor,L2|kInstantaneousPowerFactor|
|10:73.7.0.255|PowerFactor,L3|kInstantaneousPowerFactor|
|10:31.7.0.255|InstRMSCurrentL1|kInstantaneousRMSCurrent|
|10:51.7.0.255|InstRMSCurrentL2|kInstantaneousRMSCurrent|
|10:71.7.0.255|InstRMSCurrentL3|kInstantaneousRMSCurrent|
|10:32.7.0.255|InstRMSVoltageL1|kInstantaneousRMSVoltage|
|10:52.7.0.255|InstRMSVoltageL2|kInstantaneousRMSVoltage|
|10:72.7.0.255|InstRMSVoltageL3|kInstantaneousRMSVoltage|
|10:14.7.0.255|SupplyFrequency|kSupplyFrequency|
|00:96.9.0.255|InternalTemperature|kAmbientTemperature|
|00:96.6.1.255|BatteryChargeStatus|kBatteryCharge|
|10:1.8.0.255|ActEnergyI+Total|kActiveEnergyFundamentalIm|
|||portTotal|
|10:1.8.1.255|ActEnergyI+Rate#1|kActiveEnergyFundamentalIm|
|||port|
|10:1.8.2.255|ActEnergyI+Rate#2|kActiveEnergyFundamentalIm|
|||port|
|10:1.8.3.255|ActEnergyI+Rate#3|kActiveEnergyFundamentalIm|
|||port|
|10:1.8.4.255|ActEnergyI+Rate#4|kActiveEnergyFundamentalIm|
|||port|
|10:2.8.0.255|ActEnergyE+Total|kActiveEnergyFundamentalIm|
|||portTotal|
|10:2.8.1.255|ActEnergyE+Rate#1|kActiveEnergyFundamentalEx|
|||port|
|10:2.8.2.255|ActEnergyE+Rate#2|kActiveEnergyFundamentalEx|
|||port|
|10:2.8.3.255|ActEnergyE+Rate#3|kActiveEnergyFundamentalEx|
|||port|
|10:2.8.4.255|ActEnergyE+Rate#4|kActiveEnergyFundamentalEx|
|||port|
|10:15.8.0.255|ActEnergyTotalI/E|kActiveEnergyFundamentalTotal|
|10:3.8.0.255|ReEnergyI+Total|kReactiveEnergyFundamentalIm|
|||portTotal|
|10:3.8.1.255|ReEnergyI+Rate#1|kReactiveEnergyFundamentalIm|
|||port|
|10:3.8.2.255|ReEnergyI+Rate#2|kReactiveEnergyFundamentalIm|
|||port|
|10:3.8.3.255|ReEnergyI+Rate#3|kReactiveEnergyFundamentalIm|

Baeumle,Ficagna

Confidential

[Page51]

|||port|
|10:3.8.4.255|ReEnergyI+Rate#4|kReactiveEnergyFundamentalIm|
|||port|
|10:4.8.0.255|ReEnergyE+Total|kReactiveEnergyFundamentalEx|
|||portTotal|
|10:4.8.1.255|ReEnergyE+Rate#1|kReactiveEnergyFundamentalEx|
|||port|
|10:4.8.2.255|ReEnergyE+Rate#2|kReactiveEnergyFundamentalEx|
|||port|
|10:4.8.3.255|ReEnergyE+Rate#3|kReactiveEnergyFundamentalEx|
|||port|
|10:4.8.4.255|ReEnergyE+Rate#4|kReactiveEnergyFundamentalEx|
|||port|
++++

COSEMClass7ProfileGeneric
++++
|Obis|Description|SDKCommand|
++++
|10:99.1.0.255|Loadprofile|kMassMemory,|
|||kMassMemoryFirstIndex,|
|||kMassMemoryLastIndex,|
|||kRunningConfigurationB|
++++

COSEMClass8Clock
++++
|Obis|Description|SDKCommand|
++++
|00:1.0.0.255|Clockobject|kDateTime|
++++

COSEMClass11SpecialDaysTable
++++
|Obis|Description|SDKCommand|
++++
|00:11.0.0.255|Specialdaystable|
TBD.
|
++++

COSEMClass15AssociationLN
++++
|Obis|Description|SDKCommand|
++++
|00:40.0.0.255|Currentassociation||
++++

COSEMClass17SAPAssignment
++++
|Obis|Description|SDKCommand|
++++
|00:41.0.0.255|SAPassignment||

Baeumle,Ficagna

Confidential

[Page52]

++++

COSEMClass18ImageTransfer
++++
|Obis|Description|SDKCommand|
++++
|00:44.0.0.255|Imagetransfer|kNewTransfer,|
|||kTransferBlock,|
|||kTransferSignature|
++++

COSEMClass20ActivityCalendar
++++
|Obis|Description|SDKCommand|
++++
|00:13.0.0.255|Activitycalendar|
TBD.
|
++++

COSEMClass40CosemPushSetup
++++
|Obis|Description|SDKCommand|
++++
|00:25.9.0.255|Pushsetup||
++++

COSEMClass64SecuritySetup
++++
|Obis|Description|SDKCommand|
++++
|00:43.0.0.255|Securitysetup||
++++

COSEMClass70DisconnectControl
++++
|Obis|Description|SDKCommand|
++++
|00:96.3.10.255|Disconnectcontrol|kControlSignalsCloseBreaker,|
|||kControlSignalsOpenBreaker,|
|||kControlSignalsGetBreakerSta|
|||te|
++++

Baeumle,Ficagna

Confidential

[Page53]

Vous aimerez peut-être aussi