Mostrar Mensajes

Esta sección te permite ver todos los mensajes hechos por este usuario, recuerda que solo puedes ver los mensajes en áreas en donde tu tienes acceso.


Mensajes - Soporte

Páginas: [1] 2 3 ... 70
1
STX8092 / Re:control de temperatura y presion en el tiempo
« : mayo 24, 2019, 10:33:21 am »
Hola Boris, cómo estás? Alguna novedad de la implementación PID?

Buenos días. Si, ya prácticamente está listo. Calculamos subir las actualizaciones entre hoy y mañana. Saludos!

2
STX8091 / Re:Parpadeo led pause
« : mayo 17, 2019, 21:08:56 pm »
Me quedo parpadeando cada 1 segundo el led pause como si hubiera ingresado a modo bootloader.

Probe varias secuencias de botones con reset y def/boot pero no puedo sacarlo de ese estado. Ya una vez me habia pasado y me habias pasado la solucion pero no me acuerdo cual era...

Quizás quedó activado el modo bootloader por software, para desactivarlo, desde StxLadder, entrar a menú "PLC > Actualizar Firmware (AxBoot)":



Luego tocar "DESACTIVAR" y finalmente hacer un RESET.

También, si continua, podés intentar actualizar el firmware con el mismo procedimiento, para recuperar el sistema de forma completa.

Si sale del modo y ya no parpadea el led PAUSE, podés programarlo normalmente.

Saludos!

3
STX8092 / Re:control de temperatura y presion en el tiempo
« : mayo 16, 2019, 21:28:23 pm »
Buenas tardes. Estamos cerca de terminar la implementación PID. Le informo novedades por este medio. Gracias por la paciencia.

Saludos!

4
STX810 / Re:Salidas analógicas como digital
« : mayo 16, 2019, 21:24:59 pm »
hola Ing. Boris, seria con el SRX810 + rele RELAY-ST5-5DDG.

Realicé unas pruebas con la salida analógica del PLC, y funciona. Así que no habría problemas utilizando el módulo hasta dónde veo.

En el RELAY-ST5-5DDG, deberías conectar la entrada INPUT (+) al terminal +5D del PLC.
Luego conectar la entrada INPUT (-1) a la salida VO1 analógica del módulo STX810.

De está forma controlás la salida T1 del RELE.
Con valor de VO1=0V activas la salida RELE. Con valor de VO1=5V, apagas la salida RELE.

Avísame si tenés duda.

Saludos!

5
STX810 / Re:Salidas analógicas como digital
« : mayo 16, 2019, 10:40:34 am »
Buenos días Esteban.

¿Sería para comandar desde el módulo STX810 los reles de estado sólido que has comprado?.

Saludos!

6
STX8092 / Re:control de temperatura y presion en el tiempo
« : mayo 09, 2019, 20:53:17 pm »
Hola Boris, tengo un transmisor de 4 a 20 ma para medir presión de 0 a 100psi y tengo una pt100 de 2hilos de 0 a 100°C, la idea es hacerlo con ladder, pero el escalado esta realizado en paw, tiene q comandar válvulas on-off así q estoy usando las salidas de reles. Desde ya muchas gracias

Buenas tardes.

Ok, estamos implementando una librería PID, así que dame por favor un par de días hasta que la terminemos y te paso un ejemplo.

Saludos!

7
STX8091 / Re:Agregar nuevo Cliente PLC al servidor TCP
« : mayo 09, 2019, 20:51:14 pm »
Perfecto!

8
STX8091 / Re:Restricción acceso página webserver (contraseña)
« : mayo 09, 2019, 20:46:17 pm »
Buenas tardes.

Hay un ejemplo aproximado en:

http://www.slicetex.com/docs/an/an030/files/WebServerPawn6.zip

Cargar proyecto en PLC y entrar en la página web, menú "Control".



Va a pedir una clave, si es "1", el parámetro se acepta y te deriva a la página "result.shtml" que podés usar para mostrar información que solo será visible si fue ingresada la clave correctamente.



Ver código en archivo OnPostEvent.p para cambiar la clave:

Código: (Pawn) [Seleccionar]
if(WebServerCheckFieldValueStr("Pwd", "1") == 1)
{
// Clave correcta.
PassOk = 1

// Obtener valor del parametro recibido.
ParamValue = WebServerGetFieldValueInt("Param")
}

Podes cambiar "Pwd", "1" por "Pwd", "myClave" y así especificar la nueva contraseña "myClave".

Si lo que necesitás es hacer que cierta parte de contenido constante HTML en la página "result.shtml" no se muestre, hay que agregar algunas directivas de código CSS y hacer dinámica la página.

Pero fíjate si el ejemplo te sirve, sino vemos con lo otro.

Saludos!

9
STX8091 / Re:Entradas digitales DIN7 y DIN8
« : mayo 09, 2019, 11:10:21 am »
¿Cual es la dificultad del acceso al pcb para cambiar estas resistencias para que DIN7 y DIN8 tengan la misma especificacion electrica que las demás?

