PC机与多台单片机串行通信的设计.pdf
P C 机与多台单片机串行通信的设计5 9P C 机与多台单片机串行通信的设计S e r i a l Co mmu n i c a t i o n b e t we e n Mu l t iS i n g l e C h i p Mi c r o c o m p u t e r s a n d P C 陈裕 国(武汉化工学院电气信息学院,武汉 4 3 0 0 7 3)摘要:在由P C机和多台单片机构成的分布式控制系统中,通过采用 M A X 3 1 6 2 E芯片在串行通信接口电路中完成了R S-2 3 2 与R S-4 8 5 间的信号转换,并定义了通信协议,用V B和C 5 1 语言分别设计了P C 机和单片机的串行通信程序。程序实际运行良 好,具有参考与实用价值。关键词:P C机单片机串行通信 A b s t r a c t:I n t h e d i s t r i b u t e d c o n t r o l s y s t e m c o m p o s e d o f P C a n d m u l t i s i n g l e c h i p m i c r o c o m p u t e r s,t h eR S 一 2 3 2/R S 一 4 8 5 m u l t i p ro t o c o l t r a n s c e i v e r M A X 3 1 6 2 E i s u s e d i n t h e i n t e r f a c e c i r c u i t b e t w e e n t h e m.B yV i s u a l B as i c a n d C 5 1 l a n g u a g e,t h e c o m m u n i c a t i o n p r o g r a m b e t w e e n m u l t i s i n g l e c h i p m i c ro c o m p u t e r s a n dP C i s a c h i e v e d,w h i c h i s b as e d o n t h e u s e r 一 d e f i n e d p r o t o c o l.T h e t e s t e d c o m m u n i c a t i o n p r o g r a m r u n s v e ryw e l l a n d i s r e f e r e n t i a l f o r e n g i n e e r s.K e y w o r d s:P C s i n g l e c h i p m i c r o c o m p u t e r s e r i a l c o m m u n i c a t i o n0 引言 单片机由于其具有控制功能强、设计灵活和性能价格比高的特点,因此在工业控制领域得到了广泛的应用。在设计某包装机械厂的自 动分压机电气控制系统中,笔者采用了1 3 台单片机分别控制5 把分纸刀和8 只压线轮在各自 丝杆上的位置;为了实现对生产订单的管理和生产过程中换单排刀时的数据处理,上位机采用P C 机,由P C 机向单片机发出位置控制指令,同时监测并显示每个分纸刀和压线轮的位置。本系统P C机与单片机间的通信可靠性是关键。下面介绍P C机与1 3 台单片机间串行通信软硬件的设计与实现。1 通信接口电路设计 为了使用户能够在集控室通过操作P C机对生产线自 动分压机的控制,需要将P C 机的R S-2 3 2 通信接口 转换为 R S-4 8 5 接口。图1 是采用 M A X I M公司生产的M A X 3 1 6 2 E协议转换接口芯片,实现R S 一 2 犯 与R S-4 8 5 协议转换的接口电路。M A X 3 1 6 2 E功能分为4部分:(1)2 路R S 一 2 3 2 电平信号到TTL电平信号的转换(1 9 脚一1 0 脚、2 0 脚一9 脚,1 5 脚为使能端);(2)2 路TTL 电平信号到R S 一 2 3 2 电平信号的转换(2 1 脚一8 脚、2 4 脚一5 脚,1 6 脚为使能端);(3)1 路TTL 逻辑电压信号到R S 一 4 8 5 差分信号的转换(2 3 脚一 石脚、7 脚,2 2 脚为使能端,使能端无效时,6 脚、7 脚呈高阻态);(4)1 路R S 一 4 8 5 差分信号到TTL 逻辑电压信号的转换(1 7 脚、1 8 脚一1 1 脚,1 2 脚为使能端,使能端无效时,1 1 脚呈高阻态)。在图1 中利用了R S 一 2 3 2 的R T S 信号来控制总线的方向。当R T S 为逻辑电平1(一 1 2 V)时,9 脚输出为TTL 的逻辑电平1(+5 V),使能端D E 4 8 5(2 2 脚)有效,这 样T X D端发送的R S 一 2 3 2电平信号就可以由1 9脚一1 0 脚一2 3 脚一 fi脚、7 脚变为 R S 一 4 8 5差分信号输出;当R T S 为逻辑电平0(+1 2 V)时,9 脚输出为TTL的逻辑电平0(0 V),使能端R S 一 4 8 5(1 2 脚)有效,这样R S-4 8 5 输入的差分信号就可以由 1 7脚、1 8 脚一1 1脚一-2 4 脚一5 脚变为R S 一 2 3 2电平信号输出,R X D端就可以接收数据。作者简介:陈裕国 1 9 6 5 年生,硕士,武汉化工学院电气信息学院教师。主要从事嵌入式系统开发、控制工程等方面的教学与科研 工作。万方数据6 0机电一体化M e c h a t r o n i c s 2 0 0 6 年第5 期C 1 +C 41 1 0 0 n F+C a 1 0 0 n F2.3 单片机通信程序 单片 机的 通信程序采用C 5 1 编程 ,通信以中 断的方式进行。单片机处于从机地位,每台单片机被分配一个节点地址。单片机每收到一个P C机送给本节点的命令帧,则根据命令帧中的命令代码向P C 机回送一个响应帧。以下是单片机的通信程序:#d e fi n e N O D E 一D D R 1/定义本节点地址#d e f i n e r c v _ s n d _ C O U N T 1 2/定义接收发送缓冲区大小u n s i g n e d c h a r d a t a r c v _ s n d 一u f f e r r c v _ s n d-C O U N T u n s i g n e d c h a r d a t a*r c v _ s n d-p o i n t e r/定义接收发送指针v o i d m a i n()S O O N=0 x 5 0;T M O D=0 x 2 0;T H l=O x f d/初始化串口和波特率 T R 1=1;E T 1=0;E S=1;E A=1 r c v _ s n d _ p o in t e r=r c v _ s n d _ b u f fe r/初始化接收发送指针L山1-,C 2r l 0 0.FC s1 0 0.Fcl+cl-朴研戴FAsT图1 R S-2 3 2/R S-4 8 5 协议转换接口电器2 通信程序设计2.1 通信协议 P C机与单片机间的通信协议采取自定义的方式。每一次通信以P C 机向单片机发送一个命令帧开始,单片机收到命令帧后,向P C机回送一个响应帧。发送和接收以文本方式进行。命令帧和响应帧格式如表1 所示,它们都是以字符“%”开始,以字符“*”结束,校验方式采用异或校验。表 1 命令帧和响应帧格式内容起始符站号命令代码数据校验码结束符字符数121521 P C机命令帧部分命令代码定义如下:W 设置刀/轮位置,命令帧包含5 个字符的数据项;R 读取刀/轮位置,命令帧无数据项。单片机响应帧部分命令代码定义如下:W 对命令帧命令代码为“W”的响应帧,响应帧无数据项;R 对命令帧命令代码为“R”的响应帧,响应帧包含5 个字符的数据项;E 对所有命令帧校验出错时的响应帧,响应帧无数据项。2.2 P C 机通信程序 P C 机通信程序采用V B 编程。将主界面中的“位置监测”功能按钮按下,P C机即对 1 3台单片机进行巡回位置监测,“位置监测”功能按钮则改显“正在监测”。程序通过使用M S C o m m控件和T i m e r 控件 I j 来实现对1 3 台 单片机每秒一次的轮流通信,从而实现在集控室P C 机屏幕上显示每个分纸刀和压线轮的位置移动情况。v o i d c o m m(v o i d)i n t e r r u p t 4 u s i n g 1/通信中断服务函数 I i f(R I=1)刀接收中断 R I=0;*r c v sn d _ p o i n e r=S B U F i f*r c v _ s n d _ p o i n e r=二 。)1 刀接收的字符为结束字符 i f(t o i n t(r c v _ s n d _ b u f f e r 1 )*1 0+t o i n t(r c v _ s n d _b u f f e r 2 )=N O D E _ A D D R)刀收到的命令帧是发送给本站的 刀校验 s w i t c h(r c v 一u f f e r 3 )刀收到不同命令代码对应不同的程序段 c a s e R :/位置监测 二 丫/将回 送信息填人发送缓冲区 r c v _ s n d _ p o i n t e r 二 r c v _ s n d 少u ff e r S B U F=*r c v _ s n d _ p o i n t e r/发 送 第一 个字 符 b r e a k c a s e W:/参数设置万方数据P C 机与多台单片机串行通信的设计 e l s e 刀收到的命令帧不是发送给本站的,初始化指针 r c v _ s n d _ p o i n t e r=r c v _ s n d b u ff e r e l s e r c v s n d p o in t e r+/继 续接收 i f(r c v _ s n d _ p o i n t e r(&r c v _ s n d _ b u ff e r r c v _ s n dC O U N T 一 1 )/收到过多的字符,初始化接收指针 r c v sn d _ p o i n t e r 二 r c v _ s n d ee b u ff e r e l s e I 刀发送中断 T I二0 if*r c v _ s n d _ p o i n t e r=*)I/本次通信结束,准备下次通信 r c v _ s n d _ p o i n t e r 二 r c v _ s n d _ b u ff e r r e t u rn S B U F=*+r c v _ s n d _ p o i n t e r/继续发送 3 结束语 本文实现了 P C机与多台单片机间的串行通信。通信接口电路简单可靠,并采用了流行的V B 和C 5 1 语言进行程序设计,提供了具体的通信程序代码。程序实际运行稳定可靠,具有参考与实用价值。参 考 文 献 1 张 宏林,求是科技 D e l p h i?程序设计与开发技术大全【M 北京:人民邮电出版社,2 0 0 4.2 徐爱钧,彭秀华.单片机高级语言C 5 1 W i n d o w s 环境编程与 应用 M.北京:电子工业出版社,2 0 0 1.和利时推出国内首款 O通道模拟量采集模块 L M 3 3 1 3 是一款8 通道标准模拟量的输人采集模块,是继和利时G 3 小型P L C主推产品以太网扩展模块 L M 3 4 0 3 后的又一力作,同时,这也是国内首款应用在小型P L C上的8 通道标准模拟量信号采集模块。用户在选型时,可不再局限于4 通道模拟量的输人模块L M 3 3 1 0,这对于标准模拟量输入路数多、系统空间要求高的用户,提供了更好的选择。L M 3 3 1 3 的使用,将大大节约用户的系统成本。L M 3 3 1 3 模块用来采集一 1 0 一+l o v的电压信号或一 2 0 一+2 0 m A的电流信号。现场与系统数字部分隔离,通道间不隔离,隔离耐压为1 O O O V D C o L M 3 3 1 3 模块与P o w e r P r o 软件配合使用时,用户可通过软件有选择地设置通道是否使能;对于不使能的通道,模块不进行采集。在采样精度设置中,用户可通过设置滤波时间以提高精度;用户也可以设置死区,当两次采样值的变化超过死区值时,将直接把当前采样值设置为最新值而不滤波。L M 3 3 1 3 的推出,丰富了 H O L U A S 一 C L E C G 3系列P L C 模拟量种类。目 前,和利时小型一体化P L C 可为用户提供的模拟量扩展模块包括:4 通道模拟量输人模块 L M 3 3 1 0,8 通道模拟量输人模块L M 3 3 1 3,4 通道热电偶输人模块 L M 3 3 1 1,4 通道热电阻输人模块 L M 3 3 1 2,8 通道热敏电阻输人模块L M 3 3 1 4,2 通道模拟量输出模块 L M 3 3 2 0等,可以接收电流、电压、热电偶、热电阻和热敏电阻等多种类型的信号。万方数据