Sei sulla pagina 1di 8

09/01/2017 OprotocoloModbusemdetalhesNationalInstruments

OprotocoloModbusemdetalhes
Publicao:Ago01,2014

Visogeral
OModbusumprotocoloindustrialdesenvolvidoem1979parapossibilitaracomunicaoentredispositivosdeautomao.
Originalmenteimplementadocomoumprotocolodenveldeaplicaodestinadoatransferirdadosporumacamadaserial,o
Modbusfoiampliadoparaincluirimplementaesemcomunicaesseriais,TCP/IPeUDP(userdatagramprotocol).Este
documentoofereceumavisodetalhadadaimplementaodoprotocolo.

ndice
1.OqueoprotocoloModbus?
2.Unidadededadosdeprotocolo
3.Unidadededadosdeaplicao
4.Novoscdigosdefuno
5.Camadasderede
6.ModificaesdaADU

1.OqueoprotocoloModbus?
OModbusumprotocoloderequisiorespostaqueutilizaumrelacionamentomestreescravo.Emumrelacionamento
mestreescravo,acomunicaosempreocorreemparesumdispositivodeveiniciararequisioeentoaguardarpor
umarespostaeodispositivoiniciador(omestre)responsvelporiniciarcadainterao.Tipicamente,omestreuma
interfacehomemmquina(IHM)ousistemaSCADA(SupervisoryControlandDataAcquisition)eoescravoumsensor,
controladorlgicoprogramvel(CLP)oucontroladorprogramvelparaautomao(CPA).Ocontedodessasrequisiese
respostaseascamadasderedepelasquaisessasmensagenssoenviadassodefinidospelasdiferentescamadasdo
protocolo.

Figura1.Relacionamentoderedetipomestreescravo
CamadasdoprotocoloModbus
Emsuaimplementaoinicial,oModbuseraumprotocolosimples,criadonotopodacomunicaoserialdessaforma,no
podiaserdivididoemcamadas.Aolongodotempo,outrasunidadesdedadosdeaplicaoforamsendointroduzidaspara
alteraroformatodospacotesutilizadossobreoserialoupermitirousodeTCP/IPeredesUDP(UserDatagramProtocol).
Issolevouaumaseparaoentreoprotocolobsico,quedefineaunidadededadosdeprotocolo(PDU)eacamadade
rede,quedefineaunidadededadosdeaplicao(ADU).
2.Unidadededadosdeprotocolo
APDUeseucdigoformamabasedaespecificaodoprotocolodeaplicaodoModbus
(http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf).EssaespecificaodefineoformatodaPDU,os
diversosconceitosdedadosusadospeloprotocolo,ousodecdigosdefunoparaacessaressesdadosea
implementaodosdiversoscdigosdefunoeasrestriesespecficasdecadaumdeles.
APDUdoModbusformadaporumcdigodefunoseguidoporumconjuntodedadosassociado.Asdimenseseo
contedodessesdadossodefinidospelocdigodefuno,mastodaaPDU(cdigodefunoedados)nopode
ultrapassar253bytes.Cadacdigodefunotemumcomportamentoespecfico,queosescravostmflexibilidadepara
implementarcombasenocomportamentodesejadodaaplicao.AespecificaodePDUdefineosconceitosbsicosparao
acessoemanipulaodosdadosentretanto,umescravopodetratarosdadosdeumamaneiranodefinidaexplicitamente
naespecificao.
AcessoaosdadosnoModbuseomodelodedadosdoModbus
OsdadosquepodemseracessadospeloModbussoarmazenados,deformageral,emumdosquatrobancosdedados,ou
faixasdeendereo:coils,entradasdiscretas,registradoresholdingeregistradoresdeentrada.Comoocorrecommuitas
partesdaespecificao,essesnomespodemvariar,dependendodaindstriaouaplicao.Porexemplo,osregistradores
holdingpodemserdenominadosregistradoresdesada,eoscoilspodemserreferidoscomosadasdigitaisoudiscretas.
Essesbancosdedadosdefinemotipoeosdireitosdeacessodosdadoscontidos.Osdispositivosescravotmacessodireto
aessesdados,quesohospedadoslocalmentenosdispositivos.OsdadosquepodemseracessadospeloModbussode
formageralumsubconjuntodamemriaprincipaldodispositivo.Poroutrolado,osmestresModbusprecisamsolicitaracesso
aessesdados,utilizandodiversoscdigosdefuno.Ocomportamentodecadablocodescritonoquadro1.

Blocodememria Tipodedados Acessoaomestre Acessoaoescravo

Coils Booleano Leitura/escrita Leitura/escrita

Entradasdiscretas Booleano Somenteleitura Leitura/escrita

Registradoresholding Palavranosinalizada Leitura/escrita Leitura/escrita

http://www.ni.com/whitepaper/52134/pt/#toc4 1/8
09/01/2017 OprotocoloModbusemdetalhesNationalInstruments
Registradoresdeentrada Palavranosinalizada Somenteleitura Leitura/escrita
Quadro1.BlocosdomodelodedadosdoModbus
Essesblocosdoavocacapacidadederestringiroupermitiracessoadiferenteselementosdedadosetambmfornecer
mecanismossimplificadosnacamadadeaplicaoparaoacessoadiferentestiposdedados.
Osblocossototalmenteconceituais.Elespodemexistircomoendereosdememriadistintosemumdadosistema,mas
tambmpodemsesobreporentresi.Porexemplo,ocoil1podeexistirnamesmaposiodememriaqueoprimeirobitda
palavrarepresentadapeloregistradorholding1.Oesquemadeendereamentototalmentedefinidopelodispositivo
escravo,eainterpretaodecadablocodememriaumaparteimportantedomodelodedadosdodispositivo.
Endereamentodomodelodedados
Aespecificaodefinequecadablococontmumespaodeendereamentodeat65.536(216)elementos.Comadefinio
daPDU,oModbusdefineoendereodecadaelementodedadosnafaixade0a65.535.Entretanto,cadaelementode
dadosnumeradode1an,ondentemovalormximode65.536.Assim,ocoil1estnoendereo0doblocodecoils,
enquantoqueoregistradorholding54estnoendereo53daseodememriareservadapeloescravoparaos
registradoresholding.
Noobrigatrioimplementarasfaixascompletaspermitidaspelaespecificaonodispositivo.Porexemplo,podeser
escolhidoparaumdadodispositivonoimplementarcoils,entradasdiscretasouregistradoresdeentradae,emvezdisso,
utilizarregistradoresholdingde150a175e200a225.Issoperfeitamenteaceitvelnessecaso,tentativasdeacesso
invlidasseriamtratadasporexcees.
Faixasdeendereamentodedados
Emboraaespecificaodefinaquediferentestiposdedadosdevemexistiremblocosdiferenteseatribuaumafaixade
endereoslocalparacadatipo,issonoimplicaquehavernecessariamenteumesquemadeendereamentointuitivoou
facilmentecompreensvelparaadocumentaodamemriaquepodeseracessadapeloModbusparaumdeterminado
dispositivo.Parasimplificaradiscussosobreasposiesdosblocosdememria,foiintroduzidoumesquemade
numeraoqueincluiprefixosaoendereodosdadosemquesto.
Porexemplo,emvezdesereferiraumitemcomoregistradorholding14noendereo13,omanualdodispositivopodese
referiraumitemdedadosnoendereo4.014,40.014ou400.014.Emtodosessescasos,oprimeironmeroespecificado
4,querepresentaosregistradoresholdingosdemaisnmerosespecificamumendereo.Adiferenaentre4XXX,4XXXXe
4XXXXXdependedoespaodeendereosutilizadopelodispositivo.Setodosos65.536registradoresestiverememuso,
utilizaremosanotao4XXXXX,poiselapermiteousodafaixade400.001a465.536.Seapenasalgunsregistradoresforem
usados,umaprticacomumusarafaixade4.001a4.999.
Nesseesquemadeendereamento,cadatipodedadosrecebeumprefixo,comomostradonoquadro2.

Blocodedados Prefixo

Coils 0

Entradasdiscretas 1

Registradoresdeentrada 3

Registradoresholding 4
Quadro2.Prefixosdasfaixasdedados
Coilsutilizamoprefixo0.Issosignificaqueareferncia4001podesereferiraoregistradorholding1ouaocoil4001.Por
essemotivo,recomendadoquetodasasimplementaesnovasutilizemoendereamentode6dgitoscomzerosnafrente.
Essainformaodeverseranotadanadocumentao.Dessaforma,oregistradorholding1referenciadocomo400.001e
ocoil4001referenciadocomo004.001.
Valoresiniciaisdosendereosdedados
Adiferenaentreendereosdememriaenmerosderefernciaincluiumacomplicaoadicional,representadapela
indexaoselecionadaporumadeterminadaaplicao.Comomencionadoanteriormente,oregistradorholding1est
localizadonoendereo0.Tipicamente,osnmerosderefernciasoindexadosem1nessecaso,ovalorinicialdeuma
faixaser1.Dessaforma,atraduoliteralde400.001registradorholding00001,queestnoendereo0.Algumas
implementaesescolheminiciarsuasfaixasemzerodessaforma,400.000indicaregistradorholdingnoendereozero.O
quadro3demonstraesseconceito.

Endereo Nmerodoregistrador Nmero(indexaoem1,p Nmero(indexaoem0,al


adro) ternativa)

0 1 400001 400000

1 2 400002 400001

2 3 400003 400002
Quadro3.Esquemasdeindexaodosregistradores

Faixasindexadasem1somuitousadasealtamenterecomendadas.Dequalquerforma,ovalorinicialdecadafaixasempre
deverserindicadonadocumentao.
Tiposdedadosparagrandesvalores

http://www.ni.com/whitepaper/52134/pt/#toc4 2/8
09/01/2017 OprotocoloModbusemdetalhesNationalInstruments
OpadroModbusofereceummodelodedadosrelativamentesimples,quenoincluioutrostiposdedadosalmdovalordo
bitepalavranosinalizada.Essesvalorespodemsersuficientesparaalgunssistemas,nosquaisosvaloresdebit
correspondemasolenideserelseosvaloresdaspalavrascorrespondemavaloresADCsemescala,masnopara
sistemasavanados.Comoresultado,muitasimplementaesdoModbusincluemtiposdedadosquevoalmdas
fronteirasdoregistrador.OmduloLabVIEWDataloggingandSupervisoryControl(DSC)(http://zone.ni.com/reference/en
XX/help/371618J01/lvmve/dsc_modbus_using/)eoKEPServerEX
(http://www.kepware.com/Support_Center/SupportDocuments/Help/modbus_ethernet.pdf)definemalgunstiposdereferncia.
Porexemplo,asstringsarmazenadasemumregistradorholdingseguemoformatopadro(400.001),massoseguidaspor
umdecimal,ocomprimentoeobytequeordenaastring(400.001.2H,umastringde2caracteresnoregistradorholding1,
ondeobyteemnvelaltocorrespondeaoprimeirocaracteredastring).Issonecessrioporquecadarequisiotem
tamanhofinitodessaforma,omestreModbusprecisasaberexatamenteondeastringcomeaetermina,emvezdeprocurar
porumcomprimentofixooudelimitador,comooNULL.
Acessoabit
Almdepermitiracessoadadosquevoalmdasfronteiradoregistrador,algunsmestresModbuspermitemousode
refernciasabitsindividuaisdentrodeumregistrador.Comisso,osdispositivospodemcombinardadosdetodosostiposem
umamesmafaixadememriasemterdeseparardadosbinriosnocoilefaixasdeentradadiscretas.Normalmente,esse
recursoindicadopelousodeumpontodecimaleondicedebitounmero,dependendodaimplementao.Ouseja,o
primeirobitdoprimeiroregistradorpodeser400.001.00ou400.001.01.recomendadoquetodadocumentaoespecifique
oesquemadeindexaoutilizado.
Configuraoendiandosdados
Osdadosdemltiplosregistros,comovaloresdepontoflutuantedeprecisonica,podemserfacilmentetransferidosao
Modbus,comaseparaodosdadosemdoisregistradores.Comoissonodefinidopelopadro,aordemdebit(endian)
utilizadanessaseparaotambmnoestdefinida.Cadapalavranosinalizadadeveserenviadanaordemdebitusada
pelarede(bigendian)parasatisfazeropadro,masmuitosdispositivosinvertemaordemdebytesnocasodedados
formadosporvriosbytes.Afigura2mostraumexemploincomum,masvlido,dessaimplantao.

Figura2.Inversodaordemdebytesemdadosformadosporvriaspalavras
deresponsabilidadedomestreentendercomooescravoestarmazenandoinformaesnamemriaedecodificlas
adequadamente.recomendvelqueadocumentaoinformeaordemdapalavrausadapelosistema.Aordemendian
podetambmserentendidacomoumaopodeconfiguraodosistema,comfunesdecodificaoedecodificao,se
fornecessrioterflexibilidadenaimplementao.
Strings
StringspodemserarmazenadasfacilmenteemregistradoresModbus.Porsimplicidade,algumasimplementaesrequerem
queoscomprimentosdestringsejammltiplosde2equequalquerespaoadicionalsejapreenchidoporvaloresnulos.A
ordemdosbytestambmumavarivelnasinteraesdasstrings.OformatodasstringspodeounoincluirumNULL
comovalorfinal.Comoexemplodessavariabilidade,algunsdispositivospodemarmazenardadoscomomostradonafigura3.

Figura3.InversodaordemdosbytesemstringsdoModbus
Cdigosdefuno
Aocontrriodomodelodedados,quepodevariarsignificativamentedeumdispositivoaoutro,oscdigosdefunoeseus
dadossodefinidosexplicitamentepelanorma.Cadafunosegueumpadro.Emprimeirolugar,oescravovalidaentradas
como,porexemplo,cdigodefuno,endereodosdadosefaixadedados.Emseguida,eleexecutaaaorequisitadae
enviaarespostaapropriadaaocdigo.Sequalqueretapadesseprocessofalhar,umaexceoserenviadadevoltaao
requisitante.OtransportededadosdessassolicitaesaPDU.
APDUdoModbus
APDUformadaporumcdigodefunode1byteseguidoporat252bytesdedadosdefuno.

Figura4.APDUdoModbus

http://www.ni.com/whitepaper/52134/pt/#toc4 3/8
09/01/2017 OprotocoloModbusemdetalhesNationalInstruments
Ocdigodefunooprimeiroitemaservalidado.Seocdigodefunonoforreconhecidopelodispositivoquerecebea
requisio,elerespondercomumaexceo.Seocdigodefunoforaceito,odispositivoescravocomearadecompor
osdadosconformeadefiniodafuno.

Comootamanhodopacotelimitadoa254bytes,osdispositivossolimitadoscomrelaoquantidadededadosque
podesertransferida.Oscdigosdefunomaiscomunspodemtransferirentre240e250bytesdedadosdomodelode
dadosdoescravo,dependendodocdigo.
Execuodafunopeloescravo
Conformedefinidopelomodelodedados,diferentesfunessodefinidasparaacessardiferentesblocosconceituaisde
dados.Umaimplementaomuitousadafazoscdigosacessaremposiesestticasdememria,masoutros
comportamentospodemserusados.Porexemplo,cdigodefuno1(lercoils)e3(lerregistradoresholding)podemacessar
amesmaposiofsicanamemria.Poroutrolado,ocdigodefuno3(lerregistradoresholding)e16(escreverem
registradoresholding)podemacessarposiesdememriacompletamentediferentes.Dessaforma,aexecuodecada
cdigodefunomelhorconsideradacomopartedadefiniodomodelodedadosdoescravo.
Independentementedocomportamentoexecutado,todososdispositivosescravodevemseguirumdiagramadeestados
simplesparacadarequisio.Afigura5mostraumexemplobaseadonocdigo1,lercoils.

Figura5.DiagramadeestadodeleituradecoilsconformeaespecificaodoprotocoloModbus
(http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf)
Cadaescravoprecisarvalidarocdigodefuno,quantidadedeentradas,endereoinicial,faixatotaleaexecuoda
funopeloescravoquefaraleitura.
Emborasejammostradasfaixasdeendereosestticosnodiagramadeestadosacima,asnecessidadesdossistemasdo
mundorealpodemcausaralgumavariaocomrelaoaosnmerosdefinidos.Emalgunscasos,osdispositivosescravo
noconseguemtransferiraquantidademximadebytesdefinidapeloprotocolo.Issosignificanopermitirqueummestre
requisite0x07D0entradasseelesspodemrespondercom0x0400.Demaneirasimilar,ummodelodedadosdeescravo
podedefinirafaixadevaloresdecoilaceitveiscomoosendereosde0a500.Seummestrefizerumarequisiode125
endereosapartirdoendereo0,issoestarOK,massefizeramesmarequisioapartirdoendereo400,ocoilfinal
estarianoendereo525,queestforadafaixaparaessedispositivo,oqueresultarianaexceo02,conformedefinidopelo
diagramadeestados.
Cdigosdefunopadro
Adefiniodecadacdigodefunopadrofornecidanaespecificao.Mesmoparaoscdigosdefunomais
comumenteusados,inevitvelhaveralgumdescasamentoentreasfuneshabilitadasnomestreeaquelasquepodemser
tratadaspeloescravo.Paralidarcomisso,asversesmaisrecentesdaespecificaoTCPdoModbusdefiniutrsclassesde
conformidade(http://www.rtaautomation.com/modbustcp/files/Open_ModbusTCP_Standard.pdf).OdocumentooficialModbus
ConformanceTestSpecification(http://www.modbus.org/docs/MBConformanceTestSpec_v3.0.pdf)nofazrefernciaaessas
classesemvezdisso,defineconformidadeparacadafuno.Entretanto,elasaindapodemfacilitaracompreenso.
recomendadoquequalquerdocumentaosigaaespecificaodotesteedefinasuaconformidadepeloscdigosquepode
utilizar,enopelasclassificaesusadasanteriormente.
Cdigosdaclasse0
Oscdigosdaclasse0soconsideradosemgeralomnimoparaumdispositivoModbusutilizvel,poisdoaummestrea
capacidadedelerouescrevernomodelodedados.
Cdigo Descrio

3 ReadMultipleRegisters

16 WriteMultipleRegisters
Quadro4.Cdigosemconformidadecomaclasse0
Cdigosdaclasse1

http://www.ni.com/whitepaper/52134/pt/#toc4 4/8
09/01/2017 OprotocoloModbusemdetalhesNationalInstruments
Oscdigosdefunodaclasse1compreendemoutroscdigosnecessriosparaacessartodosostiposdomodelode
dados.Nadefiniooriginal,essalistaincluaocdigodefuno7(lerexceo).Entretanto,essecdigodefinidopela
especificaoatualcomocdigosomenteserial.
Cdigo Descrio

1 ReadCoils

2 ReadDiscreteInputs

4 ReadInputRegisters

5 WriteSingleCoil

6 WriteSingleRegister

7 ReadExceptionStatus(somenteserial)
Quadro5.Cdigosemconformidadecomaclasse1
Cdigosdaclasse2
Oscdigosdefunodaclasse2sofunesmaisespecializadas,implementadascommenorfrequncia.Porexemplo,
Read/WriteMultipleRegisterspodeajudarareduziraquantidadetotaldeciclosderequisioresposta,maso
comportamentoaindapodeserimplementadocomcdigosdeclasse0.

Cdigo Descrio

15 WriteMultipleCoils

20 ReadFileRecord

21 WriteFileRecord

22 MaskWriteRegister

23 Read/WriteMultipleRegisters

24 ReadFIFO
Quadro6.Cdigosemconformidadecomaclasse2

InterfaceencapsuladadoModbus
OcdigodeinterfaceencapsuladadoModbus(MEI),funo43,usadoparaencapsularoutrosdadosdentrodeumpacote
Modbus.Atomomento,hdoisnmerosdeMEIdisponveis,13(CANopen)e14(DeviceIdentification).
Afuno43/14(DeviceIdentification)tilporpermitiratransfernciadeat256objetosexclusivos.Algunsdessesobjetos
soprdefinidosereservados,comonomedofornecedorecdigodoproduto,masaplicaespodemdefiniroutrosobjetos
aseremtransferidoscomoconjuntosdedadosgenricos.
Essecdigonoimplementadocomumente.
Excees
Osescravosusamexceesparaindicardiversascondiesproblemticas,derequisiesmalformadasaentradas
incorretas.Entretanto,asexceespodemtambmsergeradascomorespostanonveldaaplicaoaumarequisio
invlida.Osescravosnorespondemarequisiesemitidascomumaexceo.Nessescasos,oescravoignorauma
requisioincompletaoucorrompidaecomeaaesperarpelachegadadeumanovamensagem.
Exceessorelatadasemumformatodepacotedefinido.Emprimeirolugar,umcdigodefunoenviadodevoltaao
mestresolicitanteigualaocdigodefunooriginalcomexceodeseuconjuntodebitsmaissignificativo.Issoequivalea
incluir0x80aovalordocdigodefunooriginal.Emvezdosdadosnormaisassociadosrespostaaumadeterminada
funo,asrespostasexceoincluemumnicocdigodeexceo.
Nopadro,osquatrocdigosdeexceomaiscomunsso01,02,03e04.Essescdigossomostradosnoquadro7,com
ossignificadospadroparacadafuno.
Cdigodeexceo Significado

01 Ocdigodefunorecebidonosuportado.Paraconfirmarocdigodefunooriginal,subt
raia0x80dovalorretornado.

02 Arequisiotentouacessarumendereoinvlido.Nopadro,issopodeacontecersomentese
oendereoinicialeaquantidadedevaloresrequisitadaultrapassar216.Entretanto,algunsdis
positivospodemlimitaraindamaisesseespaodeendereosemseusmodelosdedados.

03 Arequisiotemdadosincorretos.Emalgunscasos,issosignificaquehouvealgumdescasam
entoentreparmetros,porexemplo,entreonmeroderegistradoresenviadoseocampo"byt
ecount".Maiscomumente,omestresolicitoumaisdadosdoquepermitidopeloescravooupel
oprotocolo.Porexemplo,ummestrepodelerapenas125registradoresholdingporvez,edisp
ositivoscomrecursoslimitadospodemreduziraindamaisessenmeroderegistradores.

http://www.ni.com/whitepaper/52134/pt/#toc4 5/8
09/01/2017 OprotocoloModbusemdetalhesNationalInstruments
04 Ocorreuumerronorecupervelduranteumatentativadeprocessararequisio.Esseum
cdigodeexceogeral,queindicaquearequisioeravlida,masoescravonoconseguiu
executla.
Quadro7.CdigoscomunsdeexceodoModbus

Odiagramadeestadoparacadacdigodefunodevecobrirpelomenosocdigodeexceo01enormalmenteincluiros
cdigos04,02e03quaisqueroutroscdigosdeexceodefinidossoopcionais.
3.Unidadededadosdeaplicao
AlmdasfunesdefinidasnoncleodaPDUdoprotocoloModbus,vocpodeusardiversosprotocolosderede.Os
protocolosmaisusadossoTCP/IPeserial,masvoctambmpodeusaroutros,comooUDP.Paratransmitirosdados
necessriosparaoModbusemtodasessascamadas,oModbusincluiumconjuntodevariantesdeADUfeitas
especificamenteparacadaprotocoloderede.
Recursoscomuns
OModbusrequerdeterminadosrecursosparafornecercomunicaoconfivel.OUnitIDouAddressusadoemtodosos
formatosdeADUparafornecerinformaesderoteamentocamadadeaplicao.CadaADUfornecidacomumaPDU
completa,incluindoocdigodefunoeosdadosassociadosaumadeterminadarequisio.Paraaumentara
confiabilidade,todasasmensagenscontminformaesdeverificaodeerro.Almdisso,todasasADUspossuemum
mecanismoquedeterminaoincioeofimdoquadrodarequisio,masosimplementadeformasdiferentes.
Formatospadro
OstrsformatospadroparaasADUssoTCP,RTU(unidadedeterminalremoto)eASCII.AsADUsdostiposRTUeASCII
sotradicionalmenteutilizadasporumalinhaserial,enquantoqueoTCPusadoemredesTCP/IPouUDP/IPmodernas.
TCP/IP
AsADUsdotipoTCPsoformadaspelocabealhodoModbusApplicationProtocol(MBAP)concatenadocomaPDUdo
Modbus.OMBAPumcabealhodeusogeral,quedependedeumacamadaderedeconfivel.OformatodessaADU,
incluindooheader,mostradonafigura6.

Figura6.AADUdotipoTCP/IP
Oscamposdedadosdocabealhoindicamseuuso.Emprimeirolugar,elecontmumidentificadordetransaes.Esse
umrecursovaliosoemumaredequepodetervriasrequisiesemprocessamentosimultaneamente.Comisso,por
exemplo,ummestrepodeenviarrequisies1,2e3.Emalgumpontoposteriormente,umescravopoderespondernaordem
2,1,3.Nessecaso,omestrepodecombinarasrequisiescomsuasrespostaseinterpretarosdadoscorretamente.Esse
umrecursotilpararedesEthernet.
Oidentificadordoprotocolonormalmentezero,masvocpodeusloparaexpandirocomportamentodoprotocolo.O
campoLengthusadopeloprotocoloparadelinearocomprimentodorestantedopacote.Aposiodesseelementotambm
indicaadependnciadesseformatodocabealhoemumacamadaderedeconfivel.ComoospacotesTCPpossuem
verificaodeerroincorporadaegarantemacoernciaeentregadosdados,ocomprimentodopacotepodeestarlocalizado
emqualquerpartedocabealho.Emumaredeinerentementemenosconfivel,comoumaredeserial,umpacotepodeser
perdido.Nessecaso,mesmoqueumfeixededadoslidopelaaplicaoinclusseinformaesvlidasdetransaoe
protocolo,ainformaocorrompidadecomprimentotornariaocabealhoinvlido.OTCPofereceumrazovelgraude
proteocontraessasituao.
OcampoUnitIDnormalmentenoutilizadoparadispositivosTCP/IP.Entretanto,oModbusumprotocolotoutilizadoque
muitosgatewaysdiferentesforamdesenvolvidos,oqueconverteoprotocoloModbusemoutroprotocolo.Emsuadestinao
original,ogatewayModbusdeTCP/IPparaserialpoderiaserusadoparapermitiraconexoentrenovasredesTCP/IPe
redesseriaismaisantigas.Emumambientecomoesse,aUnitIDusadaparadeterminaroendereododispositivoescravo
paraoqualaPDUrealmentedestinada.
Parafinalizar,aADUcontmumaPDU.OcomprimentodessaPDUaindalimitadoa253bytesnoprotocolopadro.
RTU
AADUdaRTUparecesermuitomaissimples,comomostradonafigura7.

Figura7.ADUdaRTU
DiferentementedaADUmaiscomplexadoTCP/IP,essaADUcontmapenasduaspartesdeinformaoalmdaPDUbase.
Emprimeirolugar,umendereousadoparadefiniraqualescravoaPDUdestinada.Namaiorpartedasredes,o
endereo0oendereode"difuso".Issosignificaqueseummestreenviarumcomandoaoendereo0,todososescravos
deveroprocessararequisio,masnenhumdelesdeverresponder.Almdesseendereo,umCRCusadoparagarantir
aintegridadedosdados.
Entretanto,nasimplementaesmaismodernasarealidadeestmuitolongedesersimples.Opacotedelimitadoporum
pardeintervalosdesilncioouseja,perodosnosquaisnohcomunicaonobarramento.Paraataxadebaudsde
9.600,esseintervalodeaproximadamente4ms.Opadrodefineumintervalodesilnciomnimo,independentedataxade
bauds,umpoucomenorque2ms.

http://www.ni.com/whitepaper/52134/pt/#toc4 6/8
09/01/2017 OprotocoloModbusemdetalhesNationalInstruments
Emprimeirolugar,issotrazumadesvantagemaodesempenho,poisodispositivoprecisaesperarotrminodessetempode
guardaantesdeprocessaropacote.Umproblemamaior,entretanto,foiosurgimentodeoutrastecnologiasutilizadasem
transfernciasseriaisetaxasdebaudmuitomaioresdoqueasexistentesquandoopadrofoilanado.Aoutilizarumcabo
deconversoUSBserial,porexemplo,vocnotemcontrolesobreoempacotamentoetransfernciadosdados.Testes
mostramqueusarumcaboUSBserialcomodriverNIVISAintroduzgrandeslacunasdetamanhovarivelnofeixede
dados,eessaslacunasperodosdesilncioconfundemocdigoquesegueaespecificao,fazendooacreditarquea
mensagemfoiconcluda.Comoamensagemnoestcompleta,issonormalmentelevaaumCRCinvlidoeinterpretao
pelodispositivodequeaADUfoicorrompida.
Almdosproblemascomatransmisso,asmodernastecnologiasdedriversabstraemsignificativamenteacomunicao
serialetipicamenterequeremummecanismodepollingdocdigodeaplicao.Porexemplo,nemo.NETFramework4.5
SerialPortClass(http://msdn.microsoft.com/enus/library/system.io.ports.serialport(v=vs.110).aspx)nemoNIVISAfornecem
ummecanismoparadetectarsilncioemumalinhaserialalmdopollingembytesnaporta.Issoresultaemumaescolhade
baixodesempenho(seopollingforrealizadolentamentedemais)oualtautilizaodaCPU(seopollingforexecutado
rapidamentedemais).
Ummtodomuitousado(http://www.digi.com/support/kbase/kbaseresultdetl?id=773)paratratardessesproblemasseparar
acamadadeabstraoentreaPDUdoModbuseacamadaderede.Comisso,ocdigoserialinterrogaopacotedaPDUdo
Modbusparadeterminarocdigodefuno.Emconjuntocomoutrosdadosnopacote,ocomprimentodopacoterestante
podeserdescobertoeutilizadoparadeterminarofinaldopacote.Tendoessainformao,possvelusarumtempode
timeoutmuitomaior,permitindolacunasnatransmisso,eopollingdaaplicaopodeocorrermuitomaislentamente.Esse
mecanismorecomendadoparanovosdesenvolvimentos.Casooseucdigonoempregueessemecanismo,vocpoder
terumaquantidadedepacotes"corrompidos"maiorqueaesperada.
ASCII
AADUdoASCIImaiscomplexaqueaRTUmostradanafigura8,mastambmevitamuitosdosproblemasdopacotede
RTU.Entretanto,elatemsuasprpriasdesvantagens.

Figura8.ADUdoASCII
Pararesolveroproblemadadeterminaodotamanhodopacote,aADUdoASCIItemincioefimnicosebemdefinidos
paracadapacote.Cadapacoteiniciadopor":"eencerradocomoscaracteresCR(carriagereturn)eLF(linefeed).Alm
disso,APIsseriaiscomoNIVISAeo.NETFrameworkSerialPortClasspodemfacilmentelerdadosemumbufferatqueum
caractereespecficocomoCR/LRsejarecebido.Essascaractersticastornammaisfcilprocessaratransmissode
dadosnalinhaserialdemaneiraeficientenosmodernoscdigosdasaplicaes.
AdesvantagemdaADUdeASCIIquetodososdadossotransferidoscomocaractereshexadecimaiscodificadosem
ASCII.Issosignificaqueemvezdeenviarumnicobyteparaocdigodefuno3,0x03,elaenviaoscaracteresASCII0e
3,ou0x30/0x33.Issofacilitaaleituradoprotocoloporumserhumano,masissotambmsignificasernecessriotransferiro
dobrodosdadospelaredeserial,almdisso,asaplicaesdeenvioerecepodevemsercapazesdeinterpretarosvalores
ASCII.
ExtensodoModbus
OModbusumpadrorelativamentesimpleseaberto,quepodesermodificadoconformeasnecessidadesdeuma
determinadaaplicao.EsseoprotocolomaisusadonacomunicaoentreumaIHMeCLPouCPA,poisessauma
situaonaqualumanicaorganizaocontrolaasduaspontasdoprotocolo.Osdesenvolvedoresdesensores,por
exemplo,tmmaiorprobabilidadedeaderiraopadroescrito,porqueelestipicamentesomentecontrolamaimplementao
deseusescravos,eainteroperabilidadedesejvel.
Deformageral,norecomendvelmodificaroprotocolo.Estaseosimplesmentefornecidacomoumreconhecimento
dosmecanismosqueoutrosjusaramparaajustarocomportamentodoprotocolo.
4.Novoscdigosdefuno
Algunscdigosdefunoestodefinidos,masopadroModbuspermitequevocdesenvolvaoutroscdigosdefuno.
Especificamenteoscdigosdefunode1a64,73a99ede111a127socdigospblicos,reservadosecom
exclusividadegarantida.Oscdigosrestantes,de65a72e100a110soparausodefinidopelousurio.Comesses
cdigosdefinidospelousurio,vocpodeusarqualquerestruturadedados.Osdadospodematmesmoultrapassarolimite
de253bytesparaaPDUdoModbus,mastodaaaplicaodeveservalidadaparagarantirqueasoutrascamadas
trabalharocomoesperadoquandoaPDUultrapassarolimitepadro.Oscdigosdefunoacimade127soreservados
pararespostasaexcees.
5.Camadasderede
OModbuspodeserexecutadoemmuitascamadasderedealmdeserialeTCP.Umaimplementaopotencial
(http://jamod.sourceforge.net/)oUDP,porseradequadoaoestilodecomunicaodoModbus.OModbusbasicamente
umprotocolobaseadoemmensagemassim,acapacidadedaUDPdeenviarumpacotebemdefinidodeinformaosem
qualquerinformaoadicionalnonveldaaplicao,comoumcaractereinicialoucomprimento,tornaaimplementaodo
Modbusextremamentesimples.EmvezdeexigirumaADUadicionaloureutilizarumaADUexistente,ospacotesdePDUdo
ModbuspodemserenviadospelousodeumaAPIdeUDPeseremrecebidostotalmenteformadosnaoutraextremidade.
EmboraoTCPsejavantajosoparaalgunsprotocolos,devidoaoseusistemainternodeacknowledgement,oModbusrealiza
esseacknowledgementnacamadadeaplicao.Entretanto,usaroUDPdessamaneiraeliminaocampodeidentificadorde
transaodaADUdoTCP,oqueimpedeapossibilidadedehaverdiversastransaessimultneas.Assim,omestredeve
sersncronoouopacotedoUDPdeveterumidentificadorqueajudeomestreaorganizarrequisieserespostas.Uma
sugestodeimplementaoseriausaraADUdoTCP/IPemumacamadaderededoUDP.
6.ModificaesdaADU

http://www.ni.com/whitepaper/52134/pt/#toc4 7/8
09/01/2017 OprotocoloModbusemdetalhesNationalInstruments
Parafinalizar,umaaplicaopodeescolhermodificarumaADUouusarpartesnoutilizadasdeumaADUexistente,comoo
TCP.Porexemplo,oTCPdefineumcampode16bits,umprotocolode16bitseumaUnitIDde8bits.Dadoqueamaior
PDUdoModbustem253bytes,omaiorbytedocomprimentosemprezero.ParaModbus/TCP,ocampodeprotocoloea
UnitIDsosemprezero.Umaextensosimplesdoprotocolopoderiaenviartrspacotessimultaneamentealterandoo
campodeprotocoloparaumnmerodiferentedezeroeusandoosdoisbytesnoutilizados(UnitIDemaiorbytedocampo
decomprimento)paraoenviodoscomprimentosdasduasPDUsadicionais(vejaafigura9).

Figura9.ExemplodemodificaodaADUdoTCP
Recursosadicionais
EspecificaodoprotocolodeaplicaesModbus(http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf)
PorqueoOPCUAimportante(http://ni.com/whitepaper/13843/en/)
SobreoOPC(http://www.opcfoundation.org/Default.aspx/01_about/UA.asp?MID=AboutOPC)
TecnologiaEtherNet/IPCIPemEthernet
(http://www.odva.org/Portals/0/Library/Publications_Numbered/PUB00138R3_CIP_Adv_Tech_Series_EtherNetIP.pdf)
SuporteaDigi(http://www.digi.com/support/kbase/kbaseresultdetl?id=773)
BibliotecaModbusparaJava(http://jamod.sourceforge.net)

http://www.ni.com/whitepaper/52134/pt/#toc4 8/8

Potrebbero piacerti anche