ModbusTcp.h

Go to the documentation of this file.
00001 ///
00002 /// ModbusTcp.h
00003 ///
00004 /// Driver for accessing MODBUS devices using the MODBUS TCP protocol
00005 /// Konstantin Olchanski, TRIUMF, 2008-2009
00006 ///
00007 
00008 #ifndef INCLUDE_MODBUS_H
00009 #define INCLUDE_MODBUS_H
00010 
00011 #include "midas.h"
00012 
00013 #define MODBUS_FUNC3  3 ///< MODBUS Read register
00014 #define MODBUS_FUNC4  4 ///< MODBUS Read register
00015 #define MODBUS_FUNC6  6 ///< MODBUS Write register
00016 
00017 class ModbusTcp
00018 {
00019  public:
00020    bool fTrace; ///< report activity
00021    int fSocket; ///< TCP socket connection to the Modbus device
00022    int fReadTimeout_sec; ///< TCP socket read timeout, in seconds
00023    
00024  public:
00025    ModbusTcp(); ///< ctor
00026    
00027    int Connect(const char* address);
00028    int Disconnect();
00029    
00030    int ReadRegister(int slaveId,  int ireg); ///< read given register
00031    int ReadRegisters(int slaveId, int ireg, int numReg, WORD data[]); ///< read multiple registers
00032    int WriteRegister(int slaveId, int ireg, int value); ///< write given register
00033             
00034    int ReadRegister(int slaveId,  int func, int ireg); ///< read given register
00035    int ReadRegisters(int slaveId, int func, int ireg, int numReg, WORD data[]); ///< read multiple registers
00036    int WriteRegister(int slaveId, int func, int ireg, int value); ///< write given register
00037 
00038    // low-level access functions
00039 
00040    int Function3(int slaveId, int firstReg, int numReg); ///< send function 3 read request
00041    int Function4(int slaveId, int firstReg, int numReg); ///< send function 4 read request
00042    int Function6(int slaveId, int register, int value);  ///< send function 6 write request
00043 
00044    int Write(const char* buf, int length); ///< send TCP data
00045    int Read(char* buf, int length); ///< receive TCP data with timeout
00046 };
00047 
00048 #endif
00049 // end

Midas DOC Version 3.0.0 ---- PSI Stefan Ritt ----
Contributions: Pierre-Andre Amaudruz - Sergio Ballestrero - Suzannah Daviel - Doxygen - Peter Green - Qing Gu - Greg Hackman - Gertjan Hofman - Paul Knowles - Exaos Lee - Rudi Meier - Glenn Moloney - Dave Morris - John M O'Donnell - Konstantin Olchanski - Renee Poutissou - Tamsen Schurman - Andreas Suter - Jan M.Wouters - Piotr Adam Zolnierczuk