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 ... 77
1
Si aun configurando correctamente estos parametros se sigue cayendo la comunicación de parte de la pantalla, se puede probar por ejemplo reduciendo a la mitad los parametros Max word block package size & Max bit block package size? En ModBus TCP el primero quedaria en 8 mientras que el segundo en 16.

Buenos días. Reducir a la mitad los valores de los parámetros no debería ser problema, funcionaria igual, ya que estás por debajo del límite máximo soportado por el dispositivo. Lo importante es no pasar el valor máximo, 16 y 32. Quizás puede ser otra la causa del problema de perdida de comunicación, como las detalladas en los emails.

Saludos!

2
Algunos clientes tienen computadoras locales  conectadas con Windows y por escritorio remoto reprograman el PLC, pero no sé si será opción para ustedes.



Si de escritorio remoto se trata, otra posibilidad económica es utilizar una Raspberry para ejecutar StxLadder en Linux y reprogramar el PLC.

En la Raspberry deberías instalar un gestor de ventanas (como XFCE o alguno más liviano), entonces tenés acceso gráfico para correr programas. Para acceso remoto con escritorio, debés instalar allí un servidor tipo VNC, RDP, etc. Hay mucho en internet sobre esto.

A StxLadder lo podés ejecutar en Linux utilizando "WINE", que es una implementación nativa que permite correr aplicaciones Windows (con limitaciones).

Una vez instalado WINE, descargás StxLadder y lo instalás normalmente. Te va a crear el ejecutable y abrís el proyecto normalmente.

Si bien StxLadder con WINE arranca en Linux, por las propias limitaciones de la librería WINE que no iguala del todo a Windows, funciona con algunos bugs en la interfaz gráfica para algunas funciones. Pero para abrir el proyecto y programar, no hay problemas.

Te paso en archivo adjunto (abajo) una captura de pantalla de StxLadder corriendo en Linux Debian con WINE, en un escritorio XFCE.



Entonces los pasos serían, instalar un escritorio gráfico, instalar WINE, instalar y ejecutar StxLadder, probar localmente programar el PLC con StxLadder, y luego instalar un servidor para hacer escritorio remoto desde otra computadora. Te recomiendo googlear en internet, hay mucha información y tutoriales.

Podés ir probando esto en laboratorio y luego vemos si se puede simplificar un poco el proceso, o se deciden por la implementación con protocolo TCP detallada en el mensaje anterior.

Saludos!

3
Quería saber si es posible, y en caso que lo sea cual es la dificultad para ustedes de implementar una nueva funcionalidad en el StxLadder para realizar la carga de un programa al PLC de forma remota.
Esto resultaría muy útil para cuando se desarrollan nuevas versiones del programa y se quiere instalar esta nueva versión en una máquina que se encuentra trabajando lejos de nuestra central.
En teoría, los PLC están conectados a traves de una VPN a nuestra central, por lo que cada PLC y computadora se encuentran dentro de una misma red local (aunque sea virtual) por lo que entiendo que la comunicación no sería tan distinta, por lo menos a ese nivel. Obviamente, la funcionalidad debería ser lo suficientemente robusta para que en caso de perdida de conexión con el PLC, no se pierda el programa nuevo como también el viejo.

Marcos.

Buenas tardes Marcos.

Como poder se podría si no se me pasa nada por alto. Actualmente no se permite porque se utiliza el protocolo UDP para la transferencia de información (datos, programación, firmware, etc), lo cuál no es confiable para internet. Por lo tanto tendríamos que migrar a TCP para la conexión, no es algo imposible, solo que nos llevaría tiempo y trabajo porque hay varios mecanismos que implementar, ya que hay que modificar tanto firmware como el software de StxLadder a bajo nivel. En ese caso, con que tengas la dirección IP ya podrías programarlo normalmente remotamente.

Por otro lado, también es necesario modificar el Bootloader del PLC, el que te permite actualizar firmware, para esto tendrían que enviar el PLC físicamente ya que se reprograma con herramientas especiales.

