Compartir datos entre 2 PLC S7 mediante ethernet

Una opción muy interesante cuando trabajamos con varios PLC de Siemens es poder compartir datos mediante la red ethernet del propio PLC, Siemens nos ofrece la posibilidad de crear enlaces de comunicación aprovechando la red y así poder Compartir datos entre 2 PLC S7 mediante ethernet.

En el siguiente ejemplo se utiliza dos PLC S7 315 2DP PN, aunque también se puede realizar con otros PLC de Siemens o Vipa que tengan el puerto de ethernet integrado, o también una tarjeta de ethernet

En primer lugar debemos de crear un enlace en el PLC maestro, este PLC será el encargado de leer y escribir los datos en el PLC cliente, supongamos que tenemos las siguientes direcciones IP

  • IP PLC Maestro: 192.168.10.20
  • IP PLC Esclavo: 192.168.10.120

Configuración del enlace del PLC

Abrimos el programa NetPro y seleccionamos la CPU del PLC maestro:

enlace-netpro-plc

Nuevo enlace con el netpro

Seleccionamos enlace no especificado y tipo de enlace S7:

enlace-no-especificado

Insertar nuevo enlace

En aceptar el enlace se abren las propiedades, aquí debemos de especificar la IP del PLC cliente, en nuestro caso será la 192.168.10.120, definimos el ID del enlace, en este caso el 1, este ID será el que luego utilizaremos en el programa de Step 7, luego hacemos clic en direcciones:

propiedades-del-enlace

Propiedades del enlace

En direcciones definimos el bastidor y slot, normalmente 0 y 2 y en recurso de enlace seleccionamos en local el 10 y en el interlocutor seleccionamos el 3:

detalle-direcciones-enlace-s7

Aceptamos todos los cambios y transferimos la nueva configuración al PLC maestro.
Con esto hecho ya deberíamos tener el enlace entre los 2 PLC realizado, probamos de conectar los 2 PLC en la misma red y al abrir en online desde el Netpro veremos como el enlace esta funcionando correctamente.

Programa de lectura y escritura de datos

En primer lugar debemos de copiar los FB de comunicación en nuestro proyecto de Step 7 y transferirlos al PLC, los FB de comunicaron que utilizaremos son el “PUT” Write Data to a Remote CPU y el “GET” Read Data From a Remote CPU, el FB14 y el FB15 de nuestro ejemplo.

Lectura de datos del PLC cliente

Mediante el FB de lectura “GET” realizamos una lectura secuencial de los datos del cliente, en este caso hemos puesto un clock de 1 décima de segundo, pero se podría aumentar el tiempo de ciclo dependiendo de la cantidad de datos a leer:

lectura-datos-get

En este ejemplo se leen los datos del DB300 a partir de la posición 200 con una cantidad de 150 bytes, y se transfieren al plc del maestro también al DB300 a partir de la posición 200. Se puede ver como el ID del enlace es el 1 que anteriormente hemos definido en la configuración de hardware

Escritura de datos del PLC cliente

Mediante el FB de escritura “PUT” realizamos una escritura secuencial de los datos del cliente, en este caso hemos puesto un clock de 1 décima de segundo, pero se podría aumentar el tiempo de ciclo dependiendo de la cantidad de datos a escribir:

escritura-datos-put

En este ejemplo se escriben los datos del DB300 a partir de la posición 0 con una cantidad de 150 bytes, estos datos se transfieren al PLC cliente también al DB300 a partir de la posición 0. Se puede ver como el ID del enlace es el 1 que anteriormente hemos definido en la configuración de hardware

Connexió a una base de dades SqlServer amb VB.net

Amb aquest post explicaré com realitzar una connexió a una base de dades SqlServer amb VB.net mitjançant OLEDB.

Base de dades SqlServer

Microsoft SQL Server és un sistema per a la gestió de bases de dades produït per Microsoft basat en el model relacional. Microsoft SQL Server constitueix l’alternativa de Microsoft a altres potents sistemes gestors de bases de dades com són Oracle, PostgreSQL o MySQL.

Per poder realitzar una connexió des VB.net, hem de preparar la base de dades amb un usuari i contrasenya i assignar els privilegis necessaris. Des de “SQL Server Management Studio” podem realitzar aquesta tasca d’una manera fàcil i senzilla.

Obrim “SQL Server Management Studio” i una vegada connectat al servidor afegim un nou inici de sessió, utilitzem la “Autenticació de SqlServer”, sobre la base de dades per defecte seleccionem la base de dades que vulguem connectar, també definim els permisos a la base de dades que utilitzarem en la connexió:

sqlserver-nuevo-inicio-sesion

Afegim un nou inici de sessió

permisos-base-datos-sqlserver

Definim els permisos que tindrà el nou usuari sobre la base de dades

Un cop acceptats els canvis ja tindrem llest el nou usuari per realitzar la connexió a la base de dades.

Connexió a una base de dades SqlServer amb VB.net

En primer lloc hem de realitzar les importacions de les classes que necessitem per fer la connexió a una base de dades SqlServer amb VB.net:

Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient

Definim la connexió a la base de dades amb el nom del servidor, la base de dades i el usuari i la contrasenya que hem definit en SQLServer:

myConnectionString = "Provider=sqloledb;" & _
                     "Data Source=localhost;" & _
                     "Initial Catalog=bd-gaSQL;" & _
                     "User Id=UserPrueva;Password=contraseñaPrueva"

