zoukankan      html  css  js  c++  java
  • MSP430WARE++的使用3:modbus模块的调用方法

    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  
  • 相关阅读:
    js指定区域全屏
    sql中对日期的筛选
    SQL Server查询死锁,杀死进程解决死锁
    SqlServer数据类型、C#SqlDbType对应关系及转换
    用SqlDataReader返回多个结果集
    SQL重复记录查询的几种方法
    IIS支持10万个同时请求的设置
    常量与变量的命名法则
    远程服务器返回错误: (405) 不允许的方法。
    The view 'Index' or its master was not found or no view engine supports the
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6812354.html
Copyright © 2011-2022 走看看