17.06.2013 Views

pvbrowser manual - Flussi liberi informatici

pvbrowser manual - Flussi liberi informatici

pvbrowser manual - Flussi liberi informatici

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!