pvbrowser manual - Flussi liberi informatici
pvbrowser manual - Flussi liberi informatici
pvbrowser manual - Flussi liberi informatici
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
6.1. MODBUS 89<br />
Figura 6.2: Dialogo per la generazione di un modbusdaemon all’interno di pvdevelop<br />
C++. Quando si chiude la finestra di dialogo il file modbusdaemon.cpp viene generato nella directory corrente<br />
e viene compilato. Il risultato è un demone modbus che riflette la configurazione inserita nella finestra di<br />
dialogo. Questo demone può ora essere utilizzato. Si prega di avviare questo demone dalla riga di comando per<br />
verificare se funziona come desiderato. Le variabili lette ciclicamente vengono scritte nella memoria condivisa<br />
una dopo l’altra (compatte). L’offset per ogni ciclo viene definito nel file modbusdaemon.h generato. Il<br />
file modbusdaemon.h contiene alcune definizioni che è possibile utilizzare nel vostro codice sorgente. Queste<br />
definizioni sono per esempio il nome e la dimensione della memoria condivisa e il nome della cassetta postale.<br />
Inoltre vi si trovano gli offsets della memoria condivisa secondo i quali i valori letti vengono memorizzati. Nella<br />
directory pvbaddon/demos/modbusserial in pvbaddon si può trovare un esempio.<br />
Accesso alla memoria condivisa e alla cassetta di posta da un pvserver per valori codificati in binario<br />
#include "rlmodbusclient.h"<br />
#include "modbusdaemon.h" // this is generated<br />
rlModbusClient modbus(modbusdaemon_MAILBOX,modbusdaemon_SHARED_MEMORY,<br />
modbusdaemon_SHARED_MEMORY_SIZE);<br />
// snip<br />
int val = modbus.readBit(modbusdaemon_CYCLE1_BASE,i+4); // the first 4 bits are outputs<br />
// snip<br />
modbus.writeSingleCoil(1,address,val); // write to modbus using the mailbox<br />
// slave=1