Visual C++ .NET - Comunicación PC<->PLc Visual studio

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 6 puestos en Visual C++ .NET (en relación al último mes)
Gráfica de Visual C++ .NET

Comunicación PC<->PLc Visual studio

Publicado por José David (1 intervención) el 27/06/2020 07:29:48
Hola a todos, soy programador de plcs, pero me estoy iniciando a programar en visual studio, por lo que estoy desarrollando una aplicación para el pc que quiero comunicar con un plc omron, tanto leer como escribir dm´s, pero realmete no se que protocolo de comunicación usar y como desarrollar la comunicación en visual studio, gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Comunicación con PLC Omron en Visual Studio

Publicado por Alejandro (265 intervenciones) el 14/02/2024 23:49:37
José, la comunicación con un PLC Omron puede realizarse utilizando diferentes protocolos. Uno de los protocolos comunes es el protocolo FINS (Factory Interface Network Service), que es utilizado por los PLCs Omron para la comunicación.

A continuación, te proporcionaré una solución básica utilizando Visual C++ .NET y el protocolo FINS para la comunicación con un PLC Omron. Ten en cuenta que deberás adaptar este código según tus necesidades y configuraciones específicas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
 
using namespace System;
using namespace System::Net::Sockets;
using namespace System::Text;
 
public ref class OmronPLCCommunication
{
private:
    TcpClient^ tcpClient;
    NetworkStream^ networkStream;
    array<Byte>^ sendBuffer;
    array<Byte>^ receiveBuffer;
 
public:
    OmronPLCCommunication(String^ ipAddress, int port)
    {
        tcpClient = gcnew TcpClient(ipAddress, port);
        networkStream = tcpClient->GetStream();
        sendBuffer = gcnew array<Byte>(8);
        receiveBuffer = gcnew array<Byte>(8);
    }
 
    ~OmronPLCCommunication()
    {
        networkStream->Close();
        tcpClient->Close();
    }
 
    // Método para enviar datos al PLC
    void SendData(array<Byte>^ data)
    {
        networkStream->Write(data, 0, data->Length);
    }
 
    // Método para recibir datos del PLC
    array<Byte>^ ReceiveData()
    {
        networkStream->Read(receiveBuffer, 0, receiveBuffer->Length);
        return receiveBuffer;
    }
};
 
int main(array<System::String ^> ^args)
{
    // Configuración de la conexión con el PLC
    String^ plcIpAddress = "192.168.0.1"; // Reemplaza con la dirección IP de tu PLC
    int plcPort = 9600; // Reemplaza con el puerto de comunicación de tu PLC
 
    // Crear una instancia de la clase OmronPLCCommunication
    OmronPLCCommunication^ omronPLC = gcnew OmronPLCCommunication(plcIpAddress, plcPort);
 
    // Ejemplo de lectura y escritura de datos en el PLC
    array<Byte>^ writeData = { 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01 }; // Comando para escribir en el DM 1
    omronPLC->SendData(writeData);
 
    array<Byte>^ readData = { 0x80, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01 }; // Comando para leer del DM 1
    omronPLC->SendData(readData);
 
    array<Byte>^ receivedData = omronPLC->ReceiveData();
    // Analizar y utilizar los datos recibidos según la estructura del protocolo FINS
 
    return 0;
}

Este código establece una conexión TCP con el PLC Omron utilizando el protocolo FINS y proporciona métodos simples para enviar y recibir datos. Ten en cuenta que deberás adaptar los comandos de escritura y lectura según la configuración específica de tu PLC y el protocolo FINS. Además, asegúrate de manejar las excepciones y errores de manera adecuada en un entorno de producción.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar