3
respostas

[Dúvida] Como faço para se comunicar um CLP com o Java

Prezado(a) destinatário(a),

Espero que esteja tendo um bom momento, seja tarde, noite ou dia.

Gostaria de solicitar, de maneira humilde, sua orientação, uma vez que estou enfrentando dificuldades no desenvolvimento de uma aplicação que visa a comunicação com um CLP Siemens S7 1200 da família 40.

Embora tenha consultado documentações fornecidas pela Siemens, até o momento não encontrei informações que pudessem solucionar minha questão. Em resposta a essa situação, elaborei um programa em C# utilizando a biblioteca S7.net, que estabelece conexão direta com o datablock do CLP, permitindo a obtenção de informações que são posteriormente consumidas por um aplicativo Java.

Caso alguém possua conhecimento sobre como posso aprimorar a comunicação direta entre minha aplicação Java e o CLP Siemens, ficarei imensamente agradecido. Este é um desafio com o qual venho lidando há meses, e qualquer orientação ou sugestão seria extremamente valiosa.

Segue abaixo a lista das ferramentas e softwares utilizados no projeto:

  1. JAVA versão 21.0.1
  2. C# versão 4.5.2 .NET
  3. MariaDB versão 11.4.0
  4. CLP Siemens S7 1200 DC/DC/DC | AE40-0XB0
  5. Raspberry 3B
  6. Software TIA 15

Agradeço antecipadamente por sua atenção e colaboração.

Atenciosamente,

Hállan.

3 respostas

Olá, Hállan!

A comunicação entre Java e CLP Siemens S7 1200 pode ser um pouco complexa, mas é possível.

Para estabelecer uma comunicação direta entre sua aplicação Java e o CLP Siemens, você pode utilizar a biblioteca Moka7, que é uma versão Java da biblioteca Snap7, usada para se comunicar com os CLPs Siemens S7. A Moka7 permite que você estabeleça uma conexão direta com o datablock do CLP, similar ao que você já fez com a biblioteca S7.net em C#.

Aqui está um exemplo de como você pode usar a Moka7 para se conectar ao CLP:

import info.ghaser.moka7.*;

public class Main {
    public static void main(String[] args) {
        S7Client client = new S7Client();
        int res = client.ConnectTo("192.168.0.1", 0, 2); // IP, Rack, Slot

        if(res == 0) {
            System.out.println("Conectado ao CLP");
        } else {
            System.out.println("Falha ao conectar ao CLP");
        }

        byte[] data = new byte[512];
        res = client.ReadArea(S7.S7AreaDB, 1, 0, 10, data); // DB, Start, Amount, Data

        if (res == 0) {
            System.out.println("Dados lidos com sucesso");
        } else {
            System.out.println("Falha ao ler dados");
        }

        client.Disconnect();
    }
}

Neste exemplo, primeiro criamos um objeto S7Client. Em seguida, usamos o método ConnectTo para tentar se conectar ao CLP. Depois, criamos um array de bytes e usamos o método ReadArea para ler dados do CLP. Por fim, desconectamos do CLP usando o método Disconnect.

Lembre-se que este é apenas um exemplo simples e pode não funcionar perfeitamente para o seu caso específico. Recomendo que você leia a documentação da Moka7 para entender melhor como ela funciona e como você pode usá-la para atender às suas necessidades.

Espero ter ajudado e bons estudos!

Bom dia, Lasmin.

Agradeço pelo retorno e pela valiosa orientação sobre o uso da biblioteca Moka7 para a comunicação entre Java e o CLP Siemens S7 1200. No entanto, ao tentar executar o código fornecido, encontrei dificuldades em localizar a biblioteca Moka7 para importação.

Realizei uma busca no site oficial (https://snap7.sourceforge.net/moka7.html) e não encontrei informações sobre o download da biblioteca. Além disso, ao consultar o repositório de downloads (https://sourceforge.net/projects/snap7/files/Moka7/), deparei-me com uma versão datada de 2014 (versão 1.0.1), mas não estou certo se essa é a versão correta para a integração pretendida.

Gostaria, se possível, de sua orientação quanto ao procedimento correto para importar a biblioteca Moka7. Caso haja um link específico para o download ou se há uma recomendação sobre qual versão utilizar, ficaria grato pela informação.

Anexo a esta mensagem, incluí uma imagem do resultado obtido ao tentar executar o código fornecido.

Agradeço antecipadamente pela sua assistência nesse assunto e permaneço à disposição para esclarecimentos adicionais.

Atenciosamente,

Hállan.

Bom dia, Hállan!

Essa biblioteca Moka7 que falei você pode baixar nesse site: https://jar-download.com/artifacts/si.trina/moka7-live/0.0.10/source-code#google_vignette Peço desculpas por não ter enviado o link antes.

Para te ajudar a incluir uma dependência no seu projeto, sugiro assistir à aula: https://cursos.alura.com.br/course/java-consumindo-api-gravando-arquivos-lidando-erros/task/126733 . Nela, os instrutores mostram o passo a passo detalhado.

Caso esteja usando um gerenciador de dependências, como Maven ou Gradle, você não precisará baixar a biblioteca à mão. Na parte à direita do site de download se encontra o código a ser usado para baixar a dependência automaticamente, seja no arquivo pom.xml (com o Maven) ou no build.gradle (com o Gradle).

Bom projeto!