Encontre en el foro que la resistencia con la entrada polarizada es de 820 ohm para DIN7 y DIN8 y de 1500 para las otras, ¿la resistencia a cambiar sería por una de 1500?

No hay mucha dificultad, hay que desarmar el PLC, desoldar y volver a soldar una resistencia superficial tipo SMD.

Sería R35 y R37 de la placa inferior, cambiarlas por otra de 4.7 KOhm.



Podes enviar el PLC y lo cambiamos si necesitás.

O cambiarlas por tu cuenta si tenés resistencias SMD.

Podés también soldar una común, de las pequeñas, con mucha paciencia, una de 4.7KOhm (1/4 Watt), cortando los terminales adecuadamente.

Siempre desarmando/armando nuevamente el PLC con cuidado.

Saludos!

10
STX8091 / Re:Entradas digitales DIN7 y DIN8
« : mayo 09, 2019, 10:32:55 am »
Quería saber la razón para que las entradas DIN7 y DIN8 sean distintas a las demás y si tiene alguna solución sencilla para poder utilizar todas las entradas en este contexto.

Buenos días.

Las entradas DIN7 y DIN8 difieren que tienen un resistor de entrada de diferente valor que para el resto de las entradas, esto es necesario para cuando la entrada se utiliza con pulsos de alta velocidad. Si es necesario, este resistor se puede cambiar al mismo valor que el resto de las entradas para que tengan las mismas características de voltaje.

Alternativamente para una compatibilidad absoluta con +5V (y para que siempre funcione), podes utilizar un transistor tipo FET, como el 2N7000. Al drenador (D) lo conectás a la DINx del PLC, al surtidor (S) lo conectás a GND de la fuente, y al gate (G) lo podés gatillar con +5VCC directamente (referido al mismo GND de la fuente que utilizás para las entradas) .

Con el transistor podés conectar DIC+ a 12 o 24 VCC normalmente.

Vienen chips con 8 transistores en un encapsulado, como el ULN2308A.

Saludos!

11
STX8092 / Re:control de temperatura y presion en el tiempo
« : mayo 07, 2019, 18:25:55 pm »
hola boris, como estas? disculpa las molestias, necesito realizar un control de temperatura y presion colocando un setpoint en ambas variables y tambien en el tiempo, me vendria perfecto hacerlo con un control PID, pero no el soft no cuenta con el modulo, podrias darme una mano para realizarlo? estoy trabajando con un stx8092 y una pantalla kinco, desde ya muchas gracias

Buenas tardes.

Coméntame, ¿cómo estás leyendo la temperatura y presión?.

Además, para controlar el sistema, ¿utilizarías una salida relé para modificar la temperatura o presión?.

¿Qué lenguaje estás utilizando?.

Gracias, Saludos!

12
STX8091 / Re:Empaquetado de bytes (convertir a Float)
« : mayo 03, 2019, 19:26:53 pm »
Buenas tardes Pedro,

Frente a esta situación, decidí hacer uso de la función PackBytes(Src[], SrcIdx, Dst[], DstIdx, Count). Lo primero que hice fue probar el ejemplo que se encuentra en el Manual de Programación Pawn del PLC en la pagina 175 y obtengo el siguiente error:

Error del compilador PAWN: PlcMain.p(72) : error 035: argument type mismatch (argument 3)

Ese error lo da porque la función espera que Dst[] sea un array, y en tu programa "Dst" la tenés declarada como variable, si la declaras como array de un solo elemento 'new Dst[1]' el error se va.

Valor=(RxData[8]*(2^24))+RxData[8]*(2^16)+(RxData[5]*(2^7))+RxData[6]

La forma correcta de esa línea de código seria utilizando operaciones de bits, con desplazamientos "<<" y OR's "|", como te muestro a continuación:

Código: (Pawn) [Seleccionar]
Valor=(RxData[8]<<24)|(RxData[7]<<16)|(RxData[6]<<8)|(RxData[5])
Así mismo, para esto existe la función nativa "Float: PackInt16ToFloat(Int16Low, Int16High)" que empaqueta dos variables que contengan cada una un registro de 16-bits y retorna su equivalente Float. Donde Int16Low es el registro ModBus con los dos bytes menos significativos e Int16High es el registro ModBus con los dos bytes más significativos.

Ejemplo:

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

   // Empaquetar/Unir 2 enteros de 16-bits en un Float de 32-bits.
   Value = PackInt16ToFloat(Reg16Low, Reg16High)

Donde Reg16Low es el registro ModBus con los bytes menos significativos y Reg16High el registro con los bytes más significativos.

Si estás leyendo de a Bytes, solo debes empaquetar los bytes para formar dos valores de 16-bits:

Código: (Pawn) [Seleccionar]
   Value = PackInt16ToFloat(((RxData[1]<<8)|(RxData[0])), ((RxData[3]<<24)|(RxData[2]<<16)))
Hay muchas formas de hacer esto, pero te pasé las más directas.

Te adjunto un proyecto que ejemplifica las funciones de conversión de bytes y tipos de datos.

