MSP430WARE++的使用3:modbus模塊的調用方法
阿新 • • 發佈:2017-05-05
tails 更改 protocol usr 調用 gb2 targe 文件組 splay
MSP430WARE++的使用3:modbus模塊的調用方法
MSP430WARE是一套基於C++語言的開源的MSP430層次化軟件架構,支持多種外設。
2、用法 a、增加驅動程序
選中modbus目錄,右鍵點擊“Exclude from Build”就可以。 modbus驅動程序由多個個文件組成。例如以下圖所看到的。當中RSP1_config.hpp為RSP1的配置文件。 RSP1.cpp為RSP1類的源程序,RSP1.hpp為RSP1類的頭文件。
b、使能外設 在config.hpp中使能外設modbus,其源程序例如以下: #define PROTOCOL_MODBUS1
c、驅動程序的配置。
能夠對下列選項進行設置,解釋例如以下:
MODBUS_REG_INPUT_START:輸入寄存器起始地址
MODBUS_REG_INPUT_NREGS:輸入寄存器個數(雙字節)
MODBUS_REG_HOLDING_START:保持寄存器起始地址
MODBUS_REG_HOLDING_NREGS:保持寄存器個數(雙字節)
MODBUS_MODE:模式,能夠為MB_RTU(二進制模式)
MB_ASCII(ASCII模式)
MB_TCP(TCP模式)
MODBUS_SLAVE_ID:從地址
MODBUS_BAUD:波特率
MODUBS_PARITY:效驗位。能夠為MB_PAR_NONE(無效驗)
MB_PAR_ODD(奇效驗)
MB_PAR_EVEN(偶效驗) 依據項目的實際需求,更改modbus_config.hpp配置文件,其更改後的源程序例如以下:
#define MODBUS_REG_INPUT_START 1 #define MODBUS_REG_INPUT_NREGS (2 * 16)
#define MODBUS_REG_HOLDING_START 1 #define MODBUS_REG_HOLDING_NREGS (2 * 64)
#define MODBUS_MODE MB_RTU #define MODBUS_SLAVE_ID1 #define MODBUS_BAUD 115200 #define MODUBS_PARITY MB_PAR_NONE
d、類的派生
已在PTL層設置完成,不須要派生。
} //讀保持寄存器 //讀輸入寄存器
//餵狗 Target.HAL.WatchDog.Feed(); }
3、CModbus類成員變量和成員函數的說明 成員變量:
uint16 usRegInputStart; 輸入寄存器起始地址 uint16 usRegInputBuf[MODBUS_REG_INPUT_NREGS]; 輸入寄存器緩沖Buffer uint16 usRegHoldingStart; 保持寄存器起始地址 uint16 usRegHoldingBuf[MODBUS_REG_HOLDING_NREGS]; 保持寄存器緩沖Buffer
成員函數
CModbus(void); 構造函數 void Dispose(void); 在主循環的第1行調用
註1:本文中演示樣例代碼用綠色標註。
原創性文章。轉載請註明出處 http://user.qzone.qq.com/2756567163。
本文將介紹modbus模塊驅動程序的調用方法。
1、硬件原理圖
2、用法 a、增加驅動程序
選中modbus目錄,右鍵點擊“Exclude from Build”就可以。 modbus驅動程序由多個個文件組成。例如以下圖所看到的。當中RSP1_config.hpp為RSP1的配置文件。
b、使能外設 在config.hpp中使能外設modbus,其源程序例如以下: #define PROTOCOL_MODBUS1
c、驅動程序的配置。
能夠對下列選項進行設置,解釋例如以下:
MODBUS_REG_INPUT_START:輸入寄存器起始地址
MODBUS_REG_INPUT_NREGS:輸入寄存器個數(雙字節)
MODBUS_REG_HOLDING_START:保持寄存器起始地址
MODBUS_MODE:模式,能夠為MB_RTU(二進制模式)
MB_ASCII(ASCII模式)
MB_TCP(TCP模式)
MODBUS_SLAVE_ID:從地址
MODBUS_BAUD:波特率
MODUBS_PARITY:效驗位。能夠為MB_PAR_NONE(無效驗)
MB_PAR_EVEN(偶效驗) 依據項目的實際需求,更改modbus_config.hpp配置文件,其更改後的源程序例如以下:
#define MODBUS_REG_INPUT_START 1 #define MODBUS_REG_INPUT_NREGS (2 * 16)
#define MODBUS_REG_HOLDING_START 1 #define MODBUS_REG_HOLDING_NREGS (2 * 64)
#define MODBUS_MODE MB_RTU #define MODBUS_SLAVE_ID1 #define MODBUS_BAUD 115200 #define MODUBS_PARITY MB_PAR_NONE
d、類的派生
已在PTL層設置完成,不須要派生。
e、對象的聲明
已在PTL層聲明完成,不須要聲明。
f、其他操作
modbus模塊自身占用了UART0和TIMERA。使用時,應在config.hpp中進行屏蔽,源程序例如以下:
#define INTERNAL_PERIPHERAL_CLOCK_MODE
1
#define INTERNAL_PERIPHERAL_UART0_MODE
0
#define INTERNAL_PERIPHERAL_TIMERA_MODE
0
g、調用方法
在主循環的第1行調用,例如以下語句:
Target.PTL.Modbus.Dispose();
可在主循環的任何位置,改變輸入寄存器或者保持寄存器的數值。以備主modbus調用。例子代碼例如以下:
while(1)
} //讀保持寄存器 //讀輸入寄存器
//餵狗 Target.HAL.WatchDog.Feed(); }
3、CModbus類成員變量和成員函數的說明 成員變量:
uint16 usRegInputStart; 輸入寄存器起始地址 uint16 usRegInputBuf[MODBUS_REG_INPUT_NREGS]; 輸入寄存器緩沖Buffer uint16 usRegHoldingStart; 保持寄存器起始地址 uint16 usRegHoldingBuf[MODBUS_REG_HOLDING_NREGS]; 保持寄存器緩沖Buffer
成員函數
CModbus(void); 構造函數 void Dispose(void); 在主循環的第1行調用
註1:本文中演示樣例代碼用綠色標註。
註2:本文中與使用密切相關的成員變量與成員函數用紅色標註。
原創性文章。轉載請註明出處 http://user.qzone.qq.com/2756567163。
MSP430WARE++的使用3:modbus模塊的調用方法