Rispondi a: Comunicazione con protocollo Modbus master
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Comunicazione con protocollo Modbus master › Rispondi a: Comunicazione con protocollo Modbus master
Tutte i FB che gestiscono stream di comunicazione (Seriale, UDP, TCP/IP) o accedono al file system devono essere eseguiti nella task di Back.
Se le interrogazioni Modbus non sono molte puoi istanziare tante istanze della FB ModbusMaster quante sono le interrogazioni (Lettura/Scrittura) da eseguire (Questo topic spiega come mettere in cascata le varie istanze, ecco uno screenshot). In questo modo si ha uno “spreco” nell’utilizzo delle risorse in quanto ogni istanza del FB occupa memoria RAM anche se vi è una esecuzione sequenziale delle varie istanze.
Molto più ottimizzato è l’utilizzo di una singola istanza del FB a cui vengono ciclicamente passati i parametri di configurazione, nodo del dispostivo con cui comunicare, codice funzione e range indirizzi del comando da eseguire. Il modo migliore per realizzarlo è gestire da ST una macchina a stati con l’operando CASE. Nel forum ci sono posts che trattano l’argomento ma a titolo di esempi ti allego un programma che utilizza questa tecnica (Download sorgente).
Come vedi dalla stampa del programma, si tratta di un programma che comunica con drivers brushless, tutti i comandi mosdbus operano su registri a 32 bits (2 registri modbus) ed è eseguito anche lo swap tra MSB e LSB. Altra particolarità è la gestione di un socket TCP per permettere il dialogo con il driver “passando” tramite lo SlimLine. Aprendo una connessione con la porta 2000 è possibile da TCP/IP comicare su RS485 con i drivers (In questo topic si tratta l’argomento).
Troverai il programma un pò più complesso (Per ogni interrogazione modbus viene utilizzata una struttura dati) perchè per velocizzare la comunicazione per i comandi di scrittura verso il driver viene mantenuta una copia del valore scritto ed il comando Modbus viene eseguito solo se il programma utente cambia i valori da scrivere.