您的当前位置:首页正文

基于MSP430的输入输出模块设计与实现

2021-01-31 来源:客趣旅游网
基于

MSP430的输入输出模块设计与实现

• 145 •

基于MSP430的输入输出模块设计与实现

顾亚军^2,周悦口,郭威2,王彪2

(1.上海海洋大学工程学院,上海201306; 2.上海深渊科学工程技术研究中心,上海201306)

摘要:监控系统的应用范围已扩展至海洋工程装备领域,数据采集与输出控制是监控系统的核心功能。

针对监控系统需求,设计出一种基于MSP430F149单片机,通过RS485总线传递数据控制模拟量输入输 出、数字量输入输出及PWM输出的功能模块,完成了硬件电路设计与焊制,下位机软件编程及基于Vis­ual C ++ 的上位机程序设计。系统试验表明整个模块功能稳定、操作简单,实现 8 个数字输出、 8 个数字 输入、1个模拟输出、3个模拟输入及1个PWM输出,能够很好地应用于各种监控系统设计。

关键词:监控;MSP430F149; RS485;输入输出控制中图分类号:TP274

文献标识码:A

文章编号:1000 -8829(2018)03 -0145 -05

Design and Implementation of Input and Output Module Based on MSP430

GU Ya-jun12, ZHOU Yue12, GUO Wei2, WANG Biao2

(1. SOU College of Engineering Science and Technology, Shanghai Ocean University, Shanghai 201306, China;

2. Research Center of Shanghai Hadal Science and Technology, Shanghai 201306, China)

Abstract: Monitoring system has been widely used in marine engineering. The data acquisition and output con­trol are the core functions of the monitoring system. A digital I/O module based on MSP430F149 is designed to meet the requirements of monitoring system. The module transfers the data through RS485, and controls three analog inputs, one analog output, eight digital inputs, eight digital outputs and one PWM output through serial commands. The whole developing process of the module is introduced, including hardware circuit diagram, soft­ware flow diagrams, prototype of module software program and computer program based on Visual C + +. Exper­iments show that the whole module is stable and easy to operate, and can be well applied to various monitoring system designs.

Key words: monitoring; MSP430F149; RS485; input and output control

随着科技的进步,各个领域对监控需求越来越多, 监控系统已成为保证系统整体安全的重要手段[1]。 监控系统综合计算机软件、硬件和信息通信技术,在消 防安保、军事、航空航天及工业控制领域都有广泛的应 用。而将监控系统应用在海洋工程技术领域是监控未 来发展的必然趋势,为海洋技术带来更深层次的革 命[2]。在多数海洋设备测试场合中,单纯的视频监控 难以满足监控需求,而频繁对各种现场的开关量和模

拟量进行采集和输出,对海洋设备工作状态的监测与 控制是监控系统直接与被监控对象关联的重要组成部 分。为提高海洋监控系统的安全性和可扩展性,在设 计功能方面,需要能有效解决系统测控领域中不同类 型的标准模拟量和开关量的检测以及实施控制装置。

对海洋工程

发领域的监控

需求

集各种输入输出功能于一体的模块,简称为输入输出 模块。该模块通过RS485串口进行通信,通过上位机 软件进行功能配置,上位机软件采用Visual C + + 6. 0

收稿日期:017-05-24

基金项目:国家自然科学基金重点项目(51439004),上海市“科

技创新行动计划”资助项目(16142203200,15DZ1207000);上海 海洋大学博士科研启动基金(A2-0203-17-100312)

编程。模块的主控芯片为MSP430F149,模块设计满 足监控系统设计需求,实现模拟量/数字量信号的采 集、模拟量/开关量输出控制及PWM输出控制,完成 对外部执行部件的控制。模块使用简单、成本低、可靠 性高。不同地址的模块可叠加使用,满足不同海洋工 程装备及部件检测控制场合,且对监控系统的辅助开 发、测试以及软件产业的发展等都具有重要意义[3]。

作者简介:顾亚军(1992—),男,江苏泰兴人,硕士研究生,主要

从事自动化控制领域方面的研究;[通信作者]周悦(1970—), 女,上海人,博士,教授,主要从事海洋装备控制、网络化控制、 智能优化算法等研究。

• 146 •

1主要功能和总体结构设计

输入输出模块是集成数字输入输出、模拟输入输 出及PWM输出功能于一体的控制模块,通过RS485 与上位机通信,在工程实践中,使用RS232进行调试, 之后通过RS232转RS485模块转换信号。与RS232 相比,RS485具有传输距离更远、信号干扰小、传输速 率更快等优点,其中最重要的一点是RS485可共用同 一传输线多点应用,解决了 RS232只能两点之间通信 的局限性[4]。上位机功能设计采用Visual C + + 6. 0 编程,及.NET框架的串行通信的关键技术来实现。 根据事先预订的通信协议,上位机将控制信息打包发 送给MSP430F149单片机,以控制数字输出(DO)、模 拟输出(A0)及PWM的输出状态。允许反馈使能情 况下,采集数字输入(DI)、模拟输入(AI)的信息并打 包发送给上位机。系统具体架构图如图1所示。

------H

do

|

---------------------

[H

DI

I^

MSP430F149

_

^

^

m

]

^~~I AI |

-----------------------------H

AO

I

图1系统架构图

2模块硬件设计

输入输出模块主控芯片采用的是TI公司设计生

产的一款超低功耗的16位单片机MSP430F149,其片 内集成精密硬件乘法器、两个16位定时器、6路P 口 及两路USART通信接口等,性能优越,可在1 • 8〜3. 6 V电压下正常运行,操作灵活,适合输入输出模块设 计[]。

8位数字输入(DI)与8位数字输出(DO)直接由

MSP430F149引出,时钟电路、复位电路、电源电路以 及下载电路为单片机提供最基本的工作环境,输入输 出模块框图如图2所示。MSP430F149需低频晶体振 荡器32. 768 kHz和高频晶体振荡器8 MHz两个基础 外部时钟,为处理器提供时钟信号,电源模块给整个输 入输出模块提供电源支持;复位电路采用低电平复位 方式;下载电路是基于CH340T芯片的Bootstrap Load­er (BSL) 下载方式 []。

模拟输出(A0)与模拟输入(AI)功能开发采用 PCF8591开发。PCF8591芯片是单电源低功率8位 CMOS数据采集芯片,提供了 4个模拟输入AIN0〜 AIN3、一个模拟输出端口 A0UT,通过一个串行I2C总 线接口传递数据,电路图如图3所示[]。PWM输出利 用PWM输出模块,通过USART—1接口与之通信配置

《测控技术》2018年第37卷第3期

PWM占空比。

图2输入输出模块框图

VCC

U1 16VCCAOUT15AOUT14

VREFAIN0<1 AINOAIN1<2AIN1VCC13

AGNDAIN2<3AIN2AIN3<

4AIN3

■lh

12R9

11

EXTOSCAO510kQ10kQ

AI6

SCL 10SDA

9

SCLA2SDA

GNDPCF8591T

图3 PCF8591电路图

监控系统各部件的电源通断通过继电器控制,如

控制摄像头的通断和灯光的亮灭等。此处继电器选用 宏发单稳态HFD4/4. 5-S1贴片4. 5 V直插继电器,该 继电器尺寸小,有利于节约空间,线圈与触点之间抗浪 涌电压2. 5 kV,符合EN60950/EN41003标准,具备高 触点切换能力,根据继电器特性设计电路图,如图4所 示[]。继电器的状态由数字输出接口(DO)控制。

8050

图4继电器电路图

3软件设计

3.1下位机软件设计

下位机即输入输出模块,采用的软件开发环境为

IAR Embedded Workbench,利用C编译器开发软件。 IAR Embedded Workbench是一个非常有效的集成开

基于

MSP430的输入输出模块设计与实现

发环境,为用户提供大量代码继承能力的开发环境,开 发语言为C语言[9]。程序编译完成后通过BSL下载 到主控芯片,实现数据的上下传输及相关功能的控制, 其主程序流程如图5所示。

图5主程序流程示意图

程序开始时需初始化各参数,包括初始化串口 0、

8位输出端口、8位输入端口及I2C接口,初始化完成

后开启中断,这里输入端口设置为P1 口,输出端口为 P2 口,P2 口与继电器电路控制端口相连,程序如下:

P2DIRI =0xFF;//初始化P2工作在输出状态 P20UTI =0XFF;//初始化P2输出高电平 P1DIRI =0x00//初始化P1工作在输入状态 UartInit( ) ;//初始化 USART0 Init_Usart1 ( );//初始化 USART1 InitIIC();//初始化 I2C _EINT();//开启中断

当RS485总线有指令时,中断接收指令,验证地 址并校验指令是否正确,校验完成后对指令进行处理, 配置输出端口状态,指令中有一位为反馈数据使能位, 当该反馈位为0xFF时检测输入端口状态,并将数据打 包通过串口 0发送给上位机,程序如下:

DoUart ( &q0 )/ //检测帧并执行指令duty = CommandPWM / if( duty! = duty_before )

I

duty_before = duty//根据指令设置 PWM set_duty( duty) /1

if( CommandFK = = 0xFF)//第 12 位为 0xFF 时反馈检

测帧

I

• 147 •

AD_channel( )/ //检测 AO 输入端

aTxBuff [19 ] = JiaoYandate ( aTxBuff, N_CPackagePC, &q0) /

SendUart( aTxBuff, N_CPackagePC) / //发送协议CommandFK =0x00 //反馈位清零

1

其中“ DoUart( &q0 )”作用是检验帧结构的地址是 否正确、校验接收指令并执行相应操作,部分程序如 下:

if ( aRxBuff [ 0 ] = = HEAD_PackageIO&&bUartRxErr = = 0 )

//检测地址

if( NRxBuff = = N_CPackageIO) //数据包接收完毕I

if(JiaoYan ( aRxBuff,N_CPackageIO,&q0 ) = = 1 ) //数

据校验通过

I

CommandDo = aRxBuff[6] //配置数字输出 CommandAo = aRxBuff[ 8 ] //配置模拟输出 CommandPWM = aRxBuff [ 14] //配置 PWM 输出 CommandFK = aRxBuff[ 12] //检测反馈位信息 aTxBuff [0 ] =HEAD_IOOK/SendByte = 1 /

SendUart( aTxBuff, SendByte) / aTxBuff [0 ] = ^MYM^/1

NRxBuff = 0 /1

//处理指令

Do_Command( CommandDo )/ iq0 = Ao_Command( CommandAo)/

3.2上位机软件设计

上位机软件设计是整个功能设计不可或缺的组成 部分,必须实现所设计的输入输出模块所有功能,包括 接收输入输出模块采集的数据,并能发送控制指令控 制输入输出模块。上位机软件采用Visual C + +集成 开发环境开发,Visual C + +是Windows环境下最主要 的C ++开发环境,支持面向对象编程并提供可视化编 程环境。Visual C++可以通过多种方式实现串口编 程,Microsoft Communication Control (简称 MSComm)简 单实用[10]。

数据 ,

数据并

确,不正确则放弃此次数据继续等待,正确则继续接收 数据;接收完成后对数据进行校验,检验正确则处理数 据,错误则放弃此次接收数据。当操作人员需发送控 制指令,上位机将指令根据通信协议打包,添加通信地 址与校验码,送进发送存储区域等待发送完成清空该 区域,设计上位机程序流程如图6所示。用MSComm 控件

机软件

通信

要包

控件

载、初始化并打开串口、捕获串口进行数据读写等[1]。

• 148 •图6上位机程序流程示意图

(1) 加载控件到项目。

Visual C + +集成开发环境默认不提供MSComm 控件,需在“Project”中选择“Add to Project”选项并打 开“Components and Controls Gallery”选项加载该控件,之后添加一些编辑控件及按钮控件。

(2) 串口初始化与打开。

界面完成后需对串口进行初始化,然后才能打开 串口,初始化串口步骤依次为:指定串端口号并设置输 入输出缓冲区、设置数据接收方式、设置通信参数及触 发OnComm事件阈值并清空接收缓冲区,最后再打开 串口。具体程序如下:

m_mscom1. SetCommPort( 1) ;//指定串口号为 1 m_mscom1. SetInBufferSize( 1024) ;//设置输入缓冲区大小 m_mscom1. SetOutBufferSize(512) //设置输出缓冲区大小 m_mscom1. SetInputMode( 1) ;//设置接收数据方式 m_mscom1. SetSettings ( 9600,o,8,1 ’');//波特率 9600

偶校验

m_mscomL SetRThreshold ( 20 ) ;//角虫发事件阈值 m_mscomL SetInputLen(0) ;//清空缓冲区 if( m_mscom1. GetPortOpen()

)

I

m_mscom1. SetPortOpen (true )/ //打开串口1

( 3 ) 进行数据 。

当接收输入输出模块返回的数据时,须能够自动

捕获串口事件,并对数据分析检验处理显示,具体程序 如下:

variant_inp = m_mscom1. GetInput( ) / //读取缓冲区数据safearray_inp = variant_inp / //将 VARIANT 型变量值赋给ColeSafeArray 类型变量

len = safearray_inp. GetOneDimSize ( ) / //获取数据长度for( i = 0 ; i < len; i + + )

《测控技术》2018年第37卷第3期

safearray_inp. GetElement( &i, &rxdata[ i ] )/1

for( int i =0 ; i < Len - 1; i + + )I

jiaoyan + = rxdata[ i] /1

if(jiaoyan = = rxdata[len] )//和校验正确I

UpdateData(TRUE) /

str.Format(’’%f’’,float(rxdata[8])/255 *5) ///AIN0 m_current = str /str. Format( ,float(rxdata[ 10] )/255 * 5) ///AIN1

m_voltage = str;

str.Format(’’%f’’,float(rxdata[12])/255 *5)///AIN2 m_ain2 = str /

str. Format( ’ %fM ,float(rxdata[ 14] )^255 * 5) /^/AIN3 m_ain3 = str /

