modbus: include timer
This commit is contained in:
parent
a3332c562f
commit
2bef3ce8c0
@ -1,6 +1,7 @@
|
||||
/**
|
||||
@file
|
||||
Arduino library for communicating with Modbus slaves over RS232/485 (via RTU protocol).
|
||||
Arduino library for communicating with Modbus slaves over RS232/485 (via RTU
|
||||
protocol).
|
||||
|
||||
@defgroup setup ModbusMaster Object Instantiation/Initialization
|
||||
@defgroup buffer ModbusMaster Buffer Management
|
||||
@ -33,10 +34,10 @@ Arduino library for communicating with Modbus slaves over RS232/485 (via RTU pro
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#ifndef ModbusMaster_h
|
||||
#define ModbusMaster_h
|
||||
|
||||
#include "Timer.h"
|
||||
|
||||
/**
|
||||
@def __MODBUSMASTER_DEBUG__ (1).
|
||||
@ -46,24 +47,24 @@ Set to 1 to enable debugging features within class:
|
||||
*/
|
||||
#define __MODBUSMASTER_DEBUG__ (0)
|
||||
|
||||
|
||||
/* _____STANDARD INCLUDES____________________________________________________ */
|
||||
/* _____STANDARD INCLUDES____________________________________________________
|
||||
*/
|
||||
// include types & constants of Wiring core API
|
||||
#if defined(ARDUINO) && ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#else
|
||||
//#include "WProgram.h"
|
||||
#include <stdint.h>
|
||||
#include <cstddef>
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
uint32_t millis();
|
||||
#define BYTE 0xA5
|
||||
|
||||
/* _____UTILITY MACROS_______________________________________________________ */
|
||||
/* _____UTILITY MACROS_______________________________________________________
|
||||
*/
|
||||
|
||||
|
||||
/* _____PROJECT INCLUDES_____________________________________________________ */
|
||||
/* _____PROJECT INCLUDES_____________________________________________________
|
||||
*/
|
||||
// functions to calculate Modbus Application Data Unit CRC
|
||||
//#include "util/crc16.h"
|
||||
// moved inlcuding crc16.h to ModbusMaster.cpp
|
||||
@ -72,10 +73,10 @@ uint32_t millis();
|
||||
///#include "util/word.h"
|
||||
#include "word.h"
|
||||
|
||||
|
||||
#include "SerialPort.h"
|
||||
|
||||
/* _____CLASS DEFINITIONS____________________________________________________ */
|
||||
/* _____CLASS DEFINITIONS____________________________________________________
|
||||
*/
|
||||
/**
|
||||
Arduino class library for communicating with Modbus slaves over
|
||||
RS232/485 (via RTU protocol).
|
||||
@ -217,7 +218,6 @@ class ModbusMaster
|
||||
uint8_t available (void);
|
||||
uint16_t receive (void);
|
||||
|
||||
|
||||
uint8_t readCoils (uint16_t, uint16_t);
|
||||
uint8_t readDiscreteInputs (uint16_t, uint16_t);
|
||||
uint8_t readHoldingRegisters (uint16_t, uint16_t);
|
||||
@ -236,13 +236,19 @@ class ModbusMaster
|
||||
uint8_t _u8SerialPort; ///< serial port (0..3) initialized in constructor
|
||||
uint8_t _u8MBSlave; ///< Modbus slave (1..255) initialized in constructor
|
||||
uint16_t _u16BaudRate; ///< baud rate (300..115200) initialized in begin()
|
||||
static const uint8_t ku8MaxBufferSize = 64; ///< size of response/transmit buffers
|
||||
static const uint8_t ku8MaxBufferSize
|
||||
= 64; ///< size of response/transmit buffers
|
||||
uint16_t _u16ReadAddress; ///< slave register from which to read
|
||||
uint16_t _u16ReadQty; ///< quantity of words to read
|
||||
uint16_t _u16ResponseBuffer[ku8MaxBufferSize]; ///< buffer to store Modbus slave response; read via GetResponseBuffer()
|
||||
uint16_t _u16ResponseBuffer[ku8MaxBufferSize]; ///< buffer to store Modbus
|
||||
///< slave response; read via
|
||||
///< GetResponseBuffer()
|
||||
uint16_t _u16WriteAddress; ///< slave register to which to write
|
||||
uint16_t _u16WriteQty; ///< quantity of words to write
|
||||
uint16_t _u16TransmitBuffer[ku8MaxBufferSize]; ///< buffer containing data to transmit to Modbus slave; set via SetTransmitBuffer()
|
||||
uint16_t
|
||||
_u16TransmitBuffer[ku8MaxBufferSize]; ///< buffer containing data to
|
||||
///< transmit to Modbus slave; set
|
||||
///< via SetTransmitBuffer()
|
||||
uint16_t *txBuffer; // from Wire.h -- need to clean this up Rx
|
||||
uint8_t _u8TransmitBufferIndex;
|
||||
uint16_t u16TransmitBufferLength;
|
||||
@ -251,21 +257,32 @@ class ModbusMaster
|
||||
uint8_t _u8ResponseBufferLength;
|
||||
|
||||
// Modbus function codes for bit access
|
||||
static const uint8_t ku8MBReadCoils = 0x01; ///< Modbus function 0x01 Read Coils
|
||||
static const uint8_t ku8MBReadDiscreteInputs = 0x02; ///< Modbus function 0x02 Read Discrete Inputs
|
||||
static const uint8_t ku8MBWriteSingleCoil = 0x05; ///< Modbus function 0x05 Write Single Coil
|
||||
static const uint8_t ku8MBWriteMultipleCoils = 0x0F; ///< Modbus function 0x0F Write Multiple Coils
|
||||
static const uint8_t ku8MBReadCoils
|
||||
= 0x01; ///< Modbus function 0x01 Read Coils
|
||||
static const uint8_t ku8MBReadDiscreteInputs
|
||||
= 0x02; ///< Modbus function 0x02 Read Discrete Inputs
|
||||
static const uint8_t ku8MBWriteSingleCoil
|
||||
= 0x05; ///< Modbus function 0x05 Write Single Coil
|
||||
static const uint8_t ku8MBWriteMultipleCoils
|
||||
= 0x0F; ///< Modbus function 0x0F Write Multiple Coils
|
||||
|
||||
// Modbus function codes for 16 bit access
|
||||
static const uint8_t ku8MBReadHoldingRegisters = 0x03; ///< Modbus function 0x03 Read Holding Registers
|
||||
static const uint8_t ku8MBReadInputRegisters = 0x04; ///< Modbus function 0x04 Read Input Registers
|
||||
static const uint8_t ku8MBWriteSingleRegister = 0x06; ///< Modbus function 0x06 Write Single Register
|
||||
static const uint8_t ku8MBWriteMultipleRegisters = 0x10; ///< Modbus function 0x10 Write Multiple Registers
|
||||
static const uint8_t ku8MBMaskWriteRegister = 0x16; ///< Modbus function 0x16 Mask Write Register
|
||||
static const uint8_t ku8MBReadWriteMultipleRegisters = 0x17; ///< Modbus function 0x17 Read Write Multiple Registers
|
||||
static const uint8_t ku8MBReadHoldingRegisters
|
||||
= 0x03; ///< Modbus function 0x03 Read Holding Registers
|
||||
static const uint8_t ku8MBReadInputRegisters
|
||||
= 0x04; ///< Modbus function 0x04 Read Input Registers
|
||||
static const uint8_t ku8MBWriteSingleRegister
|
||||
= 0x06; ///< Modbus function 0x06 Write Single Register
|
||||
static const uint8_t ku8MBWriteMultipleRegisters
|
||||
= 0x10; ///< Modbus function 0x10 Write Multiple Registers
|
||||
static const uint8_t ku8MBMaskWriteRegister
|
||||
= 0x16; ///< Modbus function 0x16 Mask Write Register
|
||||
static const uint8_t ku8MBReadWriteMultipleRegisters
|
||||
= 0x17; ///< Modbus function 0x17 Read Write Multiple Registers
|
||||
|
||||
// Modbus timeout [milliseconds]
|
||||
static const uint16_t ku16MBResponseTimeout = 2000; ///< Modbus timeout [milliseconds]
|
||||
static const uint16_t ku16MBResponseTimeout
|
||||
= 2000; ///< Modbus timeout [milliseconds]
|
||||
|
||||
// master function that conducts Modbus transactions
|
||||
uint8_t ModbusMasterTransaction (uint8_t u8MBFunction);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user