Mensajes recientes

Páginas: 1 ... 8 9 [10]
91
STX8180 / Re:Reinicio de 8180 al utilizar VirtualHMI
« Último mensaje por Soporte agosto 19, 2022, 20:24:56 pm »
Buenas tardes Miguel,

El error que muestra el SYSLOG:

Código: (SYSLOG) [Seleccionar]
DESC   : Watchdog del sistema reiniciando dispositivo. Flags: 0x0022 (PAWN_NACK ETH_NACK )
Se debe a que una tarea (task) dentro del PLC queda bloqueada, task PAWN_NACK (la que corre el programa) y la task ETH_NACK (la que se encarga de comunicaciones Ethernet), por lo tanto, el PLC decide reiniciarse al activarse el Watchdog.

VirtualHMI utiliza protocolo UDP para comunicación, para la cual, desde el PLC se da la orden de inmediato para enviar los datos al utilizar nLcdPrintf() para imprimir el texto en VirtualHMI.

Si se llama a nLcdPrintf() dentro del loop principal o desde un timer muy seguido, menor a 0.8 segundos, puede pasar que se bloqueé la task de comunicaciones ETH_NACK. Sin embargo para tiempos mayores es muy raro. Este es un bug que tenemos que solucionar.

Esto no ocurre con las comunicaciones que utilizan TCP, como observar los datos utilizando página web, utilizar protocolo ModBus TCP, etc.

Ejemplo:

Código: (Pawn) [Seleccionar]
   for(;;)
   {
      // Leer voltaje de entradas VIN (canales VIO).
      Voltage1 = Float: VinReadVolt(1)
      Voltage2 = Float: VinReadVolt(2)
      Voltage3 = Float: VinReadVolt(3)
      Voltage4 = Float: VinReadVolt(4)

     
      // Mostrar en Virtual-HMI.
      nLcdPrintf(0, 0, LCD_CLRALL, "Voltage1 = %f [V]", Voltage1)
      nLcdPrintf(0, 1, LCD_NONE, "Voltage2 = %f [V]", Voltage2)
      nLcdPrintf(0, 2, LCD_NONE, "Voltage3 = %f [V]", Voltage3)
      nLcdPrintf(0, 3, LCD_NONE, "Voltage4 = %f [V]", Voltage4)
     
      // Pausar 1000 mS.
      DelayMS(1000)   
   }

Sin embargo, estoy probando tu programa, con DelayMS(1000), es decir un segundo, y no tengo reinicio de watchdog.

Si lo coloco en 1 mS, con el código comentado DelayMS(1), si tengo reinicio.

¿Te sigue pasando cuando lo utilizás con delay de un segundo o habrás estado mezclando la prueba con el delay de 1 mS?



PD:

El siguiente código en tu proyecto no es correcto:

VioSetVinAdcRate(5, VIO_VIN_ADC_RATE_400_KSPS)

Debe utilizarse en el primer argumento el valor "1", que especifica el número de ADC (Analog to Digital Converter) interno a modificar. Para el STX8180 hay un solo ADC común a todos los canales VIO (está multiplexado).

Por lo tanto el código correcto es:

VioSetVinAdcRate(1, VIO_VIN_ADC_RATE_400_KSPS)

Buen fin de semana.
Saludos!

92
STX8180 / Reinicio de 8180 al utilizar VirtualHMI
« Último mensaje por Miguel Gomez agosto 19, 2022, 13:05:19 pm »
Hola que tal
El 8180 se está reiniciando, observo que esto sucede cuando uso el virtual HMI, si uso otro programa que no use el VHMI no sucede. Estuve haciendo pruebas de lectura de una variables de voltaje y queria observarlo en el VHMI para mis anotaciones, el programa que usé lo adjunto.

Observaba que el valor en el VHMI parpadeaba, cambie el delay a un valor de 5 segundos pero sucedia lo mismo..de hecho si desconectaba los voltajes de los canales,  seguia obervando el valor de voltaje simulado en el VHMI y despues de unos segundos se actualizaba (de que yano tenia conectado el simulador).  Adjunto el log de sistema.   

gracias por su ayuda en diagnostico
93
STX8180 / Re:Inicializar canales VIO como VDOUT - VDIN - COUT - CIN - VOUT - VIN
« Último mensaje por rodegsa agosto 18, 2022, 06:13:50 am »
 :)

Muchas gracias por la info

Saludos cordiales
94
STX8180 / Re:Inicializar canales VIO como VDOUT - VDIN - COUT - CIN - VOUT - VIN
« Último mensaje por Soporte agosto 17, 2022, 21:18:40 pm »
Si está utilizando entradas de corriente CIN o de voltaje VIN para leer sensores, hay una nueva función útil para escalar valores llamada MathScale() que permite convertir a valores de ingeniería (temperatura, presión, humedad, caudal, etc):

MathScale(InValue, InMin, InMax, OutMin, OutMax)

Descripción:

Escala el valor de entrada InValue entre los límites de entrada InMin e InMax, a un rango de salida definido por los parámetros OutMin y OutMax.

Ejemplo:

Supongamos que tiene el valor de voltaje en la variable "InValue" de una entrada VIN, donde, 0V representan 10 °C, mientras que 5V representan 85 °C, entonces, para obtener temperatura:

Código: (Pawn) [Seleccionar]
Temperatura = MathScale(InValue, 0, 5, 10, 85)

Cualquier valor de InValue entre 0 y 5 será escalado proporcionalmente entre 10 y 85, y será guardado en la variable Temperatura.

Ahora supongamos que tiene el valor de corriente en la variable "InValue" de una entrada CIN, donde, 4 mA representan 10 °C, mientras que 20 mA representan 85 °C, entonces, para obtener temperatura:

Código: (Pawn) [Seleccionar]
Temperatura = MathScale(InValue, 4, 20, 10, 85)

Cualquier valor de InValue entre 4 y 20 será escalado proporcionalmente entre 10 y 85, y será guardado en la variable Temperatura.
95
STX8180 / Re:Inicializar canales VIO como VDOUT - VDIN - COUT - CIN - VOUT - VIN
« Último mensaje por Soporte agosto 17, 2022, 21:13:56 pm »
Para leer temperatura con el modelo A4, también hay ejemplos en la página mencionada:

https://www.slicetex.com/hw/stx8180/examples/RtdRead1.zip

Ver nota de aplicación AN035 para detalles sobres los sensores RTD:

http://slicetex.com/docs/an/an035/index.php
96
STX8180 / Re:Inicializar canales VIO como VDOUT - VDIN - COUT - CIN - VOUT - VIN
« Último mensaje por Soporte agosto 17, 2022, 20:09:33 pm »
Buenas tardes.

Los ejemplos de inicialización par los canales VIO los puede encontrar en el siguiente link:

https://www.slicetex.com/hw/stx8180/examples.php#Pawn

Antes de inicializar un canal VIO como salida o entrada, verifique que el cableado externo sea correcto, es decir, si está aplicando un voltaje al canal VIO, no lo inicialice como salida, ya que va a generar un corto. En la hoja de datos se explica los límites eléctricos.

En el link de arriba puede acceder a los ejemplos completos, pero le explico en general, a modo rápido, las funciones de inicialización, para que se entienda mejor (pronto actualizaremos el manual con descripciones completas y detalladas).

INICIALIZAR VIO COMO VIN

Función:

VioInitVin(Ch, Type, Range, Samples, ChNeg=0, Float:AnalogValue=0.0)

Descripción:

Inicializa un canal VIO (Voltage Input/Output) como entrada analógica de voltaje VIN (Voltage Input). Luego de configurado el canal VIO como entrada VIN, puede utilizarlas funciones estándar para leer entradas analógicas VIN.

