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 ... 64
1
STX8091 / Re:Conexión PLC - router - PC
« : diciembre 13, 2018, 12:33:57 pm »
estoy conectado al plc a través del router de casa. consigo ejecutar los ejemplos (que están muuuuuy buenos, gracias) del AN30 y a través del navegador de la pc conectada al router interactuar con el PLC. Sin embargo no consigo acceder al PLC desde otra pc o un telefono no conectado por cable al router. ¿que me está faltando configurar?

Buenos días Francisco.

Cuanto tu router se conecta a internet lo hace a tráves de una IP pública que le asigna tu ISP (Proveedor de internet) y que cambia periódicamente.

Podés ver la IP pública que tenés asignada en tu router, accediendo desde el navegador a la siguiente dirección:

https://www.whatismyip.com/es/

En la página de configuración del router, también podes verla.

El paso siguiente, es configurar al router para que cualquier intento de conexión desde afuera de la red privada (LAN) al puerto TCP número 80 (donde el PLC escucha para el servidor web) se redirija (forward) a la IP que tiene el PLC asigna en la red privada (por ejemplo 192.168.1.81).

En mi router, esto se configura como en la siguiente imagen:



Si observás, "Service Port"  número 80 es el puerto público (que ven de afuera) y el router todas las conexiones a dicho puerto, las envía al puerto "Internal Port" número 80 en la IP Address "192.168.1.81" (PLC) con el Protocol "TCP".

La configuración en tu router dependiendo del modelo y marca, puede ser ligeramente diferente, pero seguramente similar, es el mismo procedimiento.

Podes buscar en Youtube o Google como hacer un "forward" de puertos con tu modelo de router.

Una vez que lo hagás, podes desde el navegador de tu telefono usando 3G/4G acceder a la IP publica del router, y de esta forma, te va aparecer la página del PLC.



Luego que lo anterior funcione, la mayoría de los router permiten informar la "IP Publica" (que es dinámica, porque cambia) a un servidor DNS para que te asignen un nombre, entonces, luego accedes mediante un nombre y no una IP que cambia periódicamente.

Hay dos servidores de IP dinámicas que la mayoría de los router admiten:

  • www.noip.com: Permite una cuenta gratís, pero cada tanto debes acceder para mantenerla activa, sino pagas unos dolares.
  • dyn.com/dns: Más difundida, pero debes pagar unos dolares por año por el servicio.

Una vez que creas un usuario allí y te dan un nombre, se lo informas al router en una página similar a esta:



Y luego podes acceder con el navegador al PLC, con un nombre tipo midispositivo.ddns.net (o lo que este disponible) de forma más simple.

Saludos!





2
Kinco / Re:Programación Kinco
« : diciembre 11, 2018, 17:16:09 pm »
Como hago para visualizar en una Kinco MT 4434TE un valor float ya que transmitiendo en modo tcp solo puedo enviar valores int32.

Buenas tardes.

La forma más simple, es en el PLC multiplicar el valor Float por 100 (para preservar dos decimales, o correr la coma hacia la derecha) y luego convertirlo a Int32.

En Pawn, podes hacerlo muy simple de la siguiente forma:

VariableInt32 = FloatToInt(VariableFloat * 100)

Notar como utilicé la función FloatToInt() para convertir un valor Float en otro Int32.

En Ladder, también tenes componentes para hacerlo.

Luego en el HMI, en los atributos del objeto gráfico para mostrar el entero, vas a la pestaña "Numeric Data" y elegís "Integer: 4" (digitos para la parte entera), "Decimal: 2" (digitos para la parte decimal), como te muestra la siguiente imagen:



De esta forma, el HMI le coloca el punto decimal al entero automáticamente.

Obviamente, si necesitas un solo decimal, podes multiplicar por 10, y no por 100, y luego en el HMI configurar para que muestre un solo decimal.

En la imagen que te pase en Data Type puse "signed int", en caso que el entero tenga parte negativa, pero podes usar "unsigned int" si solo son valores positivos.

Saludos!

3
StxLadder - Slicetex Ladder Designer Studio / Re:Carga de registros
« : diciembre 11, 2018, 16:56:43 pm »
la comunicación pantalla-plc la voy a hacer a traves de un puerto RS 485.

Buenas tardes.

Primero, necesitas cablear de acuerdo a la configuración de los terminales del puerto RS485 del PLC, como se muestra en la hoja de datos (página 32/31):



El terminal D+ (no inversor, llamado "B" también) debes conectarlo al mismo terminal del panel HMI, lo mismo que el terminal D- (inversor, llamado "A" también), son los dos cables que necesitas. Algunos sistemas necesitan resistores de polarización, pero en general no. Otra opción más simple es RS232.

Luego debes colocar los jumpers J1 y J2 en el PLC, para elegir seleccionar interfaz eléctrica RS485 en el puerto del PLC.

Esto es en cuanto a configuración de hardware.



Luego la comunicación entre el PLC y el HMI, debes realizarla mediante protocolo ModBus RTU. Donde el PLC es esclavo y el HMI es maestro.

Hay una nota de aplicación que explica como utilizar ModBus RTU en el PLC como esclavo (llamado servidor también):

LINK: AN023, UTILIZAR PLC COMO SERVIDOR MODBUS RTU (ESCLAVO)

Lo primero que hay que entender es el mecanismo ModBus RTU.

El HMI lee y escribe direcciones en el PLC que representan un área de memoria, todo el tiempo, en intervalos periódicos. Luego el PLC lee o escribe dicha área de memoria actualizando sus valores y de esta forma se comunica con el HMI.

Las direcciones más utilizadas son:

- 6000 a 6128 (Area GP-COILS, cada dirección es un bit, es decir puede almacenar 0 o 1).
- 42001 a 42064 (Area Holding Register, cada dirección tiene 16-bits y puede almacenar valores numéricos).

En tu HMI, debés buscar como utilizar ModBus RTU, para que puedas hacer un diseño básico como por ejemplo, leer un valor entero desde el PLC y mostrarlo en pantalla.

En la misma nota de aplicación, podes fijarte el siguiente ejemplo para descargar para lenguaje Ladder:

http://slicetex.com/docs/an/an023/ModBusRtuServer1.zip

El mismo, incrementa 4 variables de un array en el PLC cada 300 mS y los deposita en las direcciones 42001, 42002 y 42003 que representan registros de 16-bits que podes leer con ModBus RTU.

En tu HMI, deberías con algún objeto gráfico, pedir el valor de esos registros (direcciones  42001, 42002 y 42003) e imprimirlos en pantalla, para así probar comunicación. Si se incrementan y no dan errores, es porque tenés comunicación.

Fijate en la incialización del programa del PLC, elegir el INTERFACE RS485, que suele ser un componente localizado en el diagrama Incio.sld. Si utilizas lenguaje Pawn, es una opción de la función de inicialización, también hay ejemplos.

Esto es lo básico, para que puedas avanzar, luego podes probar escribir valores desde el HMI en algún registro y así leer desde el PLC.

Una vez que tengas esto funcionando, ya es más fácil explicarte el mecanismo para escribir y guardar en memoria.

Otra nota de aplicación que puede ser util es la AN024, si bien es para otro HMI, explica los mecanismos que pueden ser similares en tu HMI DELTA.

Saludos!













4
StxLadder - Slicetex Ladder Designer Studio / Re:Carga de registros
« : diciembre 11, 2018, 10:47:24 am »
Buenos días.

¿Qué puerto de comunicaciones tenés disponibles en la pantalla o pensás utilizar para conectar al PLC? ¿Ethernet, RS232 o RS485?.

Saludos!

5
Kinco / Re:Programación Kinco
« : diciembre 04, 2018, 11:48:23 am »
Buenos días.

Como envío desde la hmi un array para ser leído con MODBUS TCP SERVER - LEER REGISTROS HOLDING(MB SRV GET REGS).

¿Querés enviar datos desde el HMI al PLC?.

Lo primero que hay que entender es el mecanismo ModBus TCP.

El HMI lee/escribe direcciones en el PLC que representan un área de memoria de forma constante. Luego el PLC lee o escribe dicha área de memoria actualizando sus valores y de esta forma se comunica con el HMI.

La direcciones más utilizadas son:

- 4000 a 4128 (Area GP-COILS, cada dirección es un bit, es decir puede almacenar 0 o 1).
- 40001 a 40064 (Area Holding Register, cada dirección tiene 16-bits y puede almacenar valores numéricos).

Por ejemplo, desde la página podes descargar un ejemplo que te permite leer valores enteros desde el PLC en el HMI o escribir un valor entero en el PLC desde el HMI:



Para leer un registro de 16-bits (notar como address type es 4X, en los atributos del componente del HMI):



Para escribir un registro de 16-bits (notar como address type es 4X, en los atributos del componente del HMI):



Dependiendo de los datos que tengas en HMI, podes escribirlos en el PLC de la misma forma en registros de 16-bits.

En el PLC, por ejemplo para leer el registro 40017 escrito desde el HMI lo hacés como sigue:



Y si querés escribir 4 registros al mismo tiempo para leerlos luego del HMI, hacés:



En la sección de manuales del HMI hay ejemplos listos para descargar:

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

Por ejemplo, para el PLC:

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

Y para el HMI (MT4532TE):

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

Fijate de cargarlos al HMI y al PLC, para ver como lo hace, y luego los aplicás a tu proyecto.

Saludos!



6
STX8091 / Re:Conexión PLC - router - PC
« : noviembre 28, 2018, 12:29:08 pm »
Buenas tardes Francisco,

Esta bien como lo estas diagramando según el esquema.

Para tener en cuenta, si al router lo conectás a la WEB vía ADSL, entonces tanto el HMI, PLC, PC, están en una red privada, donde podes definir las IP libremente. Es decir 192.168.1.81 para el PLC, mientras que el HMI y PC se pueden configurar automáticamente con DHCP.

Si al router, lo conectas a la WEB, mediante otra conexión ethernet a la red privada de la empresa, entonces pedí asesoramiento al área de sistemas de la empresa para configurar correctamente los parámetros de RED, es decir NETMASK, GATEWAY, etc.
En ese caso el router puede funcionar como Wireless Router u otra opción, en la que no se conecta por ADSL a internet.
También en ese caso debes deshabilitar la asignación de IP por DHCP del router, ya que eso lo puede hacer la red privada de la empresa.

Si la empresa maneja en su red privada números de IP como por ejemplo 10.0.0.X, el PLC va a tener que tener una IP compatible que esté en la misma red, por ejemplo 10.0.0.81. También en el PLC debes configurar el GATEWAY desde StxLadder en las opciones de red, esto para que sepa por donde los paquetes deben salir al exterior.

Fíjate de entrar a los parámetros de configuración del router a través del navegador para definir modos de funcionamiento y parámetros de redes.

En principio eso.

Saludos!


7
Kinco / Re:Programación de HMI Kinco y PLC STX8091-D2
« : noviembre 28, 2018, 09:46:41 am »
Buenos días. Las dudas o consultas puntuales que tengas no hay problema en que las realices para que entiendas como funciona.

Saludos!

8
Kinco / Re:Programación de HMI Kinco y PLC STX8091-D2
« : noviembre 20, 2018, 12:27:25 pm »
Buenos días,

En la sección de manuales del HMI hay ejemplos listos para descargar:

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

Por ejemplo, para el PLC:

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

Y para el HMI (MT4532TE):

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



Lo primero que hay que entender es el mecanismo ModBus TCP.

El HMI lee/escribe direcciones en el PLC que representan un área de memoria. Luego el PLC lee o escribe dichas area de memoria y de esta forma se comunica con el HMI.

Se supone en los ejemplo que el PLC tiene la dirección IP 192.168.1.81, que es a donde el HMI intetará comunicarse por Ethernet.

La direcciones más utilizadas son:

- 4000 a 4128 (Area GP-COILS, cada dirección es un bit, es decir puede almacenar 0 o 1).
- 40001 a 40064 (Area Holding Register, cada dirección tiene 16-bits y puede almacenar valores numéricos).

La nota de aplicación AN022 profundiza sobre el tema.



Así mismo, te adjunto en este mensaje (ver abajo) un ejemplo básico para activar un bit de memoria, en este caso el HMI escribe un "1" o "0" con un interruptor la dirección 4002, que es el sector de memoria GP-COILS (dispones de 128, que solo pueden tener 1 o 0 de valor).

El PLC cuando recibe dicho valor en la posición "4002" conmuta la salida DOUT4 y copia el valor a la variable "a".

Luego utiliza el valor de la variable "a" para conmutar el LED DBUG del PLC, y también escribirlo en la dirección ModBus 4004.

El HMI lee nuevamente la dirección 4004, y activa o desactiva una lampara.



Al hacer click en los componentes del HMI, editas la dirección y la forma de lectura y escritura:

Para leer un bit (notar como address type es 0X):



Para escribir un bit (notar como address type es 0X):



En el caso del ejemplo completo de la página:



Para leer un registro de 16-bits (notar como address type es 4X):



Para escribir un registro de 16-bits (notar como address type es 4X):




Quedo a disposición por cualquier duda.

Saludos!



9
SH-300 / Re:PLC No conmuta Salidas DOUT 1 y 2
« : noviembre 06, 2018, 18:00:04 pm »
Conmutan la 3, 4 y 8 perfectamente pero la 1 y la 2 no lo hacen.
Los números de registros cargados en la pantalla son 6001, 6002 ... 6008.

Probé con 1, 2 ... 8 pero el relé enciende y se apaga inmediatamente después.

Las lámparas virtuales en la pantalla conmuntan bien, lo único que no funciona son las salidas 1 y 2.

Buenas tardes Mariano,

No lo pude probar hoy, pero por lo que veo en el programa, estás usando números en vez de las constantes DOUT1, DOUT2, DOUT3, etc en las funciones DoutSetOn() y DoutSetOn().

Proba remplazarlas todas por las constantes respectivas:

Código: (Pawn) [Seleccionar]
   if(MbRtuServGetGpCoil(6001)){DoutSetOn(DOUT1);}
   else{DoutSetOff(DOUT1);}
     
   if(MbRtuServGetGpCoil(6002)){DoutSetOn(DOUT2);}
   else{DoutSetOff(DOUT2);}
     
   if(MbRtuServGetGpCoil(6003)){DoutSetOn(DOUT3);}
   else{DoutSetOff(DOUT3);}
     
   if(MbRtuServGetGpCoil(6004)){DoutSetOn(DOUT4);}
   else{DoutSetOff(DOUT4);}
     
   if(MbRtuServGetGpCoil(6008)){DoutSetOn(DOUT8);}
   else{DoutSetOff(DOUT8);}

Las constantes DOUT tienen distinto valor numérico que utilizar "1, 2, 3, ..., etc".

Por ejemplo, hacer DoutSetOff(3) es equivalente a hacer DoutSetOff(DOUT1 | DOUT2), apaga las dos al mismo tiempo. Ya que las constantes representan BITs, y el número 3, en binario es 11, es decir, ambos bits en la posición de DOUT1 y DOUT2.

Avísame si te sigue fallando.

Saludos!


10
STX8091 / Re:Leer o escribir a SQL server express
« : octubre 25, 2018, 15:59:51 pm »
Hola, que tal? tengo una duda con respecto al la obtencion de los datos del plc, por medio de php  se pueden obtener los registros del plc? solo para leer y visualizar, nada de escribir en el plc,  y estos datos guardarlos en una base de  datos como respaldo

Buenas tardes. Si, debés enviar los datos a tráves de una conexión HTTP o web al servidor, mediante una petición GET o POST, como se explica en el post de arriba. Luego desde PHP obtenés dichos valores y los guardás en base de datos o en archivo.

La nota de aplicación AN032 describe como realizar peticiones GET o POST.

Saludos!

11
STX8091 / Re:Ayuda para configurar WebServer
« : octubre 21, 2018, 19:19:54 pm »
Al cambiar el puerto al 2018 (por probar algo) ocurre exactamente lo mismo. Accedo al WebServer por LAN ingresando 192.168.1.81:2018 en el navegador pero desde afuera de la red nada...

A veces las compañías de telefonía móvil bloquean algunos puertos, a diferencia de la banda ancha cableada.

Fíjate probar para el web server puertos estándar, como el 80, o los alternativos oficiales, como el 591, 8008, 8080.

https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=http-alt

El router que dispongo tiene para SIM 4G. La misma ya está configurada con un chip de Movistar y tengo acceso a internet mediante el router. Además ya está configurado el servicio DDNS mediante la página no-ip.com para que el router actualice su IP dinámica a un determinado hostname. Todo esto funciona correctamente y puedo ver desde la página de administración de hostnames de no-ip.com la IP dinamica del router actualizada constantemente.

Otra prueba que podes realizar, es utilizando la IP dinámica y no el nombre de dominio, así descartás algún error de DNS o tablas en no-ip.com.

Si tenés la IP dinamica asignada como XXX.XXX.XXX.XXX, accedes al PLC con esa IP, estando el "port forward".

Finalmente, es ver si el router esta enviando bien los paquetes de afuera, por ejemplo colocando una PC en el router con web-server, y hacer una prueba rápida.

Podes hacer un web server rápido con UwAmp.

Saludos!

12
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!


13
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!


14
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!

15
¡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!





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