Una vez instalado el componente AutomationToolKit.ocx, abra un nuevo proyecto «Standard EXE» para probar el componente creando una aplicación para controlar un generador. Haga Click en el menú «Proyecto» y seleccione «Componentes» como se muestra en la siguiente figura.

Luego Seleccione los controles AutomationToolKit y ActiveNTocol , pulse Aceptar para agregarlo a la barra de herramientas.

A continuación pegue el/los controles que desea utilizar sobre el formulario como se muestra en el siguiente ejemplo.

El siguiente ejemplo lee un registro de datos desde DT 1001 a DT1012 para mostrarlos en los instrumentos del formulario.
Dim DTs(12) As String ‘Defino un vector para contener datos de memorias leídos del PLC
Dim miBuffer As String
Dim flag_ya_fue_Notificado As Boolean ‘Esta bandera impide que se envíen múltiples correos por el mismo evento
Private Sub Form_Load()
‘Para poder utilizar los comandos que interactúan con el PLC
‘primero necesitamos configurar y abrir el puerto.
With ActiveNTocol1
.SerialPort = 1
.BaudRate = 9600
.BitDataLength = 8
.TimeOut = 1000
‘Configuro el Timer interno número 1 para establecer la frecuencia de lectura cada 500 milisegundos
.Timer1_Interval = 500 ‘Se realizarán las lecturas cada 0.5 segundos
.OpenPort ‘Abre el Puerto
End With
End Sub
Private Sub Command1_Click()
‘Enciendo el monitoreoActiveNTocol1.Timer1_Enabled = True
LedX3.LedOn
End Sub
Private Sub Command2_Click()
‘Detengo el monitoreo
ActiveNTocol1.Timer1_Enabled = FalseLedX3.LedOff
End Sub
Private Sub ActiveNTocol1_Timer1()‘El evento Timer1 se dispara cada 500ms para realizar lecturas para del registro y actualizar los instrumentos
miBuffer = ActiveNTocol1.ReadData(1, «D», 1001, 1024) ‘Lee un registro de 12 posiciones de memorias del PLC al mismo tiempo‘NOTA: La función ReadData y WriteData pueden leer o escribir hasta un máximo de 24 palabras
ActiveNTocol1.CstrToArray miBuffer, DTs ‘Convierte el string de la variable «miBuffer» en elementos de un vector «DTx()»
‘Carga los valores leídos del PLC a los instrumentos
Instrument1.Value = DTs(1) ‘DT1001
Instrument2.Value = DTs(2) ‘DT1002
Instrument3.Value = DTs(3) ‘DT1003
Instrument4.Value = DTs(4) ‘DT1004
GaugeX1.Value = DTs(5) ‘DT1005
GaugeX2.Value = DTs(6) ‘DT1006
LCDPanel1.Value = DTs(7) ‘DT1007
LCDPanel2.Value = DTs(8) ‘DT1008
LCDPanel3.Value = DTs(9) ‘DT1009
LCDPanel4.Value = DTs(10) ‘DT1010
LCDPanel5.Value = DTs(11) ‘DT1011
LCDPanel6.Value = DTs(12) ‘DT1012
‘// Aquí se puede agregar código para manejo de condiciones durante la operación
If cint(DTs(7)) < 10 And Not flag_ya_fue_Notificado Then ‘Si se registra menos de 10Volt presumo corte de energía y solo lo informo una vez
Call Power_Down()
flag_ya_fue_Notificado = True
End If
If cint(DTs(7)) > 10 Then flag_ya_fue_Notificado = False ‘Si se reestablece la energía, reseteo el flag para que es caso de corte me informe nuevamente
‘//
End Sub
Private Power_Down()
‘Envía un Mail a los destinatarios
ActiveMail1.Port = 25
ActiveMail1.Subject = «Generador «
ActiveMail1.Importance = 2 ‘0-Normal, 1-Baja, 2-Alta
ActiveMail1.MessageText = «Corte de energía eléctrica. «
ActiveMail1.SendMail
End Sub
Private Sub Form_Terminate()
ActiveNTocol1.ClosePort ‘Cierro el puerto antes de salir
End Sub
NOTA: Cuando se necesitan realizar lecturas de varias posiciones de memorias, es conveniente realizarlas todas en una sola operación de lectura tal como se mostró en el ejemplo anterior ya que la función «ReadData» nos permite leer hasta 24 posiciones de memorias de una vez. Esto agiliza el tiempo de lectura y por lo tanto aumenta la performance de toda la aplicación. |