FPControl, Automating the world

Control de un Generador en Visual Basic 6.0 

           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 monitoreo

             ActiveNTocol1.Timer1_Enabled = True

             LedX3.LedOn

End Sub
 


Private Sub Command2_Click()
            'Detengo el monitoreo
             ActiveNTocol1.Timer1_Enabled = False

             LedX3.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.

Automatizacion industrial, desde San Justo Para el Mundo