Introdução

Antes de mais nada, sinta-se livre para enviar correções e alternativas para este método 🙂

O objetivo principal desta página é ensinar como instalar o último snapshot do PascalSCADA na última versão do Lazarus. Porque eu não irei explicar como instala-lo no Delphi ou em versões passadas do Lazarus são assuntos para uma outra página or se quiser, sinta-se livre para escrever as instruções de como instalar na IDE desejada.

Atenção: A versão atual do pacote PascalSCADA irá instalar outros pacotes juntos com ele (que são requisitos).  Estes pacotes são:

  • ZeosLib 7.2
  • BGRABitmap
  • BGRAControls

Então, se você não gosta de algum destes pacotes, sinta-se livre para criar um novo pacote do PascalSCADA sem os pacotes que você não gosta.

ATENÇÃO DOBRADA: O PascalSCADA não é como outros sistemas SCADA. Ele é um pacote, plugin ou addon (chame como quiser) que permite que  o Lazarus crie aplicações HMI/SCADA. Portanto, um assistente de instalação com os botões “Next”, “Next” e “finish” não está disponível.

O que preciso antes de iniciar?
  1. Última versão do Lazarus. Se você é usuário de Windows, você pode obter o Lazarus na página oficial: http://www.lazarus-ide.org/. Se você é usuário de Linux/FreeBSD, você pode obtê-lo a partir do repositório de software do seu sistema operacional.
  2. O último snapshot do PascalSCADA: Você viu o link de download no topo desta página?
  3. WinRAR ou outro aplicativo que consiga descompactar arquivos .bz2.
Instalando…

Bem, a primeira coisa a fazer é instalar o Lazarus. Eu não quero explicar como instalar o Lazarus em qualquer sistema operacional/plataforma que existe neste mundo, porque instalar o Lazarus é uma tarefa muito simples, tanto em Windows (Com o assistente de instalação com botões “Next”, “Next” e “Finish”)  quanto em Linux (Aqui com Linux Mint 17.3: sudo apt-get install…). Ao final do processo instalação do Lazarus, você deve abri-lo e ver algo semelhante a isto:

Instalação limpa do Lazarus
Instalação limpa do Lazarus

Se o seu Lazarus recém instalado se parece com o da imagem acima você está no caminho certo. O próximo passo é instalar o pacote do PascalSCADA. Por favor, esqueça do Lazarus por um momento. Vá para a sua pasta de Downloads e encontre o arquivo do PascalSCADA recém e descompacte-o em uma pasta de sua escolha.

Depois de extrair o arquivo, volte para o Lazarus e acesse o menu mostrado abaixo:

Instalando um novo pacote no Lazarus
Instalando um novo pacote no Lazarus

Clique neste menu e um diálogo para abrir arquivos será exibido:

Encontrando a instalação do PascalSCADA no sistema de arquivos
Encontrando a instalação do PascalSCADA no sistema de arquivos

Navegue até a pasta onde você descompactou os arquivos do PascalSCADA. Nesta pasta deverá existir os seguintes arquivos:

  • pascalscada_common.lpk
  • pascalscada_full.lpk
  • pascalscada.lpk
  • pascalscada_db.lpk
  • pascalscada_hmi.lpk

Se você não vê algum destes arquivos, verifique o arquivo baixado, paths, etc… Se tudo está OK, sua tela deverá ser parecida com esta:

Encontrando a instalação do PascalSCADA no sistema de arquivos (vista completa)
Encontrando a instalação do PascalSCADA no sistema de arquivos (vista completa)

Selecione o arquivo “pascalscada_full.lpk” e abra-o. A janela do pacote pascalscada_full será mostrada:

Pacote do PascalSCADA para instalação completa aberto
Pacote do PascalSCADA para instalação completa aberto

A última etapa é instalar o pacote na sua IDE. Para fazer isto, clique no botão “Usar >>” e em seguida no menu “Instalar”, como mostrado abaixo:

Instalando o PascalSCADA na IDE Lazarus
Instalando o PascalSCADA na IDE Lazarus

