Mensajes recientes

Páginas: [1] 2 3 ... 10
1
STX8091 / Re:No Abre el programa.
« Último mensaje por Tama enero 02, 2019, 23:16:45 pm »
gracias Boris, el programa anduvo muy bien y ya recibí el Plc.
Saludos
 Eduardo
2
STX8091 / Re:No Abre el programa.
« Último mensaje por Soporte diciembre 27, 2018, 16:44:45 pm »
hola Boris, al querer abrir el proyecto, me pone el siguiente mensaje:
Error al abrir el programa.
El proyecto no puede ser cargado.
Verifique que exista el proyecto y no este dañado.

Buenas tardes. Si, el archivo principal del proyecto tiene "0 bytes", eso quiere decir que no tiene información. Por algún motivo está dañado (ya sea porque se apagó la computadora, corte energético, error en Windows, etc).

Los archivos de código están, te los pude recuperar, fíjate en el proyecto que te adjunto.

Sin embargo, las variables definidas se perdieron, porque las contiene el archivo principal.

Al compilar te da los siguientes errores:



Fijate que si hacés doble click en el error, te lleva al componente que requiere la variable que no "está definida".

Simplemente volvé a definir las variables que te pide y debería solucionarse.

Es importante hacer un backup cada tanto del proyecto desde menú "Archivo > Crear backup del proyecto (zip)" y guardarlo en un lugar seguro para no perder el trabajo en estos casos.

Saludos!
3
STX8091 / No Abre el programa.
« Último mensaje por Tama diciembre 27, 2018, 16:23:58 pm »
hola Boris, al querer abrir el proyecto, me pone el siguiente mensaje:
Error al abrir el programa.
El proyecto no puede ser cargado.
Verifique que exista el proyecto y no este dañado.
Te adjunto el proyecto, tiene el mismo nombre que el ejemplo de slicetex pero es otro.
Fijate si se puede abrir, sino tendré que comenzar de cero. :'(
Gracias
4
STX8091 / Re:Puerto Serie y RS-485 (no ModBus)
« Último mensaje por Soporte diciembre 27, 2018, 11:27:42 am »
Te hago una consulta más: Si yo configuro el puerto con  SerialInit(9600, SERIAL_INTERFACE_RS485), me genera un conflicto si después además inicio un cliente modbus con MbRtuClInit(9600, SERIAL_8N1, 10, MB_RTU_INTERFACE_RS485) para comunicarme con otros dispositivos?

Buenos días.

Si, vas a tener conflictos. Ya que por un lado ModBus RTU Master, cuando transmite automáticamente activa el transmisor RS-485 y luego espera un tiempo para recibir repuesta del esclavo activando el receptor RS-485. Esto es por protocolo, manejando tiempos muy precisos para no perder una repuesta.

También internamente activa algunos flags para procesar de forma diferente los bytes que recibe el puerto.

No lo he probado con ambos al mismo tiempo ya que seria incompatible para un buen funcionamiento,

Sin embargo podes hacer la prueba.

En ese caso solo utilizá solo MbRtuClInit(9600, SERIAL_8N1, 10, MB_RTU_INTERFACE_RS485) para incializar la interfaz.

Primero pedí los datos a los dispositivos compatible con ModBus esclavo.

Luego, activa el transmisor RS-485, transmití los datos al que tenga el protocolo diferente con las funciones del puerto serie y finalmente activa el receptor RS-485.

No es tanto el tema de la transmisión, sino al recibir los bytes, ya que lo puede interpretar como ModBus la librería, o dejar algunos "byte reciduales" en el buffer que luego los procese erróneamente.

Fíjate de probar así por separado, contemplando errores, a lo mejor si es algo simple, te funcione.

Saludos!
5
STX8091 / Re:Puerto Serie y RS-485 (no ModBus)
« Último mensaje por martinj diciembre 27, 2018, 10:13:22 am »
Hola Boris:
Anduvo perfecto, muchas gracias.
Te hago una consulta más: Si yo configuro el puerto con  SerialInit(9600, SERIAL_INTERFACE_RS485), me genera un conflicto si después además inicio un cliente modbus con MbRtuClInit(9600, SERIAL_8N1, 10, MB_RTU_INTERFACE_RS485) para comunicarme con otros dispositivos?

