PascalSCADA 0.7.5 and general informations

Hi everybody!

I’m glad to announce the PascalSCADA 0.7.5. It’s a bugfix release.

This version will be the last one that maintains the current tag scan mechanism. That is, the next version will have changes in this mechanism.

It’s available both in the SourceForge and in OPM repository, was announced previously.

To download the full package (with examples and class documentation) from Sourceforge click here.

To update your PascalSCADA copy using OPM, follow the instructions listed here.

The minimum requirements to use this PascalSCADA version is FPC 3.0.4 and Lazarus 1.8.0.

General information…

As informed in the post title, I have to start explaining why the delay replying the comments of the page. Over a year ago, I migrated the page from the Sourceforge server to a private server. After completing the migration, I made a check of the settings, especially in email notifications. I installed a plugin to send emails via Gmail, sent tests messages and everything was OK.

However, I discovered that a small portion of the messages on the page was sent. The majority of messages were not sent. Moderation notifications never left the server and the page looked abandoned.

So this week I reviewed the settings and I’m being notified when comments are posted. I asked random people to register and send some kind of comment, and I was notified of all.

I apologize to all who have accessed and commented on the page and who have not answered.

22 thoughts on “PascalSCADA 0.7.5 and general informations

  1. avra Reply

    You might want to check out Pasettimino, a very lite native Pascal ethernet communication library for S7 Siemens Simatic PLC. S7 200/300/400/400H/1200/1500 and LOGO 0BA7 PLC families are supported. It has some unique features like getting status of all PLC leds (even on redundant CPU pairs) and getting status of power supply memory backup batteries. These might be important info on some SCADA systems, so you might want to explore the code and integrate something like that in PascalSCADA.

    btw. I can’t wait to see your tag managment evolve. That would allow PascalSCADA use in big projects.

    • Fabio Luis Girardi Post authorReply

      Hi avra!

      I’m looking for that right now. I see it in a previous stage some time ago. But part of feature set of Pasettimino is already present on PascalSCADA, on ISOTCP driver, like:

      * communicate with these PLCs (tested by me):
      ## 200 (using CP 243)
      ## 300-ET-200S (I have plants with PascalSCADA and this PLC)
      ## 400 (I have plants with PascalSCADA and this PLC)
      ## 1200 (I have plants with PascalSCADA and this PLC, DB’s must have Optimized access disabled)
      ## 1500-ET200SP (I have plants with PascalSCADA and ET-200SP, DB’s must have Optimized access disabled)
      ## LOGO 0BA7

      * Missing features, that I’m studying Snap7 for include in the future, and now I have one more source to study:
      ## 1 – Connect in a PLC protected by password (read/write levels)
      ## 2 – Read battery status
      ## 3 – get/set PLC clock
      ## 4 – Read CPU state (run/stop, I don’t want to switch the CPU state)
      ## 5 – Read/write symbolic tags (Pasettimino can do that?)
      ## 6 – S7-400H (I never tested, I don’t have an opportunity.

      You have other features that I consider important, like reading CPU product number and firmware revision. Andreas Frieß send me an e-mail today, talking about your project. Since this moment, I’m thinking about how to fit these features on current PascalSCADA ISOTCP implementation.

      Ps: Your implementation is very clean and easy to read. Congratulations!!

  2. avra Reply

    As for missing features that you might include in the future:

    ## 1 – Connect in a PLC protected by password
    >> I did not bother with this yet. Maybe in the future.

    ## 2 – Read battery status
    >> Take a look at Pasettimino TS7ExtendedClient.GetPlcBatteryStatus

    ## 3 – get/set PLC clock
    >> TS7ExtendedClient.GetPlcTime and TS7ExtendedClient.SetPlcTime

    ## 4 – Read CPU state (run/stop, I don’t want to switch the CPU state)
    >> Snap7 and Settimino do not show correct running status on redundant S7-400H PLCs. I have fixed it in Pasettimino. More at

    ## 5 – Read/write symbolic tags (Pasettimino can do that?)
    >> Symbol table is not stored in old S7 PLCs so can not be retreived from PLC. I have not checked that for newer PLCs. Pasettimino can only read the list of all existing PLC blocks (without symbol names) with TS7ExtendedClient.GetPlcAllBlocksList.

    ## 6 – S7-400H (I never tested, I don’t have an opportunity.
    >> I have access to at least 20 (S7-414H and S7-417H). If you need to test something I will see what I can do.

    As for “You have other features that I consider important, like
    reading CPU product number and firmware revision”:
    >> Search the net for Siemens document “s7sfc_en-EN.pdf” and look into chapter 34 – System Status Lists (SSL). You will find there a complete SSL list. Any missing SSL would be easy to implement. Just use TS7ExtendedClient.ReadSZL method and analyze the received buffer according to documentation. You will find that many Pasettimino features are internally implemented using that ReadSZL method (SZL is german for SSL, so they are the same).

  3. wtechnologies Reply

    I would like to create a master in Modbus TCPIP.
    Is PascalScada the right library to do it?
    If yes, can I found a small example in Lazarus under Linux to do it.

    Best regards Malek

  4. Rafael Reply

    Bom dia, Fábio existe a possibilidade de você me passa um número de contato? Estou diante de uma situação complicada e aparentemente esse erro esta relacionado ao pascalscada, queria debater contigo tal situação para juntos encontramos uma solução

  5. Fabricio Rios Reply

    Bom dia Fábio.
    Estou começando a trabalhar em uma aplicação e gostaria de utilizar o PascalSCADA, teria algum manual ou coisa parecida para começar a estudar?
    Teria um contato para eventuais dúvidas?

  6. Mateusz Reply

    Fabio, I have a problem with PascalScada (ver. 0.75) and Lazarus (ver. 2.02 r60954). I have also Windows 10 x64 Enterprise.
    If I try build a project I have more than 100 warnings and notes.
    Most of them are: “duplicate file”. What can I do to avoid this warnings?

    Best regards,

    • Fabio Luis Girardi Post authorReply

      Maybe, if some Delphi user does that. I’ll not. Delphi users gave no feedback to the project. I cut off the Delphi support at least 3 years ago, and only in this year, I got some feedback. This support will depend if some Delphi user has time to port PascalSCADA again to Delphi… Sorry.

    • Fabio Luis Girardi Post authorReply

      Hoje para o valor se atualizado no tag, tem que haver uma thread buscando o valor da imagem do driver de protocolo e jogando este valor em cada tag. No futuro, quero que cada tag receba um ponteiro que apontará para onde o seu valor do tag está na imagem de leitura do protocolo e com uma operação atomica (InterlockedExchange) a troca da imagem com o tag é feita. Porem ainda estou vendo como fazer isto, pois ainda preciso de algo verificando ciclicamente os tags, função que é feita hoje por uma thread…

  7. ge.vasiliou Reply

    Dear Fabio, i am trying to read zome modbus registers that are holding text. I have used cstring tags to read those text values from slave, text is read from register by pascalscada, but it comes to my screen reversed. For example, if register 101 on slave holds text “abab”, the text received / printed in pascal scada cstring tag is “baba”. Any way to natively read the text correctly (without text manipulation techniques) ?

    • Fabio Luis Girardi Post authorReply

      Are you using TPLCString Tag? I dont remember if has a SwapBytes property like TPLCTagNumber

      • ge.vasiliou Reply

        Hello, yes i do use TPLCString Tag, but this tag has not a “SwapBytes” property. If SwapBytes was available, may be this could be a solution to my case. Can this property be added ?

Leave a Reply

Your email address will not be published. Required fields are marked *