• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

epics/apps/crucible/cbm.old2/cbmApp/src/modbus.h (r4864/r2310)

Go to the documentation of this file.
00001 /*
00002  * File:        modbus.h
00003  *
00004  * Notes:  This file includes a number of defines and structures for generating
00005  * modbus messages.  Note that the structures are packed.
00006  *
00007  * Author: Mark Rivers
00008  */
00009 
00010 #ifndef MODBUS_H
00011 #define MODBUS_H
00012 
00013 /* Modbus function codes */
00014 #define MODBUS_READ_COILS               0x01
00015 #define MODBUS_READ_DISCRETE_INPUTS     0x02
00016 #define MODBUS_READ_HOLDING_REGISTERS   0x03
00017 #define MODBUS_READ_INPUT_REGISTERS     0x04
00018 #define MODBUS_WRITE_SINGLE_COIL        0x05
00019 #define MODBUS_WRITE_SINGLE_REGISTER    0x06
00020 #define MODBUS_WRITE_MULTIPLE_COILS     0x0F
00021 #define MODBUS_WRITE_MULTIPLE_REGISTERS 0x10
00022 
00023 #define MODBUS_EXCEPTION_FCN            0x80
00024 
00025 #define MAX_MODBUS_FRAME_SIZE 600       /* Buffer size for input and output packets.
00026                                          * 513 (max for ASCII serial) should be enough, 
00027                                          * but we are being safe. */
00028 
00029 
00030 /* Pack all structures defined here on 1-byte boundaries */
00031 #pragma pack(1)
00032 
00033 /* All Modbus messages over TCP/IP are preceeded by the MBAP header */
00034 
00035 typedef struct modbusMBAPHeader_str
00036 {
00037     unsigned short transactId;
00038     unsigned short protocolType;
00039     unsigned short cmdLength;
00040 } modbusMBAPHeader;
00041 
00042 
00043 /*---------------------------------------------*/
00044 /* structure definitions for Modbus requests */
00045 /*---------------------------------------------*/
00046 
00047 typedef struct modbusReadRequest_str
00048 {
00049     unsigned char    slave;
00050     unsigned char    fcode;
00051     unsigned short   startReg;
00052     unsigned short   numRead;
00053 } modbusReadRequest;
00054 
00055 typedef struct modbusReadResponse_str
00056 {
00057     unsigned char  fcode;
00058     unsigned char  byteCount;
00059     unsigned char  data[1];
00060 } modbusReadResponse;
00061 
00062 typedef struct modbusWriteSingleRequest_str
00063 {
00064     unsigned char  slave;
00065     unsigned char  fcode;
00066     unsigned short startReg;
00067     unsigned short data;
00068 } modbusWriteSingleRequest;
00069 
00070 
00071 typedef struct modbusWriteSingleResponse_str
00072 {
00073     unsigned char  fcode;
00074     unsigned short startReg;
00075     unsigned short data;
00076 } modbusWriteSingleResponse;
00077 
00078 typedef struct modbusWriteMultipleRequest_str
00079 {
00080     unsigned char  slave;
00081     unsigned char  fcode;
00082     unsigned short startReg;
00083     unsigned short numOutput;
00084     unsigned char  byteCount;
00085     unsigned char  data[1];
00086 } modbusWriteMultipleRequest;
00087 
00088 
00089 typedef struct modbusWriteMultipleResponse_str
00090 {
00091     unsigned char  fcode;
00092     unsigned short startReg;
00093     unsigned short numOutput;
00094 } modbusWriteMultipleResponse;
00095 
00096 typedef struct modbusExceptionResponse_str
00097 {
00098     unsigned char  fcode;
00099     unsigned char  exception;
00100 } modbusExceptionResponse;
00101 
00102 /* Revert to packing that was in effect when compilation started */
00103 #pragma pack()
00104 
00105 #endif 

Generated on Tue Dec 10 2013 04:52:22 for ROCsoft by  doxygen 1.7.1