• Comunicação Citect (Plant SCADA) com SQL Server

    Posted by Daniel on 21/11/2022 at 16:56

    Olá!

    Realizamos uma aplicação onde tínhamos 2 servidores, onde um servidor estava Citect e outro estava a base de dados (SQL Server), para buscar alguns dados utilizamos a comunicação ODBC Server que através dela podemos enviar um comando query, para buscar alguns dados que precisamos desse banco de dados para apresentar na tela do citect

    Primeiro iremos começar com a configuração necessária no banco de dados que precisamos ter para existir uma comunicação entre o Citect com o Banco de dados.

    1. Clicando com o botão direto no banco de dados, iremos abrir as propriedades desse BD

    2. Primeiro iremos visualizar a “Security” do BD, iremos deixar selecionado o modo “SQL Server and Windows Authentication mode”. Por que assim dessa forma iremos conseguir acessar o banco de dados através de um usuário SQL que poderemos criar nesse banco.

    3. Após mudar esse modo de autenticação iremos para a pagina de “Connections”, nesta pagina iremos deixar selecionado o campo “Allow remote connections to this server” onde ele irá permitir acessos remotos do banco de dados, após essas modificações pode clicar em OK

    4. Neste banco o “SQL Server Agent” precisa estar sempre ativo, por que é com ele que o citect vai conseguir acessar o BD de dados, para ativar ele basta clicar com botão direito sob ele e dar um “Start”

    5. Após isso iremos criar um login neste banco, que é através desse login que iremos buscar as informações que precisamos pelo citect. Clique em “Security”, assim que abrir você irá clicar com botão direito em “Login” e selecionar “New Login”.

    6. Após isso, irá abrir uma nova caixa que iremos configurar nosso usuário, primeiro se da um nome a esse usuário, após isso selecionamos “SQL Server authentication”, após isso configure uma senha para esse login, tirei a seleção abaixo de “Enforce passaword policy”

    7. Seleciona agora “Server Roles”, nesta tela selecione os privilégios do usuário, tanto “public” como “sysadmin”

    8. Selecione agora “User Mapping”, aqui você vai configurar qual BD ele vai ter acesso de modificação e além disso, assim que você selecionar o BD abaixo você vai configurar qual vai fazer parte selecione “db_owner”, após isso você pode clicar em OK

    9. Depois dessas modificações, iremos configurar o “SQL Server Configuration Manager”, na procura Windows procure o aplicativo e abra ele

    10. Após isso abrir, clique em configuração de rede do SQL Server, quando clicar selecione o protocolo do seu BD.

    11. Ao lado direito, iremos habilitar “TCP/IP”, clique com botão direito e Habilite o protocolo

    12. Clique com o botão direito e vá para propriedades, você poderá ver a Porta TCP que geralmente é padrão 1433 do SQL Server.

    13. Sendo assim terá que aplicar uma regra de saída do Firewall para seu IP do outro servidor aplicando na porta padrão 1433 e o IP do servidor que irá solicitar os dados do BD.

    14. Após essas configurações no servidor do Banco de dados, está tudo pronto.

    Após essas configurações iremos para o servidor do Citect que irá solicitar esses dados, para isso iremos fazer essa comunicação via ODBC.

    1. Baixe o ODBC Data Sources correto para a sua máquina 32 ou 64 bits.

    2. Após baixar ODBC você irá configurar o ‘DSN de Sistema’ é atrás dele que você irá buscar os dados que necessita, após selecionar a aba de ‘DSN Sistema’ você irá clicar em adicionar.

    3. Após clicar em Adicionar irá aparecer uma outra caixa para você selecionar a fonte de dados, para a nossa aplicação utilizamos SQL Server, selecione ele e clique em concluir.

    4. Após clicar irá aparecer mais uma tela onde primeiro irá colocar o nome do DSN, que pode ser da sua escolha.

    5. Abaixo iremos selecionar qual Servidor você irá se conectar, ali iremos colocar o IP publico do nosso servidor do BD de dados e no final a porta que iremos querer acessar no caso a padrão que seria 1433 – ***.***.***.***,1433

    6. Após colocar o servidor e a porta clique em avançar você será direcionado para a página de autenticidade que você irá selecionar autenticação do SQL, que é aquele login e senha criado lá no início, então coloque login e senha criado e clica em avançar, se ele não avançar você tem algum problema, de autenticação ou conexão com servidor, volte desde o inicio e veja se não esqueceu nenhum passo

    7. Depois você vai selecionar a opção “Alterar o banco de dados padrão para:”, selecionando esse banco iremos selecionar o banco de dados que iremos fazer a pesquisa, após selecionar o banco clique em avançar.

    8. Irá para a próxima página, nesta não é preciso se alterar nada, somente clicar em concluir.

    9. Após clicar em concluir, poderá testar a fonte de dados se existe conexão entre eles, se clicar e dar êxito está tudo correto, se não volte novamente e veja se não está faltando nada, depois disso clique OK e seu DNS está tudo okay.

    Assim temos configurado tanto o banco de dados como o ODBC que irá realizar essa conversa com outro servidor, agora já no Citect, você irá configurar seu cicode utilizando as funções SQL. Abaixo irei colocar um exemplo de Cicode

    FUNCTION GravacaoValores()

    INT hSQL;

    INT i = 0;

    INT status;

    hsQL = SQLConnect(“DSN=TesteSQL;UID=Teste01;PWD=teste”)

    IF hSQL <> 1 THEN

    status = SQLExec(hSQL, “SELECT ds_dispositivo FROM dispositivo”);

    IF status = 0 THEN

    WHILE SQLNext(hSQL) = 0 DO

    sInfo[0][i] = StrToInt(SQLGetField(hSQL,“ds_dispositivo”));

    i = i + 1;

    END

    SQLEnd(hSQL);

    ELSE

    Message(“Information”, SQLErrMsg(“Nenhum valor”), 48);

    END

    ELSE

    Message(“Information”, SQLErrMsg(“Banco não carregou”), 48);

    END

    SQLDisconnect(hSQL);

    END

    SQLConnect – Nesta função iremos colocar o nome do DSN criado do ODBC Server, UID seria o nome do usuário criado e PWD a senha que foi criado

    SQLExec – Executa essa query no BD de dados, indicado no SQLConnect

    SQLNext – Vai fazer assim ele percorrer os dados buscados do SQLExec

    Assim essa função está gravando os valores num vetor

    Para saber mais indico utilizar o Help do próprio citect das funções SQL ali terá diversas funções e exemplos que você pode utilizar para aplicar.

    Assim está tudo configurado é através disso que você pode executar query no SQL Server utilizando o citect, buscando assim informações que você precisa dessa base de dados.

    Bazarin replied 2 years ago 2 Members · 1 Reply
  • 1 Reply
  • Bazarin

    Member
    25/11/2022 at 20:38
    0 Itotcoins

    Usando uma string de conexão direta com o banco de dados funciona também, sem ODBC.

    Tem vários tipos, depende das configurações de acesso. Basicamente é algo assim, no lugar do DSN do código: “Server=myServerAddress;Database=myDataBase;Trusted_Connection=True”

    https://www.google.com.br/url?sa=t&source=web&rct=j&url=https://www.connectionstrings.com/sql-server/&ved=2ahUKEwiuvdS9icD7AhUzpZUCHRoXCYAQFnoECBcQAQ&usg=AOvVaw26NfKbirpEU4qBZTXMLq0w

    Esse link fornece várias combinações para diferentes bancos de dados. ODBC é legal pra gente testar uma conexão inicial, pra ver se passam as configurações de acesso ao banco.

    Exemplo de string de conexão com banco de dados
    STRING sConexao = “DRIVER=SQL Server; Database=NOME_DO_DATABASE; SERVER=192.168.10.10; UID=nome_usuario; PWD=senha;”

    De uma forma mais simples, depois seria utilizar O SQLConnect para esta conexão, tipo:
    hSQL = SQLConnect(sConexao); Mas em aplicações reais, tem o teste se a conexão foi ok antes de iniciar os comandos SQL

Log in to reply.