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 - PabloGa

Páginas: 1 [2] 3 4 ... 6
16
Hola Boris buenas tardes,

Bueno, empecé de a poco a "digerir" todos los cambios y ventajas que has implementado en el sistema. Hice lo siguiente:

- Instalé la nueva versión del entorno Slicetex V1.8.0
- Hice el upgrade el firmware del PLC a la V2.21
- Generé un archivo INICIAL.INC, a donde moví toda la parte de definición de variables (que antes estaba en PLCMAIN.p)
- Ahora con esto ... el programa compila, con lo que los errores de compilación que tenía el otro día están solucionados.
- Lo envío al PLC, y todo funciona igual que siempre. Perfecto !

Ahora quiero empezar a implementar "lo nuevo", y decido comenzar con el tema del SmtpInitSimple(), que me parece fantástico porque me independizo de la cuenta y el SMTP de Arnet que venía usando (muy poco confiable).

Por lo que ví en la Nota de Aplicación más el proyecto ejemplo MailExampleSimple2, lo único que tengo que hacer es cambiar SmtpInit(lista de parámetros) por SmtpInitSimple().
Hago el cambio, y tira error al compilar: "Error 029 Invalid Expression, assumed zero" en las líneas donde está SmtpInitSimple()
Es como si no me reconoce correctamente SmtpInitSimple()
Revisé una por una las variables utilizadas, y todas están correctamente definidas en INICIAL.INC.
Probé a cambiar de lugar SmtpInitSimple() y ponerla en PlcMain(), y me cambia de lugar el error, pero sigue igual.

Ahora pruebo a instalar el ejemplo MailExampleSimple2, y compila perfectamente !?!. No entiendo.
Para mí tiene que ver con el tema este del "órden de compilación" nuevo a partir de 1.7.8. Alguna sugerencia ?

Saludos y muchas gracias !
Pablo.

17
Hola Boris buenos días,

Muchas gracias por ponerme al tanto de los avances, en este caso con lo de ThingSpeak.
Lo voy a estudiar y voy a ver si modifico la forma en que lo vengo usando, hacia este nuevo método.

Aprovecho para comentarte que unos días atrás me puse a hacer unos cambios en mi proyecto PLC, y ví que había una nueva versión de STXLadder (era la 1.7.8 y yo tenía en uso la 1.7.6).
La instalé, y de entrada empecé a tener problemas: el proyecto no compilaba, me decía que varias variables no estaban definidas, y el proyecto no se podía compilar. Me volví loco buscando qué pudo haber cambiado, y no encontré nada. Bajé la 1.7.6 anterior, la instalé, y ... tampoco anduvo !! (o sea, el proyecto que compilaba perfecto con 1.7.6, ahora no compilaba).

Después de bastante renegar llegué a la conclusión de que después del upgrade a 1.7.8 se había modificado de alguna manera el archivo "PROYECTO.SLP", que está en la carpeta raíz del proyecto, y el programa se estaba compilando en el estricto orden en el que los archivos .p aparecen en "PROYECTO.SLP". O sea: si primero aparece el "motores.p", y más adelante el "plcmain.p", todas las variables que aparezcan en "motores.p" van a aparecer como no definidas, y el proyecto no compila.

Qué hice? Modifiqué con un editor de textos el "PROYECTO.SLP", para que "plcmain.p" aparezca primero que todo, y con eso el proyecto volvió a compilar.

Luego volví a instalar la 1.7.8 para ver si el problema estaba resuelto, pero no ... todo volvió como al principio, y el proyecto no compiló. Desinstalé, volví a 1.7.6, edité "PROYECTO.SLP", y así me quedé.

Me parece que se trata de un pequeño bug introducido a partir de la 1.7.8. Quizá ya lo detectaste y está corregido en la 1.8.0....

Muy interesante también lo de la nueva  SmtpInitSimple(). Tengo que verla...

Saludos y muchas gracias !
Pablo.


18
VirtualHMI - Terminal HMI Remoto / Re:VirtualHMI por TCP en vez de UDP
« : septiembre 04, 2016, 22:29:36 pm »
OK muchas gracias.

Sï, me parece que voy a tener que aprender como hacerlo con las páginas web...

Saludos !
Pablo.

19
VirtualHMI - Terminal HMI Remoto / VirtualHMI por TCP en vez de UDP
« : septiembre 02, 2016, 18:48:40 pm »
Hola Boris, buenas tardes !

Sería factible "migrar" el mecanismo de comunicación de VirtualHMI de UDP a TCP ?

El motivo es que a medida en que uno usa más VirtualHMI se da cuenta de que es el mejor medio de visualizar información del sistema. Es espectacular. Pero lamentablemente, al ser UDP solo puede funcionar dentro de la misma red LAN donde está el PLC. Si fuera TCP, podríamos acceder "desde afuera" como hago actualmente mediante ModBUS. Pero ModBUS es extremadamente limitado y lerdo !