Te recomiendo tener instalada última versión de firmware y software.

Si algo no queda claro, quedo a disposición.

Saludos!

13
STX8091 / Re:Agregar nuevo Cliente PLC al servidor TCP
« : abril 29, 2019, 17:42:42 pm »
Buenas tardes Mariano, paso a contestarte a continuación:

Necesiraría información sobre el evento OnTcpServerRx().
Hay alguna nota de aplicación que explique las funciones disponibles y relacionadas a este evento?

Aquí te paso el link donde están las funciones descriptas:

http://foro.slicetex.com/index.php?topic=165.msg780#msg780

Y dos ejemplos:

http://foro.slicetex.com/index.php?topic=165.msg775#msg775

http://foro.slicetex.com/index.php?topic=165.msg776#msg776

Tengo pendiente crear el PDF en la nota de aplicación.

Aquí (OnTcpServerRx()) entiendo que se procesa la recepción de datos de clientes remotos. Por ahora tengo un sólo cliente y lo que quiero es agregar un segundo. Quisiera saber como identificar en el programa del server cual es el cliente que se está conectando.

Si, cada vez que se reciben nuevos datos, se llama al evento OnTcpServerRx().

Como el servidor TCP puede manejar más de un cliente, la única forma que tenés de identificarlo, es conociendo su "ID" (identificador), un número mayor a cero.

Este "ID" es el que usas para comunicarte con los clientes conectados, actualmente el PLC admite dos conexiones, es decir 2 números ID, 1 y 2 (esto se puede aumentar si en necesario). Por lo que para comunicarte con los clientes, solo debes usar el ID en las funciones.

Cuando recibis datos es fácil, porque desde el evento obtenes los ID de conexiones que tienen datos nuevos, y usas esos ID para enviar una repuesta.

Para transmitir asincrónicamente (es decir cuando se te ocurra desde el servidor), es conveniente que compruebes que el ID pertenece a una conexión abierta (ya que el cliente puede haber cerrado la conexión).

Los ID (1 y 2, por ejemplo), pueden pertenecer a cualquier cliente conectado. Si lo que querés es mostrar en el Webserver, algo más especifico, podés hacer que cada PLC al transmitir datos especifique en un byte un número propio, entonces sabes de donde viene y los datos recibidos los podes identificar de uno u otro PLC, y a su vez darle una repuesta especifica.

Si sabés de que PLC viene, podes ir almacenando esos datos en una variable especifica y mostrar en el servidor web.

Generalmente, las aplicaciones cliente-servidor TCP, son del tipo:

Cliente envia Mensaje -> Servidor (procesa mensaje) -> Respuesta al cliente desde el servidor.

Esto es para que organices de esa forma el programa y te sea más fácil administrar varios clientes.


El código completo de este evento del server es:

Código: [Seleccionar]
@OnTcpServerRx()
{
// new Identidad se definio en globales
// Obtener conexiones con datos sin leer.

while((Identidad=TcpServerGetUnreadId()) > 0)
{       
// Leer 2 datos y almacena en RxData[].
TcpServerRead(Identidad, RxData, 2)
if(RxData[0] == 0){
   DoutSetOff(DOUT1); //DOUT1 Led que corresponde a Bomba3
                   TcpServerSend(Identidad, TxData, 2);
                }
if(RxData[0] == 1){
                   DoutSetOn(DOUT1);
                   TcpServerSend(Identidad, TxData, 2);
                }
         }
}

Entiendo que en la variable Identidad (definida como global), debería encontrarse cual es el cliente conectado; si es así no sé como podría manipularla para mostrarla en el web server por ejemplo.

Claro, el evento se dispara porque hay un dato nuevo recibido, y con TcpServerGetUnreadId() buscás el ID (o conexión) que tiene datos recibidos sin leer. Luego usas ese ID, para transmitir una repuesta.

No es complicado, pero si tenés duda quedo a disposición.

Saludos!

14
STX8091 / Re:No hay acceso a web server
« : abril 22, 2019, 19:56:56 pm »
Ya esta solucionado.
Se habia borrado el forwarding en el router.

Saludos y disculpas

Buenas tardes. Justo te iba a proponer revisar el port-forwarding del router. Ningún problema. Saludos!

15
Kinco / Re: Datalogger HMI en memoria USB
« : abril 16, 2019, 19:24:02 pm »
2) DATALOGGER

Este método guarda los datos en la base de datos del HMI almacenada en memoria USB (archivo .db). Permite luego desde la pantalla recuperarlos, especificando intervalos de fecha/hora, tanto como para mostrarlos en una tabla, como para exportarlo a CSV en memoria USB y leer desde Excel.

Nota-1: En amarillo se remarca los puntos a configurar.

Nota-2: La fecha se especifica en formato YYYYMMDD (ejemplo: 20190416 es 16 de abril de 2019).

Nota-3: La hora se especifica en formato HHMMSS (ejemplo: 131500 es 13:15 horas con 00 segundos).





















Saludos!

Páginas: [1] 2 3 ... 70