Saludos
Martín
6
PD3060-PT100 / Re:Conectar tres o más módulos PD3060-PT100 al PLC
« Último mensaje por Soporte diciembre 25, 2018, 20:44:24 pm »
Ejemplo para utilizar el cliente ModBus RTU del PLC para leer tres módulos PD3060-PT100 (hasta 18 sensores PT100).



La finalidad de este ejemplo es mostrar como conectar tres módulos PD3060-PT100 para leer mayor cantidad de sensores PT100, pero el ejemplo se puede extender a mayor cantidad de módulos siguiendo el mismo concepto con pequeñas modificaciones.

La cantidad de módulos a conectar esta limitado por la capacidad de bus RS-485, normalmente 32.

Para conectar tres o más módulos, primero debe asegurarse que todos tengan diferentes direcciones ModBus, la misma puede cambiarse utilizando el siguiente ejemplo Pawn:

PT100_PD3060_Pawn4.zip

Primero conecte un solo módulo al bus RS-485 y cambie la dirección ModBus RTU.

Nota: Si compró los módulos con diferentes direcciones asignadas por Slicetex, el paso de cambio de dirección no es necesario.

Cuando tenga todos los módulos con diferentes direcciones, conecte los módulos en la red RS-485 como muestra el siguiente diagrama:

PD3060-PT100-PLC_DIAGRAM_X_MODULES.pdf

Finalmente cargue el ejemplo para tres módulos al PLC:

PT100_PD3060_Pawn5.zip

La visualización de temperaturas de los sensores PT100 conectados se muestra en Virtual-HMI.

¡Que tengan buenas mediciones!   ;)

IMPORTANTE:

Antes de conectar dos módulos, asegúrese de entender el funcionamiento de uno solo, para ello lea la hoja de datos.
7
StxLadder - Slicetex Ladder Designer Studio / Especificar voltaje en salida analógica
« Último mensaje por Soporte diciembre 24, 2018, 12:42:53 pm »
Con la última versión de StxLadder (1.9.6 o superior) y de firmware para modelo STX8091 (219 o superior) es posible especificar un valor de voltaje en la salida analógica (0 a 10V) en vez de utilizar el valor digital (0 a 1023).

La nueva función se llama VoutWriteVolt(Ch, Volts), donde Ch es el canal (1 para VO1) y Volts es el voltaje a establecer en la salida (0 a 10) en punto flotante.

Ejemplo

Código: (Pawn) [Seleccionar]
// Especificar 2.5 volts en canal 1 de salida analógica (VO1):
VoutWriteVolt(1, 2.5)

Es posible que el valor real difiera algunas décimas del valor especificado por las tolerancias en el hardware, pero le permitirá crear programas más simples.

Adjuntamos ejemplo de rampa lineal con salida analógica.

¡Felices fiestas y buen comienzo de 2019!

 8)
8
STX8091 / Re:Puerto Serie y RS-485 (no ModBus)
« Último mensaje por martinj diciembre 24, 2018, 12:16:49 pm »
Fantástico! Muchas gracias. El miércoles mismo lo pruebo y te aviso por acá como anduvo.
Saludos
9
STX8091 / Re:Puerto Serie y RS-485 (no ModBus)
« Último mensaje por Soporte diciembre 24, 2018, 12:10:54 pm »
Buenos días!

Ya está listo la actualización para utilizar RS-485 sin protocolo ModBus.

Necesitás StxLadder versión 1.9.6 (o superior) y actualizar el STX8091 con la versión 219 de firmware (o superior).



Con la actualización podes transmitir y recibir por RS-485 libremente utilizando las funciones existentes para el puerto serie.

Abajo en los archivos .ZIP te paso ejemplos listos para utilizar.

Las funciones nuevas son:

SerialInit(BaudRate, Interface):
Inicializa el puerto serie a la velocidad "BaudRate" y admite el tipo de "Interface" (constantes válidas:  SERIAL_INTERFACE_RS232  o SERIAL_INTERFACE_RS485)

Ejemplo:

Código: (Pawn) [Seleccionar]
   // Inicializar Serial Port, protocolo (9600 bps, 8N1) e interfaz RS-485.
   SerialInit(9600, SERIAL_INTERFACE_RS485)

Nota: Se puede utilizar simplemente SerialInit(BaudRate) para inicializar y utilizar interfaz RS-232 por defecto.

SerialRs485SelectRx():
Selecciona receptor en interfaz RS-485, debe ser llamado para poder escuchar bytes en el bus RS-485. Si hay bytes pendientes de envío, espera que se envíen todos los bytes antes de activar.

SerialRs485SelectTx():
Selecciona transmisor en interfaz RS-485, debe ser llamado para poder transmitir bytes en el bus RS-485.



Como el PLC dispone de una interfaz RS-485 Half-Duplex, solo puede enviar o recibir por vez, pero no ambos al mismo tiempo.

Por ello, antes de transmitir debe seleccionar el transmisor RS-485 con la función SerialRs485SelectTx() y luego para recibir o escuchar bytes debe seleccionar antes el receptor con SerialRs485SelectRx().

Las funciones de puerto serie funcionan igual que para RS-232, salvando lo comentado en el párrafo anterior.



Ejemplo (ver adjuntos para descargar proyecto completo):

Código: (Pawn) [Seleccionar]
PlcMain()
{
   new RxByte

   // Inicializar rutinas Virtual-HMI.
   VirtualHmiInit()
   
   // Inicializar Serial Port, protocolo (9600 bps, 8N1) e interfaz RS-485.
   SerialInit(9600, SERIAL_INTERFACE_RS485)

   //
   // Loop principal del programa.
   //
   
   while(1)
   {
      //
      // Seleccionar transmisor en interfaz RS-485.
      //
     
      SerialRs485SelectTx()     
     
      // Enviar caracteres: 'H', 'o', 'l', 'a', '!'
      SerialSendByte('H')
      SerialSendByte('o')
      SerialSendByte('l')
      SerialSendByte('a')
      SerialSendByte('!')
     
      //
      // Seleccionar receptor en interfaz RS-485.
      //
     
      SerialRs485SelectRx()
     
      // Obtener todos los bytes recibidos en el buffer de recepción del puerto serie.
      while((RxByte = SerialGetByte()) != -1)
      {
         // Imprimir el valor de los bytes en el Virtual-HMI.
         nLcdPrintf(0, 1, LCD_CLRLINE, "Rx %c (%03d)", RxByte, RxByte)
      }
     
      // Generar un retardo de 1000 mS antes de volver a repetir operación.
      DelayMS(1000)
      LedToggle()
   }
}


El ejemplo envía 5 bytes cada 1 segundos que contienen los carácteres "Hola!" y luego comprueba si hay bytes recibidos en el buffer para imprimirlos en Virtual-HMI.

Puede probar este ejemplo con un software terminal instalado en una computadora (por ejemplo con el programa PuTTY) y un conversor RS-485 a USB conectado entre el PLC y la computadora.

El terminal debería mostrar cada 5 segundos la cadena "Hola!".

Captura de terminal PuTTY con Virtual-HMI



Conexionado de PLC a Computadora con conversor RS-485




Saludos!



BONUS:

También se adjunta otro ejemplo llamado "SerialRs485TxRxEvent.zip", que utiliza eventos del puerto serie. El mismo escucha bytes por RS-485 y los retransmite al recibirlos, permitiendo teclear desde un terminal y ver los carácteres al mismo tiempo (retransmite el PLC). Al utilizar eventos, no es necesario detener el programa para esperar bytes.





10
STX8091 / Re:Puerto Serie y rs485 (no modbus)
« Último mensaje por martinj diciembre 21, 2018, 11:05:01 am »
Muchas Gracias  :)
Páginas: [1] 2 3 ... 10