摘要: 融合单片机技术和计算机网络技术,优化数据包的格式和控制方式以及引入帧检测序列,设计基于AT89S52的单片机网络的单片机多机通信协议;系统网络拓扑结构采用总线型;网络接口电路采用端口转发的形式等进行单片机多机通信系统的设计,系统易于扩展且提高了稳定性。结果表明,此系统设计解决了8位单片机多机通信的问题,实现了客户机与服户机间的通信,以及客户机与客户机间的通信。
关键字:单片机;通信协议;数据包;帧;网络接口
1 引言
随着单片机和计算机技术的不断发展,单片机的应用也从独立的单机向网络发展,由计算机和单片机构成的多机网络系统已成为单片机技术发展的一个方向。二者的结合,充分发挥了单片机在实时数据采集和数据管理上的优点。单片机在计算机的网络通讯与数据传输、工业自动化过程的实时控制和数据处理等都有广泛地应用,已渗透到我们生活的各个领域。许多应用都涉及到单片机多机通信。然而,单片机对网络数据的处理方式不同于通用计算机系统,尤其有的单片机只提供8位的数据收发接口,在一定程度上阻碍了单片机在网络方面的应用。因此,采用单片机技术与计算机网络技术相结合的办法
2 系统网络协议设计
拟定网络容量为1台服务机和62台客户机,客户机之间可以相互通信。客户机和服务机之间也可以相互通信。设计的协议考了停止等待协议,数据包参考了IP数据包而设计。 经过综合分析和优化处理,制定如下单片机多机通信协议。
(1)服务机协议
①服务机按1/384的间隔发送询问数据包;
②将当前询问地址加1,判断,如果大于63则置当前询问地址为1,如果小于1则置当前询问地址为62,转下一步;
③向当前询问地址机器发送一询问数据包;
④等待一个发送间隔时间;
⑤如果没有收到确认包则转到将当前数据包重发,重发计数器加1,计数器大于2则转向⑥;如果收到确认包转到⑦;
⑥设置发送失败标记,重发计数器清0,转到②;
⑦设置发送成功标记,重发计数器清0,转到⑧;
⑧查看被询问客户机是否有数据要发送,有则分配总线使用权和时间片,转到⑨,否则转到②;
⑨等待被询问客户机的发送结束数据包,如果收到转到②。在一个时间片(1/384s)内,没有收到,视为超时。服务机收回总线使用权,转到②。
(2)客户机协议
①接收属于本机的数据包;
②如果是询问数据包,检查本机是否有数据要发送,如果有,则发送"有数据发送信息"到服务机,并捎带确认转到③,否则发送"没有数据发送信息"到服务机,并捎带确认,转到①;其它类型数据包不处理,转到①;
③等待网络资源分配数据包,收到则发送确认包,转到⑤;超时,停止等待转到①;
④等待上一数据包的确认,收到则转到⑤,否则转到⑦;
⑤检查是否还有数据要发送,有则发送数据包转到⑥;否则发送"结束发送信息"到服务机,转到①。
⑥检查是否超时,如果超时结束发送转到①,否则转到④。
⑦重发,是否超过两次,是则当前发送失败,转到⑤,否则转到④。
因此,每发一数据包都会请求对方的确认,如果没有确认,则会再重发一次,超过两次则被视为对方不可达,发送失败;并且在被询问客户机有数据发送时,如果总线空闲,服务机将分配其使用时间片,在这个时间片内,如果数据未发送完成,服务机将强行收回。能发送完成,客户机要发送结束数据包,归还总线使用权。
3 系统网络拓扑设计
选用总线型网络拓扑结构,各站直接连在总线上,由服务机统一管理网络总线,分配网络资源。使用类似于令牌总线网的协议,由服务机轮询每一客户机是否有数据发送,如果有分配发送时间,移交总线使用权,否则询问下一客户机;其中接口电路会将所接收到信号中继,并转发。因此网络中任意一台机器所发送的数据对其它机器都是可见的,并且在一定程度上保证了信号的可靠性。
系统网络拓扑设计如下图所示:
图1系统网络拓扑设计
4 网络接口电路的功能与设计
(1)网络接口电路的功能
网络接口电路完成的主要功能如下:①完成网络数据元的接收;②对接收到的数据元转发给其它端口;③多端口机制,端口间相互转发;④提交收到的数据元;⑤中继收到的数据元;⑥提供网络状态信号;⑦各端口之间同构,使用交叉线。
(2)网络接口电路的设计
为实现上述功能要求,网络接口电路设计时一共采用了四片74HC245芯片,共同承担数据的收发工
作,其中每一块芯片对应一个端口。在外表现为三个端口,这是因为有一个端口被本机占用,电路已布置在线路板上。各端口之间用交叉线连接,当检测到收线上有信号时,芯片开始启动工作,将信号分成三路中继出来,一路发给单片机,其它两种发给另外的两个端口。在收方的收收线上如果检测到同样的信号,则进行同样的操作。当单片机向外界发送数据时,就启动对应于单片机收发端口上的芯片,将信号中继后发送给另外的三个端口,并随时检测收线信号的变化,一旦检测到电平信号由高倒低的变化一次,即说明有数据需要接收,接收完后将产生一中断信号,启动处理程序进行处理。网络接口电路中设计了网络状态信号BUS,当各芯片都没有工作时,表示网络中没有数据传输,这时BUS经非门电路取反变成低电平,与单片机二号中断引脚相连,单片机可以通过这一引脚撑握网络状态,实现数据包的发送。
网络接口电路中还设计了指标信号,当收到数据时信号便置高,这时接在信号上的LED发光管将会发光,以表示收到数据。
5 客户机与服务机电路设计
系统中有客户机和服务机两种不同的电路。将客户机电路和服务机电路整合在一个电路板上
对于客户机,客户不需要部门控制电路,但其需要编址,故需要地址获取电路。
对于服务机,它不需要编址,统一固定为65这一地址,故不需要地址获取这一部分电路。服务机担负着整个网络的监管与轮询工作。
其它电路客户机与服务机均同构,所以不需要做任何修改。
电路板上,采取不插器件的方式实现两种不同构的电路在同一电路板上实现,大大地压缩开发成本。
6 系统功能模块图
(1) 系统功能:
服务器部分
① 完成网络的轮询,每隔一定时间向网络中的机器发出询问数据包。
② 读取ADC数据,显示当前环境温度
③ 控制一个调风阀,显示电机角度数据
④ 扫描键盘,提供按键控制
⑤ 从网络中收集调风阀信息,智能控制风机的开启
⑥ 控制本实验室照明电路的开、关
⑦ 能够接管网络中任意一台客户机
客户机部分
① 接收服务机的轮询,发送确认数据包
② 读取ADC数据,显示当前环境温度
③ 控制一个调风阀,显示电机角度数据
④ 扫描键盘,提供按键控制
⑤ 读取本机地址
⑥ 接收来自服务器的管理操作
(2)功能划分:
软件系统采用模块化的方式,每个设备编写一个驱动程序。驱动程序负责驱动其所控制的设备。并向其它程序提供接口,方便其它程序调用,控制设备。
各个驱动功能划分如下:
① 数码管驱动程序:驱动数据管显示,按指定方式显示数据。
② 键盘驱动程序:动态扫描键盘,判别按键,并避开电路毛刺。
③ 蜂鸣器驱动程序:驱动蜂鸣器安指定方式发声。
④ ADC驱动程序:读取模数转换器数据,并转换为温度数值。
⑤ 串口驱动程序:收发数据包,过滤非本机数据包
其中还有一个轮询模块,它在时钟的驱动下按一定间隔时间向网络中各台客户机发送询问数据包。如果两次没有收到回应,则视发送数据包失败。并能够向被接管的客户机发送管理数据包。同样也需要确认,超过两次则视为失败。
系统功能模块图如图2所示。
图2 系统功能模块图
由图可知,所有的驱动程序都挂靠在时钟中断上,由时钟中断按一定的频率调用这些驱动程序。
7 小结
系统设计了一个基于网络控制和管理的控制系统。它将计算机机网络技术和单片机技术进行融合,网络协议设计参考计算机网络中的停止等待协议和TCP/IP协议,但为了更好的适应于单片机处理,优化了数据包的格式和控制方式,大大提高了处理速度和效率。同时,引入帧检测序列,提供数据包的检测机制,提高了网络的可靠性。系统网络拓扑结构采用总线型,网络接口电路采用端口转发的形式,便于扩展且提高了稳定性。此系统设计功能齐全可以通过服务器控制整个网络的所有客户机,监视所有客户机运行情况;系统操作简单,具有一定的经济意义和实用价值。
参考文献
[1] (美)Christa Anderson.Mark Minasi.Mastering Local Area Networks [M] .出版社Sybex ,1999.
[2] 江晓安.董秀峰.模拟电子技术[M].西安电子科技大学出版社,2002.
[3] 张永瑞.杨林耀.张雅兰.电路分析基础[M].西安电子科技大学出版社,2001.
[4] Barry B.Brey.Programming the 80286,80386,80486,and Pentium-Base
d Personal Computer[M].电子工业出版社,1998.[5] 汤子瀛.哲风屏.汤小丹.计算机操作系统[M].西安电子科技大学出版社,1996.
[6] 江晓安.董秀峰.杨颂华.数字电子技术[M].西安电子科技大学出版社,2002.
[7] 周明德.微型计算机系统原理及应用[M].清华大学出版社,1998.
[8] 林雪梅.彭佳红.姚志成.单片机多机通信协议的设计[J] .微计算机信息,2006.2-2:24-26
[9] 张鲁.智能卡操作系统中存储管理设计[J] .微计算机信息,2005,8-3:18-19