Вы находитесь на странице: 1из 5

En el programa del PLC tenemos 3 funciones que gestionan la comunicacin TCP/IP: - IP_CONNECT Establece una conexin TCP/IP.

. En el ejemplo se configura el PLC en modo PASSIVE de forma que acepta la conexin del primer equipo que intente una conexin a travs del puerto configurado ( en este caso el 2222). Si se cortase la comunicacin con ese equipo, la variable ConexionValida se ira a 0 y aceptara una nueva comunicacin de otro equipo diferente al inicial. IP_USEND Enva 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 mximo de 1460 bytes en cada llamada a las funciones IP_USEND e IP_URCV.

Vemos en primer plano la aplicacin de Visual Basic que realiza la comunicacin entre el PC. Le pasamos la direccin IP del PLC y enviamos / recibimos 5 bytes. De fondo podemos ver la lista de variables del PLC en modo online.

Tras activar el botn Enviar vemos que los datos introducidos en Visual Basic, han pasado a la matriz TramaRecepcion del PLC. Adems se nos han aadido dos bytes con el nmero de datos recibidos ( 5 ). En la matriz TramaEnvio ponemos los datos que queremos pasar desde el PLC a nuestra aplicacin en VB. Con un flanco de subida en la variable ActivarEnvio , se inicia la transferencia de datos.

De la misma forma que en la recepcin recibimos 2 bytes con el nmero de datos recibidos, en el envo somos nosotros los que tenemos que indicar el nmero de datos a enviar. Por eso al inicio de la matriz de datos de envo contiene el numero 5, que son los datos que enviaremos al PC.

La aplicacin de Visual Basic emplea los sockets de windows para realizar la comunicacin TCP/IP. En el formulario se pega el control ActiveX de Winsock

A continuacin se incluye el cdigo 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 aplicacin utiliza los sockets de Windows. Pero funciona de igual forma en cualquier otro sistema operativo que emplee comunicacin va sockets.

Вам также может понравиться