{"id":1208,"date":"2026-09-17T09:11:22","date_gmt":"2026-09-17T12:11:22","guid":{"rendered":"https:\/\/www.pascalscada.com\/2026\/09\/17\/pascalscada-is-alive\/"},"modified":"2026-09-17T20:01:37","modified_gmt":"2026-09-17T23:01:37","slug":"pascalscada-is-alive","status":"publish","type":"post","link":"https:\/\/www.pascalscada.com\/pb\/2026\/09\/17\/pascalscada-is-alive\/","title":{"rendered":"PascalSCADA est\u00e1 vivo!"},"content":{"rendered":"<p>Depois de mais de 10 anos sem publicar praticamente nada por aqui, um recado r\u00e1pido: o PascalSCADA est\u00e1 vivo. N\u00e3o s\u00f3 vivo \u2014 nas \u00faltimas semanas o projeto recebeu mais aten\u00e7\u00e3o do que em qualquer per\u00edodo recente, ent\u00e3o vale um resumo do que mudou.<\/p>\n<h5>Dois drivers de protocolo novos<\/h5>\n<ul>\n<li><strong>S7CommPlus<\/strong> \u2014 o protocolo nativo que o TIA Portal usa para falar com CLPs <strong>S7-1200 e S7-1500<\/strong>. Diferente do driver ISOTCP (que j\u00e1 existia), o S7CommPlus n\u00e3o exige desligar o acesso otimizado dos blocos de dados: voc\u00ea endere\u00e7a o tag pelo <strong>nome simb\u00f3lico<\/strong> (<code>DB4.Var1<\/code>, <code>MArea.Clock_10Hz<\/code>), como no pr\u00f3prio TIA. Tem suporte a usu\u00e1rio\/senha para CPUs com prote\u00e7\u00e3o de acesso.<\/li>\n<li><strong>EtherNet\/IP (CIP)<\/strong> \u2014 driver novo para CLPs <strong>Rockwell\/Allen-Bradley<\/strong> da fam\u00edlia Logix (ControlLogix, CompactLogix\u2026), tamb\u00e9m com endere\u00e7amento simb\u00f3lico pelo nome do tag. J\u00e1 vem com assistente de tags (Tag Builder) pr\u00f3prio.<\/li>\n<\/ul>\n<h5>Uma limpeza grande, com testes de verdade<\/h5>\n<p>Esta \u00e9 a parte menos vistosa e mais importante: o PascalSCADA nunca teve uma su\u00edte de testes automatizados de verdade. Isso mudou. Praticamente toda a biblioteca \u2014 portas de comunica\u00e7\u00e3o, os drivers de protocolo (Modbus RTU\/TCP, Melsec, S7\/ISOTCP, S7CommPlus, EtherNet\/IP, West ASCII, i-Box), a camada de tags e a biblioteca de controles HMI \u2014 ganhou testes unit\u00e1rios, e ca\u00e7ar cada teste destravou uma pilha de defeitos que estavam sentados no c\u00f3digo, alguns h\u00e1 anos:<\/p>\n<ul>\n<li>leituras Modbus que deixavam a porta travada;<\/li>\n<li>o driver ISOTCP que ficava esperando para sempre um CLP que n\u00e3o respondia;<\/li>\n<li>escritas do West ASCII que perdiam a grandeza do valor;<\/li>\n<li>vazamentos de mem\u00f3ria em pontos centrais \u2014 a thread de scan, os loggers de eventos e alarmes, o gerenciador de usu\u00e1rios central, o servidor de mutex de rede;<\/li>\n<li>o teclado virtual no Windows, onde o <code>-<\/code> e o <code>.<\/code> do teclado num\u00e9rico sa\u00edam como letra ou lixo;<\/li>\n<li>um <code>THMICheckBox<\/code> que \u00e0s vezes escrevia duas vezes no tag por uma mudan\u00e7a s\u00f3;<\/li>\n<li>o selo de seguran\u00e7a que, num caso espec\u00edfico, desabilitava qualquer controle criado em tempo de execu\u00e7\u00e3o.<\/li>\n<\/ul>\n<p>A lista real \u00e9 bem mais longa \u2014 d\u00e1 para conferir no hist\u00f3rico de commits do <a href=\"https:\/\/github.com\/fluisgirardi\/pascalscada_v0\">reposit\u00f3rio no GitHub<\/a>.<\/p>\n<h5>Compilando e testando em cinco plataformas<\/h5>\n<p>O projeto agora tem integra\u00e7\u00e3o cont\u00ednua rodando os testes em Windows 32\/64, Linux 32\/64 e FreeBSD 64 a cada mudan\u00e7a \u2014 e testes tamb\u00e9m em ARM (ARMHF\/AARCH64). Isso j\u00e1 pegou diferen\u00e7as sutis entre plataformas que passariam despercebidas antes (um <code>TCriticalSection<\/code> com sinaliza\u00e7\u00e3o diferente entre sistemas, caminhos de dispositivo seriais espec\u00edficos do Unix, entre outras).<\/p>\n<h5>A documenta\u00e7\u00e3o tamb\u00e9m levou uma geral<\/h5>\n<p>O site estava com v\u00e1rias p\u00e1ginas de &#8220;em constru\u00e7\u00e3o&#8221; desde sempre, e outras bem desatualizadas. Reescrevemos boa parte: <a href=\"\/pb\/tags\/\">Tags<\/a>, <a href=\"\/pb\/s7-protocol-over-isotcp\/\">Protocolo S7 sobre ISOTCP<\/a>, <a href=\"\/pb\/mitsubishi-melsec-tcp\/\">Mitsubishi Melsec TCP<\/a>, <a href=\"\/pb\/hmi-control-library-hcl\/\">Biblioteca de controles HMI<\/a>, <a href=\"\/pb\/security-system\/\">Sistema de seguran\u00e7a<\/a>, <a href=\"\/pb\/scale-processors\/\">Processadores de escala<\/a>, <a href=\"\/pb\/hmidbconnection\/\">HMIDBConnection<\/a>, a vis\u00e3o geral de <a href=\"\/pb\/protocol-drivers\/\">drivers de protocolo<\/a>, e um tutorial novo, <a href=\"\/pb\/writing-a-protocol-driver\/\">Escrevendo um driver de protocolo<\/a>, para quem quiser adicionar suporte a outro equipamento. A p\u00e1gina de <a href=\"\/pb\/how-install-pascalscada\/\">instala\u00e7\u00e3o<\/a> tamb\u00e9m foi atualizada para o fluxo atual (GitHub + Lazarus atual, sem o ZeosLib).<\/p>\n<p>Hoje, para instalar tudo isso, o caminho \u00e9 pegar o c\u00f3digo direto do <a href=\"https:\/\/github.com\/fluisgirardi\/pascalscada_v0\">GitHub<\/a> (veja <a href=\"\/pb\/how-install-pascalscada\/\">Como instalar<\/a>) \u2014 o pacote publicado no <em>Online Package Manager<\/em> do Lazarus ainda \u00e9 a vers\u00e3o 0.7.7, de 2021. Isso deve mudar nas <strong>pr\u00f3ximas semanas<\/strong>: a ideia \u00e9 publicar uma vers\u00e3o nova no OPM j\u00e1 com os dois drivers novos e toda essa limpeza, para quem prefere instalar direto pela IDE sem clonar reposit\u00f3rio.<\/p>\n<p>Se voc\u00ea usa o PascalSCADA, testou algo que quebrou ou tem uma sugest\u00e3o, abra uma issue no <a href=\"https:\/\/github.com\/fluisgirardi\/pascalscada_v0\">GitHub<\/a> \u2014 \u00e9 para l\u00e1 que o projeto se mudou, e \u00e9 l\u00e1 que a conversa acontece agora.<\/p>","protected":false},"excerpt":{"rendered":"<p>Depois de mais de 10 anos sem publicar praticamente nada por aqui, um recado r\u00e1pido: o PascalSCADA est\u00e1 vivo. N\u00e3o s\u00f3 vivo \u2014 nas \u00faltimas semanas o projeto recebeu mais &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-1208","post","type-post","status-publish","format-standard","hentry","category-development"],"_links":{"self":[{"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/posts\/1208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/types\/post"}],"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=1208"}],"version-history":[{"count":1,"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/posts\/1208\/revisions"}],"predecessor-version":[{"id":1209,"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/posts\/1208\/revisions\/1209"}],"wp:attachment":[{"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/media?parent=1208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/categories?post=1208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pascalscada.com\/pb\/wp-json\/wp\/v2\/tags?post=1208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}