Muchas gracias,
Pablo.

20
Anduvo perfecto, Muchas gracias !!!


Buenos días Pablo,

Podes probar dividiendo la variable entera por una constante tipo float, para que el resultado este en float y sea bien interpretado por "%f":

nLcdPrintf(0, 1, LCD_NONE, "TEMP= %02.1f, Temp/10.0)

Saludos

21
Hola buen día,

Quisiera saber si es posible "mostrar" una variable INTEGER como si fuera una FLOAT con 1 decimal.

O sea: Yo tengo en una variable INTEGER un valor (de temperatura) = 154, pero que en realidad es 15.4 grados.
En todo el software, las temperaturas las proceso de esa manera: multiplicadas por 10. Pero al mostrarlas, debería mostrar los grados y los decimales con el punto.

La consulta es si en el momento de "mostrar" ese valor en el display o en VirtualHMI es posible "simular" como si fuera una float (sin covertirla a float), tal que se muestre "15.4".

Estuve probando con
nLcdPrintf(0,1,0,"TEMP= %03.1d, Temp)
nLcdPrintf(0,1,0,"TEMP= %02.1f, Temp/10)
y varias más, pero ninguna me anduvo.

Muchas gracias desde ya,
Pablo.

22
Hola Boris buenas noches !

Gracias por tu feedback.
No se me había ocurrido hacer ThingspeakInit() periódicamente.
Como transmito 1 vez por minuto, en vez de ejecutar ThingspeakInit()  cada vez que voy a transmitir (me parece mucho), lo metí dentro de una función que se ejecuta cada una hora. Vamos a ver qué pasa.

Por otro lado, con respecto a incorporar soporte ThingSpeak de forma nativa... te parece necesario?  El viejo refrán dice " Si funciona, mejor no lo arregles !! "

ACTUALIZACIÓN 19/06/16: Luego de haber incorporado la inicialización ThingspeakInit() una vez por hora, y luego lo pasé a 1 vez a la medianoche, en ambos casos, cuando se re-inicializa ThingSpeak ... deja de funcionar. Por lo tanto lo eliminé, y volví a dejar todo como estaba antes. La forma como lo había agregado creo que fue correcta, porque hice la verificación de que no hubiera una conexión abierta:

   // Esto se ejecuta cada 1 hora, o bien a medianoche... pero no anduvo
   if(ThingspeakCheckWaitResponse() == 0)
   {
        ThingSpeakInit()
        }


Muchas gracias.
Saludos,
Pablo.


23
Hola !

La forma en que yo subo los valores es de la siguiente manera (una instrucción para armar un string, y luego una para subirlo):

StrFormat(ThingSpeak_String, 100, false, "field1=%d.%d&field2=%d.%d&field3=%d&field4=%d&field5=%d&field6=%d&field7=%d.%d&field8=%d.%d", Temp,Temp_d,Hume,Hume_d,Lumi,Nivel,TC,TPIR,Temp2,Temp2_d,Hume2,Hume2_d)
         
ThingspeakSendFields(ThingSpeak_String)

Como podrás ver, los valores pueden ser decimales, y anda perfecto. Ejemplo:
"field1=%d.%d"  arma en el string una parte entera, el punto decimal, y luego la parte decimal, y cuando ves el gráfico en ThingSpeak lo tomó como un número real perfectamente.

No sé cuáles son los valores máximos y mínimos permitidos, habría que buscar en ThingSpeak.com, pero intuyo que son valores reales muy grandes; me parece que es algo que no tiene muchas restricciones.

APROVECHO para reportarte una nueva situación, derivada de lo de ThingSpeak:
Ya me pasó varias veces que de pronto el PLC "deja" de subir la información a ThingSpeak (esto ya ocurre desde varias versiones de firmware atrás, no es nuevo). Sin embargo, la conectividad Ethernet no está "colgada", porque sigue funcionando por ejemplo Modbus y el VirtualHMI.
Pero deja de funcionar la subida de datos (y eso que el acceso a ThingSpeak está con un número de IP fijo, por lo tanto no habría resolución de nombres DNS, que sería un factor más).

Estuve haciendo varias pruebas para tratar de encontrar el asunto, y detecté que el problema se resuelve haciendo un REINICIO del PLC a partir de VirtualHMI Android. O sea: no necesita ser desenergizado. Solo con un reinicio del PLC es suficiente. Lamentablemente, con esta acción pierdo los valores de todas las variables y acumuladores; es como si hubiera desenergizado.

Habría que ver qué funciones de red se "reparan" al hacer un reinicio del PLC, y ver si sería factible tener alguna instrucción Pawn para que el software cada X tiempo, o cuando detecta que estas funciones no andan, hacerse a sí mismo un reinicio de las funcionalidades TCP (o lo que corresponda), y con eso se resucita solo. Me explico? Quizá algo así como la SMTPInit(), que tenía una funcionalidad para reiniciar cuál era el servidor y número de IP que tiene que usar, si no me equivoco.

Muchas gracias, saludos!
Pablo.





Perfecto,

Una consulta, para enviar los 8 campos usas la función de la siguiente forma?:

Código: (Pawn) [Seleccionar]
ThingspeakSendFields("field1=%d&field2=%d&field3=%d&field4=%d&field5=%d&field6=%d&field7=%d&field8=%d", Value[0],Value[1],Value[2],Value[3],Value[4],Value[5],Value[6],Value[7])
Por otro lado, los valores son enteros ? Que máximo y mínimo ?.

Es para saber la cantidad de caracteres que podrías emplear en la conexión.

Gracias.

24
Anduvo perfecto !!!
(y estoy subiendo los 8 canales juntos)
Muchísimas gracias !
Pablo.


Hola Pablo,

No, necesitas el firmware "D2" para el modelo de PLC que tenes.

No recordaba tu modelo. Te lo adjunto al correcto.

Saludos.

25
Hola Boris,

Estoy por hacer el upgrade de firmware, pero me detuve por un detalle que me llamó la atención:
El firmware que me citás para hacer el upgrade incluye "D1" en su nombre, y mi modelo de equipo es "D2" (no me acuerdo qué significaba la diferencia), pero me temo que si hago el upgrade puedo planchar el PLC.
Me podés confirmar si prosigo o no ?

Gracias !
Pablo


Buenos días Pablo,

Te paso el proyecto modificado para que acepte mas parámetros, yo lo probé hasta con 6 campos.

También debes actualizar la versión de firmware a la V220 que te adjunto.

Avísame si te funciona bien.

Saludos!

26
Excelente Boris,

En estos días hago la prueba. Yo necesito subir las 8 variables de un Channel de ThingSpeak al mismo tiempo. Vamos a ver si funciona y te aviso.

Gracias !
Pablo.

Buenos días Pablo,

Te paso el proyecto modificado para que acepte mas parámetros, yo lo probé hasta con 6 campos.

También debes actualizar la versión de firmware a la V220 que te adjunto.

Avísame si te funciona bien.

Saludos!

27
Fantástico Boris,
Cuando se puede reproducir un problema, ya tenemos el 50% de la solución... !
Saludos,
Pablo.


Hola Pablo,

Te comento que estoy viendo este tema.
Por ahora pude determinar que efectivamente, es un tema de recorte de caracteres, ya que estoy simulando con la PC el servidor web y leyendo los datos enviados por el PLC.
A partir de cierta cantidad de "fields", los datos se recortan y no llegan en su totalidad.

Te comento cuando tenga mas novedades.

Saludos.

28
Hola Boris como te va?

Estuve haciendo unas pruebas a ampliar el tamaño del buffer string FieldStr, que en tu archivo original estaba programado en 160 bytes, y lo pasé a 300. Sin embargo, no me modificó el resultado, y siempre se repite que solo puedo grabar hasta 4 &fields en ThingSpeak.

Fijate por favor en los 2 archivos que te adjunto (el original tuyo, y el modificado por mí), para ver dónde hice los cambios.

Era a estos "buffers" a los que vos te referías en un comentario anterior??  O es el tamaño de otro buffer que sería necesario modificar ?

Saludos y muchas gracias,
Pablo.



Hola Pablo,

Si por supuesto, lo tengo en mente, solo que ultimamente estuve centrado en nuevos productos y se me pasó.

Pero déjame que me arme un tiempito y lo encaro.

Estamos en contacto.

Saludos

29
Hola Boris qué tal ?

Alguna posibilidad de retomar este tema??

Saludos !
Pablo.


Hola Pablo,

Ok, dejame que modifique un poco el código para optimizar el buffer y hacer unas pruebas para ver de enviar más campos.

Luego te comento.

Saludos

30
Hola Boris,
Actualizados el firmware y StxLadder y ... funciona bien !!  ModBus volvió a responder inmediatamente como siempre !!

Excelente trabajo como siempre.

Quizá es el turno de los buffers de ThingSpeak ??  http://www.slicetex.com/foro/smf/index.php?topic=160.0  ...   ;)

Muchas gracias !
Pablo.

Hola Pablo,

Ya están disponible las versiones corregidas para instalar:


Recorda agregar al incio del porgrama:

Código: (Pawn) [Seleccionar]
 
   // Desactivar TCP split en stack TCP/IP.
   NetTcpSplitOff()

Cualquier cosa, avisame.

Saludos

Páginas: 1 [2] 3 4 ... 6