Mensajes recientes

Páginas: 1 2 [3] 4 5 ... 10
21
STX8091 / Capacidad de fuente entradas 4-20mA
« Último mensaje por fruiz septiembre 07, 2018, 07:53:10 am »
 Tengo  una fuente stx612. Estoy alimentando un stx8091 y una hmi kinco mt4532te. Necesito utilizar 3 entradas 4-20. ¿Alcanzará la fuente? la distancia entre la fuente y los controladores 4-20 es aprox 20metros
Gracias
22
StxLadder - Slicetex Ladder Designer Studio / Reset de contador
« Último mensaje por sebeta septiembre 06, 2018, 18:49:44 pm »
Buenas Boris como va? el problema que tengo es que después de terminar el proceso de mi diagrama, debería resetear un contador específico para que no me active una bomba de vacío anclada a un temporizador, pero la primera y segunda vez que realiza el proceso funciona bien, a la tercera vez no me restea el contador, agradecería tu ayuda. Adjunto el programa en donde el contador en cuestión es el C12.
23
STX8091 / Re:Código para lectura/escritura de datos con RS485
« Último mensaje por Soporte septiembre 05, 2018, 11:23:07 am »
La duda está presente en el main y en como interactúan los valores obtenidos a través del teclado con los comandos MbRtuClSendReadHoldingReg y MbRtuClSendWriteReg.

Deberías crear una variable Global (aquellas que declarás fuera de una función), por ejemplo una llamada ReadModBusFlag (si querés leer) y otra llamada WriteModBusFlag (sí querés escribir).

Código: (Pawn) [Seleccionar]
new ReadModBusFlag, WriteModBusFlag

Luego, desde VirtualHMI las hacés "1" si querés leer o escribir, y desde PlcMain() comprobás su valor para iniciar el tipo de operación, por ejemplo:

Código: (Pawn) [Seleccionar]
     if(ReadModBusFlag == 1 && WaitResponse == 0)
     {
         // Enviar peticion para leer "Holding Registers".
         if(MbRtuClSendReadHoldingReg(SLAVE_ADDR, StartAddr, Qty) < 0)
         {
            // Error en transmision.
         }
         else
         {
            WaitResponse = 1

            // Operación ejecutada, limpiar flag.
            ReadModBusFlag = 0
         }
     }

Para escribir:

Código: (Pawn) [Seleccionar]
     if(WriteModBusFlag == 1 && WaitResponse == 0)
     {
         // Enviar petición para escribir "Holding Register".
         if(MbRtuClSendWriteReg(SLAVE_ADDR, StartAddr, Value) < 0)
         {
            // Error en transmision.
         }
         else
         {
            WaitResponse = 1

            // Operación ejecutada, limpiar flag.
            WriteModBusFlag = 0
         }
     }

Te aconsejo leer la nota de aplicación AN026 sobre ModBus RTU cliente, allí tenes en un archivo PDF todas las funciones disponibles y descripciones de las mismas, así como ejemplos. Primero, debes comprender como funciona ModBus RTU.

Link a nota de aplicación:
http://slicetex.com/docs/an/an026

Además, los valores recibidos se acumulan en un vector RxData, el cual me gustaría que no tenga que restringirlo a un número preestablecido de muestras (por ejemplo 4 como en mi código), sino que el mismo dependa de la cantidad de interacciones que realizo con el sensor.

Lo mismo que lo anterior, debes crear una variable global donde almacenes el número de registros a leer o pedir desde ModBus.

El tamaño del array RxData[] podes hacerlo más grande, por ejemplo de 20 registros, para tener espacio suficiente:

Código: (Pawn) [Seleccionar]
new RxData[20]
Luego, cuando hagas la petición, debes pasar el número de registros a leer, según el valor obtenido desde VirtualHMI:

MbRtuClSendReadHoldingReg(SLAVE_ADDR, StartAddr, Qty)

El argumento Qty, lo remplazas con la variable global que almacena el número de registros a leer y fue establecida desde VirtualHMI.

Te aconsejo que mantengas el código de VirtualHMI.p y PlcMain.p en archivos independientes, ya que en tu proyecto, están todo juntos, sino con el tiempo a medida que crezca el código, se te va a hacer confuso y desordenado.

Te recomiendo leer esta introducción al lenguaje Pawn:

http://slicetex.com/ladder/docs/files/STXLADDER-PI.pdf

Saludos!





24
STX8091 / Re:Código para lectura/escritura de datos con RS485
« Último mensaje por joaquinl septiembre 04, 2018, 20:15:34 pm »
Ya adjunte como corresponde, espero respuesta.
Muchas gracias
25
STX8091 / Re:Código para lectura/escritura de datos con RS485
« Último mensaje por Soporte septiembre 04, 2018, 18:28:40 pm »
Buenas tardes Joaquin.

El archivo que nos pasás, no es el proyecto completo con el código.

Para compartir el proyecto con todos los archivos, en StxLadder debes ir a menú "Archivo > Crear backup del proyecto (zip)" y eso te va a generar un archivo .ZIP.

Luego subís ese .ZIP acá, así lo podemos abrir y ver el código al cuál haces referencia en el mensaje.

Saludos!
26
STX8091 / Código para lectura/escritura de datos con RS485
« Último mensaje por joaquinl septiembre 04, 2018, 11:57:08 am »
Hola, escribo para pedirle asesoramiento sobre un código que estoy desarrollando . El objetivo es la lectura/escritura de diferentes registros de un sensor, a partir del ingreso del valor del mismo en el teclado del VirtualHMI. La duda está presente en el main y en como interactúan los valores obtenidos a través del teclado con los comandos MbRtuClSendReadHoldingReg y MbRtuClSendWriteReg. Además, los valores recibidos se acumulan en un vector RxData, el cual me gustaría que no tenga que restringirlo a un número preestablecido de muestras (por ejemplo 4 como en mi código), sino que el mismo dependa de la cantidad de interacciones que realizo con el sensor. Adjunto el código que tengo, y quedo a la espera de recomendaciones sobre el mismo.
Desde ya muchas gracias, saludos
27
STX8081 / Re:Problema con las últimas versiones (packed string)
« Último mensaje por PabloGa agosto 13, 2018, 12:56:55 pm »
Clarísimo. Muchas gracias !
28
STX8081 / Re:Problema con las últimas versiones (packed string)
« Último mensaje por Soporte agosto 13, 2018, 11:03:03 am »
Buenos días Pablo.

- El tema ese de los emails que te llegan "por rebote", cuando los emails enviados por mi sistema son tomados como spam. Es posible que sean enviados a otra dirección que no sea @slicetex.com ?? Es esto configurable?
De todas formas acabo de modificar el SUBJECT de los mails, como vos me indicaste, y espero que con esto ya no te lleguen más emails rebotados, pero la verdad es que este punto me dejó un tanto preocupado.

No, ya que cuando usas SmtpInitSimple() se utiliza el server SMTP de Slicetex, y la protección anti-spam no es configurable en el server.

Las últimas versiones de firmware, permiten actualizar hora/fecha desde internet, es importante tener la hora/fecha correcta del sistema al momento de enviar emails, para que no sean sospechosos de "spam", fíjate en el siguiente post:

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

- La habilitación de los "Packed Strings" que ahora tengo implementada, tiene alguna consecuencia para la identificación de los bytes dentro del buffer de recepción de datos por UDP ? Concretamente yo tengo algo más o menos así:

@OnUdpRx()
{
      // Leer 10 bytes del array y almacenarlos en RxData[].
      UdpRxDataRead(RxData,0,10,false)

      // Y Luego voy extrayendo los datos que hay en cada byte de la trama UDP...
      if (RxData[0] == 122)


No, porque lo que se modifica es la codificación de un string, que en vez de tomar un caracter cada 4 bytes, se utiliza un caracter por byte. Esto solo influye en los string que se almacenan en un array como "packed".

Saludos!
29
STX8081 / Re:Problema con las últimas versiones (packed string)
« Último mensaje por PabloGa agosto 12, 2018, 20:52:28 pm »
Hola Boris,

Muchas gracias de nuevo por tu excelente soporte.

Me quedan 2 consultas:

- El tema ese de los emails que te llegan "por rebote", cuando los emails enviados por mi sistema son tomados como spam. Es posible que sean enviados a otra dirección que no sea @slicetex.com ?? Es esto configurable?
De todas formas acabo de modificar el SUBJECT de los mails, como vos me indicaste, y espero que con esto ya no te lleguen más emails rebotados, pero la verdad es que este punto me dejó un tanto preocupado.

- La habilitación de los "Packed Strings" que ahora tengo implementada, tiene alguna consecuencia para la identificación de los bytes dentro del buffer de recepción de datos por UDP ? Concretamente yo tengo algo más o menos así:

@OnUdpRx()
{
      // Leer 10 bytes del array y almacenarlos en RxData[].
      UdpRxDataRead(RxData,0,10,false)

      // Y Luego voy extrayendo los datos que hay en cada byte de la trama UDP...
      if (RxData[0] == 122)

     etc.

Me parece que en esto no debería haber ninguna influencia porque son arrays, pero no strings...

Saludos !
Pablo.

30
STX8081 / Re:Problema con las últimas versiones (packed string)
« Último mensaje por Soporte agosto 12, 2018, 18:27:12 pm »
Impecable. Ya lo tengo andando.

Perfecto Pablo!

Pruebo a ejecutar, y todo parece funcionar bien, pero en un sitio donde muestro strings a través de VirtualHMI, no salen bien. Entonces recorro el fuente hasta encontrar todos los lugares donde haya StrFormat(), y cambio "false" por "true" (primero cambié por "packed", pero tiró error al compilar, entonces le puse "true").

Probá con mayúsculas: PACKED

Con esto último, aparentemente todo está funcionando bien de nuevo, con software actualizado a lo último.
Si algo no quedó bien, en los próximos días me voy a dar cuenta.

A veces me llega un mail de reporte de "spam" con los mails que envías desde la placa, se me hace, por lo que veo, que se debe ser por poner en el "Subject" la fecha/hora sin ningún texto.

En el asunto podrías colocar algo como: "Notificacion - DDMMAAAA-HHMM"

Sí es que necesitas poner le fecha/hora en el asunto.

Para que parezca más normal.

Este es la copia del reporte:

Código: (Mail) [Seleccionar]
This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

  pXXXXX@gmail.com
    host outbound.mailspamprotection.com [108.163.220.50]
    SMTP error from remote mail server after end of data:
    550 High probability of spam

---------- Forwarded message ----------
From: PLC <plc.XXXXX@slicetex.com>
To: <pXXXXX@gmail.com>
Cc:
Bcc:
Date: Sat, 11 Aug 2018 21:21:29 -0000
Subject: 11/08/2018 - 21:21:22
RECONEXION ENERGIA
FASES=R S T
TANQUE PA=005  PB=000
ALARMA=DESARM-OFF
M.CALD=SMART  CONF=1
T.Ext=14.7C   T.Int=20.1C

--

PLC
pXXXX@gmail.com


Supongo que mientras te lo considere como spam, no lo debes estar recibiendo.

De paso. Debo esperar algún cambio o mejora derivado de las siguientes mejoras del firmware?:
      + Se amplia de 6 a 10 la cantidad de conexiones abiertas
        simultáneas TCP.
      + Se amplia de 12 a 20 la cantidad de puertos disponibles para
        escucha de paquetes TCP.
      + Se amplia de 2 a 4 la cantidad de conexiones abiertas
        simultáneas ModBus TCP (esto se conoce en documentación
        como parámetro "NumberMaxOfTransactions").

Nada que afecte el funcionamiento, debería mejorar la conectividad para aplicaciones con protocolo TCP, como ModBus TCP, webserver, mails, etc.

Saludos!
Páginas: 1 2 [3] 4 5 ... 10