Parámetros:

  • Ch: Especifica el número de canal VIO a inicializar
  • Type: Especifica el tipo de entrada analógica de voltaje. Usar constantes VIO_TYPE_VIN_XXX (ver abajo).
  • Range:  Especifica el rango de voltaje de operación de la entrada analógica. Fuera de estos límites la lectura puede ser errónea. Consulte hoja de datos del dispositivo por límites de voltaje máximos absolutos para evitar daños en el canal VIO.  Usar constantes VIO_VIN_RANGE_XXX (ver abajo).
  • Samples: Especifica la cantidad de muestras a tomar y promediar por el ADC (Conversor Analógico Digital) interno antes de entregar el valor final de la lectura analógica. Esto es muy útil para filtrar pequeños ruidos o perturbaciones en las entradas y obtener así lecturas más estables. La cantidad de muestras a promediar es configurable entre 0 (sin promedio) y 128. El promediado de muestras se hace continuamente de manera independiente sin interferir con el procesador del PLC. Usar constantes VIO_VIN_SAMPLES_XXX(ver abajo).
  • ChNeg: Especifica el número de canal VIO que actuará como entrada negativa (-) en caso de que el tipo de entrada VIN sea configurada como VIN_POS (entrada positiva (+) de voltaje diferencial). Para otras configuraciones, este valor debe ser cero.
  • AnalogValue: Especifica el valor de voltaje que se aplicará a la entrada pseudo-diferencial negativa (-) cuando el tipo de entrada VIN es configurada como VIN_NEG_VOUT. Este voltaje es generado por el DAC (Conversor Digital Analógico) interno, y debe estar dentro del rango de voltaje especificado en el parámetro Range.

CONSTANTES VIO_TYPE_VIN_XXX:

VIO_TYPE_VIN_SINGLE                // Entrada de voltaje simple (single-ended). Más utilizado.
VIO_TYPE_VIN_POS                     // Entrada positiva (+) de voltaje diferencial.
                                                  // Requiere definir el número de canal que se utilizará como entrada negativa (-) en parámetro CH NEG.
VIO_TYPE_VIN_NEG                     // Entrada negativa (-) de voltaje diferencial.
                                                  // Debe configurarse con el mismo rango de voltaje (RANGE) que la entrada positiva (+).

VIO_TYPE_VIN_NEG_VOUT           //  Entrada negativa (-) de voltaje pseudo-diferencial, con valor definido de voltaje fijo.
                                                  // Requiere definir el voltaje a aplicar en el parámetro ANALOG VALUE.
                                                  // Debe configurarse con el mismo rango de voltaje (RANGE) que la entrada positiva (+).

CONSTANTES VIO_VIN_RANGE_XXX:

VIO_VIN_RANGE_0V_10V            // Input range: 0V to 10V
VIO_VIN_RANGE_N5V_5V            // Input range: +/-5V
VIO_VIN_RANGE_N10V_0V          // Input range: -10V to 0V
VIO_VIN_RANGE_0V_2_5V          // Input range: 0V to 2.5V

CONSTANTES VIO_VIN_SAMPLES_XXX:

VIO_VIN_SAMPLES_NONE           // No samples average.
VIO_VIN_SAMPLES_0                 // No samples average.
VIO_VIN_SAMPLES_2                 // 2 samples for average.
VIO_VIN_SAMPLES_4                 // 4 samples for average.
VIO_VIN_SAMPLES_8                 // 8 samples for average.
VIO_VIN_SAMPLES_16               // 16 samples for average.
VIO_VIN_SAMPLES_32               // 32 samples for average.
VIO_VIN_SAMPLES_64               // 64 samples for average.
VIO_VIN_SAMPLES_128             // 128 samples for average.

Ejemplo:

Código: (Pawn) [Seleccionar]
   
   // Canal VIO1: Entrada de voltage simple, alias VIN1.
   // Rango 0V a 10V.
   // Promedio por hardware: 128 muestras.
   VioInitVin(1, VIO_TYPE_VIN_SINGLE, VIO_VIN_RANGE_0V_10V, VIO_VIN_SAMPLES_128)

Completo:

https://www.slicetex.com/hw/stx8180/examples/VinPawn1.zip

INICIALIZAR VIO COMO CIN

Función:

VioInitCin(Ch, Type, Range, Samples)

Descripción:

Inicializa un canal VIO (Voltage Input/Output) como entrada analógica de corriente CIN (Current Input). Luego de configurado el canal VIO como entrada VIN, puede utilizarlas funciones estándar para leer entradas analógicas CIN.

Parámetros:

  • Ch: Especifica el número de canal VIO a inicializar
  • Type: Especifica el tipo de entrada analógica de corriente. Usar constante VIO_TYPE_CIN.
  • Range:  Especifica el rango de voltaje de operación de la entrada analógica. Fuera de estos límites la lectura puede ser errónea. Consulte hoja de datos del dispositivo por límites de voltaje máximos absolutos para evitar daños en el canal VIO. Utilizar constante VIO_CIN_RANGE_DEFAULT.
  • Samples: Especifica la cantidad de muestras a tomar y promediar por el ADC (Conversor Analógico Digital) interno antes de entregar el valor final de la lectura analógica. Esto es muy útil para filtrar pequeños ruidos o perturbaciones en las entradas y obtener así lecturas más estables. La cantidad de muestras a promediar es configurable entre 0 (sin promedio) y 128. El promediado de muestras se hace continuamente de manera independiente sin interferir con el procesador del PLC. Usar constantes VIO_CIN_SAMPLES_XXX(ver abajo).

CONSTANTES VIO_CIN_SAMPLES_XXX:

VIO_CIN_SAMPLES_NONE           // No samples average.
VIO_CIN_SAMPLES_0                 // No samples average.
VIO_CIN_SAMPLES_2                 // 2 samples for average.
VIO_CIN_SAMPLES_4                 // 4 samples for average.
VIO_CIN_SAMPLES_8                 // 8 samples for average.
VIO_CIN_SAMPLES_16               // 16 samples for average.
VIO_CIN_SAMPLES_32               // 32 samples for average.
VIO_CIN_SAMPLES_64               // 64 samples for average.
VIO_CIN_SAMPLES_128             // 128 samples for average.

Ejemplo:

Código: (Pawn) [Seleccionar]
   
   // Canal VIO1: Entrada de corriente 0-20 mA, alias CIN1.
   // Rango: 0 a 20 mA (0 a 2.5V).
   // Promedio por hardware: 128 muestras.
   VioInitCin(1, VIO_TYPE_CIN, VIO_CIN_RANGE_DEFAULT, VIO_CIN_SAMPLES_128)

Completo:

https://www.slicetex.com/hw/stx8180/examples/Cin4_20ma_Pawn1.zip

Nota: Hay más ejemplos completos, ver página.

INICIALIZAR VIO COMO VOUT

Función:

VioInitVout(Ch, Type, Range, Float:Voltage=0.0)

Descripción:

Inicializa un canal VIO (Voltage Output/Output) como salida analógica de voltaje VOUT (Voltage Output).
Luego de configurado el canal VIO como salida VOUT, puede utilizar las funciones estándar para leer salidas analógicas VOUT

Parámetros:

  • Ch: Especifica el número de canal VIO a inicializar
  • Type: Especifica el tipo de salida analógica de voltaje. Ver constantes VIO_TYPE_VOUT_XXX abajo.
  • Range:  Especifica el rango de voltaje de la salida analógica. Ver constantes VIO_VOUT_RANGE_XXX abajo.
  • Voltage: Especifica el valor de voltaje inicial que se aplicará en la salida analógica. Debe estar dentro del rango de voltaje especificado en parámetro RANGE.

CONSTANTES VIO_TYPE_VOUT_XXX:

VIO_TYPE_VOUT                // Salida de voltaje.
VIO_TYPE_VOUT_MON        // Salida de voltaje con monitoreo.

CONSTANTES VIO_VOUT_RANGE_XXX:

VIO_VOUT_RANGE_0V_10V       // Output range: 0V to 10V
VIO_VOUT_RANGE_N5V_5V       // Output range: +/-5V
VIO_VOUT_RANGE_N10V_0V     // Output range: -10V to 0V

Ejemplo:

Código: (Pawn) [Seleccionar]
   
   // Canal VIO5: Salida de voltage, alias VOUT5.
   // Rango: 0 a 10V.
   // Voltaje inicial: 0V
   
   VioInitVout(5, VIO_TYPE_VOUT, VIO_VOUT_RANGE_0V_10V, 0)

Completo:

https://www.slicetex.com/hw/stx8180/examples/VoutPawn1.zip

Nota: Hay más ejemplos completos, ver página.

INICIALIZAR VIO COMO COUT

Función:

VioInitCout(Ch, Type, Float:CurrentMA=0.0, Float:RsValue=0.0, Samples=VIO_COUT_SAMPLES_DEFAULT, ControlRateUS=0)

Descripción:

Inicializa un canal VIO (Voltage Input/Output) como salida analógica de corriente COUT (Current Output).
Luego de configurado el canal VIO como salida COUT, puede utilizar las funciones estándar para escribir salidas analógicas COUT.

Parámetros:

  • Ch: Especifica el número de canal VIO a inicializar
  • Type: Especifica el tipo de salida analógica de corriente. Utilizar constante VIO_TYPE_COUT_RS.
  • CurrentMA:especifica el valor corriente inicial de la salida analógica. El rango de configuración es de 0 a 25 mA en la mayoría de los dispositivos (consulte hoja de datos).
  • RsValue: Especifica el valor en Ohms del resistor externo RS utilizado cuando salida analógica es configurada con TYPE = COUT_RS. Puede variar este valor para calibrar la salida de corriente con un instrumento o amperímetro. Valores habituales están entre 40 y 110 ohms, consulte hoja de datos del dispositivo.
  • Samples: Especifica la cantidad de muestras a tomar y promediar por el ADC (Conversor Analógico Digital) en el canal de realimentación VIO[X+1]. Se recomienda utilizar el valor VIO_COUT_SAMPLES_DEFAULT para la mayoría de las aplicaciones. Puede utilizar un rango de 0 muestras (lecturas más rápidas, mayor velocidad de repuesta en corriente de salida) a 128 muestras (lecturas más lentas, repuesta más lenta en salida de corriente, pero más estable). Ver constantes VIO_COUT_SAMPLES_XXX abajo.
  • ControlRateUS: Especifica el periodo o velocidad de repetición en micro-segundos [uS] del ciclo de control de la salida de corriente. A menor valor, la salida de corriente responde más rápidamente a variaciones de impedancia o ruidos en los cables, pero exige mayor sobrecarga al procesador del PLC. Se recomienda el valor "0" que equivale a utilizar un valor interno por defecto para la mayoría de las aplicaciones.  Valores inferiores a 100 uS no se recomiendan. Valores óptimos están entre 1000 y 50000 uS. Este parámetro es global, es decir, altera a todas las salidas VIO configuradas como COUT.

CONSTANTES VIO_COUT_SAMPLES_XXX:

VIO_COUT_SAMPLES_NONE          // No samples average (1 sample).
VIO_COUT_SAMPLES_0                // No samples average (1 sample).
VIO_COUT_SAMPLES_2                // 2 samples for average.
VIO_COUT_SAMPLES_4                // 4 samples for average.
VIO_COUT_SAMPLES_8                // 8 samples for average.
VIO_COUT_SAMPLES_16              // 16 samples for average.
VIO_COUT_SAMPLES_32              // 32 samples for average.
VIO_COUT_SAMPLES_64              // 64 samples for average.
VIO_COUT_SAMPLES_128            // 128 samples for average.
VIO_COUT_SAMPLES_DEFAULT     // 128 samples for average.

Ejemplo:

Código: (Pawn) [Seleccionar]
   
   // Canal VIO1: Salida de corriente, alias COUT1.
   // Rango: 0 a 20 mA.
   // Corriente inicial: 0 mA.
   // Resistor externo RS: 51 ohms.
   // Samples: Usar valor por defecto para promediado.
   // Tasa/período de control: 0 (usar valor interno por defecto)
   //
   // Nota[1]: Conectar con resistor externo RS a VIO2.
   // Nota[2]: Se puede cambiar corriente de este canal desde teclado numérico en VirtualHMI.
   
   VioInitCout(1, VIO_TYPE_COUT_RS, 0.0, 51.0)

Completo:

https://www.slicetex.com/hw/stx8180/examples/CoutPawn1.zip

Nota: Hay más ejemplos completos, ver página.

INICIALIZAR VIO COMO VDOUT

Función:

VioInitVdout(Ch, Type, Float:HighLevelVoltage=5.0, InitialValue=0, ChVdin=0, Inv=0)

Descripción:

Inicializa un canal VIO (Voltage Input/Output) como salida digital de voltaje VDOUT (Voltage Digital Output). Este tipo de salidas le permite escribir dos estados en una salida, alto ("1" lógico) o bajo ("0" lógico). Luego de configurado el canal VIO como salida VDOUT, puede utilizar las funciones estándar para escribir salidas digitales VDOUT.

Parámetros:

  • Ch: Especifica el número de canal VIO a inicializar
  • Type: Especifica el tipo de salida digital de voltaje:. Utilizar constantes VIO_TYPE_VDOUT_XXX, ver abajo.
  • HighLevelVoltage: Especifica el valor de voltaje para un nivel alto (uno lógico) de la salida. El rango de configuración es de 0V a 10V en la mayoría de los dispositivos (consulte hoja de datos).
  • ChVdin: Especifica el número de canal VIO configurado como entrada digital con el tipo "VDIN_FAST" que será utilizado en combinación con esta salida digital configurada con TYPE = VDOUT_LEVEL_TRANSLATOR.
  • Inv: Especifica si la salida digital tiene lógica invertida (1) o no (0). Solo aplicable cuando TYPE = VDOUT_LEVEL_TRANSLATOR.

CONSTANTES VIO_TYPE_VDOUT_XXX:

VIO_TYPE_VDOUT                                   //  Salida digital de voltaje (VDOUT).
VIO_TYPE_VDOUT_LEVEL_TRANSLATOR   // Salida digital de voltaje para traductor de nivel (para usar con VIO_TYPE_VDIN_FAST)

Ejemplo:

Código: (Pawn) [Seleccionar]
   
   // Canal VIO6: Salida de voltaje digital, alias VDOUT6.
   // Valor analógico para nivel alto: 5V
   // Valor digital inicial: HIGH (1, alto). Puede ser también LOW (0, bajo).
   // Canal utilizado en conjunto con una entrada del tipo VDIN_FAST: Ninguno (0).
   // Invertir lógica: 0 (no, solo utilizado cuando TYPE es VIO_TYPE_VDOUT_LEVEL_TRANSLATOR )

   VioInitVdout(6, VIO_TYPE_VDOUT, 5.0, HIGH, 0, NO)

Las salidas digitales VDOUT se pueden utilizar con las constantes VDOUT1, VDOUT2, VDOUT3, etc disponibles en lenguaje Pawn.
Y las funciones para controlar las salidas VDOUT1, VDOUT2, VDOUT3, etc, tienen el mismo nombre que para controlar las salidas DOUT (DOUT1, DOUT2, DOUT3, etc), solo que se agrega la letra "V" como prefijo, por ejemplo:

VDoutSetOn(VDOUT)
VDoutSetOff(VDOUT)
VDoutToggle(VDOUT)
VDoutGetState(VDOUT)
etc

Por ejemplo:

Poner en nivel alto la salida VDOUT6:

Código: (Pawn) [Seleccionar]
VDoutSetOn(VDOUT6)   // Activa o pone en nivel alto salida VDOUT6.

Para controlar cargas de potencias con las salidas VDOUT de los canales VIO, ver siguiente post:

http://foro.slicetex.com/index.php?topic=515.0

INICIALIZAR VIO COMO VDIN

Función:

VioInitVdin(Ch, Type=VIO_TYPE_VDIN, Float:HighLevelVoltage=2.5, Samples=VIO_VDIN_SAMPLES_NONE)

Descripción:

Inicializa un canal VIO (Voltage Input/Output) como entrada digital de voltaje VDIN (Voltage Digital Input). Este tipo de entradas le permite leer dos estados presentes en una entrada, alto ("1" lógico) o bajo ("0" lógico). Luego de configurado el canal VIO como entrada VDIN, puede utilizar las funciones estándar para leer entradas digitales VDIN.

Parámetros:

  • Ch: Especifica el número de canal VIO a inicializar
  • Type: Especifica el tipo de entrada digital de voltaje:. Utilizar constantes VIO_TYPE_VDIN_XXX, ver abajo.
  • HighLevelVoltage: Especifica el valor de voltaje o "nivel de disparo" a partir del cual se considera que en la entrada hay un "1" lógico presente. Se recomienda colocar por debajo del voltaje mínimo esperado, dando cierto margen, un valor de compromiso para evitar perder lecturas y al mismo tiempo evitar falsos disparos.
  • Samples: Este parámetro es solo para entradas TYPE=VDIN, especifica la cantidad de muestras a tomar y promediar por el ADC (Conversor Analógico Digital) interno antes de entregar el valor final de la lectura digital. Esto es muy útil para filtrar pequeños ruidos o perturbaciones en las entradas y obtener así lecturas más estables. La cantidad de muestras a promediar es configurable entre 0 (sin promedio) y 128. El promediado de muestras se hace continuamente de manera independiente sin interferir con el procesador del PLC. Ver constantes VIO_VDIN_SAMPLES_XXX abajo.

CONSTANTES VIO_TYPE_VDIN_XXX:

VIO_TYPE_VDIN                     // Entrada digital de voltaje (0V a 10V).
VIO_TYPE_VDIN_FAST            // Entrada digital de voltaje rápida (0V a 5V, no pasar límite).

CONSTANTES VIO_VDIN_SAMPLES_XXX :

VIO_VDIN_SAMPLES_NONE          // No samples average (1 sample).
VIO_VDIN_SAMPLES_0                // No samples average (1 sample).
VIO_VDIN_SAMPLES_2                // 2 samples for average.
VIO_VDIN_SAMPLES_4                // 4 samples for average.
VIO_VDIN_SAMPLES_8                // 8 samples for average.
VIO_VDIN_SAMPLES_16              // 16 samples for average.
VIO_VDIN_SAMPLES_32              // 32 samples for average.
VIO_VDIN_SAMPLES_64              // 64 samples for average.
VIO_VDIN_SAMPLES_128            // 128 samples for average.

Ejemplo:

Código: (Pawn) [Seleccionar]
   
   // Canal VIO2: Entrada de voltaje digital, alias VDIN2.
   // Tipo de entrada digital: VDIN
   // Valor analógico para disparo de nivel alto: 4.5V
   // Samples: Utilizar un promedio de 128 muestras como filtro para la lectura.

   VioInitVdin(2, VIO_TYPE_VDIN, 4.5, VIO_VDIN_SAMPLES_128)

Las salidas digitales VDIN se pueden utilizar con las constantes VDIN1, VDIN2, VDIN3, etc disponibles en lenguaje Pawn.
Y las funciones para leer las entradas VDIN1, VDIN2, VDIN3, etc, tienen el mismo nombre que para leer las entradas DIN (DIN1, DIN2, DIN3, etc), solo que se agrega la letra "V" como prefijo, por ejemplo:

VDinRead()
VDinValue(VDIN)
VDinChanged()
etc

Por ejemplo:

Si entrada VDIN2 es igual a "1" activar salida DOUT2, sino desactivar salida VDOUT2:

Código: (Pawn) [Seleccionar]
if(VDinValue(VDIN2) == 1)
{
    DoutSetOn(DOUT2)   // Activar salida.
}
else
{
    DoutSetOff(DOUT2)   // Desactivar salida.
}




Cualquier duda me consulta, especialmente con la parte eléctrica si no se entiende, para evitar daños.

Saludos!
97
STX8180 / Inicializar canales VIO como VDOUT - VDIN - COUT - CIN - VOUT - VIN
« Último mensaje por rodegsa agosto 17, 2022, 17:32:39 pm »
 :)

Hola. Me gustaría saber cómo inicializar los canales VDOUT - VDIN - COUT - CIN - VOUT - VIN - VIO en PAWN según se necesite en el PLC 8180 A4 y algún ejemplo de los mismos.

Desde ya muchas gracias
98
STX8091 / Re:Código de excepción Modbus RTU
« Último mensaje por Soporte agosto 06, 2022, 14:19:07 pm »
Buenas tardes Martin,

Estoy realizando una lectura cada 1 seg de un sensor que funciona por modbus rtu sobre rs485.
En general no hay problema, pero cada un par de minutos devuelve un error en la comunicación que no logro entender:
El retorno de MbRtuClGetLibStatus() es -13 (no figura en la nota AN026).

El error "-13" es "Paquete con CRC inválido" (tendríamos que actualizarlo a la documentación).

Es decir, los datos recibidos en el PLC difieren de los datos enviados por el dispositivo remoto al hacer la comprobación CRC de integridad.

Esto se puede deber a múltiples causas, es cuestión que veas cuál se aproxima más:

  • Velocidad no soportada, o mal configurada por alguno de los dispositivos. Intentar usar la velocidad más baja. Ej. 4800 o 9600
  • Parámetros de conexión inválidos (paridad, bit de stop, etc).
  • Ruido eléctrico. Algún contactor o motor que se active e influya e interfiera en la comunicación. Intentar alejar los cables y mallarlos. Usar par trenzado. Para cableados largos podés usar un cable de red Ethernet que ya viene con pares trenzados y mallado. Podrías probar el sensor y el PLC solos, sin ningún cableado extra, con todos los sistemas externos apagados, para descartar interferencias.
  • Cable muy largo. Intentar bajar la velocidad y usar los resistores de terminación solo en ambos nodos de los extremos (por ejemplo 120 ohms).
  • Otro dispositivo en el bus RS485 que interfiera, conectar solo el que falla y probar.
  • No haber conectado entre ambos equipos el cable de GND de comunicación. RS485 requiere los tres cables.
  • Que el sensor a conectar requiera resistores de polarización. Algunas interfaces viejas RS485 requieren un resistor a +5V (pull-up) y GND (pull-down). Esto es muy raro.
  • Que el sensor envié un CRC erróneo debido a un error interno de software entonces el PLC descarta el paquete.
  • Si tenés varios sensores en el bus RS485, deben conectarse en "daisy-chain", es decir, partís del PLC al equipo A, del equipo A al B, del equipo B al C, y así. Es una sucesión de enlaces. Nunca conectarlos en estrella.

El retorno de MbRtuClGetExceptionCode() toma valores 0x14 y 0x34, que no he podido encontrar en las especificaciones de Modbus ni del

Si el CRC es inválido, el código de excepción no debería tener sentido, ya que el paquete que trae la excepción está corrompido.

Saludos!
99
STX8091 / Código de excepción Modbus RTU
« Último mensaje por martinj agosto 05, 2022, 19:50:08 pm »
Hola:
Estoy realizando una lectura cada 1 seg de un sensor que funciona por modbus rtu sobre rs485.
En general no hay problema, pero cada un par de minutos devuelve un error en la comunicación que no logro entender:
El retorno de MbRtuClGetLibStatus() es -13 (no figura en la nota AN026).
El retorno de MbRtuClGetExceptionCode() toma valores 0x14 y 0x34, que no he podido encontrar en las especificaciones de Modbus ni del sensor.

Tal vez me puedan orientar a donde buscar la especificación de esos códigos.
Muchas gracias!

100
STX8140 / Re:HTTP GET a diferentes IP
« Último mensaje por Soporte julio 29, 2022, 08:34:09 am »
Hola Ing. Boris: estoy teniendo problema para el envio del http get, estara solucionado para el modelo STX8140-A0-R , tengo la version 227 Fimware. Porque no me lo esta generando.

Buenos días Esteban,

¿Podrías brindarme más detalles del tipo de problema o cuándo te lo hace?. ¿Qué código estás utilizando?.

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