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 ... 63
1
STX8091 / Re:Medición de corriente alterna con toroide
« : octubre 17, 2018, 16:46:02 pm »
Hola Boris, para calcular la corriente TrueRms del toroide conectado a la entrada analógica 4, usando el proyecto TrueRmsSampler.zip, se llena el buffer y llama a OnVin4BufFull la cual usa funciones para calculo(GetVoltagesum y GetVoltageRms). Si deseo calcular la corriente TrueRms de tres toroides conectados en tres entradas (4, 5, 6) sus respectivos buffers llamaran a   OnVin4BufFull, OnVin5BufFull y OnVin6BufFull. ¿puedo usar las mismas funciones (GetVoltagesum y GetVoltageRms) en las tres OnVinXBufFull o se superpondrán los datos en las Variable.

Buenas tardes Eduardo.

En principio si mal no veo, si podrías re-utilizar las funciones GetVoltageSum() y GetVoltageRMS(), ya que si te fijás por dentro de cada función no se utilizan variables globales o que estén fuera de la función, por lo tanto solo depende de sus argumentos.

Lo único, es que deberías crear para cada canal un nuevo set de variables globales del mismo tipo para almacenar los datos de cada canal, esto es:

Samples[] (array de 127 elementos), SamplesNumber, I_RMS, Sum y V_RMS.

Podes darle un nombre más representativo con el número de canal por ejemplo: Samples5, Sum5, SamplesNumber5, etc.

Cada una de estas variables, luego las conectas como argumentos a las funciones reutilizadas, de la misma forma que el ejemplo.



NOTA:

La función GetVoltageSum(), tiene una linea que depende del número de canal:

SampleVoltage = VinToVoltage(4, IN3, 8)

Que en este caso es "4", pero como solo se usa para convertir un valor en memoria a voltaje, no es necesario cambiarlo, siempre y cuando se utilice los canales 4,5,6,7 y 8, ya que comparten las mismas características.

Por otro lado, en diagrama Inicio.sld, recordá establecer el rango y activar el sampler para los otros canales a utilizar, tal como hace el ejemplo para el canal 4.

Saludos!


2
STX8091 / Re:Detención indeseada PLC
« : octubre 17, 2018, 16:23:22 pm »
Algo que me olvidé de sugerir para que pruebes, es llamar al siguiente comando al inicio del programa en PlcMain() por una sola vez:
 
Código: (Pawn) [Seleccionar]
   // Desactivar TCP split en stack TCP/IP.
   NetTcpSplitOff()

Utilizar tanto en el cliente, como en el servidor (es decir ambos PLC tienen que estar configurados con esta opción al iniciar para que se puedan comunicar).

Esto evita que el PLC divida los paquetes TCP para mejorar desempeño, pero que quizás con tu router este dando problemas.

Saludos!


3
STX8091 / Re:Detención indeseada PLC
« : octubre 17, 2018, 11:04:04 am »
Buenos días Mariano,

Se me ocurrió cambiar los puertos 81 y 82 a otros números y al parecer se solucionó la falla y no volvió a resetearse. Entonces le cargué el programa completo. (Sólo que en modo D1 me dejaba usar la mitad de la EEPROM). No hubo fallas. Lo que hice hace una hora, fue mudar todo de nuevo. PLC a D2, StxLadder a 1.9.3 etc. Lo estoy probando y te aviso. Al parecer el reset se origina por usar esos números de puerto... o bien por lo menos uno de ellos (calculo el 82 asignado al TCP) es el que causaba el problema...

No podría haber imaginado una solución de ese tipo, bastante extraño, a lo mejor ambos puertos deban estar un poco más separado para evitar algún conflicto. Pero intento comprender a que se puede deber, ya que no debería ser así.

Lo que sí sería conveniente es que el PLC de algún tipo de aviso ante este tipo de errores sin que el programa se llegue a bloquear y ser necesario un reset por watchdog de todo el PLC. Esto es a los fines de que no entren en juego los actuadores que dependen en todo momento de las distintas salidas.

Si, es que pudiendo reproducir la falla me seria más fácil entender el por qué. El manejo de comunicaciones por parte del PLC es una "tarea" independiente, por lo tanto es raro que si se "bloquea" detenga al resto de las actividades.

Es decir, si se cuelga en la "comunicación" y nunca devuelve el control al programa del PLC, es lógico que se te dispare el watchdog, ya que no lo podes alimentar.

Si se cuelga en la "comunicación", pero de alguna forma sigue respondiendo, por ejemplo si conectas StxLadder y lo interrogás para ver información menú "PLC > Configurar PLC", y responde, es porque de alguna forma no está totalmente bloqueado, pero falla al devolver el control al PLC.

Si no responde nada, es algún tipo de otra falla interna, como error de memoria o un error no contemplado.

Pero comentame como sigue.

Saludos!

4
¡Buenos días usuarios!

Hoy adjuntamos en archivos ZIP, dos ejemplos para poder transmitir una cadena (string) a través del puerto serie (RS232 o TTL, según el modelo).

Requiere que actualice el firmware de su PLC a la última versión y utilizar StxLadder versión 1.9.5 o superior.

Ejemplo en Pawn:

Debe utilizar la función SerialSendStr(), por ejemplo para transmitir el valor de la variable Counter:

Código: (Pawn) [Seleccionar]
SerialSendStr("Counter = %d ", Counter)
Ejemplo en Ladder:

Debe utilizar el componente SerialSendStr. En el siguiente ejemplo se transmite la cadena "Counter = %d" cada 1 segundo, donde %d es remplazado por el valor de la variable Counter (que se incrementa en 1 por cada transmisión).



Prueba:

Puede utilizar el programa PuTTY, el cual es un terminal que puede funcionar en Windows/Linux y aceptar trasmisiones desde el puerto serie. Conecte el PLC a la computadora con un cable cruzado, conigure PuTTY para leer el puerto serie con los parámetros 9600 BPS, 8N1.

Al recibir la cadena "Counter = %d" cada 1 segundo desde el PLC, debería ver una pantalla similar a la siguiente:



PuTTY puede descargarlo desde:

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Saludos y buenas transmisiones!





5
STX8091 / Re:Detención indeseada PLC
« : octubre 16, 2018, 12:12:24 pm »
Buenos días Mariano,

En la última prueba que realicé pasé el PLC a modelo D1. Le cargué el firmware v200 y el programa inicial que tenía en servicio (sin uso de instrucciones para la memoria EEPROM) y volvió a funcionar todo normalmente sin fallas.

Para esto, tuve también que instalar stxladder versión 1.8.2 en lugar de la 1.9.3. Esta última no me dejaba compilar el proyecto inicial (el que estaba normalmente en servicio) por falta de memoria RAM.

Voy a examinar más exhaustivamente la diferencias entre versiones, para determinar que puede haber cambiado y hacer algunas pruebas.

¿Podrías enviarme por mail, el proyecto que cargás al PLC que te funciona?.

El proyecto que no te funciona, ¿supongo que es el mismo que ya me pasaste, no?.

Quería agregarte que en la configuración del router están asignados los puertos 81 al webserver y 82 al tcp server. Donde pide el tipo de puertos entre TCP y UDP está definido en las dos alternativas como Both (ambos). Habrá algún conflicto con los números de puerto asignados. (No hay ningún otro servidor virtual instalado como sistemas de alarma o vigilancia ni nada por el estilo)

No, esto no creo que sea un problema.

Saludos!

6
STX8091 / Re:Detención indeseada PLC
« : octubre 10, 2018, 12:50:51 pm »
Me dejará cargar todo el código incluso el que hace uso de la EEPROM?

Si no recuerdo mal, si; pero no escribas arriba de los 16KB de la EEPROM, ya que lo limita internamente el modelo.

Saludos!

7
STX8091 / Re:Detención indeseada PLC
« : octubre 10, 2018, 10:46:30 am »
Buenos días,

Si no queda más alternativa voy a probar con el otro PLC pero espero para probar el cambio de D2 a D1.

Adjunto archivos para cambio de D2 a D1.

Recordar que modelo D1 tiene mitad de memoria disponible, pero en firmware inferior a 211, no se comprueba que programa exceda limites y debería dejar cargar el proyecto original.

La ultima prueba que hice fue desconectarle el panel sh300 y el puerto Ethernet y anular las sentencias que me indicaste además de las dos q hacían uso del panel.

No hubo reset pero habría que probarlo un par de días para tener certezas

Otra prueba podría ser desconectar el cable ethernet, pero dejar solo el servidor web habilitado y ver si no se detiene. Luego conectar el cable ethernet y verificar.

Saludos!

8
STX8091 / Re:Detención indeseada PLC
« : octubre 09, 2018, 18:50:57 pm »
La unica forma que tendria de corroborar que no se cuelgue seria por la "no indicacion de encendido" del led que se activa por reinicio de wdt. Ya que no podria acceder al webserver del plc. Pero hago la prueba y te aviso.

Claro, si, me llama la atención porque casi no te quedan cosas para desactivar en cuanto a software.

Pasamelo para probar ya que aparentemente no ha habido modificaciones en el circuito. Digo aparentemente porque en la caja metálica puesta a tierra donde se haya instalado el PLC no he cambiado nada y en lo que hace al resto de la instalación por lo que he podido revisar no encuentro ni cables cortados ni nada que me haga sospechar de algún desperfecto eléctrico en el circuito.

Bueno, ya te voy a pasar el archivo para pasar de D2 a D1.

¿Cabe la posibilidad de que remplaces el PLC por el del laboratorio?.

Saludos!

9
STX8091 / Re:ModBus TCP con dos PLC y un panel HMI
« : octubre 09, 2018, 11:22:47 am »
Cita de: Rodrigo
si en vez de leer entrada o escribir salidas quiero hacerlo en bits de GP, solo cambio la dirección verdad? en el caso de las lecturas las entradas 10001at16 las cambio por 4001at16 ? o si quiero escribir cambio 1at16 lo cambio por 4020at16 por ejemplo... 

Para escribir GP coils, utilizás el mismo componente del ejemplo, desde dirección 4001.

Para leer GP coils, debés remplazar el componente que lee las entradas en el ejemplo por el componente "MbClSendReadCoils".

El mismo se configurara igual que MbClSendReadDiscretes , solo que la dirección para GP-COIL es ADDR=4001 y QTY=16 (si pedís 16 bits).

10
STX8091 / Re:ModBus TCP con dos PLC y un panel HMI
« : octubre 09, 2018, 11:18:13 am »
Lo que estaba pensando es que en el caso de la aplicación con 3 PLCs + el panel, seria configurar únicamente como servidor al 8091 y clientes a los dos remotos (8092) para interactuar con el 8091... a la vez a los 8091 también como servidor para que el panel comande sobre ellos... y el bit de baliza estaría en el 8091 que seria leído por los dos 8092... que opinas? podrías ver un ejemplo asi?.

Buenos días Rodrigo. Buenas idea. He probado armar tres PLC con un HMI conectados por ModBus TCP, donde un PLC es servidor, y el resto, dos PLC y HMI son maestros.  Funciona correctamente, todos acceden al PLC servidor.

Hice una prueba rápida de prueba, luego tendré que emprolijar y subir los ejemplos.



La única diferencia, es que desde el HMI en este caso, a cualquier dirección de registro o bit que quieras leer o escribir en el PLC, debes sumarle 1. Por ejemplo, si querés acceder desde el HMI al GP-COIL 4064 en el PLC, debes accederlo como 4064+1=4065.

Se puede configurar el PLC para que no necesites esa consideración desde el HMI, pero entonces los otros dos PLC clientes, deberán hacer la misma consideración sumando 1 a la dirección. Esto se puede elegir, depende de como lo quieras. Capaz, que si queres mantener compatibilidad de diseño de HMI con proyecto actual, te convenga que los PLC sean los que incrementen en 1 la dirección.

Saludos!



11
STX8091 / Re:Detención indeseada PLC
« : octubre 09, 2018, 11:11:02 am »
Como el cable utp que conecta al router con el plc es algo largo (12 mts aproximadamente) voy a probar cambiarlo por uno blindado y puesto a tierra.

Si, puede ayudar.

Ahora, te recuerdo que este reset constante lo hace desde que cambié al plc a D2 y la versiones nuevas de stxladder y firmware.... será necesario que probemos volviendo a d1 y a algún firmware anterior para descartar que sea algún problema de las nuevas versiones?

Bueno, cabe esa posibilidad después de todo, lo que me llama la atención, es que corro tu programa y no presenta problemas.

Te puedo pasar para cambiar a modelo D1 y que pruebes.

Por otro lado, ¿te acordás que versión de firmware utilizabas sin problema?. Para verificar si hay algún cambio relacionado.

Saludos!

12
STX8091 / Re:Detención indeseada PLC
« : octubre 09, 2018, 11:04:14 am »
Con conexión desde afuera te referís a la entrada telefónica del router o a la entrada ethernet del PLC?

No, me refería a si desconectando el Ethernet tenias la falla.

Directamente desde este PLC no conmuto relé alguno. Lo único que tiene como periférico es un transductor de presión como entrada análógica, sus salidas a relé que cierran las entradas (digitales) de un kit arduino con transmisor de sms por gsm y un led indicador de reset por wdt. Y un pseudo led debug desde una de las salidas pwm usada como digital y otro led indicación de comunicación por enlace exitosa conectada a la otra salida pwm usada también como digital.

¿Por casualidad alimentás el kit Arduino u otro circuito con la salida de tensón +5D del PLC?.

La última prueba que hice ayer fue comentar o anular si se quiere
la llamada a los eventos

//TcpServerSetRxEvent()

y el de la pantaslla sh300

//MbRtuServInit(1, 9600, SERIAL_8E1, MB_RTU_INTERFACE_RS232);

Se sigue colgando el programa aunque anoche aguantó por lo menos 3 horas hasta donde pude ver. Esta mañana cuando abrí el webserver ya se habia colgado.

Fíjate de comentar también la inicialización del servidor TCP y desconectar el cable del SH-300 directamente.

