Mensajes recientes

Páginas: 1 ... 8 9 [10]
91
Kinco / Re:Cambiar de pantalla automáticamente desde el PLC
« Último mensaje por Soporte marzo 28, 2019, 17:02:18 pm »
Por otro lado nos surje otro problema, dentro del programa que estamos realizando, existen estados de alarma del sistema a controlar. Necesitamos que ante una alarma emerja una pantalla de alarma, en forma automática, sin importar la pantalla que en ese momento este activa en la HMI.

Y no sabemos como hacerlo...Nos podrían dar algún ejemplo de como hacerlo?

Buenas tardes. Una forma es haciendo que el PLC escriba un registro en la pantalla (ejemplo LW-12) con el número de ventana a mostrar, que puede ser la ventana diseñada para "Alarmas".

Te muestro como hacerlo en el HMI:



(abajo se puede descargar la imagen para verla mejor con más zoom)

Si la ventana de alarma es la número 10, cuando LW12 sea igual a 10, el HMI cambiará a esa ventana independiente de donde esté.

El componente "PLC Control" se explica en la sección 4.15.5 del manual del HMI.

Tip-1: Esto también te puede servir para cuando arranca el PLC, que escriba el registro LW12 a 0, para que muestre la pantalla incial del HMI, independiente de donde esté.

Tip-2: Si no querés cambiar a ninguna ventana, pero igual escribís el registro, podes escribir un número de ventana inexistente (ej 32000) y el HMI no hará cambio alguno de ventana.

Tip-3: También es posible configurar alarmas, para que cuando un "bit" (ejemplo LB1100) esté activado, suene un "buzzer" o muestre un mensaje informativo. Ver sección 4.15.4 y 4.7.4 del manual del HMI.

Saludos!
92
STX8091 / Re:Comunicación al PLC mediante UDP
« Último mensaje por Pedro1 marzo 28, 2019, 10:34:24 am »
Hola Boris,

Ya pude recibir datos en el PLC! Dado que funcionó la comunicación UDP, mas adelante intentaré probar con TCP. Cualquier duda que me surja te escribo nuevamente.

Te agradezco mucho por la rápida respuesta!

Saludos!
93
Kinco / Re:Cambiar de pantalla automáticamente desde el PLC
« Último mensaje por foliva26 marzo 28, 2019, 07:51:29 am »
Como estás, buen día...

Primero quiero agradecerte por la ayuda que nos dió el soporte sobre las dudas que hemos estado teniendo, entorno a la programación de las pantallas Kinco con el plc de la marca.

Por otro lado nos surje otro problema, dentro del programa que estamos realizando, existen estados de alarma del sistema a controlar. Necesitamos que ante una alarma emerja una pantalla de alarma, en forma automática, sin importar la pantalla que en ese momento este activa en la HMI.

Y no sabemos como hacerlo...Nos podrían dar algún ejemplo de como hacerlo?

Desde ya gracias.

Saludos.
94
STX8091 / Re:Controlador infrarrojo
« Último mensaje por Soporte marzo 27, 2019, 20:15:59 pm »
Buenas tardes Esteban,

Tengo mis dudas sobre la dificultad que tengas y si al final llegarás a buen puerto.

En principio necesitás saber los códigos de control para la transmisión y recepción de datos.
El formato del paquete de datos y que significa cada bit.

Luego para entrar los datos al PLC, calculo que podrías hacerlo por el puerto serie. Pero como esos módulos deben tener nivel de voltaje TTL o 0 a 5V, necesitarías un conversor de tensión de TTL a RS232.

Si no tenés en claro cual es el código de transmisión/recepción, la forma de salida del módulo IR, es complicado saber si podrás leerlo con el puerto serie para configurarlo a la velocidad/formato correcto y no perder bits de datos.

Lo mismo para la transmisión, el puerto serie añade algunos bits extras, esto al final, puede generar un formato erróneo para el A/C.

Saludos!
95
STX8091 / Re:Comunicación al PLC mediante UDP
« Último mensaje por Soporte marzo 27, 2019, 19:48:55 pm »
Al no recibir nada desde el PLC, decidí utilizar un programita muy simple (packet sender) en el que mando los mismos datos y me encuentro con que el mismo PLC responde inmediatamente con datos que no se interpretar. Te adjunto la imagen de esto (por ahí reconoces que tipo de error estoy teniendo o que tipo de mensaje es) y también te muestro a continuación el código utilizado para recibir los datos (tomado de la nota de aplicación AN001).

Buenas tardes,

Parece correcta la repuesta del PLC que recibís, al menos coherente haciendo un análisis rápido. Responde que el comando que enviaste es el "6" y no hay datos de retorno (output size = 0). El protocolo con su versión "2" coincide.



Intentá cargar el siguiente programa al PLC:

Código: (Pawn) [Seleccionar]
PlcMain()
{
   // Vaciar Rx Buffer (Optional, recomendado como buena practica).
   UdpRxBufFlush()

   // Activar el evento para recibir datos UDP.
   UdpRxSetEvent()

   // Ciclo principal del programa.
   while(1)
   {
      // Conmutar led debug cada 250 mS.
      DelayMS(250)
      LedToggle()
   }
}