str. Format(''%d\",rxdata[6] ) ///数字输入 m_DInput = str;

UpdateData(FALSE) ///显示1

发送指令控制输入输出模块,方法是先定义容量

为20的数组,存好通信地址,再将界面的控制信息依 次存进数组后计算和校验值,校验值存进数组最后一 位检验位,数组通过串口发送给下位机,具体程序如 下:

BYTE txdata [20 ] = | r r,^I^,^O^,r

rr, ^0^,rrr

0',',','0',',','0',',','0',',','r,'D','O','0'1

BYTE jiaoyan = 0 /WORD wLen=20 /

txdata[6] =DO_output/ //DO controll txdata [8 ] = m_Slider. GetPos( ) /^/AO control txdata [12 ] = receive_allow / txdata [ 14 ] = m_Solider. GetPos( ) /

//校验和

for( int i = 0 / i < wLen - 1 / i + + )I

jiaoyan + = txdata [ i] /1

txdata [ 19 ]= jiaoyan///校验值存进数据 sendArr. SetSize(wLen) ///设置发送内容长度 for( i = 0 / i < wLen / i + + )I

sendArr. SetAt ( i,txdata [ i ])///发送指令1

4试验测试

该模块能够方便实时采集输入端口数据,并能正

确根据通信协议解析数据,非常适合应用于各种监控 系统。通信接口采用RS485总线形式,便于开发人员

基于

MSP430的输入输出模块设计与实现

用,模块上电

运行内部程序,等待上位机

发送

,

出模块图如图7所示。

图7

输入输出模块图

出模

,操 运行上位机Visual C ++程序,酉

出模块,如图8所示。

示例数

出(D0)4

0xF8,

通前3个继

电器,模拟输出(A0)输出 0〜255,此次输出为

69, 出1.35 V电压,PWM占空比13%,用于LED 光。时接受反馈信息

,选中“allow receive”选,模拟

(A0)与数

(D0)的信息显示在

“receive” 框内。

图8上位机调试结果

5结束语

对海洋工程 发领域的高压

监控平台

计要求和

,设计出

基于RS485总通信控

制的 出模块。利用RS485总通信

,解决监控系统设计中模拟量与数字量 出

控制的 ,

, 。模块拥有

通信地

, ,

对多个该模块的通信控制,

模 间

,上下位机间传递数据

参考文献:

[1 ]

赵中原,方志,邱毓昌,等.电力设备监控系统的发展[J].

工业大学学报,2001 (4) :308 -311.

• 149 •

[2] 鲍吉龙,叶平.工业监控系统的网络化发展[J].微计算机

信息,2006,22(6S) :66 -68.

[3] 马玉春,孙冰.模拟量 关量输出模块的软件仿真

[J].软件,2011,32(12):13-16.

[4]

Zhao L, Liang R B, Zhang J L. The solving of bias resistor and its effect on the RS485 fieldbus[ J]. Journal of Advances in Computer Networks ,2014 ,2(1) :71 -75.[5] 周乐川,洪沁,叶树明•基 MSP430F149的温度记录仪

的低功耗设计[J ].仪表技术与传感器,2008 (2).

[6]

Texas Instruments. MCU Family Features Ultra Low Power Consumption [ Z ]. 2004.

[7]陈 柱峰,沈治国•基于PCF8591的I2C总线A/D、D/A转

[J] •企业技术开发(学术版),2009,28(5) :8 -21.

[]

刘杰君•一种电磁继电器安全驱动电路的研究与应用

[J] •测控技术,2014,33(12) : 136 -138,142.

[9]

Santosh C, Kulat K D. Design overview of processor based implantable pacemaker [ J ]. Journal of Computers, 2008,3(8) :9 -57.

[10] 胡丹丹,吴成富,陈怀民•基于Visual C + + . Net的Meas-

urement Studio 软件设计[J ] •测控技术,2008,27 (6 ) : 70 -72.

[11] 张克涵,张呼和,顾李冯.VC ++环境下的电机状态监测

软件设计[J] •测控技术,2012,1 (2) :3 -26.

[12]李 景峰.Visual C++

通信技术详解[M]. 2版•北

京:机械工业出版社,2013.

(上接第144页)参考文献:

[1]刘志逵•速度状态参数的最优观测几何[J]•飞行器测控 学报,1985(4)34 -50.[2 ]

刘丙申,刘春魁,杜海涛•靶场外测设备精度鉴定[M ] •北 京:国防工业出版社,2008.

[3] 石彦召,朱新华,郑百源,等•基于光电经纬仪的布站研究

[J] •探

控制学报,2009,1 (S1) :6 - 89.

[4] 吴平•几典型航天测控系统的

站[J] •宇航学报,

1996,17(1) :5 -23.[]

马顺南,王玮•靶场外弹道测量系统最优布站方法研究 [J ] •宇航学报,2009,29 (6) : 1951 - 1954•[]项树林•基于系统思想的外测布站优化设计[D] •大连: 大连理工大学,2009.

[]周杰,刘哲,刘长安,等•多台光电经纬仪布站几何的仿真 研究[J ] •计算机仿真,2011,28 (8) : 24 - 28 •

[8] 周磊•基

算法的多传感器优化布站研究[D]•成

都:电子科技大学,2012.

[9] 马彦敏,韩燮•多 -光电经纬仪的优化布站研究

[J] •计算机测量与控制,2013,21(12) :399 -3401.

[10]

•无源定

化布站 研究[D]•西安:西安电子

科技大学,2014(6).

因篇幅问题不能全部显示,请点此查看更多更全内容