Arduino Playground - ModbusMaster Library
-
Upload
rachel-rowland -
Category
Documents
-
view
116 -
download
5
Transcript of Arduino Playground - ModbusMaster Library
![Page 1: Arduino Playground - ModbusMaster Library](https://reader036.fdocuments.us/reader036/viewer/2022073012/55cf9d02550346d033abde61/html5/thumbnails/1.jpg)
The playground is a publicly-
editable wiki about Arduino.
Manuals and Curriculum
Installing Arduino on Linux
Board Setup and
Configuration
Development Tools
Arduino on other Atmel Chips
Interfacing With Hardware
Output
Input
User Interface
Storage
Communication
Power supplies
General
Interfacing with Software
User Code Library
Snippets and Sketches
Libraries
Tutorials
Suggestions & Bugs
Electronics Technique
Sources for Electronic Parts
Related Hardware and
Initiatives
Arduino People/Groups &
Sites
Exhibition
Project Ideas
Languages
Main Site Blog Playground Forum Labs Store
Sign in or Register
ModbusMaster Library for Arduino
Author: Doc Walker
Contact: 4-20ma at wvfans dot net
Overview
This is an Arduino library for communicating with Modbus slaves over
RS232/485 (via RTU protocol). Updated to support Arduino 1.0.
Features
The following Modbus functions have been implemented:
0x01 - Read Coils
0x02 - Read Discrete Inputs
0x05 - Write Single Coil
0x0F - Write Multiple Coils
0x03 - Read Holding Registers
0x04 - Read Input Registers
0x06 - Write Single Register
0x10 - Write Multiple Registers
0x16 - Mask Write Register
0x17 - Read Write Multiple Registers
Uploading Sketches
Arduinos prior to the Mega have one serial port which must be connected
to USB (FTDI) for uploading sketches and to the RS232/485
device/network for running sketches. You will need to disconnect pin 0
(RX) while uploading sketches. After a successful upload, you can
reconnect pin 0.
Arduino Playground - ModbusMaster Library http://playground.arduino.cc/Code/ModbusMaster
1 de 4 20/6/2013 14:13
![Page 2: Arduino Playground - ModbusMaster Library](https://reader036.fdocuments.us/reader036/viewer/2022073012/55cf9d02550346d033abde61/html5/thumbnails/2.jpg)
PARTICIPATE
Suggestions
Formatting guidelines
All recent changes
PmWiki
WikiSandBox training
Basic Editing
Cookbook (addons)
Documentation index
Drone with Arduino
Thermostat with Arduino
edit SideBar
Hardware
This library has been tested with an Arduino Duemilanove, PHOENIX
CONTACT nanoLine controller, connected via RS485 using a Maxim
MAX488EPA transceiver.
Installation
The latest version can be downloaded from Github.
Arduino 17 (or later)
Determine the location of your sketchbook by selecting File >
Preferences from within the Arduino IDE. If you don't already have a
libraries folder within your sketchbook, create one and unzip the
archive there. See this for more information.
Arduino 16 (or earlier)
Download the zip file, extract and copy the ModbusMaster folder to
ARDUINO_HOME/hardware/libraries. If you are upgrading from a
previous version, be sure to delete ModbusMaster.o.
Support
Please report any bugs on the Issue Tracker.
Questions/Feedback
I can be contacted at 4-20ma at wvfans dot net.
Example
The library contains a few sketches that demonstrate use of the
ModbusMaster library. You can find these in the examples folder.
/*
Basic.pde - example using ModbusMaster library
This file is part of ModbusMaster.
ModbusMaster is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ModbusMaster is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Arduino Playground - ModbusMaster Library http://playground.arduino.cc/Code/ModbusMaster
2 de 4 20/6/2013 14:13
![Page 3: Arduino Playground - ModbusMaster Library](https://reader036.fdocuments.us/reader036/viewer/2022073012/55cf9d02550346d033abde61/html5/thumbnails/3.jpg)
You should have received a copy of the GNU General Public License
along with ModbusMaster. If not, see <http://www.gnu.org/licenses/>.
Written by Doc Walker (Rx)
Copyright © 2009-2012 Doc Walker <4-20ma at wvfans dot net>
*/
#include <ModbusMaster.h>
// instantiate ModbusMaster object as slave ID 2
// defaults to serial port 0 since no port was specified
ModbusMaster node(2);
void setup()
{
// initialize Modbus communication baud rate
node.begin(19200);
}
void loop()
{
static uint32_t i;
uint8_t j, result;
uint16_t data[6];
i++;
// set word 0 of TX to least-significant word of counter (bits 15..0)
node.TX(0, lowWord(i));
// set word 1 of TX to most-significant word of counter (bits 31..16)
node.TX(1, highWord(i));
// slave 1: write TX to (2) 16-bit registers starting at register 0
result = node.WriteMultipleRegisters(0, 2);
// slave 1: read (6) 16-bit registers starting at register 2 to RX
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.RX(j);
}
}
}
Project inspired by Arduino Modbus Master.
Arduino Playground - ModbusMaster Library http://playground.arduino.cc/Code/ModbusMaster
3 de 4 20/6/2013 14:13
![Page 4: Arduino Playground - ModbusMaster Library](https://reader036.fdocuments.us/reader036/viewer/2022073012/55cf9d02550346d033abde61/html5/thumbnails/4.jpg)
Share |
Arduino Playground - ModbusMaster Library http://playground.arduino.cc/Code/ModbusMaster
4 de 4 20/6/2013 14:13