@OnUdpRx()
{
   // Obtener dirección IP remota y Puerto de los datos recibidos.
   // Nota: solo para fines didacticos.
   UdpRxGetAddr(RxIP[0], RxIP[1], RxIP[2], RxIP[3], RxPort)

   // Leer 6 bytes del buffer de recepcion.
   UdpRxDataRead(RxData, 0, 6, false)

   // Comprobar valor de primer byte recibido y activar/desactivar RELAY1/DOUT1.
   if(RxData[0] == 1)
      DoutSetOn(DOUT1)
   if(RxData[0] == 0)
      DoutSetOff(DOUT1)

   // Comprobar valor del segundo byte recibido y activar/desactivar RELAY2/DOUT2.
   if(RxData[1] == 1)
      DoutSetOn(DOUT2)
   if(RxData[1] == 0)
      DoutSetOff(DOUT2)

   // Comprobar valor del tercer byte recibido y activar/desactivar RELAY3/DOUT3.
   if(RxData[2] == 1)
      DoutSetOn(DOUT3)
   if(RxData[2] == 0)
      DoutSetOff(DOUT3)
}

Y desde MatLab enviar lo siguiente para activar las salidas DOUT1 a DOUT3:

Código: (MatLab) [Seleccionar]
%    Data[0] = 0           // LSB
%    Data[1] = 0
%    Data[2] = 0
%    Data[3] = 0           // MSB
%    Data[4] = 2           // Proto version
%    Data[5] = 0xFA      // type
%    Data[6] = 7           // Argument size 1 byte + 6 bytes
%    Data[7] = 0
%    Data[8] = 6           // Código de comando (UdpRx())
%    Data[9] = 6           // Argument size Cmd UdpRx Arg. Size (6 bytes)
%    // Set data values.
%    Data[9+1] = 1       // Value 1
%    Data[9+2] = 1       // Value 2
%    Data[9+3] = 1       // Value 3
%    Data[9+4] = 1       // Value 4
%    Data[9+5] = 1       // Value 5
%    Data[9+6] = 1       // Value 6

Fíjate si en MatLab, el número 0xFA se define así en hexadecimal, sino convertilo a decimal (250).

La librería STX8XXX.DLL tiene algunos mecanismos para insistir cuando el PLC no responde, ya sea por error de red, u otros inconvenientes del protocolo UDP. Pero algo debería detectar el PLC.

¿Otros protocolos como ModBus TCP o TCP, soporta MatLab?.

Saludos!
96
STX8091 / Controlador infrarrojo
« Último mensaje por Esteban E marzo 27, 2019, 19:13:25 pm »
Buenas tarde Ing. Boris: estoy necesitando controlar un aire acondicionado y solo puedo hacerlo por medio del control remoto. Y quería realizarlo mediante el plc.  Para eso quería hacerlo por medio del siguiente modulador.

https://s.click.aliexpress.com/e/5SoB3xw

La idea es tener un tramitador y un receptor para descifrar el código.


Se podrá lograr ? El plc del aire acondicionado esta a 30 metros aproximadamente.


Saludos

Esteban
97
STX8091 / Comunicación al PLC mediante UDP
« Último mensaje por Pedro1 marzo 27, 2019, 16:24:13 pm »
Hola Boris,

Estoy buscando comunicar mi PLC STX8091 con el programa MATLAB mediante el protocolo UDP. Desde el PLC puedo transmitir datos al programa sin ningún problema. A la hora de hacer la recepción de datos desde el PLC tengo ciertos inconvenientes. Revisando el foro, me encontré con que existe el protocolo CSP en el cual es necesario definir ciertos parámetros previos antes de enviar los datos. Desde el MATLAB envié un array de datos como lo indicaste en otra respuesta:
Código: [Seleccionar]
%    Data[0] = 0      // LSB
%    Data[1] = 0
%    Data[2] = 0
%    Data[3] = 0      // MSB
%    Data[4] = 2      // Proto version
%    Data[5] = 0xFA // type
%    Data[6] = 3      // Argument size 1 byte + 2 bytes
%    Data[7] = 0
%    Data[8] = 6    // Código de comando (UdpRx())
%    Data[9] = 2  // Argument size Cmd UdpRx Arg. Size (2 bytes)
%    // Set data values.
%    Data[9+1] = 1       // Value 1
%    Data[9+2] = 55     // Value 2


Al no recibir nada desde el PLC, decidí utilizar un programita muy simple (packet sender) en el que mando los mismos datos y me encuentro con que el mismo PLC responde inmediatamente con datos que no se interpretar. Te adjunto la imagen de esto (por ahí reconoces que tipo de error estoy teniendo o que tipo de mensaje es) y también te muestro a continuación el código utilizado para recibir los datos (tomado de la nota de aplicación AN001).

Código: [Seleccionar]
// Crear array de 4 celdas para almacenar una dirección IP.
 new RxIP[4]
 // Crear variable para almacenar un valor de puerto UDP.
 new RxPort
 // Crear array de 2 celdas para almacenar los datos recibidos.
 new RxData[2]
PlcMain()
{

   // Inicializar rutinas Virtual-HMI.
   VirtualHmiInit()

 // Comprobar si el buffer tiene nuevos datos sin leer.
 if(UdpRxBufIsEmpty() == 0)
 {
   // Leer 6 bytes del array y almacenarlos en RxData[].
   UdpRxDataRead(RxData, 0, 2, false)
   // Imprimir solo los 3 primeros bytes almacenados.
   nLcdPrintf(0,0,0,"Rx %03d %03d %03d ", RxData[0], RxData[1])
   LedToggle()
   DoutToggle(DOUT1)
 }

      DelayMS(500)
     
}

Desde ya, muchas gracias!

Saludos.
98
STX8091 / Re:Consulta modo PLC y soft en C#
« Último mensaje por Soporte marzo 26, 2019, 20:57:09 pm »
Ok Boris,

Teniendo un dispositivo en modo PLC (STX8091-d2)... un programa en c# en una pc de que forma puede acceder al valor de una entrada analógica (supongamos voltaje), y de una entrada digital?...

He intentado leer directamente el valor mediante las sentencias

Código: [Seleccionar]
// Establecer rango de 0-10V para canal VIN1 (llamar una sola vez para configurar).
PioBoard.Cmd.Vin.SetRange(VinCh.Vin1,
VinVoltRange.Unipolar_10V);
// Variable donde se almacenara el voltage de la entrada analogica.
float Voltage;
// Leer entrada analogica Vin1 y almacenar resultado en "Voltage".
PioBoard.Cmd.Vin.ReadVoltage(VinCh.Vin1, out Voltage);
textBox1.Text = Convert.ToString(Voltage);

Esas funciones que utilizás pertenecen al modo DAQ, como lo dicho anteriormente, son para otro modo diferente al modo PLC.

La nota de aplicación AN001 explica como transmitir/recibir datos por UDP desde el PLC.

También el ejemplo para leer memoria EEPROM que te había pasado puede usarse como base para obtener datos del PLC, y luego convertir esos datos a valores de variables.

El ejemplo 2 de la nota de aplicación AN001 te muestra de forma simple como recibir la cadena "Hola!" en C# desde el PLC.

Partiendo del ejemplo mencionado como referencia, en el PLC se transmite:

Código: (Pawn) [Seleccionar]
   Data[0] = 'H'
   Data[1] = 'o'
   Data[2] = 'l'
   Data[3] = 'a'
   Data[4] = '!'

Si eso lo cambiás por valores, por ejemplo, transmitir un entero de 32-bits, en 4 bytes:

Código: (Pawn) [Seleccionar]
   new Entero=335435

   Data[0] = Entero & 0xFF
   Data[1] = (Entero >> 8) & 0xFF
   Data[2] = (Entero >> 16) & 0xFF
   Data[3] = (Entero >> 24) & 0xFF

Al recibirlos en la computadora (ver ejemplo 2 de AN001), en C# podes decodificarlo luego con:

Código: (C#) [Seleccionar]
Int32 ValueInteger = BitConverter.ToInt32(Packet, 0);
Y al imprimir 'ValueInteger', deberías ver el valor transmitido "335435".

Si es un float, el procedimiento es similar, ya que son 32-bits o 4-bytes también:

Código: (Pawn) [Seleccionar]
   new Float: Value=18.54

   Data[0] = Value & 0xFF
   Data[1] = (Value >> 8) & 0xFF
   Data[2] = (Value >> 16) & 0xFF
   Data[3] = (Value >> 24) & 0xFF

Al recibirlos, en C# podes decodificarlo luego con:

Código: (C#) [Seleccionar]
float Value = BitConverter.ToSingle(Packet, 0);
Y al imprimir 'Value', deberías ver el valor transmitido "18.54".

Te recomiendo ver el código del ejemplo para leer memoria EEPROM, allí desde C#, decodifica datos recibidos desde el PLC en variables float, int, etc.

Saludos!

PD: UDP se recomienda como protocolo para aplicaciones en que los dispositivos están en la misma red Ethernet física.
99
STX8091 / Re:Consulta modo PLC y soft en C#
« Último mensaje por Soporte marzo 26, 2019, 20:32:16 pm »
Cuales serían las funciones que si soporta el modo PLC...

Quiero comentarte que los programas de prueba de la nota de ap 001 funcionan ambos...

Las funciones del manual en modo DAQ, son para el modo DAQ, no van a funcionar en modo PLC.

Las que funcionan en ambos, son aquellas informativas, como por ejemplo leer el número de serie, o comandos genéricos, como resetear el dispositivo, etc. Pero no creo que las estés utilizando.
100
STX8091 / Re:Consulta modo PLC y soft en C#
« Último mensaje por Mariano marzo 26, 2019, 13:40:19 pm »
Algunas funciones que no son especificas al modo DAQ, si funcionan en ambos modos.

Cuales serían las funciones que si soporta el modo PLC...

Quiero comentarte que los programas de prueba de la nota de ap 001 funcionan ambos...

Saludos
Páginas: 1 ... 8 9 [10]