En cuanto a no perder el programa viejo durante la programación, esto no sería posible por la limitación en memoria, no hay espacio para que convivan dos programas al mismo tiempo. En caso de perdida de conexión o falla fatal durante una transferencia, el PLC podría reiniciarse y quedar detenido esperando un nuevo programa.

Algo para mencionar, es que en las comunicaciones 4G, las empresas de telefonía suelen bloquear muchos puertos, dejando abiertos los utilizados solo para página web y otros que no recuerdo. Creo que eso es otro punto a considerar en el momento del desarrollo de la funcionalidad. Si lo usas dentro de una VPN (no tengo mucha experiencia en esas redes) a lo mejor no tenés esa limitante.

Si esto es algo importante para ustedes, podríamos pasar una cotización para desarrollar dicha funcionalidad, al costo, más que nada para asignar un tiempo que no teníamos planeado y encararlo para este nuevo año. Avísame por mail o mensaje privado.

Saludos!

4
STX8091 / Re:Escalar señal 4 a 20 mA
« : enero 03, 2020, 19:47:39 pm »
Subimos dos ejemplos extras para leer corriente utilizando un resistor externo en paralelo a las entradas analógicas.

Esto puede ser muy útil para utilizar otra impedancia diferente a los 100 ohms (resistor interno) que utilizan las entradas VIN1 a VIN3, o para utilizar las entradas VIN4 a VIN8 como entradas de corriente también.

  • VinScale_Pawn_V1_250_Version_1.zip: Leer corriente utilizando resistor 250 ohms en paralelo a VIN1 (no colocar jumper J3). Como la entrada VIN1 no admite más de 4.5V, la corriente máxima permitida para leer es 4.5V/250 Ohms = 16 mA.
  • VinScale_Pawn_V4_250_Version_1.zip: Leer corriente utilizando resistor 250 ohms en paralelo a VIN4. Como la entrada VIN4 admite hasta 10V, la corriente máxima permitida para leer es 10V/250 Ohms = 40 mA.

En ambos casos se configura el rango de tensión para la entradas en 0-10V, con la siguiente sentencia:

Código: (Pawn) [Seleccionar]
// Para VIN1
VinSetRange(1, VIN_RANGE_10V)

// Para VIN4
VinSetRange(4, VIN_RANGE_10V)


5
STX8091 / Re:Consulta Bloqueo por falla ethernet (reparación)
« : enero 03, 2020, 17:47:11 pm »
He intentado conectarme mediante notebook independiente pero tampoco se conecta.
Este plc era uno de laboratorio q yo tenia de repuesto. No te lo quise enviar a revisar como quedamos para descartar q fuera algun problema de la red. Hoy no me quedo otra q recolocarlo y comprobe q la red no es el problema sino algo con el puerto ethernet del plc aparentemente. Cuando coloque el nuevo... te enviare el provisorio q esta colocado ahora para q lo chequees tambien.

De este sospecho que tenga mal el hardware ethernet, cuando tengas el remplazo, lo reparamos también.

Saludos!

6
STX8091 / Re:Consulta Bloqueo por falla ethernet (reparación)
« : enero 03, 2020, 17:45:57 pm »
El plc reemplazo de aquel q producia la falla consultada en este foro acaba de sufrir una falla de algun tipo q no alcanzo a discernir. El resultado es q no muestra salida alguna de datos por el sh300... todos valores en cero. No hay salidas pwm y el led debug no parpadea o lo hace muy rápido. Como no tengo otro nuevo... le coloque nuevamente el q hacia la falla de puerto ethernet es decir.... el plc viejo (reemplazo provisorio) corre sin problemas mientras no conecte el puerto ethernet. El lunes por la mañana vamos a estar enviandote el q se averio hoy para q puedas chequear a que se debe la falla. No obstante te pido me cotices un 8091-d2 nuevo para reemplazar el provisorio q puse.
Mi correo es xxxx@hotmail.com.
Lo necesitaría con la mayor urgencia posible.

