图1 多机通信硬件连接图
① 主机向各从机发送地址,此时TB8=1(表示发送的是地址),由于各从机在初始化时SM2=1,所以此时SM2=1,RB8=1(从机接的第9位数据,即主机的TB8),从而各从机都会把接收到的地址送入SBUF。
② 各从机把接收到的地址与本机地址比较:
不相等,则SM2=1(保持不变);相等,则SM2=0,并把接收到的地址返回主机。
③ 主机接收到返回地址后,与发送的地址进行比较(即核对),不相等,则重新从①开始;相等转④。
④ 主机向各从机发送数据,此时TB8=0,由于相等的那一台从机的SM2=0,从而会把接收的数据送入SBUF,除此以外的各从机,由于SM2=1,TB8=0,从而不会把接收到的数据送入SBUF。即相当于主机只与地址相符的那一台从机通信。
在工控系统(尤其是多点现场工控系统)设计实践中,单片机与PC机组合构成分布式控制系统是一个重要的发展方向。子系统与子系统可以平等信息交换,也可以有主从关系。
分布式控制系统结构图如图2所示。
图2 分布式控制系统结构
在分布式系统的各子系统中,控制器可完全由计算机代替。子系统中单片机是分布式控制系统的优选机型。这样计算机与单片机的通信就显得愈来愈重要,利用PC机配置的异步通信适配器,可以方便地完成PC与80C51单片机的数据通信。PC机和单片机串行通信硬件连接如图1所示。
近年来,采用微机与多台单片机构成的小型测控系统越来越多。它既利用了单片机的价格低、功能强、抗干扰能力强、灵活性好和面向控制等优点,又利用操作系统Windows的高级用户界面、多任务、自动内存管理等特点。①单片机主要进行实时数据采集和预处理,然后通过串口将数据传给微机。②微机对这些数据进行进一步处理。例如,求方差、均值、动态曲线与计算给定、打印输出的各种参数等。这里以1台PC机和1台单片机为例给出单片机与微机的通信过程。微机通过发送字符,单片机接收到数据后立即通过串口发回此数据并在微机的CRT上显示该字符。计算机软件可以利用VB、VC、Delphi等开发平台。
如果用户要进行串行通信,可以调用Windows的API应用程序接口函数,但其使用较为复杂。而使用Microsoft Visual Basic通信控件(MSComm)却可以很容易的解决这一问题。VB提供一个名为MSComm32.OCX的通信控件,
例,将例改用C语言编程,流程图如图,参考程序如下:
1号、2号机T1初始化子程序如下:
一号机发送子程序如下:
二号机接收子程序如下: