Driver Modicon Modbus Nome do Arquivo Modbus.dll Fabricante Modicon Equipamentos Qualquer equipamento compatível com o protocolo Modbus v1.1b Protocolo Modbus v1.1b Versão 3.1.36 Última Atualização 17/03/2017 Plataforma Win32 e Windows CE (Pocket PC ARM, HPC2000 ARM, HPC2000 X86 e HPC2000 MIPS) Dependências Sem dependências Leitura com Superblocos Sim Nível 0
353
Embed
Driver Modicon Modbus · Elipse SCADA Topo Anterior Próximo Através do Organizer, selecione o item Drivers e clique em New (Novo). Adicionar novo Driver ao Elipse SCADA Na janela
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Plataforma Win32eWindowsCE(PocketPCARM,HPC2000ARM,HPC2000X86eHPC2000MIPS)
Dependências Semdependências
LeituracomSuperblocos
Sim
Nível 0
IntroduçãoEsteDriverimplementaoprotocoloModbus,permitindoaumaaplicaçãoElipse comunicar com qualquer equipamento escravo que implementeesteprotocolonosmodosASCII,RTUouTCP.EsteDriveratuasemprecomomestredeumaredeModbus.Sehouvernecessidadedecomunicarcomdispositivosmestre,énecessárioutilizaroDriverModbusSlavedaElipseSoftware,quepodeserbaixadonositedaempresa.O Driver Modbus, a partir da versão 2.00, passou a ser desenvolvidocom a biblioteca IOKit da Elipse. Esta biblioteca é responsável porimplementar o acesso ao meio físico (Serial, Ethernet, Modem ouRAS).ParaobterinformaçõessobreaconfiguraçãodoIOKit,consulteotópicoDocumentaçãodasInterfacesdeComunicação.Recomenda-se iniciar a leitura pelo tópico Guia de ConfiguraçãoRápida caso o equipamento seja perfeitamente aderente ao protocoloModbuspadrão,definidopelaOrganizaçãoModbus(modbus.org),esehouver apenas a necessidade de ler ou escrever bits e registros, nãonecessitandodosrecursosmaisavançadosdoDriver.Paraoentendimentomaisaprofundadodetodasas funcionalidadesdoDriver recomenda-se iniciar lendo, nesta ordem, os capítulosAdicionandooDriveremumaAplicaçãoElipseeConfiguração.Paraacriaçãodeaplicaçõesdegrandeporte,recomenda-setambémaleituradotópicoDicasdeOtimização.Casonãoconheçaoprotocolo,consulteosseguintestópicos:
Este tópico descreve os passos necessários para configurar o DriverModbusparaacomunicaçãocomequipamentosaderentesaoprotocolopadrãodefinidopelaOrganizaçãoModbus,considerandoasopçõesdeconfiguraçãomaiscomuns.Seoequipamentoéperfeitamenteaderenteaoprotocolopadrão,esedeseja-se apenas ler ou escrever registros ou bits, os três tópicos aseguirprovavelmentesãosuficientesparaaconfiguraçãodoDriver:
Se estiver utilizando o Elipse E3 ou o Elipse Power, leia o tópicoAdicionandooDriveremumaAplicaçãoElipse-ElipseE3eElipsePower.Se estiver utilizando o Elipse SCADA, leia o tópico Adicionando oDriveremumaAplicaçãoElipse-ElipseSCADA.Depois, leia o passo seguinte deste Manual, que ensina comoconfiguraroDriveremsua janeladeconfiguraçãoparaoscasosmaiscomuns.
Adicionando o Driver em umaAplicaçãodaElipseSoftware
TopoAnteriorPróximo
Esta seção descreve como adicionar oDriverModbus em aplicaçõesE3ouElipsePowereElipseSCADA.
E3ouElipsePower TopoAnteriorPróximo
No Organizer, clique com o botão direito do mouse no item ServerObjects - Drivers and OPC (Objetos de Servidor - Drivers e OPC),selecioneaopção Insert I/ODriver in (InserirDriverdeComunicaçãoem)eselecioneoprojetodesejado.
AdicionarumDriveraumaaplicaçãoE3ouElipsePower
Na janela que se abre, selecione o Driver (o arquivo deve serdescompactado em uma pasta no computador em uso) e clique emOpen(Abrir).
JaneladeconfiguraçõesdodriverNo segundo passo do tópico Guia de Configuração Rápida éapresentadooprocedimentoparaaconfiguraçãobásicadoDriver,paraoscasosdeusomaiscomuns.NotópicoPropriedadesaconfiguraçãoéapresentadaemdetalhes.A janela de configuração do Driver pode sempre ser aberta,posteriormente,clicando-seemDriversettings(Configurarodriver) ,conformemostradonafiguraaseguir.
OpçãoDriversettings(Configurarodriver)Após a configuração das propriedades do Driver, clique emOK paraque se abra a janela do Tag Browser, permitindo inserir na aplicaçãoTags pré-definidos, com base nas configurações mais utilizadas. Afigura a seguirmostra a janela do Tag Browser. Para adicionar Tags,arraste-os da lista Tags available from driver (Tags disponibilizadospelo driver) para a lista Tags from current project (Tags do projetocorrente).
AdicionarnovoDriveraoElipseSCADANa janela que se abre, selecione o Driver (o arquivo deve serdescompactado em uma pasta no computador em uso) e clique emOpen(Abrir).
Para queoDriver funcione corretamente, ainda é preciso configurá-loem sua janela de configuração. Para abrir esta janela, mostrada nafiguraaseguir,cliqueemExtra(Extras).
JaneladeconfiguraçãodoDriverO segundo passo doGuia de Configuração Rápida mostra comoconfigurar o Driver para os casos de uso mais comuns, paraequipamentosqueaderemaosrequisitosdoprotocoloModbuspadrão.No tópico Propriedades a configuração é descrita em detalhes,incluindoosrecursosavançadosdeconfiguração.
Após inserir o Driver na aplicação, deve-se abrir a sua janela deconfigurações,conformejáexplicadonostópicosElipseE3ouPowerouElipse SCADA. Com a janela de configuração aberta, siga estespassos:1. Configureacamadafísicadecomunicação:a. NaabaSetup,selecioneacamadafísica(Serial,Ethernet,ModemouRAS)aserutilizadanaconexãocomoequipamento.
b. Configure a camada física selecionada na aba correspondente(Serial,Ethernet,ModemouRAS).
c. Seprecisardemais informaçõessobreaconfiguraçãodacamadafísica, consulte o tópico Documentação das Interfaces deComunicação.
2. Na abaModbus, selecione o modo do protocolo (RTU, ASCII ouTCP) utilizado pelo equipamento. Como regra geral, deve-seselecionarRTU ouASC (para amaioria dos equipamentos éRTU)parameiofísicoSerialouModem,ouTCPparameiofísicoEthernetouRAS.Asdemaisopçõesemgeralpodemserdeixadascomsuasconfigurações padrão. Caso precise de mais informações sobre asopçõesdestaaba,consulteotópicoAbaModbus.
NOTAEm novas aplicações, recomenda-se fortemente evitar o uso deModbusRTU (modo RTU) encapsulado em meio Ethernet TCP/IP.Entretanto, se por algum motivo, para aplicações legadas, fornecessário usarModbusRTU encapsulado emTCP/IP, não deixe dehabilitar a opção Reconnect after Timeout, descrita no tópico AbaModbus.
3. Caso se esteja criando a aplicação em produtos mais recentes daElipseSoftwarecomooE3,ElipsePowerouElipseOPCServer,épossível utilizar a configuração de Tags por Strings (campos
Dispositivo e Item). Neste caso, vá para opasso seguinte desteguia.
4. Caso precise ainda utilizar a antiga configuração numérica(parâmetrosN/B),usadanoElipseSCADA,éimportanteexaminaraaba Operations. Observe as sete operações padrão já pré-configuradasnoDriver.Asoperaçõessãoconfiguraçõesdefunçõeseformatações de dados que são posteriormente referenciadas pelosTags da aplicação. Estas sete operações padrão, já disponíveisquandooDriveréabertopelaprimeiravez,sãoasmaiscomumentenecessárias.Avalieasfunçõesdeleituraeescritaeotipodedadosusado por cada operação e verifique quais delas são necessáriasparaaaplicação.Casoasoperaçõespré-definidasnãoseenquadremnas necessidades, é necessário editá-las ou mesmo criar novasoperações.Seforesteocaso,leiaotópicoAbaOperations.Atabelaaseguirlistaasseteoperaçõespré-definidas.
Operaçõespré-definidas
OPERAÇÃO FUNÇÃODE
LEITURA
FUNÇÃODE
ESCRITA
TIPODE
DADOS
FINALIDADE
1 3:ReadHoldingRegisters
16:WriteMultipleRegisters
Word Leituraeescritadeinteirosde16bitssemsinal
2 3:ReadHoldingRegisters
16:WriteMultipleRegisters
DWord Leituraeescritadeinteirosde32bitssemsinal
3 3:ReadHoldingRegisters
16:WriteMultipleRegisters
Int16 Leituraeescritadeinteirosde16bitscomsinal
4 3:ReadHoldingRegisters
16:WriteMultipleRegisters
Int32 Leituraeescritadeinteirosde32bitscomsinal
5 3:ReadHoldingRegisters
16:WriteMultipleRegisters
Float Leituradevalorescompontoflutuantede32bits
6 1:ReadMultipleCoils
15:WriteMultipleCoils
Bit Leituraeescritadebits
7 2:ReadDiscreteInputs
None Bit LeituradebitsdeumblocodedadosdeEntradasDiscretas(DiscreteInputs)
NOTAAsseteoperaçõespadrãoestãoconfiguradaspartindodoprincípioqueoequipamentosegueoordenamentodebytes (byteorder)padrãodoprotocolo Modbus, o padrão big endian, no qual os bytes maissignificativos vêm antes. Se o equipamento não segue este padrão,consulte o tópico Aba Operations para informações sobre comoconfiguraroperaçõesparadiferentesordenamentosdebytes.
Para informações detalhadas sobre a configuração do Driver, leia otópicoConfiguração.Opasso seguinte demonstra como configurar Tags deComunicaçãocombasenasoperaçõespré-definidas.
ConfiguraçãodeTagsnoE3enoElipsePowerAconfiguraçãodeTagsnoE3 enoElipsePower pode ser realizadapelonovométododeconfiguraçãoporStringsoupeloantigométodode configuração numérica, compatível com o Elipse SCADA. Paranovos projetos, recomenda-se usar a configuração por Strings, quemelhoraalegibilidadedaaplicaçãoefacilitaamanutenção.A seguir estão descritos os procedimentos recomendados para aconfiguração por Strings e também para a antiga configuraçãonumérica,casosejanecessáriaparaaplicaçõeslegadas.
ConfiguraçãoporStringsParaadicionarTagsconfiguradosporStrings,ousuáriotemaopçãodeimportarmodelospré-definidosdoTagBrowser,conformeexplicadonotópicoAdicionandooDriveremumaAplicaçãodaElipseSoftware.Para isto,deve-semanteraopçãoShowOperationsinTagBrowserdesabilitadanaabaOperations,eabriroTagBrowserclicandoemTagBrowser .ParaadicionarumnovoTagàaplicaçãosemoTagBrowser,sigaestespassos:1. NoOrganizer,cliqueduasvezesnoDriver,selecioneaabaDesign,clique em Add (Adicionar) e selecione o item I/O Tag (Tag deComunicação),conformeafiguraaseguir.
AdicionarnovoTagdeComunicação2. Na janela Adding IOTag (Inserindo IOTag), configure o campoQuantity(Quantity)comovalor1(um)eespecifiqueumnomeparaoTagnocampoName(Nome).CliqueemOKparacriaronovoTag.
4. Na coluna Item, especifique o mnemônico do espaço deendereçamento (conjunto de funções Modbus de leitura e escrita)seguido do endereço do registro ou bit. Para Holding Registers, oespaço de endereçamento é "hr" ou "shr", onde este último nãopermite escrita em blocos, pois usa a função de escrita 06 (WriteSingle Register), enquanto o espaço de endereçamento "hr" usa afunçãodeescrita16(WriteMultipleRegisters).AmbosusamafunçãoModbusdeleitura03(ReadHoldingRegisters).ParaCoilsutilize"cl"ou"scl".Novamente,adiferençaéqueesteúltimo,queusaafunção05 (Force Single Coil), não escreve em blocos. A seguir sãofornecidosalgunsexemplosdeconfiguraçãodacolunaItem.a. LeituraouescritadoHoldingRegister150,usandoasfunções03e16(escritademúltiplosregistros):Itemdeveseriguala"hr150".
b. LeituraouescritadoHoldingRegister150,usandoasfunções03e06(escritaderegistrossimples):Itemdeveseriguala"shr150".
c. LeituraouescritadoCoildeendereçoFFF0h (65520),usandoasfunções01 e15 (escrita demúltiplos bits): Item deve ser igual a"cl65520" ou "cl&hFFF0" (o prefixo "&h" pode ser usado parafornecerendereçosemformatohexadecimal).
d. Leituraouescrita doCoil de endereçoFFF0h (65520) usando asfunções01e05 (escritadebitssimples,umaum): Itemdeveseriguala "scl65520"ou "scl&hFFF0" (oprefixo "&h"podeserusadoparafornecerendereçosemformatohexadecimal).
6. O endereçamento dos Tags deve corresponder ao mapa deendereços Modbus do equipamento, que deve constar nadocumentação do fabricante. Em caso de dúvida, consulte o tópicoDicasdeEndereçamento.
como Verdadeiro), deixando à aplicação e ao Driver a otimização doagrupamento. Para mais detalhes, veja o tópico Leitura porSuperblocos.A título de exemplo, a figura a seguir mostra Tags configurados porStrings.
ExemplodeTagsconfiguradosporStrings
ConfiguraçãoNuméricaNocasodoE3oudoElipsePower,épossívelusaroTagBrowserparacriar Tags com as operações pré-definidas, configuradasnumericamente.Paraisto,selecioneaopçãoShowOperationsinTagBrowsernaabaOperations.AjaneladoTagBrowser,mostradanafiguraaseguir,éabertaaoclicar-seemOKaofecharajaneladeconfiguraçõesdoDriver.
TagBrowserparaaconfiguraçãonuméricadeTagsParaadicionarumnovoTagàaplicação,sigaestespassos:1. Arraste os Tags da lista Tags available from driver (Tagsdisponibilizadospelodriver) para a listaTags fromcurrent project(Tagsdoprojetocorrente),conformedescritonotópicoE3ouElipsePower.Paramuitosequipamentos,aoperação1,amaiscomum, jádevesersuficiente,bastandoarrastarparaalistadosTagsdeprojetooTagOp1<word>.Noteque,supondoquesejamnecessáriosváriosTagscomamesmaoperação, oquegeralmenteéo caso, pode-searrastar o mesmo Tag diversas vezes (perceba que a aplicaçãoacrescentanúmerossequenciaisaonomepadrão).Pode-setambémacrescentarumTagdecadaoperaçãoecriarcópiasmais tarde,no
Organizer.2. Feche o Tag Browser e configure o parâmetroN4/B4 de cada Tagcomoendereçode registro oubit a ser lidoouescrito, conformeomapa de registradores do equipamento. Este mapa de endereçosdeve constar na documentação do fabricante. Em caso de dúvida,consulteotópicoDicasdeEndereçamento.
3. Configure tambémoparâmetroN1/B1decadaTagcomoendereçodo equipamento (Slave Id) a ser acessado em cada caso. Esteparâmetroemgeraléconfigurávelnoequipamentoe,paradeterminá-lo, consulte a documentação ou suporte do fabricante, em caso dedúvida.
4. Renomeie os Tags, se desejar, com um nome que seja maissignificativoparaaaplicação.
ConfigurepreferencialmenteTagssimples (chamadosdeTagsPLCnoantigoElipseSCADA)aoinvésdeTagsBloco,mantendoorecursodeSuperblocoshabilitado(propriedadeEnableReadGroupingconfiguradacomo Verdadeiro), deixando à aplicação e ao Driver a otimização doagrupamento. Para mais detalhes, veja o tópico Leitura porSuperblocos.
ConfiguraçãodeTagsnoElipseSCADAO Elipse SCADA não possui suporte ao Tag Browser, portanto énecessárioconfigurarmanualmenteosTagsdeComunicação.Deve-secriarTagscomaseguinteconfiguração:
N1/B1:EndereçodoEquipamento(SlaveId)
N2/B2:Códigodaoperação
N3/B3:Nãousado,deixarem0(zero)
N4/B4:EndereçodoregistroModbusoubitNote que, para esteDriver, os parâmetrosN dos Tags simples têm omesmo significado dos parâmetrosB dos Tags Bloco, e por isto sãodescritosemconjunto.Em caso de dúvida sobre qual valor atribuir ao parâmetro N4/B4,consulteotópicoDicasdeEndereçamento.Uma vez que o Elipse SCADA não possui suporte a Superblocos,recomenda-se priorizar a criação de Tags Bloco, agrupando registrosadjacentesoupróximos,deformaaleromáximoderegistrosnomenornúmeroderequisiçõesdoprotocolo.Note também que, uma vez que o equipamento suporte os limitespadrão do protocolo para o tamanho do frame de comunicação,devidoao recursodePartiçãoAutomáticadeBlocos, nãoéprecisosepreocuparemexcederotamanhomáximodeblocoqueoprotocolosuporta,poisoDriverjácriaassubdivisõesapropriadasnomomentodacomunicação.
ConsideraçõesFinaisSetudooqueseprecisaéutilizarasoperaçõespadrãodoDriver,eseo equipamento segue o protocolo padrão definido pela OrganizaçãoModbus, os três passos apresentados neste Guia de ConfiguraçãoRápidadevemsersuficientesparaconfiguraroDriver.Para aplicações de maior porte, recomenda-se também ler o tópicoDicasdeOtimização.Maiores detalhes sobre a configuração de Tags deComunicação sãofornecidosnotópicoConfigurandoumTagdeComunicação.
OProtocoloModbus foi desenvolvido inicialmente pela Modicon em1979,sendohojeumpadrãoaberto,mantidopelaOrganizaçãoModbus(modbus.org),tendosidoimplementadoporcentenasdefabricantesemmilharesdeequipamentos.ASchneiderElectric,atual controladoradaModicon,transferiuosdireitosdoprotocoloparaaOrganizaçãoModbusem abril de 2004, firmando o compromisso de manter o protocoloaberto. A especificação pode ser obtida gratuitamente no site daOrganização (www.modbus.org), e a utilização do protocolo é livre detaxasdelicenciamento.O protocolo é baseado em mensagens de comando e resposta,posicionado no nível 7 do modelo OSI (camada de aplicação), quepossibilita comunicação cliente e servidor entre equipamentosconectadosadiferentes tiposde redes.Ofereceserviçoscomfunçõesdefinidasporumcódigodeoitobits.Existemtrêscategoriasdecódigosdefunções:
Códigos de funções públicas: Funções bem definidas peloprotocolo, com garantia de unicidade, validadas pela comunidadeModbus e publicamente documentadas emMB IETF RFC. Podemassumirvaloresde1a64,de73a99ede111a127Códigos de funções definidas pelo usuário: Funções nãopadronizadas,quenãoprecisamdeaprovaçãodaModbus.org,semqualquer garantia de unicidade, podendo ser livrementeimplementadas.Podemassumirvaloresnasfaixasde65a72ede100a110Códigos de funções reservadas: Códigos com valores dentro dafaixadefunçõespúblicas,atualmenteusadosporalgunsfabricantesemprodutosantigos,enãomaisdisponíveisparausopúblico.Sãoexemplososcódigos9,10,13,14,41,42,90,91,125,126 e127.Para mais informações, consulte o Anexo A da especificação doprotocolo (versão 1.1b), que está disponível no site oficial doprotocolo
EsteDriverimplementa11das19funçõespúblicasprevistasnaversãoatual(1.1b)daespecificaçãodoprotocolo,bemcomoalgumasfunçõesespecíficas de fabricantes ou relacionadas a recursos específicos doDriver, denominadas Funções Especiais. As funções públicasimplementadas são descritas no tópico Funções Suportadas. Asseguintesfunçõespúblicasdoprotocoloaindanãosãosuportadas:
ODriverModbusestádisponívelparadownload(semcustos)nositedaElipseSoftware,naáreadedownloaddeDrivers.MaioresinformaçõesreferentesaoprotocoloModbuspodemserobtidasemwww.modbus.org,siteoficialdoprotocolo.O Elipse Modbus Simulator está disponível para download (semcustos)nositedaElipseSoftware,naáreadedownloaddoE3.OSimuladorModbusSlaveModsim,provavelmenteomaisconhecidoda categoria, pode ser adquirido em www.win-tech.com/html/modsim32.htm. Este software emula o equipamento,permitindoacomunicaçãocomoDriver.Existe também a alternativa gratuita Free Modbus PLC Simulator,disponívelparadownloadnositewww.plcsimulator.org.Outras alternativas de simuladores e outras ferramentas de softwarerelacionadas ao protocolo podem ser encontradas no site oficial doprotocolo.
Informações detalhadas sobre cada uma destas funções podem serobtidas na especificação do protocolo Modbus, disponível paradownloadnositedaOrganizaçãoModbus.Além das funções padrão do protocolo, como já referido, este Drivertambém implementa funções especiais, não definidas pelo protocolo,em geral relacionadas à leitura da memória de massa. A lista dasfunções especiais suportadas pode ser conferida no tópico FunçõesEspeciais. A configuração completa doDriver está descrita no tópicoConfiguração.Caso identifique a necessidadede adicionar suporte a alguma funçãonovanesteDriver,entreemcontatocomodepartamentocomercialdaElipseSoftware.
Asfunçõesespeciaisde leituraeescritasãofunçõesdesteDriverquenãosãodefinidaspeloprotocoloModbuspadrão.Foramdesenvolvidaspara atender particularidades exclusivas de determinadosequipamentos, ou também para disponibilizar, de forma padronizadapelo Driver, recursos não disponíveis no protocolo padrão. O DriverModbus,naatualversão,incluiasseguintesfunçõesespeciais:
FunçõesdeLeitura65 03: Leitura da Memória de Massa (ABB MGE 144), vista emmaiores detalhes no tópico Leitura de Registros da Memória deMassadeMedidoresABBMGE144GE SOE: Leitura de eventos (GE PAC RX7 Systems), vista emmaiores detalhes no tópico Leitura de Buffer de Eventos emControladoresGEPACRX7SP SOE: Leitura de eventos (Relés Schneider Electric da sérieSEPAM), vista emmaiores detalhes no tópicoLeituradeEventosdeRelésSchneiderElectricSEPAM20,40e80GenSOE: Leitura de SOE com algoritmo genérico, implementadopelo software residente no equipamento escravo (CLP), vista emmaioresdetalhesnotópicoAlgoritmodeLeituradeSOEGenéricodaElipseSoftware
FunçõesdeEscrita65 01: Reinicializa (executa a operação de reset) o medidor deenergia (ABB MGE 144). Este comando é enviado como umcomandosimplesdeescrita(Write)doTag.OcampoValordoTagéignorado pelo Driver e pode ser deixado em 0 (zero). Para maisinformações,consulteomanualdoequipamento
6502:Zeraamemóriademáximosemínimos(ABBMGE144).Estecomandoéenviadocomoumcomandosimplesdeescrita(Write)doTag. O campo Valor do Tag é ignorado pelo Driver e pode serdeixadoem0 (zero).Paramais informações,consulteomanualdoequipamento
NotequeasfunçõesespeciaisnesteDriver,comexceçãodafunçãodeescrita65 01, estão relacionadas direta ou indiretamente à leitura deregistros de memória de massa dos respectivos equipamentos. Paramais informações, consulte o tópico Leitura de Memória de Massa.Para a descrição da configuração de operações e Tags usando estasfunções,leiaotópicoConfiguração.
As propriedades do Driver podem ser configuradas em tempo deconfiguração (design time) ou em tempo de execução (runtime). Aconfiguraçãoemtempodeexecução(runtime) tambéméchamadadeConfiguraçãoemModoOfflineeédescritaemumtópicoespecífico.Emtempodeconfiguração,oDriverpodeserconfiguradopormeiodesuajaneladeconfiguração,mostradanafiguraaseguir.
JaneladeconfiguraçãodoDriverPara abrir a janela de configuração do Driver no E3 ou no ElipsePower, clique duas vezes no objeto Driver noOrganizer e clique emDriversettings(Configurarodriver) ,conformemostradonafiguraaseguir.
OpçãoConfigurarodriverJá no Elipse SCADA, a janela de configuração do Driver pode serabertaclicando-seemExtras,noOrganizerdaaplicação.A janela de configuração é dividida em várias abas, algumas para aconfiguraçãodoIOKiteoutrasespecíficasdoDriver.NocasodoDriverModbus,asabasModbus,OperationseGenSOEsãoespecíficas.AsdemaisabassãoparaconfiguraçãodoIOKitenãosãodescritasnestetópico.Paramaisinformaçõessobreaconfiguraçãodo IOKit,consulteotópicoDocumentaçãodasInterfacesdeComunicação.OstópicosaseguirdescrevemasabasespecíficasdoDriveretambéma configuração em tempo de execução, no chamadoModo Offline,utilizandoscripts.
Evite usar omodoRTU do protocolo encapsulado emmeioEthernetTCP/IP. Caso seja necessário encapsular a comunicação serial deequipamentos que utilizem o Modbus RTU em TCP/IP, existemgateways disponíveis no mercado que não somente encapsulam acomunicação serial emEthernet TCP/IP, como também convertem oModbusRTU emModbus TCP. Em último caso, se for inevitável autilização deModbusRTU emmeioEthernet TCP/IP, não deixe dehabilitaraopçãoReconnectafterTimeout,descritanatabelaaseguir.
DataAddressModelOffsetEsta opção de configuração, descrita na tabela anterior, é fonte defrequentesdúvidasnoendereçamentodosTagsdeComunicação,poishá muitas variações na maneira como é implementada pelosfabricantes. A seguir apresentamos mais informações sobre esteendereçamento.Nomodelodedadospadrãodoprotocolo sãodefinidosquatroblocosdedados(ouespaçosdeendereçamento):DiscreteInputs,Coils, InputRegisterseHoldingRegisters.Emcadaumdestesblocososelementosde dados são endereçados iniciando em 1 (um). Por outro lado, aespecificação do frame de comunicação define um PDU contendoendereçosquepodemvariarentre0(zero)e65535.Arelaçãoentreoendereço fornecido no PDU e o endereço dos elementos de dados,portanto, possui um deslocamento (offset) de 1 (um), ou seja, se noPDU de uma requisição constar o endereço 0 (zero), o elemento dedadoacessadoéoendereço1(um).Comesta opção da abaModbus, o usuário pode escolher se desejaqueoDriverajusteovalorautomaticamente,deformaapermitirousodo endereço do elemento de dado nos Tags (opção padrão), ou sedeseja que o valor enviado noPDUseja omesmo valor fornecido naconfiguraçãodosTags(parâmetroN4/B4naconfiguraçãonumérica).ExistemequipamentosqueseguemopadrãoModbusemseusmapasdeendereços(iniciandoemum)eoutrosquemapeiamseusdadossemooffset padrão, usando diretamente o valor de endereço presente noframedecomunicação(iniciandoemzero).Alémdesteoffset unitário, existemaindaequipamentosqueutilizamoantigo padrão deoffsets utilizado pela Modicon, empresa criadora doprotocolo,padrãoconhecidocomoModbusConvention,detalhadonotópicoDicasdeEndereçamento.Consultenomanualdoequipamentoomapade registradoresparaverificaropadrãoutilizado.Emcasodedúvida,consulteosuportedofabricante.
NOTAA opção Data Address Model Offset denominava-se Use Older
Addressnasversõesanterioresàversão2.03,ondeaopçãoDataisaddressed from 1 equivale à antiga opção Use Older Addresshabilitada,eaopçãoDataisaddressedfrom0equivaleàopçãoUseOlderAddressdesabilitada.
NOTAA antiga opção Swap Address Delay foi removida da janela deconfiguração na versão 2.08. O Driver ainda mantém suporte a estaopção em aplicações pré-existentes e permite habilitá-la por scripts(vejaotópicoConfiguraçãoemModoOffline).Paraaplicaçõesnovas,recomenda-se utilizar a opção Inter-frame Delay da aba Serial doIOKit,quesubstituiestaantigaopçãocomvantagens.
Este tópico descrevea configuraçãodaabaOperations da janela deconfiguraçãodoDriver,ondesãodefinidasasoperaçõesutilizadasnosTagsdeComunicação,mostradanafiguraaseguir.A configuração de operações não émais usada naconfiguração deTags por Strings, sendo usada apenas na antiga configuraçãonumérica(parâmetrosN/B)doElipseSCADA.
AbaOperationsnajaneladeconfiguraçõesdoDriver
OperaçõesParaocorretofuncionamentodesteDriver,énecessáriodefinirquaisasfunçõesModbusde leituraouescrita sãoutilizadaspara cadaTagdeComunicação.Para isto, caso a configuração dosTags seja realizadaatravés dos antigos parâmetros numéricos N/B do Elipse SCADA,deve-seselecionaraabaOperationsnajaneladeconfigurações.Para este Driver, são chamadas Operações as configurações quedefinemcomocadaTagdeComunicaçãoexecutaa leituraeaescritadedadosnoequipamento.Uma operação nada mais é do que a definição de um par defunçõesdoprotocolo,umaparaescritaeoutraparaa leitura,eaespecificaçãodeconversõesadicionaisnoformatodosdadosquepodemserassociadosaosTagsdaaplicação.Emoutraspalavras,no Driver Modbus os parâmetros numéricos N ou B dos Tags deComunicação não referenciam diretamente as funções do protocolo,massimoperaçõespré-configuradas,queporsuaveznãosóinformamasfunções(nativasdoprotocolooumesmoespeciais)aseremusadasna comunicação, como também a forma como os dados nativos doprotocolodevemserinterpretados.A configuração dos parâmetros dos Tags de Comunicação é descritamais adiante no tópico Configurando um Tag de Comunicação. Aseguirédescritaaconfiguraçãodasoperações,quemaistardedevemserassociadasacadaTagdeComunicação.
NOTAAsoperações funcionamapenascomomodelos,ou templates,paraaconfiguração deTags de Comunicação, sendo possível, e em geralnecessário,atribuirumamesmaoperaçãoadiversosTags,quetêmemcomumomesmovaloremseusparâmetrosN2/B2.
FunçõesOprotocoloModbusdefinefunçõesdeleituraeescrita,asquaispodemacessar espaços de endereçamento distintos no equipamento, e comtiposdedadosespecíficos.As funções03e16porexemplo,asmaisusadas do protocolo, são responsáveis respectivamente pela leitura eescritadeHoldingRegisters,quenadamaissãodoquevaloresinteirossemsinalde16bits(Words).As funções do protocoloModbus padrão fornecem dados apenas emformatosbásicosdeBiteWord de 16 bits.Não existem formatos dedadosadicionaisnaespecificaçãodoprotocolo.A lista das funçõesModbus suportadas peloDriver, e que podem seratribuídas às operações configuradas, pode ser conferida no tópicoFunçõesSuportadas.Além das funções do protocolo, o Driver também contém algumasFunções Especiais que não fazem parte do protocolo padrão, deformato proprietário e utilizadas em geral para a leitura de eventos(SOE).
FormataçãodeDadosAlémdepermitiraassociaçãodasfunções(doprotocoloouespeciais)aTags específicos, as operações também permitem a definição deformataçãoadicionalaseraplicadaaosdados,possibilitandoosuporteatiposdedadosadicionais,nãoespecificadospeloprotocolo,comoporexemplovaloresdepontoflutuantede32bits(Float)e64bits(Double).OstiposdedadossuportadossãodescritosnotópicoTiposdeDadosSuportados.Éimportanteobservarque,quandotiposdedadosde32e64bitssãodefinidosnasoperações,énecessáriodefinirfunçõesdoprotocoloquetrabalhemcomregistrosde16bits.Destaforma,aleituradedadoscommaisde16bitsresultanaleituradeváriosregistrosModbusde16bitsdo equipamento, ou seja, para a leitura de um Tag associado a umaoperaçãoquedefinaotipodedadoFloatde32bits,oDriverprecisalerdoisregistrosconsecutivosde16bitsdoequipamento,concatená-loserealizaraconversãoparaoformatoFloat.Também é possível definir tipos de dados de oito bits (Byte, Int8 ouChar)nasoperações.Noteque,umavezqueasfunçõesdoprotocolonão permitem a leitura e escrita de bytes isolados, para cada doisElementosdeBlocodetiposdedadosdeoitobits,oDriveréobrigadoaacessarumregistrodistintode16bitsnoequipamento.Porestemotivo,oDrivernãopermiteaescritade tiposdedadosdeoitobitsemTags,emElementos isolados deBloco ou emBlocos de tamanho ímpar ouunitário. A escrita de tipos de dados de oito bits deve ser realizadasempreemBlocosdetamanhopar.
TiposdeDadosDefinidospeloUsuárioAlémdostiposdedadospré-definidos(tiposdedadosnativosoubuilt-in) descritos no tópico Tipos de Dados Suportados, este Driverpermite também tiposdedadosdefinidospelousuário.Estes tiposdedadosdevemserdeclaradosemjanelaespecífica,clicando-seemUserDefinedTypesnaparteinferiordaabaOperations.Taistiposdedadosconsistem em estruturas criadas a partir dos tipos de dados pré-definidos.Paramaisinformaçõessobreostiposdedadosdefinidospelousuário,consulteotópicoTiposdeDadosDefinidospeloUsuário.
ByteOrderAlémdas funções de leitura e escrita do protocolo e do tipo de dadoutilizado, cada operação permite também atribuir manipulaçõesadicionais aos bytes, relacionadas ao chamadobyte order, ou seja, aordem dos bytes dentro de cada valor. São as chamadas opções deswap (Swap Bytes, Swap Words e Swap DWords). Tais opçõessomentenecessitamserhabilitadasnocasodeequipamentosquenãorespeitemaordemdebytespadrãodoprotocolo.OprotocoloModbusdefinequeseusvaloresde16bitsutilizamsempreobyteorderchamadodebigendian,tambémconhecidocomoMotorola,porserutilizadoporestefabricante.Opadrãobigendiandefinesempreaordemdosbytesde tal formaqueobytemais significativode cadavalorvenhasempreantes.Destaforma,porexemplo,naleituradovalorhexadecimal 1234h, o equipamento envia primeiro o byte maissignificativo12helogoaseguiromenossignificativo,34h.Nocasodeequipamentosquenãoimplementemobyteorderpadrãodoprotocoloequeutilizemochamado littleendianouIntel,osdadossãoenviados com os bytes menos significativos antes. É preciso entãohabilitarasopçõesdeswapparainverteraordemdosbytes.Háaindaequipamentosqueusambyteordersdiferentespara tiposdedados de 32 e 16 bits. No caso, por exemplo, de equipamentos queusemobyteorderpadrãodoModbus(bigendian)paratiposdedadosde 16 bits, porém forneçam dados de 32 bits com oWord menossignificativovindoprimeiro(littleendian),énecessáriohabilitarapenasaopçãoSwapWords,deixandodesmarcadaaopçãoSwapBytes. Emsuma,pode-seterbasicamentetrêssituações:
Casooequipamento forneçadadosusandoobyteorderpadrãodoprotocolo Modbus (Motorola ou big endian), com os bytes maissignificativosvindoantes,deve-sedeixarasopçõesdeswap todasdesabilitadas.Estaéasituaçãomaiscomum
Para tipos de dados de 32 bits, habilite as opçõesSwapBytes eSwapWords. Para tipos de dados de 64 bits, as três opções deswapdevemserhabilitadas
No caso menos comum de equipamentos que usem byte ordersdiferentes para tamanhos de dados diferentes, fornecendo porexemplo o bytemais significativo de cadaWord primeiro, porémoWordmenossignificativodecadaDWordprimeiro,éprecisoavaliaremqualcasocadaopçãodeswapprecisaserhabilitada,deformaaconverter o valor retornado pelo equipamento para o formato bigendianpadrãodoprotocolo
NOTAAsopçõesdeswapcitadasnãotêmefeitopara tiposdedadosBitoupara tiposdedados com tamanhodeoito bits (Byte,Char e Int8). Apermutaocorredentrodecada tipodedados,ouseja,aopçãoSwapWords não tem efeito para tipos de dados de 16 bits, assim como aopçãoSwapDWordsnãotemefeitoparatiposdedadosde32bits.OstiposdedadosBCDtambémnãopermitemswaps.
Parasaberseoequipamentoutilizaalgumformatodiferenciadodebyteorder,consulteadocumentaçãodo fabricante.Casoa informaçãonãosejaencontradanadocumentação,osuportetécnicodofabricantedevesercontactado.OtópicoDúvidasMaisFrequentescontémdicasdeconfiguraçõesdebyte order para alguns equipamentos para os quais já se sabe sernecessárioutilizarasopçõesdeswap.
MáscaradeBitsAopçãoUseBitMaskéumrecursoavançado,utilizadaemcasosmaisespecíficoserarosemqueousuáriodesejalersomenteumbitdovalorretornado pelo equipamento,mas não é possível usar omapeamentodebitsdaaplicação.Para a maioria dos usuários, os campos de mapeamento de bits daaplicaçãosãoamelhoralternativaparaoacessoàmáscarasdebits,nãosendoprecisorecorreraesterecursodoDriver.Este recurso foi criado originalmente para permitir a leitura de bits deHoldingRegisters por bibliotecas especializadas doE3, em situaçõesqueimpediamousodomapeamentodebitsdaaplicação.Nestecaso,oDriverlênormalmenteovalordoequipamentoeentãoomascara, de forma a retornar ao campo Valor do Tag apenas o bitespecificado(0ou1). A definição do número do bit a ser retornadoéfeitanoparâmetroN3/B3doTagdeComunicação.AopçãoUseBitMasksomentepodeserutilizadacomtiposdedadosinteirosde16bitsoumais(Int16,Int32,WordouDWord).Alémdisto,operaçõesquehabilitamestaopçãopodemserutilizadasapenasparaaleitura.A funçãoModbusdeescrita (Write)deoperaçõesqueutilizamestaopçãodemáscarapodemserdefinidascomoNone(nenhuma).
OperaçõesPadrãodoDriverPor padrão, quando um novo Driver é adicionado à aplicação, esteDriver já é criado com sete operações padrão, descritas na tabela aseguir.
None Bit LeituradebitsdoblocodedadosdeEntradasDiscretas(DiscreteInputs)
Estas operações são as mais comumente usadas, sendo aoperação 1 (um) a mais comum. Para a maior parte dos
equipamentos, selecione as operações necessárias entre as jáfornecidasporpadrão,nãosendonecessáriocriarnovasoperaçõesoualteraraconfiguraçãodasoperaçõespadrão.
AdicionandoumanovaoperaçãoPara configurar a nova operação, selecione um número para estaoperação (este número é utilizado no parâmetroN2/B2 dos Tags deComunicação), qual função deseja utilizar para leitura e qual funçãodesejautilizarparaescrita,alémdeinformarotipodedadosqueélidoouescritopeloDriver.Noteque,aoclicaremAdd,oDriver jásugereumvalorqueaindanãoestejaemusoparaanovaoperação.Para mais informações sobre os tipos de dados suportados, veja otópico Tipos de Dados Suportados. Os demais campos devem serconfigurados conforme a necessidade. A tabela a seguir contém adescriçãodestescampos.
NOTAAsopçõesSwapBytes,SwapWords eSwapDWords, conforme jáexplicado, foram acrescentadas para permitir compatibilidade comequipamentos que não seguem o padrão do protocolo Modbus nacodificaçãodosdados (byteorder).Seestasopçõespermaneceremdesabilitadas,ocomportamentodoDrivercorrespondeaopadrãodoprotocolo,sendoestaaopçãorecomendadaparaamaioriadosequipamentos.
A tabela a seguir relaciona os tipos de dados nativos do Driver quepodemserdefinidosnaconfiguraçãodosTags.Conforme explicado nos tópicos Configuração por Strings e AbaOperations,oprotocoloModbusemsitemsuporteapenasaostiposdedados Bit e Word (16 bits) para as funções mais comunsimplementadas neste Driver (a exceção atualmente é a função 7).Todososdemais tiposdedadosdoDriversãoconvertidosparaWordno nível do protocolo, para a leitura ou escrita no equipamento oudispositivoescravo.Vale lembrar que este Driver também suporta os Tipos de DadosDefinidos pelo Usuário, definidos como estruturas com elementoscompostoscomostiposdedadosnativosdatabelaaseguir.Natabelaaseguir,ostiposdedadosusamasmesmasdenominaçõesdos mnemônicos para o campo tipo do dado, quando os Tags sãoconfigurados por Strings. Na configuração numérica, as mesmasdenominações são também utilizadas na coluna Data da janela deconfiguração do Driver (na Aba Operations). Em alguns casos,denominações alternativas frequentes são apresentadas entreparênteses.
Opçõesdisponíveisparatiposdedados
TIPO FAIXA DESCRIÇÃOChar -128a127 Palavradeoitobits,caractere.Aescritadeve
NOTAEmboraa representaçãoemsidos tiposdedadosdedataehoradatabela anterior possa representar datas superiores a 31/12/2035, estelimite é mostrado na tabela pelo fato de os aplicativos da ElipseSoftware não possuírem suporte, atualmente, para faixas de valoressuperioresaestelimiteemestampasdetempo(timestamps).
GenTime é um tipo de dados de data e hora definido e adicionadooriginalmenteaoDriverparausocomoAlgoritmodeLeituradeSOEGenéricodaElipseSoftware.Trata-seentretantodeumtipodedadosgenérico,quepodeserusadocompraticamentequalquerCLP,deformasimples.Na aplicação do supervisório, ou seja, nos valores dos Tags eElementosdeBlocodeTagsBloco,bemcomonocampoTimestampdos Tags, este tipo de dados, como aliás todos os demais tipos dedadosdedataehoradoDriver,érepresentadoporumtipodedadosdedata e hora nativo da aplicação. Para mais informações sobre osdemaistiposdedadosdedataehorasuportadospeloDriver,consulteotópicoTiposdeDadosSuportados.Paramais informaçõessobreostipos de dados de data e hora da aplicação, consulte o respectivomanualdousuário(existemalgumasdiferençasdoElipseSCADAparaoVBScriptutilizadonoE3eElipsePower).NoCLPoudispositivoescravo,este tipodedadosérepresentadoporumaestruturacompostaporquatroregistradoresde16bits(oitobytes),conformemostradonatabelaaseguir.
dia como o byte mais significativo e o mês como o byte menossignificativo. Já nooffset 2 tem-se a hora representada no bytemaissignificativoeosminutosnobytemenossignificativo.Oquartoregistrotem os quatro bits mais significativos do Word representando ossegundos,eosbitsrestantes(osdoismenossignificativosdobytemaissignificativo e o byte menos significativo do inteiro) representando osmilissegundos.NotequecadaTagquereferencieestetipodedadosforçaoDriveralerumblocodequatroregistrosModbusnoequipamentopararepresentarovalordecadaTagouElementodeBlocopararetornarumvalorválido.Asvantagensdestetipodedadossãosuasimplicidade(éfácildegerarno ladder do CLP), sua precisão de milissegundos e sua relativacompactação,nãonecessitandodesuportenativonoCLPoudispositivoescravo.
NOTAEmbora o tipo de dadosGenTime em si tenha um tamanho de oitobytes(quatroWords),aúnicaopçãodeswapquetemefeitosobreeleéSwapBytes. Isto porque, conforme visto neste tópico, este tipo dedados é estruturado namemória do CLP como tendo quatroWords,nãosendoelemesmoumtipodedadosnativodoequipamento,esimdo Driver. Mais informações sobre as opções de swap (byte order)podemserencontradasnotópicoAbaOperations.
Os tipos de dados definidos pelo usuário, ou estruturas, apósconfigurados na janela de configuraçãoUser Defined Types, podemserusadosnasoperaçõesdoDriverdamesmaformaqueos tiposdedadospré-definidos.Estestiposdedadossãonaverdadeestruturascujoselementospodemter tipos de dados nativos diferentes, ou seja, um tipo de dadosdefinidopelousuárionadamaisédoqueumaestruturadefinidaapartirdostiposdedadospré-definidospeloDriver(tiposdedadosnativosoubuilt-in), permitindo ao usuário configurar Tags Bloco onde cadaElementopodeterumtipodedadosnativodiferente.O usuário pode utilizar praticamente todos os tipos de dados pré-definidospeloDriveremsuasestruturas.SomentenãosãopermitidosostiposdedadosBit,ostiposdedadosdeoitobits,ostiposdedadosdetamanhovariável,comoStringeBCD,e tiposdedadosdeeventoassociadosàfunçõesespecíficasdeSOE.Umaveztendodefinidoumtipodedados,ousuáriopodeassociá-loaqualquer Tag, desde que ela utilize funções Modbus que suportemWords, ou seja, não é permitida a associação de um tipo de dadosdefinidopelousuárioaumaoperaçãoquedefinacomofunçãodeleitura(Read)afunção01,porexemplo,umavezqueestalêapenasbits.Além da definição dos elementos da estrutura, cujos valores sãoretornados emElementos de Bloco, o usuário pode também definir otipo de timestamp do Tag, bem como o endereço padrão para aestrutura, endereço que é usado para o parâmetro B4 dos TagsdisponíveisviaTagBrowserdoE3.
AplicaçõesOs tipos de dados definidos pelo usuário foram originalmenteimplementadosparausoemconjuntocomaRotinadeSOEGenéricodo Driver Modbus (Gen SOE), uma vez que esta rotina executa aleituradetabelasdeestruturasdedados.AlémdepoderserutilizadocomarotinagenéricadeSOE,esterecursopodetambémserusadoparaagrupartiposdedadosdiferentesemummesmoTagBloco, otimizandoa comunicaçãoemaplicações quenãocontam com o recurso de Superblocos, caso do Elipse SCADA, oucaso o equipamento em uso por algummotivo não permita o uso deSuperblocos(vejaotópicoLeituraporSuperblocos).
ConfiguraçãodeTiposdeDadosDefinidospeloUsuárioA configuração de tipos de dados definidos pelo usuário é realizada em janelaespecífica, clicando em User Defined Types na Aba Operations da janela deconfiguraçõesdoDriver,conformeafiguraaseguir.
AbaOperationsdajaneladeconfiguraçõesdoDriverAjaneladeconfiguraçãodostiposdedadosdefinidospelousuáriopermiteaediçãodo arquivo de configuração das estruturas. Ao abrir a janela pela primeira vez, émostrado o arquivo de configuraçãopadrão (comcomentários), e que define trêstipos de dados de exemplo, que aparecem comentados por comentários demúltiplaslinhas("/*"e"*/"),conformeexplicadoaseguir.Afiguraaseguirmostraajaneladeconfiguraçãodetiposdedadosdefinidospelousuário,comumpequenoarquivodefinindoostrêstiposdedadosdeexemplo.
ConfiguraçãodetiposdedadosdefinidospelousuárioNotequeoscomentáriosdelinhainiciamsemprecom"//",identificandotudooquevier à direita, na mesma linha, como comentário, seguindo o padrão doscomentáriosdelinhadalinguagemdeprogramaçãoC++,tambémusadoporoutraslinguagenscomoJavaeC#.Também são suportados comentários demúltiplas linhas, seguindo novamente amesmasintaxedoC++,iniciandopor"/*"eterminandocom"*/".NotequeoarquivoexemploquevemcomoDriverjáaplicaesteformatodecomentárioaseustiposdedados de exemplo, deixando-os comentados por padrão. Remova as linhasindicadaspor"/*Sampletypesentirelycommentedbydefault"e"*/"(semasaspas)paraqueostrêstiposdedadosdeexemplosestejamprontosparaouso.À medida que o texto do arquivo de configuração é alterado, a barra de status
mostra o resultado da análise sintática do arquivo, em tempo real. Esta barra destatusmostraamensagem"Status:OK!"senãoforemdetectadoserrosnoarquivo.Acadamomento,a linhaeacolunadaposiçãodocursornacaixadeediçãosãosempremostradasnoladodireitodabarradestatus.Oserrosmostradosnabarrade status sempre referenciam ao número da linha e da coluna onde ele foidetectado.Averificaçãopodeserfeitanaíntegratambémclicando-seemVerifye,emcasodeerro,ocursorjáéposicionadoautomaticamentenalinhadoerro.Adefiniçãodecadatipotemaseguintesintaxe(oselementosentrecolchetessãoopcionais):
struct: Palavra-chave, em letrasminúsculas, que inicia a definição do tipo dedadosdefinidopelousuário
<Nome do Tipo>: Nome pelo qual o novo tipo de dados é identificado peloDriver.EsteéonomemostradonacaixadeseleçãoData,naconfiguraçãodasoperações.Deveternomáximoseiscaracteres
timestamp: Campo opcional que indica que a estrutura tem umdefinidopelodispositivo,quedeveserretornadonocampoTimestampCadaestruturapodeternomáximoumtimestamp.Aordememqueaparecenaestrutura influencia a posiçãoemqueo campoé lidono frame retornado peloequipamento (note que nos Tags este valor é retornado somente no campoTimestamp). Podem ser definidos quaisquer tipos de dados de data e horasuportadospeloDriver.Naversãoatual,oDriversuportaos tiposdedadosdedataehoraGenTime,Sp_time,UTC64deUTC32.Paramaisinformaçõessobre
tiposdedados,consulteotópicoTiposdeDadosSuportadosDefaultAddress:Campoopcionalqueespecificaumvalordeendereçopadrão,usadoparapreencheroparâmetroB4dosTagsnoTagBrowserquereferenciemasoperaçõescontendoaestruturadefinida.Osvaloresdeendereçopodemserfornecidos em decimal ou em hexadecimal. Para usar este último, é precisoprecederonúmerocomoprefixo"0x"(porexemplo,usar"0x10"paracodificarovalordecimal16emhexadecimal)
<tipodataehora>:Tiposdedadosdedataehorapré-definidospeloDriver,quepodemserutilizadoscomo timestamppelodispositivoescravo.NaatualversãodoDriver,sãoaceitosos tiposdedadosnativosGenTime,Sp_timeUTC64d<tipo>: Tipo de dados do elemento. Deve ser definido como um dos tipos dedadospré-definidospeloDriver,eescritodamesmaformaqueaparecenacaixade seleção Data, no frame de configuração dos parâmetros das operações,considerandoletrasmaiúsculaseminúsculas.NãosãopermitidostiposdedadosBit,tiposdedadosdeoitobitsenemtiposdedadosdetamanhovariável,comoBCDeString[nomedoelemento]:ParâmetroopcionalquedefineonomedecadaElementodo Bloco. Se definido, determina o nome dos Elementos de Bloco nos TagspresentesnoTagBrowserdoE3.Senãofordefinidonadeclaraçãodaestrutura,oDriver atribui nomes padrão aosElementos noTagBrowser, coma palavra-chave "Element" seguida do valor do índice do Elemento dentro do Bloco("Element1","Element2",etc.)
ImportaçãoeExportaçãoAs opções Import File eExport File permitem importar e exportar oarquivodeconfiguraçãode tiposdedadosdefinidospelousuárioparaarquivos texto em disco. Podem ser utilizados para a realização decópias de segurança do arquivo, ou para compartilhá-lo entre váriosDrivers.OarquivoésempregravadoelidonoformatoANSIpadrãodoWindows (CharsetWindows-1252). Futuras versões doDriver podemsuportaroutrosformatos.Alémdecopiaroarquivoparaodisco,pode-setambémusarasteclasdeatalhoCTRL+A(SelecionarTudo),CTRL+C(Copiar)eCTRL+V(Colar) para copiar e colar o conteúdodo arquivo emoutroEditor deTexto.A opçãoLoad Default Configuration carrega novamente no editor oarquivo padrão de configuração, o mesmo que já vem carregado noeditorquandoajaneladeconfiguraçãoéabertapelaprimeiravez.
NOTAAo clicar emCancel, todas as alterações realizadas no arquivo sãodescartadaspeloDriver.Clicando-seemOK,oarquivoéarmazenadonaaplicação.Estaoperaçãorealizaaverificaçãocompletadoarquivoe,seforidentificadoalgumerro,esteémostradoeajanelanãoéfechada.Seforprecisosalvaralteraçõescomerrosaindapendentes,exporteoarquivooucopie-oecole-oemoutroEditordeTextos.
Utilizando Tipos de Dados Definidos pelo Usuário naConfiguraçãoporStringsPode-sefornecernomesdetiposdedadosdefinidospelousuáriocomomnemônicosdocampoTipodocampoItem,comoocorrecomostiposdedadosnativosdoDriver,desdequeonometenhasidopreviamentedeclarado,comoexplicadoanteriormentenestetópico.
IMPORTANTEComo no E3 o campo Item não diferencia entre minúsculas emaiúsculas, para usar tipos de dados definidos pelo usuário nestecampo é necessário que os nomes dos tipos de dados definidos nãodifiramapenaspelacaixaaltaoubaixa,ouseja,nãosedevedefinir,porexemplo, um tipo de dados como nome "tipo1" e outro como nome"TIPO1".Casoistoocorra,nãoépossívelusartiposdedadosdefinidospelousuárionocampoItematéqueosnomessejamcorrigidos.
Leitura ou escrita de Holding Registers (funções 03 e 06) deendereço100doequipamentocom Id5, interpretadocomoumtipodedadosdefinidopelousuáriochamado"mytype",comSlaveIdnocampoItem:
Dispositivo:""(emptyString)
Item:"5:shr100.mytype"
NOTAAs opções de permuta (ordenamento de bytes) para tipos de dadosdefinidos pelo usuário têm efeito apenas nos elementos da estruturadefinida e não na estrutura inteira, ou seja, se a opçãoSwapWordsestá habilitada, todos os elementos com mais de 16 bits têm seusWords permutados. Os elementos de 16 bits, entretanto, não sãoalterados.
Utilizando TiposDefinidos peloUsuário naConfiguraçãoNuméricaApósadefiniçãodosnovostiposdedadosnoarquivodeconfiguraçãonajanelaUser-DefinedTypes,estes tiposdedadosestãodisponíveispara uso nas operações do Driver. Lembre-se que somente asoperaçõesqueutilizamfunçõesModbusparaacessoaregistradoresde16bits,comoporexemploas funções03,04,06e16,permitemtiposdedadosdefinidospelousuário.A figura a seguir mostra a configuração de uma nova operação queutilizaotipodedadosdefinidopelousuário(estrutura)denomeTYPE3,mostradonoexemploacima,apósousuárioclicaremAdd.
Adicionartipodedadosdefinidopelousuário
NOTAAsopçõesdepermutapara tiposdedadosdefinidospelousuário têm
efeito apenas nos elementos da estrutura definida e não na estruturainteira, ou seja, se a opção Swap Words está habilitada, todos oselementos com mais de 16 bits têm seus Words permutados. Oselementosde16bits,entretanto,nãosãoalterados.
Apósadefiniçãodanovaoperação,usandoonovotipoTYPE3,definaum Tag Bloco com omesmo tipo de dados e com tamanho igual aonúmero de elementos da estrutura, conforme mostrado na figura aseguir.
DeclaraçãodeTagsusandoestruturasnoE3ouElipsePower
Se foi definido o nome para cada elemento da estrutura, é possívelutilizaroTagBrowserdoE3paraincluirumTagBlocoreferenteaotipodedadosdesejadonaaplicação,semprecisardigitarnovamente.Parautilizaresterecurso,énecessárioselecionaraopçãoShowOperationsin Tag Browser na aba Operations. A figura a seguir ilustra oprocedimento.
UsodoTagBrowserparadefinirTagsusandoestruturas
Comoafigurasugere,cliqueem naabaDesigndoDriverparaabriro Tag Browser e arraste o tipo de dados desejado da lista TagsdisponibilizadospeloDriver (Tags available fromdriver) para a listaTagsdoprojetocorrente(Tagsfromcurrentproject).
LeituraReportadaaEventosOstiposdedadosdefinidospelousuárioouestruturassãocomumenteutilizadosparaadefiniçãodeeventosnamemóriadoCLP,podendoserusados com o Algoritmo de Leitura de SOE Genérico da ElipseSoftware. Se entretanto for necessário ler eventos organizados namemóriadoCLP,comoumasequênciadeestruturas,emumaoperaçãoque utilize apenas função pública de leitura do protocolo, ou seja,sem o emprego de funções especiais com algoritmo de SOE, talprocedimentopodeserrealizadodeduasformas:
LeituraemBloco:CrieumBlococomumnúmerodeElementosquesejamúltiplo do número de elementos das estruturas de dados dousuário. Por exemplo, um tipo de dados definido pelo usuário ouestrutura com dois elementos que represente eventos acumuladosem um arranjo na memória do CLP. Caso se deseje ler em blococinco eventos, é necessário definir um Tag Bloco contendo 10Elementos.Assim,umaúnicaleituranesteTagtraztodososeventosdeumasóvez
Leitura Reportada a Evento: Usa uma sequência de eventosOnReaddoTagparaleroblocodedados.Comisto,considerandooexemplo do item anterior, ao invés de criar um Tag com 10Elementos,ousuárioprecisacriarapenasumúnicoTagBlococomdoisElementos,configurandooparâmetroB3comovalor"5".Destaforma,aorealizaraleituradoTag,oE3chamacincovezesoeventoOnReaddoTag,eemcadachamadaosElementosepropriedadesdoTagBlococontêmdadosrelativosaumeventoespecífico.OusomaiscomumdosTagsreportadosaeventoéoarmazenamentodoseventos lidos diretamente na base de dados de histórico. Isto éfacilmente executado através do método WriteRecord do objetoHistóricopreviamenteassociadoaoTag,dentrodoeventoOnReaddoTagreportadoaevento.Paramaisinformações,consulteotópicosobreTagsReportadosaEventosnoManualdoUsuáriodoE3
a Eventos se o seu parâmetroB3 for configurado com um valor nãonulo.No caso de funções especiais de SOE, como a funçãoGen SOE, oretorno reportado a eventos é definido pelo próprio algoritmoproprietáriodafunção.Para mais informações a respeito da configuração de Tags deComunicação, consulte o tópico Configurando um Tag deComunicação.
IMPORTANTEAolereventosdememóriademassaemTagsreportadosaeventosnoE3, desabilite a banda morta no Tag (propriedade EnableDeadBandconfigurada como Falso) e também no objeto Histórico associado(propriedadeDeadBand igual a zero), paraevitaraperdadeeventoscomvalorespróximos.Tambéméimportantedesabilitarohistóricoporvarredura (no E3, propriedade ScanTime igual a zero). Com isto,garante-sequenovoseventossósãoarmazenadosatravésdométodoWriteRecord, executado no evento OnRead do Tag, evitando aduplicaçãodeeventos.
A importação e exportação de operações deve ser realizada na abaOperationsdoDriver,clicandoemImportConfigurationouemExportConfiguration,conformemostradonafiguraaseguir.
OpçõesdeimportaçãoeexportaçãodeoperaçõesEstas opções tornam possível importar e exportar a configuração deoperaçõesmostradanoquadroModbusOperationsparaarquivosINI.Nas versões anteriores à 2.00 deste Driver, a configuração dasoperaçõeseraexecutadanoarquivomodbus.ini,queeracarregadonomomento da inicialização do objeto Driver. Os arquivos modbus.inidestasversõesantigasaindapodemsercarregadosnaversãoatualdoDriver,utilizandoaopçãodeimportação.
NOTAAs operações do Driver eram chamadas de Funções do Driver nasversões iniciais. Esta denominação foi posteriormente alterada paraOperações do Driver devido a casos observados em que haviaconfusãocomasFunçõesdoProtocolo.
ImportaçãoA importação de arquivos de configuração é bastante simples. Cliqueem Import Configuration e selecione o arquivo INI. O Driver devecarregarasconfiguraçõesdeoperações,queaparecemimediatamenteno quadroModbusOperations. Este Driver permite a importação dearquivosgeradospelassuasversõesanteriores.
ExportaçãoA exportação de arquivos de configuração de operações pode serrealizada para compartilhar a mesma configuração de operações emdiferentesobjetosDriver,bemcomoparaaeventualrealizaçãodecópiade segurança (backup) da configuração de operações de umdeterminadoequipamento.Outra possível utilidade é a exportação das configurações para umarquivo modbus.ini compatível com versões anteriores do Driver,permitindocarregarasconfiguraçõesnestaversãoanterior.Trata-sedeuma prática pouco recomendada mas que, caso seja inevitável emaplicaçõeslegadas,requerasconsideraçõesfeitasaseguir.Ao clicar em Export Configuration, abre-se uma janela com duasopções,conformeafiguraaseguir.
OpçõesdeexportaçãoNestajaneladeve-seselecionarentreexportarconformeonovopadrão(Newformatwith typemnemonics),comos tiposdedadosexibidossendodefinidoscomStrings(mnemônicos),ounoformatoantigo(Oldformatwith types'numericcodes), emqueos tiposdedadoseramidentificadosporumvalornumérico,correspondenteàposiçãoemqueapareciamnacaixadeseleçãoDatanaabaOperations.Oformatonovoémaislegível,facilitandoadepuração,eéutilizadonasversõesmaisrecentesdesteDriver,sendoaopçãomaisrecomendada.Jáoformatoantigodeveserselecionadosomenteseforimprescindívelexportarparaversõesanterioresàversão2.08desteDriver.Note que, para exportar com sucesso arquivos modbus.ini a seremcarregados em versões anteriores à versão 2.00, as operações nãopodem definir nenhum tipo de dados novo que não tenha sido
implementadopela versãodedestino,enem tampouco teroperaçõesque utilizem o parâmetroUse bitmask, caso contrário a importaçãopodefalhar.Demaneirageral, recomenda-seevitaraexportaçãodeconfiguraçõesparaversõesanteriores,priorizandosempreaatualizaçãodoDriver.
O objetivo desta aba é concentrar opções de configuração para oAlgoritmodeLeituradeSOEGenéricodaElipseSoftware.Afiguraaseguirmostraaopçãodisponívelnestaaba.
AbaGenSOEA única opção de configuração atualmente disponível está descrita aseguir:
Enablecontrolanddataregistersgrouping(padrãoVerdadeiro):Habilitaoagrupamentoderegistrosdecontroleeregistrosdedados,de forma a realizar o mínimo de leituras possível. Se esta opçãoestiverhabilitada,oDriveriniciaaleituradetabelasjátentandoleromáximo de registros permitidos pelo protocolo, tanto registros decontrolecomodedados,esepossível já lendoa tabela inteiraemumaúnicaleitura.Talprocedimentoemgeralotimizaavarredurados
TagsdamesmaformaqueosSuperblocos,poisotempodemandadopara a leitura de blocos grandes é em geral bemmenor do que otemponecessáriopararealizarváriasleiturasdamesmaquantidadededados,emboraistopossadependerdoCLP.OsCLPsATOSnãopermitemaleituraagrupadadosregistrosdecontroleedeestruturasdedados,exigindoqueestaopçãosejadesabilitada.
Este tópico descreve a configuração dos diversos tipos de TagssuportadosporesteDriver.OsTagssãodivididosemduascategorias,descritasnosseguintestópicos:
ConfigurandoumTagdeComunicação
ConfigurandoTagsEspeciais
Configurando um Tag deComunicação
TopoAnteriorPróximo
Os Tags de Comunicação do Driver são os Tags que permitem acomunicaçãocomosequipamentos.OsTagsdeComunicaçãopermitemlereescreveremregistrosModbusnos equipamentos escravos, usando as funções do protocoloModbus,oumesmofunçõesespeciais.EsteDrivernão fazdistinçãoentreTagsBlocoeTagssimples,nocasodeTagsdeComunicação,ouseja, os Tags deComunicação funcionam damesma forma que TagsBlococomapenasumElemento.Osdadossão lidosdoequipamentoutilizandoos formatossuportadospeloprotocolo,ouseja,registrosdevaloresinteirosde16bits,bytesouconjuntos de bits, dependendo da função do protocolo utilizada. Paramaiores informações sobre as funções do protocolo, consulte aespecificaçãonositeoficialdoprotocolo.Estes Tags podem ser configurados de duas formas, descritas nostópicosaseguir:
ConfiguraçãoporStrings:Esteéométodomaisnovoquepodeserutilizado com oElipseE3,ElipsePower eElipse OPC Server erecomendado para novos projetos. Não funciona com o ElipseSCADAConfiguraçãoNumérica:MétodoantigoutilizadonoElipseSCADA
A configuração por Strings de Tags de Comunicação é realizadausandooscamposDispositivoeItemdecadaTag.EstenovométododeconfiguraçãonãofuncionanoElipseSCADA,queusaoantigométododeconfiguraçãonumérica(parâmetrosNeB).Os parâmetrosN eB não são usados na configuração porStrings edevemserdeixadosem0(zero).AconfiguraçãoporStringstornaaconfiguraçãodosTagsmaislegível,facilitandoaconfiguraçãoemanutençãodasaplicações.
LeituraemBlocoOs Tags configurados por Strings podem ser Tags simples ou TagsBloco,comoscamposDispositivoeItemtendoamesmasintaxe.
NOTAOserviçodeagrupamentodeTags realizadopelosSuperblocos nãoestádisponívelparaosTagsqueutilizamaconfiguraçãoporStrings.Se houver necessidade de otimização através da leitura desuperblocos, os Tags da aplicação devem utilizar somente aConfiguraçãoNumérica.
CampoDispositivoNo campo Dispositivo, o Slave Id (endereço identificador doequipamento)deveserfornecidocomoumnúmeroentre1(um)e255seguidodedoispontos,comoporexemplo"1:","101:","225:",etc.Cabe lembrar que, no protocoloModbus, oSlave Id 255 é reservadopara broadcast, o que só faz sentido ser usado para operações deescrita,poisnãoháretornodosequipamentos,ouocorreriamconflitos.Opcionalmente, o Slave Id pode aparecer no início do campo Item,explicadoaseguir,enestecasoocampoDispositivodevesermantidovazio.Estaopçãoédetalhadaaseguir.
Ondeosparâmetrosentrecolchetessãoopcionais.Como já mencionado na seção anterior, pode-se opcionalmenteadicionar o Slave Id no início do campo Item, como no exemplo aseguir:
Neste caso, como já explicado, deve-se deixar o campoDispositivovazio.Osexemplosaseguirmostramoscasosdeusomaiscomuns(notequeasaspasduplasnãodevemseradicionadasnosupervisório):1. LeituraouescritadeHoldingRegisters(funções03e16)deendereço100doequipamentocomId1ecomSlaveIdnocampoDispositivo:a. Dispositivo:"1:"b. Item:"hr100"
3. Leitura ou escrita de Coil (funções 01 e 15) de endereço 65535(FFFFh)comSlaveId4,aquiespecificadonocampoItem:a. Dispositivo:""(Stringvazia)b. Item:"4:cl&hFFFF"(ouopcionalmente"4:cl65535")
A figura a seguir mostra exemplos de Tags do Tutorial do E3configuradosporStrings.
TagsdoTutorialdoE3configuradosporStrings
CamposObrigatórioseOpcionaisOscamposobrigatóriosparatodososTagssãoenumeradosaseguiredetalhadosindividualmentemaisadiantenestemesmotópico:1. Espaço de endereçamento: Mnemônico que define o conjunto defunçõesde leituraeescritadoprotocoloautilizar (vejaa tabelaemseçãoespecífica,maisadiantenestemesmotópico).
2. Endereço: Valor numérico identificando o endereço do item(registrador ou bit) a ler ou escrever dentro do espaço deendereçamento definido. Os valores podem ser fornecidos emdecimal, hexadecimal ou octal. Para valores em decimal não épreciso adicionar prefixo, ou pode ser usado o prefixo "&d". Paravalores em hexadecimal, adicione o prefixo "&h" (por exemplo,"&hFFFF").Jáparaoctal,useoprefixo"&o"(porexemplo,"&o843").Este endereço pode ter um deslocamento (offset) em relação aoendereço realmente enviado no frame de comunicação, o quedependedaconvençãoutilizadapelofabricante.Emcasodedúvidassobreasconvençõesdeendereçamento,consulteotópicoDicasdeEndereçamento(ModbusConvention).Emespecial,verifiqueseoequipamentoimplementaooffsetpadrãodoDataModeldoprotocolo(vejaasopçõesdeDataAddressModelOffsetnaabaModbus).
Já os campos enumerados a seguir são opcionais, usados paraextensões ao protocolo padrão ou para compatibilidade comequipamentosquenãosejamplenamenteaderentesaoprotocolo (sãotambémmelhordetalhadosmaisadiante):1. Tipo: Define como os bytes da área de dados do frame decomunicaçãodevemserinterpretados.Seforomitido,sãousadosostipos padrão definidos pelo protocolo para as funções em uso, ouseja, Word para funções de acesso a registradores e Bit parafunçõesdeacessoadadosdigitais(CoilseDiscreteInputs).Consulteatabelademnemônicos dos tipos suportados,maisadiantenestetópico.
indicaotamanhodotipoembytes.3. Byte order: Mnemônico indicando o ordenamento dos bytes dosvaloresnuméricos.Seomitido,éusadoopadrãodoprotocolo, comosbytesmaissignificativosvindoprimeironoframedecomunicação,o chamado big endian. Veja mais informações na seção específicasobreestaopção,maisadiantenestetópico.
4. Bit: Permite retornar um bit específico de um valor inteiro, eobviamentesófazsentidoemfunçõesModbusqueretornemvaloresinteiros (Words). Em geral recomenda-se não usar este recurso,dando preferência ao mapeamento de bits do supervisório. O bit 1(um)éomenossignificativoe,quantomaiorovalor,maissignificativoéobit.Ovalormáximopermitidoobviamentedependedo tamanhodo tipo, sendoomáximoatualmentede64para tiposDouble.Estecampo corresponde à antiga opçãoUse BitMask da configuraçãonumérica.Mais informaçõessobreestaopçãopodemserobtidasnotópicoAbaOperations.
ExceçõesAs funções Modbus 20 e 21 do protocolo Modbus, que acessamarquivos, utilizam sintaxe ligeiramente diferente da mostradaanteriormente:
Consulte os tópicos específicos sobre as funções especiaismencionadas anteriormente para mais informações sobre aconfiguraçãodosrespectivosTagsusandoStrings.
EspaçodeEndereçamentoAoinvésdedefinirexplicitamenteasfunçõesModbusouespeciaisdeleituraeescrita a seremutilizadas, comoocorre na antigaconfiguraçãonuméricaseuconceitodeoperações,naconfiguraçãoporStringsousuáriodefineumespaçodeendereçamentoatravésdeumdosmnemônicoslistadosnatabelaaseguir, já associado a funções pré-definidas do protocolo e seus respectivostiposnativosdedados.
TiposdeDadosNa tabeladaseçãoanteriorsão listadosos tiposdedadosnativosdoprotocolo, conforme as funções Modbus utilizadas, bem como algunstiposdedadosespecíficosusadosemfunçõesespeciais (nãopadrãodoprotocolo).ParaTagsqueretornemestes tiposdedadosnativos,oparâmetroTipodeDadopodeseromitidodaStringdocampoItem.Casosejanecessáriointerpretarosdadosnativosdeoutraforma,algomuito comum entre os equipamentos que usam Modbus, deve-seespecificar o tipo de dados a ser usado, conforme explicado nestaseção.AlistaeodetalhamentodetodosostiposdedadossuportadosporesteDriverpodeserconsultadanotópicoTiposdeDadosSuportados.A tabelaaseguir listaosmnemônicosusadosnoparâmetro<tipo>docampo Item para cada tipo de dados suportado, nativo do Driver, etambémumaliasounomealternativo.
Tiposdedadossuportados
TIPO MNEMÔNICO ALIASChar char ch
Byte byte byouu8
Int8 int8 i8
Int16 int16 i16
Int32 int32 i32
WordouUInt word u16
DWordouULong dword u32
Float float f
Float_GE float_GE fge
DoubleouReal double d
String string s
BCD BCD bcd
GenTime GenTime gtm
Sp_time Sp_time sptm
UTC64d UTC64d -
UTC32 UTC32 -
TiposdeDadosCriadospeloUsuárioAlém dos tipos de dados listados na tabela anterior, usuários podemtambém fornecermnemônicos de tipos de dados criados pelo usuárioouestruturas(vejaotópicoTiposdeDadosDefinidospeloUsuário).Paraqueos tiposdedadosdefinidospelousuáriopossamserusadosno campo Item, entretanto, é preciso que os nomes destes tipos dedados não se diferenciem apenas pormaiúsculas eminúsculas, umavezqueocampo Itemnão levaemcontacaixaaltaoubaixa.Se istoocorrer, o Driver não permite o uso destes tipos de dados no campoItem(vejaotópicoTiposdeDadosDefinidospeloUsuário).
Exemplos1. LeituraouescritadeHoldingRegisters(funções03e16)deendereço100 do equipamento com Id 1, interpretado como umDWord, comSlaveIdnocampoDispositivo:a. Dispositivo:"1:"b. Item: "hr100.u32" ou "hr100.dword", ou se for conveniente usarhexadecimal,"hr&h64.u32"
2. LeituraouescritadeHoldingRegisters(funções03e16)deendereço150 do equipamento com Id 3, interpretado como um Float, comSlaveIdnocampoItem:a. Dispositivo:""(Stringvazia)b. Item:"3:hr150.f"ou"3:hr150.float"ouemhexadecimal"3:hr&h96.f"
3. LeituraouescritadeHoldingRegisters(funções03e16)deendereço1500doequipamentocom Id5, interpretadocomoumDouble, comSlaveIdnocampoItem:a. Dispositivo:""(Stringvazia)b. Item: "5:hr1500.d" ou "5:hr1500.double" ou ainda, se forconvenienteendereçaremhexadecimal,"5:hr&h5DC.d"
4. LeituraouescritadeHoldingRegisters(funções03e06)deendereço100 do equipamento com Id 5, interpretado como umWord, comSlaveIdnocampoItem:a. Dispositivo:""(Stringvazia)b. Item: "5:shr100" ou "5:shr100.u16" ou "5:shr100.word". Note que,porserumWord,otipodedadosnativodoprotocoloModbusparaHoldingRegisters,otipodedadospodeseromitido
NOTAOespaçodeendereçamentodeHoldingRegistersnoprotocoloModbuscontémregistrosde16bits.Portanto,paraa leituradetiposdedadosde32bits,comoDWordouFloat,énecessário lerdoisendereçosde"hr"paracadaTagacessado.Damesmaforma,aleituradeumTagdotipoDoubleexigea leituradequatroendereçosdeHoldingRegisters.Pelosmesmosmotivos,aleituraeescritadeTagsde"hr"detipoBytesópode ser realizadaaospares.Noequipamento, cadaendereçodeHoldingRegistercontémsempredoisbytes.
TamanhodoTipodeDadosOs tipos de dados BCD e String, por possuírem tamanho variável,exigem a especificação do tamanho do tipo de dados (type size), embytes,logoapósotipo.Cabelembrarquesãoválidosapenasostiposdedados2e4(2e4bytesou4e8dígitos)paraostiposdedadosBCD.Exemplos:1. LeituraouescritadeHoldingRegisters(funções03e16)deendereço100doequipamentocom Id1, interpretadocomoumaStringde10bytes(cincoregistros"hr"),comSlaveIdnocampoDispositivo:a. Dispositivo:"1:"b. Item:"hr100.s10"
OrdenamentodeBytes(ByteOrder)Como mostrado nas sintaxes da seção anterior, pode-se adicionar oparâmetroopcionalbyteordernocampoItemdosTagsparaespecificaroordenamentodebytesparaequipamentosquenãoseguemopadrãodo protocolo. Se o equipamento segue o ordenamento padrão doprotocoloModbus,estecampopodeseromitido.Casoocorramleiturasdevaloresdistorcidos,oquepodeserobservadojá nos primeiros testes com o equipamento, e se estes valores,convertidos para hexadecimal, semostrarem corretos com a inversãodaposiçãodealgunsbytes,leiaestaseçãoatentamente.O protocoloModbus utiliza por padrão o formatobig endian, onde osvaloressãoformatadoscomosbytesmaissignificativosvindoprimeironosframesdecomunicação.EsteéoformatoqueesteDriverusacomopadrão. Existe, entretanto, um grande número de equipamentos nomercado que se utilizam de valores com outras combinações deordenamentodosbytes.Comoexemplo,seoDriver lêumvalor iguala"1234h"(ou"4660"emdecimal), por padrão oDriver espera que o dado seja enviado comasequência de bytes 12h e 34h. Se entretanto o equipamento usa opadrãoinverso,chamadodelittleendian,éenviadoprimeiroobyte34hedepoiso12h,eoDriverpodeinterpretá-locomo3412h,ou13330emdecimal,anãoserqueosdoisbytestenhamsuaordeminvertidaantesdesuainterpretação.No caso de valores de 32 bits pode também ocorrer de valores emWordpermutados(swapped), porémcomosbytesdentrodosvaloresemWordmantendoaordempadrão.Porexemplo,ovalor12345678hpode vir como 56781234h. E há vários outros casos, com inúmerascombinaçõesdiferentesdeordenamento.Parapermitiracomunicaçãocomestesequipamentosquenãoseguemo padrão do protocolo de ordenamento de bytes, o Driver permite aousuárioconfigurarTagsespecificandoopadrãoaserutilizado.O parâmetro byte order corresponde às opções de swap dasoperações,utilizadasantigamentenaconfiguraçãonumérica,epodeterosvalores"b0","b1","b2","b3","b4","b5","b6","b7","alias"ouainda
"alias2"(vejaatabelaaseguir).Seoparâmetrobyteorderforomitido,odadoéinterpretadoseguindoopadrãodoprotocolo,oqueequivaleaocódigo"b0".A tabela a seguir indica que operações de swap ou permutas (SwapBytes, Swap Words e Swap DWords) são realizadas para cadamnemônicodeordenamento(de"b0"até"b7").
Operaçõesdepermutaouswap
SWAPBYTES
SWAPWORDS
SWAPDWORDS
ALIAS ALIAS2(SWAPS)
ORDENAMENTO*
b0 msb - by7by6by5by4by3by2by1by0
b1X - sb by6by7by4by5by2by3by0by1
b2 X - sw by5by4by7by6by1by0by3by2
b3X X - sb.sw by4by5by6by7by0by1by2by3
b4 X - sdw by3by2by1by0by7by6by5by4
b5X X - sb.sdw by2by3by0by1by6by7by4by5
b6 X X - sw.sdw by1by0by3by2by5by4by7by6
b7X X X lsb sb.sw.sdw by0by1by2by3by4by5by6by7
*64bits(onde"by0"é"lsb"e"b7"é"msb")Ouseja,"b0"nãorealizanenhumaoperaçãodepermutanosbytesdedados, mantendo o ordenamento de bytes original recebido doequipamento, equivalente a não selecionar nenhuma opção depermutanaabaOperationsdaantigaconfiguraçãonumérica.Já"b1"realizaapermutadosbytes,doisadois,ouseja,aoreceberum
Word(inteirosemsinalde16bits)comovaloremhexadecimal0102h,o valor que é retornado ao Tag é 0201h, com os bytes trocados.EquivaleàantigaopçãoSwapBytes.Já o código "b2" realiza a permuta deWords, ou seja, de duplas debytes, dois a dois, o que obviamente só afeta dados de 32 bits oumaiores.TemomesmoefeitodeselecionaraopçãoSwapWords naconfiguraçãonumérica.Comoexemplo,seforrecebidodoequipamentoo valor 01020304h, o valor utilizado para os Tags da aplicação é03040102h.Já se for usado o código "b3", tem-se a troca de bytes e Words,equivalenteàsantigasopçõesSwapByteseSwapWordshabilitadassimultaneamente.Nestecaso,ovalor01020304hsetorna04030201h.Damesmaforma,ocódigo"b4"realizaatrocadeDWordsentresiemvalores de 64 bits, como a antiga opção Swap DWords daconfiguração numérica, ou seja, o valor 1122334455667788h éinterpretado como 5566778811223344h. E assim por diante para osdemaiscódigos.Asduasúltimascolunasdatabelaespecificamapelidosoualiasesqueo usuário pode usar para facilitar a legibilidade, ou seja, ao invés deusarocódigo "b0",podeserutilizado "msb".Ao invésdocódigo "b6",pode-seutilizaroapelido"sw.sdw",eassimpordiante.
ComoSelecionaraOpçãodeOrdenamentoCorreta?Emmuitos casos a documentação do equipamento especifica qual oordenamento utilizado, ou como configurá-lo (há equipamentos quepermitemestaconfiguração).Nos casos em que a documentação é omissa, deve-se contatar osuportedofabricante.Casonãosejapossívelobter-seinformaçõesconfiáveis,deve-setestarempiricamente, analisando os valores retornados, em hexadecimal,comparando com os valores esperados e observando se existeminversõesdeordenamentoquepossamexplicarasdiferenças.Podemocorrerbasicamentetrêssituações:1. CasooequipamentoforneçadadosusandooordenamentodebytespadrãodoprotocoloModbus(bigendianouMotorola),comosbytesmais significativos vindo antes, deve-se omitir este parâmetro, oudefini-locomo"b0".Estaéasituaçãomaiscomum.
3. Nocasomenos comum, há equipamentos queusamordenamentosde bytes diferentes para tamanhos de dados diferentes, fornecendoporexemploobytemaissignificativodecadaWordprimeiro,porémoWord menos significativo de cada DWord primeiro. Portanto, épreciso avaliar em qual caso cada opção de permuta precisa serhabilitada,demaneiraaconverterovalorretornadopeloequipamentoparaoformatobigendianpadrãodoprotocolo.
NOTAAsopçõesdepermutacitadasnãotêmefeitoparatiposdedadosBitoutiposcom tamanhodeoitobits (Byte,Chare Int8).Apermutaocorredentrodecada tipodedado,ouseja,aopçãoSwapWordsnão temefeito para tipos de dados de 16 bits, assim como a opção SwapDWords não tem efeito para tipos de dados de 32 bits. Os tipos de
dadosBCDtambémnãopermitemoperaçõesdepermuta.
O tópicoDúvidasMaisFrequentes lista alguns casos conhecidos, jáobservadosnosatendimentosdesuporte.Exemplos:1. LeituraouescritadeHoldingRegisters(funções03e16)deendereço1500doequipamentocom Id 5, interpretadocomoumDouble seminversãodebytes,comSlaveIdnocampoItem:a. Dispositivo:""(Stringvazia)b. Item:"5:hr1500.d",ou"5:hr1500.double"ouainda"5:hr1500.d.b0"
2. LeituraouescritadeHoldingRegisters(funções03e16)deendereço1500doequipamentocomId5,interpretadocomoumDoublecomobytemenossignificativodecadaWordvindoantesecomSlaveIdnocampoItem:a. Dispositivo:""(Stringvazia)b. Item: "5:hr1500.d.b1" ou "5:hr1500.double.b1", ou ainda"5:hr1500.double.sb"
3. LeituraouescritadeHoldingRegisters(funções03e16)deendereço1500doequipamentocom Id 5, interpretadocomoumDouble comosbytesmenossignificativosvindoantes(littleendian)ecomSlaveIdnocampoItem:a. Dispositivo:""(Stringvazia)b. Item:"5:hr1500.d.b7"ououtrasvariações,como"5:hr1500.d.lsb"e"5:hr1500.d.sb.sw.sdw"
TagsEspeciaisdoDriverAlém dos Tags já descritos, pode-se configurar Tags Especiais doDriver usando Strings, descritos em mais detalhes em tópicosespecíficos(cliquenoitemdesejadoparamaisinformações).
AconfiguraçãonuméricaérealizadaatravésdosparâmetrosNeBdosTagsdeComunicação,nãoutilizandooscamposDispositivoe ItemdisponíveisnoElipseE3ePower,quedevemserdeixadosembranco.EstemétododeconfiguraçãodeveserutilizadonoElipseSCADAeemaplicações legadas. Em aplicações utilizando produtos mais novos,comooElipseE3,ElipsePowerouElipseOPCServer,recomenda-seutilizaraconfiguraçãoporStrings.OsTagsdeComunicaçãoconfiguradosnumericamentereferenciamasoperaçõespreviamenteconfiguradasnajaneladeconfiguração.
OperaçõesConforme já explicado no tópico Aba Operations, o Driver possuisuporte a outros tipos de dados além dos tipos de dados nativos doprotocolo.Porestemotivo,foicriadooconceitodeOperaçãonoDriver.NasoperaçõesutilizandoasfunçõesModbusqueleemeescrevembits,comoas funções1,5 e15 do protocolo, o Driver mapeia sempre osvalores binários de cada bit para os Elementos de Bloco, onde cadaElementorepresentaovalordeumbitespecífico.As operações com tipos de dados de oito bits, comoo tipo de dadosByte, implicam sempre, obviamente, na leitura de pelo menos doisbytes(umregistroModbusde16bits).Paraprevenirsurpresasparaousuário,oDriverexigequeaescritadedadosdeoitobitssejarealizadasempreaospares,ouseja,comoescritasdeBlocoscomnúmeropardeElementos. As operações devem ser referenciadas através dosparâmetros N2/B2 dos Tags de Comunicação, conforme descrito aseguir.
ParâmetrosdeConfiguraçãodosTagsdeComunicaçãoAconfiguraçãoaseguirseaplicatantoaosparâmetrosNdosTagsdeComunicação quanto aos parâmetros B dos Tags Bloco deComunicação.
N1/B1:Endereçodoequipamentoescravo(CLP)narede(SlaveId).Esteendereçoéusadoem redesseriaisepodevariarde1a247.Pode-seaindaconfiguraresteparâmetrocomovalor0(zero).Comisto,esteTagtrabalhaemmodoBroadcast,enviandoamensagemparatodososequipamentosescravos(CLP)queestiveremnarede.EmEthernet(modoModbusTCP),oendereçogeralmenteutilizadoé apenas o endereço IP, porém oSlave Id pode ainda ser usadoquandooendereçoIPreferenciaumgateway ligadoaumarededeequipamentos (geralmente uma rede RS485, com Modbus RTU,usando gateway capaz de realizar a conversão deModbus TCPparaModbusRTU).
NOTANomodoBroadcast comN1 igual a 0 (zero) não é possível realizarleituras,apenasescritas.Nestemodo todososequipamentosna redesãoendereçados,recebendoovalorescritoenãoretornandoqualquerresposta,deformaaevitarconflitosnarede.
N2/B2: Código da operação. Referencia uma operação adicionadanajaneladeconfiguraçõesdoDriver(vejaotópicoAbaOperations).N3/B3:Parâmetroadicional.Esteparâmetroemgeralnãoéusadoepodeserdeixadoem0(zero).Sóéusadoemquatrosituações:
Funções Modbus 20 e 21: No caso de operações que utilizemestasfunçõesdeacessoaarquivo(funções20e21),oparâmetroN3/B3especificaoarquivoaseracessado.
Use BitMask: Para Tags referenciando operações com a opçãoUseBitMask habilitada, oparâmetroN3/B3 especifica o númerodobitaseracessado(vejaotópicoAbaOperations).
Tipos de Dados Definidos pelo Usuário: Para operações queusemestruturas,seoparâmetroB3formaiorque0(zero),defineoretorno de umarray de blocos reportado a eventos, pormeio deumasequênciadeeventosOnReaddoTag(vejaotópicoTiposdeDadosDefinidospeloUsuário).FunçãoEspecialGenSOE:Emoperaçõesqueutilizema funçãoespecialdeleituraGenSOE,oparâmetroN3/B3 indicaotamanhodatabelaassociadanamemóriadoCLPoudispositivoescravo,emnúmeromáximodeeventoscomportados(vejaotópicoAlgoritmodeLeituradeSOEGenéricodaElipseSoftware).
N4/B4: Endereço do registrador, variável ou bit no equipamento oudispositivo escravo (CLP) em que se deseja ler ou escrever,conforme o mapa de registradores do equipamento (verifique omanualdoequipamento).ÉimportanteajustarcorretamenteaopçãoDataAddressModelOffset(vejaotópicoAbaModbus)everificarse a documentação do fabricante não usa offsets utilizados porequipamentosModbusantigos,dachamadaModbusConvention.Tamanho/Índice (somenteTagsBloco): CadaElemento de Blocorepresentaovalordeumdadodetipodefinidonaoperaçãoutilizada(parâmetroN2/B2).Notequeoprotocolosósuporta tiposdedadosBitouWord.Destaforma,seaoperaçãoselecionarotipodedadosDWord(32bits)paracadaElementodeBloco,oDrivernecessitalerdoisregistrosconsecutivosdoequipamento.
TagsEspeciaisAlém dos Tags de Comunicação (Tags que referenciam operações),existem tambémTags especiais para executar funções específicas doDriver. Estes Tags são descritos no tópico Configurando TagsEspeciais.
NotópicoConfigurandoumTagdeComunicação,oendereçamentodos Tags (parâmetros N4/B4 na configuração numérica) é descritocombasenaespecificaçãomaisrecentedoprotocoloModbus(versão1.1b). Entretanto, há equipamentos que ainda utilizam a antigaconvenção de endereçamentos comoffsets conhecida comoModbusConvention, que acrescentaoffsets ao endereço. Este tópico explicacomoendereçarosTagscasoomapaderegistradoresdoequipamentoaindasigaestaconvençãoantiga,origináriadaespecificaçãoinicialdaModicon,nãomaisincluídanaespecificaçãoatual.O endereço fornecido no Tag é enviado no frame de requisição doprotocoloaoequipamento,acrescidoounãodooffsetpadrãode1(um),requerido pelo Modbus Data Model especificado pelo protocolo,conformeconfiguraçãodocampoDataModelOffset naabaModbusdajaneladeconfiguraçõesdoDriver.Alémdesteoffset padrão de 1 (um), definido na normaModbus atual(versão 1.1b), alguns fabricantes utilizam ainda o padrão antigo daModicon, conhecido comoModbus Convention, com um offset quepode ser acrescentado ao endereço, cujo valor depende da funçãoModbus utilizada, ou mais especificamente, de qual espaço deendereçamento (address space) esta função acessava originalmente.Esteoffsetadicionaldeveser ignoradoaodefiniroendereçodosTagsnesteDriver.Maisadiantesão fornecidosalgunsexemplos.A tabelaaseguirlistaosoffsetsutilizadospelopadrãoModbusConvention.
Se o mapa de registradores do equipamento utiliza esta convenção,deve-se seguir este procedimento para determinar os endereços aserem atribuídos aos Tags, no campo Item na configuração porStringsouaosparâmetrosN4ouB4naconfiguraçãonumérica:1. NaabaModbus,selecioneaopçãoDataisaddressedfrom1.2. Subtraiadoendereçomostradonomanual doequipamentoooffsetmostrado na tabela anterior para a funçãoModbus utilizada.DICA:Removaoquintodígitodadireitaparaaesquerda.
Noteque,emequipamentosqueutilizamestaantigaconvenção,pode-se determinar quais funçõesModbusdevemser usadas para acessarcadaregistrooubitatravésdooffsetempregadoemseuendereço.
Apartirdaversão2.00,oDriverModbuspassaacontarcomorecursodePartiçãoAutomáticadeBlocos.Comesterecurso,oDriverpassaa gerenciar sozinho a divisão de blocos maiores que os limites doprotocolo. Assim, o usuário não precisa se preocupar em exceder olimitemáximodetamanhodeblocos,poisopróprioDriverseencarregade dividir os blocos nos tamanhos corretos no momento dacomunicação com o equipamento, caso algum Tag Bloco exceda otamanhomáximopermitido.Apartirdaversão2.01,oDriverpassoutambémasuportarLeituraporSuperblocos.Comesterecursohabilitado,ousuárionãoprecisamaisagruparvariáveisemTagsBlocoobjetivandomelhoriadedesempenho,sendo possível usar apenas Tags sem quaisquer prejuízos deperformance. E como o algoritmo de Superblocos já leva emconsideração o tamanho máximo de blocos permitido pelo protocolo,quandoesterecursoforutilizadooDrivertambémnãonecessitausarorecursodePartiçãoAutomática.Nos casos em que, devido à peculiaridades do equipamento (veja otópico Leitura por Superblocos), não seja possível habilitar apropriedade EnableReadGrouping no E3 ou Elipse Power(propriedadequehabilitaosSuperblocos),oucasoseestejautilizandoo antigo Elipse SCADA, que não possui o recurso de agrupamento(Superblocos), é preciso contar com aPartiçãoAutomática deBlocosparaquenãosejanecessárioobservaroslimitesdoprotocolo.
IMPORTANTETantooagrupamentodosSuperblocosnoE3enoElipsePowercomoa Partição Automática de Blocos do Driver requerem que oequipamentosuporteoslimitesestabelecidospeloModbuspadrão(vejaotópicoLimiteMáximoparaoTamanhodosBlocosSuportadopeloProtocolo). Há equipamentos, entretanto, que suportam limitesinferiores. Para que a divisão automática de blocos e o próprioagrupamentodosSuperblocosfuncionenestescasos,apartirdaversão2.03 o Driver permite personalizar o limite máximo suportado para o
PDU (Protocol Data Unit). Para isto, na janela de configurações doDriver, abaModbus, habilite a opção Customize Max. PDU Size econfigure o tamanho máximo de bytes suportado para o PDU peloequipamento.Casooequipamentopossualimitesdiferentesparacadafunção,podesernecessáriorealizaroagrupamentomanualmente(vejaotópicoLeituraporSuperblocos).
O artigoKB-23112 doElipse Knowledgebase apresenta um resumodasquestõesrelativasaoagrupamentodeTagsedimensionamentodeblocosnoDriverModbus,discutidasnesteeemoutrostópicos(vejaostópicosLeituraporSuperblocoseDicasdeOtimização).
Apartirdaversão2.01,oDriverpassaasuportarorecursodeLeiturapor Superblocos. Este recurso é suportado pelo E3 e pelo ElipsePower, podendo ser habilitado através da propriedadeEnableReadGrouping do objeto Driver no Organizer. Com estapropriedadeemVerdadeiro,ousuárionãoprecisasepreocuparcomodimensionamentodosblocos.Com este recurso, torna-se possível (e em geral recomendável) criaraplicações contendo apenas Tags simples (Tags PLC no ElipseSCADA) sem prejuízo de desempenho, pois a otimização doagrupamento na leitura é feita automaticamente no momento dacomunicação.A figura a seguirmostra a configuração da propriedadeEnableReadGroupingnoE3ouElipsePower.
Power quando a opção EnableReadGrouping estiver configuradacomo Falso. Em ambos os casos, o Driver conta com a PartiçãoAutomática de Blocos, podendo dividir blocos com tamanhossuperioresaolimitedoprotocoloemblocosmenoresnomomentodacomunicação.Nestescasos,ousuárioprecisalevaremconsideraçãooagrupamentoaodefinirosTagsdaaplicação,comoévistomaisadiantenestetópico.
NOTASOagrupamentoautomáticoérealizadocombasenosTagsemadvisedaaplicação.SemprequenovosTagsentrarememadviseousaíremde advise, o algoritmo de Superblocos redefine o agrupamento, ouseja,osSuperblocosaseremlidosdeformaautomática,emtempodeexecução,incluindoapenasosTagsqueestiverememadviseSomente os Tags que utilizarem configuração numérica podem seragrupadas pelo serviço de Superblocos. Os Tags que utilizemconfiguração por Strings não são agrupados pelo serviço deSuperblocos
IMPORTANTETanto o agrupamento dos Superblocos no E3 como a PartiçãoAutomáticadeBlocosdoDriverrequeremqueoequipamentosuporteos limites estabelecidos pelo Modbus padrão (veja o tópico LimiteMáximoparaoTamanhodosBlocosSuportadopeloProtocolo).Háequipamentos, entretanto, que suportam limites inferiores.Para queadivisãoautomáticadeblocoseopróprioagrupamentodosSuperblocosfuncione nestes casos, a partir da versão 2.03, o Driver permitepersonalizar o limite máximo suportado para o PDU (Protocol DataUnit). Para isto, na janela de configurações do Driver, abaModbus,habilite a opção Customize Max. PDU Size e configure o tamanhomáximo de bytes suportado para o PDU pelo equipamento. Caso oequipamento suporte limites diferentes para cada tipo de função, énecessário realizar o agrupamento manual (veja mais adiante nestetópico),observandooslimitesdescritosnadocumentaçãodofabricante.
Identificação de Equipamentos que não SuportamAgrupamentoAutomático(Superblocos)O algoritmo de Superblocos leva em conta os limites e espaços deendereçamentodefinidospeloprotocoloModbuspadrão.Noscasosdeequipamentos que implementem o protocolo Modbus com pequenasvariações,podemsernecessáriasconfiguraçõesavançadasadicionaisparaquesejapossívelutilizarorecursodeSuperblocos,casoseuusosemostreviável.Nestescasos,énecessáriodesabilitaroagrupamentoautomático (propriedade EnableReadGrouping configurada paraFalso), realizando o agrupamento de forma manual. As seguintescondições podem tornar impossível a utilização de Superblocos, ourequererconfiguraçõesavançadasadicionais:
Equipamentos que definem limites máximos de tamanho de blocoinferioresaolimitepadrãodoprotocolo(limitede253bytesparaoPDU).Solução:AjusteaopçãoCustomizeMax.PDUSize,naabaModbus
NOTAHá equipamentos cujos limites de PDU variam conforme a funçãoModbus utilizada. Nesses casos, se for necessário usar funções comlimites diferentes, também é preciso desabilitar os Superblocos(propriedade EnableReadGrouping configurada para Falso),agrupandoosTagsmanualmente(vejamaisadiantenestetópico).
Equipamentos com descontinuidades (intervalos de endereços nãodefinidos intercalados com intervalos válidos) no mapa deregistradores. Solução: Uma vez que é impossível informar aoalgoritmodeSuperblocosquais intervalosnãopodemser inseridosemblocos,emgeralnãoépossívelusarSuperblocos.DesabiliteosSuperblocos (propriedade EnableReadGrouping configurada paraFalso)eagrupeosTagsmanualmente
Equipamentos que não suportam a leitura em blocos. Solução:Desabilite os Superblocos (propriedade EnableReadGrouping
configuradaparaFalso)edefinaTagssimples
Equipamentosquesópermitemadefiniçãodeblocosemendereçospré-determinados e com tamanhos fixos. Solução: Desabilite osSuperblocos (propriedade EnableReadGrouping configurada paraFalso) e defina Tags simples (Tags PLC no Elipse SCADA) ouBlocosdeacordocomoespecificadoparaoequipamento
AgrupamentoManualEm geral, quanto maior for o agrupamento das variáveis em blocos,menoréonúmeroderequisiçõesdeleituranecessáriasparacompletarociclodevarredura(scan)dosTagsdaaplicação,aumentandoassimavelocidade de atualização dos Tags. Por este motivo, se não forpossível usar o agrupamento automático (Superblocos), é preferívelcriar Tags Bloco contendo o maior número possível de variáveis aoinvésdecriarTagssimples(TagsPLCnoElipseSCADA).Noteque,devidoaorecursodePartiçãoAutomáticadeBlocos,nãoénecessário cuidar para que os limites máximos do protocolo sejamexcedidos, desde que o equipamento suporte os limites máximospadrão do protocolo. Se o equipamento não suportar estes limites,mas definir limites fixos, válidos para todas as funções Modbussuportadas,deve-seconfiguraraopçãoCustomizeMax.PDUSize,naabaModbus.Caso o equipamento suporte limites diferentes para cada funçãosuportada, pode ser inviável contar também com o particionamentoautomático.Nestescasos,odesenvolvedordaaplicaçãoprecisa levarem conta os limites do equipamento, e definir seus blocos cuidandopararespeitaresteslimites.Paraoagrupamentomanual,ousodeTiposdeDadosDefinidospeloUsuário pode ampliar as possibilidades de agrupamento, por permitirreunir em um mesmo Tag Bloco variáveis do mesmo espaço deendereçamento,ouseja,umamesmafunçãoModbus,porémcomtiposdedadosdiferentes(aestruturadefinidapodeterelementoscomtiposdedadosdiversos).Paramaisdicas,consulteotópicoDicasdeOtimização.OartigoKB-23112doElipseKnowledgebaseapresentaumresumodasquestõesrelativas ao agrupamento de Tags e dimensionamento de blocos noDriverModbus,discutidasnesteeemoutrostópicos.
AlémdosTagsdeComunicação,esteDriversuporta tambémalgunsTagsEspeciais que permitem à aplicação acionar recursos que nãoestão relacionadosà leituraeescritadedados.AocontráriodosTagsde Comunicação, os Tags Especiais não referenciam operações doDriver na configuração numérica. Os tópicos a seguir detalham osTagsEspeciaissuportados:
Tag Especial utilizado para descartar todos os dados pendentes dacomunicação até encontrar um time-out, indicando que não há maisdadosaseremrecebidos.EstemesmoserviçopodeserconfiguradonaabaModbus,paraocorrersemprequealgumerrodecomunicação fordetectado.ComesteTag,entretanto, é possível executar o serviço a qualquer momento pelaaplicação.EsteTagEspecial éexecutadoatravésdeumcomandodeescritadeTag.Ovaloremsi,escritonoTag,éignorado.
Conforme jámencionadonesteManual,osTagsEspeciaispara leituradocódigodaúltimaexceçãosãoutilizadospara leroúltimocódigodeexceçãoenviadoporumdeterminadoequipamentoescravo.Tais códigos são armazenados automaticamente pelo Driver emregistradores internos,quepodemseracessadospormeiodesteTag.Além disto, a cada comunicação bem sucedida com determinadoequipamento onde nenhuma exceção for retornada, o Driver zeraautomaticamenteoregistradorassociado.
CódigosdeExceçãoOscódigosdeexceçãosãousadospelodispositivoescravo(CLP)parainformar uma falha ao executar uma determinada função. Osdispositivosouequipamentosescravosnãoretornamexceçõesnocasode falhas de comunicação, situação em que estes simplesmente nãorespondem.Oscódigosdeexceçãosãoretornadospelosescravosemsituações em que a solicitação do mestre (no caso do Driver) foirecebida com sucesso, porém não pôde ser executada por algummotivo, como por exemplo a tentativa de ler ou escrever em umregistrador inexistente. Neste caso, o código de exceção retornadoindicaotipodeerroocorrido,ouseja,omotivopeloqualarequisiçãodoDriver,emborarecebidacorretamente,nãopôdeserexecutada.AespecificaçãodoprotocoloModbusdefinenovecódigosdeexceção.AlistadeexceçõespadrãodoprotocolopodeserconsultadanotópicoListadeExceçõesPadrãodoProtocolo.Alémdestescódigos,algunsfabricantes definem códigos adicionais, específicos de seusequipamentos.Taiscódigosdevemestardocumentadosnomanualdoequipamento. Caso não estejam documentados, deve-se consultar osuportedofabricante.
Elemento 1 (índice 0): Código da exceção retornada peloequipamento (veja o tópico Lista de Exceções Padrão doProtocolo)Elemento 2 (índice 1): ParâmetroN2/B2 do Tag de Comunicaçãoquegerouaexceção
Elemento 3 (índice 2): ParâmetroN3/B3 do Tag de Comunicaçãoquegerouaexceção
Elemento 4 (índice 3): ParâmetroN4/B4 do Tag de Comunicaçãoquegerouaexceção
UtilizaçãodoTagEspecialAutilizaçãomaiscomumdesteTagduranteoscannormaldosTagsdefunções é através de um eventoOnRead do Tag de exceção. Nestecaso, o script deve antes de tudo rejeitar valores nulos, pois estesindicamonãorecebimentodeexceções.Emseguida,pode-setrataraexceçãoexecutandoosprocedimentosadequados,conformeocódigorecebido.Éumaboapráticazeraroregistradordeexceçãoaosairdoscript,deformaaindicarqueaexceçãojáfoitratada.Vejaoexemploaseguir,escritoemElipseBasic(ElipseSCADA)://EventoOnReaddoTagTagExc//Obs.:Paraesteexemplo,considereTagExc//comleituraeescritaautomáticahabilitadasIfTagExc==0ReturnEndIfIfTagExc==1...//Trataaexceção1ElseIfTagExc==2...//Trataaexceção2Else...//TrataasdemaisexceçõesEndIfTagExc=0//Zeraoregistradordeexceções
A seguir outro exemplo, escrito em VBScript (Elipse E3 e ElipsePower):'EventoOnReaddoTagTagExc'Obs.:Paraesteexemplo,considereTagExc'comleituraeescritaautomáticahabilitadasSubTagExc_OnRead()IfValue=0ThenExitSub
Já nas operações de escrita por script, em que seja preciso testar oretorno de exceções logo após o envio do comando, deve-seprimeiramente zerar o registrador de exceções. Isto evita que umaeventualexceçãoprovocadapelocomandodeescritasejaconfundidacom outra pré-existente. Executa-se então a operação de escrita etesta-se o valor do Tag Especial, que deve retornar 0 (zero) casonenhumaexceçãotenhasidorecebida.Casoretorneumvalordiferentede0(zero),pode-seentãotratarapropriadamenteaexceçãorecebida.Vejaoexemploaseguir,escritoemElipseBasic(ElipseSCADA)://Obs:Paraesteexemplo,considereTagExc//comleituraeescritaautomáticahabilitadas//eTagValcomescritaautomáticadesabilitadaTagExc=0//ZeraoregistradordeexceçõesTagVal.WriteEx(10)//Escreveovalor10IfTagExc<>0...//TrataaexceçãoEndIf
A seguir outro exemplo, escrito em VBScript (Elipse E3 e ElipsePower):
NOTAEste Tag Especial retorna, além do código da exceção (retornado noElemento zero), também os parâmetros do Tag cuja comunicaçãoprovocouaexceção.Casoestas informaçõesnão sejamnecessárias,pode-seperfeitamenteleromesmoregistroatravésdeumTagsimples(Tag PLC noElipseSCADA), sem necessidade de usar Tags Bloco.Nestecaso,osprocedimentosrecomendadospermanecemosmesmos.
EsteDriverpermitedefinir,nasoperações,funçõesespeciaisdeleiturapara a coleta de memória de massa de dispositivos escravos. Taisfunções não existem no protocolo, e implicam no uso de algoritmosespecíficos de leitura de eventos dos equipamentos, que podemeventualmente ler ou escrever em diversos registros, utilizando-se deumaoumaisfunçõesdoprotocolo.
LeituraporCallbacksApartirdaversão2.08,esteDriverpassoua implementara leituraporcallbacks,recursodisponívelnoE3(apartirdaversão3.0)enoElipsePower, queotimizaodesempenhode leiturasdememóriademassa.Comesterecursodisponível,aaplicaçãodelegaaoDriveravarredurados Tags de leitura de eventos de memória de massa. Em outraspalavras, a aplicação não precisa mais interrogar constantemente oDriver a cada período de varredura.Ao invés disto, oDriver realiza averificaçãodenovoseventosnoequipamentoecoletaeventossempreque estiverem disponíveis, tomando a iniciativa de enviá-los àaplicação.
FunçõesEspeciaisparaLeituradeMemóriadeMassaNa atual versão do Driver, as seguintes funções de leitura desequênciasdeeventos(SOE)sãosuportadas:
GESOE:RealizaacoletadeeventosdeCLPsGEPACRX7.Paramais informações,consulteo tópicoLeituradeBufferdeEventosemControladoresGEPACRX7SPSOE:Coletaeventosde relésSchneiderElectricSEPAMséries20, 40 e 80. Paramais informações, consulte o tópicoLeitura deEventosdeRelésSchneiderElectricSEPAM20,40e80GenSOE: Esta função usa o algoritmo genérico criado pelaElipseSoftware,oElipseModbusSOE,quepodeserusadopelamaioriados controladores programáveis. Exige a criação de procedimentoanálogo na programação do CLP (ladder). Para mais informações,consulteotópicoAlgoritmodeLeituradeSOEGenéricodaElipseSoftware65 03: Função especial para a leitura de eventos de memória demassa de medidores ABB MGE 144. Para mais informações,consulteo tópicoLeituradeRegistrosdaMemóriadeMassadeMedidoresABBMGE144
ConfiguraçãoNuméricaPara a leitura do buffer de eventos do GE PAC RX7 usando aconfiguraçãonumérica,deveserdefinida,najaneladeconfiguraçãodoDriver, uma operação que use como função de leitura a funçãoespecialGESOE.OtipodedadosdeveserdefinidocomoGE_events.
B1:SlaveID
B2:CódigodaoperaçãodefinidacomafunçãoGESOE
B3:0(zero)
B4:EndereçobasedapilhadeeventosnoCLPAcadascannesteTag,oDriververificaseexistemeventosnobufferdocontrolador.Sehouvereventos,oDriveriniciaumathreaddeleituradeeventos, que é executada em segundo plano, não bloqueando avarredura dos demais Tags. Após o término da leitura do buffer peloDriver, este Tag reportado por eventos retorna o conjunto de eventoslidosnavarredura.OseventosretornadosgeramumasucessãodeeventosOnReadnesteTag.Paracadaeventolido,oE3atualizaoscamposdoTag(valoresdeElementose timestamp)comosvaloresdeumdeterminadoevento,eexecutaumavezoeventoOnRead.Oscriptdoeventoexecutadodeveserdefinidopelousuário,sendogeralmenteusadoparainserirosdadosdoTagnoHistórico.Cadaevento é representado por umBloco de doisElementos, comocampoTimestamplidodoequipamento.OscamposdorespectivoTagBlocodeleiturasãomostradosnatabelaaseguir.
Paramais informações sobre Tags reportados por evento, consulte o
tópicoespecíficonoManualdoUsuáriodoE3.
IMPORTANTEAolereventosdememóriademassaemTagsreportadosaeventosnoE3, desabilite a banda morta do Tag (propriedade EnableDeadBandconfigurada para Falso) e também do objeto Histórico associado(propriedadeDeadBand igual a zero), paraevitaraperdadeeventoscomvalorespróximos.Tambéméimportantedesabilitarohistóricoporvarredura (no E3, propriedade ScanTime igual a zero). Com isto,garante-sequenovoseventossósãoarmazenadosatravésdométodoWriteRecord, executado no evento OnRead do Tag, evitando aduplicaçãodeeventos.
TagsReportadosporEventosporPontoApartirdaversão2.5doDriverépossívelutilizarumnovoTagparaodownloaddeeventosdeumpontoespecífico.Este Tag funciona de forma idêntica ao anterior, exceto pelo fato deretornarapenasoseventosdeumpontoespecífico.Aocontráriodoanterior,ovalorretornadopossuiapenasumElementocomovalordostatusdoponto,de formaquepode-seutilizarapenasumTag.EsteTagdeveserconfiguradodaseguinteforma:
ConfiguraçãoporStringsDispositivo:"<SlaveId>:"
Item: "gesoe<200 + Índice do ponto>.<endereço base da pilha deeventos>"
TagsdeTempoRealEstes Tags retornam o evento mais recente já lido para um pontoespecífico. Estes eventos são armazenados na memória interna doDriver a cada leitura de eventos do CLP, com seus respectivostimestamps lidos do equipamento. Este Tag utiliza os seguintesparâmetros:
ConfiguraçãoporStringsDispositivo:"<SlaveId>:"
Item: "gesoe<100 + Índice do Ponto>.<endereço base da pilha deeventos>"
Paraa leiturade relésSEPAM,omodelodeoffsetdeendereçamentodeve ser configurado como Data is addressed from 0, na abaModbus.AleituradeeventosérealizadacomautilizaçãodedoistiposbásicosdeTags:
Tag de coleta de todos os eventos da tabela (obrigatório):Realizaacoletadetodososeventosdatabeladeumadeterminadazonanamemóriadoequipamento.EsteTag,alémderetornartodososeventoslidosàaplicaçãoreportadosaevento,aindaacumulaoseventos lidos no buffer interno do Driver, para serem retiradosatravésde leiturasnosTagsde leituradeeventoúnico,descritosaseguir
Tag de leitura de evento único (opcional): Retorna eventosrecebidos do relé especificado, com determinado endereço, tipo ezona.EsteTagnãorealizaaleituradiretadoequipamento,massimretornaoseventosdobuffer internodoDriver,alimentadodurantealeituradoTagdecoletadetodososeventos,descritoanteriormente,ouseja,paraquesejapossívellereventoscomestetipodeTag,umTagdotipoColetadetodososeventosdevejáestarpreviamenteativo,comsuavarredura(scan)habilitada.EsteTagéútilquandoousuárioprecisaobtereventosdeumtipoedeumafonteespecíficas(relé, zona, endereço e tipo). Um exemplo de utilização é aassociação a objetos de Tela, mostrando o status de determinadoendereço de evento. Embora este Tag retorne as mesmasinformaçõesjáretornadaspeloTaganterior,seuusopoupaousuáriodeterqueimplementarfiltros,cláusulasSelectCaseemVBScriptoualgum outro método para separar os diversos tipos de eventosretornadospeloTagdecoletadetodososeventosporscriptnaaplicação
A aplicação deve necessariamente implementar um Tag de coleta detodososeventosparacada tabelaouzonadeeventosasercoletadaemcadarelé,poisédurantealeituradesteTagqueoseventosdefato
são coletados do equipamento. A seguir é descrita a configuraçãodestesdoisTags.
Tag de Coleta de Todos os Eventos da Tabela (Zona deEventos)EsteTagé reportadoa eventos.Suaaplicação típica é a inserçãodeeventos em um objeto Histórico associado, através do métodoWriteRecord do Histórico, executado no evento OnRead do Tag. Acadaleitura,ouseja,acadaperíododevarreduradoTag,oDriverpodecoletar até quatro novos eventos do equipamento. Este é o númeromáximodeeventos que cada zonadeeventosdo relé dispõea cadarequisiçãodeleitura.Como é durante a leitura deste Tag que os eventos são de fatocoletados do equipamento, mesmo que seus dados não sejamutilizados diretamente, ou seja, mesmo que não seja precisoarmazenar todos os eventos coletados em Histórico, suaimplementação é obrigatória para que os Tags de evento únicopossamretornardados.OTagdecoletadetodososeventosdeveserconfigurado como um Tag Bloco com três Elementos, da seguinteforma:
ConfiguraçãoporStringsDispositivo:"<SlaveId>:"
Item:"spsoe<ZonaouTabeladeEventos(1ou2)>"
Exemplo:ParaaleituradaZona1doEscravo1,Dispositivoéiguala"1:"e Itemé iguala "spsoe1".Alternativamente,Dispositivopodeserigual a "" (String vazia) e Item igual a "1:spsoe1" (veja o tópicoConfiguraçãoporStrings).
ConfiguraçãoNuméricaPara usar a configuração numérica deve ser definida, na abaOperations, umaoperaçãoqueusecomo funçãode leituraa funçãoespecialSPSOE.O tipo de dados é definido automaticamente comoSP_events,assimqueafunçãodeleituraSPSOEéselecionada.
B1:1000+Endereçodoescravo(relé)narede(entre1e247)
B2: Código da operação configurada com a função de leituraespecialSPSOEB3:0(zero)
AolereventosdememóriademassaemTagsreportadosaeventosnoE3, desabilite a banda morta do Tag (propriedade EnableDeadBandconfigurada para Falso) e também no objeto Histórico associado(propriedadeDeadBand igual a zero), paraevitaraperdadeeventoscomvalorespróximos.Tambéméimportantedesabilitarohistóricoporvarredura (no E3, propriedade ScanTime igual a zero). Com isto,garante-sequenovoseventossósãoarmazenadosatravésdométodoWriteRecord, executado no evento OnRead do Tag, evitando aduplicaçãodeeventos.
TagdeLeituradeEventoÚnicoEsteTagé tambémreportadoaeventos,sendopossível tambémusarseueventoOnReadparaarmazenamentoemHistórico.Notequenadaimpede,entretanto,queeleseja tratadocomoumTagnormal (Tagdetempo real), caso só interesse o seu valor mais recente. Como esteDriver apenas lê um buffer interno, sugere-se definir um tempo devarredurabembaixo,atémenorqueodooutrotipodeTag.OconsumodeCPUdecadavarredurapodeserconsideradodesprezível.Sugere-se a metade do período de varredura do Tag de coleta de todos oseventos.Como já comentado, este Tag é utilizado para obter o status dedeterminado endereço de evento, sem precisar separar ou realizarfiltros nos eventos que chegam pelo Tag anterior, por script ou outromeio.UmaaplicaçãotípicaseriaaassociaçãoaobjetosdeTela.OTagdeleituradeeventoúnico,comojámencionado,nãofazaleiturade eventos do equipamento,mas sim de umbuffer interno doDriver,previamentepreenchidodurantealeituradoTagdecoletadetodososeventos. O Tag retorna apenas um Elemento, reportado a eventos,podendo ser configurado como Tag simples (não precisa ser um TagBloco).ODriveraceitanomáximooitoeventosacumuladosporpontode evento, ou seja, para cada combinação de relé, zona, tipo eendereçodoevento,emseubufferinterno.Seocorreroverflow,ouseja,semaisdeoitoeventosdeummesmopontoforemretornadossemquenenhumTagdeeventoúnicooscolete,oDriverpassaadescartaroseventosmaisantigos.Aconfiguraçãoadequadadotempodevarredurapodeevitaraperdadeeventos.
Item: "ptspsoe<Tipo do evento (0800H por padrão)>.<Event bitaddress+Eventszoneoffset*(vertabelaaseguir)>"
Exemplo:Paraaleituradeeventosdotipo800Hnoendereço1dazona2, Dispositivo deve ser igual a "1:" e Item deve ser igual a"ptspsoe&h800.&h8001".Alternativamente,Dispositivopodeseriguala""eItemiguala"1:ptspsoe&h800.&h8001"(vejaotópicoConfiguraçãoporStrings).
NOTAPara representar valores em formato hexadecimal noElipseE3 e noElipsePower,deve-seusaroprefixo"&H"(porexemplo,&H10=16).NoElipseSCADA, use o sufixo "h" (por exemplo, 10h = 16). NesteManual, entretanto, é usado o sufixo "H" para denotar valores noformatohexadecimal.
Timestamp:ApropriedadeTimestamp representa a data e a horaemqueoeventofoidefatolidodorelé,durantealeituradoTagdeleituradetodososeventosdescritoanteriormente
Paramaioresinformaçõessobreoseventosdorelé,seussignificadoseendereçamento, consulte a documentação do fabricante. Para maisinformações sobre Tags reportados a eventos, veja o tópico TagsReportadosaEventosdoManualdoUsuáriodoE3.
Algoritmo de Leitura de SOEGenéricodaElipseSoftware
TopoAnteriorPróximo
OprotocoloModbusnãodefineummétodopadrãodeleituradeeventosdo equipamento. Por este motivo, é comum fabricantes criarem seusprópriosalgoritmosdeleituradeeventosemequipamentoscomsuporteaoprotocoloModbus.O algoritmo de Sequenciamento de Eventos (SOE, Sequencing ofEvents) genérico desteDriver (ElipseModbusSOE) foi desenvolvidopelaElipseSoftwarecomoobjetivodeproverumaalternativapadrãopara a leitura de eventos de controladores programáveis que nãocontemcomesterecursodeformanativa,desdequeestesatendamaalguns requisitos básicos de espaço de memória e recursos deprogramação, permitindo criar as tabelas e registros de controledescritosaseguir.Este algoritmo permite armazenar e ler eventos de praticamentequalquer controlador programável, de forma otimizada, valendo-se derecursosjáimplementadosevalidadosnoDriverModbus.A leituradeeventosnoDriverModbus segueoprocedimentopadrão,definidopelaElipseSoftware,lendoeventosdetabelasmontadasnamemória do CLP ou de dispositivos escravos pelo seu softwareresidenteouaplicativo(ladder).Para utilizar este algoritmo é preciso definir Tags com a funçãoespecialGenSOEdoDriver,oquepodeserrealizadotantoatravésdaantiga configuração numérica (parâmetros N e B) como pelo novométododeconfiguraçãoporStrings (camposDispositivoe Item).AconfiguraçãodosTagsédescritamaisadiantenotópicoProcedimentodeAquisiçãonaAplicação.Duranteoprocessodeleituradeeventos,afunçãoespecialGenSOEusasemprea funçãoModbus03 (ReadHoldingRegister) para leiturade registros do equipamento. Já para a escrita na atualização dosregistros de controle, é usada por padrão a função16 (WriteMultipleRegisters).Naconfiguraçãonuméricaépossívelselecionarafunçãodeescrita06 (WriteSingleRegisters), parao caso rarodeequipamentos
quenãosuportemafunção16(ocontrárioémaiscomum),atravésdocampoWritedaoperação,naabaOperations.O software residente do CLP (ladder ou equivalente) deve manteratualizadosos registradoresdecontroleque fornecem informaçõesaoDriver, como o número de eventos disponíveis para a leitura e oendereçodoúltimoregistroaler.O equipamento pode manter mais de uma tabela de eventos, emdiferentesendereçosdememória,contendo tiposdedadosdiferentes.Cada tabeladeveserprecedidapelosseus respectivos registradoresdecontrole,emendereçosadjacentes.Atabelaemsiéconstituídaporumbuffercircularemendereçoscontíguos,acumulandooseventosoudados a serem coletados pelo Driver a cada procedimento de coleta(downloaddeeventos).Ousuáriopodedefinirformatosdistintosdedados(eventos)paracadauma das tabelas definidas, os quais são geralmente definidos comouma estrutura de dados, podendo conter o campo de estampa detempodoevento(timestamp).OseventospodemtambémserdefinidosusandoumtipodedadosnativodoDriver.Nestecaso,nãoépossíveldefinirumcampoTimestampnoCLP(otimestampvemcomadatadaleitura),eoeventotemsomenteumcampo,podendoserrepresentadoporumTagsimples(TagPLCnoElipseSCADA).
NOTAOalgoritmodeSOEsempreusaafunção03(ReadHoldingRegisters)doprotocoloModbusparaaleituraderegistrosdoequipamento.Paraaescrita de registros é usada por padrão a função 16 (Write MultipleRegisters). Também é possível selecionar a função 06 (Write SingleRegister)naconfiguraçãonuméricaapenas,atravésdocampoWritedarespectivaoperação,naabaOperations.
Os tópicos a seguir descrevem de forma detalhada o algoritmo, suaimplementaçãonosoftwaredoCLP(ladder)ecomorealizarsualeiturausandoosTagsdoDriver:
Como já mencionado no tópico Algoritmo de Leitura de SOE Genérico daElipse Software, cada tabela de eventos mantém os eventos em umcircular.Obuffercirculardecada tabelaédefinidopeloseuendereço inicial,ouendereçobase,contíguoaosregistradoresdecontrole,eporseunúmeromáximoderegistros,quedefineseulimitefinal.Atabelaaseguirilustraadisposiçãodoseventosdentrodobuffercirculardeumatabela.
Cada linha da tabela anterior representa um evento armazenado, normalmenterepresentadoporumaestrutura,ouporTiposdeDadosDefinidospeloUsuárioNote que, no exemplo da tabela anterior, o primeiro elemento da estrutura doseventoséotimestamp.Estecampo,cujapresençanãoéobrigatória,equenãonecessariamente precisa aparecer na primeira posição, define a propriedadeTimestamp do Tag, não sendo retornado em seus Elementos (para maisinformações,vejaotópicoTiposdeDadosDefinidospeloUsuário).É possível também definir eventos com tipos de dados nativos do Driverneste caso tem-se apenas um Elemento de dado em cada evento, semtimestamp.Os eventos devem ser inseridos no buffer circular em ordem crescente,retornandoaoendereçobaseapósatingiro limitesuperiordobuffercircular.Osseguintesregistrosdecontroledevemserdefinidosparacadatabela:
Statusdatabela:DevesermantidopeloCLP,indicandoonúmerodeeventosdisponíveisparaaleituranobuffercircular.Deveseratualizadopelodispositivosempre que novos eventos forem adicionados ao buffer circular, ou após aconclusãodacoletadeeventospelaaplicação,oquepodeserdetectadopeloStatusdaaquisiçãoPonteirodegravação:Estevalorindicaoíndice,começandoem0(zero),daposição onde o dispositivo deve inserir o próximo evento. Deve serincrementado pelo dispositivo a cada nova inserção de eventos nocircular,voltandoaoendereçobaseapósalcançaro limitesuperiordoNote que este valor não deve ser fornecido em unidades de registradoresModbus,massimemposiçõesdeeventos,devendoserincrementadoemumaunidade a cada novo evento inserido, independente do número deregistradoresModbusocupadosparacadaeventonobuffercircular.Comisto,o valor máximo permitido para este ponteiro pode ser dado pela fórmulaMaxWritePtr = (Tamanho do buffer circular / Tamanho da estrutura deevento)-1Statusdaaquisição:IndicaonúmeroderegistrosjálidospeloDriveracadaleituraindividualdeeventos.Apóscadaleitura,oDriverescrevenesteregistroo número de registros que conseguiu ler. O aplicativo residente no escravo(ladder) deve então imediatamente subtrair o valor escrito pelo Driver doStatusdatabelaeentãozeraroStatusdaaquisiçãoReservado:Este registrador atualmentenãoéutilizado.Pode ser usadoemfuturasversõesdoDriver,podendoserdeixadoem0(zero)naversãoatual
Conformejámencionado,oendereçobasedobuffercircular,ouseja,oendereçoondeiniciaatabeladeeventos,devesercontíguoaosregistradoresdecontrole.Já os registradores de controle devem estar dispostos também em endereçoscontíguos,naordemapresentadaanteriormente,permitindosua leituraemumaúnicaoperação,ouseja,supondo-sequeoendereçobasedosregistradoresdecontroleparaumadeterminada tabelaseja100, tem-seosseguintesendereçosparaosdemaisregistradores:
Endereçosderegistradores
REGISTRADOR ENDEREÇOStatusdaTabela 100
PonteirodeGravação 101
StatusdaAquisição 102
Reservado 103
EndereçoBasedoBufferCircular 104
No tópico Procedimento de Aquisição no CLP é descrito passo a passo oprocedimento ou algoritmo de aquisição sob o ponto de vista do equipamentoescravo(CLP).Notópicoseguinte,ProcedimentodeAquisiçãonaAplicaçãodiscute-secomoconfiguraraaplicaçãoparaaaquisiçãodoseventosdatabela.
Nestetópicodiscute-seoalgoritmodecoletadeeventossobopontodevista do CLP ou dispositivo escravo. O objetivo é deixar claro aodesenvolvedoroqueéprecisoserimplementadonosoftwareresidentedoCLP(ladder).Odispositivodeveiniciarainserçãodoseventosnosentidocrescente,apartirdoendereçobasedatabela,ouseja,dobuffercircular.Acadanovoevento inserido,oPonteirodeGravaçãodeveser incrementado,passandoaapontarparaapróximoposiçãodisponíveldobuffer.ODriverrealizaaleituradoeventomaisantigoparaomaisrecente.OendereçodoiníciodaleituraécalculadopeloDriveratravésdovalordoPonteirodeGravaçãoedoStatusdaTabela.Seonúmerodeeventosdisponíveisformaiorqueomáximopermitidoem um único frame de comunicação do protocolo, o Driver realizamúltiplasleiturasembloco,atualizandoapósaconclusãodoprocessoovalordoStatusdaAquisiçãocomonúmerototaldeeventoslidos.
NOTACasooequipamentonãorespeiteo limitepadrãode253bytesparaoPDU,éprecisoconfiguraraopçãoCustomizeMax.PDUSize,naabaModbus, de acordo com os limites suportados, que devem estardescritosnadocumentaçãodofabricante.
Ao detectar um valor não nulo escrito pelo Driver no Status daAquisição, o aplicativo do dispositivo ou CLP deve imediatamentesubtrairovalordoStatusdaAquisiçãodovalordoStatusdaTabelaeem seguida zerar o Status da Aquisição. Com o Status da Aquisiçãonovamente zerado, o Driver pode iniciar nova aquisição a qualquermomento.O CLP pode inserir novos eventos na tabela durante o processo deaquisiçãopeloCLP,desdequenãoocorraoverflowdobuffercircular,ou
seja, desde que o ponteiro de escrita não ultrapasse o de leitura,incrementandooStatusdaTabela.Oprocedimentodecoletaoudownloaddeeventoséconcluídoquandoo Status da Tabela for zerado. Os eventos coletados são entãodisponibilizados à aplicação por meio de Tags reportados a evento,procedimentovistonotópicoaseguir.A seguir é apresentado um pequeno fluxograma, em formato deDiagramadeAtividadeUML, com sugestão de implementação para alógica do CLP. Note que são possíveis algumas variações, como porexemplo descartar o evento mais antigo em caso de overflow, quepodemseravaliadaspelodesenvolvedor,dependendodocontexto.
DiagramadeAtividadeUML(CLP)
EstampadeTempoConforme jámencionado, cada evento é composto por uma estruturacontendo um ou mais elementos de dados (geralmente, porém nãonecessariamente, representados porTiposdeDadosDefinidospeloUsuário).Se foremusadasestruturas (tiposdedadosdefinidospelousuário), épossível associar a cada evento uma estampa de tempo (timestamp)fornecidapeloCLP.Nestecaso,ovalordocampoTimestampdeveserfornecidoemumcampodaestrutura,namemóriadoCLP,naordememqueédeclaradonoarquivodeconfiguração,eseuvalornãoémostradoem nenhum Elemento de Bloco, sendo retornado apenas napropriedadeTimestampdoTagassociado.Conforme explicado no tópico Tipos de Dados Definidos peloUsuário,qualquer tipodedadosdedataehorasuportadopeloDriverpode ser usado. O tipo de dados GenTime, entretanto, foi criadoespecialmenteparausocomoElipseModbusSOE,devidoàfacilidadededefiniçãonosoftwareresidente(ladder)doCLP.Casonãosejanecessáriaumaprecisãodemilissegundos,outraopçãoaconsideraréotipodedadosUTC32doDriver,representadocomouminteiro de apenas 32 bits (quatro bytes) com os segundos desde1/1/1970,semarepresentaçãodosmilissegundos,consideradoscomo0(zero).No tópico seguinte, Procedimento de Aquisição na Aplicação,descreve-secomoconfigurarosupervisórioparaacoletadoseventosacumuladosnoCLPoudispositivoescravoprogramável.
Neste tópico é detalhada a configuração da aplicação do supervisóriopara a aquisição dos eventos acumulados no CLP ou dispositivoescravoprogramável.AleituradoseventosnosupervisórioérealizadapormeiodeTagsqueusama funçãoespecial de leituraGenSOE.O tipo de dados doTagdefineaestruturadoseventosarmazenadosnatabeladoequipamento.SefordefinidoumtipodedadosnativodoDriver(built-intype),cadaevento temapenasumelementodeste tipodedados, sem timestampfornecidopeloCLP(o timestamp representaomomentodacoletadoseventos). Por outro lado, se foremusados tipos de dados definidospelousuário, é possível definir estruturas para os eventos, incluindotimestamps,comovistomaisadiantenestetópico.AseguirédescritaaconfiguraçãodosTagstantonanovametodologiade configuração por Strings (camposDispositivo e Item), como naantigaconfiguraçãonuméricadoElipseSCADA(parâmetrosNeB).
end. inicial: Endereço do primeiro registro de controle, usando ovalordefinidonatabelaexemplodotópicoTabeladeEventostipo: Tipo de dados nativo ou do usuário usado para cada evento(vejaotópicoConfiguraçãoporStrings)tam. do tipo: Usado apenas para tipos de dados de tamanhovariável(vejaotópicoConfiguraçãoporStrings)byte order: Ordenamento de bytes. Deve ser omitido paraequipamentosqueseguemplenamenteopadrãodoprotocolo(vejaoitem Byte Order no tópico Configuração por Strings para maisinformações). Quando são usadas estruturas, afeta apenas seuselementosindividuais(vejaotópicoTiposdeDadosDefinidospeloUsuário)bit:Mascaramento de bits. Em geral pode ser omitido, dificilmenteseria usado aqui (veja o campo Bit no tópico Configuração porStrings)
Exemplo:
Dispositivo:"1:"
Item:"elsoe150.&h101.TYPE3"
O tipoTYPE3 está definido da seguinte forma no arquivo padrão deexemplo do Driver (veja o tópico Tipos de Dados Definidos pelo
Trata-se,portanto,deumtipodedadosEstruturacomseiscamposdedados e timestamp. Daí deduz-se que o Tag deve ser umBloco comseisElementospararepresentaraestrutura.Noteque,conforme jáexplicado,ovalordo timestamp,emboraocuperegistrosnoCLP,nãonecessitadeElementosdeTagBloco,pois seuvaloréretornadonocampotimestampdoTag.
NOTAO parâmetroN informa o tamanho da tabela em númeromáximo deeventos suportados, e não em registrosModbus. Em conjunto com oparâmetroEndereço Inicial, informa indiretamente o endereço final oulimite superior da tabela. O tamanho da área de dados da tabela,portanto, em número de registros Modbus, é o produto de N pelotamanhodecadaeventoemnúmeroderegistrosModbus,ouseja,emWordsde16bits.
ConfiguraçãoNumérica(ParâmetrosNeB)Para configurarTagsde leitura deElipseSOEusandoa configuraçãonumérica, é necessário configurar uma operação naabaOperations,usandoafunçãoespecialGenSOE.AfiguraaseguirmostraumexemplodeadiçãodeoperaçãoutilizandoafunçãoespecialGenSOEcomotipodedadosWord.
FunçãoespecialGenSOENoteque foi selecionadaa função16 (WriteMultipleRegisters) comofunçãodeescrita,queéafunçãomaiscomum.Noentanto,recomenda-se o uso da função 06 (Write Single Register) sempre que ela forsuportadapeloequipamento.A figura a seguir mostra a mesma operação com o tipo de dadosdefinidopelousuárioTYPE3(vejaotópicoTiposdeDadosDefinidospelo Usuário), que é um tipo de dados definido no arquivo deconfiguração exemplo, disponível com o Driver e que é usado como
Trata-se,portanto,deumtipodedadosEstruturacomseiscamposdedados e timestamp, e com endereço padrão (parâmetro B4 do Tag)igual a "101H" (257emdecimal).Para sua leitura, portanto, éprecisodefinirumTagBlocodeseisElementoscomaseguinteconfiguração:
B2: 8 (operação definida anteriormente com a função especialGenSOE)B3: N (tamanho da tabela no dispositivo, em número máximo deeventoscomportados)
B4: 100 (endereçodoprimeiro registro de controle, usandoo valordefinidonatabelaexemplodotópicoTabeladeEventos)Size:6
NOTAOparâmetroB3 informao tamanhoda tabelaemnúmeromáximodeeventos suportados, e não em registrosModbus. Em conjunto com oparâmetroB4,informaindiretamenteoendereçofinaloulimitesuperiordatabela.Otamanhodaáreadedadosdatabela,portanto,emnúmeroderegistrosModbus,éoprodutodeB3pelo tamanhodecadaeventoemnúmeroderegistrosModbus,ouseja,emWordsde16bits.
Noteque,casooTagBrowserdoE3sejausadopara inseriroTagnaaplicação, comoexplicadono tópicoTiposdeDadosDefinidospeloUsuário, Elementos doTag já são nomeados conformeo nomedadoaoselementosdaestruturaemsuadeclaração.OTagBrowserpodeserabertoclicando-seem naabaDesigndoDriver.
UtilizaçãoUma vez tendo definido o Tag (ou Tags) apropriado, habilite suavarreduraedeixeaoDriveratarefadecoletaroseventosdarespectivatabela,semprequenovoseventosforemdetectados.TagsassociadosàfunçãoGenSOE(elsoenaconfiguraçãoporStrings)sãosemprereportadosaeventos.Istosignifica,conformejáexplicadonotópicoTiposdeDadosDefinidospeloUsuário,queépossívelaoDriver retornar vários eventos em uma única operação de leitura, ouseja,emumúnicointervalodavarreduradoTag.Isto significa que oDriver retorna o conjunto de eventos (no caso doexemplo anterior, conjuntos de blocos com seis campos de dados etimestamp) de uma só vez, o que produz uma sequência de eventosOnRead no Tag, um para cada evento (bloco com seis campos dedadosetimestamp)retornadopeloDriver.Para instruções detalhadas sobre a maneira correta de tratar Tagsreportadosaeventos,consulteo tópicoTagsReportadosporEventonoManualdoUsuáriodoE3.OManualdoUsuáriodoElipseSCADAtambémpossuiumtópicoanálogo.Emsuma,a formausualde tratarTags reportadosaeventosé inserirem seu evento OnRead o métodoWriteRecord do objeto Históricopreviamente associado, garantindo assim a gravação de todos oseventos que cheguem ao Histórico. Neste caso, o Histórico deve serconfiguradosembandamorta (propriedadeDeadBand igual a zero) edesabilitandoohistóricoporscan(noE3,propriedadeScanTimeigualazero). A propriedade EnableDeadBand do Tag também deve serconfiguradaparaFalso.
IMPORTANTEAolereventosdememóriademassaemTagsreportadosaeventosnoE3, desabilite a banda morta do Tag (propriedade EnableDeadBandconfigurada como Falso) e também no objeto Histórico associado(propriedadeDeadBand igual a zero), paraevitaraperdadeeventoscomvalorespróximos.Tambéméimportantedesabilitarohistóricoporvarredura (no E3, propriedade ScanTime igual a zero). Com isto,
garante-sequenovoseventossósãoarmazenadosatravésdométodoWriteRecord, executado no evento OnRead do Tag, evitando aduplicaçãodeeventos.
OtimizaçãoeCompatibilidadeAlgunsequipamentos,comoosCLPsdamarcaATOS,nãosuportamaleituraemblocosdetiposdedadosdeestruturasdiferentes.Naprática,istoimpedequeoDriverleiaemumblocoúnicodadosderegistradoresde controle e de eventos. Para coletar eventos de CLP com estasrestrições, é preciso desabilitar a opção Enable Control and DataRegistersGroupingnaabaGenSOE.
Leitura de Registros da Memória deMassadeMedidoresABBMGE144
TopoAnteriorPróximo
Para a leitura de registros dememória demassa demedidores ABBMGE144,deve-seconfigurarTagsusandoafunçãoespecialdeleitura6503,conformedescritonestetópico.Afunçãoespecial6503éproprietáriadaABBeépraticamenteidênticaà função padrão 03 do protocolo (Read Holding Registers), diferindoapenas nos dados retornados, referentes à memória de massa domedidorABB.Os dados são retornados em umWord (como na função 03), com obyteorderpadrãodoprotocolo(bigendian).Comisto,nãoénecessáriohabilitarqualquerumadasfunçõesdeswap(SwapBytes,SwapWordsouSwapDWords).O mapa dos registradores do medidor, especificando os dados quepodem ser lidos, bem como sua correta configuração, deve serconsultadonomanualdomedidorfornecidopelofabricante.Este Driver também conta com duas funções especiais de escritaespecíficas deste medidor, as funções 65 01 e 65 02. Para maisinformaçõessobreestasfunçõesespeciaisdeescrita,consulteotópicoFunçõesEspeciaisetambémomanualdoequipamento.
ConfiguraçãoporStringsDispositivo:"<slaveid>:"
Item: "abbmge<endereço>[.<tipo>[<tam. do tipo>]][.<byte order>][/bit]"
Onde:
Endereço:EndereçodoregistradorModbusaler
Tipo:Tipodedados.Seomitido,assumeopadrãoWord.Paramaisinformações,consulteotópicoConfiguraçãoporStringsTam. do tipo: Usado somente em tipos de dados de tamanhovariável.Paramaisinformações,consulteotópicoConfiguraçãoporStringsByteorder:Ordenamentodosbytes.Seomitido,assumeopadrãodo protocolo. Para mais informações, consulte o tópicoConfiguraçãoporStringsBit: Máscara de bits. Normalmente omitido (prefira utilizar asmáscarasdebitdosupervisório).Paramaisinformações,consulteotópicoConfiguraçãoporStrings
Dicas de Configuração do Driver para o E3 e o ElipsePower
UseSuperblocossemprequepossível,dandopreferênciaàcriaçãode Tags simples (Tags PLC noElipse SCADA) ao invés de TagsBloco(vejaotópicoLeituraporSuperblocos).Se não for possível usar Superblocos, dê preferência à criação deTags Bloco, agrupando o maior número possível de variáveis nomenornúmerodeblocos(vejaotextosobreoagrupamentomanualnotópicoLeituraporSuperblocos).ConsidereasrecomendaçõesdoartigoDicasdePerformanceparaoE3,noElipseKnowledgebase.No caso de redes com alta latência, banda reduzida ou perda depacotes, leia também o artigo Configurações de rede do E3 pararedescomaltalatência,bandareduzidae/ouperdadepacotes.
Em redes de alta latência, configure time-outs mais elevados,levandoemconta a latência esperada. Lembre-se queo tempodetime-out só tem efeito no caso de atrasos, não interferindo nodesempenhoemsituaçõesnormaisdeuso.
DicasdeConfiguraçãodoDriverparaoElipseSCADADêpreferênciaàcriaçãodeTagsBloco,agrupandoomaiornúmeropossíveldevariáveisnomenornúmerodeblocos(vejaotextosobreoagrupamentomanualnotópicoLeituraporSuperblocos).LeveemconsideraçãoasrecomendaçõesdoartigoDesenvolvendoaplicativosparaquetenhamomelhordesempenhopossível,tambémdisponívelnoElipseKnowledgebase.Emredesdealtalatência,configuretime-outsmaisaltos,levandoemconta a latência esperada. Lembre-se que o tempo de time-out sótemefeitonocasodeatrasos,não interferindonodesempenhoemsituaçõesnormaisdeuso.
Dicas para a Configuração ou Programação doEquipamento
Sepossível, agrupeas variáveis definidas pela aplicação residente(ladder) que possuam menor tempo de varredura (scan), emendereçoscontíguosnamemóriadoCLP.Otempototaldevarredurados Tags depende muito da capacidade de agrupamento dasvariáveisemblocosdecomunicação.
Resposta:EsteCLPnãoutilizaoordenamentodebytespadrãodoprotocolo(bigendian).Deve-seconfiguraroordenamentodebytesexecutando o swap (permuta) deWords, o que corresponde àopção"b2"naconfiguraçãoporStrings,ouaselecionaraopçãoSwapWords nas configurações das operações daconfiguraçãonumérica(vejaotópicoAbaOperations).
A aplicação está tentando ler as entradas e saídas doCLP, porémnãoestáconseguindo.
Resposta: Este equipamento não permite leitura ou escrita nasvariáveis de entrada e saída, sendo necessário utilizar variáveisinternasaoCLPpararealizarestaleitura,istoé,cria-seumespelhodasentradasesaídasemumaáreaondeoDriverconsigaacessar.Deve-se ainda ter o cuidado de criar uma rotina no CLP paraverificar quando o valor de uma saída for alterada pela aplicaçãoparaqueelasejarealmenteativadaoudesativadanoCLP.
Resposta: Consulte o artigo Utilizando drivers Modbus Master(ASC/RTU/TCP) com controladores ATOS no ElipseKnowledgebase. Se estiver usando a nova configuração porStrings (campos Dispositivo e Item), consulte também o itemByte Order do tópico Configuração por Strings. Caso estejautilizando a antiga configuração numérica (parâmetros N/B),consultetambémotópicoAbaOperations,sobretudooitemByteOrder.
Como juntar dois valores do tipo Int16 (no CLP) em umvalordotipoInt32(naaplicação)?
Existe um número de 32 bits que está armazenado em doisregistradoresde16bitscadaumnoCLP.Comofazerparamostrarnateladaaplicaçãoestenúmerocomoumúnicoregistrode32bits?
Resposta:Deve-secriarTagsutilizandotiposdedadosde32bits,comopor exemplo os tipos dedadosFloat,DWord ou Int32.NaconfiguraçãodoTagdeComunicação,deve-seinformaroprimeiroendereçodecadavariávelnoCLP(vejaotópicoConfigurandoumTagdeComunicação).Comisto,oDriverunedoisregistrosde16bits do equipamento em um único valor de 32 bits, retornado nocampo Valor do Tag ou no Elemento do Tag Bloco. Se estiverusandoa configuraçãoporStrings (camposDispositivo e Item),informeotipodedadosdesejadologoapósoendereçodoregistro(vejaotópicoConfiguraçãoporStrings).Casoestejautilizandoaantiga configuração numérica (parâmetros N/B), é necessáriodefinir operações com tipos de dados de 32 bits. Note que, najaneladeconfiguração(AbaOperations),ostiposdedadosde32bits sãosempremostradoscom tamanho (campoSize) de quatrobytes(vejaotópicoTiposdeDadosSuportados).
Aaplicação jáestádesenvolvida,porémépreciso juntarosvaloresdedoisWordsemumúnicoTag.Resposta:Épossívelrealizarestauniãoatravésdousodescripts,criando um inteiro de 32 bits sem sinal. Para isto, deve-semultiplicar oWord que contém a parte mais alta da palavra por65536 e então somar oWord que contéma partemais baixa dapalavra.Porexemplo,UInt32=(HighWord×65536)+LowWord.
Aaplicaçãoprecisa lervaloresdo tipoFloat.A funçãode leitura foiconfiguradacomosendo03eescrita16comotipodedadosFloat.Porém,aaplicaçãoE3 ouElipsePowermostra um valor que nãocondizcomovalorqueestánoequipamento.
Resposta:OprotocoloModbusoficialusaoordenamentodebytes(byteorder)nopadrãobigendian,comosbytesmaissignificativosde cada valor vindo antes. Se o Driver estiver lendo valores
absurdos,mesmocomaconfiguraçãocorretadoendereço,émuitoprovável que o equipamento utilize um byte order diferente dopadrãodoprotocolo.Nestecaso,énecessárioconfigurarasopçõesdepermuta(swap).SeestiverusandoaconfiguraçãoporStrings(camposDispositivoeItem)consulteoitemByteOrderdotópicoConfiguração por Strings. Caso esteja utilizando a antigaconfiguração numérica (parâmetros N/B), consulte o item ByteOrder do tópico Aba Operations para mais informações sobrecomoutilizarasopçõesdeswap.
Existe mais de um equipamento na rede serial, cada um comendereçoúnico.Comofazerparacomunicarcomcadaumdeles?
Resposta:Deve-setercuidadoapenascomoSlaveIddecadaTagde Comunicação, pois é neste campo que deve-se indicar comqual equipamento deseja-se comunicar. Em redes seriais RS485,todos os equipamentos escutamaomesmo tempo as requisiçõesdoDriver(háumbarramentoúnico),porémapenasoquepossuiroSlaveIdcorrespondente respondeà requisição (nãopodemhavermúltiplos equipamentos com o mesmo Id). Na configuração porStrings, este valor pode ser fornecido no campoDispositivo, ouno início do campo Item (consulte mais informações no tópicoConfiguraçãoporStrings).Nocasodaconfiguraçãonumérica,estevaloréfornecidonosparâmetrosN1/B1decadaTag.Pode-seusarasmesmasoperaçõesparaTagsdediversosequipamentos.UmaboareferênciaparamaioresinformaçõessobreainstalaçãoemanutençãoderedesseriaiséolivroSerialPortComplete,deJanAxelson.
Resposta: Neste caso, como existe mais de um meio físicodiferente(Serial1,Serial2,etc.),sãonecessáriostantosDriversdeComunicaçãoquantasportasexistirem.AsconfiguraçõesdosTagsdoDriverpodemserasmesmasparatodososobjetos(instâncias)doDriver.AúnicadiferençaéqueumDriverdeveserconfiguradopara comunicar pela portaSerial 1, outroDriver configurado paracomunicarpelaportaSerial2,eassimpordiante.Asconfiguraçõesda porta a ser usada são realizadas na abaSerial da janela deconfiguraçõesdoDriver(vejaotópicoPropriedades).
UmaredeRS485temváriosequipamentoscomunicandoatravésdeumconversorRS232-RS485pelaportaSerial.Sempreocorreatrocadeendereço(SlaveID),ouseja,quandooDrivervaisolicitardadosdeoutro equipamento, ocorreum time-out. Após retentar amesmamensagem, o equipamento responde normalmente. Existe algumaformadeevitarestetime-outduranteatrocadoendereço(SlaveID)?
Resposta: Alguns conversores RS232-RS485 requerem umintervalode tempoparachavearem,ouseja,comutaremdomodode transmissãopara recepção,ouvice-versa.Paracontornarestalimitação,pode-seutilizaraopçãoInter-framedelaynaabaSerialdo IOKit, disponível na janela de configurações. Este campodefine um intervalo de tempoentremensagens.O valor exato dointervalo depende do conversor utilizado mas, em caso deincerteza, recomenda-se iniciar experimentando valores entre 50mse300ms.
NOTAAopçãoInter-framedelaydoIOKitpodetrazersignificativoprejuízodeperformance em algumas aplicações, devendo ser utilizada apenasquando absolutamente necessário. Certifique-se de que o conversorestáemboascondições,eseeledefatoexigeautilizaçãodestedelay.Senecessário,contateosuportedofabricante.
ExistemaisdeumequipamentoligadoemumaredeEthernet,cadaum comendereço IP único.Como fazer para comunicar com cadaumdeles?
Resposta:Atualmente,paracadaendereçoIP,énecessáriotantosDrivers de Comunicação quantos endereços IP deseja-secomunicar.AconfiguraçãoreferenteaosTagsdoDriverpodeseramesmapara todososDrivers.Aúnicadiferençaé queumDriverdeve ser configurado para comunicar com o endereço IP 1 (um),outro Driver configurado para comunicar com o endereço IP 2(dois), e assim por diante. O parâmetroSlave Id pode ainda serutilizado em modo Modbus TCP para diferenciar equipamentosconectados a um gateway Modbus Ethernet / RS485 no mesmoendereço IP. Note que este gateway não apenas deve permitir ainterconexãoentreredesEtherneteseriais,mastambémconverterframes ModbusTCP para os modos seriais suportados pelosequipamentos(ModbusRTUouModbusASC).OendereçoIPdeveser configurado na aba Ethernet do IOKit, na janela deconfiguraçõesdoDriver.
DICAEvite usar o modoRTU ouASC do protocolo encapsulado em meioTCP/IP. Caso seja necessário encapsular a comunicação serial deequipamentos que utilizem o Modbus RTU em TCP/IP, existemgateways disponíveis no mercado que não somente encapsulam acomunicaçãoserialemEthernetTCP/IP(camadasfísica,deredeedetransporte),comotambémconvertemoModbusRTUemModbusTCP(camadadeaplicação).Emúltimocaso,seforinevitávelautilizaçãodeModbusRTUemmeioEthernetTCP/IP,nãodeixedehabilitaraopçãoReconnectafterTimeout,descritanotópicoAbaModbus.
Resposta: Sim, existem diversas alternativas. A Elipse Softwaredisponibiliza em seu site uma versão gratuita (demo) do ElipseModbusSimulator, que permite simular os recursosmais básicosdoprotocolo.HátambémapossibilidadedeusaroDriverModbusSlavedaElipseSoftware comoemulador.OutrapossibilidadeéosoftwareModsim,umadasmaisantigaseconhecidasalternativasparaemularumdispositivoModbusescravo.Estesimuladorpodeser adquirido em http://www.win-tech.com/html/modsim32.htm.Além dele, existe também a alternativa gratuita doFreeModbusPLCSimulator,disponívelemwww.plcsimulator.org.ExistemaindaoutrasopçõeseumalistadeoutrossoftwarespodeserencontradanositedaModbus.org.
Resposta:Esteendereçovariadeequipamentoparaequipamento.Parasaberqualoendereçoexatoaserutilizado,consulteomanualdo equipamento ou entre em contato com o suporte técnico. OtópicoDicas de Endereçamento deste manual contém algumasdicasdeconvençõescomunsusadaspormuitosfabricantes.
OequipamentoestácomunicandoatravésdeumconversorRS232-RS485ligadoàportaserialRS232docomputador.ComoconfiguraroscontrolesRTSeDTR?Resposta: Na comunicação com equipamentos usandoconversores RS232-RS485, tais configurações dependem doconversor.Oequipamento(Slave)nãoteminfluência, jáqueestessinaissóexistemnoladoserialRS232,nãotendoequivalentesnomeio serial RS485. O controle RTS é geralmente utilizado emconversoresmaisantigosparaochaveamentoentreosmodosdetransmissão e recepção (oRS485 éhalf-duplex), devendo nestescasos emgeral ser configurado nomodoToggle (existemalgunsrarosequipamentosqueexigemoutrasconfigurações).Namaioriados conversores mais recentes, entretanto, o chaveamento entretransmissãoerecepçãoéautomático,eestessinaisemgeralnãosão mais usados, podendo ser ignorados. Em caso de dúvidas,consulteomanualdoconversorouosuportedofabricante.
Quando utilizar as funções Swap Bytes, Swap Words eSwapDWords?Estasopçõesdevemserusadaspara tiposdedadosde16,32ou64bits, cuja ordem dos bytes do valor fornecido pelo equipamento nãocorrespondeàordempadrãodoprotocoloModbus,ondeosbytesmaissignificativosvêmsempreantes (padrãobigendian, tambémchamadoMotorola). Se o Driver está lendo valores absurdos ou diferentes dosvaloresarmazenadosnoCLP,épossívelqueestejautilizandoumbyteorderdiferentedopadrãodoprotocolo.Paramaisinformações,consulteoitemByteOrderdotópicoConfiguraçãoporStrings,oucasoestejausando a antiga configuração numérica (parâmetrosN/B), consulte oitemByte Order do tópicoAba Operations. Também recomenda-seconsultaradocumentaçãodoequipamento.
A aplicação está tentando ler um valorWord, porém o valor vemdiferentedoqueestáconfiguradonoCLP.SenoCLPéconfiguradoovalor"1"(um),naaplicaçãoapareceovalor"256".
Resposta:Ovalor1(um)emhexadecimalé0001Heovalor256emhexadecimalcorrespondea0100H.Oequipamentopossuiumbyte order diferente do padrão do protocolo. Deve-se habilitar aopçãoSwapBytes(opção"b1"naconfiguraçãoporStrings)paralerovalorcorreto.
Resposta: O valor 258 em hexadecimal é 00000102H e o valor16908288 em hexadecimal corresponde a 01020000H. Oequipamento possui um byte order diferente do padrão doprotocolo,ondeoWordmenossignificativovemantes.Nestecaso,deve-se habilitar a opção Swap Words (opção "b2" naconfiguraçãoporStrings)paralerovalorcorreto.
Como ler corretamente tipos de dados Float em CLPsWEGTPW-03?
Resposta: Na configuração dos Tags de Comunicação, deve-sehabilitar a opção de ordenamento de bytes Swap Words,correspondente à opção "b2" na configuração por Strings. Casoesteja usando a antiga configuração numérica (parâmetros N/B),consulteoitemByteOrderdotópicoAbaOperations.
ParticularidadesconhecidasdosequipamentosdafamíliaABB Advant Controller 31 Series 90 (por exemplo, ABB07KT97)
O tamanho máximo do PDU é diferente do estabelecido pelopadrão do protocolo, sendo definido como um tamanho quesuporte96WordsouBits.Umavezqueoprotocoloagrupaoitobitsemcadabytededados,istoresultaemtamanhosmáximosdePDUdiferentesparaasfunçõesdeleituradeBitseWords,oqueimpossibilitaousodacustomizaçãodotamanhomáximodoPDUpermitidapeloDriver,quenãopermiteconfigurarlimitesdiferentesparacadafunçãodoprotocolo.
2. Dê preferência à definição de Tags Bloco, agrupando o maiornúmero possível de variáveis no menor número de Blocos,respeitandoolimitedoequipamentode96Wordsou96Bitsemcada Bloco (para mais informações, leia a seção sobreAgrupamentoManualnotópicoLeituraporSuperblocos).
NOTAPode ainda ser possível utilizar o agrupamento automático(Superblocos) se não for preciso lerWords eBits no mesmo objetoDriver, dependendo obviamente do intervalo de endereços que seprecise ler (mais especificamente, se este intervalo possui ou nãodescontinuidades). Neste caso, de qualquer forma, é necessário
A aplicação está tentando ler valores do tipo de dadosFloat e a seguintemensagem aparece no log do Driver:"Warning:denormalized floatnumber!Returningzero".Oquefazer?
Resposta: O aparecimento desta mensagem não indica erro decomunicação ou de configuração. Recomenda-se apenas que ousuário verifique na programação do CLP por que ele estáretornandovaloresnãonormalizados.
InformaçõesAdicionais:Talmensagem indicaqueoequipamentoenviouaoDriverumvalordepontoflutuante(Float)noformatoIEEE754, porém não normalizado. Tais valores podem resultar deoperações aritméticas com resultados que extrapolem aspossibilidades de representação deste formato, comoas condiçõesdeoverflow,underflow, +∞e−∞,etc.Osvaloresnãonormalizadosestão previstos na norma IEEE 754, não devendo em tese gerarproblemas para oDriver ou para a aplicação. Entretanto, devido àdetecçãodeerrosnopassadorelacionadaahardwaresespecíficos,o Driver passou a retornar 0 (zero) para a aplicação ao recebervalores não normalizados do equipamento, registrando estamensagememlog.
A tabela a seguir contém uma lista de equipamentos, separados porfabricante,paraosquais jáexistealgumaexperiêncianacomunicaçãocomoprotocoloModbus.Para uma lista mais completa de equipamentos já validados com oprotocolo, consulte o Modbus Device Directory, mantido pelaOrganizaçãoModbus.
Atabelaaseguirlistaasexceçõespadrão,definidaspelaespecificaçãodoprotocoloModbus(versão1.1b).AsexceçõessãoregistradasnologdoDriver,semprequedetectadas,epodem ser lidas pela aplicação através da Leitura do Código daÚltimaExceção.Noteque,alémdasexceçõeslistadasaqui,oequipamentopodedefiniroutras exceções proprietárias. Neste caso, espera-se que estasexceções sejam descritas na documentação do fabricante doequipamento.
CódigosdeexceçãopadronizadospeloprotocoloModbus
CÓDIGO(EMHEXADECIMAL)
NOME SIGNIFICADO
01 ILLEGALFUNCTION
Ocódigodefunçãorecebidonãoéválido. Isto pode indicar que afunção não está implementada ouqueoEscravoencontra-seemumestado inadequado para processá-la
02 ILLEGAL DATAADDRESS
Oendereçodedadosrecebidonãoé um endereço válido. Maisespecificamente, a combinação doendereço de referência e aquantidade de dados a seremtransferidoséinválida
03 ILLEGAL DATAVALUE
O valor presente na requisição doMestrenãoéválido.Istoindicaumafalha na estrutura de dadosremanescente de uma requisiçãocomplexa,comoquandootamanhoinformado para o bloco de dadosnãoestácorreto.Estaexceçãonão
indica que os valores submetidosparaescritaestejamforadoescopoesperado pela aplicação, uma vezque tal informaçãonãoéacessívelaoprotocolo
04 SLAVE DEVICEFAILURE
Ocorreu um erro irrecuperávelduranteoprocessamentodafunçãosolicitada
05 ACKNOWLEDGEUsado com comandos deprogramação.OEscravoaceitouamensagem e a está processando,masesteprocessamentodemandaum longo tempo. Esta exceçãoprevine um time-out no Mestre. Ofim da requisição deve ser testadoporumprocessodepolling
06 SLAVE DEVICEBUSY
Usado com comandos deprogramação.IndicaqueoEscravoestá processando um outrocomandodelongaduraçãoequeasolicitação deve ser retransmitidamais tarde, quando o Escravoestivernovamentedisponível
08 MEMORYPARITYERROR
Usadoemconjuntocomasfunções20 e 21, reference type 6, paraindicar que a área estendida dearquivos falhou em um teste deconsistência. O equipamentoEscravo pode estar precisando demanutenção
0A GATEWAY PATHUNAVAILABLE
Usadoemconjuntocomgateways,para indicarqueogatewaynão foicapaz de alocar um caminhointerno para o processamento dasolicitação. Geralmente indica que
ogateway está desconfigurado ousobrecarregado
0B GATEWAYTARGETDEVICE FAILEDTORESPOND
Usadoemconjuntocomgateways,para indicar que não foi recebidanenhumarespostadoequipamentode destino. Geralmente indica queo equipamento não está presentenarede
Limite Máximo para o Tamanho dosBlocosSuportadopeloProtocolo
TopoAnteriorPróximo
Nestetópicosãoapresentadososlimitesmáximosdetamanhodeblocosuportados pelo protocolo Modbus, na atual versão 1.1b de suaespecificação(vejaaespecificaçãonositeoficialdoprotocolo).Noteque,devidoaosrecursosdeLeituraporSuperblocosePartiçãoAutomática de Blocos, presentes na versão atual do Driver,dificilmente o usuário necessita levar em conta estes limites em umaaplicação, uma vez que o Driver já realiza automaticamente asotimizaçõesnecessáriasnomomentodacomunicação.Entretanto, uma vez que existemequipamentos que não suportamoslimites padrão estabelecidos pelo protocolo, pode ser necessário aousuárioconheceros limitesdoprotocolo,esobretudosaberavaliaroslimitesdoequipamento,casosejaobrigadoarealizaroagrupamentodeformamanual(vejaotópicoLeituraporSuperblocos).Nestescasos,ainformaçãodestetópicopodesemostrarútil.
LimitesSuportadospeloProtocoloOprotocoloModbusdefineumaunidadededadossimplesdenominadaPDU (Protocol Data Unit), que se mantém inalterada nos diversosmodosdoprotocoloenasdiversascamadasdecomunicação.O frame de comunicação completo, incluindo a PDU e os demaiscampos adicionais de cabeçalho, é chamado ADU (Application DataUnit).
LimitessuportadospeloprotocoloSegundoaespecificaçãodoprotocolo,oframeModbuscompleto(ADU)podeterumaPDUcomtamanhomáximode253bytes.Sendo assim, dependendo do tipo de dado ou funçãoModbus que éutilizadonacomunicação,oprotocoloimpõeoslimitesdeelementosdoblocoemcadacomunicaçãodescritosnatabelaaseguir.
Maisinformaçõespodemserobtidasnositeoficialdoprotocolo.O artigo KB-23112: Tamanho ideal de um Bloco de Comunicaçãousando o Driver Modbus no Elipse Knowledgebase apresenta umasíntese das questões relativas ao agrupamento de Tags edimensionamentodeblocosnesteDriver,discutidasnesteeemoutrostópicos.
ACodificaçãoBCD(Binary-CodedDecimalouDecimalCodificadoemBinário)foioriginalmenteconcebidaparacontornarlimitaçõesquantoaonúmero máximo de dígitos passíveis de serem representados nosformatos mais tradicionais de armazenamento de valores. Formatoscomoarepresentaçãodenúmerosreaisempontoflutuantemostram-senormalmenteaceitáveisparacálculosmatemáticosecientíficos.Porém,errosdeaproximaçãocausadospelaexistênciadealgarismosquenãopossam ser representados por problemas de overflow ou underflowpodem não ser admissíveis em certas aplicações, como emprocedimentos financeiros. Para superar este tipo de limitação, foidesenvolvida a codificação BCD, que permite a representação denúmerosatéoúltimoalgarismo.Nessa representação, cada algarismo decimal é representadoisoladamente em formato binário, sem limitações no que se refere aonúmerodealgarismos.A tabela a seguir mostra os algarismos decimais e seus valorescorrespondentesemBCD(valoresembinário).
AlgarismosdecimaisemcodificaçãoBCD
DECIMAL BCD DECIMAL BCD0 0000b 5 0101b
1 0001b 6 0110b
2 0010b 7 0111b
3 0011b 8 1000b
4 0100b 9 1001b
Afimdemelhoraraeficiênciadestacodificação,écomumrepresentar-se dois algarismos por byte. Note que, na tabela acima, cada dígitodecimal requer apenas quatro bits, ou meio byte, para a suarepresentação.Tal representaçãocomdoisdígitosemcadabyteéchamadadeBCD
Comprimido (Packed BCD), e é a representação utilizada por esteDriver,ouseja,ospacotesenviadosporesteDrivercomvaloresBCDutilizamumbytededadosparacadadoisalgarismosdovalordecimalrepresentado.PoristoocampoSize,nocasodetiposdedadosBCD,deve ser definido como a metade do número máximo de algarismosrepresentadosnosvaloresaseremlidosouescritos.
ExemploComoexemplo,suponhaquesepretendaenviarovalor84emdecimal(0x54emformatohexadecimal),usandoacodificaçãoBCDcomprimidoemumbyte,oformatousadoporesteDriver.O primeiro passo é separar os dois dígitos decimais que compõem ovaloremsuarepresentaçãodecimal:
Dígito1:8
Dígito2:4SefossemosenviarovaloraoequipamentosemacodificaçãoBCD,ovalor enviado ao protocolo seria o próprio valor 84, que seriarepresentado em formato hexadecimal pelo valor 0x54, ou ainda01010100bemformatobinário.Usando o formato BCD comprimido, entretanto, representaremos osdois dígitos decimais separadamente em cada metade, ou nibble, dobyteaserenviado:
BCD:0x84ou10000100bNoteque,seinterpretássemosporenganoestevalor0x84emformatoBCDcomoumvalorem formatohexadecimal semestacodificação,eestevalor fosseconvertidoparadecimal,obteríamosovalor132,semsignificadoalgum.Atabelaaseguirapresentamaisalgunsexemplosdevaloresdecimaisentre0(zero)e99esuasrespectivasrepresentaçõesnoformatoBCDComprimido em um byte, apresentados nos formatos hexadecimal ebinário.
Esta seção contém a documentação das Interfaces de ComunicaçãoreferentesaoDriverModbus.
ConfiguraçõesdoDriver TopoAnteriorPróximo
AconfiguraçãodasInterfacesdeComunicaçãoérealizadanacaixadediálogodeconfiguraçãodoDriver.ParaacessaraconfiguraçãodacaixadediálogonoE3(versão1.0),sigaestespassos:1. CliquecomobotãodireitodomousenoobjetoDriver(IODriver).2. SelecioneoitemPropriedadesnomenucontextual.3. SelecioneaabaDriver.4. CliqueemOutrosparâmetros.NoE3 versão 2.0 ou posterior, clique emConfigurar o driver nabarradeferramentasdoDriver.NoElipseSCADA,sigaestespassos:1. AbraoOrganizer.2. SelecioneoDrivernaárvoredoOrganizer.3. CliqueemExtrasnaabaDriver.Atualmente,as InterfacesdeComunicaçãopermitemqueapenasumaconexão seja aberta para cada Driver. Isto significa que, se fornecessário o acesso a duas portas seriais, é preciso adicionar doisDrivers na aplicação e configurar cada um destes Drivers para cadaportaserial.
AcaixadediálogodasInterfacesdeConfiguraçãopermitemconfigurara conexão de I/O que é utilizada pelo Driver. Esta caixa de diálogocontémasabasSetup,Serial,Ethernet,ModemeRAS,descritasnostópicos a seguir. Se um Driver não implementa uma conexão de I/Oespecífica, a respectiva aba não está disponível para configuração.Alguns Drivers podem conter abas adicionais (específicas para cadaDriver)nacaixadediálogodeconfiguração.
OgrupoHandshakingconfiguraousodossinaisRTS,CTSeDTRnoprocessodehandshaking(controlarquandoodadopodeserenviadoourecebido através da linha serial). Na maioria das vezes, configurar aopção DTR control para ON e a opção RTS control para Togglefunciona tanto com linhas seriais RS232 quanto com linhas seriaisRS485.
Utilize esta aba para configurar os parâmetros da InterfaceEthernet.Estesparâmetros (todosexcetoasconfiguraçõesdaporta)devemsertambémconfiguradosparausonaInterfaceRAS.
Utilize esta aba para configurar os parâmetros da InterfaceModem.Algumas opções da aba Serial afetam a configuração do modem,portantoéinteressantenãoesquecerdeconfiguraraInterfaceSerial.
Number modificadoemtempodeexecução).Pode-seutilizarocaracterewpararepresentarumapausa(esperapelotomdediscagem).Porexemplo,"0w33313456"(discaonúmerozero,esperaeentãodiscaonúmero"33313456").
Use esta aba para configurar os parâmetros da Interface RAS. ÉnecessáriotambémconfiguraraabaEthernet.AInterfaceRASabreumaconexãosocketcomumdispositivoRAS.OdispositivoRASéumservidordemodemsacessívelatravésdeTCP/IP,aguardandoporconexõessocketemumaportaIP.Paracadaconexãoaceitanestaportatem-seacessoaummodem.Ao conectar-se a um dispositivo RAS, primeiramente a Interface deComunicação conecta ao socket no endereço IP e na portaconfigurados na aba Ethernet. Depois que o socket é aberto, osseguintespassosdeinicializaçãooudeconexãosãoefetuados:1. Limpezadosocket(removequalquermensagemdesaudaçãoTELNETrecebidadodispositivoRAS).
Se o passo 5 é efetuado com sucesso, então o socket comporta-secomoumsocketnormal,comodispositivoRASfuncionandocomoumroteador entre oDriver e o dispositivo.Os bytes enviados peloDriversão recebidos pelo dispositivo RAS e enviados para o dispositivo dedestinoutilizandoummodem.OsbytesrecebidospelodispositivoRASdomodemsãoenviadosdevoltaaoDriverutilizandoomesmosocket.Depois que a conexão é estabelecida, a Interface RAS monitora osdados recebidos pelo Driver. Caso uma String "NO CARRIER" sejaencontrada,osocketéfechado.SeodispositivoRASnãoenviaosinalNO CARRIER, a Interface RAS não consegue detectar quando aconexão modem entre o dispositivo RAS e o dispositivo final de I/Ofalha.Pararecuperaçãodetalfalhaéfortementerecomendadoqueseja
Este Bloco retorna eventos de Driver gerados por várias fontes nasInterfaces de Comunicação. A propriedade TimeStamp do Blocorepresenta o momento em que o evento ocorreu. Os Elementos deBlocosãoosseguintes:
1:Camadafísicainiciadamasnãoconectada(oDriverestáemmodoOnline, mas a camada física não está conectada. Se a opçãoConnection management estiver configurada para Automatic, acamadafísicapodeestarconectando,desconectandoouesperandopor uma tentativa de reconexão. Se a opção Connectionmanagement estiver configurada para Manual, então a camadafísicapermanecenesteestadoatéserforçadaaconectar)
2: Camada física conectada (a camada física está pronta para serusada). Isto NÃO significa que o equipamento esteja conectado,apenasqueacamadadeacessoestáfuncionando
UseesteTagparamodificarqualquerpropriedadedacaixadediálogodeconfiguraçãodoDriveremtempodeexecução.EsteTagfuncionasomenteenquantooDriverestiveremmodoOffline.Para iniciaroDriveremmodoOffline, selecioneaopçãoStartdriverOFFLINEnacaixadediálogodeconfiguraçãodoDriver.Pode-setantoescreveremumTagPLCouemumTagBlococontendoosparâmetrosa seremmodificados (escritas de Elementos de Bloco individuais nãosãosuportadas,oBlocointeiroprecisaserescritodeumavezsó).NoElipseSCADAénecessáriousarumTagBloco.CadaparâmetroaserconfiguradoutilizadoisElementosdeBloco.Porexemplo,casosejanecessárioconfigurartrêsparâmetros,entãootamanhodoBlocodeveser6(3*2).OprimeiroElementoéonomedapropriedade(comoumaString)eosegundoElementoéovalordapropriedade.VejaestescriptnoElipseSCADA://'Block'deveserumTagBlockcomleituraautomática,//leituraporvarreduraeescritaautomáticadesabilitadas.//ConfiguraosparâmetrosBlock.element001="IO.Type"//Parâmetro1Block.element002="Serial"Block.element003="IO.Serial.Port"//Parâmetro2Block.element004=1
Ao usar o E3, a habilidade de criar arrays em tempo de execuçãopermite o uso tanto de um Tag de Comunicação quanto de um TagBloco. Pode-se utilizar o método Write do Driver para enviar osparâmetrosdiretamenteparaoDriver,semanecessidadedecriarumTag.Vejaestesexemplos:
ODrivernãovalidanomesdeparâmetrosouvalorespassados,poristotenha cuidado ao escrever parâmetros e valores. O comandoWritefalha se o array de configuração é criado incorretamente. Pode-se
consultar o log doDriver ou usar o parâmetrowriteStatus dométodoWriteExparadescobriracausaexatadoerro:Dimarr(10),strErrorarr(1)=Array("IO.Type","Serial")arr(2)=Array("IO.Serial.Port",1)arr(3)=Array("IO.serial.BaudRate",19200)IfNotDriver.WriteEx-1,0,0,3,arr,,,strErrorThenMsgBox"FalhaaoconfigurarosparâmetrosdoDriver:"+strErrorEndIf
0-DriverOffline:Acamadafísicaestáfechada(parada).Estemodopermite uma configuração dinâmica dos parâmetros do DriveratravésdoTagIO.SetConfigurationParameters1 - Driver Online: A camada física está aberta (em execução).Enquanto estiver em modo Online, a camada física pode serconectadaoudesconectada(seuestadoatualpodeserconferidonoTagIO.PhysicalLayerStatus)
No exemplo a seguir (utilizando oE3), oDriver é colocado emmodoOffline, sua porta COM é modificada e então é colocado em modoOnlinenovamente:'ConfiguraoDriveremmodoOfflineDriver.Write-1,0,0,4,0'MudaaportaparaCOM2Driver.Write-1,0,0,3,Array("IO.Serial.Port",2)'ConfiguraoDriveremmodoOnlineDriver.Write-1,0,0,4,1
OmétodoWrite pode falhar quando estiver configurando oDriver emmodoOnline(escrevendoovalorum).Nestecaso,oDriverpermanece
emmodoOffline.Acausadafalhapodeser:Tipo de camada física configurada incorretamente (provavelmenteumvalorinválidofoiconfiguradoparaapropriedadeIO.Type)ODriverpodeterficadosemmemória
A camada física pode ter deixado de criar seu thread de trabalho(procurenoarquivodelogpelamensagem"Failedtocreatephysicallayerthread!")
Acamadafísicanãoconseguiuinicializar.Acausadafalhadependedo tipo de camada física. Pode ser um número de porta serialinválida,falhaaoinicializaroWindowsSockets,falhaaoinicializaroTAPI(modem),etc.Acausaégravadanoarquivodelog
IMPORTANTEMesmo que a configuração do Driver para o modoOnline seja bemsucedida,istonãosignificanecessariamentequeacamadafísicaestejapronta para uso (pronta para executar operações de entrada e saídacom um equipamento externo). O Tag IO.PhysicalLayerStatus deveserverificadoparaassegurarqueacamada físicaestejaconectadaepreparadaparaacomunicação.
Quando configuradaparaVerdadeiro, defineumnúmeromáximodetentativas de reconexão. Se todas as reconexões falharem, o DriverentraemmodoOffline. Se configuradaparaFalso, oDriver tenta atéqueumareconexãosejabem-sucedida.
ConfigureemVerdadeiroparahabilitareemFalsoparadesabilitaradetecção de inatividade. A camada física é desconectada se estiverinativaporumcertoperíodode tempo.Acamadafísicaéconsideradainativaapenasseécapazdeenviardadosmasnãode recebê-losdevolta.
NOTANãofazsentidomodificarestapropriedadeemtempodeexecução, jáque ela só pode sermodificada quando o Driver já estiver emmodoOffline. Para configurar o Driver em modo Online em tempo deexecução,escrevaovalor1(um)noTagIO.WorkOnline.
R ou RAS: Utiliza uma InterfaceRAS (Remote Access Server). ODriver conecta-se ao equipamento RAS através da InterfaceEtherneteentãoemiteumcomandoAT(dial)
Esta seção contém informações sobre a configuração dos Tags deComunicação e asPropriedades das estatísticas das Interfaces deComunicação.
TagsdeComunicação TopoAnteriorPróximo
Tags de estatísticas das Interfaces de Comunicação(N2/B2=0)Os Tags descritos a seguir mostram estatísticas para todas asInterfaces deComunicação.Os Tags disponíveis nesta seção são osseguintes:
Atualmente,nãoexistempropriedadesdefinidasespecificamenteparamostrar as estatísticas das Interfaces de Comunicação em tempo deexecução.
Configuração da InterfaceEthernet
TopoAnteriorPróximo
Esta seção contém informações sobre a configuração dos Tags deComunicaçãoeasPropriedadesdaInterfaceEthernet.
TagsdeComunicação TopoAnteriorPróximo
TagsdaInterfaceEthernet(N2/B2=4)OsTagsdescritos a seguir permitemcontrolar e identificar a InterfaceEthernet em tempo de execução (também são válidos quando aInterfaceRASestiverselecionada).
1:Oendereçoalternativo(backup)deIPestáselecionadoSe a InterfaceEthernet (ouRAS) estiver conectada, este Tag indicaqualdosdoisendereçosIPconfiguradosestáemuso.SeaInterfacefordesconectada, este Tag indica qual endereço IP é usado primeiro napróximatentativadeconexão.Durante o processo de conexão, se o endereço IP ativo não estiverdisponível, a Interface de Comunicação tenta conectar-se usando ooutro endereço IP. Se a conexão com o endereço IP alternativofuncionar, este é configurado como o endereço IP ativo (switchoverautomático).Para forçarumswitchovermanual,escrevaovalor1 (um)ou0 (zero)nesteTag. Isto forçaa reconexãocomoendereço IPespecificado (0:Endereçoprincipalde IPou1:Endereçoalternativode IP)seoDriverestiver atualmente conectado. Se o Driver estiver desconectado, esteTagconfiguraoendereçoIPativoparaapróximatentativadeconexão.
Qualquer valor escrito neste Tag força um switchover manual. Se oendereçoprincipaldeIPestiverativo,entãooendereçoalternativodeIP(backup)éativado,evice-versa.IstoforçaareconexãocomoendereçoIPespecificado se oDriver estiver atualmente conectado.Se oDriverestiver desconectado, este Tag configura o endereço IP ativo para apróximatentativadeconexão.
ConfigureemFalsoseoDrivernãodeveaceitarconexõesexternas(oDriver se comporta como mestre) ou configure em Verdadeiro parahabilitararecepçãodeconexões(oDriversecomportacomoescravo).
Configure em Verdadeiro para habilitar o endereço IP de reserva(backup). Se a tentativa de reconectar com o endereço IP principalfalhar, o Driver tenta utilizar o endereço IP de reserva. Configure emFalsoparadesabilitarsuautilização.
EndereçoIPalternativo(backup)doequipamentodedestino.Pode-seutilizar tanto o endereço numérico como o nome de host doequipamento,comoporexemplo"192.168.0.7"ou"SERVER2".
Endereço IP do equipamento de destino. Pode-se utilizar tanto oendereço numérico como o nome dehost do equipamento, como porexemplo"192.168.0.7"ou"SERVER2".
ConfigureemVerdadeiroparahabilitaroenviodeumcomandopingpara o endereço IP do equipamento de destino, antes de tentarconectar-seaosocket.O time-outdeconexãodosocketnãopodesercontrolado,poristooenviodeumcomandopingantesdeconectar-seéumamaneirarápidadedetectarseaconexãovaifalhar.ConfigureemFalsoparadesabilitarocomandoping.
Escreva qualquer valor neste Tag para forçar a Interface Modem ainiciarumachamada.Estecomandoéassíncrono,apenas iniciandooprocesso de chamada. Pode-se monitorar o TagIO.TAPI.IsModemConnected para detectar quando a chamada éestabelecida.
EsteTagéumaStringquelêoumodificaonúmerodotelefoneutilizadopelo Tag IO.TAPI.Dial. Ao modificar este Tag, o novo valor é usadoapenasnopróximocomandoDial.
NOTAUseestecomandoapenasquandoestivergerenciandoacamadafísicamanualmente, ou se estiver explicitamente tentando forçar o Driver areiniciar a comunicação. Se a camada física estiver configurada parareconexão automática, o Driver imediatamente tenta restabelecer aconexão.
0: O modem não está conectado, mas pode estar realizando ourecebendoumachamadaexterna
1:OmodemestáconectadoeoDrivercompletouou recebeuumachamada externa com sucesso. Enquanto estiver neste estado, acamadafísicaconsegueenviaroureceberdados
Estas propriedades controlam a configuração da Interface Modem(TAPI).Aspropriedadesdisponíveisnestaseçãosãoasseguintes:
IO.TAPI.AcceptIncoming
IO.TAPI.ModemID
IO.TAPI.PhoneNumber
IO.TAPI.AcceptIncoming TopoAnteriorPróximo
ConfigureemFalsoseomodemnãopodeaceitarchamadasexternas(o Driver se comporta comomestre) e configure em Verdadeiro parahabilitararecepçãodechamadas(oDriversecomportacomoescravo).
TempodeesperapelosinalCTS,emmilissegundos.ApósosinalRTSser ligado (ON), um temporizador é iniciado para esperar pelo sinalCTS. Se este temporizador expirar, o Driver aborta o envio de bytesatravés da porta serial. Disponível apenas quando a propriedadeIO.Serial.RTS está configurada em Toggle e a propriedadeIO.Serial.WaitCTSestáconfiguradaemVerdadeiro.
Número de milissegundos de atraso após o último byte ter sidoenviado através da porta serial, mas antes de desligar (OFF) o sinalRTS. Disponível apenas quando a propriedade IO.Serial.RTS estáconfigurada em Toggle e a propriedade IO.Serial.WaitCTS estáconfiguradaemFalso.
NúmerodemilissegundosdeatrasoapósosinalRTS tersido ligado(ON),masantesdosdadosseremenviados.Disponívelapenasquandoa propriedade IO.Serial.RTS está configurada em Toggle e apropriedadeIO.Serial.WaitCTSestáconfiguradaemFalso.
ConfigureemVerdadeiroparaforçaroDriveraesperarpelosinalCTSantes de enviar bytes quando o sinal RTS estiver ligado (ON).Disponível apenas quando a propriedade IO.Serial.RTS estáconfiguradaemToggle.