Respuestas en los foros creados.
-
autorPublicación
-
Febrero 8, 2021 en 5: 58 pm en respuesta a: Comunicación Modbus RTU con medidor de energía SDM120 #58986tommas.cavallinipartícipe
En primer lugar, pido disculpas por la confusión: tengo que leer tanto el EnergyMeter como las electroválvulas, sobre este último también debo escribir: como ambos se comunican en RTU pensé que podría preguntar directamente aquí sin tener que abrir otro tema.
Al llegar a nosotros, no entendí la solución propuesta: pensé en separar la fase de lectura y escritura al no conectar los FB en cascada. De hecho, la lectura debe ser continua mientras que la escritura ocurre solo cuando e se Quiero cambiar algunos parámetros.
Febrero 8, 2021 en 11: 33 am en respuesta a: Comunicación Modbus RTU con medidor de energía SDM120 #58983tommas.cavallinipartícipePerfecto, ahora mi problema radica en la gestión del tiempo de lectura y escritura de diez electroválvulas.
Si para la lectura es suficiente asociar el programa a la tarea Atrás de tal manera que se realice periódicamente, la escritura en cambio me gustaría poder realizarla solo siguiendo una condición particular: He visto que LogicLab no proporciona tareas del evento, entonces, ¿cómo podría hacerlo?
tommas.cavallinipartícipePerfecto, probé todo como me explicaste y funciona, así que muchas gracias.
Pero ahora tengo otro problema: se me pidió que retrasara la lectura en Modbus para realizar una lectura por minuto. Para hacer esto pensé en actuar sobre la voz de Delay: ¿es correcto poner un retraso de 60 para mi final o sería mejor poner un eTON antes de Enable para retrasar con el temporizador?
En caso de que vaya a modificar el Delay (poniendo 60), teniendo dos modbusMasters en cascada, en el ítem Delay del segundo FB debo poner 61 (60 del retraso anterior + 1 entre las dos lecturas) o solo necesito insertar el retraso entre las dos lecturas (1 seg) y en la primera deja 60?
tommas.cavallinipartícipeLes digo de inmediato que, lamentablemente, la lectura de los valores del tomador de datos no se realiza correctamente si VarSwap (Pensé en usar esto al principio, pero sale un número muy alto) mientras que si uso el FB BEArrayToVar funciona y me da el valor leído correctamente.
Para el resto, 36 de los 40 están en registros consecutivos, por lo que para estos puedo ejecutar un solo comando de lectura (especificando la primera dirección desde la cual comenzar en Dirección y en Puntos del ModbusMaster cuántos datos quiero leer, en mi caso 36 * 2, 72). En el búfer de ModbusMaster, pondré una matriz que puede contener 36 datos (llamada ArrayA para que quede claro), esta matriz se conectará a BEArrayToVar en la entrada Source y Destination Pondré otra matriz (ArrayB) que contendrá todos los valores leídos correctamente, ¿verdad?
Mi pregunta es: automáticamente, después de cada lectura, los datos leídos van a ArrayA, se ejecuta BEArrayToVar y se almacena en ArrayB. En el siguiente ciclo de lectura, la segunda lectura de datos va a ArrayA inmediatamente después de la anterior automáticamente, y luego va a ArrayB almacenada en una fila, ¿verdad?
tommas.cavallinipartícipeRealicé una comunicación Modbus TCP / IP con un datataker utilizando el FB SysTCPClient y ModbusMaster, al final de la cual, una vez recibidos los datos en IEE754, realicé una conversión con el BEArrayToVar FB.
En este punto, el problema es que tengo que leer 40 valores del mismo dispositivo y guardar cada uno de ellos en una variable propia: ¿qué puedo hacer?
También he visto el FB recomendado por ella, el ACModbus, pero el problema es que una vez que he leído estas variables debo necesariamente realizar la conversión con BEArrayToVar para cada una de ellas de forma individual y instanciar una variable para cada uno de los datos, así que Me temo que no puedo usarlo.
¿Qué me recomiendas que haga para solucionar el problema?
Enero 28, 2021 en 11: 21 am en respuesta a: Comunicación Modbus RTU con medidor de energía SDM120 #58894tommas.cavallinipartícipeAhora ha surgido el problema de que a través de la conexión ModBus RTU también quiero escribir datos. Entonces me preguntaba: si para leer usamos varSwap FB para convertir los valores a REAL, ¿cómo lo hago para escribir?
Pensé que ingresaría los valores para escribir en el elemento Buffer del ModbusMaster FB, pero creo que entiendo que no puedo escribir un valor REAL sino un valor en el estándar IEE754, ¿verdad?
¿Cómo puedo realizar la conversión inversa VarSwap?
Enero 15, 2021 en 6: 14 pm en respuesta a: Comunicación Modbus RTU con medidor de energía SDM120 #58808tommas.cavallinipartícipeProbé el método FB ModbusMaster cascada y funciona, muchas gracias por la ayuda!
Sus videos y sus explicaciones han sido fundamentales sobre todo porque acabo de ingresar al mundo de los PLC, le estoy realmente agradecido. En caso de que tenga otras dudas, publicaré en el foro que está muy bien hecho y las respuestas son más rápidas de lo que esperaba.
Enero 15, 2021 en 10: 36 am en respuesta a: Comunicación Modbus RTU con medidor de energía SDM120 #58805tommas.cavallinipartícipeHola, mientras tanto, muchas gracias por su atención. En mi proyecto utilicé los FB SysSerialPort y ModbusMaster y VarSwap.
Luego intenté conectar otro ModbusMaster FB (que identifica el segundo SDM120 que tiene el nodo 2) usando el mismo FB para el puerto serie. En el puerto EN del segundo ModbusMaster agregué un eTON con un tiempo de 200ms, pero siempre puedo leer solo el primero (conectado al primer ModbusMaster FB). También intenté separar todo en dos programas distintos asociándolos a distintas tareas, pero el resultado no cambia, al contrario, ya ni siquiera lee el primero.
¿Cómo puedo solucionarlo? Gracias de nuevo de antemano.
-
autorPublicación