O pacote pascalscada_full é um metapacote, usado somente para fazer a instalação completa do PascalSCADA na sua IDE Lazarus. Por causa deste motivo, você será aborrecido com algumas mensagens:

Metapacote do PascalSCADA: necessário para simplificar a instalação completa
Metapacote do PascalSCADA: necessário para simplificar a instalação completa

Clique no botão “Install it, I like the fat” para continuar a instalação. A próxima tela irá mostrar uma lista com todos os pacotes que serão instalados durante o processo na sua IDE, como mostrado abaixo:

Lista dos pacotes adicionais que serão instalados
Lista dos pacotes adicionais que serão instalados

Uma imagem mais detalhada:

Lista dos pacotes adicionais que serão instalados
Lista dos pacotes adicionais que serão instalados

Clique no botão OK para continuar a instalação e chegar na pergunta final sobre o processo de recompilação da IDE, como pode ser vista abaixo:

Confirmando a recompilação do Lazarus
Confirmando a recompilação do Lazarus

Para finalizar, clique no botão “Sim”. O processo de instalação será iniciado e sua IDE será recompilada. Ao final do processo de recompilação, o Lazarus será reiniciado. Se você tem um projeto com alterações que não foram salvas, tenha cuidado!!

Após reiniciar a IDE, dependendo da sua versão do PascalSCADA, você deverá encontrar as seguintes paletas de componentes no seu Lazarus:

PascalSCADA instalado: guia de portas de comunicação
PascalSCADA instalado: guia de portas de comunicação
PascalSCADA instalado: guia com os protocolos de comunicação
PascalSCADA instalado: guia com os protocolos de comunicação
PascalSCADA instalado: guia com os componentes de utilidades
PascalSCADA instalado: guia com os componentes de utilidades
PascalSCADA instalado: guia com todos os tags
PascalSCADA instalado: guia com todos os tags
PascalSCADA instalado: guia com todos os controles de tela
PascalSCADA instalado: guia com todos os controles de tela
PascalSCADA instalado: guia com os controles de gerenciamento de usuários e segurança
PascalSCADA instalado: guia com os controles de gerenciamento de usuários e segurança
PascalSCADA instalado: guia com os componentes de banco de dados
PascalSCADA instalado: guia com os componentes de banco de dados
PascalSCADA instalado: guia com os componentes herdados do FreePascal
PascalSCADA instalado: guia com os componentes herdados do FreePascal

Se você consegue ver estas paletas, parabéns, você conseguiu instalar com sucesso o PascalSCADA na sua IDE Lazarus.

33 comentários em “Como instalar o PacalSCADA

  1. Fabio Luis Girardi Autor do postResponder

    To update on Codetyphon: you should remove the pl_pascalscada package first. Then edit the new PascalSCADA packages and replace some dependencies:

    ** on pascalscada_db package, replace ZComponent dependency by pl_zeosdbo
    ** on pascalscada_hmi_package, replace the BGRABitmap and BGRAControls by pl_BGRABitmap and pl_BGRAControls.

    After this, install the pascalscada_full.lpk

    On Delphi RAD Studio Berlin? I don’t know, since I don’t update the packages for Delphi since Delphi XE2. Can you try and explain to us?

    • Fabio Luis Girardi Autor do postResponder

      I did no tested PascalSCADA for Mac OS X, but it have no reasons to don’t work. Maybe we can test together?

    • Fabio Luis Girardi Autor do postResponder

      I set a virtual machine to test PascalSCADA on Mac OS X El captain. I found some issues related with constants and units that are not defined/available for Mac. I’m fixing theses issues. When it’s done I’ll notify you.

    • Fabio Luis Girardi Autor do postResponder

      3Picure: I finished the changes for Mac OS X today. Can you download the latest revision from SVN and test?

    • Fabio Luis Girardi Autor do postResponder

      Yes and No. I need to known your architecture to answer your question. Please tell-me, whats your PLC?

  2. robin Responder

    Hi,

    When i try to install the package in Lazarus i get alot of errors:

    Compile package BGRABitmapPack 8.8.4: Exit code 1, Errors: 50, Hints: 38
    bgracanvas2d.pas(370,21) Error: Operator is not overloaded: “TPointF” + “TPointF”
    bgracanvas2d.pas(371,21) Error: Operator is not overloaded: “TPointF” + “TPointF”
    bgracanvas2d.pas(386,34) Error: Incompatible type for arg no. 3: Got “TYPES.TPointF”, expected “BGRABITMAPTYPES.TPointF”
    bgratransform.pas(872,38) Hint: Found declaration: Fit(TPointF;TPointF;TPointF);
    bgracanvas2d.pas(446,71) Error: Incompatible type for arg no. 4: Got “TYPES.TPointF”, expected “BGRABITMAPTYPES.TPointF”
    bgragradientscanner.pas(1077,34) Hint: Found declaration: constructor Create(TBGRACustomGradient;TGradientType;TPointF;TPointF;Boolean=”FALSE”;Boolean=”FALSE”);
    bgragradientscanner.pas(1045,34) Hint: Found declaration: constructor Create(TBGRAPixel;TBGRAPixel;TGradientType;TPointF;TPointF;Boolean=”TRUE”;Boolean=”FALSE”);
    bgracanvas2d.pas(451,9) Error: Incompatible types: got “BGRABITMAPTYPES.TPointF” expected “TYPES.TPointF”
    bgracanvas2d.pas(452,9) Error: Incompatible types: got “BGRABITMAPTYPES.TPointF” expected “TYPES.TPointF”
    bgracanvas2d.pas(665,24) Error: function header doesn’t match any method of this class “GetShadowOffset:;”
    bgracanvas2d.pas(109,14) Error: Found declaration: GetShadowOffset:;
    bgracanvas2d.pas(667,13) Error: Incompatible types: got “BGRABITMAPTYPES.TPointF” expected “TYPES.TPointF”
    bgracanvas2d.pas(900,25) Error: function header doesn’t match any method of this class “FillPoly(const {Open} Array Of TPointF);”
    bgracanvas2d.pas(125,15) Error: Found declaration: FillPoly(const {Open} Array Of TPointF);
    bgracanvas2d.pas(905,38) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgracanvas2d.pas(141,15) Hint: Found declaration: DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);
    bgracanvas2d.pas(913,63) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(498,11) Hint: Found declaration: FillPolyAntialiasWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(915,61) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(472,11) Hint: Found declaration: FillPolyAliasedWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;TDrawMode);
    bgracanvas2d.pas(925,67) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(498,11) Hint: Found declaration: FillPolyAntialiasWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(927,65) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(472,11) Hint: Found declaration: FillPolyAliasedWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;TDrawMode);
    bgracanvas2d.pas(932,67) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(498,11) Hint: Found declaration: FillPolyAntialiasWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(934,65) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(472,11) Hint: Found declaration: FillPolyAliasedWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;TDrawMode);
    bgracanvas2d.pas(940,54) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(485,11) Hint: Found declaration: FillPolyAntialias(TBGRACustomBitmap;{Open} Array Of TPointF;TBGRAPixel;Boolean;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(942,52) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(459,11) Hint: Found declaration: FillPolyAliased(TBGRACustomBitmap;{Open} Array Of TPointF;TBGRAPixel;Boolean;Boolean;TDrawMode);
    bgracanvas2d.pas(947,25) Error: function header doesn’t match any method of this class “FillStrokePoly(const {Open} Array Of TPointF;Boolean);”
    bgracanvas2d.pas(126,15) Error: Found declaration: FillStrokePoly(const {Open} Array Of TPointF;Boolean);
    bgracanvas2d.pas(966,28) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(974,32) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(976,32) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(979,72) Error: Incompatible type for arg no. 2: Got “TBGRAPixel”, expected “IBGRAScanner”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(984,48) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapen.pas(761,10) Hint: Found declaration: ComputeWidePolylinePoints(const {Open} Array Of TPointF;Single;TBGRAPixel;TFPPenEndCap;TFPPenJoinStyle;const TBGRAPenStyle;TBGRAPolyLineOptions;Single=”2″;TComputeArrowHeadProc=”nil”;Single=”0″;TComputeArrowHeadProc=”nil”;Single=”0″):{Dynamic} Array Of TP
    bgracanvas2d.pas(993,31) Error: Incompatible type for arg no. 1: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(1000,76) Error: Incompatible type for arg no. 2: Got “TBGRAPixel”, expected “IBGRAScanner”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(1002,33) Error: Incompatible type for arg no. 1: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(1004,48) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgracanvas2d.pas(141,15) Hint: Found declaration: DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);
    bgracanvas2d.pas(1006,40) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgracanvas2d.pas(141,15) Hint: Found declaration: DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);
    bgracanvas2d.pas(1091,25) Error: function header doesn’t match any method of this class “SetShadowOffset(const TPointF);”
    bgracanvas2d.pas(134,15) Error: Found declaration: SetShadowOffset(const TPointF);
    bgracanvas2d.pas(1128,25) Error: function header doesn’t match any method of this class “StrokePoly(const {Open} Array Of TPointF);”
    bgracanvas2d.pas(140,15) Error: Found declaration: StrokePoly(const {Open} Array Of TPointF);
    bgracanvas2d.pas(1135,46) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapen.pas(761,10) Hint: Found declaration: ComputeWidePolylinePoints(const {Open} Array Of TPointF;Single;TBGRAPixel;TFPPenEndCap;TFPPenJoinStyle;const TBGRAPenStyle;TBGRAPolyLineOptions;Single=”2″;TComputeArrowHeadProc=”nil”;Single=”0″;TComputeArrowHeadProc=”nil”;Single=”0″):{Dynamic} Array Of TP
    bgracanvas2d.pas(1138,39) Error: Incompatible type for arg no. 1: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgracanvas2d.pas(141,15) Hint: Found declaration: DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);
    bgracanvas2d.pas(1146,63) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(498,11) Hint: Found declaration: FillPolyAntialiasWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(1148,61) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(472,11) Hint: Found declaration: FillPolyAliasedWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;TDrawMode);
    bgracanvas2d.pas(1158,54) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(485,11) Hint: Found declaration: FillPolyAntialias(TBGRACustomBitmap;{Open} Array Of TPointF;TBGRAPixel;Boolean;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(1160,52) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(459,11) Hint: Found declaration: FillPolyAliased(TBGRACustomBitmap;{Open} Array Of TPointF;TBGRAPixel;Boolean;Boolean;TDrawMode);
    bgracanvas2d.pas(1165,65) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(498,11) Hint: Found declaration: FillPolyAntialiasWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(1167,63) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(472,11) Hint: Found declaration: FillPolyAliasedWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;TDrawMode);
    bgracanvas2d.pas(1172,25) Error: function header doesn’t match any method of this class “DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);”
    bgracanvas2d.pas(141,15) Error: Found declaration: DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);
    bgracanvas2d.pas(1185,29) Error: Incompatible type for arg no. 1: Got “TYPES.TPointF”, expected “BGRABITMAPTYPES.TPointF”
    geometrytypes.inc(797,10) Hint: Found declaration: isEmptyPointF(const TPointF):Boolean;
    bgracanvas2d.pas(1203,13) Error: Incompatible types: got “BGRABITMAPTYPES.TPointF” expected “TYPES.TPointF”
    bgracanvas2d.pas(1224,15) Error: Incompatible types: got “BGRABITMAPTYPES.TPointF” expected “TYPES.TPointF”
    bgracanvas2d.pas(1233,51) Error: Incompatible type for arg no. 2: Got “TBGRAPixel”, expected “IBGRAScanner”
    Compile package pascalscript 0.0.0.1: Aborted
    Compile package IDEIntf 1.0: Aborted
    Compile package zparsesql 7.2: Success
    Compile package zdbc 7.2: Aborted, Warnings: 4
    ZDbcCache.pas(3224,54) Warning: Symbol “PBOOLEAN” is deprecated
    ZDbcCache.pas(3237,56) Warning: Symbol “PBOOLEAN” is deprecated
    ZDbcCache.pas(4641,54) Warning: Symbol “PBOOLEAN” is deprecated
    ZDbcCache.pas(4654,56) Warning: Symbol “PBOOLEAN” is deprecated

    I am running Windows 10.

    Any suggestions?

    • Fabio Luis Girardi Autor do postResponder

      Hi Robin!

      See my Reply to @Goran

      Test and report things that goes wrong.

      Thanks by your feedback!

  3. Goran Responder

    I have the similar errors. I install lazarus-1.6.4-fpc-3.0.2-win32.exe and pascalscada_0.7.3_20160726.tar.bz2 on windows XP sp2 and try the same files on windows 10 and I got the same errors:

    Compile package BGRABitmapPack 8.8.4: Exit code 1, Errors: 50, Hints: 38
    bgracanvas2d.pas(370,21) Error: Operator is not overloaded: “TPointF” + “TPointF”
    bgracanvas2d.pas(371,21) Error: Operator is not overloaded: “TPointF” + “TPointF”
    bgracanvas2d.pas(386,34) Error: Incompatible type for arg no. 3: Got “TYPES.TPointF”, expected “BGRABITMAPTYPES.TPointF”
    bgratransform.pas(872,38) Hint: Found declaration: Fit(TPointF;TPointF;TPointF);
    bgracanvas2d.pas(446,71) Error: Incompatible type for arg no. 4: Got “TYPES.TPointF”, expected “BGRABITMAPTYPES.TPointF”
    bgragradientscanner.pas(1077,34) Hint: Found declaration: constructor Create(TBGRACustomGradient;TGradientType;TPointF;TPointF;Boolean=”FALSE”;Boolean=”FALSE”);
    bgragradientscanner.pas(1045,34) Hint: Found declaration: constructor Create(TBGRAPixel;TBGRAPixel;TGradientType;TPointF;TPointF;Boolean=”TRUE”;Boolean=”FALSE”);
    bgracanvas2d.pas(451,9) Error: Incompatible types: got “BGRABITMAPTYPES.TPointF” expected “TYPES.TPointF”
    bgracanvas2d.pas(452,9) Error: Incompatible types: got “BGRABITMAPTYPES.TPointF” expected “TYPES.TPointF”
    bgracanvas2d.pas(665,24) Error: function header doesn’t match any method of this class “GetShadowOffset:;”
    bgracanvas2d.pas(109,14) Error: Found declaration: GetShadowOffset:;
    bgracanvas2d.pas(667,13) Error: Incompatible types: got “BGRABITMAPTYPES.TPointF” expected “TYPES.TPointF”
    bgracanvas2d.pas(900,25) Error: function header doesn’t match any method of this class “FillPoly(const {Open} Array Of TPointF);”
    bgracanvas2d.pas(125,15) Error: Found declaration: FillPoly(const {Open} Array Of TPointF);
    bgracanvas2d.pas(905,38) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgracanvas2d.pas(141,15) Hint: Found declaration: DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);
    bgracanvas2d.pas(913,63) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(498,11) Hint: Found declaration: FillPolyAntialiasWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(915,61) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(472,11) Hint: Found declaration: FillPolyAliasedWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;TDrawMode);
    bgracanvas2d.pas(925,67) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(498,11) Hint: Found declaration: FillPolyAntialiasWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(927,65) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(472,11) Hint: Found declaration: FillPolyAliasedWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;TDrawMode);
    bgracanvas2d.pas(932,67) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(498,11) Hint: Found declaration: FillPolyAntialiasWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(934,65) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(472,11) Hint: Found declaration: FillPolyAliasedWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;TDrawMode);
    bgracanvas2d.pas(940,54) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(485,11) Hint: Found declaration: FillPolyAntialias(TBGRACustomBitmap;{Open} Array Of TPointF;TBGRAPixel;Boolean;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(942,52) Error: Incompatible type for arg no. 2: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(459,11) Hint: Found declaration: FillPolyAliased(TBGRACustomBitmap;{Open} Array Of TPointF;TBGRAPixel;Boolean;Boolean;TDrawMode);
    bgracanvas2d.pas(947,25) Error: function header doesn’t match any method of this class “FillStrokePoly(const {Open} Array Of TPointF;Boolean);”
    bgracanvas2d.pas(126,15) Error: Found declaration: FillStrokePoly(const {Open} Array Of TPointF;Boolean);
    bgracanvas2d.pas(966,28) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(974,32) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(976,32) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(979,72) Error: Incompatible type for arg no. 2: Got “TBGRAPixel”, expected “IBGRAScanner”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(984,48) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapen.pas(761,10) Hint: Found declaration: ComputeWidePolylinePoints(const {Open} Array Of TPointF;Single;TBGRAPixel;TFPPenEndCap;TFPPenJoinStyle;const TBGRAPenStyle;TBGRAPolyLineOptions;Single=”2″;TComputeArrowHeadProc=”nil”;Single=”0″;TComputeArrowHeadProc=”nil”;Single=”0″):{Dynamic} Array Of TP
    bgracanvas2d.pas(993,31) Error: Incompatible type for arg no. 1: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(1000,76) Error: Incompatible type for arg no. 2: Got “TBGRAPixel”, expected “IBGRAScanner”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(1002,33) Error: Incompatible type for arg no. 1: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(638,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;IBGRAScanner);
    bgrapolygon.pas(631,33) Hint: Found declaration: AddPolygon(const {Open} Array Of TPointF;TBGRAPixel);
    bgracanvas2d.pas(1004,48) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgracanvas2d.pas(141,15) Hint: Found declaration: DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);
    bgracanvas2d.pas(1006,40) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgracanvas2d.pas(141,15) Hint: Found declaration: DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);
    bgracanvas2d.pas(1091,25) Error: function header doesn’t match any method of this class “SetShadowOffset(const TPointF);”
    bgracanvas2d.pas(134,15) Error: Found declaration: SetShadowOffset(const TPointF);
    bgracanvas2d.pas(1128,25) Error: function header doesn’t match any method of this class “StrokePoly(const {Open} Array Of TPointF);”
    bgracanvas2d.pas(140,15) Error: Found declaration: StrokePoly(const {Open} Array Of TPointF);
    bgracanvas2d.pas(1135,46) Error: Incompatible type for arg no. 1: Got “{Open} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapen.pas(761,10) Hint: Found declaration: ComputeWidePolylinePoints(const {Open} Array Of TPointF;Single;TBGRAPixel;TFPPenEndCap;TFPPenJoinStyle;const TBGRAPenStyle;TBGRAPolyLineOptions;Single=”2″;TComputeArrowHeadProc=”nil”;Single=”0″;TComputeArrowHeadProc=”nil”;Single=”0″):{Dynamic} Array Of TP
    bgracanvas2d.pas(1138,39) Error: Incompatible type for arg no. 1: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgracanvas2d.pas(141,15) Hint: Found declaration: DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);
    bgracanvas2d.pas(1146,63) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(498,11) Hint: Found declaration: FillPolyAntialiasWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(1148,61) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(472,11) Hint: Found declaration: FillPolyAliasedWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;TDrawMode);
    bgracanvas2d.pas(1158,54) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(485,11) Hint: Found declaration: FillPolyAntialias(TBGRACustomBitmap;{Open} Array Of TPointF;TBGRAPixel;Boolean;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(1160,52) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(459,11) Hint: Found declaration: FillPolyAliased(TBGRACustomBitmap;{Open} Array Of TPointF;TBGRAPixel;Boolean;Boolean;TDrawMode);
    bgracanvas2d.pas(1165,65) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(498,11) Hint: Found declaration: FillPolyAntialiasWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;Boolean=”FALSE”);
    bgracanvas2d.pas(1167,63) Error: Incompatible type for arg no. 2: Got “{Dynamic} Array Of TPointF”, expected “{Open} Array Of TPointF”
    bgrapolygon.pas(472,11) Hint: Found declaration: FillPolyAliasedWithTexture(TBGRACustomBitmap;{Open} Array Of TPointF;IBGRAScanner;Boolean;TDrawMode);
    bgracanvas2d.pas(1172,25) Error: function header doesn’t match any method of this class “DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);”
    bgracanvas2d.pas(141,15) Error: Found declaration: DrawShadow(const {Open} Array Of TPointF;const {Open} Array Of TPointF);
    bgracanvas2d.pas(1185,29) Error: Incompatible type for arg no. 1: Got “TYPES.TPointF”, expected “BGRABITMAPTYPES.TPointF”
    geometrytypes.inc(797,10) Hint: Found declaration: isEmptyPointF(const TPointF):Boolean;
    bgracanvas2d.pas(1203,13) Error: Incompatible types: got “BGRABITMAPTYPES.TPointF” expected “TYPES.TPointF”
    bgracanvas2d.pas(1224,15) Error: Incompatible types: got “BGRABITMAPTYPES.TPointF” expected “TYPES.TPointF”
    bgracanvas2d.pas(1233,51) Error: Incompatible type for arg no. 2: Got “TBGRAPixel”, expected “IBGRAScanner”
    Compile package lhelpcontrolpkg 0.2: Aborted, Warnings: 1
    lhelpcontrol.pas(238,18) Warning: Symbol “CommandLine” is deprecated

    any idea?

    • Fabio Luis Girardi Autor do postResponder

      I think that this is caused because I used development versions of BGRABitmap and BGRAControls. Now I use stable versions of these libs. I’ll publish a new snapshot today. I did some tests with Lazarus 1.6.0 + FPC 3.0.0 Win32 and everything appears to be OK.

      Please test it. The updated snapshot file name is pascalscada_0.7.3_20170307.tar.bz2

      I’m uploading it now.

  4. robin Responder

    Do you have any tutorial/manual on how to do alarming with this packages?

    I would really like to see how this is done with modbus tcp.

    Best regards
    Robin

  5. Fabio Responder

    This should be done via source code because alarming is missing feature in PascalSCADA yet, because I’m not a skilled developer across multiple databases. So, write these components is a big problem to me.

    But in my applications, I use a TPLCBlock to read all alarms together. The write on database occurs on event OnValueChange. On this event handler I declare a array of strings, where each array element represents the message of each alarm of TPLCBLock. Each active alarm receive a identifier, on this case it’s the auto increment key of the alarms database table and it’s stored on the application during all the life of this alarm. When a alarm is finished, I use this alarm identifier to finish it on database. After finish it on database, the value 0 (zero) is assigned to the variable that stores the alarm identifier on application.

    I’ll write a example showing how implement this.

    • robin Responder

      Dear Fabio,

      Thank you for good information!! 🙂

      I would like to see the example on how to implement this. Please let me know when you have an example ready 🙂

      I really like PascalScada, you have done a great job.

    • robin Responder

      Hi Fabio,

      Thank you for the example 🙂
      Looks great!

      I managed to change it to modbus tcp and mysql.
      Now i need to figure out how to implement an acknowledge to the PLC. Keeping the alarm in the alarm list until it is acknowledged and normal status.

      Best regards

  6. Fabio Luis Girardi Autor do postResponder

    To keep alarms in alarm list while it’s not acknowledge is simple, change the where on active alarm list from:

    WHERE dt_finished IS NULL;

    To

    WHERE dt_finished IS NULL OR dt_ack IS NULL;

    • robin Responder

      Hi,

      Thank you!
      Yes, i figured out that 🙂

      But how can I at the same time update the ack column for the alarm in the database send an acknowledge value to a certain holding register (same index as alarm but in a higher range) in the PLC by selecting one alarm from the DBGrid and pressing an ACK button?

      What are the limitations on TPLCBlock? How many arrays can I have in one TPLCBlock? And how many TPLCBlocks can i have in my project before it gets to slow or crashes?

      Best regards

  7. Pawel Responder

    Hello,

    I need any example how I should configure components TCP_UDPPort, ISOTCPDriver, TagBit to work with S7 1200. Maybe small example, or step by step configuration..?

  8. Popescu Dragos Responder

    Hi,
    When I try to install pascalscada 0.7.5 I’ve got the error message “Cannot find fpdebug used by Lazarus”
    What I should to install?

    • Fabio Luis Girardi Autor do postResponder

      This error isn’t related with Pascalscada. Fpdebug is a package shipped with lazarus.

      You can try: menu packages => install/uninstall packages. Check if fpdebug is on the list on the left side of window that will open (installed packages). If yes, uninstall fpdebug, then click on button called “save and rebuild”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *