<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4158170431969272603</id><updated>2012-02-09T10:53:54.548-03:00</updated><category term='arm'/><category term='udp'/><category term='i386'/><category term='protocol'/><category term='solution'/><category term='package'/><category term='documentation'/><category term='7.10'/><category term='bug'/><category term='progresso'/><category term='new'/><category term='0.7.3'/><category term='art'/><category term='protocolo'/><category term='open source'/><category term='TCrossEvent'/><category term='estruturas'/><category term='telemecanique'/><category term='delphi'/><category term='alarms'/><category term='S7-200'/><category term='32bits'/><category term='criar'/><category term='S7-1200'/><category term='0.8'/><category term='64'/><category term='scheduler'/><category term='fpc'/><category term='bits'/><category term='2.4'/><category term='ce'/><category term='allen bradley'/><category term='performance'/><category term='freebsd'/><category term='0.6.4d'/><category term='WEST 6100'/><category term='OPC'/><category term='esclarecimento'/><category term='driver de protocolo'/><category term='desempenho'/><category term='0.7'/><category term='livre'/><category term='Profinet'/><category term='0.7.2'/><category term='automatico'/><category term='documentação'/><category term='ule'/><category term='language'/><category term='struct'/><category term='wince'/><category term='lrs'/><category term='user management'/><category term='user'/><category term='page'/><category term='10.2'/><category term='ZeosLib'/><category term='2.6'/><category term='pascalscada'/><category term='lazarus'/><category term='projeto'/><category term='dead-lock'/><category term='0.6.4'/><category term='2.5.1'/><category term='0.7.1'/><category term='CP-243'/><category term='drivers'/><category term='0.6'/><category term='WEST'/><category term='tag bit'/><category term='stability'/><category term='fix'/><category term='ubuntu'/><category term='project'/><category term='release'/><category term='vista'/><category term='freepascal'/><category term='svn'/><category term='modbus'/><category term='data type'/><category term='Profibus'/><category term='Can Open'/><category term='support'/><category term='linux x86_64'/><category term='TEvent'/><category term='need'/><category term='rtu'/><category term='event'/><category term='tag'/><category term='64 bits'/><category term='liberado'/><category term='evento'/><category term='snapshot'/><category term='application'/><category term='alarm system'/><category term='help'/><category term='site'/><category term='desenvolvimento'/><category term='arte'/><category term='wincc'/><category term='novo'/><category term='download'/><category term='8.04'/><category term='amd64'/><category term='recursos'/><category term='Resources'/><category term='correção'/><category term='script'/><category term='EthernetI'/><category term='windows'/><category term='x86_64'/><category term='usuários'/><category term='acertos'/><category term='screenshots'/><category term='driver'/><category term='linux'/><category term='res'/><category term='translation'/><category term='english'/><category term='novidade'/><category term='0.6.3'/><category term='Ethernet'/><category term='sqlite'/><category term='12.1'/><category term='automated'/><category term='thread'/><category term='codigo aberto'/><category term='create'/><category term='s7-224'/><category term='Lazarus Resouce'/><category term='tcp'/><category term='slackware'/><category term='hmi'/><category term='isotcp'/><category term='scada'/><category term='unix'/><category term='siemens'/><category term='0.6.2'/><category term='demonstration'/><category term='structure'/><category term='features'/><category term='qt'/><category term='fixes'/><category term='Ibox'/><category term='gerenciamento de usuários'/><category term='protocol driver'/><category term='estabilidade'/><category term='deadlock'/><category term='management'/><title type='text'>PascalSCADA - HMI/SCADA for developers</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>73</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-1552208396888506976</id><published>2012-01-31T00:13:00.000-03:00</published><updated>2012-01-31T00:14:42.062-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fpc'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='32bits'/><category scheme='http://www.blogger.com/atom/ns#' term='64 bits'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='0.7.3'/><title type='text'>PascalSCADA 0.7.3</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;"&gt;&lt;span style="font-size: 11px; line-height: 14px;"&gt;PascalSCADA 0.7.3 está chegando. As principais mudanças são o suporte a Delphi 2009+&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px;"&gt;(2009, 2010, XE and XE2, somente 32 bits), melhorias de desempenho e suporte inicial a gerenciamento de usuários, incluindo gerenciamento de usuários integrado ao SIMATIC WinCC.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px;"&gt;&lt;b&gt;In english&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;"&gt;&lt;span style="font-size: 11px; line-height: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;"&gt;&lt;span style="font-size: 11px; line-height: 14px;"&gt;PascalSCADA 0.7.3 is coming. The main goal is the Delphi 2009+ support (2009, 2010, XE and XE2, only 32 bits), performance improvements and the initial support for user management, including a user management integrated with SIMATIC WinCC.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-1552208396888506976?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/1552208396888506976/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=1552208396888506976' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1552208396888506976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1552208396888506976'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2012/01/pascalscada-073.html' title='PascalSCADA 0.7.3'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-3631978493511911418</id><published>2012-01-05T01:27:00.000-03:00</published><updated>2012-01-05T01:27:24.624-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='user'/><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='usuários'/><category scheme='http://www.blogger.com/atom/ns#' term='siemens'/><category scheme='http://www.blogger.com/atom/ns#' term='wincc'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='gerenciamento de usuários'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='user management'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><title type='text'>WinCC User Management integration</title><content type='html'>Foi finalizado esta noite, o componente que permite ao PascalSCADA validar usuários usando o sistema de gerenciamento de usuários do Siemens WinCC. Para isso, várias melhorias no sistema de gerenciamento interno de usuários do PascalSCADA foram feitas.&lt;br /&gt;&lt;br /&gt;Alguns de vocês pode perguntar: Mas para que isto serve? Explico: Em alguns casos, é necessário trabalhar com uma aplicação PascalSCADA integrada a uma aplicação do WinCC (meu caso atualmente). Então não faz sentido ter dois gerenciamentos de usuários distintos. Então, para simplificar, cadastre as permissões e usuários no WinCC e faça uso destes na sua aplicação PascalSCADA.&lt;br /&gt;&lt;br /&gt;Ainda faltam alguns detalhes, como algumas traduções e acertos para funcionar com Delphi. Conto com o feedback de vocês.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Has been finished this night, the component that allows PascalSCADA check the user permissions using the Siemens WinCC User Management. To do that, a lot of improvements on the internal user management of PascalSCADA has been made. &lt;br /&gt;&lt;br /&gt;Somebody can ask: What's the utility of this? I'll explain: in certain&amp;nbsp;circumstances, you may need work with a PascalSCADA application integrated with a WinCC application (my case&amp;nbsp;currently). Makes no sense have two user management&amp;nbsp;separately. So, to simplify, add users and authorizations on user manager of WinCC and use it on your PascalSCADA application.&lt;br /&gt;&lt;br /&gt;Some issues are not solved yet, like translations and Delphi support. I hope your feedback!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-3631978493511911418?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/3631978493511911418/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=3631978493511911418' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3631978493511911418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3631978493511911418'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2012/01/wincc-user-management-integration.html' title='WinCC User Management integration'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-7148485449184669922</id><published>2011-11-28T21:23:00.001-03:00</published><updated>2011-11-28T22:07:41.886-03:00</updated><title type='text'>Final de ano/End of year</title><content type='html'>&lt;br /&gt;Peço desculpas a todos que acompanham o projeto PascalSCADA de uma forma ou outra. Sei que ando relaxado e demorando muito para responder, mas o volume de trabalho que acumulou para este final de ano está me tirando o sono. Aviso que o projeto não esta parado, está apenas mais devagar. Estou tendo que focar por necessidade no recurso de banco de dados, mais especificamente na parte de gerenciamento de usuários. Porem outros recursos estão em andamento, como suporte a Windows CE (servirá para muitas IHM's disponíveis no mercado). Fora isso, tenho recebido mensagens orientando uma implementação do protocolo Profibus (nativo) e OPC-UA.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;In English&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I apologize to everyone that follow the project PascalSCADA. I'm very relaxed and slow to respond, but the work load this end of year make me lose sleep (I don't know how write this :) ). I'm writing this to tell that the project is walking, slow but it walks. I'm focused on develop on database piece of PascalSCADA, more specifically on User Management. However others features has been developed, like Windows CE support (PascalSCADA will be enabled to develop apps for a lot of HMI's available on market). Together, I'm receiving messages guiding a implementation of a Profibus and OPC-UA drivers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-7148485449184669922?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/7148485449184669922/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=7148485449184669922' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7148485449184669922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7148485449184669922'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/11/peco-desculpas-todos-que-acompanham-o.html' title='Final de ano/End of year'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-8667974624669730385</id><published>2011-10-10T10:19:00.002-03:00</published><updated>2011-10-10T10:19:43.792-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZeosLib'/><title type='text'>ZeosLib SVN</title><content type='html'>Um aviso aos desenvolvedores que utilizam ZeosLib: o repositorio SVN hospedado em&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: red; font-family: inherit;"&gt;&lt;em style="font-style: normal;"&gt;svn&lt;/em&gt;://zeos.firmos.at/zeos&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 16px;"&gt;mudou para&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 13px;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: inherit;"&gt;https://zeoslib.svn.sourceforge.net/svnroot/zeoslib&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Fica a dica para desavisados como eu.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: large;"&gt;&lt;b&gt;In english&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;A&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;notification to developers that uses ZeosLib: The SVN repository&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="hps"&gt;which was&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;hosted at&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;em style="color: red; font-style: normal;"&gt;svn&lt;/em&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;://zeos.firmos.at/zeos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;now is hosted at&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; line-height: 13px;"&gt;https://zeoslib.svn.sourceforge.net/svnroot/zeoslib&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-8667974624669730385?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/8667974624669730385/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=8667974624669730385' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8667974624669730385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8667974624669730385'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/10/zeoslib-svn.html' title='ZeosLib SVN'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-6610732218074893109</id><published>2011-09-19T09:23:00.000-03:00</published><updated>2011-09-19T09:23:55.834-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ce'/><category scheme='http://www.blogger.com/atom/ns#' term='thread'/><category scheme='http://www.blogger.com/atom/ns#' term='wince'/><category scheme='http://www.blogger.com/atom/ns#' term='32bits'/><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='fixes'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='0.7.3'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>Windows CE: primeiros passos/first steps</title><content type='html'>Em conjunto com Andrea Buono, a primeira versão do PascalSCADA para Windows CE está quase pronto. Foram identificados dois bugs que impediam programas multi-tarefas (inclui-se o PascalSCADA) funcionarem nesta plataforma. Enviei duas correções aos projetos Lazarus e FreePascal, e após estas serem feitas, o PascalSCADA rodou perfeitamente nesta plataforma.Agora, com mais alguns bugfixes, a versão 0.7.3 sairá com suporte a esta plataforma.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Together with Andrea Buono, the first version of PascalSCADA that support Windows CE is coming. Has been identified two bugs that breaks multi-threading applications (including the PascalSCADA) on this platform. I sent two patches to projects Lazarus and FreePascal, and after this patches are applied, the PascalSCADA runs fine on this platform. With some more bugfixes, the version 0.7.3 will come with support to this platform.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-6610732218074893109?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/6610732218074893109/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=6610732218074893109' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6610732218074893109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6610732218074893109'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/09/windows-ce-primeiros-passosfirst-steps.html' title='Windows CE: primeiros passos/first steps'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-195233948227454826</id><published>2011-08-06T10:30:00.002-03:00</published><updated>2011-08-09T09:00:15.309-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='0.7.2'/><category scheme='http://www.blogger.com/atom/ns#' term='documentação'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='siemens'/><category scheme='http://www.blogger.com/atom/ns#' term='fpc'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ZeosLib'/><category scheme='http://www.blogger.com/atom/ns#' term='fixes'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='isotcp'/><title type='text'>PascalSCADA 0.7.2 liberado/released</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;O PascalSCADA 0.7.2 foi liberado. Esta é apenas uma versão de correção de alguns bugs, entre os quais podemos citar:&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Congelamento de aplicações em sistemas Windows Vista e 7 usando porta serial.&lt;/li&gt;&lt;li&gt;Melhorias no gerenciamento de eventos de conexão.&lt;/li&gt;&lt;li&gt;Correções no driver ISOTCP que agora pode gerenciar tags com endereço ou tamanho maiores que 8191 bytes&lt;/li&gt;&lt;li&gt;Tradução da documentação para o inglês.&lt;/li&gt;&lt;li&gt;Inclusão da ZeosLib&amp;nbsp;7.0&amp;nbsp;como camada de banco de dados.&lt;/li&gt;&lt;li&gt;Alterações na instalação do PascalSCADA para Delphi para poder incluir a ZeosLib.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;As instruções de como instalar o PascalSCADA em &lt;a href="http://www.pascalscada.com/"&gt;http://www.pascalscada.com&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Para fazer o download do PascalSCADA, &lt;a href="http://sourceforge.net/projects/pascalscada/files/0.7.2/"&gt;clique aqui&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;In english&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PascalSCADA 0.7.2 is released. It's a bug fix release, that fixes the following issues:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Applications using the Serial port under Windows Vista/7 can freeze.&lt;/li&gt;&lt;li&gt;Improvements on connection event handling.&lt;/li&gt;&lt;li&gt;ISOTCP now can handle tags with address or size bigger than 8191 bytes.&lt;/li&gt;&lt;li&gt;Translation of class documentation to english.&lt;/li&gt;&lt;li&gt;Added the ZeosLib 7.0 as database layer.&lt;/li&gt;&lt;li&gt;Changes in PascalSCADA package for Delphi to include ZeosLib.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;The instructions of how install PascalSCADA at&amp;nbsp;&lt;a href="http://www.pascalscada.com/"&gt;http://www.pascalscada.com&lt;/a&gt;.&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To download the PascalSCADA,&amp;nbsp;&lt;a href="http://sourceforge.net/projects/pascalscada/files/0.7.2/"&gt;click here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-195233948227454826?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/195233948227454826/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=195233948227454826' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/195233948227454826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/195233948227454826'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/08/pascalscada-072-liberadoreleased.html' title='PascalSCADA 0.7.2 liberado/released'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-7244607394223205642</id><published>2011-07-12T08:22:00.000-03:00</published><updated>2011-07-12T08:22:16.626-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='support'/><category scheme='http://www.blogger.com/atom/ns#' term='tag'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='0.8'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><title type='text'>PascalSCADA 0.8 will break the compatibility with older versions</title><content type='html'>Recently, I started a application using the PascalSCADA, that will uses a lot of tags (more than 10000). To make me sad, the current implementation of PascalSCADA, where all tags are descendants of TComponent, can't be handled fastest on Lazarus and Delphi. Inserting 1000 tags, takes 52 seconds on my laptop, and 4000 tags,&amp;nbsp;freezes&amp;nbsp;Lazarus for at least 15 minutes.&lt;br /&gt;&lt;br /&gt;So, to solve this, I'm studying a way to handle a lot of tags on any IDE. And all solutions will change the current tag behavior on existent applications, breaking the compatibility with older applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-7244607394223205642?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/7244607394223205642/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=7244607394223205642' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7244607394223205642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7244607394223205642'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/07/pascalscada-08-will-break-compatibility.html' title='PascalSCADA 0.8 will break the compatibility with older versions'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-2183028233474733077</id><published>2011-06-22T11:37:00.001-03:00</published><updated>2011-06-22T11:57:41.229-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='32bits'/><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='64 bits'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Translation status</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;In english only&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Somebody can tell me if can understand my translation of PascalSCADA?&lt;br /&gt;&lt;br /&gt;I didn't receive any feedback yet...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-2183028233474733077?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/2183028233474733077/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=2183028233474733077' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2183028233474733077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2183028233474733077'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/06/translation-status.html' title='Translation status'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-1377832476166602986</id><published>2011-06-20T16:17:00.001-03:00</published><updated>2011-06-20T16:19:03.985-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='codigo aberto'/><category scheme='http://www.blogger.com/atom/ns#' term='Profinet'/><category scheme='http://www.blogger.com/atom/ns#' term='Profibus'/><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='siemens'/><title type='text'>Open Source implementation of Profibus/Profinet?</title><content type='html'>Estava procurando por projetos Profibus/Profinet Open Source. Para minha tristeza, encontrei os seguintes links (em inglês):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pbmaster.org/en/index.pl?action=patents"&gt;http://pbmaster.org/en/index.pl?action=patents&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;e&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.engineeringtalk.com/news/pro/pro101.html"&gt;http://www.engineeringtalk.com/news/pro/pro101.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Triste não?&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;In english&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was searching about Profibus/Profinet open source projects on web. I found some links that made me sad (english only):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pbmaster.org/en/index.pl?action=patents"&gt;http://pbmaster.org/en/index.pl?action=patents&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;AND&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.engineeringtalk.com/news/pro/pro101.html"&gt;http://www.engineeringtalk.com/news/pro/pro101.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sad... no?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-1377832476166602986?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/1377832476166602986/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=1377832476166602986' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1377832476166602986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1377832476166602986'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/06/open-source-implementation-of.html' title='Open Source implementation of Profibus/Profinet?'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-6630944146947784120</id><published>2011-05-30T19:35:00.000-03:00</published><updated>2011-05-30T19:35:21.269-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scada'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><title type='text'>A tradução começou/The translation was started</title><content type='html'>A tradução do PascalSCADA para inglês começou! Todos os comentários do código fonte vão ficar assim&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{$IFDEF PORTUGUES}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;//: Comentário em&amp;nbsp;português&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{$ELSE}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;//: Comentário em inglês&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{$ENDIF}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Escolhi deixar o comentário em inglês próximo ao&amp;nbsp;&lt;/span&gt;código, pois o inglês consegue chegar a um número maior de pessoas.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Este padrão também serve para gerar a documentação das classes em ambas línguas.&lt;br /&gt;&lt;br /&gt;Se você tem interesse em ajudar na tradução, envie os códigos traduzidos para o e-mail &lt;a href="mailto:fabio@pascalscada.com"&gt;fabio@pascalscada.com&lt;/a&gt;&amp;nbsp;ou para&amp;nbsp;&lt;a href="https://sourceforge.net/apps/mantisbt/pascalscada/view.php?id=38"&gt;https://sourceforge.net/apps/mantisbt/pascalscada/view.php?id=38&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;In english&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The translation process of PascalSCADA has been started! All source code comments will be something like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{$IFDEF PORTUGUES}&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;//: Portuguese comment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{$ELSE}&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;//: English comment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{$ENDIF}&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I put the comments in&amp;nbsp;&lt;/span&gt;English&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;near of the code because many people speaks&amp;nbsp;&lt;/span&gt;English&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;This pattern will be used to generate the class documentation on both languages.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;If are you interested in translate, send your translation to &lt;a href="mailto:fabio@pascalscada.com"&gt;fabio@pascalscada.com&lt;/a&gt;&amp;nbsp;or to&amp;nbsp;&lt;/span&gt;&lt;a href="https://sourceforge.net/apps/mantisbt/pascalscada/view.php?id=38"&gt;https://sourceforge.net/apps/mantisbt/pascalscada/view.php?id=38&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-6630944146947784120?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/6630944146947784120/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=6630944146947784120' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6630944146947784120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6630944146947784120'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/05/traducao-comecouthe-translation-was.html' title='A tradução começou/The translation was started'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-742728446070818395</id><published>2011-05-26T11:01:00.003-03:00</published><updated>2011-05-30T09:59:33.495-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OPC'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><title type='text'>Chamado para suportar OPC/Request to support OPC</title><content type='html'>Estou requisitando ajuda para suportar OPC-DA no PascalSCADA. Como o projeto visa manter suporte a&amp;nbsp;múltiplas&amp;nbsp;plataformas, estou pensando em portar as bibliotecas JInterop e Utgard (que funcionam em várias plataformas) para pascal. Se você tem interesse e conhece bem java e pascal, entre em contato comigo (fabio@pascalscada.com)!&lt;br /&gt;&lt;br /&gt;Lembro mais uma vez, que daqui alguns dias o novo site do projeto PascalSCADA será o &lt;a href="http://www.pascalscada.com/"&gt;www.pascalscada.com&lt;/a&gt; (que está em construção ainda).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I'm requesting help to support OPC-DA on PascalSCADA. As the target of PascalSCADA is keep the support to multiples platforms, I'm thinking to convert the libraries JInterop and Utgard (that works on multiples platforms) to pascal. If are you interested and knows java and pascal, please contact-me (fabio@pascalscada.com)!&lt;br /&gt;&lt;br /&gt;Hint: in a few days, the new site of PascalSCADA project will be the&amp;nbsp;&lt;a href="http://www.pascalscada.com/"&gt;www.pascalscada.com&lt;/a&gt;&amp;nbsp;(under construction yet).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-742728446070818395?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/742728446070818395/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=742728446070818395' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/742728446070818395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/742728446070818395'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/05/chamado-para-suportar-opcrequest-to.html' title='Chamado para suportar OPC/Request to support OPC'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-6383867650880770478</id><published>2011-05-07T10:23:00.000-03:00</published><updated>2011-05-07T10:23:45.879-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='page'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='site'/><title type='text'>O novo site do PascalSCADA está chegando/New PascalSCADA website is comming</title><content type='html'>O nova página do PascalSCADA está chegando. O futuro endereço será &lt;a href="http://www.pascalscada.com/"&gt;www.pascalscada.com&lt;/a&gt;. O que anda faltando é tempo para faze-lá :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The new home page of PascalSCADA is comming. The new address will be &lt;a href="http://www.pascalscada.com/"&gt;www.pascalscada.com&lt;/a&gt;. The unique thing that is missing is time to do it :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-6383867650880770478?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/6383867650880770478/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=6383867650880770478' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6383867650880770478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6383867650880770478'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/05/o-novo-site-do-pascalscada-esta.html' title='O novo site do PascalSCADA está chegando/New PascalSCADA website is comming'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-3376878047369286484</id><published>2011-04-25T10:57:00.000-03:00</published><updated>2011-04-25T10:57:12.920-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scheduler'/><category scheme='http://www.blogger.com/atom/ns#' term='dead-lock'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='deadlock'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Windows Vista deadlock</title><content type='html'>Alguns dias atras, detectei que o PascalSCADA rodando sobre Windows Vista pode travar sem motivo aparente. Após algumas buscas descobri que ocorreram mudança no gerenciamento de tarefas desse sistema operacional ( &lt;a href="http://en.wikipedia.org/wiki/Scheduling_(computing)#Windows"&gt;http://en.wikipedia.org/wiki/Scheduling_(computing)#Windows&lt;/a&gt; ) o que pode ser a explicação para o problema. Uma correção será disponibilizada em breve.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Some days ago, I detected that PascaSCADA running over Windows Vista can freeze without an explication. After searching on web, I discover that Windows Vista scheduler has changed ( &lt;a href="http://en.wikipedia.org/wiki/Scheduling_(computing)#Windows"&gt;http://en.wikipedia.org/wiki/Scheduling_(computing)#Windows&lt;/a&gt; ) &amp;nbsp;that can be the origin of the issue. A fix will be available soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-3376878047369286484?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/3376878047369286484/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=3376878047369286484' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3376878047369286484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3376878047369286484'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/04/windows-vista-deadlock.html' title='Windows Vista deadlock'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-4865394363955048902</id><published>2011-04-06T16:46:00.000-03:00</published><updated>2011-04-06T16:46:33.225-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='application'/><category scheme='http://www.blogger.com/atom/ns#' term='s7-224'/><category scheme='http://www.blogger.com/atom/ns#' term='S7-200'/><category scheme='http://www.blogger.com/atom/ns#' term='scada'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='rtu'/><category scheme='http://www.blogger.com/atom/ns#' term='siemens'/><category scheme='http://www.blogger.com/atom/ns#' term='modbus'/><title type='text'>Um relato de uso do PascalSCADA - A usage story of the PascalSCADA</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Only in english:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Application was created for visualisation and parameter changing of a gravimetric scale supplying the extruder. It is working with Siemens S7-224 xp over Modbus RTU via RS 485. Scale is using some unusual algorithms to work, so there's quite a few parameters to monitor and visualisation allows to follow them all, along with every step done by the machine. There is also recipies database included in SCADA program, made partially with Zeos library. Main constraint in designing a layout was for it to be as plain and simple as possible. Current state of the process can be observed graphicaly (every step, i.e. mixing, has its own animation) or with a "led panel". Application does some arithmetic calculations for PLC on few ocasions and is logging the data when parameters change. It was done using the version 0.6.4d of the PascalSCADA. I think and from what i've heard it's working without any problems."&lt;br /&gt;&lt;br /&gt;Relato de&amp;nbsp;Adam Kochan da&amp;nbsp;Polônia -&amp;nbsp;Story by Adam Kochan from Poland&lt;br /&gt;&lt;br /&gt;Is not included on this story that the application was made on Lazarus 0.9.28 with FPC 2.2.4 over Windows XP SP3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-4865394363955048902?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/4865394363955048902/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=4865394363955048902' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4865394363955048902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4865394363955048902'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/04/um-relato-de-uso-do-pascalscada-usage.html' title='Um relato de uso do PascalSCADA - A usage story of the PascalSCADA'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-3830038214066449890</id><published>2011-04-06T10:57:00.001-03:00</published><updated>2011-04-06T11:19:47.133-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S7-200'/><category scheme='http://www.blogger.com/atom/ns#' term='CP-243'/><category scheme='http://www.blogger.com/atom/ns#' term='Ethernet'/><category scheme='http://www.blogger.com/atom/ns#' term='siemens'/><title type='text'>Notas para acessar S7-200 via ethernet/Notes to access a S7-200 via ethernet</title><content type='html'>Se você está tentando acessar um S7-200 via ethernet &amp;nbsp;(CP-243) com o PascalSCADA, aqui vão algumas dicas que repasso por&amp;nbsp;experiência&amp;nbsp;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A controladora ethernet do S7-200 aparenta aceitar somente uma conexão na porta 102 (isotcp). Então se você tentar acessar de mais de uma máquina simultaneamente, somente um deles poderá trocar dados com o CLP.&lt;/li&gt;&lt;li&gt;Algumas vezes quando a conexão está sendo estabelecida, a controladora ethernet do CLP demora para responder ao primeiro pedido, ocasionando a perda da conexão da porta TCP. Então, quando a porta TCP for desconectada ou tiver um erro na sua abertura (usando os eventos presentes na porta TCPUDPPort), espere um tempo e mande ela reconectar em seguida. Isso até eu implementar uma rotina de reconexão automática na porta TCP.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;In english&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If are you trying to access an S7-200 via ethernet (CP-243) using the PascalSCADA, see some tips that I experienced:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;The CP-243 of the S7-200 appears accept only one connection on the port 102 (isotcp). So, if you are trying access the PLC from more than one machine&amp;nbsp;simultaneously, only one machine will exchange data with the PLC.&lt;/li&gt;&lt;li&gt;Sometimes when the connection is being estabilished, the CP-243 delays to reply the first request, losing the connection. So, when you detect a connection lost or a error when open the tcp/ip port (using the events present in TCPUPDPort), wait some time and active the TCP port again. This is necessary while I don't implement a automatic reconnection routine on the TCPUDPPort port. &amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-3830038214066449890?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/3830038214066449890/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=3830038214066449890' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3830038214066449890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3830038214066449890'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/04/notas-para-acessar-s7-200-via.html' title='Notas para acessar S7-200 via ethernet/Notes to access a S7-200 via ethernet'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-5039320422501370259</id><published>2011-03-25T11:49:00.000-03:00</published><updated>2011-03-25T11:49:49.064-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><title type='text'>Requisição de screenshots de aplicações/screenshots of applications</title><content type='html'>Se você tem alguma aplicação desenvolvida com o PascalSCADA, por favor, envie algumas imagens de telas para mim com uma breve descrição da sua aplicação, pois estou montando uma apresentação do projeto. Meu e-mail é fluisgirardi aroba gmail ponto com. Obrigado!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;In english&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you have some application developed using PascalSCADA, please, send-me some screenshots of your application to me with a small description of your application, because I'm creating a presentation of the project PascalSCADA. My e-mail is fluisgirardi at gmail dot com. Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-5039320422501370259?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/5039320422501370259/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=5039320422501370259' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/5039320422501370259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/5039320422501370259'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/03/requisicao-de-screenshots-de.html' title='Requisição de screenshots de aplicações/screenshots of applications'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-2471868866983958346</id><published>2011-03-25T11:24:00.000-03:00</published><updated>2011-03-25T11:24:06.837-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='wince'/><title type='text'>Suporte a WindowsCE_arm - WindowsCE_arm support</title><content type='html'>Nas últimas revisões que estão disponíveis no SVN, é possível rodar sua aplicação em dispositivos ARM rodando Windows CE. O detalhe é que ainda está muito instável e precisa de (muitas) melhorias. Se você quer testar, &lt;a href="http://pascalscada.svn.sourceforge.net/viewvc/pascalscada/trunk/?view=tar"&gt;clique aqui&lt;/a&gt; para fazer download da versão do SVN. Outro detalhe é que suporte a porta serial ainda não está feito. Outro detalhe é que só fiz testes usando simuladores pois não tenho nenhum dispositivo para teste. Se encontrar problemas, por favor &lt;a href="http://sourceforge.net/apps/mantisbt/pascalscada/bug_report_page.php"&gt;reporte os bugs aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;In english&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On the latest revision that are available on the SVN, is possible run your application on ARM devices with Windows CE as operating system. But the problem is some&amp;nbsp;instabilities and it needs (a lot of) improvements. If you want test, &lt;a href="http://pascalscada.svn.sourceforge.net/viewvc/pascalscada/trunk/?view=tar"&gt;click here&lt;/a&gt; to download the latest SVN revision. Another thing that don't work yet, is the serial port, that isn't done.&amp;nbsp;&amp;nbsp;My tests are done using simulators. If you found bugs, please report here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-2471868866983958346?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/2471868866983958346/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=2471868866983958346' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2471868866983958346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2471868866983958346'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/03/suporte-windowscearm-windowscearm.html' title='Suporte a WindowsCE_arm - WindowsCE_arm support'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-625433753019138830</id><published>2011-03-10T23:28:00.000-03:00</published><updated>2011-03-10T23:28:37.038-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fpc'/><category scheme='http://www.blogger.com/atom/ns#' term='0.7.1'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='2.5.1'/><title type='text'>PascalSCADA 0.7.1 liberado/released</title><content type='html'>Após alguns dias da liberação do PascalSCADA 0.7, uma nova versão foi liberada. O motivo é um problema que só aparece com quem usa o FPC 2.5.1 com sistema operacional Windows. Estes usuários não conseguem compilar o PascalSCADA 0.7 usando essa configuração. A versão 0.7.1 do PascalSCADA corrige esse problema. Ela inclui também a ferramenta para edição de estruturas usando o tag TPLCStruct. Para fazer download dessa nova versão &lt;a href="https://sourceforge.net/projects/pascalscada/files/0.7.1/"&gt;clique aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Some days after the release of the PascalSCADA 0.7, a new version is released. Because of an configuration bug that appears only when PascalSCADA 0.7 is compiled on Windows with FPC 2.5.1 this version is broken with this configuration. The version 0.7.1 fixes this mistake. It includes too a structure editor for the tag TPLCStruct. To download it &lt;a href="https://sourceforge.net/projects/pascalscada/files/0.7.1/"&gt;click here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-625433753019138830?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/625433753019138830/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=625433753019138830' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/625433753019138830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/625433753019138830'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/03/pascalscada-071-liberadoreleased.html' title='PascalSCADA 0.7.1 liberado/released'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-1791106373958291153</id><published>2011-03-09T09:23:00.000-03:00</published><updated>2011-03-09T09:23:45.864-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S7-1200'/><category scheme='http://www.blogger.com/atom/ns#' term='siemens'/><title type='text'>Notas para acessar o S7-1200/Notes to access an S7-1200</title><content type='html'>Se você está tentando acessar um CLP da linha S7-1200 e está encontrando algumas dificuldades para acessar DB's, verifique se quando você cria o DB, a opção "Symbolic access only" está desmarcada. Quando um db é criado com essa opção, ele é tratado de maneira totalmente diferente pelo CLP (e pelos protocolos de comunicação).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In english&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If&amp;nbsp;are&amp;nbsp;you trying to access an Siemens S7-1200 PLC and found some troubles to access DB's data, check if when you create the DB, the option "Symbolic access only" is unchecked. When a DB is created with this option checked, the PLC manages the DB's in a different way (and the communication protocols too).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-1791106373958291153?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/1791106373958291153/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=1791106373958291153' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1791106373958291153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1791106373958291153'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/03/notas-para-acessar-o-s7-1200notes-to.html' title='Notas para acessar o S7-1200/Notes to access an S7-1200'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-3475067174729846722</id><published>2011-03-03T22:48:00.000-03:00</published><updated>2011-03-03T22:48:47.697-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='structure'/><category scheme='http://www.blogger.com/atom/ns#' term='0.7'/><category scheme='http://www.blogger.com/atom/ns#' term='struct'/><category scheme='http://www.blogger.com/atom/ns#' term='siemens'/><category scheme='http://www.blogger.com/atom/ns#' term='isotcp'/><title type='text'>PascalSCADA 0.7 liberado/released</title><content type='html'>A versão 0.7 do PascalSCADA foi liberada. Entre mais de 20 correções, estão presentes nessa versão algumas caracteristicas que merecem destaque como:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Siemens ISOTCP driver plenamente funcional, incluindo o TagBuilder.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Nova rotina de atualização dos tags. A maneira antiga utilizava um temporizador por tag para atualizá-lo. Agora a thread de atualização lista todos os tags que devem ser atualizados e os atualiza parando o driver apenas uma vez, evitando varias trocas de contexto, melhorando a performance.&lt;/li&gt;&lt;li&gt;Duas propriedades foram duplicadas por causa que seus nomes estavam errados: RefreshTime irá se chamar ScanRate e PLCHack irá se chamar PLCRack. Esta versão terá ambas propriedades. Em uma próxima versão as propriedades com nomes errados vão ser removidas.&lt;/li&gt;&lt;li&gt;THMIControlDislocator, um componente para animar controles na janela, fazendo que estes se movam.&lt;/li&gt;&lt;li&gt;Dois novos tags: TPLCStruct e TPLCStructItem podem ser usados para mapear estruturas com tipos de dados&amp;nbsp;heterogêneos na sua aplicação.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://sourceforge.net/apps/mantisbt/pascalscada/roadmap_page.php"&gt;Clique aqui&lt;/a&gt;&amp;nbsp;para ver a lista de correções ou &lt;a href="http://sourceforge.net/projects/pascalscada/files/0.7/pascalscada_0.7.tar.bz2/download"&gt;clique aqui&lt;/a&gt; para fazer download da versão 0.7 do PascalSCADA.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PascalSCADA 0.7 is released. At least 20 bugs are fixed on this version and some features are added:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Siemens ISOTCP driver are working.&lt;/li&gt;&lt;li&gt;New scan routine. The oldest way uses timers in each tag to refresh it. Now the update scan thread lists all tags that must be updated and update it, avoiding a lot of context switch, improving the performace.&lt;/li&gt;&lt;li&gt;Two properties are duplicate because their names are wrong: RefreshTime will be called ScanRate and PLCHack will be called PLCRack. This version will have all properties. On a next release, the wrong properties will be removed.&lt;/li&gt;&lt;li&gt;THMIControlDislocator, a component to animate controls on window, moving it.&lt;/li&gt;&lt;li&gt;New tags: TPLCStruct and TPLCStructItem to map Siemens S7 structures on your application.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://sourceforge.net/projects/pascalscada/files/0.7/pascalscada_0.7.tar.bz2/download"&gt;Click here&lt;/a&gt; to see the changelog or &lt;a href="https://sourceforge.net/apps/mantisbt/pascalscada/roadmap_page.php"&gt;click here&lt;/a&gt; to download the PascalSCADA 0.7.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-3475067174729846722?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/3475067174729846722/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=3475067174729846722' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3475067174729846722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3475067174729846722'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2011/03/pascalscada-07-liberadoreleased.html' title='PascalSCADA 0.7 liberado/released'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-561156217334265153</id><published>2010-11-08T21:09:00.001-03:00</published><updated>2010-11-08T21:10:03.268-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0.6.4d'/><title type='text'>Pascal 0.6.4d liberado/released</title><content type='html'>Foi liberado a alguns dias, a última versão antes da versão 0.7 do PascalSCADA. Esta é uma versão de correção de bugs. Ao todo 16 bugs foram corrigidos, alguns sendo falhas criticas que podem travar sua aplicação. Recursos foram aprimorados. Para baixar o PascalSCADA &lt;a href="http://sourceforge.net/projects/pascalscada/files/"&gt;clique aqui&lt;/a&gt;. Para ver a lista de correções &lt;a href="http://para%20ver%20a%20lista%20de%20corre%C3%A7%C3%B5es%20clique%20aqui/"&gt;clique aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A partir de agora, os exemplos e a documentação irão vir em arquivos separados dos fontes necessários para instalar o PascalSCADA na sua IDE favorita.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In&amp;nbsp;English&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Was released some days ago, the last version before the PascalSCADA 0.7. This is a bugfix release. Is fixed 16 bugs, some of this bugs can freeze your application. Some features has been improved. To download the PascalSCADA&amp;nbsp;&lt;a href="http://sourceforge.net/projects/pascalscada/files/"&gt;click here&lt;/a&gt;. To see the complete changelog,&amp;nbsp;&lt;a href="http://para%20ver%20a%20lista%20de%20corre%C3%A7%C3%B5es%20clique%20aqui/"&gt;click here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;From now, examples and the documentation will come in separated package and you can download only the source files needed to install it on your favorite IDE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-561156217334265153?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/561156217334265153/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=561156217334265153' title='19 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/561156217334265153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/561156217334265153'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/11/pascal-064d-liberadoreleased.html' title='Pascal 0.6.4d liberado/released'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-1039710362960677388</id><published>2010-11-05T00:06:00.000-03:00</published><updated>2010-11-05T00:06:27.142-03:00</updated><title type='text'>Em viagem...</title><content type='html'>Para quem mora em Brasilia e redondezas, estarei na cidade entre os dias 01/11/2010 e no mínimo até o 13/11/2010. Então se você está com algum problema ou quer simplesmente trocar ideias, essa é a hora.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you live in Brasilia or near of,  I'll be in town between days 01/11/2010 and at least until 13/11/2010. So if you have some problem or simply want to exchange ideas, this is the time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-1039710362960677388?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/1039710362960677388/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=1039710362960677388' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1039710362960677388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1039710362960677388'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/11/em-viagem.html' title='Em viagem...'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-4000663969670304627</id><published>2010-11-04T20:21:00.001-03:00</published><updated>2010-11-04T20:57:40.943-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='protocol driver'/><category scheme='http://www.blogger.com/atom/ns#' term='driver de protocolo'/><category scheme='http://www.blogger.com/atom/ns#' term='criar'/><category scheme='http://www.blogger.com/atom/ns#' term='create'/><title type='text'>Como criar seu primeiro driver de protocolo/How create your fist protocol driver</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://www.blogger.com/#english"&gt;Goto English version&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Antes de sair escrevendo&amp;nbsp;códigos&amp;nbsp;como um louco, vou repassar minha visão de driver de protocolo e como fiz a sua base.&lt;br /&gt;&lt;br /&gt;Um driver de protocolo é o objeto gerencia os tags dentro de sua aplicação. Ele atualiza os tags de acordo com a sua taxa de atualização, organiza blocos e evita a duplicação de pedido de leituras dessas memórias. Sua organização interna pode variar de acordo com o protocolo, que pode oferecer leituras em bloco ou individualizadas por memória. Tudo isso feito em nome da performance.&lt;br /&gt;&lt;br /&gt;Os tags no PascalSCADA, são cópias dos valores de uma outra área de memória gerenciada pelo driver. É através desta área interna que o driver gerencia a sua varredura. A organização dessa área de memória varia de acordo com a organização interna do equipamento. Um CLP&amp;nbsp;fictício poderia ter uma área de registradores, entradas e saidas digitais todos de 8 bits, sendo este CLP com endereçamento simples de 1 a 255 (assim como o modbus). Todas as áreas suportam leitura/escritas em bloco (atualizar vários tags em uma unica requisição). A representação deste CLP ficaria da seguinte forma:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TDummyPLC = &lt;b&gt;record&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; PLCAddress:Byte;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; Inputs:TPLCMemoryManager; &amp;nbsp; &amp;nbsp;//este será o MemReadFunction=1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; Outputs:TPLCMemoryManager; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;//este será o MemReadFunction=2&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; Registers:TPLCMemoryManager;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;//este será o MemReadFunction=3&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TDummyPLCs = &lt;b&gt;array of&lt;/b&gt; TDummyPLC;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note que foi usado uma classe chamada TPLCMemoryManager. O que ela faz? Ela organiza memórias de uma mesma área em blocos&amp;nbsp;contínuos do maior tamanho possível, evitando a duplicação de memórias e otimizando sua comunicação.&amp;nbsp;&amp;nbsp;Ele tem duas propriedades que controlam todo o seu comportamento. São elas:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;MaxHole&lt;/b&gt;: controla quantas memórias podem faltar para manter um único bloco. Digamos que sejam adicionadas as memórias endereços [1, 2, 5, 6]. Com MaxHole=0, irá ser formado dois blocos, o primeiro com as memórias [1, 2] e o segundo com as memórias [5, 6]. Mas com MaxHole=2, irá ser formado um único bloco com os endereços [1,2,3,4,5,6]. Note que os endereços 3 e 4 são adicionados para manter a continuidade do bloco, fazendo com que este seja lido com somente um pedido pelo driver de protocolo, melhorando a performance.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;MaxBlockSize&lt;/b&gt;: Controla o tamanho máximo do blocos. Se for adicionar as&amp;nbsp;[1,2,3,4,5,6] com MaxBlockSize=3, será formado dois blocos, o primeiro contendo os endereços&amp;nbsp;[1,2,3] e o segundo com os endereços [4,5,6]. Esta propriedade é util em protocolos que limitam o tamanho máximo do pedido, como por exemplo o ModBus.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Note também que adicionei um comentário a respeito de cada área de memória. Eu escolhi a propriedade MemReadFunction do tag para escolher a área de dados (Entradas, Saidas e Registradores). O valor 1 identifica as Entradas digitais, 2 as Saidas digitais e 3 Identifica os Registradores. Mas onde efetivamente isso vai ser feito é um pouco mais adiante. Feito a estrutura que representa o seu equipamento, o primeiro passo é criar uma classe herdeira de TProtocolDriver. Só isso? Não. Os tags precisam ser adicionados ao scan do driver para serem lidos. E como faço isso? Simples. Sobrescreva o método:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt; DoAddTag(TagObj:TTag; TagValid:Boolean);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Ele irá adicionar tags a área de memória gerenciada pelo driver. Faça as&amp;nbsp;devidas verificações do tag (exemplo: faixa de endereços correta, tipo correto) nesse método e caso ele&amp;nbsp;seja um tag válido, chame o&amp;nbsp;método herdado com&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;b style="font-family: 'Courier New',Courier,monospace;"&gt;inherited&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; DoAddTag(TagObj, TheTagIsValid);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;para adicionar o tag na classe base para que este seja atualizado de acordo com a sua taxa de scan.&lt;br /&gt;&lt;br /&gt;No nosso exemplo de CLP o método ficaria parecido com isso (vou tratar somente tags blocos)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt; TDummyProtocol.DoAddTag(TagObj:TTag; TagValid:Boolean);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;Valido:Boolean;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;clp:Integer;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;clpencontrado:Boolean&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; Valido := false;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;clpencontrado := false;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &lt;i&gt;//como eu disse, será tratado somente tags bloco neste exemplo.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &lt;b&gt;if&lt;/b&gt; TagObj &lt;b&gt;is&lt;/b&gt; TPLCBlock &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;b&gt;with&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TagObj &lt;b&gt;as&lt;/b&gt; TPLCBlock &lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;i&gt;//verifica o endereco do clp&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //se esta na faixa aceita (entre 1 e 255)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //e se esta, procura para ver se&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //ele já não está cadastrado na area de memória&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //gerenciada pelo driver&lt;/i&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;if&lt;/b&gt; PLCStation &lt;b&gt;in&lt;/b&gt; [1..255] &lt;b&gt;then&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;for&lt;/b&gt; clp := 0 &lt;b&gt;to&lt;/b&gt; High(FCLPs) &lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;if&lt;/b&gt; FCLPs[clp].PLCAddress=&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;PLCStation &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clpencontrado:=true&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;break&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;i&gt;//se não encontrou o CLP adiciona el&lt;/i&gt;e.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;if not&lt;/b&gt; clpencontrado &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clp:=Length(FCLPs);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SetLength(FCLPs,clp+1);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FCLPs[clp].&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;PLCAddress:=&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;PLCStation;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Inputs:=TPLCMemoryManager.Create;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Outputs:=TPLCMemoryManager.Create;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Registers:=TPLCMemoryManager.Create;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;clpencontrado := true;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;i&gt;//verifica o tag está valido&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //(associado com alguma área&lt;/i&gt;)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;if&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;clpencontrado&amp;nbsp;&lt;b&gt;and&lt;/b&gt;&amp;nbsp;(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MemReadFunction&amp;nbsp;&lt;b&gt;in&lt;/b&gt;&amp;nbsp;[1..3])&amp;nbsp;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Valido:=true;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;i&gt;//adiciona o tag a area de memoria gerenciada pelo&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //driver de protocolo&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;b&gt;if&lt;/b&gt; Valido &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;case&lt;/b&gt; MemReadFunction &lt;b&gt;of&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FCLPs[clp].Inputs.AddAddress(MemAddres, TagSizeOnProtocol, 1, RefreshTime); //propriedades do tag&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FCLPs[clp].Outputs.AddAddress(MemAddres, TagSizeOnProtocol, 1, RefreshTime);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FCLPs[clp].Registers.AddAddress(MemAddres, TagSizeOnProtocol, 1, RefreshTime);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;b&gt;end&lt;/b&gt;;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;i&gt;//adiciona o tag a classe base&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;inherited&lt;/b&gt; DoAddTag(TagObj,Valido)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pronto, seu tag está validado e adicionado ao driver. E ele faz o scan sozinho? Não, mas poderia, porem seria ineficiente quando se procura performance, pois como a base não conhece a estrutura do driver, a maneira de se fazer isso seria passar tag a tag solicitando-os para o dispositivo e, caso existisse um tag duplicado (mesma área de memória de um mesmo plc) ele seria solicitado duas vezes. Para fazer a rotina de scan melhorada é necessário que sejam sobrescritos dois métodos. São eles:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&amp;nbsp;DoGetValue(TagObj:TTagRec;&amp;nbsp;&lt;b&gt;var&lt;/b&gt;&amp;nbsp;values:TScanReadRec);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Lembram&amp;nbsp;que os tags são cópias de uma área de memória gerenciada pelo driver? Pois é, este é o método que realiza essa cópia. &amp;nbsp;A maneira de se implementar ele é simples, basta procurar a sua memória na organização interna de tags do protocolo. No nosso driver fictício ficaria mais ou menos assim: &amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TDummyProtocol.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;DoGetValue(TagObj:TTagRec;&amp;nbsp;&lt;b&gt;var&lt;/b&gt;&amp;nbsp;values:TScanReadRec);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;clp:Integer;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;i&gt;//vare os clps e caso encontre o clp procurado&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;//solicita ao gerenciador de blocos da area&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;//desejada os valores do tag.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;for&lt;/b&gt; clp:=0 &lt;b&gt;to&lt;/b&gt; High(FCLPs) &lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;if&lt;/b&gt; FCLPs[clp].PLCAddress=TagObj.Station &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;with&lt;/b&gt; TagObj &lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;case&lt;/b&gt; MemReadFunction &lt;b&gt;of&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Inputs.GetValues(Address,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Size, 1,values.values, values.LastQueryResult, values.ValuesTimestamp);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Outputs.GetValues(Address,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Size, 1,values.values,values.LastQueryResult,values.ValuesTimestamp);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Registers.GetValues(Address,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Size, 1, values.values,values.LastQueryResult,values.ValuesTimestamp);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Perfeito, mas quem lê os dados do meu equipamento e atualiza os valores dessas áreas de memória? Quem faz isso é o método&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;DoScanRead(Sender:TObject;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;NeedSleep:Integer);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;Este procedimento é chamado para verificar se há algum tag necessitando ser lido. Ele faz isso varendo a a área de memória gerenciada pelo driver. Ao final, basta informar a thread de scan o que foi feito, usando a variável NeedSleep que informa a Thread&amp;nbsp;de scan o que ela deve fazer ao seu final.&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Caso&amp;nbsp;NeedSleep=0, a&amp;nbsp;Thread&amp;nbsp;segue sua execução normal. Retorne 0 sempre que o driver executar alguma ação de E/S, pois estas atuam como um "atraso natural", evitando o consumo alto de CPU.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Caso NeedSleep&amp;lt;0, a&amp;nbsp;Thread&amp;nbsp;de scan irá forçar uma&amp;nbsp;troca de contexto de threads (SwitchThread or ThreadSwitch) retornando assim que possível. Você pode optar por retornar esse valor sempre que o seu driver não fizer nada.&lt;/li&gt;&lt;li&gt;Caso NeedSleep&amp;gt;0, a&amp;nbsp;Thread&amp;nbsp;irá dormir NeedSleep milisegundos. Você pode optar por retornar esse valor sempre que o seu driver não fizer nada.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Para não trabalhar dobrado montando pacotes de dados para enviar ao dispositivo, sobrescreva o método&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;function&lt;/b&gt; DoRead (&lt;b&gt;const&lt;/b&gt; tagrec:TTagRec; &lt;b&gt;var&lt;/b&gt; &amp;nbsp; Values:TArrayOfDouble; Sync:Boolean):TProtocolIOResult;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pois é ele quem executa as leituras&amp;nbsp;síncronas (solicitadas pelo método Read do tag) e assincronas (pedidos feitos pelo driver de protocolo). A montagem do pacote do pedido da memória e a decodificação do pacote retornado contendo os valores das memórias deve ser feita aqui. O Parametro TagRec contem as informações do tag (endereço do equipamento, endereço da memória) enquanto a variável Values irá receber os valores decodificados do pacote recebido lidos do dispositivo. O&amp;nbsp;parâmetro&amp;nbsp;Sync não é mais usado.&lt;br /&gt;&lt;br /&gt;A rotina de scan do nosso driver fictício ficaria parecida com esta (note que ele usa o DoRead):&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TDummyProtocol.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;DoScanRead(Sender:TObject;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;NeedSleep:Integer);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;clp, bloco:Integer;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;tagrec:TTagRec;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ReadResult:TProtocolIOResult;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;Values:TArrayOfDouble;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;//vare os CLP's&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;for&lt;/b&gt; clp:=0 &lt;b&gt;to&lt;/b&gt; High(FCLPs) &lt;b&gt;do begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Vare os blocos formados das entradas digitais.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;for&lt;/b&gt; bloco := 0 &lt;b&gt;to&lt;/b&gt; High(FCLPs[clp].Inputs.Blocks) &lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;//caso o bloco necessite ser atualizado...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;if&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Inputs.Blocks[bloco].NeedRefresh &lt;b&gt;then begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//preenche os campos da estrutura&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//TTagRec com os principais campos que importam&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//para o protocolo (ou para a funcao DoRead)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tagrec.Station:=&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].PLCAddress;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tagrec.MemReadFunction := 1;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tagrec.Address :=&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Inputs.Blocks[bloco].&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;AddressStart;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tagrec.Size :=&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Inputs.Blocks[bloco].&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Size;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Realiza a leitura usando a função DoRead&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ReadResult := DoRead(tagrec, values, false);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;if&lt;/b&gt; ReadResult=ioOk &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Inputs.SetValues(&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;tagrec.Address,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;tagrec.Size, &amp;nbsp;1, values, ReadResult)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].Inputs.SetFault(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;tagrec.Address,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;tagrec.Size, &amp;nbsp;1, ReadResult);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//repete o procedimento acima para as saidas digitais&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//e para os registradores...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Bom já consigo ler meus tags e como faço para escrever valores no seu dispositivo? O procedimento DoWrite existe para isso, bastando sobrescreve-lo montando o pacote e enviando este ao seu dispositivo.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;function&lt;/b&gt; DoWrite(&lt;b&gt;const&lt;/b&gt; tagrec:TTagRec; &lt;b&gt;const&lt;/b&gt; Values:TArrayOfDouble; Sync:Boolean):TProtocolIOResult;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;É este método quem executa as escritas de valores&amp;nbsp;síncronas (usando o tag com AutoWrite=false e posteriormente chamando o procedimento Write) e&amp;nbsp;assíncronas&amp;nbsp;dos tags (quando é atribuido algum valor a propriedade Value com AutoWrite=true) no equipamento. O&amp;nbsp;Parâmetro&amp;nbsp;TagRec contem as informações do tag (endereço do equipamento, endereço da memória) enquanto a variável Values contém os valores a serem escritos no dispositivo. O&amp;nbsp;parâmetro&amp;nbsp;Sync não é mais usado.&lt;br /&gt;&lt;br /&gt;Bom, mas meu equipamento tem os registradores sendo Words e as entradas e saidas digitais são endereçadas como bytes. Como especifico isso? Simples. Os tags fazem uma série de conversões de tipo, mas o protocolo precisa informar que tipo de dados ele está fornecendo para o tag para que ele possa fazer as devidas conversões. Para fazer isto sobrescreva&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;function&lt;/b&gt; SizeOfTag(Tag:TTag; isWrite:Boolean; &lt;b&gt;var&lt;/b&gt; ProtocolTagType:TProtocolTagType):BYTE;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pois é esta a função responsável por informar o tamanho da palavra em bits&amp;nbsp;que o tag está referenciando e o tipo da dela (byte, shortint, word, smallint, cardinal, integer ou real). Para retornar o tamanho da palavra use o Result da função e para retornar o tipo utilize a variável ProtocolTagType.&lt;br /&gt;&lt;br /&gt;Em nosso driver fictício ficaria assim (mais uma fez vou tratar somente os blocos, cabe a você tratar os demais tags) e vou assumir que entradas e saidas digitais são bytes e registradores são words.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;function&lt;/b&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TDummyProtocol.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;SizeOfTag(Tag:TTag; isWrite:Boolean; &lt;b&gt;var&lt;/b&gt; ProtocolTagType:TProtocolTagType):BYTE;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;if&lt;/b&gt; Tag &lt;b&gt;is&lt;/b&gt; TPLCBlock &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;with&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Tag &lt;b&gt;as&lt;/b&gt; TPLCBlock &lt;b&gt;do begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;case&lt;/b&gt; MemReadFunction &lt;b&gt;of&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1,2: &lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Result := 8;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ProtocolTagType := pttByte;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3: &lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Result := 16;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ProtocolTagType := pttWord;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;end&lt;/b&gt;;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Bom, já li demais. Quero apagar meus tags fechar essa página e ir embora... Calma, para o seu tag ser apagado e removido do scan do driver sobrescreva um&amp;nbsp;último&amp;nbsp;método:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt; DoDelTag(TagObj:TTag);&lt;/span&gt;&lt;br /&gt;Sobrescreva este procedimento para remover tags do scan do driver. Não esqueça de chamar o&amp;nbsp;método herdado.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;inherited&lt;/b&gt; DoDelTag(TagObj)&lt;/span&gt;&lt;br /&gt;para remover o tag&amp;nbsp;da classe base.&lt;br /&gt;&lt;br /&gt;O código ficaria muito semelhante ao de DoAddTag exceto pelo fato que o tag irá ser removido da área gerenciada pelo driver.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Vale lembrar que o seu driver precisa ter uma porta de comunicação setada e ativa para os tags estarem sendo atualizados. Esta é uma condição para o driver de protocolo atualizar os tags.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Espero que eu tenha conseguido repassar como os drivers funcionam no PascalSCADA. Criticas, sugestões, melhorias e principalmente correções, usem os comentários.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Atenciosamente&lt;br /&gt;&lt;br /&gt;Fabio&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;a href="" id="english" name="english"&gt;In english&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Firstly, I'll explain my idea of an protocol driver and how I implemented it. I´ll put small pieces of code as example of each part.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;The protocol driver is a object that manage tags into your application. It updates the tags&amp;nbsp;respecting the scan rate, organizes the tags in blocks and avoid an memory to be read twice (or more times) on a single cycle. Your internal&amp;nbsp;organization&amp;nbsp;can vary from an protocol to another, can read a single tag or a block of tags on a single request. Everything in the name of the performance.&lt;br /&gt;&lt;br /&gt;The tags in PascalSCADA are copies of the values that are stored in another area managed by the driver. In this area the protocol driver manages the scan. The organization of this area can vary from a device to another and with the device memory organization too. To demostrate, I'll use a fictitious PLC that will be addressed like a modbus device (address from 1 to 255) and it contains registers, inputs and outputs, all 8 bits sized. All memory areas supports block operations (read/write multiple values on a single request). The representation of this&amp;nbsp;fictitious PLC will be something like this:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TDummyPLC =&amp;nbsp;&lt;b&gt;record&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; PLCAddress:Byte;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; Inputs:TPLCMemoryManager; &amp;nbsp; &amp;nbsp;//this area will be the &amp;nbsp;MemReadFunction=1&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; Outputs:TPLCMemoryManager; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;//this area will be the&amp;nbsp;MemReadFunction=2&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; Registers:TPLCMemoryManager;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;//this area will be the&amp;nbsp;MemReadFunction=3&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TDummyPLCs =&amp;nbsp;&lt;b&gt;array of&lt;/b&gt;&amp;nbsp;TDummyPLC;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Note that I used the class TPLCMemoryManager.&amp;nbsp;What it does? It organizes the tags in blocks biggest size as possible, avoiding the duplication of tags and optimizing the communication (10 tags of the same address will be read one time on the scan cycle). This class have two properties that control your behavior:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;MaxHole&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;: control how many memory can be missing to avoid break the block in two or more parts. Example: you added the memory addresses [1, 2, 5, 6]. With MaxHole=0, will be created two blocks, the first with the memory addresses [1, 2] and the second with the memory addresses [5, 6]. But with MaxHole=2, will be created only one block with the memory addresses [1,2,3,4,5,6]. Note that memory addresses 3 and 4 are added to avoid the break of the block in two parts, and it will be read with only one request to the device, improving the performance.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;MaxBlockSize&lt;/b&gt;: Control the max size of the block. If you added the memory addresses [1,2,3,4,5,6] with MaxBlockSize=3, will be created two blocks, the first with the memory addresses [1,2,3]&amp;nbsp;and the second with memory addresses [4,5,6]. This property is very useful in protocols that have size limits in theirs requests, like modbus that allow requests with size less than 125 words.&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Note that I added an comment about each memory area. I choosed the MemReadFunction&amp;nbsp;property&amp;nbsp;of the tags to allow the developers to choose the memory area (Inputs, Outputs and registers). The value 1 identify the Digital Inputs, &amp;nbsp;the value 2 identify the digital outputs and 3 identify the registers. But this will be done later. With the structure that represents your PLC done, the next step is create a new class that inherits from TProtocolDriver. Is only this? No. The tags must be added to the scan cycle of the your driver. And How do this? Simple. Override the procedure:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&amp;nbsp;DoAddTag(TagObj:TTag; TagValid:Boolean);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;It will add your tags in the memory managed by the protocol driver. Check if the tag to be added &amp;nbsp;is correct (in this example, MemReadFunction must be between 1 and 3 and the PLCStation must be between 1 and 255), and if it's ok, call the inherited procedure with &lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp;&lt;b style="font-family: 'Courier New', Courier, monospace;"&gt;inherited&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;DoAddTag(TagObj, TheTagIsValid);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;to add the tag in the base class and to allow it to be updated.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;In the example of fictitious PLC, the procedure will be something like this (I'll handle only PLCBlocks, you must check other tag classes of the other tags)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&amp;nbsp;TDummyProtocol.DoAddTag(TagObj:TTag; TagValid:Boolean);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;Valid:Boolean;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;plc:Integer;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;plcfound:Boolean&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; Valid := false;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;plcfound&amp;nbsp;:= false;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;i&gt;//As I said, I will handle only TPLCBlock on this example.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;if&lt;/b&gt;&amp;nbsp;TagObj&amp;nbsp;&lt;b&gt;is&lt;/b&gt;&amp;nbsp;TPLCBlock&amp;nbsp;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;with&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TagObj&amp;nbsp;&lt;b&gt;as&lt;/b&gt;&amp;nbsp;TPLCBlock&amp;nbsp;&lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //Check if the address of the PLC is&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //in the valid range (from 1 to 255)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //And if it's ok, find the memory (register, input, output)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //to check&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;if it's already managed by the driver.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;if&lt;/b&gt;&amp;nbsp;PLCStation&amp;nbsp;&lt;b&gt;in&lt;/b&gt;&amp;nbsp;[1..255]&amp;nbsp;&lt;b&gt;then&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;for&lt;/b&gt;&amp;nbsp;plc := 0&amp;nbsp;&lt;b&gt;to&lt;/b&gt;&amp;nbsp;High(FPLCs)&amp;nbsp;&lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;if&lt;/b&gt;&amp;nbsp;FPLCs[plc].PLCAddress=&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;PLCStation&amp;nbsp;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;plcfound:=true&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;break&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;i&gt;//se não encontrou o CLP adiciona el&lt;/i&gt;e.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;if (not&lt;/b&gt;&amp;nbsp;plcfound) &lt;b&gt;and&lt;/b&gt; (&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;PLCStation&amp;nbsp;&lt;b&gt;in&lt;/b&gt;&amp;nbsp;[1..255])&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; plc:=Length(FPLCs);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SetLength(FPLCs,plc+1);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FPLCs[plc].&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;PLCAddress:=&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;PLCStation;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Inputs:=TPLCMemoryManager.Create;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Outputs:=TPLCMemoryManager.Create;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Registers:=TPLCMemoryManager.Create;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;plcfound:=true;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;i&gt;//check if tag is ok&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //(associated with one memory manager of one PLC)&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;if&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;plcfound&amp;nbsp;&lt;b&gt;and&lt;/b&gt; (&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MemReadFunction&amp;nbsp;&lt;b&gt;in&lt;/b&gt;&amp;nbsp;[1..3])&amp;nbsp;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Valid:=true;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="display: inline !important; font-family: 'Times New Roman'; font-style: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="display: inline !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;i&gt;//add the tag in the memory managed by the&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-style: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; //protocol driver&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;Valid&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;case&lt;/b&gt;&amp;nbsp;MemReadFunction&amp;nbsp;&lt;b&gt;of&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FPLCs[plc].Inputs.AddAddress(MemAddres, TagSizeOnProtocol, 1, RefreshTime); //propriedades do tag&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FPLCs[plc].Outputs.AddAddress(MemAddres, TagSizeOnProtocol, 1, RefreshTime);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FPLCs[plc].Registers.AddAddress(MemAddres, TagSizeOnProtocol, 1, RefreshTime);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;i&gt;//add the tag in the base class&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;//to make it updatable.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;inherited&lt;/b&gt;&amp;nbsp;DoAddTag(TagObj,Valid)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Ok, my tag is correct and it´s added in the scan cycle of the protocol driver. The driver does the scan alone? No, but it can, but write how your driver will do the scan cycle is a way to optimize the performance, because you can avoid read the same memory address twice (the base don't know the memory organization of the your plc and if a tag have the same address of another) and you can do one or more reads in the same request (like siemens protocol) if protocol supports it. &amp;nbsp;To do a Scan optimized, overwrite two procedures. They are:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&amp;nbsp;DoGetValue(TagObj:TTagRec;&amp;nbsp;&lt;b&gt;var&lt;/b&gt;&amp;nbsp;values:TScanReadRec);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;You remember that I said before, that tags are copies of an area managed by the driver. So, this is the procedure that copy the values from this managed area to the tag. The way to implement this is very simple. Find the PLC and the memory area where your tag is stored and do something like this:&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TDummyProtocol.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;DoGetValue(TagObj:TTagRec;&amp;nbsp;&lt;b&gt;var&lt;/b&gt;&amp;nbsp;values:TScanReadRec);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;plc:Integer;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;i&gt;//find the plc in the array of PLCs and the memory&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;//and copy the values from the respective memory area.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;for&lt;/b&gt;&amp;nbsp;plc:=0&amp;nbsp;&lt;b&gt;to&lt;/b&gt;&amp;nbsp;High(FPLCs)&amp;nbsp;&lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;if&lt;/b&gt;&amp;nbsp;FPLCs[plc].PLCAddress=TagObj.Station&amp;nbsp;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;with&lt;/b&gt;&amp;nbsp;TagObj&amp;nbsp;&lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;case&lt;/b&gt;&amp;nbsp;MemReadFunction&amp;nbsp;&lt;b&gt;of&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Inputs.GetValues(Address,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Size, 1,values.values, values.LastQueryResult, values.ValuesTimestamp);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Outputs.GetValues(Address,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Size, 1,values.values,values.LastQueryResult,values.ValuesTimestamp);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Registers.GetValues(Address,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Size, 1, values.values,values.LastQueryResult,values.ValuesTimestamp);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Ok, but how the protocol driver read the values from the device? Who does this is the procedure:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;DoScanRead(Sender:TObject;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;NeedSleep:Integer);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;This procedure is called to check if exists something that needs to be read. It does this checking the memory managed by the protocol driver. When it finishes, you must inform what the scan cycle thread will do, using the variable NeedSleep. It can assume 3 values:&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;When NeedSleep=0, the thread continues normally. Write 0 in NeedSleep every time that your protocol driver do any I/O action. These I/O actions acts as a natural delay, avoiding the high CPU loads.&lt;/li&gt;&lt;li&gt;When NeedSleep&amp;lt;0, the scan thread will force a context switch&amp;nbsp;(SwitchThread or ThreadSwitch), returning soon as possible (when scheduler wakeup the scan cycle thread again). You can return this value when your protocol driver do anything.&lt;/li&gt;&lt;li&gt;When NeedSleep&amp;gt;0, the scan thread will sleep NeedSleep milliseconds. You can return this value when your protocol driver do anything.&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;To avoid do the same job twice, building data packets to send to your device, overwrite the procedure&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;function&lt;/b&gt;&amp;nbsp;DoRead (&lt;b&gt;const&lt;/b&gt;&amp;nbsp;tagrec:TTagRec;&amp;nbsp;&lt;b&gt;var&lt;/b&gt;&amp;nbsp;&amp;nbsp; Values:TArrayOfDouble; Sync:Boolean):TProtocolIOResult;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Because is this procedure that read the data of your PLC, in synchronous mode (requested by the procedure Read of each tag) and&amp;nbsp;asynchronous&amp;nbsp;(requests of the scan cycle of the protocol driver). You must build the request packet and the decode the received packet here. The parameter TagRec is a structure that contains information about the tag (plc address, memory type, memory address) and parameter Values will store the values decoded of the received packet from the device. The&amp;nbsp;parameter&amp;nbsp;Sync is obsolete and will be removed in future.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;With this, the scan of the example driver will be something like this (note that it uses DoRead procedure)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TDummyProtocol.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;DoScanRead(Sender:TObject;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;NeedSleep:Integer);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;plc, block:Integer;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;taginfo:TTagRec;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ReadResult:TProtocolIOResult;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;Values:TArrayOfDouble;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;//look at each PLC&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;for&lt;/b&gt;&amp;nbsp;plc:=0&amp;nbsp;&lt;b&gt;to&lt;/b&gt;&amp;nbsp;High(FPLCs)&amp;nbsp;&lt;b&gt;do begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Scan the digital inputs blocks built&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;for&lt;/b&gt;&amp;nbsp;block := 0&amp;nbsp;&lt;b&gt;to&lt;/b&gt;&amp;nbsp;High(FPLCs[plc].Inputs.Blocks)&amp;nbsp;&lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;//if the block must be updated...&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;if&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Inputs.Blocks[block].NeedRefresh&amp;nbsp;&lt;b&gt;then begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//fill the fields of the taginfo structure&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//with informations to DoRead do your job of&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//code and decode packets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;taginfo.Station:=&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FCLPs[clp].PLCAddress;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;taginfo.MemReadFunction := 1;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;taginfo.Address :=&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Inputs.Blocks[bloco].&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;AddressStart;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;taginfo.Size :=&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Inputs.Blocks[bloco].&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Size;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Read the data using DoRead procedure.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ReadResult := DoRead(taginfo, values, false);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;if&lt;/b&gt;&amp;nbsp;ReadResult=ioOk&amp;nbsp;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Inputs.SetValues(&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;taginfo.Address,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;taginfo.Size, &amp;nbsp;1, values, ReadResult)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;FPLCs[plc].Inputs.SetFault(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;taginfo.Address,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;taginfo.Size, &amp;nbsp;1, ReadResult);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//repeat the code above to the other areas (outputs and registres)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Now I can read my tags, but how do I write values into the device? The procedure DoWrite exists to do this, &amp;nbsp;you must overwrite it, and build the packet with the data to send to your device here.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;function&lt;/b&gt;&amp;nbsp;DoWrite(&lt;b&gt;const&lt;/b&gt;&amp;nbsp;tagrec:TTagRec;&amp;nbsp;&lt;b&gt;const&lt;/b&gt;&amp;nbsp;Values:TArrayOfDouble; Sync:Boolean):TProtocolIOResult;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;This is the procedure that write values in your plc, in synchronous mode (when tag.AutoWrite=false and procedure write is called) and&amp;nbsp;asynchronous mode (when tag.AutoWrite=true and a value is&amp;nbsp;attributed in the property Value). The parameter TagRec&amp;nbsp;contains informations about the tag (like plc address, memory type and memory address) and the&amp;nbsp;parameter&amp;nbsp;Values contais the values to be written into your device. The&amp;nbsp;parameter&amp;nbsp;Sync is obsolete and will be removed in future.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Ok, now I can read and write values using my protocol driver, but and If my device have areas with different word sizes? Simple. The tags does a lot of type conversions, but the protocol must inform what's the type of the data that it's providing to the tag. With this information, the tag can convert the data to others formats. To do this overwrite the procedure&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;function&lt;/b&gt;&amp;nbsp;SizeOfTag(Tag:TTag; isWrite:Boolean;&amp;nbsp;&lt;b&gt;var&lt;/b&gt;&amp;nbsp;ProtocolTagType:TProtocolTagType):BYTE;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Because is this function that informs the word size in bits and the type&amp;nbsp;(byte, shortint, word, smallint, cardinal, integer or real)&amp;nbsp;of the tag. To return the size of the word, use the variable Result of the function and to return the type, use the variable ProtocolTagType.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;In the example protocol, it will be something like the piece bellow. I said before that registers are bytes, but here I'll assume that registers are words. I'll handle only PLCBlocks.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;function&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TDummyProtocol.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;SizeOfTag(Tag:TTag; isWrite:Boolean;&amp;nbsp;&lt;b&gt;var&lt;/b&gt;&amp;nbsp;ProtocolTagType:TProtocolTagType):BYTE;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;if&lt;/b&gt;&amp;nbsp;Tag&amp;nbsp;&lt;b&gt;is&lt;/b&gt;&amp;nbsp;TPLCBlock&amp;nbsp;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;with&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Tag&amp;nbsp;&lt;b&gt;as&lt;/b&gt;&amp;nbsp;TPLCBlock&amp;nbsp;&lt;b&gt;do begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;case&lt;/b&gt;&amp;nbsp;MemReadFunction&amp;nbsp;&lt;b&gt;of&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1,2:&amp;nbsp;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Result := 8;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ProtocolTagType := pttByte;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3:&amp;nbsp;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Result := 16;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ProtocolTagType := pttWord;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;end&lt;/b&gt;;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;And how a I remove the tag that I added into the protocolo driver. To remove your tag from the scan cycle of the protocol driver, overwrite the latest procedure:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;procedure&lt;/b&gt;&amp;nbsp;DoDelTag(TagObj:TTag);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;And don't forget of call the inherited procedure with:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;inherited&lt;/b&gt;&amp;nbsp;DoDelTag(TagObj)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;to remove the tag from the base class.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The code of this procedure is like that DoAddTag, except because this removes tags from the area managed by the protocol driver.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Well, is this. If you have reviews, sugestions, improvements and corrections, please contact-me.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: You must have a port set and activated on your protocol driver to update tags.&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Regards,&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Fabio&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-4000663969670304627?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/4000663969670304627/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=4000663969670304627' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4000663969670304627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4000663969670304627'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/11/como-criar-seu-primeiro-driver-de.html' title='Como criar seu primeiro driver de protocolo/How create your fist protocol driver'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-4106057402613578995</id><published>2010-09-26T23:07:00.000-03:00</published><updated>2010-09-26T23:07:30.574-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='ZeosLib'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite'/><category scheme='http://www.blogger.com/atom/ns#' term='alarm system'/><category scheme='http://www.blogger.com/atom/ns#' term='alarms'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><title type='text'>Banco de dados em memória com ZeosLib e SQLite/In Memory Database with ZeosLib and SQLite</title><content type='html'>Em alguns casos precisamos criar tabelas em memória, por motivos que dependem de cada aplicação. No meu caso, eu estava a pesquisar como fazer um sistema de alarmes para o PascalSCADA que ficasse indenpendente de existir um gerenciador de bando de dados instalado no computador onde a aplicação fosse instalada. Comecei a pesquisar e encontrei uma solução simples e rápida escrevendo pouco código usando ZeosLib e SQLite&lt;br /&gt;&lt;br /&gt;A primeira coisa a fazer é inserir um TZConnection na sua aplicação. Configure o driver da ZConnection criada para sqlite-3 e o database para ":memory:" sem as aspas e connecte-o. Explico: o SQLite suporta a criação de banco de dados em memória. A função sqlite3_open tem dois parametros, o primeiro é o caminho do arquivo do banco de dados e o segundo é um ponteiro da conexão criada. A string :memory: orienta o SQLite a criar/abrir o seu "arquivo" na memória.&lt;br /&gt;&lt;br /&gt;Aqui está um screenshot da configuração do ZConnection em Lazarus:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_uYt2_EwdhIM/TJ_buqK1sAI/AAAAAAAAACE/3KRLx1vsLP8/s1600/C:%5Cfakepath%5CZconnection.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://4.bp.blogspot.com/_uYt2_EwdhIM/TJ_buqK1sAI/AAAAAAAAACE/3KRLx1vsLP8/s320/C:%5Cfakepath%5CZconnection.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Feito a configuração da conexão, basta fazer a criação das tabelas. No meu teste eu coloquei um botão e fiz no evento OnClick a criação da tabela em memória. Para isso adicionei também um ZQuery para poder executar a consulta de criação da tabela. A única coisa a fazer no ZQuery é dizer que conexão ele irá usar. No evento clique do botão coloque o seguinte código:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ZQuery1.SQL.Clear;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ZQuery1.SQL.Add('CREATE TABLE [alarmes]'+&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;'('+&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' [idAlarme] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'+&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' &amp;nbsp; &amp;nbsp;[idTag] INTEGER NOT NULL,'+&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' &amp;nbsp; &amp;nbsp;[dtEntrada] DATETIME NOT NULL,'+&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' &amp;nbsp; &amp;nbsp;[dtSaida] DATETIME,'+&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' &amp;nbsp; &amp;nbsp;[stMessage] VARCHAR(70),'+&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' &amp;nbsp; &amp;nbsp;[stUser] VARCHAR(30)'+&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;');');&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ZQuery1.ExecSQL;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Antes de rodar, certifique-se que a dll sqlite3.dll está na pasta da aplicação ou na pasta System32 da sua instalação do Windows, ou devidamente configurada na sua distribuição linux. No Ubuntu você precisa ter o pacote libsqlite3-dev instalado. &lt;br /&gt;&lt;br /&gt;Pronto, basta rodar a sua aplicação e clicar no botão para criar a tabela em memória. Porem para ter certeza que isso foi criado, adicione um TZTable, TDataSource e um TDBGrid. Configure o DBGrid para usar o DataSource criado. Configure também &amp;nbsp;DataSource para usar o ZTable criado. Para finalizar adicione essas linhas ao final do codigo usado para criar a tabela em memória:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ZTable1.TableName:='alarmes';&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ZTable1.Open;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rode sua apliação e veja a tabela rodando na memória.&lt;br /&gt;&lt;br /&gt;Você pode copiar este exemplo &lt;a href="http://www.megaupload.com/?d=F2WJNVJG"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Some times, is needed create tables in memory, by the reason that will depend of your application. In my case, I was researching how do the alarm system in PascalSCADA independently of the existence of a database server installed in computer where the application will be installed. I started my research and I found a very simple solution, writing little pieces of code using ZeosLib and SQLite.&lt;br /&gt;&lt;br /&gt;First, add the TZConnection in your application. Configure it to use the driver sqlite-3 and the database of the conection to use ":memory:". I'll explain: the SQLite supports the creation of an database in memory. The function sqlite3_open has two parameters, the first is the path of the file that contains the database and the second is a pointer that will store the connection created. The string :memory: guides the SQLite to create/open your "database file" in memory.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Here an screenshot of the configuration of the ZConnection in Lazarus:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_uYt2_EwdhIM/TJ_buqK1sAI/AAAAAAAAACE/3KRLx1vsLP8/s1600/C:%5Cfakepath%5CZconnection.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://4.bp.blogspot.com/_uYt2_EwdhIM/TJ_buqK1sAI/AAAAAAAAACE/3KRLx1vsLP8/s320/C:%5Cfakepath%5CZconnection.png" style="cursor: move;" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Connection done, now you need create tables. I put a button and do this in OnClick event. I added too a TZQuery to execute the query that creates the table. The unique configuration that you'll do in ZQuery is set the connection that it will use. In button OnClick event put this code:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ZQuery1.SQL.Clear;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ZQuery1.SQL.Add('CREATE TABLE [alarmes]'+&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;'('+&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' [idAlarme] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'+&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' &amp;nbsp; &amp;nbsp;[idTag] INTEGER NOT NULL,'+&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' &amp;nbsp; &amp;nbsp;[dtEntrada] DATETIME NOT NULL,'+&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' &amp;nbsp; &amp;nbsp;[dtSaida] DATETIME,'+&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' &amp;nbsp; &amp;nbsp;[stMessage] VARCHAR(70),'+&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;' &amp;nbsp; &amp;nbsp;[stUser] VARCHAR(30)'+&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;');');&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ZQuery1.ExecSQL;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Before run, make sure that sqlite3.dll is located on application folder or in System32 of your Windows installation, or properly configured in your Linux distribution. In Ubuntu you need the libsqlite3-dev package installed.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Run your application and click in the button to create your table in memory. But, to be sure that the table is created, add a TZTable, TDataSource and a TDBGrid. Configure the DBGrid to use the created Datasource and configure the datasource to use the created TZTable. To finalize, add this lines at the end of the code used to create tables in memory:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ZTable1.TableName:='alarmes';&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;ZTable1.Open;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Run your application again and see your&amp;nbsp;table&amp;nbsp;in memory.&lt;br /&gt;&lt;br /&gt;You can download this example&amp;nbsp;&lt;a href="http://www.megaupload.com/?d=F2WJNVJG"&gt;here.&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-4106057402613578995?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/4106057402613578995/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=4106057402613578995' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4106057402613578995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4106057402613578995'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/09/banco-de-dados-em-memoria-com-zeoslib-e.html' title='Banco de dados em memória com ZeosLib e SQLite/In Memory Database with ZeosLib and SQLite'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uYt2_EwdhIM/TJ_buqK1sAI/AAAAAAAAACE/3KRLx1vsLP8/s72-c/C:%5Cfakepath%5CZconnection.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-388764673260664624</id><published>2010-09-23T11:12:00.002-03:00</published><updated>2010-09-23T11:18:34.946-03:00</updated><title type='text'>PascalSCADA Mantis Bug Tracker</title><content type='html'>A tempo venho pedindo a quem usa o PascalSCADA a reportar falhas para melhorá-lo ainda mais. Porem esqueci que para isso acontecer como esperado era necessário ter o Bug Tracker funcionando. Então ontem tirei um tempo e fiz ele funcionar adequadamente. Obrigado Mark Daems do projeto ZeosLib por ter me ajudado com minhas dúvidas estúpidas por falta de atenção!&lt;br /&gt;&lt;br /&gt;&lt;a href="https://sourceforge.net/apps/mantisbt/pascalscada/my_view_page.php"&gt;Clique aqui para ir para o Bug Tracker do PascalSCADA.&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Vale lembrar que, para reportar falhas, é necessário estar registrado no Sourceforge.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Since Some time ago, I request to everybody that uses the PascalSCADA to report bugs to improve it. But I forgot to make it happens, was needed the Bug Tracker working. So yesterday I made the Bug Tracker works, Thank you Mark Daems of ZeosLib project for help-me with my stupid questions!&lt;br /&gt;&lt;br /&gt;&lt;a href="https://sourceforge.net/apps/mantisbt/pascalscada/my_view_page.php"&gt;Click here to go to PascalSCADA Bug Tracker.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Remember that to report bugs, you must be registered in Sourceforge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-388764673260664624?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/388764673260664624/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=388764673260664624' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/388764673260664624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/388764673260664624'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/09/pascalscada-mantis-bug-tracker.html' title='PascalSCADA Mantis Bug Tracker'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-276781570885962907</id><published>2010-09-22T14:02:00.002-03:00</published><updated>2010-09-26T23:20:01.706-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='0.6.4'/><category scheme='http://www.blogger.com/atom/ns#' term='features'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='desempenho'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='isotcp'/><title type='text'>PascalSCADA 0.6.4c liberado/released</title><content type='html'>Uma pequena falha que afeta usuários do Delphi 2009-2010 foi encontrada devido alterações da Unicode dessas versões. A porta TCP_UDP não conseguia resolver nomes sejam eles hosts ou endereços IP's. Mas isso já esta corrigido na versão 0.6.4c. Mais uma vez, obrigado pelo feedback e continuem reportando erros e falhas encontradas!&lt;br /&gt;&lt;br /&gt;O download da versão 0.6.4 pode ser feito na pagina do &lt;a href="https://sourceforge.net/projects/pascalscada/files/latest/pascalscada_0.6.4c.tar.bz2/download"&gt;PascalSCADA no Sourceforge&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A bug that affects Delphi 2009-2010 users has been found. The TCP_UDP port don't resolve host names because this versions of delphi now supports Unicode, but it's fixed on version 0.6.4c. Thanks by your feedback. Please continue reporting errors!&lt;br /&gt;&lt;br /&gt;You can download the version 0.6.4c in &lt;a href="https://sourceforge.net/projects/pascalscada/files/latest/pascalscada_0.6.4c.tar.bz2/download"&gt;PascalSCADA page at Sourceforge&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-276781570885962907?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/276781570885962907/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=276781570885962907' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/276781570885962907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/276781570885962907'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/09/pascalscada-064c-liberadoreleased.html' title='PascalSCADA 0.6.4c liberado/released'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-1883027949248885189</id><published>2010-09-21T22:56:00.005-03:00</published><updated>2010-09-21T23:59:56.510-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='0.6.4'/><category scheme='http://www.blogger.com/atom/ns#' term='features'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='desempenho'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='isotcp'/><title type='text'>PascalSCADA 0.6.4b liberado/released</title><content type='html'>Uma pequena correção para Lazarus com FPC 2.2.x que impossibilitava a compilação do PascalSCADA foi liberada. Obrigado pelo feedback e continuem reportando erros!&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Para quem baixou a versão 0.6.4a,&amp;nbsp;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;abra o arquivo ubitmapper.pas. Logo nas primeiras linhas está escrito:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;unit ubitmapper;&lt;br /&gt;&lt;br /&gt;{$IFDEF FPC}&lt;br /&gt;&amp;nbsp;{$MODE Delphi}&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;&amp;nbsp;Messages, SysUtils, Variants, Classes,...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Adicione "{$IFDEF FPC}LCLIntf, LResources,{$ENDIF}" antes da unit Messages, de modo que fique assim:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;unit ubitmapper;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;{$IFDEF FPC}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&amp;nbsp;&amp;nbsp;{$MODE Delphi}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;{$ENDIF}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;interface&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;uses&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;{$IFDEF FPC}LCLIntf, LResources,{$ENDIF}&lt;/b&gt;Messages, SysUtils, Variants, Classes...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Outra maneira de resolver esse problema é baixar a versão 0.6.4b que está disponível no SourceForge.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lembrem que são versão de testes!! Ainda existem problemas a resolver!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;In english&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;An small fix for Lazarus with FPC 2.2.x that breaks the compilation of PascalSCADA is released. Thanks by the feedback and continue reporting errors!&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;If you downloaded the version 0.6.4a, open the file&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&amp;nbsp;ubitmapper.pas. In the first lines is wrote:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;unit ubitmapper;&lt;br /&gt;&lt;br /&gt;{$IFDEF FPC}&lt;br /&gt;&amp;nbsp;{$MODE Delphi}&lt;br /&gt;{$ENDIF}&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;&amp;nbsp;Messages, SysUtils, Variants, Classes,...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Add "{$IFDEF FPC}LCLIntf, LResources,{$ENDIF}" before of the unit Messages, like this:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;unit ubitmapper;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;{$IFDEF FPC}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&amp;nbsp;&amp;nbsp;{$MODE Delphi}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;{$ENDIF}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;interface&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;uses&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;{$IFDEF FPC}LCLIntf, LResources,{$ENDIF}&lt;/b&gt;Messages, SysUtils, Variants, Classes...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; font-family: 'Times New Roman'; font-size: medium;"&gt;Other way to solve this is download the version 0.6.4b that is available in Sourceforge.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;b&gt;Remember that this is a testing version. Other things must be corrected yet!&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-1883027949248885189?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/1883027949248885189/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=1883027949248885189' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1883027949248885189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1883027949248885189'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/09/pascalscada-064b-liberadoreleased.html' title='PascalSCADA 0.6.4b liberado/released'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-5485372422144176807</id><published>2010-09-21T16:45:00.000-03:00</published><updated>2010-09-21T16:45:32.601-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OPC'/><category scheme='http://www.blogger.com/atom/ns#' term='Profinet'/><category scheme='http://www.blogger.com/atom/ns#' term='Profibus'/><category scheme='http://www.blogger.com/atom/ns#' term='EthernetI'/><category scheme='http://www.blogger.com/atom/ns#' term='Can Open'/><title type='text'>OPC, Can Open, Profibus, Profinet, EthernetIP and others...</title><content type='html'>Estou atualmente (enquanto escrevo o PascalSCADA) pesquisando sobre barramentos e protocolos de comunicação atuais. Li muito sobre OPC, CanOpen e Profinet, e ando estudando a possibilidade de ser membro de algumas dessas organizações para poder ter acesso a documentos e exemplos. Então se você pode ajudar, doe componentes&amp;nbsp;eletrônicos&amp;nbsp;e de software relacionados a essas tecnologias, para que eu possa continuar oferecendo inovações e facilidades no PascalSCADA.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In english&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Actually (while I write the PascalSCADA) I'm researching recent communication protocols and bus. I read a lot about OPC, CanOpen and Profinet, and now I'm studying the possibility of become a member of some of this organizations to access documents and code examples. So, if you can help, donate hardware and software related to these technologies, to provide innovations and facilities in PascalSCADA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-5485372422144176807?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/5485372422144176807/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=5485372422144176807' title='29 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/5485372422144176807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/5485372422144176807'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/09/opc-can-open-profibus-profinet.html' title='OPC, Can Open, Profibus, Profinet, EthernetIP and others...'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-3698439711573307292</id><published>2010-09-21T11:00:00.008-03:00</published><updated>2010-09-23T17:54:16.648-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='0.6.4'/><category scheme='http://www.blogger.com/atom/ns#' term='features'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='desempenho'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='isotcp'/><title type='text'>PascalSCADA 0.6.4a liberado/released</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;A versão 0.6.4a (testes) foi liberada. Faça download e reporte qualquer falha no&amp;nbsp;&lt;a href="https://sourceforge.net/apps/mantisbt/pascalscada/my_view_page.php"&gt;BugTracker do PascalSCADA&lt;/a&gt;. Está disponível para&amp;nbsp;Lazarus (0.9.28 a 0.9.29) ou Delphi (7 a 2010) sobre&amp;nbsp;Windows, Linux e FreeBSD (32 e 64 bits).&lt;br /&gt;&lt;br /&gt;As principais novidades da versão são:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tags Estruturais;&lt;/li&gt;&lt;li&gt;Tipos de dados no tags (byte, word, ShortInt, DWord, Integer e Float);&lt;/li&gt;&lt;li&gt;Suporte ao Siemens IsoTCP para comunicar com S7-1200, S7-300 e S7-400;&lt;/li&gt;&lt;li&gt;TagBuilder, uma ferramenta para facilitar a criação de tags nos principais drivers;&lt;/li&gt;&lt;li&gt;Element Mapper para facilitar a criação de elementos de bloco.&lt;/li&gt;&lt;li&gt;Bit Mapper para facilitar a criação de bits.&lt;/li&gt;&lt;li&gt;Muitas melhorias de desempenho, principalmente em ModBusTCP.&lt;/li&gt;&lt;li&gt;Notificações de eventos de Porta (aberta, fechada, desconectada e erros de comunicação)&lt;/li&gt;&lt;li&gt;Um novo componente para animação de objetos em tela, o THMIControlDislocatorAnimation.&lt;/li&gt;&lt;li&gt;Simplificação da API de drivers de protocolo e portas.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Modificado o modo de atualização dos tags (removido timers).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;In english&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The version 0.6.4a (testing) is released. Download it and report bugs in&amp;nbsp;&lt;a href="https://sourceforge.net/apps/mantisbt/pascalscada/my_view_page.php"&gt;PascalSCADA BugTracker&lt;/a&gt;. It's available for&amp;nbsp;Lazarus (0.9.28 and 0.9.29) and Delphi (7 to 2010) under&amp;nbsp;Windows, Linux and FreeBSD (32 and 64 bits).&lt;br /&gt;&lt;br /&gt;The newest features of this version:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Structure Tags;&lt;/li&gt;&lt;li&gt;Tag data types (byte, word, ShortInt, DWord, Integer e Float);&lt;/li&gt;&lt;li&gt;Siemens IsoTCP protocol to communicate with S7-1200, S7-300 e S7-400;&lt;/li&gt;&lt;li&gt;TagBuilder, a tool to make easy the creation of new tags;&lt;/li&gt;&lt;li&gt;Element Mapper to make easy the creation of block elements;&lt;/li&gt;&lt;li&gt;Bit Mapper to make easy the creation of bits.&lt;/li&gt;&lt;li&gt;A lot of performance improvements, mainly in ModBusTCP.&lt;/li&gt;&lt;li&gt;Port event notifications (open, closed, disconnected and communications errors)&lt;/li&gt;&lt;li&gt;A new component to animate window controls, the THMIControlDislocatorAnimation.&lt;/li&gt;&lt;li&gt;Protocol and Port driver API simplification.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Modified how tags are refreshed (removed timers).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-3698439711573307292?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/3698439711573307292/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=3698439711573307292' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3698439711573307292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3698439711573307292'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/09/pascalscada-064a-liberadoreleased.html' title='PascalSCADA 0.6.4a liberado/released'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-4940294655205444165</id><published>2010-09-01T09:12:00.004-03:00</published><updated>2010-09-17T09:18:49.239-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='recursos'/><category scheme='http://www.blogger.com/atom/ns#' term='0.6.4'/><category scheme='http://www.blogger.com/atom/ns#' term='features'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='siemens'/><category scheme='http://www.blogger.com/atom/ns#' term='isotcp'/><title type='text'>0.6.4: O que falta/What's missing</title><content type='html'>A versão 0.6.4 está prestes a sair com muitos recursos novos, tal como o driver IsoTCP para a familia Siemens S7 e tags struturais. Mas para isso faltam ser resolvidos e criados algumas coisas:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;TagBuilder para o novo IsoTCP driver e para o &lt;s&gt;driver West6100+&lt;/s&gt; ASCII para facilitar a criação de tags.&lt;/li&gt;&lt;li&gt;&lt;s&gt;Melhoria do sistema de notificação de eventos (porta aberta, fechada, desconectada e erros de comunicação) para as portas e para os drivers de protocolo.&lt;/s&gt;&lt;/li&gt;&lt;li&gt;&lt;s&gt;Melhoria na detecção de problemas de rede da porta TCP/UDP.&lt;/s&gt;&lt;/li&gt;&lt;li&gt;&lt;s&gt;Melhorias de estabilidade no IsoTCP.&lt;/s&gt;&lt;/li&gt;&lt;li&gt;Editor de tags estruturais.&lt;/li&gt;&lt;li&gt;Outras melhorias de estabilidade relacionada a uma mudança de funcionamento em tempo de desenvolvimento.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Feito isso a versão 0.6.4 do PascalSCADA será lançada.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The version 0.6.4 is near to be done with a lot of new features, as the IsoTCP driver for the Siemens S7 and the structure tags. But to do it, some issues must be solved/created:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;TagBuilder tool for the new IsoTCP driver &lt;s&gt;and for the West6100+ ASCII driver&lt;/s&gt; to make easy the&amp;nbsp;creation of new&amp;nbsp;tags.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;s&gt;Improve the events notifications system (port opened, closed, disconnected and communications errors) for the ports and for the protocol drivers.&lt;/s&gt;&lt;/li&gt;&lt;li&gt;&lt;s&gt;Improve the detection of network problems of the TCP/UDP port.&lt;/s&gt;&lt;/li&gt;&lt;li&gt;&lt;s&gt;Improve the stability of the IsoTCP. &amp;nbsp;&lt;/s&gt;&lt;/li&gt;&lt;li&gt;Structure editor.&lt;/li&gt;&lt;li&gt;Others stability improvements related with the change of how PascalSCADA works in design time.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When it's done, PascalSCADA 0.6.4 will be released.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-4940294655205444165?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/4940294655205444165/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=4940294655205444165' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4940294655205444165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4940294655205444165'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/09/064-o-que-faltawhats-missing.html' title='0.6.4: O que falta/What&apos;s missing'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-74546442389785931</id><published>2010-07-19T21:33:00.001-03:00</published><updated>2010-08-02T09:29:33.864-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0.6.4'/><category scheme='http://www.blogger.com/atom/ns#' term='new'/><category scheme='http://www.blogger.com/atom/ns#' term='novo'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><category scheme='http://www.blogger.com/atom/ns#' term='siemens'/><category scheme='http://www.blogger.com/atom/ns#' term='isotcp'/><title type='text'>Progresso do ISOTCP/ISOTCP Progress</title><content type='html'>O driver ISOTCP para a família Siemens S7 esta quase pronto. Já e possível ler DB's, Flags, Entradas e Saídas. Outras áreas estão sendo testadas. Após testar todas as áreas a escrita vai ser feita.&lt;br /&gt;&lt;br /&gt;Este novo protocolo estará disponível na versão 0.6.4 do PascalSCADA, junto com os tags com a nova propriedade TagType e os tags estruturais.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;02/Agosto:&lt;/span&gt;&lt;/b&gt; Agora já é possível escrever em Flags, DBs e Saidas com o driver ISOTCP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In English&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The ISOTCP driver for Siemens S7 family is near to be done. Now is possible to read DB's, Flags, Inputs and Outputs. Other areas will be tested. After test all areas the Write will be implemented.&lt;br /&gt;&lt;br /&gt;This new protocol will be available in version 0.6.4 of the PascalSCADA, together&lt;br /&gt;with the  new Tag property called TagType and the Structure Tags.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;02/August:&lt;/b&gt;&lt;/span&gt; Now is possible write in Flags, DBs and Outputs with ISOTCP driver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-74546442389785931?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/74546442389785931/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=74546442389785931' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/74546442389785931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/74546442389785931'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/07/progresso-do-isotcpisotcp-progress.html' title='Progresso do ISOTCP/ISOTCP Progress'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-5646730473507181828</id><published>2010-06-30T23:47:00.001-03:00</published><updated>2010-06-30T23:48:28.087-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='novidade'/><category scheme='http://www.blogger.com/atom/ns#' term='estruturas'/><category scheme='http://www.blogger.com/atom/ns#' term='tag'/><category scheme='http://www.blogger.com/atom/ns#' term='struct'/><title type='text'>Tags estruturais/Structure tags</title><content type='html'>Está disponível no trunk do SVN o mais novo recurso o PascalSCADA: Tags de estruturas. Para isso foi adicionado dois novos componentes, um chamado TPLCStruct que é usado para mapear toda a estrutura e também o TPLCStructItem que é usado para mapear itens isolados da estrutura. O comportamento é semelhante ao tag bloco porem a diferença é que os elementos podem ter os mais variados tamanhos, desde bytes até floats e inteiros de 32 bits.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In english&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Is available on SVN trunk new PascalSCADA resources: Structure Tags. To do this, is available two new components, one called TPLCStruct that represents then entire structure and the TPLCStructItem that represents isolated items of the structure. The behavior is like of the TPLCBlock but the difference is that each TPLCStructItem can have any size, from byte to integers and floats of 32 bits sized.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-5646730473507181828?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/5646730473507181828/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=5646730473507181828' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/5646730473507181828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/5646730473507181828'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/06/tags-estruturaisstruct-tags.html' title='Tags estruturais/Structure tags'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-4505711511498189084</id><published>2010-06-21T16:29:00.007-03:00</published><updated>2010-06-24T17:38:55.018-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data type'/><category scheme='http://www.blogger.com/atom/ns#' term='tag'/><title type='text'>Tipo de dados do Tag/Tag data type</title><content type='html'>Seguindo a sugestão de Jorge López, está disponível no controle de versões do PascalSCADA o suporte a tipo de dados dos tags. Para isso foi acrescentado aos tags três novas propriedades (SwapBytes, SwapWords e TagType). As duas primeiras propriedades são para controle em PLC's iguais aos da Siemens (que inverte a ordem de tudo) e a última diz propriamente o tipo do tag.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Baixem, divirtam-se e caso encontre algum problema, reporte!&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Atenção (24/jun)&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;:&lt;/span&gt; mexendo e testando essa nova funcionalidade, eu descobri um pequeno problema quando você cria um tipo menor (por exemplo um tag byte) quando o protocolo somente oferece tipos maiores (como words, dwords e floats). Ao fechar a aplicação um erro é mostrado. Já estou investigando o motivo disso. &lt;b&gt;Usem com cuidado a versão do SVN.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A revisão 204 do SVN contém a correção.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Following the suggestion of Jorge López, is available at PascalSCADA SVN the data type support in tags. For this, tag now have three new properties (SwapBytes, SwapWords and TagType). SwapBytes and SwapWords is available to read tag in CLP's like Siemens (that invert everthing) and the last is the type of the tag.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Download it and have fun... and if you found some problem, report it!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Warning (24/jun):&lt;/span&gt;&lt;/b&gt; testing this new functionality, I found a problem when you create a tag with size less than the supported sizes in protocol (an example is when you map tag bytes in modbus that only offers words). When you close your application, an exception is raised. I'm searching this. &lt;b&gt;The SVN version must be used with careful.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The SVN revision number 204 contains the correction for this bug. Please test it!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-4505711511498189084?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/4505711511498189084/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=4505711511498189084' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4505711511498189084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4505711511498189084'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/06/tipo-de-dados-do-tagtag-data-type.html' title='Tipo de dados do Tag/Tag data type'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-3831282629251247878</id><published>2010-06-05T10:18:00.002-03:00</published><updated>2010-06-05T11:35:01.779-03:00</updated><title type='text'>Protocolos da familia Siemens S7 / Protocols of Siemens S7 family</title><content type='html'>Conforme a enquete, o protocolo mais votado foi os da familia Siemens S7. A implementação destes já está em andamento. Meus planos é que dentro de um mês teremos o ISOTCP em funciomanento, já que ele atende os CLP's existentes e a nova linha S7-1200.&lt;br /&gt;&lt;br /&gt;Estes protocolos serão baseados na biblioteca libnodave. Sugestões são bem vindas!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In english&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;According to the poll, the Siemens S7 protocol is the winner. I'm working to get it ready soon as possible. My plans are that the ISOTCP will be ready in the next month, because it works with current PLC's and with the new S7-1200.&lt;br /&gt;&lt;br /&gt;This protocols will be based in libnodave library. Sugestions are welcome!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-3831282629251247878?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/3831282629251247878/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=3831282629251247878' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3831282629251247878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3831282629251247878'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/06/protocolos-da-familia-siemens-s7.html' title='Protocolos da familia Siemens S7 / Protocols of Siemens S7 family'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-1853916461333886126</id><published>2010-04-17T09:53:00.003-03:00</published><updated>2010-04-19T16:13:21.451-03:00</updated><title type='text'>Próxima familia de protocolos / Next protocol family</title><content type='html'>Por favor votem na enquete ao lado sobre qual familia de CLP's que desejam ver na versão 0.7 do PascalSCADA.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;In english&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please vote on panel at left about wich the next PLC's family that you want see in &lt;br /&gt;version 0.7 of PascalSCADA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-1853916461333886126?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/1853916461333886126/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=1853916461333886126' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1853916461333886126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1853916461333886126'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/04/proxima-familia-de-protocolos-next.html' title='Próxima familia de protocolos / Next protocol family'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-2614617450337279597</id><published>2010-04-16T10:35:00.006-03:00</published><updated>2010-04-16T11:12:14.813-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='res'/><category scheme='http://www.blogger.com/atom/ns#' term='Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><title type='text'>Lazarus 0.9.28</title><content type='html'>Recentemente recebi um e-mail de Yves GUILLET, informando sobre um problema de compilação da unit uModBusTagBuilder.pas no Lazarus 0.9.28.2. Resolvi pesquisar e descobri que o problema (se isso chega a ser um problema) está relacionado ao novo sistema de Resources que estará presente no Lazarus 0.9.30 (atualmente estou usando a versão 0.9.29 com FPC 2.5.1). A correção para este pequeno problema já está no trunk do SVN e também &lt;a href="https://sourceforge.net/projects/pascalscada/files/fixes/0.6.3/laz0_9_28_2_fix.tar.bz2/download"&gt;aqui&lt;/a&gt;. Se você fizer download do arquivo de correção, descompacte ele na pasta do PascalSCADA sobre-escrevendo os arquivos existentes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;In english&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recently I received an e-mail from Yves GUILLET, asking why the unit uModBusTagBuilder.pas doesn't compiles in Lazarus 0.9.28.2. So I researched and the problem (if it is a problem) is the new resource system that will come in Lazarus 0.9.30 (actualy I'm using the version 0.9.29 with FPC 2.5.1). The fix for this small problem is available at SVN trunk and &lt;a href="https://sourceforge.net/projects/pascalscada/files/fixes/0.6.3/laz0_9_28_2_fix.tar.bz2/download"&gt;here&lt;/a&gt;. If you downloaded the fix file, please decompress it in the PascalSCADA folder, overwriting the existing files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-2614617450337279597?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/2614617450337279597/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=2614617450337279597' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2614617450337279597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2614617450337279597'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/04/lazarus-0928.html' title='Lazarus 0.9.28'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-8525145009521560335</id><published>2010-04-07T20:36:00.002-03:00</published><updated>2010-04-07T20:56:03.203-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='correção'/><category scheme='http://www.blogger.com/atom/ns#' term='0.6.3'/><category scheme='http://www.blogger.com/atom/ns#' term='liberado'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='fixes'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>PascalSCADA 0.6.3 liberado/released</title><content type='html'>Como anunciado anteriormente, descobri um serio bug na versão 0.6.2 que se o tag não estivesse no inicio ou no fim do bloco de tags gerenciado pela classe TPLCMemoryManager ele não conseguia ser atualizado. Também foi descoberto um deadlock quando a aplicação era finalizada. &lt;br /&gt;&lt;br /&gt;Para resolver esses dois problemas, foi liberado no Sourceforge.net a versão 0.6.3 do PascalSCADA. &lt;a href="http://sourceforge.net/projects/pascalscada/files"&gt;Clique aqui&lt;/a&gt; para fazer o download.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;In english&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As previously announced, I found a critical bug in version 0.6.2 when the tag that don't stay at the begin or at the end of a block of tags managed by TPLCMemoryManager class, it isn't updated. I also found a deadlock when the application is terminated.&lt;br /&gt;&lt;br /&gt;To resolve these problems, was released in the Sourceforge.net version 0.6.3 of PascalSCADA. &lt;a href="http://sourceforge.net/projects/pascalscada/files"&gt;Click here&lt;/a&gt; to download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-8525145009521560335?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/8525145009521560335/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=8525145009521560335' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8525145009521560335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8525145009521560335'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/04/pascalscada-063-liberadoreleased.html' title='PascalSCADA 0.6.3 liberado/released'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-7718069310394253594</id><published>2010-04-01T13:46:00.004-03:00</published><updated>2010-04-07T20:36:13.314-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0.6.3'/><category scheme='http://www.blogger.com/atom/ns#' term='fixes'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>Nova Correção / New fix</title><content type='html'>Olá a todos!&lt;br /&gt;&lt;br /&gt;Dias atras trabalhando com o PascalSCADA, descobri outro problema sério com a biblioteca. A versão 0.6.2 só consegue atualizar tags que estão no inicio ou no fim do bloco mantido pelo classe TPLCMemoryManager. A correção já está no SVN. Sugiro a todos atualizarem para a versão do SVN até que a versão 0.6.3 seja liberada no SourceForge.&lt;br /&gt;&lt;br /&gt;In english:&lt;br /&gt;&lt;br /&gt;Some days ago, while I work with the PascalSCADA, I discovered other bug. The version 0.6.2 can only update tags in the start or on the end of the block managed by the class TPLCMemoryManager. The fix is in the SNV trunk. Please update to this version until that the version 0.6.3 is released in the SourceForge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-7718069310394253594?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/7718069310394253594/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=7718069310394253594' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7718069310394253594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7718069310394253594'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/04/nova-correcao-new-fix.html' title='Nova Correção / New fix'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-1983277005969007529</id><published>2010-02-27T08:59:00.006-03:00</published><updated>2010-02-27T11:01:39.286-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='0.6.2'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>0.6.2 versão de correção/0.6.2 fix update</title><content type='html'>Dias atraz conversando com Rafael (que está me ajudando a testar o PascalSCADA) acabamos por descobrir uma falha no TPLCMemoryManager no uso do procedimento Move. Sugiro a todos atualizar suas versões para a última revisão do SVN ou que faça &lt;a href="https://sourceforge.net/projects/pascalscada/files/latest/pascalscada_0.6.2.tar.bz2/download"&gt;download&lt;/a&gt; da versão 0.6.2 que está disponivel no SourceForge.net. &lt;span style="font-weight:bold;"&gt;Vale lembrar que a versão 0.6.1 está inutilizável por causa deste bug.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In english:&lt;br /&gt;&lt;br /&gt;Some days ago while talking with Rafael (he are testing the PascalSCADA) we discover a bug in TPLCMemoryManager in Move procedure. I suggest to everyone to update to the latest SVN revision or &lt;a href="https://sourceforge.net/projects/pascalscada/files/latest/pascalscada_0.6.2.tar.bz2/download"&gt;download&lt;/a&gt; the version 0.6.2 that is available on SourceForge.net. &lt;span style="font-weight:bold;"&gt;Note that the version 0.6.1 is unusable because of this bug&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-1983277005969007529?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/1983277005969007529/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=1983277005969007529' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1983277005969007529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1983277005969007529'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/02/atualizacao-de-correcaofix-update.html' title='0.6.2 versão de correção/0.6.2 fix update'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-8944910204397310795</id><published>2010-01-23T10:18:00.002-03:00</published><updated>2010-01-23T11:15:17.640-03:00</updated><title type='text'>PascalSCADA 0.6.1 liberado / released</title><content type='html'>&lt;div&gt;PascalSCADA 0.6.1 foi lançado. Faça download em &lt;a href="https://sourceforge.net/projects/pascalscada/files/"&gt;https://sourceforge.net/projects/pascalscada/files/&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Somente uma pequena falha continua nessa versão:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;THMIRadioButton não está disponível para Lazarus (temporariamente).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Melhorias dessa versão:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Melhorias de velocidade em TPLCMemoryMananger. Agora ele é pelo menos duas vezes mais rápido que a versão 0.6&lt;/li&gt;&lt;li&gt;Notificação de eventos dos tags. Agora qualquer objeto dependente de um tag é notificado das escritas com falha, escritas com sucesso, leituras com sucesso e leituras com falha.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Outras coisas relacionadas:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Geração automatizada de resources para Delphi e Lazarus.&lt;/li&gt;&lt;li&gt;Exemplos.&lt;/li&gt;&lt;li&gt;Documentação (somente em português) está inclusa.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;PascalScada 0.6.1 is released. Download it from&lt;a href="https://sourceforge.net/projects/pascalscada/files/"&gt; https://sourceforge.net/projects/pascalscada/files/&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Only one issue remain in this version:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;THMIRadioButton isn't available for Lazarus (temporarily).  &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Improvements on this version:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;TPLCMemoryMananger speed enhancements. It's at least 2x fastest.&lt;/li&gt;&lt;li&gt;Tag event notification. Now controls or any tag dependent will be notified of write success, write failure, read success or read failure.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Other things related:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Automated resource creator for Lazarus and Delphi.&lt;/li&gt;&lt;li&gt;Examples.&lt;/li&gt;&lt;li&gt;Documentation (only in Portuguese) is included.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-8944910204397310795?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/8944910204397310795/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=8944910204397310795' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8944910204397310795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8944910204397310795'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2010/01/pascalscada-061-liberado-released.html' title='PascalSCADA 0.6.1 liberado / released'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-6829950642149334186</id><published>2009-12-30T08:03:00.010-03:00</published><updated>2009-12-30T09:59:58.328-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fpc'/><category scheme='http://www.blogger.com/atom/ns#' term='automated'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='automatico'/><category scheme='http://www.blogger.com/atom/ns#' term='res'/><category scheme='http://www.blogger.com/atom/ns#' term='Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='lrs'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Icones da palheta de componentes - Icons of the palette of components</title><content type='html'>&lt;div&gt;Antes de lançar a versão 0.6.1 do PascalSCADA, eu não estava gostando muito dos ícones que estavam no delphi (desatualizados), e estava gostando menos ainda da ideia de abrir cada arquivo SVG, exportar para PNG, abrir no GIMP e salvar como BMP para dai ir para o Windows, abrir um editor de Resource e adicionar cada um dos arquivos BMP no arquivo RES do delphi.&lt;/div&gt;&lt;div&gt;O processo do Lazarus é um pouco menos complicado, pois ele suporta PNG, então cortaria a parte de ir para o Gimp e salvar como BMP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Um pouco complicado, não? Pois bem, eu também acho isso e pensei: Por que não existe um script que faz todo esse processo de geração de ícones e resources? Então pesquisando e conhecendo algo:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Inkscape pode gerar o png a partir de um SVG pela linha de comando.&lt;/li&gt;&lt;li&gt;No Linux, existe o ImageMagick. Este contem o utilitário CONVERT que manipula imagens e salva em vários formatos.&lt;/li&gt;&lt;li&gt;O Lazarus tem um utilitário (lazres) para criação de LRS em linha de comando.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Porem não havia nenhum utilitário de linha de comando que compilava um arquivo DCR/RES para Delphi. Então pesquisando mais um pouco, descobri que o FreePascal tem units para a criação de arquivos RES. Então com um pouco de esforço construí um utilitário para a geração de arquivos RES para delphi na linha de comando diretamente do linux. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O resultado disso é que agora temos um sistema automatizado de geração de Resources para Delphi e Lazarus. Para um novo componente basta você desenhar o ícone dele em SVG e rodar o script e você terá os arquivos RES/LRS atualizados.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O utilitário está disponível no SVN e na versão 0.6.1 do PascalSCADA.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Before release the PascalSCADA 0.6.1, I was not pleased with the component icons in Delphi (outdated). Worse is to open each SVG file, export to PNG, open the PNG in GIMP, save as BMP, start the Windows, open the resource editor and add each BMP into the RES file of Delphi. The process to make a resource for Lazarus is a little less complicated.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A little complicated, not? I also think that and thought: Why don't exist a script that makes this whole process of generation of icons and resources? So researching:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;The inkscape can export the PNG file from the command line.&lt;/li&gt;&lt;li&gt;On Linux, exist the ImageMagick that contains the CONVERT utility that manipulates and saves images in many formats.&lt;/li&gt;&lt;li&gt;The Lazarus has a utility (lazres) that creates LRS files from the command line.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I don't know any utility to create DCR/RES from the command line. So researching a little more, I discovered that FPC has units to manipulate RES files. So I created an command line utility to make RES files for Delphi under Linux.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we have an automated process of creation of icons for Delphi and Lazarus. When you create a new component, draw the icon on Inkscape, run the script and you will have the RES/LRS files updated.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This utility is available in SVN trunk and in PascalSCADA 0.6.1&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-6829950642149334186?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/6829950642149334186/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=6829950642149334186' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6829950642149334186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6829950642149334186'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/12/icones-da-palheta-de-componentes-icons.html' title='Icones da palheta de componentes - Icons of the palette of components'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-8795401375216393733</id><published>2009-11-10T08:46:00.002-03:00</published><updated>2009-11-10T09:07:19.283-03:00</updated><title type='text'>ZeosLib 64 bits</title><content type='html'>Se você estava desesperado pelo fato da ZeosLib não funcionar adequadamente em 64 bits, se acalme. Enviei para Mark Daems (gerente da ZeosLib) o quinto patch que corrige este problema. Testado em todas nas versões do Delphi 7 até a versão 2009 e no Lazarus/FPC com MySQL e Postgres e está tudo funcionando bem. A revisão da ZeosLib que contem a correção é a 717.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Agora é possível sonhar com históricos e receitas na versão 0.7 do PascalSCADA.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Divirtam-se!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If are you desperate because ZeosLib doesn't work correctly in 64 bits, don't worry! I sent to Mark Daems (manager of ZeosLib) the fifth patch that solves this problem. It was tested with versions of Delphi 7, 2006, 2007, 2009 and Lazarus/FPC with MySQL and Postgres and is everything working fine. The revision of ZeosLib with this patch is 717.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now is possible to dream with historic and recipes in the version 0.7 of PascalSCADA.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-8795401375216393733?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/8795401375216393733/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=8795401375216393733' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8795401375216393733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8795401375216393733'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/11/zeoslib-64-bits.html' title='ZeosLib 64 bits'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-5515296717370479822</id><published>2009-11-04T19:37:00.002-03:00</published><updated>2009-11-04T19:44:09.191-03:00</updated><title type='text'>PascalScada v0.6.1</title><content type='html'>Em breve estará disponível para download a versão 0.6.1 do PascalScada. Esta é uma versão de correção da versão 0.6. As novidades ficam por alguns exemplos e pela documentação que irá acompanhar os proximos pacotes.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The version 0.6.1 of PascalScada will be available to download soon. This is a bug fix release. The news are some example applications and the documentation.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-5515296717370479822?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/5515296717370479822/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=5515296717370479822' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/5515296717370479822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/5515296717370479822'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/11/pascalscada-v061.html' title='PascalScada v0.6.1'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-8925799395976530504</id><published>2009-10-06T08:51:00.003-03:00</published><updated>2009-10-06T10:09:59.957-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='0.6'/><title type='text'>PascalScada v0.6 liberado/released</title><content type='html'>O PascalScada 0.6 está liberado para download. Você pode fazer download desta versão em &lt;div&gt;&lt;a href="https://sourceforge.net/projects/pascalscada/files/"&gt;https://sourceforge.net/projects/pascalscada/files/&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ficaram nessa versão apenas quatro pequenos detalhes/falhas:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;THMIScrollBar não funciona em GTK 2 e QT. Para contornar isso, habilite a propriedade UpdateOnMove para true.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;THMICheckBox não está funcionando no Lazarus/FPC. A LCL do Lazarus está sob constantes alterações, e pelo que pude perceber algumas delas mudaram a forma como o controle pai (TCheckBox) trabalha, consequentemente quebrando o THMICheckBox.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;THMIRadioButton não está mais disponível para Lazarus (temporariamente). Como citado no item anterior, THMIRadioButton é uma classe filha de THMICheckBox, e por questões de implementação LCL, isso não é mais possível.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Na versão 0.5 você tinha TModbusMasterDriver. Devido a criação do Modbus TCP o nome dessa classe mudou para TModbusRTUDriver. Ela continua com as mesmas configurações e propriedades da classe anterior.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Bom era isso. Divirtam-se!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;PascalScada 0.6 is released. Download it from &lt;a href="https://sourceforge.net/projects/pascalscada/files/"&gt;https://sourceforge.net/projects/pascalscada/files/&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Four small issues/bugs still remain in this version:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;THMIScrollBar doesn't work under GTK 2 and QT. A workaround is set UpdateOnMove=true.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;THMICheckBox doesn't work under Lazarus/FPC. The Lazarus team is working a lot in the LCL, doing a lot of changes, and some of this changes have changed the way of TCheckBox works, breaking the THMICheckBox.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;THMIRadioButton isn't available for Lazarus (temporarily).  The cause is the same of item 2. THMIRadioButton is a child class of THMICheckBox, and this isn't possible anymore.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In version 0.5 is available the TModbusMasterDriver class. Due creation of Modbus TCP, the name of this class was changed to TModbusRTUDriver. This class has the same properties and methods of TModbusMasterDriver.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-8925799395976530504?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/8925799395976530504/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=8925799395976530504' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8925799395976530504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8925799395976530504'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/10/pascalscada-v06-liberadoreleased.html' title='PascalScada v0.6 liberado/released'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-1748293594180165934</id><published>2009-09-25T20:12:00.003-03:00</published><updated>2009-09-25T20:18:04.248-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='package'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='0.6'/><title type='text'>PascalScada v0.6 SVN</title><content type='html'>Já está disponível para download no svn a versão 0.6 do PascalScada. Cole a url abaixo no tortoise ou no seu cliente svn preferido para fazer o download.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;https://pascalscada.svn.sourceforge.net/svnroot/pascalscada/tags/0.6/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Em breve estará disponível para download no Sourceforge.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Is available to download in the svn the version 0.6 of PascalScada. Paste the url above in your favorite svn client to download it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The packages will be available in Sourceforge too.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-1748293594180165934?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/1748293594180165934/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=1748293594180165934' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1748293594180165934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1748293594180165934'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/09/pascalscada-v06-svn.html' title='PascalScada v0.6 SVN'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-30576665044764384</id><published>2009-09-25T01:27:00.004-03:00</published><updated>2009-09-25T01:59:51.469-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0.6'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='fixes'/><title type='text'>PascalScada v0.6 está chegando/PascalScada v0.6 is comming soon</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;A versão 0.6 do PascalScada está chegando. Com ela muitas melhorias de estabilidade e desempenho chegam junto. As novidades ficam pelos drivers TCP_UDPPort e pelo driver de protocolo ModBus TCP. Estava planejado para esta versão históricos e receitas, mas devido ao fato da ZeosLib não estar disponível para ambientes 64 bits, isto foi adiado para a próxima versão.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Até o próximo final de semana os pacotes da versão 0.6 estarão disponíveis para download no Sourcefoget.net.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In en&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;glish:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;The version 0.6 of PascalScada is comming soon. This release have a lot of improvements of stability and performance. The new features is the TCP_UDPPort and the ModBusTCP protocol driver. It was planned to this release Historic and Recipes, but the ZeosLib isn't done for 64 bits environments. This will be available in the next release of PascalScada.  In the next days the packages of version 0.6 will be available to download in the Sourceforge.net.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-30576665044764384?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/30576665044764384/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=30576665044764384' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/30576665044764384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/30576665044764384'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/09/pascalscada-v06-esta.html' title='PascalScada v0.6 está chegando/PascalScada v0.6 is comming soon'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-7284525712489325479</id><published>2009-09-18T20:23:00.004-03:00</published><updated>2009-09-18T20:41:06.543-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='estabilidade'/><category scheme='http://www.blogger.com/atom/ns#' term='acertos'/><category scheme='http://www.blogger.com/atom/ns#' term='stability'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>Acertos/Fixes</title><content type='html'>Os novos drivers TCP_UDPPort e o ModBusTCP já estão quase prontos. Porem nesses últimos testes acabei por encontrar alguns problemas de instabilidade que afetam todos os drivers.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Recomendo a todos que estão usando o PascalSCADA atualizarem suas cópias.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The new drivers TCP_UDPPort and the ModBusTCP are almost done. But in the last tests, I found some stability issues that affects all drivers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please update your copy to avoid problems.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-7284525712489325479?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/7284525712489325479/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=7284525712489325479' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7284525712489325479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7284525712489325479'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/09/acertosfixes.html' title='Acertos/Fixes'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-2735054314394673602</id><published>2009-09-15T00:44:00.003-03:00</published><updated>2009-09-15T01:06:55.496-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tcp'/><category scheme='http://www.blogger.com/atom/ns#' term='udp'/><category scheme='http://www.blogger.com/atom/ns#' term='drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><category scheme='http://www.blogger.com/atom/ns#' term='modbus'/><title type='text'>Porta TCP/UDP e ModBusTCP/ TCP/UDP port and ModBusTCP</title><content type='html'>&lt;div&gt;Está disponível no svn do PascalSCADA dois novos drivers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O primeiro driver dá suporte a comunicações TCP/UDP sobre IPv4. Este era o primeiro passo para suportar CLP's modernos de vários fabricantes, tais como Siemens, Allen Bradley e Schneider.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O segundo driver da suporte ao ModBus TCP usado em CLP's da Schneider.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ambos estão em fase de testes e precisam de melhorias e otimizações.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In english:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Are available in the svn trunk of PascalSCADA two new drivers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First driver enable TCP/UDP over IPv4 communications. This is the first step to support the last generation PLC's of many manufactures, like Siemens, Allen Bradley and Schneider.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The second driver is the ModBus TCP,  used in PLC's of Schneider.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Both are in test and need fixes and optimizations.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-2735054314394673602?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/2735054314394673602/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=2735054314394673602' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2735054314394673602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2735054314394673602'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/09/porta-tcpudp-e-modbustcp-tcpudp-port.html' title='Porta TCP/UDP e ModBusTCP/ TCP/UDP port and ModBusTCP'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-8115372931762201086</id><published>2009-08-12T09:05:00.003-03:00</published><updated>2009-08-12T09:31:48.989-03:00</updated><title type='text'>Dependências / Dependency</title><content type='html'>Nesses últimos tempos sem notícia alguma estive trabalhando na parte de histórico/receitas do PascalSCADA (o que requer banco de dados). Nesse tempo analisei várias bibliotecas de banco de dados e a que mais se acertou com a proposta do projeto foi a &lt;a href="http://zeos.firmos.at/"&gt;ZeosLib&lt;/a&gt;. Porem como uso uma plataforma 64 bits (Ubuntu 9.04) verifiquei que o ZeosLib não está pronto para a plataforma 64 bits. Então comecei um esforço para torna-la segura nesses ambientes. Progresso pode ser visto no &lt;a href="http://zeosbugs.firmos.at/view.php?id=190"&gt;ZeosBugs&lt;/a&gt; e no &lt;a href="http://zeos.firmos.at/viewtopic.php?t=2358"&gt;Forum da ZeosLib&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Nesse meio tempo também foram iniciados os drivers de porta TCP/UDP para futuramente dar suporte a drivers de protocolo tais como ISOTCP utilizado pela Siemens e o ModbusTCP utilizado pela Schneider.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the last time without any new, I was worked with historic/recipes of PascalScada (that needs Database access). I analyzed many components of database access and the library with better works with PascalScada is the &lt;a href="http://zeos.firmos.at/"&gt;ZeosLib&lt;/a&gt;. But ZeosLib aren't done for the 64 bits environments. So, I started a force to make ZeosLib safe in these environments. The progress can be viewed in &lt;a href="http://zeosbugs.firmos.at/view.php?id=190"&gt;ZeosBugs&lt;/a&gt; and in &lt;a href="http://zeos.firmos.at/viewtopic.php?t=2358"&gt;ZeosLib Forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I started too a TCP/UDP Port driver to support protocol drivers like ISOTCP (Siemens) and ModbusTCP (Schneider).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-8115372931762201086?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/8115372931762201086/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=8115372931762201086' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8115372931762201086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8115372931762201086'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/08/dependencias-dependency.html' title='Dependências / Dependency'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-473063136435923907</id><published>2009-04-29T15:15:00.008-03:00</published><updated>2009-07-09T09:13:25.400-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='application'/><category scheme='http://www.blogger.com/atom/ns#' term='Ibox'/><category scheme='http://www.blogger.com/atom/ns#' term='help'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='need'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><title type='text'>Drivers e boas noticias/ Drivers and good news</title><content type='html'>Desculpem a demora em dar novas noticias.&lt;br /&gt;&lt;br /&gt;Tenho varias noticias a respeito do PascalSCADA:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Um novo driver foi criado e está em fase de testes. É o TIBoxDriver, usado para comunicar com módulos de refrigeração, usado em camaras frias de caminhões. Eu sei que ele não tem nada haver com automação industrial, mas fica ai o driver para quem estiver precisando comunicar com modulos de refrigeração.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A primeira aplicação foi desenvolvida com a biblioteca PascalSCADA. Foi desenvolvida pela empresa &lt;a href="http://www.sitecbr.com.br/"&gt;SITEC&lt;/a&gt; - Soluções em Tecnologia Industrial LTDA, de Chapecó, Santa Catarina, Brasil. A aplicação foi feita usando o Delphi 2006/2007. A aplicação controla estufas de resfriamento de salsichas. &lt;a href="http://sourceforge.net/project/screenshots.php?group_id=252559"&gt;Screenshots&lt;/a&gt; da aplicação em desenvolvimento e funcionando vão estar em breve disponiveis no site do projeto PascalSCADA no SourceForge.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;O PascalSCADA precisa de ajuda. Para isso foram abertas vagas para desenvolvedores e testers. Se você se julga apto visite o site do &lt;a href="http://sourceforge.net/projects/pascalscada/"&gt;PascalSCADA no SourceForge&lt;/a&gt; e veja como ajudar!&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sorry by the long delay between posts.&lt;br /&gt;&lt;br /&gt;I have many news of PascalSCADA:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;New driver is done and it is under tests. It's called TIBoxDriver, used to communicate with refrigeration modules, used in cold chambers of trucks. I know that don't have anything related with industrial automation, but if you need to communicate with the refrigeration modules you have at least one way to do this.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The first application has been made with PascalScada. It was developed by the company &lt;a href="http://www.sitecbr.com.br/"&gt;SITEC&lt;/a&gt; - Soluções em Tecnologia Industrial LTDA, from Chapecó, Santa Catarina, Brasil. The application has been developed with Delphi 2006/2007 and control the cooling of sausages. &lt;a href="http://sourceforge.net/project/screenshots.php?group_id=252559"&gt;Screenshots&lt;/a&gt; of the application in developement stage and running will be available shortly in the PascalSCADA site in the SourceForge.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The PascalSCADA need help. For this are opened some positions for developers and testers. If you have some skills in development or testing, visit &lt;a href="http://sourceforge.net/projects/pascalscada/"&gt;PascalSCADA on SourceForge&lt;/a&gt; and see how to help!&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-473063136435923907?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/473063136435923907/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=473063136435923907' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/473063136435923907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/473063136435923907'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/04/drivers-e-boas-noticias-drivers-and.html' title='Drivers e boas noticias/ Drivers and good news'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-3494419306643329181</id><published>2009-03-25T00:19:00.003-03:00</published><updated>2009-03-25T00:31:06.725-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='protocolo'/><category scheme='http://www.blogger.com/atom/ns#' term='protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='WEST 6100'/><category scheme='http://www.blogger.com/atom/ns#' term='drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><category scheme='http://www.blogger.com/atom/ns#' term='WEST'/><title type='text'>West N6100 Ascii</title><content type='html'>Dias atras anunciei o novo driver para controladores de processos West N6100. Agora mais uma boa notícia. Ele está quase 100% testado e com boa funcionalidade. Veja nos postagens anteriores como baixar e usar esse novo recurso...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Some days ago, I announced the new protocol driver for the West N6100. Now, I have another good new. It is 100% tested and are working well. See in the previous posts how to download and to use this new driver...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-3494419306643329181?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/3494419306643329181/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=3494419306643329181' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3494419306643329181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3494419306643329181'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/03/west-n6100-ascii.html' title='West N6100 Ascii'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-3626624880711998453</id><published>2009-03-21T02:38:00.007-03:00</published><updated>2009-03-21T10:00:11.657-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WEST 6100'/><category scheme='http://www.blogger.com/atom/ns#' term='drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><category scheme='http://www.blogger.com/atom/ns#' term='WEST'/><title type='text'>Novo Driver: WEST6100Ascii / New driver: WEST6100Ascii</title><content type='html'>Já está disponivel no trunk do svn do PascalSCADA o driver WEST6100 Ascii para comunicar com os controladores WEST 6100 e 6100+. Salientando que está é uma versão ainda em fase de testes!&lt;br /&gt;&lt;br /&gt;Se você achar algum problema com este driver, por favor reporte ele no &lt;a href="http://apps.sourceforge.net/mantisbt/pascalscada/"&gt;bugtracking do pascalscada&lt;/a&gt; ou envie um comentário/email detalhando.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;IN ENGLISH:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Is available in SVN trunk of PascalSCADA the WEST6100 Ascii driver to communicate with controllers WEST 6100 and 6100+. To remember, this driver still in testing yet.&lt;br /&gt;&lt;br /&gt;If you have some problems with this driver, please report it using the &lt;a href="http://apps.sourceforge.net/mantisbt/pascalscada/"&gt;pascalSCADA bugtracking&lt;/a&gt; or send-me a e-mail or a comment in this blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-3626624880711998453?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/3626624880711998453/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=3626624880711998453' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3626624880711998453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3626624880711998453'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/03/novo-driver-west6100ascii-new-driver.html' title='Novo Driver: WEST6100Ascii / New driver: WEST6100Ascii'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-6934396058860141193</id><published>2009-03-02T14:52:00.007-03:00</published><updated>2009-03-13T10:33:32.204-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='evento'/><category scheme='http://www.blogger.com/atom/ns#' term='TEvent'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='TCrossEvent'/><title type='text'>TEvent no Unix IV / TEvent under Unix episode IV</title><content type='html'>Lembram dos episódios passados com a classe  TEvent no Unix (&lt;a href="http://pascalscada.blogspot.com/2007/10/eventos-no-unix-episdio-iii.html"&gt;http://pascalscada.blogspot.com/2007/10/eventos-no-unix-episdio-iii.html&lt;/a&gt;). Pois bem, isso agora chega ao fim. Após muito conversar com Jonas Maebe do FreePascal, eu mesmo escrevi a solução para esse problema (com algumas melhorias sugeridas pelo Jonas). Eu já havia feito algo para o projeto PascalSCADA e chamei de TCrossEvent, então resolvi compartilhar a solução. No unix os eventos são emulados, e por isso entre um SetEvent e a continuação de uma thread após um WaitFor levava em torno de 400ms (muito para uma comunicação). Após a reimplementação isso leva 0ms (igual em todos os sistemas operacionais).&lt;br /&gt;&lt;br /&gt;Por enquanto a solução está somente na versão desenvolvimento do FreePascal (versão 2.3.1), mas creio eu que estará disponível na próxima versão estável do compilador...&lt;br /&gt;&lt;br /&gt;O histórico da resolução está em&lt;br /&gt;&lt;a href="http://bugs.freepascal.org/view.php?id=9895"&gt;http://bugs.freepascal.org/view.php?id=9895&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You remember of past episodes with the class TEvent under Unix (&lt;a href="http://pascalscada.blogspot.com/2007/10/eventos-no-unix-episdio-iii.html"&gt;http://pascalscada.blogspot.com/2007/10/eventos-no-unix-episdio-iii.html&lt;/a&gt;). After talk a lot with Jonas Maebe, developer of FreePascal, I wrote the solution for this problem (with some improvements sugested by Jonas). I did something like this for PascalSCADA, called TCrossEvent, then I shared this. Under Unix, Events are emulated and between a SetEvent and a thread wake up this take about a 400ms (many time for communications). After reimplementation this take about of 0ms (in all operating systems).&lt;br /&gt;&lt;br /&gt;At moment, this solution is avaliable in the development version of FreePascal(version 2.3.1), but I think that it will be available in the next stable version of FreePascal.&lt;br /&gt;&lt;br /&gt;The historic:&lt;br /&gt;&lt;a href="http://bugs.freepascal.org/view.php?id=9895"&gt;http://bugs.freepascal.org/view.php?id=9895&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-6934396058860141193?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/6934396058860141193/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=6934396058860141193' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6934396058860141193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6934396058860141193'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/03/tevent-no-unix-iv-tevent-under-unix.html' title='TEvent no Unix IV / TEvent under Unix episode IV'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-1631660518059383311</id><published>2009-02-20T16:01:00.021-03:00</published><updated>2011-03-09T09:34:24.408-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='scada'/><category scheme='http://www.blogger.com/atom/ns#' term='livre'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><title type='text'>PascalSCADA: Instalação/Installation</title><content type='html'>Para facilitar a instalação do PascalSCADA, aqui vão algumas dicas.&lt;br /&gt;&lt;br /&gt;Primeiro &lt;a href="http://sourceforge.net/projects/pascalscada/files/"&gt;baixe o PascalSCADA&lt;/a&gt; (Veja nas postagens anteriores como proceder) e descompacte o PascalSCADA em uma pasta de sua preferência;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Usuários de Delphi:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Vá em File -&amp;gt; Open e navegue até a pasta onde você baixou o PascalSCADA e selecione o arquivo "pacalscada.dpk";&lt;/li&gt;&lt;li&gt;Se você usa Delphi 7 clique no botão Install, se você usa Delphi 2005 em diante, clique com o botão direito sobre o pacote &lt;b&gt;pascalscada.bpl&lt;/b&gt;&amp;nbsp;no gerenciador de projetos e selecione a opção Install;&lt;/li&gt;&lt;li&gt;Agora vá no menu Tools -&amp;gt; Options e procure algo relacionado a Library. Adicione o path do PascalSCADA e clique em OK.&lt;/li&gt;&lt;li&gt;Seja feliz!&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-style: italic;"&gt;Usuários do Lazarus:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Vá no menu Package -&amp;gt; Open package file (.lpk) e navegue até a pasta onde você baixou o PascalSCADA e selecione o arquivo "pascalscada.lpk".&lt;/li&gt;&lt;li&gt;Clique no botão Install e seja feliz!&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Nota&lt;/b&gt;: você pode optar por baixar a versão em desenvolvimento, que dependendo das modificações poderá não funcionar. &lt;a href="http://pascalscada.svn.sourceforge.net/viewvc/pascalscada/trunk/?view=tar"&gt;Clique aqui&lt;/a&gt; para baixar esta versão.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: large; font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To facility the installation of PascalSCADA, I wrote some tips:&lt;br /&gt;&lt;br /&gt;First, &lt;a href="http://sourceforge.net/projects/pascalscada/files/"&gt;download the PascalSCADA&lt;/a&gt; (see previous post to see how to do) and unzip the PascalSCADA on a folder of your choice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Delphi users:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Select File -&amp;gt; Open and go to the folder that you have downloaded the PascalSCADA and select the file "pascalscada.dpk";&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you use Delphi 7 click on button Install. If you use Delphi 2005 or later right click in package &lt;b&gt;pascalscada.bpl&lt;/b&gt; on the project manager and select Install on popup menu.&lt;/li&gt;&lt;li&gt;So, select menu Tools -&amp;gt; Options and search something like Library and add the folder of the PascalSCADA and click OK.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Be happy!&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-style: italic;"&gt;Lazarus users:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Select menu Package -&amp;gt; Open package file (.lpk) and go to the folder that you have downloaded the PascalSCADA and select the file "pascalscada.lpk".&lt;/li&gt;&lt;li&gt;Click on button Install and be happy!&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Note&lt;/b&gt;: you can download the development version, that can work or not depending of the modifications on it. &lt;a href="http://pascalscada.svn.sourceforge.net/viewvc/pascalscada/trunk/?view=tar"&gt;Click here&lt;/a&gt; to download this version.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-1631660518059383311?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/1631660518059383311/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=1631660518059383311' title='14 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1631660518059383311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/1631660518059383311'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/02/pasc.html' title='PascalSCADA: Instalação/Installation'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-2022995416715568209</id><published>2009-02-05T21:48:00.008-03:00</published><updated>2009-02-23T13:06:39.077-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scada'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>PascalSCADA SVN</title><content type='html'>URL para baixar a versão desenvolvimento do PascalSCADA (via SVN):&lt;br /&gt;&lt;br /&gt;Usuários do windows devem instalar o TortoiseSVN (http://tortoisesvn.net/downloads). Após isso devem criar uma pasta vazia e dentro dela clicar com o botão direito e escolher "SVN Checkout"&lt;br /&gt;&lt;br /&gt;No dialogo que aparece cole a URL abaixo no campo "URL of repository":&lt;br /&gt;&lt;br /&gt;&lt;a href="https://pascalscada.svn.sourceforge.net/svnroot/pascalscada/trunk"&gt;https://pascalscada.svn.sourceforge.net/svnroot/pascalscada/trunk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Usuários de Linux/FreeBSD é só digitar em um console:&lt;br /&gt;&lt;br /&gt;svn co &lt;a href="https://pascalscada.svn.sourceforge.net/svnroot/pascalscada/trunk"&gt;https://pascalscada.svn.sourceforge.net/svnroot/pascalscada/trunk&lt;/a&gt; pascalscada&lt;br /&gt;&lt;br /&gt;Você pode colaborar relatando bugs ou sugerindo ideias em:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apps.sourceforge.net/mantisbt/pascalscada/my_view_page.php"&gt;http://apps.sourceforge.net/mantisbt/pascalscada/my_view_page.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;URL to download the development version of PascalSCADA (SVN):&lt;br /&gt;&lt;br /&gt;Windows users must install the TortoiseSVN (http://tortoisesvn.net/downloads). So create a empty folder and then right click into and choose "SVN Checkout" in the menu.&lt;br /&gt;&lt;br /&gt;In dialog box, paste the url bellow in the field "URL of repository":&lt;br /&gt;&lt;br /&gt;&lt;a href="https://pascalscada.svn.sourceforge.net/svnroot/pascalscada/trunk"&gt;https://pascalscada.svn.sourceforge.net/svnroot/pascalscada/trunk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Linux/FreeBSD users execute in a console the command bellow:&lt;br /&gt;&lt;br /&gt;svn co &lt;a href="https://pascalscada.svn.sourceforge.net/svnroot/pascalscada/trunk"&gt;https://pascalscada.svn.sourceforge.net/svnroot/pascalscada/trunk&lt;/a&gt; pascalscada&lt;br /&gt;&lt;br /&gt;You can collaborate relating bugs or suggesting ideas in:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apps.sourceforge.net/mantisbt/pascalscada/my_view_page.php"&gt;http://apps.sourceforge.net/mantisbt/pascalscada/my_view_page.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-2022995416715568209?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/2022995416715568209/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=2022995416715568209' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2022995416715568209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2022995416715568209'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/02/pascalscada-svn.html' title='PascalSCADA SVN'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-4332023286548755202</id><published>2009-02-05T11:29:00.005-03:00</published><updated>2009-02-23T12:36:16.794-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='scada'/><category scheme='http://www.blogger.com/atom/ns#' term='livre'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><title type='text'>PascalSCADA Open-Source</title><content type='html'>Olá a todos!&lt;br /&gt;&lt;br /&gt;Talvez a notícia que todos aguardavam! O PascalSCADA vai se tornar um projeto  Open-Source. Estou apenas aguardando a aprovação do SourceForge.net para hospedar o projeto lá.&lt;br /&gt;&lt;br /&gt;Então, se você quiser colaborar, seja com codigos, testes ou ideias, seja bem vindo!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The new that everyone is waiting! The PascalSCADA will be a open-source project. I'm waiting the approval of SourceForge.net to host the project there.&lt;br /&gt;&lt;br /&gt;So, if you wants to work, with codes, tests or ideas, you are welcome!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-4332023286548755202?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/4332023286548755202/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=4332023286548755202' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4332023286548755202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4332023286548755202'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/02/pascalscada-open-source.html' title='PascalSCADA Open-Source'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-4691009636424120802</id><published>2009-01-29T23:29:00.005-03:00</published><updated>2009-01-30T00:34:33.987-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tag bit'/><category scheme='http://www.blogger.com/atom/ns#' term='Lazarus Resouce'/><category scheme='http://www.blogger.com/atom/ns#' term='lrs'/><title type='text'>Lazarus Resource (LRS)</title><content type='html'>Após algum tempo sem nenhuma notícia, venho com duas novidades.&lt;br /&gt;&lt;br /&gt;A primeira é que já está disponível o tag Bit, que é responsável por gerar valores com determinados bits de uma palavra de outro tag.&lt;br /&gt;&lt;br /&gt;A outra é que devido ao fato de ter de criar um novo ícone para este tag e ter de recriar o arquivo lrs que armazena os icones dos componentes, acabei criando uma ferramenta gráfica para facilitar esta tarefa.&lt;br /&gt;&lt;br /&gt;O download dessa ferramenta eu irei disponibilizar assim que possível.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After a long time without news, i have two good news:&lt;br /&gt;&lt;br /&gt;First, is that I created the Tag Bit, to map bits of other tags.&lt;br /&gt;&lt;br /&gt;The second is a small graphic tool that I created to manage lazarus resources easily,&lt;br /&gt;This tool will be avaliable shortly...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-4691009636424120802?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/4691009636424120802/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=4691009636424120802' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4691009636424120802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4691009636424120802'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2009/01/lazarus-resource-lrs.html' title='Lazarus Resource (LRS)'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-996883409147378415</id><published>2008-09-19T08:41:00.007-03:00</published><updated>2008-09-19T09:53:11.890-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fpc'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='x86_64'/><category scheme='http://www.blogger.com/atom/ns#' term='snapshot'/><title type='text'>FreePascal FreeBSD x86_64 snapshots...</title><content type='html'>Nas últimas semanas, verifiquei que o FPC não tinha suporte para a plataforma FreeBSD x86_64... Mas nessa semana, saiu o primeiro snapshot da versão... Esta semana vão sair os primeiros testes do PascalScada no FreeBSD x86_64. O link para baixar o snapshot do FPC FreeBSD x86_64 está abaixo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Last week, I see that FPC don't have support for FreeBSD x86_64. But in this week, the first snapshot of this version was released. This week I will do the first tests of PascalScada under FreeBSD x86_64.  See bellow the link to download FPC FreeBSD x86_64 snapshot.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FPC FreeBSD x86_64 download:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.stack.nl/%7Emarcov/snapshot-freebsd-x86_64-r11798.tar.bz2" target="_blank"&gt;http://www.stack.nl/~marcov/&lt;wbr&gt;snapshot-freebsd-x86_64-&lt;wbr&gt;r11798.tar.bz2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-996883409147378415?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/996883409147378415/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=996883409147378415' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/996883409147378415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/996883409147378415'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2008/09/freepascal-freebsd-x8664-snapshots.html' title='FreePascal FreeBSD x86_64 snapshots...'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-2950424776347230363</id><published>2008-08-05T13:49:00.019-03:00</published><updated>2008-08-26T21:21:28.164-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='projeto'/><category scheme='http://www.blogger.com/atom/ns#' term='documentação'/><category scheme='http://www.blogger.com/atom/ns#' term='progresso'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><category scheme='http://www.blogger.com/atom/ns#' term='arte'/><title type='text'>Documentação do projeto/Project Documentation</title><content type='html'>Dias atrás, enquanto depurava alguns recursos do driver driver de protocolo, tive a necessidade de saber como um método de uma classe funcionava. Porém como não havia muito (para não dizer nenhum comentário) tive que ir ler o código... fiquei um tanto frustrado com isso, e pensei: poderia haver um comentário ou algum documento explicando. Ai me perguntei novamente: será que não há alguma ferramenta que retire dos comentários do código-fonte a documentação?&lt;br /&gt;&lt;br /&gt;Então fui no santo Google procurei sobre isso e para minha surpresa, há varias ferramentas usadas para esse fim. Testei várias, entre as quais posso citar RoboDoc e PasDoc, este último escrito totalmente em pascal.&lt;br /&gt;&lt;br /&gt;Escolhi para documentar o projeto PascalScada o PasDoc, por produzir uma documentação fácil de se entender e por ser voltado a linguagem Pascal.&lt;br /&gt;&lt;br /&gt;Semana passada, foram alinhados os segmentos de desenvolvimento (que era o mais adiantado), documentação e arte. A partir de agora, desenvolvimento, arte e documentação serão feitos juntos. Nos próximos dias, coloco a disposição as imagens dos componentes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In English&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;Some days ago, while I´m debugging the protocol component, I needed to know how a procedure works. But I don´t wrote many comments in the code, so I have to read the code to learn how it works. I was frustrated and ask to myself: Could be exists some comment in source code or some documentation. I asked-me again: Exists some tool that compiles the documentation from the comments in the source code?&lt;br /&gt;&lt;br /&gt;Then, I looked on Google about this and to my surprise, exists many tools to do that. I did some tests with Robodoc and Pasdoc, the last entirely wrote in Pascal.&lt;br /&gt;&lt;br /&gt;I chose to document the PascalScada the PasDoc, to produce a documentation simple to understand and to be focused in Pascal language.&lt;br /&gt;&lt;br /&gt;Last week, documentation and art are finished, and from now, develpment, art and documentation will be done all together.&lt;br /&gt;&lt;br /&gt;Furthermore, I will post the component icons in some days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-2950424776347230363?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/2950424776347230363/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=2950424776347230363' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2950424776347230363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2950424776347230363'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2008/08/documentao-do-projetoproject.html' title='Documentação do projeto/Project Documentation'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-3593320736208959895</id><published>2008-07-23T14:44:00.005-03:00</published><updated>2008-07-23T14:47:42.354-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='application'/><category scheme='http://www.blogger.com/atom/ns#' term='linux x86_64'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='demonstration'/><category scheme='http://www.blogger.com/atom/ns#' term='pascalscada'/><category scheme='http://www.blogger.com/atom/ns#' term='x86_64'/><title type='text'>PascalScada sobre/on Linux x86_64</title><content type='html'>Um screenshot do PascalScada rodando em Linux x86_64. &lt;a href="http://www.sitecbr.com.br/publico/fabio/screenshot_x86_64.png"&gt;Veja aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Screenshot of PascalScada running on Linux x86_64. &lt;a href="http://www.sitecbr.com.br/publico/fabio/screenshot_x86_64.png"&gt;See here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-3593320736208959895?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/3593320736208959895/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=3593320736208959895' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3593320736208959895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3593320736208959895'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2008/07/pascalscada-sobreon-linux-x8664.html' title='PascalScada sobre/on Linux x86_64'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-8306041866598034859</id><published>2008-07-21T20:41:00.008-03:00</published><updated>2008-07-21T21:35:26.732-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bits'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='64 bits'/><category scheme='http://www.blogger.com/atom/ns#' term='amd64'/><category scheme='http://www.blogger.com/atom/ns#' term='64'/><category scheme='http://www.blogger.com/atom/ns#' term='x86_64'/><title type='text'>FreeBSD amd64</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Em português: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Duas notícias, uma boa e outra ruim. A primeira é a que o PascalScada é compatível com Linux x86_64 (64 bits). Instalei hoje o Slamd64, não tendo problemas para rodar o FPC 2.2.2 rc2, Lazarus 0.9.25 snapshot 20080721 e o PascalScada em plataforma 64 bits. Muito rápido e estável.&lt;br /&gt;&lt;br /&gt;A má notícia  é que após muito empenho, descobri que ainda não há suporte do FPC para FreeBSD AMD64. Partes escritas em assembler não foram escritas para o FreeBSD x86_64, o que me obriga adiar os testes em FreeBSD 64bits.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In english:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have two news, an good and other bad. The first news is that PascalScada is ready for Linux x86_64 (64 bits). I installed Slamd64 today and runs without problems FPC 2.2.2 rc2, Lazarus 0.9.25 snapshot 20080721 and the PascalScada on 64 bits platform. Very fast and stable.&lt;br /&gt;&lt;br /&gt;The bad news is that FPC isn't ready for FreeBSD AMD64. Sources wrote in assembler is not ported to FreeBSD x86_64 yet, delaying my tests on FreeBSD 64 bits.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-8306041866598034859?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/8306041866598034859/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=8306041866598034859' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8306041866598034859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8306041866598034859'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2008/07/freebsd-amd64.html' title='FreeBSD amd64'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-6944579435084705555</id><published>2008-06-25T13:25:00.008-03:00</published><updated>2008-07-30T10:41:56.386-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='desenvolvimento'/><category scheme='http://www.blogger.com/atom/ns#' term='scada'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='esclarecimento'/><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='allen bradley'/><category scheme='http://www.blogger.com/atom/ns#' term='drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='siemens'/><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='telemecanique'/><category scheme='http://www.blogger.com/atom/ns#' term='hmi'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><title type='text'>Ser ou não ser... Ter ou não ter...</title><content type='html'>Bom, tenho recebido através dos comentários, uma pergunta um tanto frequente: é open source ou não?&lt;br /&gt;Bom, logo no inicio desse projeto me fiz essa mesma pergunta. Mas por enquanto, não vou tornar o projeto aberto. Minha idéia é acabar os componentes básicos, ver como anda a sua utilização e ai dependendo os resultados eu irei decidir se será ou não aberto.&lt;br /&gt;&lt;br /&gt;Bom, já que estamos esclarecendo as coisas, vale lembrar que quando comecei não pensei em apenas componentes de comunicação. Eu pensei em uma biblioteca de desenvolvimento. Ela serve tanto para desenvolvedores de aplicações HMI/Scada tanto para quem desenvolve drivers de porta e/ou de protocolos para esses sistemas. Como assim? É simples: através da orientação a objetos, para criar um novo driver, é necessário apenas sobrescrever alguns métodos e criar as propriedades respectivas ao seu driver e ele está pronto! Criei isso vendo a possibilidade de fazer algo melhor.&lt;br /&gt;&lt;br /&gt;Após concluir todos os componentes básicos (alarmes, receitas, objetos de tela, segurança) pretendo criar drivers para os seguintes fabricantes de PLC:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Siemens&lt;/li&gt;&lt;li&gt;Allen Bradley&lt;/li&gt;&lt;li&gt;Telemecanique&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Mas não se assuste, não falta muito não. Hoje estão disponíveis para uso os seguintes componentes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;TSerialPortDriver&lt;/li&gt;&lt;li&gt;TModBusMasterDriver&lt;/li&gt;&lt;li&gt;TPIPE&lt;/li&gt;&lt;li&gt;TUserScale&lt;/li&gt;&lt;li&gt;TLinearScale&lt;/li&gt;&lt;li&gt;TPLCTagNumber&lt;/li&gt;&lt;li&gt;TPLCBlock&lt;/li&gt;&lt;li&gt;TPLCBlockElement&lt;/li&gt;&lt;li&gt;TPLCString&lt;/li&gt;&lt;li&gt;THMIEdit&lt;/li&gt;&lt;li&gt;THMILabel&lt;/li&gt;&lt;li&gt;THMICheckBox&lt;/li&gt;&lt;li&gt;THMIRadioButton&lt;/li&gt;&lt;li&gt;THMITrackBar&lt;/li&gt;&lt;li&gt;THMIProgressBar&lt;/li&gt;&lt;li&gt;THMIRadioGroup&lt;/li&gt;&lt;li&gt;THMIUpDown&lt;/li&gt;&lt;li&gt;THMIScrollBar&lt;/li&gt;&lt;li&gt;THMIAnimation&lt;/li&gt;&lt;li&gt;THMIText&lt;/li&gt;&lt;/ul&gt;Todos eles rodando em Windows/Linux e FreeBSD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-6944579435084705555?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/6944579435084705555/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=6944579435084705555' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6944579435084705555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6944579435084705555'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2008/06/ser-ou-no-ser-ter-ou-no-ter.html' title='Ser ou não ser... Ter ou não ter...'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-8554765224988567900</id><published>2008-06-24T22:12:00.003-03:00</published><updated>2008-06-24T22:32:00.211-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='10.2'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='2.4'/><category scheme='http://www.blogger.com/atom/ns#' term='7.10'/><category scheme='http://www.blogger.com/atom/ns#' term='2.6'/><category scheme='http://www.blogger.com/atom/ns#' term='12.1'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='8.04'/><title type='text'>Linux para trabalho e diversão</title><content type='html'>Após alguns dias quebrando a cabeça com alguns problemas muito dos malucos no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Ubuntu&lt;/span&gt; 7.10 i386 que existe no laboratório da faculdade onde estudo, resolvi (com muito &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;esforco&lt;/span&gt;) instalar o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;slackware&lt;/span&gt; 10.2 (muito &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;desatualizado&lt;/span&gt;) no meu PC em casa. Nele fiz todo o necessário para instalar o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;PascalScada&lt;/span&gt; (instalar e configurar &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;FPC&lt;/span&gt; e &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Lazarus&lt;/span&gt;) e para minha surpresa não acontece um único problema sequer... O único problema &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;visível&lt;/span&gt; foi uma pequena perda de desempenho (nada alarmante) que creio eu estar atrelado ao &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;kernel&lt;/span&gt; 2.4. Assim que possível vou tentar instalar o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Ubuntu&lt;/span&gt; 8.04 i386 e o Slackware 12.1 i386 para tirar dúvidas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Como disse um amigo meu, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Ubuntu&lt;/span&gt; é para abrir o Firefox e deu! :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-8554765224988567900?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/8554765224988567900/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=8554765224988567900' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8554765224988567900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8554765224988567900'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2008/06/linux-para-trabalho-e-diverso.html' title='Linux para trabalho e diversão'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-6231589545762179445</id><published>2008-05-30T09:01:00.005-03:00</published><updated>2008-05-30T09:39:13.906-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scheduler'/><category scheme='http://www.blogger.com/atom/ns#' term='ule'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='dead-lock'/><title type='text'>FreeBSD ULE Scheduler...</title><content type='html'>Recentemente foram lançadas as novas versões do FreeBSD: 6.3 e a 7.0. Com elas muitas mudanças foram implementadas no gerenciamento de processos para obter melhores desempenhos com sistemas multiprocessados. Porem com essa alteração no scheduler do FreeBSD, algumas aplicações multi-tarefa que rodavam em processadores simples que utilizavam zonas criticas para sincronização de threads pararam de funcionar, incluisive aplicações construidas com a biblioteca PascalScada. Porem, na última noite esse e outros problemas foram corrigidos e toda a biblioteca foi testada por mais de oito horas diretas sem problemas,  em  FreeBSD e Windows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-6231589545762179445?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/6231589545762179445/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=6231589545762179445' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6231589545762179445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/6231589545762179445'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2008/05/freebsd-ule-scheduler.html' title='FreeBSD ULE Scheduler...'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-7660152854774556274</id><published>2008-05-16T13:14:00.004-03:00</published><updated>2008-05-16T13:28:33.176-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scada'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='64 bits'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='progresso'/><category scheme='http://www.blogger.com/atom/ns#' term='hmi'/><title type='text'>Suporte a Linux??? Claro que sim!</title><content type='html'>Após um longo tempo escrevendo componentes do pacote HMI, resolvi tirar um tempo para testar a biblioteca no Linux, e o melhor de tudo é que foi preciso muito pouco para ter ela funcionando no Ubuntu 7.10. Assim como no FreeBSD e no Windows, a comunicação está rápida e os componentes estão estáveis.&lt;br /&gt;&lt;br /&gt;Fora essa grande notícia, vale ressaltar que o pacote Scada já está quase completo, falta somente alarmes, receitas, histórios e o componente gerenciador de aplicação.&lt;br /&gt;Já o pacote HMI falta somente mais dois componentes THMIButton e THMIGraph para ficar completo.&lt;br /&gt;&lt;br /&gt;Após a escrita desses, será iniciado os testes para as plataformas de 64 bits (FreeBSD, Windows e Linux).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-7660152854774556274?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/7660152854774556274/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=7660152854774556274' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7660152854774556274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7660152854774556274'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2008/05/suporte-linux-claro-que-sim.html' title='Suporte a Linux??? Claro que sim!'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-9193998693394852653</id><published>2007-12-18T07:26:00.001-03:00</published><updated>2008-07-30T10:38:37.090-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qt'/><title type='text'>Não, ele não está parado</title><content type='html'>O projeto continua vivo, só resolvendo alguns outros problemas relacionados... Veja: &lt;a href="http://www.nabble.com/Lazarus--2B-Qt4-in-FreeBSD-to13909682.html"&gt;http://www.nabble.com/Lazarus--2B-Qt4-in-FreeBSD-to13909682.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-9193998693394852653?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/9193998693394852653/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=9193998693394852653' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/9193998693394852653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/9193998693394852653'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2007/12/no-ele-no-est-parado.html' title='Não, ele não está parado'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-4847094398589713823</id><published>2007-11-14T07:29:00.000-03:00</published><updated>2007-11-14T07:45:12.953-03:00</updated><title type='text'>Ele vive!</title><content type='html'>Bom dia!&lt;br /&gt;&lt;br /&gt;Após quase um mes sem uma misera notícia, veio a melhor de todas: o PascalScada roda em Unix!&lt;br /&gt;&lt;br /&gt;Ele já estava rodando faz quase 20 dias (tive que criar uma classe para manipular eventos sob Unix já que os eventos fornecidos pelo FreePascal não me atendiam na integra). A comunicação está veloz (falta eu escrever uma rotina que limpe os buffers TX e RX da porta serial no Unix). Porem essa versão de 20 dias atraz criava um deadlock quando a aplicação era finalizada. Ontem, após ser rescrito boa parte dos componentes centrais usando a filosofia KISS (Keep It Simple, Stupid = Mantenha-o simples, estupido) onde passei a usar Sessões Críticas ao invés de mensagens, eventos e suspensões de threads (as suspensões de threads não sao suportadas no Unix), e pela primeira vez, a aplicação se comportou da maneira esperada. Hoje vou fazer mais alguns acertos e escrever a rotina de limpeza de buffers e teremos uma versão estável multi-plataforma.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Att.&lt;br /&gt;&lt;br /&gt;Fabio Luis Girardi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ps. até deixei de mecher no motor do meu vecão pra ver esse negócio rodando ontem a noite, to podre de sono por ter ido dormir passado das 2 da manha, mas to feliz feliz!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-4847094398589713823?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/4847094398589713823/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=4847094398589713823' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4847094398589713823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/4847094398589713823'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2007/11/ele-vive.html' title='Ele vive!'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-3478054999722790397</id><published>2007-10-08T21:54:00.000-03:00</published><updated>2007-10-08T22:00:54.392-03:00</updated><title type='text'>Eventos no Unix, Episódio III</title><content type='html'>Boa noite!&lt;br /&gt;&lt;br /&gt;Tenho pouco a dizer, por enquanto. Hoje venho com duas notícias, uma boa e outra ruim. A boa notícia é que os primeiros pacotes do protocolo MODBUS já começam a circular no unix. A má notícia é que diferente do windows esses pacotes só acontecem a aproximadamente 1 segundo, isso devido a sinalização das threads que estão esperando um evento ocorrer, que leva até 500ms (0.5 segundos) entre a sinalização (setevent) e a liberação da thread (WaitFor)...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Um bug já esta sendo submetido ao pessoal do FreePascal... Vamos ver no que dá...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fabio Luis Girardi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-3478054999722790397?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/3478054999722790397/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=3478054999722790397' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3478054999722790397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/3478054999722790397'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2007/10/eventos-no-unix-episdio-iii.html' title='Eventos no Unix, Episódio III'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-8173204143592735732</id><published>2007-10-03T13:57:00.000-03:00</published><updated>2007-10-03T14:03:53.262-03:00</updated><title type='text'>Progresso no Unix.</title><content type='html'>Boa tarde!!&lt;br /&gt;&lt;br /&gt;Noite passada, as primeiras linhas do componente de porta serial foram escritas para o Unix. Já estão escritas as rotinas de abertura, fechamento, leitura e escrita de valores na porta serial para os sistemas unix-like.  Faltam algumas poucas rotinas que checam se a configuração está ok, verifique a existência da porta serial em questão e que faça a devida limpeza dos buffers em caso de falhas.&lt;br /&gt;&lt;br /&gt;Até sábado, a pretendo ter a primeira versão rodando no meu FreeBSD.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fabio Luis Girardi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-8173204143592735732?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/8173204143592735732/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=8173204143592735732' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8173204143592735732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/8173204143592735732'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2007/10/progresso-no-unix.html' title='Progresso no Unix.'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-224545750856117598</id><published>2007-09-28T22:36:00.000-03:00</published><updated>2007-10-03T14:09:04.069-03:00</updated><title type='text'>Eventos no Unix, PARTE 2</title><content type='html'>Boa noite!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Depois de perder algumas noites de sono para descobrir como compilar o Freepascal no FreeBSD, duas ÓTIMAS notícias vieram. A primeira é que consegui finalmente compilar o FreePascal 2.3.1 no FreeBSD. A segunda é que recentemente o problema na classe TEvent no Freepascal (lembra aquela classe de sincronização de threads que não suportava timeouts?) Pois bem esse problema foi resolvido na revisão 8545 do FPC, e eu compilei a revisão 8646 no FreeBSD. O que isso quer dizer? Que agora temos o projeto Pascal Scada dando seus primeiros passos no Unix...&lt;br /&gt;&lt;br /&gt;Bom, cheguei a reiniciar o PC, entrar no ruindows pra postar essa noticia... então calcule a felicidade do menininho... :D&lt;br /&gt;&lt;br /&gt;Semana que vem tem mais notícias...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fabio Luis Girardi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-224545750856117598?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/224545750856117598/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=224545750856117598' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/224545750856117598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/224545750856117598'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2007/09/eventos-no-unix-parte-2.html' title='Eventos no Unix, PARTE 2'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-605534083990559346</id><published>2007-09-24T23:34:00.000-03:00</published><updated>2007-09-24T23:53:29.965-03:00</updated><title type='text'>Eventos no Unix</title><content type='html'>Bom, eu esperava uma boa notícia, até tentei implementar uma classe Cross de eventos que em windows utilizava a classe TEvent e no Unix os métodos RTLEvent*, mas eu comprovei o que o pessoal do desenvolvimento do FreePascal falou. Os eventos implementados com RTLEvent* no Unix não são persistentes, ou seja, toda a vez que um evento entra em espera, ele necessita um SetEvent para cada vez que entrar em espera, mesmo que nenhum ResetEvent tenha sido acionado...&lt;br /&gt;&lt;br /&gt;Bom isso vai adiar meus planos para o Unix por uns dias, até que um conjunto de métodos/classes que consigam manipular eventos de maneira compatível com a existente no freepascal windows seja disponibilizado no Unix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-605534083990559346?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/605534083990559346/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=605534083990559346' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/605534083990559346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/605534083990559346'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2007/09/eventos-no-unix.html' title='Eventos no Unix'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-7278040427924805504</id><published>2007-09-16T16:34:00.001-03:00</published><updated>2008-07-30T10:37:27.643-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scada'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>FPC 2.2 e Linux/Unix</title><content type='html'>&lt;p class="MsoNormal"&gt;Recentemente foi lançada uma nova versão do FreePascal, a esperada versão 2.2.0 e com elas vieram várias melhorias e suportes, tais como uma compilação mais veloz em ambientes Windows e suporte a Windows 64 bits entre outros.&lt;br /&gt;&lt;br /&gt;Veio também uma ótima notícia para o projeto Pascal Scada, o suporte de eventos com timeout em ambientes Unix, que até então não funcionava nessas plataformas. Testei hoje em um FreeBSD 6.2 com FreePascal 2.2 e com FreePascal 2.0.4 e pra minha alegria, os timeouts funcionaram perfeitamente quando compilados em FreePascal 2.2. Mas como nem tudo é perfeito, a classe TEvent continua com o mesmo problema da versão 2.0.4. A minha solução é implementar uma nova classe que usa a classe TEvent em ambientes Windows e que usa os métodos disponíveis na RTL do freepascal quando em Unix.&lt;br /&gt;&lt;br /&gt;Bom era isso... Essa semana tem mais noticias (boas eu espero)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-7278040427924805504?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/7278040427924805504/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=7278040427924805504' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7278040427924805504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/7278040427924805504'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2007/09/fpc-22-e-linuxunix.html' title='FPC 2.2 e Linux/Unix'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4158170431969272603.post-2354784884521676581</id><published>2007-09-12T19:18:00.003-03:00</published><updated>2008-07-30T10:37:50.318-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scada'/><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux x86_64'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='i386'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='lazarus'/><title type='text'>Pascal HMI/SCADA</title><content type='html'>&lt;p class="western" style="margin-bottom: 0.5cm;"&gt;O projeto Pascal HMI/SCADA é um conjunto de componentes e controles visuais feitos para Delphi e Lazarus. Seu foco é facilitar o desenvolvimento de aplicações de supervisão, controle de processos e aquisição de dados de maneira integrada com qualquer gerenciador de banco de dados.&lt;br /&gt;&lt;br /&gt;O desenvolvimento de uma aplicação no Pascal HMI/SCADA é semelhante as ferramentas HMI/Scada disponíveis hoje no mercado.&lt;br /&gt;&lt;br /&gt;Como ainda é um projeto em desenvolvimento, não estão disponíveis todas as funcionalidades de um sistema HMI/Scada descente, como por exemplo receitas, históricos e controle de segurança. As funcionalidade disponíveis são:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Driver de porta de  comunicação serial&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Driver de  protocolo MODBUS RTU (funções 1, 2, 3, 4, 5, 6, 7, 16)   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Tag PLC Number   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Tag Bloco&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Tag Elemento de  Bloco   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Tag PLC String  (suporta strings no formato C e Siemens)   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Controle de tela  HMI RadioButton   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Controle de tela  HMI CheckBox   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Controle de tela  HMI Edit   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Controle de tela  HMI Label   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Controle de tela  HMI TrackBar   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western"&gt;Escalonador linear para os tags elemento de  bloco e plc number   &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p class="western"&gt;Atualmente esses recursos estão disponíveis somente para Windows. Os motivos para que estes não estarem disponíveis para Linux/FreeBSD é a deficiência das classes de sincronização de threads no FreePascal nesses ambientes. Componentes que não usam threads funcionam, alguns totalmente, outros parcialmente nesses ambientes. Os que funcionam parcialmente é devido a peculiaridades de interface gráfica. Admito que posso estar enganado a respeito das thread em ambientes Linux, pois ainda não instalei um sistema operacional linux descente e compilado um Lazarus/FreePascal nesse sistema em minha casa.&lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="western"&gt;Bom, por enquanto é só.&lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="western"&gt;Att.&lt;/p&gt;&lt;p class="western"&gt;Fabio Luis Girardi&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4158170431969272603-2354784884521676581?l=pascalscada.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pascalscada.blogspot.com/feeds/2354784884521676581/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4158170431969272603&amp;postID=2354784884521676581' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2354784884521676581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4158170431969272603/posts/default/2354784884521676581'/><link rel='alternate' type='text/html' href='http://pascalscada.blogspot.com/2007/09/pascal-hmiscada.html' title='Pascal HMI/SCADA'/><author><name>Fabio Luis Girardi</name><uri>http://www.blogger.com/profile/01101255258348334057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_uYt2_EwdhIM/SRR3vA4mp1I/AAAAAAAAABM/pPwkqhdHJyw/S220/Fabio04.JPG'/></author><thr:total>3</thr:total></entry></feed>