Anem a fer una consulta a la base de dades mitjançant un “Select”, la lectura de les dades de la consulta els llegim amb el OleDbDataReader:

        Try
            Dim s As String = ("SELECT * FROM Alumnes")
            connexio = New OleDbConnection(myConnectionString)
            myCommand = New OleDbCommand(s)
            myCommand.Connection = connexio
            connexio.Open()
            Dim myReader As OleDbDataReader = myCommand.ExecuteReader()
            While myReader.Read()
                Dim NOM As String = myReader("NOM")
                Dim COGNOM As String = myReader("COGNOM")
            End While
        Catch exc As Exception
            Throw New GestorExcepcio(exc.Message)
        End Try

Per afegir un nou registre ho podem fer mitjançant “Insert”:

        Try
            Dim sent As String = ("INSERT INTO Alumnes VALUES ('JORDI','NAVES')")
            Dim connexio As New OleDbConnection(myConnectionString)
            myCommand = New OleDbCommand(sent)
            myCommand.Connection = connexio
            connexio.Open()
            myCommand.ExecuteNonQuery()
            connexio.Close()
        Catch exc As Exception
            Throw New GestorExcepcio(exc.Message)
        End Try

I finalment per modificar un registre mitjançant un “update”:

        Try
            Dim s As String = ("UPDATE Alumnes SET nom='JORDI' Where id=1")
            connexio = New OleDbConnection(myConnectionString)
            myCommand = New OleDbCommand(s)
            myCommand.Connection = connexio
            connexio.Open()
            myCommand.ExecuteNonQuery()
            connexio.Close()
        Catch exc As Exception
            Throw New GestorExcepcio(exc.Message)
        End Try

En conclusió, una manera molt senzilla d’establir una comunicació entre SqlServer i Vb.net d’una manera ràpida i eficaç-

Conexión a una base de datos SqlServer con VB.net

En este post voy a explicar como realizar una conexión a una base de datos SqlServer con VB.net mediante OleDb.

Base de datos SqlServer

Microsoft SQL Server es un sistema para la gestión de bases de datos producido por Microsoft basado en el modelo relacional.  Microsoft SQL Server constituye la alternativa de Microsoft a otros potentes sistemas gestores de bases de datos como son Oracle, PostgreSQL o MySQL.

Para poder realizar una conexión desde VB.net, debemos de preparar la base de datos con un usuario y contraseña y asignarle los privilegios necesarios. Desde “SQL Server Management Studio” podemos realizar esta tarea de una manera fácil y sencilla.

Abrimos “SQL Server Management Studio”  y una vez conectado al servidor añadimos un nuevo inicio de sesión, utilizamos la “Autenticacion de SqlServer”, en base de datos predeterminada seleccionamos la base de datos que queramos conectarnos, también definimos los permisos a la base de datos que utilizaremos en la conexión:

sqlserver-nuevo-inicio-sesion

Añadimos un nuevo inicio de sesión

permisos-base-datos-sqlserver

Definimos los permisos que tendrá el nuevo usuario sobre la base de datos

Una vez aceptados los cambios ya tendremos listo el nuevo usuario para realizar la conexión a la base de datos.

Conexión a una base de datos SqlServer con VB.net

En primer lugar debemos realizar las importaciones de las clases que necesitamos para realizar la conexión a una base de datos SqlServer con VB.net:

Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient

Definimos la conexion a la base de datos con el nombre del servidor, la base de datos y el usuari y la contraseña que hemos definido en sqlServer:

myConnectionString = "Provider=sqloledb;" & _
                     "Data Source=localhost;" & _
                     "Initial Catalog=bd-gaSQL;" & _
                     "User Id=UserPrueva;Password=contraseñaPrueva"

Vamos a realizar una consulta a la base de datos mediante un “Select”, la lectura de los datos de la consulta los leemos con el OleDbDataReader:

        Try
            Dim s As String = ("SELECT * FROM Alumnes")
            connexio = New OleDbConnection(myConnectionString)
            myCommand = New OleDbCommand(s)
            myCommand.Connection = connexio
            connexio.Open()
            Dim myReader As OleDbDataReader = myCommand.ExecuteReader()
            While myReader.Read()
                Dim NOM As String = myReader("NOM")
                Dim COGNOM As String = myReader("COGNOM")
            End While
        Catch exc As Exception
            Throw New GestorExcepcio(exc.Message)
        End Try

Para añadir un nuevo registro lo podemos hacer mediante “Insert”:

        Try
            Dim sent As String = ("INSERT INTO Alumnes VALUES ('JORDI','NAVES')")
            Dim connexio As New OleDbConnection(myConnectionString)
            myCommand = New OleDbCommand(sent)
            myCommand.Connection = connexio
            connexio.Open()
            myCommand.ExecuteNonQuery()
            connexio.Close()
        Catch exc As Exception
            Throw New GestorExcepcio(exc.Message)
        End Try

Y finalmente para modificar un registro mediante un “update”:

        Try
            Dim s As String = ("UPDATE Alumnes SET nom='JORDI' Where id=1")
            connexio = New OleDbConnection(myConnectionString)
            myCommand = New OleDbCommand(s)
            myCommand.Connection = connexio
            connexio.Open()
            myCommand.ExecuteNonQuery()
            connexio.Close()
        Catch exc As Exception
            Throw New GestorExcepcio(exc.Message)
        End Try

En conclusión, una manera muy sencilla de establecer una comunicación entre SqlServer y Vb.net de una manera rápida y eficaz-