Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

modbus_utils.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*/
00024 /*---------------------------------------------------------------------------*/
00025 
00026 #ifndef MODBUS_UTILS_H
00027 #define MODBUS_UTILS_H
00028 
00029 /*---------------------------------------------------------------------------*/
00036 /*---------------------------------------------------------------------------*/
00037 #define GETU16( var, buf) {                             \
00038                 (var) = (*(buf) << 8) & 0xFF00;         \
00039                 (var) |= (*((buf)+1) & 0xFF);           \
00040         }
00041 /*---------------------------------------------------------------------------*/
00048 /*---------------------------------------------------------------------------*/
00049 #define PUTU16( buf, var) {                             \
00050                 (*(buf)) = ((var) >> 8);                \
00051                 *((buf)+1) = ((var) & 0xFF);            \
00052         }
00053 
00056 u16     CRC16( const u8 *buf, int len);
00057 u8      LRC( const u8 *buf, int len);
00058 int     MBASCIIToData(u8 *buf, const u8 *data, int len);
00059 int     MBDataToASCII(u8 *buf, const u8 *data, int len);
00060 
00062 int     MBMakeADU( u8 *buf, int protocol, u8 address, const u8 *pdu, int len, u16 tid);
00063 int     MBGetPDU( u8 *buf, u8 *adu, int len);
00064 int     MBMakePDU( u8 *buf, u8 function, u8 *data, int len);
00065 u8      MBGetAddress( const u8 *adu);
00066 u8      MBGetFunctionCode( const u8 *pdu);
00067 
00069 int     MBReadDecreteInputs(u8 *buf, u16 startdec, u16 no);             
00070 int     MBReadCoils(u8 *buf, u16 startcoils, u16 no);                   
00071 int     MBWriteSingleCoil(u8 *buf, u16 coilreg, u16 onoff);             
00072 int     MBWriteMultipleCoils(u8 *buf, u16 startcoils, u16 no, u8 count, u8 *data);
00073 int     MBReadInputRegisters(u8 *buf, u16 startreg, u16 no);            
00074 int     MBReadHoldingRegisters(u8 *buf, u16 startreg, u16 no);          
00075 int     MBWriteSingleRegister(u8 *buf, u16 devicereg, u16 value);       
00076 int     MBWriteMultipleRegisters(u8 *buf, u16 startreg, u16 noreg, u8 count, u16 *no);
00077 int     MBReadWriteMultipleRegisters(u8 *buf, u16 rsreg, u16 rno, u16 wsreg, u16 wno, u8 count, u16 *wv);
00078 int     MBMaskWriteRegister(u8 *buf, u16 reg, u16 andmask,u16 ormask);  
00079 int     MBReadFIFOQueue(u8 *buf, u16 FIFOAddr);                         
00080 // MBF_READ_FILE_RECORD                 0x14
00081 // MBF_WRITE_FILE_RECORD                0x15
00082 int     MBReadExceptionStatus(u8 *buf);                                 
00083 int     MBDiagnostic(u8 *buf, u16 subfunc, u16 data);                   
00084 int     MBGetCommEventCounter(u8 *buf);                                 
00085 int     MBGetCommEventLog(u8 *buf);                                     
00086 int     MBReportSlaveID(u8 *buf);                                       
00087 
00089 int     MBResponseReadDecreteInputs(u8 *buf, u8 no, u8 *value);
00090 int     MBResponseReadCoils(u8 *buf, u8 no, u8 *value);
00091 int     MBResponseReadInputRegisters(u8 *buf, u8 no, u16 *value);
00092 int     MBResponseReadHoldingRegisters(u8 *buf, u8 no, u16 *value);
00093 int     MBResponseWriteMultipleRegisters(u8 *buf, u16 startdevreg, u16 no);
00094 int     MBResponseWriteSingleCoil(u8 *buf, u16 coilreg, u16 onoff);
00095 int     MBResponseWriteSingleRegister(u8 *buf, u16 reg, u16 value);
00096 int     MBResponseReadFIFOueue(u8 *buf, u16 count, u16 *value);
00097 int     MBResponseReadExecptionStatus(u8 *buf, u8 status);
00098 int     MBResponseDiagnostic(u8 *buf, u16 subfunc, u16 data);
00099 int     MBResponseGetCommEventCounter(u8 *buf, u16 status, u16 eventcount);
00100 int     MBResponseGetCommEventLog(u8 *buf, u8 no, u16 status, u16 eventcount, u16 messagecount, u8 *events);
00101 //int   MBResponseReportSlaveID(u8 *buf, u8 *buf, int len);
00102 
00104 int     MBGetReadDecreteInputs(u8 *pdu, u16 *startdec, u16 *no);
00105 int     MBGetReadCoils(u8 *pdu, u16 *startcoils, u16 *no);
00106 int     MBGetWriteSingleCoil(u8 *pdu, u16 *coilreg, u16 *onoff);
00107 int     MBGetWriteMultipleCoils(u8 *pdu, u16 *startcoils, u16 *no);
00108 int     MBGetReadInputRegisters(u8 *pdu, u16 *startreg, u16 *no);
00109 int     MBGetReadHoldingRegisters(u8 *pdu, u16 *startreg, u16 *no);
00110 int     MBGetWriteSingleRegister(u8 *pdu, u16 *devicereg, u16 *value);
00111 int     MBGetWriteMultipleRegisters(u8 *pdu, u16 *startreg, u16 *no, u8 *count, u16 *value);
00112 int     MBGetReadWriteMultipleRegisters(u8 *pdu, u16 *rsreg, u16 *rno, u16 *wsreg, u16 *wno, u8 *count, u16 *wv);
00113 int     MBGetMaskWriteRegister(u8 *pdu, u16 *reg, u16 *andmask, u16 *ormask);
00114 int     MBGetReadFIFOQueue(u8 *pdu, u16 *FIFOAddr);
00115 int     MBGetDiagnostic(u8 *pdu, u16 *subfunc, u16 *data);      // just for serial port
00116 
00118 int     MBGetResponseReadDecreteInputs(u8 *pdu, u8 *no, u8 *value);
00119 int     MBGetResponseReadCoils(u8 *pdu, u8 *no, u8 *value);
00120 int     MBGetResponseReadInputRegisters(u8 *pdu, u8 *no, u16 *value);
00121 int     MBGetResponseReadHoldingRegisters(u8 *pdu, u8 *no, u16 *value);
00122 int     MBGetResponseWriteMultipleRegisters(u8 *pdu, u16 *address, u16 *no);
00123 int     MBGetResponseWriteSingleCoil(u8 *pdu, u16 *address, u16 *value);
00124 int     MBGetResponseWriteMultipleCoils(u8 *pdu, u16 *address, u16 *value);
00125 int     MBGetResponseWriteSingleRegister(u8 *pdu, u16 *address, u16 *value);
00126 int     MBGetResponseReadFIFOueue(u8 *buf, u16 count, u16 *value);
00127 int     MBGetResponseReadExecptionStatus(u8 *buf, u8 status);
00128 int     MBGetResponseDiagnostic(u8 *pdu, u16 *subfunc, u16 *data);
00129 int     MBGetResponseGetCommEventCounter(u8 *pdu, u16 *status, u16 *eventcount);
00130 int     MBGetResponseGetCommEventLog(u8 *buf, u16 *status, u16 *eventcount, u16 *messagecount, u8 *events);
00131 int     MBGetResponseReadWriteMultipleRegisters(u8 *pdu, u8 *no, u16 *value);
00132 int     MBGetResponseMaskWriteRegister(u8 *pdu, u16 *reg, u16 *andmask, u16 *ormask);
00133 int     MBGetResponseReportSlaveID(u8 *pdu, u8 *slave_id, u8 *status);
00134 
00135 #endif
00136 

Generated on Thu Oct 6 09:13:41 2005 for Example Modbus Library by  doxygen 1.4.4