Código: (Pawn) [Seleccionar]
// TcpServerInit(82, 30) 

13
STX8091 / Re:Detención indeseada PLC
« : octubre 08, 2018, 17:41:17 pm »
La consulta sería como proceder para hallar el segmento de código que me está produciendo el "stop" del plc?

Había pensado en ir guardando en EEPROM números guías dentro del código pawn para acceder a él post reset y así intentar ver al menos en que punto del programa se produce la falla. Quería consultarte si tenés alguna herramienta o técnica que me pueda ayudar a aislar el problema.

No es mala idea, pero es una falla aleatoria de ese tipo, si es como la describís, puede ocurrir en cualquier momento y siempre en distinto punto del programa.

El programa no aparenta tener algo que salga fuera de lo común.

Creo que lo ideal seria ir eliminando funciones, para llegar al punto donde no se resetea.

Me inclinaría ha hacer la siguiente prueba, desconectando las salidas reles, tenes problemas?. Así descartamos ruidos eléctricos.

Por otro lado, desconectando la pantalla SH-300, tenes problemas?. La pantalla constantemente interrumpe al PLC, es algo que ya esta super probado, pero para descartar que la comunicación serie no esté interfiriendo de alguna forma con las operaciones que realizas.

Finalmente, es posible que en el PLC de prueba-servidor le conectes otro PLC-cliente y verifiques que todo te funciona sin problemas?.

Podrá caber la posibilidad de que algún problema de programación de más bajo nivel de la ejecución de sentencias o procedimientos sea responsable de estas paradas en el programa?

No lo descarto, pero no estoy seguro si es una falla de comunicación/programación o de ruido.

Este PLC está en servicio hace ya dos años y medio aproximadamente. Nunca le cambié la batería interna. Podrá ser causa del problema?

No, no debería afectar la batería al funcionamiento.

14
STX8091 / Re:Detención indeseada PLC
« : octubre 08, 2018, 17:30:06 pm »
La última prueba que hice fue desconectar la antena del modem y aunque sigue bloqueándose y reseteandose por wdt. El intérvalo de tiempo entre bloqueos parece haberse prolongado desde los 5 minutos aproximadamente a los 60 minutos aproximadamente.

¿Sin conexión desde afuera, ocurre también el problema?.

¿Conmutas alguna bomba, o carga con rele, contactor, etc, igualmente?.

En el PLC que tengo encendido en laboratorio no se produce reset alguno en los tres día que está funcionando. Este está conectado al router en mi casa, pero no hay aquí antena que tenga que transmitir/recibir datos, por lo cual asumo que la ejecución del evento correspondiente @OnTcpServerRx() ha de ser mucho más rápida.

En @OnTcpServerRx() proba el siguiente código en remplazo de: while((Id=TcpServerGetUnreadId()) > 0)

Código: (Pawn) [Seleccionar]
for(new Count=0; ((Id=TcpServerGetUnreadId()) > 0) && (Count < 100); Count++)
Para evitar que si por algún motivo la función TcpServerGetUnreadId() devuelve siempre mayor a cero, no se bloqueé el código en el evento y dispare el watchdog.

Ya que es la única parte que veo que es potencialmente peligrosa.

El resto de las funciones que llamás dentro dentro del evento, no generan retardos, más allá de lo normal de ejecución del procesador.

Escribir en la EEPROM genera un pequeño retardo, pero es de 5 a 10 mS por cada operación.

Se me hace que es un problema de interferencia o "cuelgue" de algún evento...

El evento solo se activa al recibir datos desde el cliente, si no los recibe, no se ejecuta.

Pero sospecho de ruido eléctrico, ya que en el laboratorio no te da problemas, y acá si.

Las cargas como bombas, ¿las controlás a través de un contactor o relé?.

Saludos!







15
STX8091 / Re:ModBus TCP con dos PLC y un panel HMI
« : octubre 05, 2018, 20:53:28 pm »
Respecto a Consulta #2:

Buenas tardes Boris. Muchas gracias por el ejemplo y lo probe y todo ok... segun lo conversamos por mail, estoy necesitando comprar otro PLC para agregar a la red, un 8092 con un IP192.168.1.83... mi consulta es según el ejemplo, como haria con el segundo PLC servidor?... la aplicacion seria la misma, el 8091 tiene que leer y escribir en los dos 8092 segun los requerimientos solicitados en el panel.

Tendría que modificar un poco el ejemplo, ya que hay que hacer cambios de IP, para primero comunicarse con el PLC-2, y luego con PLC-3.
Dejame que haga unas pruebas para ver si conviene hacerlo así o de alguna otra forma, como por ejemplo utilizando el HMI como intermediario con los tres PLC configurados como servidor para simplificar.

Buen fin de semana.

Saludos!




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