Buenas tardes Mariano, te envié la cotización por mail.

Respecto a este último, envíalo cuanto antes así te lo reparo, probablemente algún daño por tensiones si no tenés repuesta del mismo.

Supongo que ya has verificado reiniciar memoria a fábrica o ver si no está activado en modo bootloader (esperando recibir firmware).

Saludos!

7
Kinco / Re:Conexión mt4434te kinco con plc modicon m221ce16r
« : diciembre 23, 2019, 11:59:37 am »
Buen año, Carlos

Igualmente, buen comienzo de año, saludos!

8
Kinco / Re:Conexión mt4434te kinco con plc modicon m221ce16r
« : diciembre 23, 2019, 10:59:28 am »
Buenos días,

No utilizo dicho PLC como para ejemplificar, pero si podrías utilizar el protocolo universal ModBus TCP para conectarlos.

El PLC debe especificarse como Escavo y el HMI como Maestro. En la configuración del HMI especificar la dirección IP del PLC, así puede acceder.

ModBus TCP es un protocolo en que podés acceder a registros y bits del PLC desde el HMI. En el manual del PLC te dará mejores detalles de como configurarlo.

Para el HMI, hay un ejemplo para ModBus TCP en el siguiente link:

http://slicetex.com/hmi/kinco/files/examples/FirstTest_MT4434TE.zip

http://slicetex.com/hmi/kinco/docs.php

El ejemplo es básico, configura al HMI para leer registros desde el PLC, así como escribir y leer bits. Podés utilizarlo como punto de partida.

Saludos!

9
El tema ha sido movido a Kinco.

Acceda al mensaje desde el siguiente link:

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

10
STX8091 / Re:Escalar señal 4 a 20 mA
« : diciembre 16, 2019, 20:09:02 pm »
Me ayudaría mucho a entender lo que usted me describe, con un ejemplo en pawn, para convertir la señal de corriente en valores de -100 a 1600 mbar

Buenas, te adjunto abajo en el archivo .ZIP un proyecto en Pawn con el ejemplo.

Te creé una función (macro) llamada VinScale(c) que acepta como argumento "c" la corriente de la entrada 4-20 mA y te devuelve el valor escalado entre -100 y 1600 mBar. Así no debés despejar y es más fácil.

La función VinScale() no es otra cosa que la ecuación de la recta que pasa por dos puntos, despejada para "Y":

Código: (Pawn) [Seleccionar]
#define VinScale(%1)       ( (((%1)-X1)/(X2-X1))*(Y2-Y1) + Y1 )
En el ejemplo, solo debés configurar las constantes Y1 e Y2, que son los valores de salida deseados para X1=0.004 (4mA) y X2=0.02 (20mA).

Los siguientes valores son para salida -100 y 1600 mBar:

Código: (Pawn) [Seleccionar]
//
// Punto 1 (importante colocar punto decimal)
//

#define X1     (0.004)     // Corriente (4 mA)
#define Y1     (-100.0)    // -100 mBar.

//
// Punto 2 (importante colocar punto decimal)
//

#define X2     (0.02)      // Corriente (20 mA)
#define Y2     (1600.0)    // 1600 mBar.

Probá cargar el ejemplo en el PLC y desde Virtual-HMI vas a poder observar los valores de corriente leídos y la salida en mili-bar correspondiente:



Quedamos a disposición si algo no se comprende.

Saludos!

PD: Podés convertir el macro VinScale() a una función si necesitás hacer el código más versátil o agregar otros parámetros. Queda a criterio.

11
STX8091 / Re:Escalar señal 4 a 20 mA
« : diciembre 16, 2019, 13:36:05 pm »
Buenos días,

Supongo que se refiere a escalar una señal, es decir, teniendo una señal lineal de 4-20 mA, llevarla a un valor o magnitud física dentro de una escala.

Linealizar es otro concepto, ya que linealizar significa convertir una señal no-lineal (que puede tener un comportamiento logarítmico por ejemplo), en una señal lineal. Eso es algo más complejo, ya que se necesita conocer las formulas físicas de la señal.

