{"id":409,"date":"2016-08-29T23:48:14","date_gmt":"2016-08-30T02:48:14","guid":{"rendered":"http:\/\/www.pascalscada.com\/?page_id=409"},"modified":"2026-09-17T09:36:35","modified_gmt":"2026-09-17T12:36:35","slug":"protocol-drivers","status":"publish","type":"page","link":"https:\/\/www.pascalscada.com\/pb\/protocol-drivers\/","title":{"rendered":"Drivers de protocolo \u2013 vis\u00e3o geral"},"content":{"rendered":"<h5>Introdu\u00e7\u00e3o<\/h5>\n<p>Drivers de protocolo s\u00e3o os componentes que interpretam a configura\u00e7\u00e3o dos tags ligados a eles, convertem isso num pacote de dados no formato do protocolo, enviam o pacote pela porta de comunica\u00e7\u00e3o, recebem a resposta, decodificam e atualizam o valor dos tags \u2014 ou fazem o caminho inverso, para escrita.<\/p>\n<p>Ele \u00e9 o segundo componente a ser inserido numa aplica\u00e7\u00e3o de aquisi\u00e7\u00e3o de dados, logo ap\u00f3s a <a href=\"\/pb\/communication-ports\/\">porta de comunica\u00e7\u00e3o<\/a> e antes de todos os <a href=\"\/pb\/tags\/\">tags<\/a> que usar\u00e3o o driver de protocolo.<\/p>\n<h5>Protocolos suportados<\/h5>\n<table>\n<tbody>\n<tr>\n<td><strong>Classe do protocolo<\/strong><\/td>\n<td><strong>Protocolo<\/strong><\/td>\n<td><strong>Tipo de protocolo<\/strong><\/td>\n<td><strong>Comunica com<\/strong><\/td>\n<td><strong>Classe da porta necess\u00e1ria<\/strong><\/td>\n<td><strong>Tags suportadas<\/strong><\/td>\n<td><strong>Propriedades dos tags a configurar<\/strong><\/td>\n<td><strong>Observa\u00e7\u00f5es<\/strong><\/td>\n<\/tr>\n<tr>\n<td>TModBusRTUDriver<br \/>\n<img decoding=\"async\" alt=\"Sele\u00e7\u00e3o_092\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/Sele\u00e7\u00e3o_092.png\"\/><\/td>\n<td>Modbus RTU<\/td>\n<td>1 componente de protocolo para muitas esta\u00e7\u00f5es<\/td>\n<td>Qualquer equipamento que suporte Modbus RTU (endere\u00e7os de esta\u00e7\u00e3o 1 a 247)<\/td>\n<td>\n<p>TSerialPortDriver<br \/>\n<img decoding=\"async\" alt=\"Sele\u00e7\u00e3o_090\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/Sele\u00e7\u00e3o_090.png\"\/><\/p>\n<\/td>\n<td>TPLCTagNumber<img decoding=\"async\" alt=\"plctagnumber\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plctagnumber.png\"\/><br \/>\nTPLCBlock<img decoding=\"async\" alt=\"plcblock\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcblock.png\"\/><br \/>\nTPLCStruct<img decoding=\"async\" alt=\"plcstruct\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcstruct.png\"\/><br \/>\nTPLCString<img decoding=\"async\" alt=\"plcstring\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcstring.png\"\/><\/td>\n<td>\n<p>PLCStation<\/p>\n<p>MemReadFunction<\/p>\n<p>MemWriteFunction<\/p>\n<p>MemAddress<\/p>\n<p>TagType<\/p>\n<\/td>\n<td>Blocos e estruturas usam por padr\u00e3o at\u00e9 125 registradores por bloco de leitura\/escrita (propriedades <em>HoldingRegsMaxBlockSize<\/em>\/<em>AnalogRegsMaxBlockSize<\/em> do driver) e at\u00e9 2000 bits para entradas\/sa\u00eddas digitais (<em>InputsMaxBlockSize<\/em>\/<em>OutputsMaxBlockSize<\/em>) \u2014 todas configur\u00e1veis. Veja <a href=\"\/pb\/modbus-rtu-and-tcp\/\">Modbus RTU e TCP<\/a>.<\/td>\n<\/tr>\n<tr>\n<td>TModBusTCPDriver<br \/>\n<img decoding=\"async\" alt=\"modbus_tcp\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/modbus_tcp.png\"\/><\/td>\n<td>Modbus TCP<\/td>\n<td>1 componente de protocolo para 1 ou mais equipamentos, sobre a mesma conex\u00e3o<\/td>\n<td>Qualquer equipamento que suporte Modbus TCP<\/td>\n<td>TTCP_UDPPort<br \/>\n<img decoding=\"async\" alt=\"Sele\u00e7\u00e3o_091\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/Sele\u00e7\u00e3o_091.png\"\/><\/td>\n<td>TPLCTagNumber<img decoding=\"async\" alt=\"plctagnumber\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plctagnumber.png\"\/><br \/>\nTPLCBlock<img decoding=\"async\" alt=\"plcblock\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcblock.png\"\/><br \/>\nTPLCStruct<img decoding=\"async\" alt=\"plcstruct\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcstruct.png\"\/><br \/>\nTPLCString<img decoding=\"async\" alt=\"plcstring\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcstring.png\"\/><\/td>\n<td>\n<p>PLCStation<\/p>\n<p>MemReadFunction<\/p>\n<p>MemWriteFunction<\/p>\n<p>MemAddress<\/p>\n<p>TagType<\/p>\n<\/td>\n<td>Mesmos limites de bloco do Modbus RTU. Veja <a href=\"\/pb\/modbus-rtu-and-tcp\/\">Modbus RTU e TCP<\/a>.<\/td>\n<\/tr>\n<tr>\n<td>TWestASCIIDriver<br \/>\n<img decoding=\"async\" alt=\"west\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/west.png\"\/><\/td>\n<td>West ASCII<\/td>\n<td>1 componente de protocolo para muitas esta\u00e7\u00f5es<\/td>\n<td>Controladores West n6100\/P6100<\/td>\n<td>\n<p>TSerialPortDriver<br \/>\n<img decoding=\"async\" alt=\"Sele\u00e7\u00e3o_090\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/Sele\u00e7\u00e3o_090.png\"\/><\/p>\n<\/td>\n<td>TPLCTagNumber<img decoding=\"async\" alt=\"plctagnumber\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plctagnumber.png\"\/><\/td>\n<td>\n<p>PLCStation (1 a 99)<\/p>\n<p>MemAddress (0 a 27 \u2014 o par\u00e2metro West)<\/p>\n<\/td>\n<td>Todo registrador do West \u00e9 ponto flutuante de 32 bits; o driver ignora o <code>TagType<\/code> configurado e sempre entrega um float \u2014 deixe em <code>pttDefault<\/code>. Suporta leitura e escrita. Tem assistente de tags pr\u00f3prio.<\/td>\n<\/tr>\n<tr>\n<td>TIBoxDriver<br \/>\n<img decoding=\"async\" alt=\"ibox\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/ibox.png\"\/><\/td>\n<td>Thermo King i-Box<\/td>\n<td>1 componente de protocolo para muitas esta\u00e7\u00f5es<\/td>\n<td>Controladores de frio Thermo King i-Box<\/td>\n<td>TSerialPortDriver<br \/>\n<img decoding=\"async\" alt=\"Sele\u00e7\u00e3o_090\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/Sele\u00e7\u00e3o_090.png\"\/><\/td>\n<td>TPLCTagNumber<img decoding=\"async\" alt=\"plctagnumber\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plctagnumber.png\"\/><\/td>\n<td>\n<p>PLCStation (0 a 255)<\/p>\n<p>MemAddress \u2014 s\u00f3 os registradores (PID) 0, 96, 168, 200 a 205 e 247 s\u00e3o aceitos<\/p>\n<\/td>\n<td>Somente leitura: o i-Box n\u00e3o aceita comandos de escrita, qualquer tentativa retorna erro. Os valores j\u00e1 chegam prontos (percentual, horas, d\u00e9cimos de grau) \u2014 o <code>TagType<\/code> n\u00e3o altera o resultado.<\/td>\n<\/tr>\n<tr>\n<td>TISOTCPDriver<br \/>\n<img decoding=\"async\" alt=\"isotcp\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/isotcp.png\"\/><\/td>\n<td>Siemens S7 (S7comm) sobre ISOTCP<\/td>\n<td>1 componente de protocolo para 1 CLP<\/td>\n<td>\n<p>S7-200 via CP 243-1<\/p>\n<p>S7-300 \/ S7-400 (Ethernet)<\/p>\n<p>LOGO! 7 e 8 (Ethernet)<\/p>\n<p>S7-1200 \/ S7-1500 (Ethernet, com PUT\/GET habilitado e blocos sem acesso otimizado)<\/p>\n<p>Simuladores\/gateways compat\u00edveis com S7comm (PLCSIM+NetToPLCSim, Snap7 server)<\/p>\n<\/td>\n<td>TTCP_UDPPort<br \/>\n<img decoding=\"async\" alt=\"Sele\u00e7\u00e3o_091\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/Sele\u00e7\u00e3o_091.png\"\/><\/td>\n<td>TPLCTagNumber<img decoding=\"async\" alt=\"plctagnumber\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plctagnumber.png\"\/><br \/>\nTPLCBlock<img decoding=\"async\" alt=\"plcblock\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcblock.png\"\/><br \/>\nTPLCStruct<img decoding=\"async\" alt=\"plcstruct\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcstruct.png\"\/><br \/>\nTPLCString<img decoding=\"async\" alt=\"plcstring\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcstring.png\"\/><\/td>\n<td>\n<p>PLCRack, PLCSlot, PLCStation \u2014 no driver, n\u00e3o no tag<\/p>\n<p>MemReadFunction (\u00e1rea)<\/p>\n<p>MemFile_DB (quando a \u00e1rea \u00e9 DB)<\/p>\n<p>MemAddress<\/p>\n<p>TagType<\/p>\n<p>SwapBytes\/SwapWords\/SwapDWords conforme o tipo<\/p>\n<\/td>\n<td>N\u00e3o fala o protocolo nativo do S7-1200\/1500 (S7CommPlus) nem faz acesso simb\u00f3lico \u2014 veja <a href=\"\/pb\/s7-protocol-over-isotcp\/\">S7 Protocol over ISOTCP<\/a> para a tabela completa de \u00e1reas e tipos.<\/td>\n<\/tr>\n<tr>\n<td>TMelsecTCPDriver<br \/>\n<img decoding=\"async\" alt=\"melsec\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/melsec.png\"\/><\/td>\n<td>Mitsubishi MC Protocol (3E frame, bin\u00e1rio) sobre TCP<\/td>\n<td>1 componente de protocolo para 1 CLP<\/td>\n<td>Mitsubishi s\u00e9rie Q, L e iQ-F\/iQ-R com porta Ethernet ou m\u00f3dulo QJ71E71\/LJ71E71, configurados para MC Protocol\/SLMP bin\u00e1rio<\/td>\n<td>TTCP_UDPPort<br \/>\n<img decoding=\"async\" alt=\"Sele\u00e7\u00e3o_091\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/Sele\u00e7\u00e3o_091.png\"\/><\/td>\n<td>TPLCTagNumber<img decoding=\"async\" alt=\"plctagnumber\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plctagnumber.png\"\/><br \/>\nTPLCBlock<img decoding=\"async\" alt=\"plcblock\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcblock.png\"\/><br \/>\nTPLCString<img decoding=\"async\" alt=\"plcstring\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcstring.png\"\/><\/td>\n<td>\n<p>MemReadFunction \/ MemWriteFunction (c\u00f3digo do dispositivo: M, X, Y, D\u2026)<\/p>\n<p>MemAddress (decimal \u2014 aten\u00e7\u00e3o: X\/Y s\u00e3o numerados em hexadecimal no CLP)<\/p>\n<\/td>\n<td>Timers, contadores, registradores de link e as \u00e1reas SB\/DX\/DY ainda n\u00e3o s\u00e3o suportados. Veja <a href=\"\/pb\/mitsubishi-melsec-tcp\/\">Mitsubishi Melsec TCP<\/a>.<\/td>\n<\/tr>\n<tr>\n<td><strong>TS7CommPlusDriver<\/strong><\/td>\n<td>Siemens S7CommPlus<\/td>\n<td>1 componente de protocolo para 1 CLP<\/td>\n<td>S7-1200 e S7-1500 (protocolo nativo usado pelo TIA Portal, com blocos em acesso otimizado \u2014 n\u00e3o precisa deslig\u00e1-lo como no ISOTCP)<\/td>\n<td>TTCP_UDPPort<br \/>\n<img decoding=\"async\" alt=\"Sele\u00e7\u00e3o_091\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/Sele\u00e7\u00e3o_091.png\"\/><\/td>\n<td>TPLCTagNumber<img decoding=\"async\" alt=\"plctagnumber\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plctagnumber.png\"\/><br \/>\nTPLCBlock<img decoding=\"async\" alt=\"plcblock\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcblock.png\"\/><br \/>\nTPLCString<img decoding=\"async\" alt=\"plcstring\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcstring.png\"\/><\/td>\n<td>\n<p>LongAddress \u2014 caminho simb\u00f3lico do tag no CLP (ex.: <code>DB4.Var1<\/code>, <code>MArea.Clock_10Hz<\/code>)<\/p>\n<\/td>\n<td>Endere\u00e7a pelo nome do tag no programa do CLP, n\u00e3o por offset de mem\u00f3ria. P\u00e1gina dedicada em prepara\u00e7\u00e3o.<\/td>\n<\/tr>\n<tr>\n<td><strong>TLGXDriver<\/strong><\/td>\n<td>EtherNet\/IP (CIP), Rockwell\/Allen-Bradley<\/td>\n<td>1 componente de protocolo para 1 CLP<\/td>\n<td>CLPs Rockwell\/Allen-Bradley da fam\u00edlia Logix (ControlLogix, CompactLogix\u2026) com porta EtherNet\/IP<\/td>\n<td>TTCP_UDPPort<br \/>\n<img decoding=\"async\" alt=\"Sele\u00e7\u00e3o_091\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/Sele\u00e7\u00e3o_091.png\"\/><\/td>\n<td>TPLCTagNumber<img decoding=\"async\" alt=\"plctagnumber\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plctagnumber.png\"\/><br \/>\nTPLCBlock<img decoding=\"async\" alt=\"plcblock\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcblock.png\"\/><br \/>\nTPLCString<img decoding=\"async\" alt=\"plcstring\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/plcstring.png\"\/><\/td>\n<td>\n<p>LongAddress \u2014 nome do tag Logix (ex.: <code>Motor1.Speed<\/code>, <code>MinhaString.DATA<\/code> para STRING)<\/p>\n<\/td>\n<td>Endere\u00e7amento simb\u00f3lico, como no TIA Portal\/Studio 5000: n\u00e3o h\u00e1 offset de mem\u00f3ria a configurar. P\u00e1gina dedicada em prepara\u00e7\u00e3o.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>Estrutura b\u00e1sica de uma aplica\u00e7\u00e3o de aquisi\u00e7\u00e3o de dados<\/h5>\n<p>A imagem abaixo resume a cadeia porta \u2192 driver \u2192 tags \u2192 controles, comum a todos os protocolos da tabela acima:<\/p>\n<p><a href=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/g8441.png\"><img decoding=\"async\" alt=\"Estrutura b\u00e1sica de uma aplica\u00e7\u00e3o de aquisi\u00e7\u00e3o de dados\" src=\"http:\/\/www.pascalscada.com\/wp-content\/uploads\/2016\/08\/g8441-300x89.png\"><\/a>Estrutura b\u00e1sica de uma aplica\u00e7\u00e3o de aquisi\u00e7\u00e3o de dados<\/p>\n<h5>Exemplos relacionados<\/h5>\n<ul>\n<li><a href=\"https:\/\/github.com\/fluisgirardi\/pascalscada_v0\/tree\/master\/examples\/laz_modbus_tcp_example\"><code>examples\/laz_modbus_tcp_example<\/code><\/a>, <a href=\"https:\/\/github.com\/fluisgirardi\/pascalscada_v0\/tree\/master\/examples\/laz_modbus_rtu_scanner\"><code>examples\/laz_modbus_rtu_scanner<\/code><\/a> \u2014 Modbus TCP e RTU.<\/li>\n<li><a href=\"https:\/\/github.com\/fluisgirardi\/pascalscada_v0\/tree\/master\/examples\/laz_isotcp_demonstration\"><code>examples\/laz_isotcp_demonstration<\/code><\/a> \u2014 Siemens S7 sobre ISOTCP.<\/li>\n<li><a href=\"https:\/\/github.com\/fluisgirardi\/pascalscada_v0\/tree\/master\/examples\/laz_west6100_plus_demonstration\"><code>examples\/laz_west6100_plus_demonstration<\/code><\/a> \u2014 West ASCII.<\/li>\n<li><a href=\"https:\/\/github.com\/fluisgirardi\/pascalscada_v0\/tree\/master\/examples\/laz_ibox\"><code>examples\/laz_ibox<\/code><\/a> \u2014 Thermo King i-Box.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o Drivers de protocolo s\u00e3o os componentes que interpretam a configura\u00e7\u00e3o dos tags ligados a eles, convertem isso num pacote de dados no formato do protocolo, enviam o pacote pela &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"template-fullwidth.php","meta":{"footnotes":""},"class_list":["post-409","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/pages\/409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/comments?post=409"}],"version-history":[{"count":42,"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/pages\/409\/revisions"}],"predecessor-version":[{"id":1231,"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/pages\/409\/revisions\/1231"}],"wp:attachment":[{"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/media?parent=409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}