Go Down

Topic: ModBus and WiFly ... (Read 1 time) previous topic - next topic



I am trying to put in place a ModBus Communication via Wifi thanks to a wifly shield. I am using the ModbusMaster.h library. However it is used to serial communication.
How can I make it with WiFi ?

My code is following :

Code: [Select]

#include "WiFly.h"
#include "Credentials.h"
#include <ModbusMaster.h>

// WiFly
boolean pWiFly = HIGH;
Server server(80);
long startTime;

boolean pModbus = HIGH;
ModbusMaster node(2);

void setup() {
  // Connection du WiFly
  if (pWiFly == HIGH) {
    Serial.begin(9600);           //Serial.println("Debut du programme");
    server.begin();               //Serial.println("Demarrage serveur");
    SpiSerial.begin();            //Serial.println("Connection au SPI UART.");
    SpiSerial.print("$$$");       //Serial.println("Passage en mode commande");
    WiFly.begin();                //Serial.println("Demarrage WiFly");
    // Connection au reseau WiFi
    if (!WiFly.join(ssid)) {
      while (1) {
        //Serial.println("Connection impossible");
  //Affichage de l'adresse IP
  Serial.print("IP: ");
  //Connection du ModBus
  node.begin(9600); //Serial.println("Modbus : OK");

void loop() {

  //Envoi des donnĂ©es analogiques par wifi sur une page web
  if (pWiFly == HIGH) {
  //Communication Modbus
  if (pModbus == HIGH) {

//Fonction ModBus

void fModbus() {
  static uint32_t i;
  uint8_t j, result;
  uint16_t data[6];
  // set word 0 of TX buffer to least-significant word of counter (bits 15..0)
  node.setTransmitBuffer(0, lowWord(i));
  // set word 1 of TX buffer to most-significant word of counter (bits 31..16)
  node.setTransmitBuffer(1, highWord(i));
  // slave: write TX buffer to (2) 16-bit registers starting at register 0
  result = node.writeMultipleRegisters(0, 2);
  // slave: read (6) 16-bit registers starting at register 2 to RX buffer
  result = node.readHoldingRegisters(2, 6);
  // do something with data if read is successful
  if (result == node.ku8MBSuccess)
    for (j = 0; j < 6; j++)
      data[j] = node.getResponseBuffer(j);


I'm wondering if you ever got this to work

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131