En el caso de escalar la señal, es un tema conceptual sencillo, hay que aplicar la ecuación de la recta que pasa por dos puntos.

Supongamos que 0.004 amperes representan 0 grados Celcius y 0.02 amperes representan 1000 grados Celsius.

Ecuación de la recta por dos puntos:

(x-x1)/(x2-x1)=(y-y1)/(y2-y1)

Hacemos:

  • x1=0.004 (4mA)
  • x2=0.02 (20mA)
  • y1=0 (limite inferior, 0 °C)
  • y2=1000 (limite superior, 1000 °C)

Remplazando en ecuación:

(x-0.004)/(0.02-0.004)=(y-0)/(1000-0)
x/0.016 - 0.25 = y / 1000

Despejando "y" obtenemos la ecuación final a implementar en Pawn:

y = 62500 x - 250

Obtenemos una ecuación, cuya salida "y" estará limitada entre 0 y 1000 para todos los valores de "x" entre 0.004 (4mA) y 0.02 (20mA)

Si remplazás "x" por valores de corriente entre 0.004 y 0.02, obtenés valores entre 0 y 1000 que serán los valores de temperatura.

Para otras condiciones, simplemente cargá la ecuación de la recta papel y despejar para obtener la ecuación final para aplicar en Pawn.

Espero que sea esto lo que buscás.

Si no se entiende algo, avísame.

Saludos!





12
Kinco / Re:Mostrar ventana Pop-Up
« : diciembre 16, 2019, 13:13:26 pm »
Buenos días te paso el ejemplo en los siguientes links:

PROYECTO PLC:
www.slicetex.com/hmi/kinco/files/examples/popup/HmiKincoPopUp1.zip

PROYECTO HMI:
www.slicetex.com/hmi/kinco/files/examples/popup/PopUp1_MT4434TE.zip

DESCRIPCIÓN:

El PLC se conecta a la pantalla HMI con ModBus TCP, siendo el PLC Esclavo y la pantalla Maestra.

En la pantalla del HMI se mostrarán dos ventanas Pop-Up.

NETWORK #1:
Simplemente obtenemos el valor del bit ModBus "4002" y lo copiamos a la variable "Flag".

NETWORK #2:
La ventana Pop-Up #1 se muestra con método indirecto (componente INDIRECT WINDOW en HMI).
En este caso el PLC escribe en el registro 40010 el número de ventana a mostrar. Si el valor del registro es 0, la ventana se cierra.

NETWORK #3:
La ventana Pop-Up #2 se muestra con método directo (componente DIRECT WINDOW en HMI).
En este caso el PLC escribe en el bit 4003 el valor 0 o 1.
Si el valor del bit es 1, la ventana se muestra, si es 0, la ventana se cierra.
Como en el ejemplo el bit se modifica por el timer cada 2 segundos, el efecto en pantalla es una ventana pop-up que aparece y desaparece.

PRUEBA:

Compile el proyecto seleccionando adecuadamente su modelo de PLC.

Transfiera el programa al PLC y el programa de diseño al panel HMI.

La ventana Pop-Up #1 se mostrará si toca el interruptor en pantalla.

La ventana Pop-Up #2 se mostrará cada 2 segundos.

MÁS INFORMACIÓN:

Los componentes del HMI (INDIRECT/DIRECT WINDOW) se explican en el manual del HMI Kinco:

Sección 4.8 (pág. 211) "WINDOW COMPONENT" (versión 1506).

www.slicetex.com/hmi/kinco/docs.php#Manuals

CONSIDERACIONES:

El el programa de diseño del HMI, a veces es necesario limpiar la compilación antes de transferir para forzar que se apliquen los últimos cambios al proyecto. Para limpiar la compilación, seleccione menú "Tools > Clear build result".

IMÁGENES:

COMPONENTE INDIRECT:


COPONENTE DIRECT:


VENTANA POP-UP:


DISEÑO GENERAL:


Saludos!

13
STX8091 / Re:Muestrear dos señales al mismo tiempo
« : diciembre 03, 2019, 21:39:49 pm »
Buen día,  el tiempo de muestreo lo tengo en 630us que me dan 4 ciclos de una señal de 50Hz, los valores rms funcionan bien con eso no tengo problema pero hice lo que me decías y sigue siendo errático el valor, cómo que se mantiene estable un tiempo y después empieza nuevamente a mandar cualquier valor... Cree dos Buffer de 10 paquetes para ir guardando en uno mientras el otro hace el calculo con sus contadores pero  sigue igual...  Podrá ser que se pierdan tramas UDP y ahí se pierde el sincronismo? O que la trama invierta l orden de los paquetes cuando envía varios del mismo canal? Porque no le encuentro otra explicación... o si hay otra forma de calcular el desfadaje a través de las entradas digitales metiendo medio ciclo pasando las señales por un Smith Trigger? Se me ocurre si puedo medir el tiempo entre ambas y no por medio algebraico

Buenas, estuve haciendo unas pruebas, por ejemplo, en 200 mil muestras, hay un pequeño defasaje o corrimiento de 2 a 4 muestras entre dos canales y puede ser que a la larga, eso sea más pronunciado. Lo que hice fue conectar una senoidal (con la salida analógica 0-10V) a dos canales VIN al mismo tiempo y loguear las muestras de cada canal en dos archivos diferentes. Luego ver si el valor del número de muestra X en canal A, coincide con el número de muestra X en el canal B.

Te paso el log:

http://www.slicetex.com/temp/samples.zip

En el archivo A y B, están la muestras con el formato [número de muestra,valor].

Creo que lo que podés hacer más efectivo, para evitar la red, es calcular el RMS y factor de potencia en modo PLC, utilizando el sampler para llenar los arrays. Activando el sampler para muestrear y hacer el calculo, y luego desactivar. Luego activar y calcular de nuevo, para evitar un posible desincronismo en operación prolongada. Total, supongo que el coseno necesitás tenerlo actualizado casa cierto tiempo.

Luego pódes enviar el dato ya calculado a Visual C# desde el PLC.

No sé si este enfoque te sirve.



Por metódo digital, se puede medir el ancho de un pulso o frecuencia utilizando los contadores rápidos, pero no la diferencia de tiempo entre dos pulsos, al menos no hay funciones disponibles desarrolladas.

Saludos!

14
STX8091 / Re:Muestrear dos señales al mismo tiempo
« : diciembre 02, 2019, 21:09:15 pm »
Hola gracias por responder, lo hice así y funciona me muestra las señales en el programa que estoy diseñando pero cuando calcula el coseno me da cualquier valor porque las señales cambian el desfadaje como si no se muestrearan al mismo tiempo , en un momento largan la fase adecuada que debería tener como la veo en el osciloscopio y en otro las cambia y el cálculo del coseno tambien....

Buenas tardes.

El dispositivo muestrea ambos canales al mismo tiempo (con una diferencia mínima entre muestras equivalentes), espera que se llene un buffer de 127 muestras de un canal y las envía en un paquete de 127 bytes por ethernet en periodos constantes, mientras continua con el muestreo.

Lo que puede pasar es que al momento de enviar, el canal 1 haya completado su muestreo, mientras el canal 2 no, entonces, envía un paquete del canal 1, y en la siguiente transmisión ambos canales pueden haber completado el muestreo, por lo que envía los paquetes del canal 1 y 2, o envia dos paquetes de muestras seguidas del canal 2, y luego un paquete del canal 1.

Es decir, el orden de llegada de paquetes de un mismo canal es secuencial y consecutivo, pero en dos canales diferentes no quiere decir que los paquetes lleguen 1 a 1 sincronizados al mismo tiempo.

Por lo tanto, de la forma que calculas el coseno, desde los eventos de llegadas, puede que estés comparando muestras en diferentes tiempos.

Lo que deberías hacer, es crear por ejemplo un array que permita almacenar una X cantidad de paquetes de ambos canales.

