para descargarlo

Anuncio
En el programa del PLC tenemos 3 funciones que gestionan la comunicación
TCP/IP:
- IP_CONNECT – Establece una conexión TCP/IP. En el ejemplo se configura el
PLC en modo “PASSIVE” de forma que acepta la conexión del primer equipo
que intente una conexión a través del puerto configurado ( en este caso el 2222).
Si se cortase la comunicación con ese equipo, la variable “ConexionValida” se
iría a 0 y aceptaría una nueva comunicación de otro equipo diferente al inicial.
-
IP_USEND – Envía los datos contenidos en la matriz de 10 bytes “TramaEnvio”
IP_URCV – Recibe datos y los almacena en la matriz de 10 bytes
“TramaRecepcion”
Es posible recibir / enviar hasta un máximo de 1460 bytes en cada llamada a las
funciones IP_USEND e IP_URCV.
Vemos en primer plano la aplicación de Visual Basic que realiza la
comunicación entre el PC.
Le pasamos la dirección IP del PLC y enviamos / recibimos 5 bytes.
De fondo podemos ver la lista de variables del PLC en modo online.
Tras activar el botón “Enviar” vemos que los datos introducidos en Visual Basic,
han pasado a la matriz “TramaRecepcion” del PLC. Además se nos han añadido dos
bytes con el número de datos recibidos ( 5 ).
En la matriz “TramaEnvio” ponemos los datos que queremos pasar desde el PLC
a nuestra aplicación en VB.
Con un flanco de subida en la variable “ActivarEnvio” , se inicia la transferencia
de datos.
De la misma forma que en la recepción recibimos 2 bytes con el número de
datos recibidos, en el envío somos nosotros los que tenemos que indicar el número de
datos a enviar. Por eso al inicio de la matriz de datos de envío contiene el numero 5, que
son los datos que enviaremos al PC.
La aplicación de Visual Basic emplea los sockets de windows para realizar la
comunicación TCP/IP.
En el formulario se pega el control ActiveX de Winsock
A continuación se incluye el código del programa ejemplo de Visual Basic.
Option Explicit
Private Sub cmdConnect_Click()
If objWinsock.State = sckClosed Then
objWinsock.Protocol = sckTCPProtocol
objWinsock.RemoteHost = DirIP.Text
objWinsock.RemotePort = 2222
objWinsock.Connect
cmdConnect.Enabled = False
Else
objWinsock.Close
objWinsock.LocalPort = 0
cmdConnect.Caption = "Connect"
cmdSendData.Visible = False
End If
End Sub
Private Sub cmdSendData_Click()
Dim arrSendData(5) As Byte
If objWinsock.State = sckConnected Then
arrSendData(0) = Val(TextBoxSendData0.Text)
arrSendData(1) = Val(TextBoxSendData1.Text)
arrSendData(2) = Val(TextBoxSendData2.Text)
arrSendData(3) = Val(TextBoxSendData3.Text)
arrSendData(4) = Val(TextBoxSendData4.Text)
objWinsock.SendData (arrSendData)
End If
End Sub
Private Sub objWinsock_Connect()
cmdConnect.Caption = "Disconnect"
cmdConnect.Enabled = True
cmdSendData.Visible = True
End Sub
Private Sub objWinsock_DataArrival(ByVal bytesTotal As Long)
Dim RcvData As Variant
objWinsock.GetData RcvData
Text5.Text = RcvData(0)
Text4.Text = RcvData(1)
Text3.Text = RcvData(2)
Text2.Text = RcvData(3)
Text1.Text = RcvData(4)
End Sub
Esta aplicación utiliza los sockets de Windows. Pero funciona de igual forma en
cualquier otro sistema operativo que emplee comunicación vía sockets.
Descargar