10KM远距多个单片机的主从方式串行通信分析

控制/MCU

1878人已加入

描述

一、问题的提出

51系列单片机具有方便的串行通信功能,当串行口以方式2或方式3工作时,置SM2一l。此种情况下,仅当串行口接收到的第9位数据RBS为1时,才激活中断标志RI;否则不产生中断,信息被丢失。利用串行口的这个特性,便可实现主机一分机的串行通信。

对于分机一主机的通信,可以采用每台分机对主机的一对一通信。这种方式大大增加了主机的串行接口电路和传输电缆。如采用图1- 47所示结构,分机O~N的输出串接在一起,则会造成传输线2上信号紊乱,甚至会烧毁分机串行输出口。

另外,采用TTL电平通信,传输距离只有几米;如果采用RS一232C,传输距离也不过几十米,达不到10 km范围内的传输要求。

为解决上述问题,我们提出一种总线式串行传输方式:利用三态门实现传输线2与未通信分机的隔离,传输线上输送的串行信号为已调制的-12~+12 V方波信号,发送机与接收机用电流环实现通信传输。

单片机

二、总线式串行传输方式

设定主、分机通信波特率为600 b/s,串行信号为:O电平调制成1 200 Hz,l电平调制成2400 Hz的-12~+12 V方波信号。主、分机通信电路一致。

1.硬件电路

通信系统硬件电路如图1- 48所示。图中,A点逻辑为1时,开通调制器,允许B点信号送传输线2;A点逻辑为0时,锁闭调制器,串行输出口呈高阻状态。

单片机

欲启动串行口占用传输线2时,首先须检查传输线状态,即让PC0=1,PC1发一个负脉冲“U”清74LS74 Q端为0;等待时间t2后,检查PC4。若PC4为高电平,则说明已有分机占用传输线2,此时不能向传输线2发送数据。即使发送数据,由于Q=l,锁闭串行口,数据也不能送到传输线2上。若PC4为低电平,则说明传输线2空闲,8031控制8255将PCo置o,开通调制器。由于U1端为低电平,此时传输线2上的信号不能引起74LS74 CP端由0到1的翻转,74LS74 Q端恒为低电平,该分机占用传输线2。

分机将数据发送完毕,则置PCo为1,锁闭调制器。

2.通信软件

当主机通过传输线l向各分机发出呼唤时,数据RB8=1;否则RB8=0。主机呼唤分机信号定义如下:

当SD7 =1时,主机对分机号为SD6~SD。的分机发出呼唤,接着下一字节(RB8 -O)向该分机发送命令(注册、控制、咨询等)。该分机接收完命令,即向主机发送数据,回答主机。

当SD7=0时,主机对任何分机均无呼唤,SD6=SD。无效,各分机可以向主机发出呼叫,以实现分机一主机的呼叫。为防止同一瞬间两台以上分机同时向主机发出呼叫,各分机将此数据作为一个同步信号,以接收到该字节的时间为起点,根据分机号分别延时时间£.,再检查传输线2,启动发送。

传输线2面向某分机开通,

检查传输线2状态,即PC,发“U”,延时t2(》111 200 s).使74LS74 Q端能准确地反映传输线2的状态。

检查PC4,若为低电平,则可以启动发送;若为高电平,则说明传输线2上已有数据传输,不能启动发送,等待下一个同步信号到来时再试图启动。

当分机使用完串行口时,即让PC。=1,关闭调制器,使串行口输出呈高阻状态。

主、分机通信程序处理流程如图1- 49和图1- 50所示。图1- 49中,t主为主机连续向分机发同步信号的延时等待时间,以等待分机对主机发出的上一个同步信号的响应。

t主=ll/600+t2+[t+1]max+tD式中:tD为冗余时间。

本节提出的总线式串行通信方式适用于数据传输量不太大的分布式多机系统。一台主机最多可连接27台分机。在所需连接分机台数不多的情况下,可以将主机呼唤分机信号的高位数据定义成一些常用命令,以减少主机一分机命令字节的传输,提高传输速率。

该传输方式经在多机分布式警戒系统中试验,证明切实可行。

单片机

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分