Accueil > Forum > obsolète > SlimLine (CODESYS) > Disponibilité du protocole Modbus sur SlimLine CODESYS
- Ce sujet a 20 réponses, 4 participants et a été mis à jour pour la dernière fois 8 années, 2 mois da Sergio Bertana.
-
auteurPost
-
Février 13, 2015 à 10: pm 27 #35734Enrico VivianiPartecipante
Le module "CODESYS" est défini comme compatible Modbus mais je ne trouve pas de bibliothèque prenant en charge le maître modbus RTU / ASCII RS485. Avez-vous des exemples?
Février 17, 2015 à 11: 33 am #38738Sergio BertanaAdministrateur du forumContrairement à la ligne programmable avec LogicLab, où nous avons développé et continuons à développer des bibliothèques et des programmes d'exemple, sur la ligne CODESYS, étant donné l'utilisation généralisée de l'environnement, nous avons une fertilité créative plus faible. Les utilisateurs les plus avertis ont déjà leurs bibliothèques (qu'ils utilisent sur d'autres produits programmables dans CODESYS) et / ou trouvent des idées sur le réseau pour commencer.
Il y a beaucoup de littérature sur Modbus sur le net, pour le moment j'ai essayé de porter le FB ModbusSlave de l'environnement LogicLab à l'environnement CODESYS, voici leextrait du manuel. J'ai créé un projet CODESYS qui contient les deux exemples présentés dans le manuel (la bibliothèque avec le bloc fonction se trouve dans le dossier des exemples) (Téléchargement du projet).
Février 17, 2015 à 4: pm 04 #38739Sergio BertanaAdministrateur du forumJour tranquille aujourd'hui j'ai trouvé le temps de faire le portage du FB ModbusMaster, voici leextrait du manuel. J'ai aussi fait un projet simple où sur un SlimLine les FB maître et esclave coexistent et les deux FB se parlent via les deux ports série (Téléchargement du projet).
Comme vous pouvez le voir dans l'exemple sur le ModbusMaster FB Spy est activé, de cette manière à travers une console espion (reportez-vous au manuel), il est possible de visualiser les trames de données en transit. Cette solution est très pratique pour comprendre les éventuelles erreurs de protocole (Capture d'écran).
Février 23, 2015 à 9: 09 am #38757AntonioPartecipanteDans la bibliothèque eSLineC2SysLib_A000, je trouve les blocs fonctionnels SysTCPClient et SysTCPServer, dans les bibliothèques Oscat, je trouve que les blocs MB_Client et MB_Server peuvent tous deux être utilisés ou il est préférable d'utiliser les bibliothèques Elsist ?
Février 23, 2015 à 9: 53 am #38758Sergio BertanaAdministrateur du forumLes fonctions auxquelles vous faites référence n'ont rien à voir avec Modbus, ce sont des fonctions système permettant de gérer les connexions TCP. Pour le modbus, nos FB sont MobusMaster (équivalent à MB_Client) et MobusSlave (équivalent à MB_Server).
Contrairement à oscat FB qui ne sont que TCP / IP et UDP, notre peut fonctionner sur tous les flux d'E / S (Même le port série) et de gérer tous les types 3 de Modbus (ASCII, RTU, TCP).
Cela dit, quel FB utiliser est votre choix, si vous utilisez nos FB vous pouvez nous demander des informations, si vous utilisez Oscat vous devez contacter M. Oscat ...
Février 23, 2015 à 4: pm 51 #38762AntonioPartecipanteDésolé, j'ai mentionné Oscat parce que vous-même à la page 30/101 du manuel de programmation itate et j'ai pensé qu'il était normal d'utiliser ces blocs, certainement pas parce que je le sais. Cependant ne vous inquiétez pas, aussi sarcastique que vous soyez, je vais continuer à vous demander, je n'ai pas été offensé.
Février 23, 2015 à 5: pm 14 #38763Sergio BertanaAdministrateur du forumNous avons mentionné les Oscats car de nombreux fabricants de produits basés sur CODESYS font beaucoup de trompette. Ces bibliothèques représentent un engagement louable dans le domaine des logiciels libres appliqués à l'automatisation industrielle. Même si je préfère personnellement "construire" ma bibliothèque de fonctions et de FB, je trouve le travail accompli appréciable et il m'est arrivé de me référer à Oscats pour m'inspirer de besoins particuliers que j'ai ensuite appliqués pour les bibliothèques dans LogicLab.
Quant à Modbus, nous l'utilisons dans LogicLab depuis des années et il était normal de le porter sur CODESYS. le SlimLine CODESYS est conçu pour être «transparent» à la version LogicLab à tel point que nous lui avons fourni le même ensemble de fonctions et de FB embarqués présents sur la version LogicLab.
L'esprit du forum est de soutenir les clients et bien sûr, nous ne pouvons le faire de la meilleure façon que si vous utilisez nos fonctions et nos FB. Mais nous ne voulons même pas nous enfermer dans notre cour, et les expériences avec d'autres bibliothèques sont les bienvenues, chaque rapport est une incitation à chercher et à s'améliorer.
Je suis content que la blague qui vous a semblé sarcastique (en fait censée être ironique) ne vous ait pas blessé, ce n'est certainement pas mon intention de blesser les gens. Peut-être qu'Oscat est le nom de famille d'une belle femme allemande ... et un appel téléphonique peut aussi être là ...
Février 25, 2015 à 10: 50 am #38767AntonioPartecipanteEspérons que ce n'est pas comme Merkel, pour parler d'autre chose, je vérifiais les exemples de maître et esclave Modbus que vous avez publiés, j'ai quelques questions concernant l'application à TCP / IP. Le paramètre se compose de trois lignes de programme, le bloc Sysfopen qui, je pense qu'avec le bloc maître ou esclave Modbus, nous devrions également utiliser pour le Modbus TCP, mais le SysSerialPort doit être remplacé? et si oui, avec quoi?
Février 25, 2015 à 1: pm 55 #38768Sergio BertanaAdministrateur du forumVous avez bien compris, avec la fonction Sysfopen ouvrez le flux d'E / S de communication de type FILEP, le flux est ensuite transmis au bloc fonction de gestion Modbus. Si le flux d'E / S est un flux série, le FB doit être utilisé comme dans l'exemple SysSerialPortsi à la place c'est une socket TCP, le FB sera utilisé SysTCPClient o SysTCPServer. Se référer au Manuel de programmation IEC61131-3 où vous trouverez des exemples d'utilisation du maître Modbus sur les connexions client série et TCP, et de l'esclave Modbus sur les sockets serveur série et TCP multiples.
Mars 9, 2015 à 5: pm 18 #38791Enrico VivianiPartecipanteSalut, j'essaye d'utiliser les fonctions modbus avec un appareil IME le Nemo D4-Le. En plus de ne pas comprendre si la connexion est réussie ou non (elle expire toujours), j'ai lu dans le manuel que le protocole de l'appareil nécessite l'utilisation d'un CRC dans la transmission du message. Comment puis-je implémenter cette fonction?
Mars 9, 2015 à 5: pm 51 #38792Sergio BertanaAdministrateur du forumLe CRC fait partie du protocole Modbus RTU et est automatiquement géré par le FB qui le génère pour la trame de commande et le vérifie dans la trame de réception. Les problèmes de communication peuvent provenir de nombreux facteurs: Avez-vous vérifié les paramètres du port série qui sont les mêmes que ceux du module? L'adresse du nœud Modbus est-elle correcte? L'adresse et le nombre de registres à lire / écrire sont-ils corrects? Le code de fonction de lecture / écriture est-il géré par l'instrument? En activant l'entrée SpyOn du bloc fonction, il est possible d'envoyer les trames Modbus envoyées et reçues par le FB vers la console espion (voir sur IEC61131-3 Manuel de programmation comment utiliser la console d'espionnage). Si vous m'envoyez le rapport d'espionnage, je peux peut-être vous demander de résoudre le problème.
Mars 11, 2015 à 4: pm 07 #38796Enrico VivianiPartecipanteOui à toutes les questions, sur l'appareil, je ne peux pas définir le nombre de bits et d'arrêts, mais j'ai déjà essayé toutes les vitesses et parités possibles.
Mars 12, 2015 à 8: 22 am #38798Sergio BertanaAdministrateur du forumSi tout est correct, cela devrait fonctionner, mais comme cela ne fonctionne pas, je ne peux vous donner des instructions que si vous m'envoyez une capture d'écran de la capture de paquets dans la console d'espionnage (Sujet).
Mars 12, 2015 à 10: 29 am #38799Enrico VivianiPartecipanteComme je ne sais pas si l'outil IME fonctionne, j'ai essayé une autre méthode. J'ai un CPU SlimLine LogicLab MPS050 avec RS485, j'ai connecté le module CPU CODESYS avec le module CPU LogicLab, j'ai défini la série des deux modules avec les mêmes caractéristiques (19200, N, 8,1) nœud 2, il y a évidemment un programme stupide dans le CPU LogicLab , il écrit la valeur 100 dans la variable mot MW100.100 sur la première boucle et ne fait rien d'autre.
Dans le module CPU CODESYS il n'y a que le programme (téléchargé depuis votre site) avec la fonction maître, j'ai mis le port (j'ai essayé COM2 et COM3 et COM4), les mêmes paramètres, j'utilise la fonction 16 # 03 pour lire la variable 100 mais je n'obtiens que l'erreur 10007050. Peut-être qu'il me manque quelque chose, je joins capture d'écran Programme CODESYS avec Spy sur Toolly.
Mars 12, 2015 à 11: 33 am #38800Sergio BertanaAdministrateur du forumComme vous pouvez le voir sur la capture d'écran de l'espionnage, le système esclave ne répond pas à la requête, j'ai effectué le même test effectué par vous mais d'abord quelques clarifications nécessaires.1) Depuis les paramètres par défaut sur le port de communication du SlimLine LogicLab sont 115200, e, 8 et le nœud Modbus 1 dans mon exemple, je définis ces paramètres dans le programme CODESYS (le voici). capture d'écran avec espionnage). Étant donné que dans votre exemple, vous avez utilisé différents paramètres, je pense que vous avez défini les paramètres à partir de la page Web du module CPU de SlimLine LogicLab.2) Pour accéder au DB 100 de SlimLine LogicLab il est nécessaire d'utiliser l'adresse Modbus 40050 et non 100 (Sujet). La valeur de l'horloge temps réel, secondes, minutes et ainsi de suite, est renvoyée à l'adresse 100 comme également utilisée dans mon exemple. Si vous voyez dans mon scrennshot d'espionnage, j'ai limité la valeur des secondes (00 3B -> 59) et des minutes (00 09 -> 9) entre deux lectures successives.3) Le port série RS485 du module CPU CODESYS est adressé comme COM3.4. 052) J'ai demandé au service commercial et je comprends que vous avez acheté un module CPU MPS200 * XNUMX qui est un module CAN donc il n'a pas le port RS485. Si vous souhaitez utiliser Modbus RTU sur RS485, vous pouvez utiliser une série RS232 avec un convertisseur série.
-
auteurPost
- Vous devez être connecté pour répondre à ce sujet.