⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modbus.h

📁 modbus通讯
💻 H
字号:
#ifndef __MODBUS_H__
#define __MODBUS_H__

#pragma once

/*
      MODBUS 通信模块头文件
      本模块实现如下方法:
      
      OpenSerial            串口设置
      CloseSerial           关闭串口
      RdMultiBit            读多个线圈
      RdMultiWord           读多个寄存器
      WrtOneBit             写单个线圈
      WrtOneWord            写单个寄存器
      WrtMultiBit           写多个线圈
      WrtMultiWord          写多个寄存器
      VerifyPack            回送诊断校验
      
*/

#ifdef __DLLEXPORT__
    #define DLLPROC __declspec(dllexport)
#else
    #define DLLPROC __declspec(dllimport)
#endif  // __DLLEXPORT__


/* 错误代码定义 */
#define MODBUS_NOERROR                        0                  // 成功
#define MODBUS_INVALID_FUNC                   1                  // 非法功能码
#define MODBUS_INVALID_REG                    2                  // 非法寄存器地址
#define MODBUS_INVALID_COUNT                  3                  // 数据个数错误

#define MODBUS_NO_LIB                         100                // 无法导入动态库
#define MODBUS_NO_IMPL                        99                 // 尚未实现
#define MODBUS_INVALID_PARAM                  98                 // 函数参数错误
#define MODBUS_OPEN_FAILED                    97                 // 无法打开端口
#define MODBUS_PORT_UNAVAILABLE               96                 // 端口不可用
#define MODBUS_LOW_MEM                        95                 // 内存不足
#define MODBUS_NO_RESPONSE                    94                 // 从机无响应
#define MODBUS_BAD_RESPONSE                   93                 // 响应格式不合法
#define MODBUS_CRC_ERROR                      92                 // CRC校验码不正确


/* 协议模式定义 */
#define PROTOCOL_ASCII                        0                  // ASCII模式
#define PROTOCOL_RTU                          1                  // RTU模式


/* 功能码定义 */
#define FN_READ_BITS                          1                  // 读线圈
#define FN_READ_INPUT                         2                  // 读离散量输入
#define FN_READ_WORDS                         3                  // 读保存寄存器
#define FN_WRITE_ONEBIT                       5                  // 写单个线圈
#define FN_WRITE_ONEWORD                      6                  // 写单个寄存器
#define FN_WRITE_BITS                         15                 // 写多个线圈
#define FN_WRITE_WORDS                        16                 // 写多个寄存器
#define FN_VERIFY_PACK                        8                  // 回送诊断校验 


extern "C" {
/* 接口方法定义 */
DLLPROC long __stdcall OpenSerial( int nSerialNo, 
                                   int nBaud, 
                                   int nDataBit, 
                                   int nStopBit, 
                                   int nProType, 
                                   int nRetryTime, 
                                   int nTimeOut );
                                   
DLLPROC long __stdcall CloseSerial( int nSerialNo );

DLLPROC long __stdcall RdMultiBit( int nSerialNo,
                                   int nStationNo,
                                   const char* ucStartAddr, 
                                   int nNum, 
                                   unsigned char ucRefValue[] );

DLLPROC long __stdcall RdMultiWord( int nSerialNo,
                                    int nStationNo,
                                    const char* ucStartAddr, 
                                    int nNum, 
                                    short sRefValue[] );

DLLPROC long __stdcall WrtOneBit( int nSerialNo,
                                  int nStationNo,
                                  const char* ucAddr,
                                  unsigned char ucValue );

DLLPROC long __stdcall WrtOneWord( int nSerialNo,
                                   int nStationNo,
                                   const char* ucAddr,
                                   short sValue );

DLLPROC long __stdcall WrtMultiBit( int nSerialNo,
                                    int nStationNo,
                                    const char* ucStartAddr, 
                                    int nNum, 
                                    unsigned char ucValue[] );

DLLPROC long __stdcall WrtMultiWord( int nSerialNo,
                                     int nStationNo,
                                     const char* ucStartAddr, 
                                     int nNum, 
                                     short sValue[] );

DLLPROC long __stdcall VerifyPack( int nSerialNo,
								   int nStationNo,
                                   short sVerifyCode,
                                   short* DataField );
};     // extern "C"

                                   
#endif // __MODBUS_H__


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -