Réponses dans les forums créés
-
auteurPost
-
Février 8, 2021 à 5: pm 58 en réponse à: Communication Modbus RTU avec le compteur d'énergie SDM120 #58986Tommas CavalliniPartecipante
Tout d'abord, je m'excuse pour la confusion: je dois lire à la fois l'EnergyMeter et les électrovannes, sur ce dernier je dois aussi écrire: puisque les deux communiquent en RTU, je pensais pouvoir poser directement ici sans avoir à ouvrir un autre sujet.
En venant à nous, je n'ai pas compris la solution proposée: j'ai pensé séparer la phase de lecture et d'écriture en ne connectant pas les FB en cascade. En fait, la lecture doit être continue tandis que l'écriture ne se produit que lorsque e se Je souhaite modifier certains paramètres.
Février 8, 2021 à 11: 33 am en réponse à: Communication Modbus RTU avec le compteur d'énergie SDM120 #58983Tommas CavalliniPartecipanteParfait, maintenant mon problème réside dans la gestion du temps de lecture et d'écriture de dix électrovannes.
Si pour la lecture il suffit d'associer le programme à la tâche Back de manière à ce qu'il soit effectué périodiquement, l'écriture au contraire j'aimerais pouvoir l'exécuter uniquement suivant une condition particulière: j'ai vu que LogicLab ne fournir des tâches événementielles, alors comment pourrais-je faire?
Tommas CavalliniPartecipanteParfait, j'ai tout essayé comme tu m'as expliqué et ça marche, donc je te remercie vraiment.
Mais maintenant, j'ai un autre problème: on m'a demandé de retarder la lecture dans Modbus afin d'effectuer une lecture par minute. Pour ce faire j'ai pensé à agir sur la voix Delay: est-il correct de mettre un délai de 60 pour ma fin ou vaudrait-il mieux mettre un eTON avant Enable afin de retarder avec le timer?
Dans le cas où je vais modifier le Delay (mettre 60), ayant deux modbusMasters en cascade, dans l'élément Delay du deuxième FB, je devrais mettre 61 (60 du retard précédent + 1 retard entre les deux lectures) ou j'ai juste besoin d'insérer le délai entre les deux lectures (1 sec) et dans le premier let 60?
Tommas CavalliniPartecipanteJe vous dis tout de suite que malheureusement la lecture des valeurs du datataker échoue si j'utilise VarSwap (J'ai pensé à l'utiliser au début, mais un nombre très élevé en sort) alors que si j'utilise le FB BEArrayToVar cela fonctionne et me donne la valeur lue correctement.
Pour le reste, 36 des 40 sont dans des registres consécutifs, donc pour ceux-ci je peux exécuter une seule commande de lecture (en spécifiant la première adresse à partir de laquelle commencer sous Adresse et sous Points du ModbusMaster combien de données je veux lire, dans mon cas 36 * 2, 72). Dans le tampon ModbusMaster alors je mettrai un tableau capable de contenir 36 données (appelé ArrayA pour être clair), ce tableau sera alors connecté BEArrayToVar à l'entrée Source et Destination Je vais mettre un autre tableau (ArrayB) qui contiendra toutes les valeurs lues correctement, non?
Ma question est: automatiquement, après chaque lecture, les données lues vont dans ArrayA, elles sont exécutées BEArrayToVar et est stocké dans ArrayB. Au prochain cycle de lecture, la deuxième lecture de données va automatiquement à ArrayA immédiatement après la précédente, puis passe à ArrayB stockée dans une ligne, non?
Tommas CavalliniPartecipanteJ'ai fait une communication Modbus TCP / IP avec un datataker à l'aide des FB SysTCPClient et ModbusMaster, à la fin de laquelle, une fois les données reçues dans IEE754, j'ai effectué une conversion avec le BEArrayToVar FB.
À ce stade, le problème est que je dois lire 40 valeurs à partir du même appareil et enregistrer chacune d'elles dans une variable qui lui est propre: que puis-je faire?
J'ai aussi vu le FB recommandé par elle, l'ACModbus, mais le problème est qu'une fois que j'ai lu ces variables, je dois nécessairement effectuer la conversion avec BEArrayToVar pour chacune d'elles individuellement et instancier une variable pour chacune des données, donc je j'ai peur de ne pas pouvoir l'utiliser.
Que recommandez-vous que je fasse pour résoudre le problème?
Janvier 28, 2021 à 11: 21 am en réponse à: Communication Modbus RTU avec le compteur d'énergie SDM120 #58894Tommas CavalliniPartecipanteMaintenant, le problème est survenu que grâce à la connexion ModBus RTU, je veux également écrire des données. Je me suis donc demandé: si pour la lecture nous utilisions le FB varSwap pour convertir les valeurs en REAL, comment puis-je le faire pour l'écriture?
Je pensais entrer les valeurs à écrire dans l'élément Buffer du ModbusMaster FB, mais je pense comprendre que je ne peux pas écrire une valeur RÉELLE mais une valeur dans la norme IEE754, non?
Comment puis-je effectuer la conversion inverse VarSwap?
Janvier 15, 2021 à 6: pm 14 en réponse à: Communication Modbus RTU avec le compteur d'énergie SDM120 #58808Tommas CavalliniPartecipanteJ'ai essayé la méthode FB ModbusMaster cascade et ça marche, merci beaucoup pour l'aide!
Ses vidéos et ses explications ont été fondamentales d'autant plus que je viens d'entrer dans le monde des automates, je lui en suis vraiment reconnaissant. Au cas où j'aurais d'autres doutes, je posterai sur le forum que c'est très bien fait et que les réponses sont plus rapides que prévu.
Janvier 15, 2021 à 10: 36 am en réponse à: Communication Modbus RTU avec le compteur d'énergie SDM120 #58805Tommas CavalliniPartecipanteBonjour, en attendant, merci beaucoup pour votre attention. Dans mon projet, j'ai utilisé les FB SysSerialPort et ModbusMaster et VarSwap.
J'ai ensuite essayé de connecter un autre FB ModbusMaster (qui identifie le deuxième SDM120 ayant le nœud 2) en utilisant le même FB pour le port série. Dans le port EN du deuxième ModbusMaster, j'ai ajouté un eTON avec un temps de 200ms, mais je ne peux toujours lire que le premier (connecté au premier FB ModbusMaster). J'ai aussi essayé de tout séparer en deux programmes différents en les associant à des tâches différentes, mais le résultat ne change pas, au contraire, il ne lit même plus le premier.
Comment puis-je résoudre? Merci encore d'avance.
-
auteurPost