Por ejemplo:

Array_Canal_1[127 * X]
Array_Canal_2[127 * X]


Donde X es por ejemplo un número mayor o igual a 10 (jugar con este valor, es para almacenar varios paquetes seguidos).

Entonces, cada vez que almacenás un paquete de un canal, incrementás un contador:

Paquetes_Canal_1++

o

Paquetes_Canal_2++


Cuando ambos contadores de paquetes, llegan a 10, realizas el cálculo.

Deberías contemplar también, que una vez que llegan los contadores a 10, los paquetes que sigan llegando, se almacenen en otro buffer, para el siguiente calculo cuando lleguen nuevamente a 10, y así sucesivamente. Podés utilizar un array bidimensional, para mayor prolijidad:

Array_Canal_1[2][127 * X]

Cuando se llena el array Array_Canal_1[0][127 * X], seguis almacenando en el array Array_Canal_1[1][127 * X], y luego volvés a reutilizar el primer array.


La única parte que depende de las muestras de ambas señales es:

Código: (C#) [Seleccionar]
mainForm.Wi = mainForm.Wi + mainForm.V[i] * mainForm.I[i];
Ya que si solo necesitás obtener el TRUE RMS de ambos canales, y no valores instantáneos, no hace falta ir almacenando en arrays, sino simplemente ir sumando cuadrados.




Por otro lado, veo que utilizás la formula de Valor TRUE RMS, si mal no recuerdo para que el valor sea válido, debés muestrear varios ciclos de la señal (por ejemplo 5 o más) para recién realizar el calculo de valor eficaz, así el calculo es más preciso, ya que se promedian sumatorias de cuadrados. Si en las 127 muestras que tomás, entran varios ciclos de la señal periódica, entonces es correcto, pero conviene dar un margen.

En este post, hay algunos comentarios del valor TRUE RMS que pueden ser de utilidad:

http://foro.slicetex.com/index.php?topic=329.msg1775#msg1775

Si no se me pasa nada por alto, estas serian las consideraciones.

Saludos!




15
Kinco / Re:comunicacion modbus tcp server con plc slicetex 8092
« : diciembre 02, 2019, 11:28:02 am »
Buenos días,

Hice varias funciones de comunicacion para poder enviar todos los bits. En cada una de estas funciones deberia inicializar la comunicacion Modbus tcp server? o solo inicializo una vez en la funcion de inicio? el hmi y el plc estarian interactuando todo el tiempo...me imagino que con inicializar una sola vez bastaria.

Como el PLC es esclavo, y el HMI es maestro, solo hace falta inicializar una sola vez el servidor ModBus TCP. Hacerlo en el diagrama Inicio.sld es la opción recomendada. Una vez que se inicializa, el PLC acepta conexiones desde el HMI normalmente.

Ejemplo:

http://slicetex.com/hmi/kinco/files/examples/ModBusTcpHmiKinco.zip



Para poder leer/escribir los bits, tengo que hacer un get y un load en la misma direccion? con el load escribo al hmi y con el get tomo un valor del hmi para guardarlo en el plc no es asi?

Claro, el PLC tiene una copia en memoria RAM de los registros y bits que el HMI constantemente accede a través de ModBus, ya sea para leerlos o escribirlos. El PLC no inicia comunicación con el HMI, porque es esclavo. Es el HMI que constantemente inicia comunicación para leer/escribir datos al PLC (utilizando su dirección IP).

Lo que hacés con el PLC, es leer/escribir esa memoria RAM que el HMI accede en forma de registros o bits.

Por lo tanto en el PLC, con GET, lees un registro o bit. Con LOAD, cargás un bit o registro (que luego el HMI puede leer).

Las direcciones de escritura/lectura en el PLC y el HMI son equivalentes.

Si el PLC escribe un bit en dirección 4002, el HMI puede leer dicho bit en la dirección 4002 al comunicarse vía ModBus TCP.

Espero que se entienda.

Saludos!

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