码迷,mamicode.com
首页 > 数据库 > 详细

MSP430WARE++的使用3:modbus模块的调用方法

时间:2017-05-05 14:19:21      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:border   dbus   进制   波特率   build   dog   dcs   use   项目   

MSP430WARE++的使用3:modbus模块的调用方法
    MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设。

本文将介绍modbus模块驱动程序的调用方法。



    
1、硬件原理图 

    使用modbus模块驱动程序须要与MSP430单片机的UART0port相连接  
技术分享 
    
    
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层设置完成,不须要派生。



    e、对象的声明
    已在PTL层声明完成,不须要声明。



    f、其他操作
    modbus模块自身占用了UART0和TIMERA。使用时,应在c
onfig.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.PTL.Modbus.Dispose();
if (Target.PTL.Modbus.flag == True)
{
Target.PTL.Modbus.flag = False;
//收到写保持寄存器数据

}
//读保持寄存器
//读输入寄存器

//喂狗
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模块的调用方法

标签:border   dbus   进制   波特率   build   dog   dcs   use   项目   

原文地址:http://www.cnblogs.com/slgkaifa/p/6812354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!