于RS485的多机通信程序主机端

合集下载

RS485多机通信一主机两个下位机

RS485多机通信一主机两个下位机
RS485一主机两个下位机,上位机通过发送下位机地址查询下位机两个按钮的状态,仿真时同时在P1口和P2口显示按钮状态
一、原理图
二、程序
1、上位机程序
#include "main_host.h"
/*延时t毫秒*/
void delay(uint t)
{
uint i;
while(t--)
{
/*对于11.0592M时钟,约延时1ms */
}
/*主程序*/
void main()
{
uchar i = 0;
uchar addr_tmp;
uchar data_tmp;
init_serial();//串口初始化
EA = 0;//关闭所有中断
/*发送地址帧并接收应答信息,如果接收的信号与发送的地址信息不同,则重新发送地址帧*/
P0=0xff;
addr=P0; //下位机地址初值(第一个下位机地址)
P1=addr;
/*进入设备应答*/
while(1)
{
SM2 = 1;//只接收地址帧
/*如果接收到的地址帧不是本机地址,则继续等待*/
addr_tmp = addr-1;
while (addr_tmp!=addr)
{
addr_tmp=ReciveUart();
}
/*发送本机地址作为应答信号,准备接收数据*/
#define uint unsigned int
/*握手信号宏定义*/
#define DataCMD 0x55//接收成功
#define ERR 0xaa//接收错误
#define BASE_ADDR 0x51 //下位机地址基址

RS485总线通信系统的设计及实现毕业论文

RS485总线通信系统的设计及实现毕业论文

RS485总线通信系统的设计及实现毕业论⽂本科学⽣毕业论⽂论⽂题⽬:RS485总线通信系统的设计与实现学院:年级:专业:姓名:学号:指导教师:摘要⽆论是⼯业控制还是信号测试领域,实现不同通讯协议的数据融合都有着迫切需要。

但是⽬前市场中存在的协议转换器只能满⾜两种协议之间的转换,如RS485转RS232,USB转RS485等,但是经常存在着多种数据总线并存的情况,因此研制多种总线协议转换的设备有着⽐较⼤的实际意义。

除此之外,⽬前接⼝标准的RS485总线通信协议不统⼀,需设计⼀个⾼效稳定的通信协议。

基于以上原因,本论⽂提出⼀种基于⾼速RS485的多总线通信系统。

整个系统包含多个RS485节点,各个节点包含的通讯接⼝包括RS232,RS485和USB,从⽽实现这三类总线的通讯协议的转换。

设计并实现了⼀种适⽤于微机和单⽚机之间串⾏通信的通信协议,采⽤RS485简便,通信可靠性⾼总线标准,可⽤于⼯业测控和控制现场。

实验结果表明,该通信协议是切实可⾏的,达到了预期的设计要求。

关键词RS485总线;主从式;多机通信;通信协议AbstractWhether in the field of industrial control or signal test, the achievement of data fusion which is based on different communication protocol is urgent needed. However, in the current market, protocol converter can only achieve conversion between two protocols, such as RS485 to RS232, USB to RS485 and so on. Cases of coexistence data bus, it has great practical significance to develop an equipment for protocol conversion among different buses.Based on the reasons above, a high-speed RS485-based multi-bus communication system is presented in this paper. The entire system which is used to realize the three categories of bus communication protocol conversion consists of someRS485 nodes, each node contains the communication interfaces including RS232, RS485 and USB. In the practical application, the number of nodes can be changed as required to formsystem, for achievement of data fusion between a variety of bus communication protocol.Key wordsRS485 bus; Serial Bus; Protocol Conversion; Communication protocol⽬录摘要............................................................................................................................. I Abstract .....................................................................................................................II 第⼀章绪论 (1)1.1 研究背景及意义 (1)1.2 RS485总线通信系统研究现状 (2)第⼆章RS485介绍 (4)2.1 RS485标准 (4)2.2 MAX485芯⽚介绍 (4)2.3 RS485总线组⽹⽅式 (5)2.4 RS485⽅式构成的多机通信原理 (5)第三章系统协议及硬件设计 (7)3.1 RS485通信协议设计 (7)3.1.1 物理层设计 (7)3.1.2 数据链路层设计 (8)3.1.3 应⽤层设计 (8)3.1.4 通信协议 (8)3.2 系统硬件设计 (10)3.2.1 PC与RS485总线的接⼝ (10)3.2.2 RS485⽅式构成的多机通信 (10)3.2.3 单⽚机与PC机串⾏通信系统构成 (11)第四章系统的软件实现 (12)4.1 上下位机的关系 (13)4.2 下位机通信软件的设计 (14)4.3 上位机通信软件的设计 (16)4.3.1 通信协议设计 (16)4.3.2 多机传输 (17)4.3.3 差错控制 (18)4.4 程序设计 (19)第五章系统问题解决措施 (20)5.1 总线隔离 (20)5.2 失效保护 (20)5.3 电磁⼲扰问题 (20)结论 (22)参考⽂献 (23)致 (24)第⼀章绪论所谓通信,不仅仅要实现数据的传输,更应该体现准确性,也称可靠性传输,最好具有⼀定的纠错和检错能⼒。

RS485——精选推荐

RS485——精选推荐

RS485通信协议RS485接口原理图RS485接口RS485采用差分信号负逻辑2V6V表示“1”- 6V- 2V表示“0”。

RS485有两线制和四线制两种接线四线制是全双工通讯方式两线制是半双工通讯方式。

在RS485通信网络中一般采用的是主从通信方式即一个主机带多个从机。

很多情况下连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。

而忽略了信号地的连接这种连接方法在许多场合是能正常工作的但却埋下了很大的隐患这有二个原因1共模干扰问题RS-485接口采用差分方式传输信号的方式并不需要相对于某个参照点来检测信号系统只需检测两线之间的电位差就可以了。

因此往往忽视了收发器有一定的共模电压范围RS-485收发器共模电压范围为-712V只有满足上述条件整个网络才能正常工作。

当网络线路中共模电压超出此范围时就会影响通信的稳定可靠甚至损坏接口。

2EMI问题发送驱动器输出信号中的共模部分需要一个返回通路如没有一个低阻的返回通道信号地就会以辐射的形式返回源端整个总线就会像一个巨大的天线向外辐射电磁波。

RS485同RS232连接由于PC机默认的只带有RS232接口有两种方法可以得到PC上位机的RS485电路1通过RS232/RS485转换电路将PC机串口RS232信号转换成RS485信号对于情况比较复杂的工业环境最好是选用防浪涌、带隔离珊的产品。

2通过PCI的串口卡可以直接选用输出信号为RS485类型的扩展卡。

RS485电缆在低速、短距离、无干扰的场合可以采用普通的双绞线反之在高速、长线传输时则必须采用阻抗匹配一般为120Ω的RS485专用电缆STP-120Ωfor RS485 CANone pair 18 AWG而在干扰恶劣的环境下还应需铠装、双绞屏蔽电缆ASTP-120ΩforRS485 CAN one pair 18 AWG。

在使用RS485接口时对于特定的传输线路从RS485接口到负载其数据信号传输所允许的最大电缆长度与信号传输的波特率成反比这个长度数据主要是受信号失真及噪声等影响所影响。

RS485组网通讯

RS485组网通讯

RS485组网通讯RS485简介智能仪表是随着80 年代初单片机技术的成熟而发展起来的,现在世界仪表市场基本被智能仪表所垄断。

究其原因就是企业信息化的需要,企业在仪表选型时其中的一个必要条件就是要具有联网通信接口。

最初是数据模拟信号输出简单过程量,后来仪表接口是RS232接口,这种接口可以实现点对点的通信方式,但这种方式不能实现联网功能。

随后出现的RS485解决了这个问题。

下面我们就简单介绍一下RS485。

RS485接口RS485 采用差分信号负逻辑,+2V~+6V表示“0”,- 6V~- 2V表示“1”。

RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。

在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。

很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。

而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,这有二个原因:(1)共模干扰问题:RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。

但人们往往忽视了收发器有一定的共模电压范围, RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。

当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。

(2)EMI问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。

由于PC机默认的只带有RS232接口,有两种方法可以得到PC上位机的RS485电路:(1)通过RS232/RS485转换电路将PC机串口RS232信号转换成RS485信号,对于情况比较复杂的工业环境最好是选用防浪涌带隔离珊的产品。

RS485 通信

RS485 通信

RS485 通信1在电能表中的应用由于历史的原因,我国在制定DL/T 614-1997《电子式多功能电能表》及DL/T 645-1997《电子式多功能电能表通讯协议》时将RS-485标准串行通讯接口作为电表的通讯接口,并详细地定义了物理层、链路层、应用层,结束了以前电表厂家规约各不兼容、互相不能抄的尴尬局面。

各电表厂家遵循相同的协议标准对电表进行读写操作,简化了电表抄表应用及维护的工作量。

使得国内的智能电表基本上可以做到互联互通。

但是目前国内的485抄表还存在一些问题,主要是通信成功率低、不能做到即连即通、易损坏等。

2物理层、链路层及数据传输2.1物理层A)共模输入电压:-7V~+12V。

B)差模输入电压:大于0.2V。

C)三态方式输出。

D)半双工通信方式。

E)驱动能力不小于32个同类接口。

F)总线是无源的,由费率装置或数据终端提供电源。

G)逻辑“1”以A、B两线间的电压差为+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。

2.2链路层及数据传输通讯链路的建立与解除由主站发出的信息帧来控制,帧的组成如表:域起始符地址域起始符控制码长度数据域校验码结束码字节代码68H A0 A1 A2 A3 A4 A5 A6 68H C L DA TA CS 16H由上表可知,帧由起始符、地址域、控制码、数据长度、数据域、校验码及结束符等7个域组成,每部分由若干字节组成。

DL/T 645-1997规定,在发送帧信息之前,先发送1~4个字节FEH,其目的是预先拉高控制总线,以唤醒接收方,保障帧信息的顺利接收。

DL/T 645-1997规定了主—从结构的半双工通讯方式。

每次通讯都是由主站向从站发出请求命令帧开始,从站根据要求作出响应。

收到命令帧后的响应延时称作帧间延时Td:20ms≤Td≤500ms。

字节之间停顿时间称作字节间延时Tb:Tb≤500ms。

如图1所示:3RS485在电表通讯中的常见问题及解决方案3.1收发时序不匹配现象1:485通讯不成功,用逻辑分析仪查看,发送的码字正确,电能表返回码字也符合规约。

关于RS485的详细说明

关于RS485的详细说明

串行口RS485通讯协议1.1通讯概述本公司系列变频器向用户提供工业控制中通用的RS485通讯接口。

通讯协议采用MODBUS标准通讯协议,该变频器可以作为从机与具有相同通讯接口并采用相同通讯协议的上位机(如PLC控制器、PC机)通讯,实现对变频器的集中监控,另外用户也可以使用一台变频器作为主机,通过RS485接口连接数台本公司的变频器作为从机。

以实现变频器的多机联动。

通过该通讯口也可以接远控键盘。

实现用户对变频器的远程操作。

本变频器的MODBUS通讯协议支持两种传送方式:RTU方式和ASCII方式,用户可以根据情况选择其中的一种方式通讯。

下文是该变频器通讯协议的详细说明。

1.2通讯协议说明1.2.1通讯组网方式(1) 变频器作为从机组网方式:图9-1 从机组网方式示意图(2) 多机联动组网方式:单主机单从机单主机多从机图9-2 多机联动组网示意图1.2.2通信协议方式该变频器在RS485网络中既可以作为主机使用,也可以作为从机使用,作为主机使用时,可以控制其它本公司变频器,实现多级联动,作为从机时,PC 机或PLC可以作为主机控制变频器工作。

具体通讯方式如下:(1)变频器为从机,主从式点对点通信。

主机使用广播地址发送命令时,从机不应答。

(2)变频器作为主机,使用广播地址发送命令到从机,从机不应答。

(3)用户可以通过用键盘或串行通信方式设置变频器的本机地址、波特率、数据格式。

(4) 从机在最近一次对主机轮询的应答帧中上报当前故障信息。

1.2.3通讯接口方式通讯为RS485接口,异步串行,半双工传输。

默认通讯协议方式采用ASCII 方式。

默认数据格式为:1位起始位,7位数据位,2位停止位。

默认速率为9600bps,通讯参数设置参见P3.09~P3.12功能码。

1.3 ASCII通讯协议字符结构:10位字符框(For ASCII)(1-7-2格式,无校验)(1-7-1格式,奇校验)(1-7-1格式,偶校验)11位字符框(For RTU)(1-8-2格式,无校验)(1-8-1格式,奇校验)(1-8-1格式,偶校验)通讯资料结构:ASCII模式通讯地址:00H:所有变频器广播(broadcast)01H:对01地址变频器通讯。

rs-485

rs-485

RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。

RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。

使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。

RS-485使得连接本地网络以及多支路通信链路的配置成为可能。

RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,多采用的是两线制接线方式,这种接线方式为总线式拓扑结构,在同一总线上最多可以挂接32个节点。

在低速、短距离、无干扰的场合可以采用普通的双绞线,反之,在高速、长线传输时,则必须采用阻抗匹配(一般为120Ω)的RS485专用电缆(STP-120Ω(用于RS485 & CAN)一对18AWG),而在干扰恶劣的环境下还应采用铠装型双绞屏蔽电缆(ASTP-120Ω(用于RS485 & CAN)一对18AWG)。

在使用RS485接口时,对于特定的传输线路,从RS485接口到负载其数据信号传输所允RS-485通讯电缆结构图许的最大电缆长度与信号传输的波特率成反比,这个长度数据主要是受信号失真及噪声等因素所影响。

理论上,通信速率在100Kbps及以下时,RS485的最长传输距离可达1200米,但在实际应用中传输的距离也因芯片及电缆的传输特性而有所差异。

在传输过程中可以采用增加中继的方法对信号进行放大,最多可以加八个中继,也就是说理论上RS485的最大传输距离可以达到10.8公里。

如果确实需要长距离传输,可以采用光纤为传播介质,收发两端各加一个光电转换器,多模光纤的传输距离是5到10公里,而采用单模光纤可达50公里的传播距离。

我们把工业网络归结为三类:RS485网络、HART网络和现场总线网络。

HART网络:HART是由艾默生提出一个过度性总线标准,主要是在4~20毫安电流信号上面叠加数字信号,物理层采用BELL202频移键控技术,以实现部分智能仪表的功能,但此协议不是一个真正意义上开放的标准。

基于RS485的多主机对等通信系统的设计与实现

基于RS485的多主机对等通信系统的设计与实现

基于RS485的多主机对等通信系统的设计与实现一、引言现代社会对通信技术的要求越来越高,无线通信技术的应用广泛,然而在某些特定环境下,无线通信可能会受到干扰或信号弱等问题影响。

为了解决这个问题,基于RS485的多主机对等通信系统应运而生。

这种系统可以实现多主机之间的高效、可靠的通信,具有广泛的应用前景。

本文将介绍基于RS485的多主机对等通信系统的设计与实现。

二、RS485通信协议简介RS485是一种串行通信协议,可实现远距离高速数据传输。

它采用差分信号传输,在抗干扰能力和传输距离方面具有优势。

RS485通信协议定义了电气特性、物理层规范、通信帧格式等内容,为多主机对等通信系统的设计与实现提供了基础。

三、多主机对等通信系统的设计1. 系统框架设计多主机对等通信系统由主机、从机和总线组成。

主机之间可以进行双向通信,彼此平等地参与通信过程。

总线通过RS485通信协议连接主机和从机,实现数据的传输和交换。

2. 硬件设计(1)选择合适的RS485通信模块,该模块需要支持多主机对等通信的功能,并提供相应的接口。

(2)确定主机和从机的配置数量和位置,根据实际需求设计电路板布局。

(3)为每个主机和从机分配唯一的地址,以便在通信过程中进行识别和区分。

3. 软件设计(1)主机软件设计:主机负责发起通信请求、接收、解析和处理数据。

软件需要实现主机之间的通信协议,确保数据的正确传输和处理。

(2)从机软件设计:从机负责接收主机发送过来的数据,并做出相应的响应。

软件需要实现从机之间的通信协议,确保数据的正确接收和响应。

四、多主机对等通信系统的实现1. 硬件实现(1)按照设计要求,搭建多主机对等通信系统的硬件电路。

(2)连接RS485通信模块和其他硬件设备,搭建通信网络。

2. 软件实现(1)编写主机软件代码,实现主机之间的通信功能。

(2)编写从机软件代码,实现从机之间的通信功能。

(3)进行系统调试和测试,确保数据的正确传输和处理。

RS485串口通信原理

RS485串口通信原理

RS485串口通信原理一、RS485串口通信协议原理与特点1.电平传输特点:RS485通信使用差分信号进行传输,即通过正负两个信号线分别传输高低电平,抵消了电磁干扰对信号的影响,提高了传输的抗干扰性能。

2.单主多从:RS485通信存在一个主机和多个从机,主机负责向从机发送指令,而从机接收指令并返回数据。

3.半双工通信:RS485通信只能在一个方向上进行通信,即由主机发送指令到从机,或者从机发送数据到主机,无法同时进行双向通信。

4.多层级网络:RS485通信可以通过多级网络实现跨越更长的距离和更多设备的通信,每级网络之间通过中继器进行连接。

二、RS485通信方式1.同步方式:同步通信是指主机和从机之间在时钟方面进行同步的通信方式。

主机发送时钟信号给从机,从机根据时钟信号进行数据发送和接收,确保数据的完整性和准确性。

同步通信的优点是数据传输速度快,但对时钟同步要求较高。

2.异步方式:异步通信是指主机和从机之间不需要进行时钟同步的通信方式。

主机和从机之间通过控制字符进行数据传输和接收,可以自由控制数据传输速度和时钟精度。

异步通信的优点是适用性广,不需要严格的时钟同步,但数据传输速度较慢。

三、RS485通信协议1.物理层:RS485通信采用差分传输的物理层信号,正负两个信号线分别传输高低电平数据。

通信时需进行数据电平转换,将逻辑高电平和逻辑低电平转换为物理层的高电平和低电平信号。

2.数据链路层:RS485通信的数据链路层采用帧结构进行数据的传输和接收。

数据帧包括起始位、数据位、校验位和停止位。

起始位用于表示数据帧的开始,数据位用于存储实际传输的数据,校验位用于验证数据的准确性,停止位用于表示数据帧的结束。

四、RS485通信应用场景1.工业自动化控制:RS485通信可用于PLC控制系统、工业仪表传感器等设备之间的通信,可实现工业自动化控制和数据采集。

2.楼宇自控系统:RS485通信可用于楼宇自控系统中的空调、照明、电梯等设备之间的通信,实现楼宇设备的集中控制和管理。

基于RS485实现的PC机与单片机多机通信_刘志群

基于RS485实现的PC机与单片机多机通信_刘志群

基于RS485实现的PC机与单⽚机多机通信_刘志群第28卷第2期2007年4⽉闽江学院学报J OURNAL OF M I N JI ANG UN I VER SI TYV o.l28N o.2A pr.2007基于RS485实现的PC机与单⽚机多机通信刘志群(闽江学院物理学与电⼦信息⼯程系,福建福州 350108)摘要:介绍了基于R S485实现的PC机与单⽚机串⾏通信控制系统.通过R S485/R S232信号转换电路,PC机根据下位机的地址不间断采集下位机的数据,经过处理后,将控制信号传给下位机,从⽽实现PC机与单⽚机之间的多路远程数据采集和远程控制.关键词:RS485;单⽚机;串⾏通信;数据采集中图分类号:TP274⽂献标识码:A ⽂章编号:1009-7821(2007)02-0044-03 Co munication bet ween PC andM CS-51based on RS485LI U Zh-i qun(P hys ics and E lectronic Informati on Eng i neering D e p ar t m ent of M ingJ iang Universit y,Fuzhou,Fujian350108,Chi na) Abst ract:The contro l syste m based on RS485bet w een PC and si n g le-ch i p m icr oco mpu ter i s i n troduced. Through converti n g si g na l c ircu it o fRS485/RS232,PC gathers data fr o m M CS according to the address of si n g le-chip m i c roco m puter,and sends contro l si g na l to si n g le-chip m i c roco m puter a fter appropriate trea-t m en,t so as to ach i e ve m ultiple-access re m ote data acquisiti o n and re m ote contro.lK ey w ords:RS485;sing le-ch i p m icroco m puter;ser i a l co mm un ication;data acquisiti o n0 引⾔⽬前PC机与多台单⽚机构成的分布式⼯业控制系统、数据传输系统等在⼯业现场的应⽤越来越⼴泛.它既利⽤了单⽚机功耗低、价格便宜、功能强⼤、抗⼲扰能⼒好等优点构建适宜分布于⼯业现场、使⽤⽅便灵活的监控站或下位机,⼜结合PC机丰富的软硬件资源,提供管理功能强⼤、⼈机界⾯友好的操控平台.⽽随着近⼏年来变频技术的不断发展,多单⽚机应⽤系统⼜以由单⽚机实现的变频控制为突出代表.在这类控制系统中,稳定可靠、⽅便快捷的数据通信是实现系统功能的基础和保障.因此,根据系统的实际⼯作环境条件,选择恰当的接⼝形式和通信协议,设计合理通信软件和硬件控制电路就显得⼗分重要. RS485是⼯业界使⽤最为⼴泛的双向、平衡传输线标准接⼝,它以半双⼯⽅式通信,⽀持多点连接,允许创建多达32个节点的⽹络(某些驱动器模块可增加⾄128个),具有传输距离远(最⼤传输距离为1200m),传输速率快(1200m时为100kb it/s)等优点,⽤于多站互连时,便于组建成本低廉、可靠性⾼及分布范围较⼴的总线⽹络.⽂章结合聊城⾃来⽔公司利⽤PC机集中监控多台变频器实现供⽔的⼯程项⽬简要介绍RS485串⾏通信部分的设计与调试.1 硬件设计在⼯程项⽬中,系统由⼀台主控PC机和多台位置分布不同的下位机(其单⽚机应⽤控制系统是基于80C196MH z的变频器).本系统的下位机可以接⼊其他处理器的多单⽚机应⽤系统,例如性能优异,操作简收稿⽇期:2006-11-21作者简介:刘志群(1980-),男,⼭东潍坊⼈,闽江学院物理学与电⼦信息⼯程系助教.第2期刘志群:基于RS485实现的PC 机与单⽚机多机通信图1 通信系统结构框图F i g .1 T he confi gurati on of communicati on syste m 单的51系列单⽚机等.通信系统结构框图如图1所⽰.1.1 信号转换电路PC 机不提供RS485接⼝,只有USB 接⼝、并⼝和RS232串⼝,这⾥我们使⽤串⼝通信,但是由于RS232和RS485的电平也不匹配,所以必须借助⼀信号(或者电平)转换电路,实现上位机RS232到RS485的信号转换.这⾥采⽤光电耦合器件实现信号转换,芯⽚选择MAX485,其硬件实现可以采⽤如图2电路[1](289).1.2 单⽚机与RS485的连接电路各变频器由单⽚机89S51实现控制,单⽚机与MAX485总线的连接则⽐较简单,为了提⾼抗⼲扰能⼒,各监控站的单⽚机系统与MAX485之间通过光电隔离器件连接,通过单⽚机的P1.0引脚控制MAX485的⼯作状态.其硬件实现电路如图3所⽰[2](285).2 软件设计由于485总线是⼀种异步半双⼯的通信总线,在某⼀时刻,总线只可能呈现出⼀种状态,在PC 机与多单⽚机系统构成的多机通信系统中,⼀般采⽤主从式通信,主机处于主导和⽀配地位,定时发出监控命令后等待从机的应答.各从机处于侦听状态,不能主动往总线发送数据,必须等待主机的命令,在接收到地址帧后,⽴即判断是否在呼叫⾃⼰,如果不是则不予理睬.如果是则继续接收下⾯的数据.接收完⼀个主机监控命令后先进⾏校验,如果校验正确则解析接收的监控命令,并根据命令回送相应的应答帧.⽽且任何时刻只能有⼀个单⽚机处于发送状态,但主机发送时所有单⽚机必须都处于接收状态.2.1 通信协议主机发送命令帧格式按如下标准:地址命令命令索引数据校验和从机根据不同的命令和命令索引作相应的处理,并回送应答帧,从机应答帧按如下标准:帧头地址命令命令索引数据校验和帧尾主机接收到帧头表⽰该帧的开始,连续接收从机回送的数据,直到收到帧尾表⽰该帧的结束,准备接收下⼀帧.⼀次通信完成[3](235).波特率设置:9600bit/s ;传送帧格式:1位起始位、8位数据位、1位数据/地址标志位、1位停⽌位.主机发送并为从机接收的信息有两类:数据/地址标志位为1表⽰发送的是地址(即需45闽江学院学报第28卷要和主机通信的从机地址),数据/地址标志位为0表⽰发送的是数据.校验⽅式:和校验;传送⽅式:主机查询,从机中断.2.2 上位机软件设计在标准串⼝通信⽅⾯,VB 提供了具有强⼤功能的通信控件M SCo mm ,该控件可实现串⾏通信数据的发送和接收,对串⼝状态及串⼝通信的信息格式和协议进⾏设置.该控件屏蔽了通信过程中的底层操作,程序员只需设置好M SCo mm 控件的属性和事件就可以实现异步串⾏通信[4](54).程序设计中对M SCo mm 控件的常⽤属性设置如下:图4 上位机通信流程图F i g .4 T he flo w cha rt of PCM SCo mm 1.Settings ="9600,M,8,1"M SCo mm 1.EOFEnab le =T r ueM SCo mm 1.RThresho l d =1M SCo mm 1.OutBu ffer Count =0M SCo mm 1.InBuffer Count =0M SCo mm 1.Port O pen =T r ueM SCo mm 1.RTSEnable =Fa lsePC 发送完地址帧之后,数据帧之前重新设置串⼝如下:M SCo mm 1.Port O pen =Fa lseM SCo mm 1.Settings ="9600,S ,8,1"M SCo mm 1.Port O pen =T r ue发送:M SCo mm 1.Output ="xxx";命令,索引,数据,校验和.通过ti m er 定时器适当延时之后转为接收状态等待接收从机响应帧,利⽤Input 属性从接收缓冲区读取直⾄从机应答字符图5 下位机串⾏中断流程图F ig .5 The flo w cha rt of i n terruption串的结束标志帧尾:MS Co mm 1.RTSEnable =T r ue .上位机对多个从机的通信是通过ti m er 定时器的间隔属性I nterva l 实现的,ti m er .I nterva l=2000,在ti m er 事件中写⼊主机与各个从机通信的⼦程序,这样每间隔2s 激活⼀次ti m er 事件,主机和各个从机完成⼀次通信.流程图如图4所⽰.2.3 MCS-51系列单⽚机多机通信的实现M SC -51单⽚机串⾏⼝控制器SC ON 中的S M 2为多机通信控制位,主要应⽤于串⾏⼝⼯作⽅式2和⽅式3;若S M 2=0,接收到的第九位数据⽆论为0还是1,数据都装⼊SB UF ,并置R I=1,向CPU 发出中断请求;若SM 2=1,则只有接收数据的第九位为1接收到的字符才有效,并置R I=1,并向CPU 发出中断请求.多机通信过程可如下归结:1)所有从机初始化为S M 2=1,接收状态,以便接收主机发来的地址(地址帧第9位数据为1,则从机进⼊相应的中断服务程序,⽽数据帧第九位为0,从机不予理睬,从⽽保证接收到的第⼀个数据是从机地址).2)所有从机在S M 2=1,RB8=1,R I=0时接收主机发来的从机地址进⼊中断和本机地址⽐较以确认是否为被寻址从机.3)被寻址从机通过指令清除S M 2,以正常接收主机继续发来的数据,未被寻址的从机仍保持SM 2=1,并退出各⾃中断,等待下次通信主机发来的地址.这样就保证了多机通信中的⼀对⼀通信[5](185).4)被寻址从机在本次通信完成后重新使S M 2=1,并退出中断服务程序,等待下次通信.流程图如图5.(下转第121页)46121第2期钟惊雷:研究⽣⼼理健康状况调查因⽽,其⼼理健康状况在四个学科的研究⽣中是最好的.3.2.4 ⼊学前有⼯作经历的研究⽣⼼理健康⽔平显著低于⼊学前⽆⼯作经历的研究⽣,这或许是由于他们在⼯作以后重新回到校园,⽣活环境改变较⼤,很难再把全部的精⼒集中到学业上来,对学习和科研任务有时会有难以胜任的之感;同时,有些有⼯作经历的研究⽣已组成了⾃⼰的家庭,⾯对的⽣活压⼒要⽐没有⼯作经历的研究⽣⼤的多.4 结论本次调查结果表明,性别、年级、学科和⼯作经历都是影响研究⽣⼼理健康状况的重要因素.研究⽣的⼼理健康状况不容乐观,需要学校和社会给予⾼度的重视,可通过开设有关⼼理知识讲座、创⽴⼼理健康教育机构、建⽴研究⽣⼼理档案、开展多种形式的咨询与活动等途径对研究⽣⼼理健康进⾏发展性培养和⼲预.其中,男研究⽣、⼆三年级的研究⽣、⼈⽂学科的研究⽣和⼊学前有⼯作经历的研究⽣是关注和⼲预的重点.参考⽂献:[1]⽜雄鹰,张萌.⼭东省驻济⾼校硕⼠⽣⼼理卫⽣状况调查[J].中国⼼理卫⽣杂志,1997(5):296.[2]武晓峰,梁永明.研究⽣⼼理健康状况的调查与思考[J].学位与研究⽣教育,1995(3):47-49.[3]史清敏,王增起.研究⽣⼼理健康状况调查与分析[J].现代教育科学,2002(3):27-29.[4]⽑富强,李振涛.研究⽣⼼理健康状况与个性特征及⽣活事件分析[J].中国⼼理卫⽣杂志,2002(10):663-665.[5]⽑富强,⽑光民,李洁.研究⽣⼼理健康状况初步评价[J].健康⼼理学杂志,2000(1):36-38.[6]孟馥,樊⽂有.研究⽣⼼理卫⽣状况及相关因素研究[J].同济⼤学学报:医学版,2002(4):141-143.[7]夏⽂郁.医学研究⽣⼼理素质亟待提⾼[J].学位与研究⽣教育,2000(1):39-42.(责任编辑:唐诚焜)(上接第46页)初始化程序如下:MOV T MOD,#20HMOV TH1,#0FD HMOV TL1,#0FDH;波特率9600SETB TR1MOV PCON,#00HMOV SCON,#0F0H;⽅式3,S M2=1,允许接收CLR P1.7;控制端低电平,接收状态SETB ESSETB EASJ M P$3 结语本⽂所述⽅案已经成功应⽤于聊城⾃来⽔公司⼀台PC机监控多台变频器的多机分布式供⽔系统中,其硬件接⼝简单,性价⽐⾼,软件和通信协议有很好的通⽤性,可以应⽤于其他⼯程的多机通信控制系统中.参考⽂献:[1]刘光斌,刘东,姚志成.单⽚机系统实⽤抗⼲扰技术[M].北京:⼈民邮电出版社,2003.[2]求是科技.单⽚机典型模块设计实例导航[M].北京:⼈民邮电出版社,2004.[3]何⽴民.单⽚机与嵌⼊式系统应⽤[M].北京:北京航空航天⼤学出版社,2003.[4]范逸之,陈⽴元.V isual B asi c与RS-232串⾏通信控制[M].北京:清华⼤学出版社,2004.[5]李朝青.单⽚机原理及其接⼝技术[M].北京:北京航空航天⼤学出版社,2006.(责任编辑:唐诚焜)。

RS485主从式多机通讯协议

RS485主从式多机通讯协议

RS485主从式多机通讯协议1.RS485简介2.主从式多机通信协议RS485主从式多机通信协议允许一个主设备控制多个从设备,实现主设备与从设备之间的数据传输和通信协调。

主从式通信分为两个角色,即主机和从机。

主机是整个系统的控制中心,负责向从机发送指令和收集数据。

从机是被控制的设备,负责执行主机发送的指令并向主机发送数据。

3.数据传输格式4.通信流程-主机发送请求:主机向从机发送请求指令。

-从机应答:从机接收到请求指令后,执行相应操作,并向主机发送应答数据。

-主机接收应答:主机接收到从机的应答数据。

-主机发送下一个请求:主机根据需要继续发送下一个请求指令,重复上述步骤。

5.地址识别与从机选择在RS485主从式多机通信协议中,每个从机都有一个唯一的地址,主机通过地址来识别并选择要与之通信的从机。

通常采用软件设置的方式,主机在发送请求指令时会将目标从机的地址加入请求帧中,从机在接收到请求帧后,会根据地址判断是否为自己的请求。

6.错误处理机制RS485主从式多机通信协议中,为了保证通信的可靠性,需要引入一些错误处理机制。

例如,可以使用CRC校验来检测数据传输过程中的错误,并进行错误重传。

此外,还可以使用超时机制来处理通信过程中出现的超时情况。

7.适用范围总结:RS485主从式多机通信协议是一种常用于工业控制领域的通信标准。

它采用主从式通信模式,支持一个主设备控制多个从设备。

数据传输以帧为单位,采用差分技术提高信号传输的可靠性和抗干扰能力。

通信流程包括主机发送请求、从机应答、主机接收应答和主机发送下一个请求。

地址识别与错误处理机制是确保通信可靠性的重要部分。

RS485主从式多机通信协议适用于工业自动化等环境中的数据传输和控制应用。

rs485通信原理

rs485通信原理

rs485通信原理
RS485通信是一种串行通信协议,用于在多个设备之间进行数据传输。

它是一种平衡差分信号传输方式,可以实现高速、远距离通信。

RS485通信采用差分信号传输,即使用两条信号线进行数据传输,分别为正向信号线(A线)和反向信号线(B线)。

传输时,发送器将数据以差分的方式发送出去,接收器则通过比较两条信号线上的电平差异来还原出数据。

由于使用差分信号,RS485通信具有较强的抗干扰能力,可以在较差的电磁环境下稳定工作。

RS485通信采用半双工方式,即同一时间内,数据传输只能是单向的,要么是从发送器向接收器传输数据,要么是从接收器向发送器传输数据。

为了实现多个设备之间的通信,常用的方式是在总线上连接多个RS485设备,通过总线进行数据传输。

在总线上,各个设备通过设置不同的地址来进行区分,并且在进行数据传输时需要先请求总线控制权。

这样可以确保每个设备在适当的时机发送数据,避免冲突。

RS485通信速度可以根据具体应用进行设置,一般可以达到几十kbps到几Mbps的速度范围。

此外,RS485通信还可以支持多主机结构,即多个设备可以同时成为总线的主机,实现分布式控制。

总之,RS485通信是一种可靠、抗干扰能力强的串行通信协议,
适用于远距离、高速度的数据传输。

它的差分传输方式、半双工通信以及多主机支持等特点使其在工控领域得到广泛应用。

基于RS485的多主机对等通信系统的设计与实现

基于RS485的多主机对等通信系统的设计与实现

软件优化:提高 通信效率,降低 资源消耗
主从机连接与通信流程实现
硬件连接:RS485 总线连接多个主机, 实现数据传输
通信协议:制定并 实现通信协议,保 证数据传输的准确 性和可靠性
数据传输:实现数 据的发送和接收, 保证数据的完整性 和实时性
错误处理:实现错 误检测和恢复机制 ,保证通信的可靠 性和稳定性
A
B
C、以太网等
降低功耗:优化硬件设 计,降低系统功耗,提
高能源利用率
增强安全性:采用加密 技术,提高通信数据的
安全性
提高兼容性:支持多种 硬件平台和操作系统,
提高系统的通用性
总结与展望
系统特点与优势总结
基于RS485的多主机对等通信系统,实 现了多主机之间的实时通信和数据共享。
03
测试方案:功能测试、性能测试、兼容性 测试等
02
软件环境:操作系统、测试软件、驱动程 序等
04
测试结果分析:测试数据、测试报告、问 题定位等
测试过程及结果分析
测试环境搭建:搭建 测试环境,包括硬件
和软件
测试方法:选择合适 的测试方法,如黑盒 测试、白盒测试等
测试数据准备:准备 测试数据,包括正常

增强系统稳定 性:优化系统 设计,提高系 统抗干扰能力
降低功耗:采 用低功耗器件, 降低系统能耗
扩展应用领域: 将RS485技术 应用于更多领 域,如工业自 动化、智能家
居等
THANK YOU
0 终端电阻:在总线两端添加终端 4 电阻,防止信号反射和干扰
0 硬件测试:通过测试验证硬件设 6 计的正确性和可靠性
通信软件设计
01
02
03
04

RS485通讯原理及排错处理

RS485通讯原理及排错处理

提高RS485通信可靠性的设计方法发布时间:2009-5-11 14:00 发布者:李宽阅读次数:556RS-485接口芯片能担当起一种电平转化的角色,把TTL信号、COMS信号等转化为能在485总线上传输的差分信号,把接收到的485差分信号转化为MCU能够识别的TTL或COMS电平,在工业控制、仪器、仪表、多媒体网络、机电一体化产品等诸多领域得到了广泛应用。

但在RS485通信中,常常会存在通信距离不远、通信质量差等问题。

为提高RS485的通信质量,除了采用终端匹配的总线型结构外,在系统设计中通常要考虑以下几个问题。

1.故障保护根据RS-485的标准规定,接收器的接收灵敏度为±200mV,这意味着当接收端的差分电压大于等于+200mV时,接收器输出为高电平,小于等于 -200mV时输出为低电平,介于±200mV 之间时,接收器输出为不确定状态。

在总线空闲(即传输线上所有节点都为接收状态)以及传输线开路或短路故障时,若不采取特殊措施,接收器可能输出高电平或者低电平。

一旦某个节点的接收器产生低电平,就会使串行接收器(UART)找不到起始位,从而引起通信异常。

为解决该问题,很多RS485接口芯片引入了故障保护。

例如,上海英联电子的UM3085/UM3088输入灵敏度为-50mV/-200mV,即差分接收器输入电压UA-B≥-50mV时,接收器输出逻辑高电平,如果UA-B≤-200mV,则输出逻辑低电平。

当接收器输入端总线短路或总线上所有发送器被禁止时,接收器差分输入端为0V,从而确保总线空闲、短路时接收器输出高电平。

2.防雷电冲击RS- 485接口芯片在使用、焊接或设备的运输途中都有可能受到静电冲击而损坏。

在传输线架设于户外的使用场合,接口芯片乃至整个系统还有可能遭受雷电袭击。

选用抗静电或抗雷击的芯片可有效避免此类损失。

UM3085/UM3088芯片内部集成了ESD保护电路,人体模型ESD 保护和机器模型ESD保护分别达到 15kV和2kV。

RS-485的多机通信方案

RS-485的多机通信方案

76 Microcontrollers &Embedded Systems 2012年第10期www.mesnet.com.cn RS 485的多机通信方案探究魏金文,马维华,吴侨(南京航空航天大学计算机科学与技术学院,南京210016)引 言在嵌入式系统中,多个孤立节点之间的通信越来越重要,尤其是物联网时代的到来,多节点间通信已经成为必不可少的功能。

由此出现了许多通信手段,如RS 232、RS 485、CAN总线、ZigBee等,综合考虑性能和成本,RS485通信无疑是性价比最高的通信方式。

因此探究高效、实用的多机通信方案具有重大的意义。

1 系统框图RS 485多机通信结构图如图1所示。

若干个RS485节点通过总线连接,由网关节点轮询访问索要数据,每个网关节点可以动态地配置IP地址,以便上位机可以通过以太网控制网关节点,从而获得每个RS 485终端节点的数据。

图1中C节点为控制节点,具有RS 485通信功能,T节点为网关节点,除了RS 485功能外,还具有以太网功能,其作用就是将C节点的数据通过以太网功能传送给上位机。

图1 RS 485多机通信结构图2 硬件设计本文采用新唐科技公司的Cortex M054探究RS485多机通信协议。

Cortex M054有两个UART,均可以配置成RS 485模式,此时Cortex M054通过RTSX引脚自动控制RS 485通信方向。

RS 485通过差分传输,A和B两根信号线铰链在一起来抵消各自的干扰。

当A、B信号的电压差大于200mV时,视为逻辑1;当B、A信号的电压差大于200mV时,视为逻辑0。

RS 485硬件原理图如图2所示。

整套RS 485电路独立供电,通过光电耦合器TLP781B+,与系统其他部件分开,以此来隔离干扰。

和CAN总线相同,在机群的两端(第一个节点和最后一个节点),必须加上匹配电阻,吸收反射信号,大小为75Ω左右。

中间节点则不需要如此,因此留出了R1的位置,当节点位于机群两端的时候,则焊接上R1,这种方式大大地增强了电路的灵活性。

RS485 通讯协议

RS485 通讯协议

RS485 通讯协议一、概述RS485通讯协议是一种串行通讯协议,适用于多点通讯和远距离数据传输,广泛应用于工业自动化、电力电气等领域中。

RS485通讯协议可实现多站式、点对点、半双工或全双工的串行通讯方式,能够满足复杂的数据通讯需求,是集成度高、使用方便且性价比高的通讯协议。

二、通讯协议规范1、物理层RS485通讯协议采用差分传输方式,使用半双工或全双工串行通信,数据线两端各自连接一个终端电阻,并使用平衡的两线制。

若使用半双工通信,则需要配置一个控制线,用于控制收发转换器的方向。

2、数据链路层数据链路层由两种基本的帧构成:数据帧和控制帧。

数据帧用于传输有效数据,控制帧用于控制通讯双方的交互方式,包括握手、结束和异常处理等。

数据帧包含以下字段:起始位:标识数据帧的开始位置,是一个低电平信号;地址位:用于标识通讯的设备或站点地址;数据位:用于存放实际传输的数据;校验位:用于检验数据的正确性,实现误码检测和纠错;停止位:标识数据帧的结束位置,一般为一个或多个高电平信号。

控制帧包含以下字段:起始位:标识控制帧的开始位置,是一个低电平信号;地址位:用于标识通讯的设备或站点地址;控制位:用于实现握手、结束和异常处理;校验位:用于检验控制帧的正确性,实现误码检测和纠错;停止位:标识控制帧的结束位置,一般为一个或多个高电平信号。

3、传输速率RS485通讯协议支持多种传输速率,最高速率可达到100 Mbps。

通常,用户可根据实际需求选择合适的传输速率。

4、错误处理RS485通讯协议在传输过程中存在一些错误处理机制,例如CRC验证、超时监控等。

每个站点主动监控自己接收到的信息,若存在异常则通过控制帧进行异常处理。

5、多站式通信RS485通讯协议支持多站式通信,通常需要在数据帧中加入站点地址信息,以实现站点的识别和数据的路由选择。

若开启了多站式通信模式,则每个站点需设定自己的地址信息,以保证通讯正常。

三、通讯应用范围RS485通讯协议主要应用于需要远距离、多点、高速数据传输以及复杂控制的场合,包括以下领域:1、工业自动化RS485通讯协议广泛应用于工业自动化领域,例如智能制造、流水线控制、机器人操作等。

RS485通讯协议简介

RS485通讯协议简介

9.1通讯概述本公司系列变频器向用户提供工业控制中通用的RS485通讯接口。

通讯协议采用MODBUS标准通讯协议,该变频器可以作为从机与具有相同通讯接口并采用相同通讯协议的上位机(如PLC控制器、PC机)通讯,实现对变频器的集中监控,另外用户也可以使用一台变频器作为主机,通过RS485接口连接数台本公司的变频器作为从机。

以实现变频器的多机联动。

通过该通讯口也可以接远控键盘。

实现用户对变频器的远程操作。

本变频器的MODBUS通讯协议支持两种传送方式:RTU方式和ASCII方式,用户可以根据情况选择其中的一种方式通讯。

下文是该变频器通讯协议的详细说明。

9.2通讯协议说明9.2.1通讯组网方式(1) 变频器作为从机组网方式:图9-1 从机组网方式示意图(2) 多机联动组网方式:单主机单从机单主机多从机图9-2 多机联动组网示意图9.2.2通信协议方式该变频器在RS485网络中既可以作为主机使用,也可以作为从机使用,作为主机使用时,可以控制其它本公司变频器,实现多级联动,作为从机时,PC 机或PLC可以作为主机控制变频器工作。

具体通讯方式如下:(1)变频器为从机,主从式点对点通信。

主机使用广播地址发送命令时,从机不应答。

(2)变频器作为主机,使用广播地址发送命令到从机,从机不应答。

(3)用户可以通过用键盘或串行通信方式设置变频器的本机地址、波特率、数据格式。

(4) 从机在最近一次对主机轮询的应答帧中上报当前故障信息。

9.2.3通讯接口方式通讯为RS485接口,异步串行,半双工传输。

默认通讯协议方式采用ASCII 方式。

默认数据格式为:1位起始位,7位数据位,2位停止位。

默认速率为9600bps,通讯参数设置参见P3.09~P3.12功能码。

9.3 ASCII通讯协议字符结构:10位字符框(For ASCII)(1-7-2格式,无校验)(1-7-1格式,奇校验)(1-7-1格式,偶校验)11位字符框(For RTU)(1-8-2格式,无校验)(1-8-1格式,奇校验)(1-8-1格式,偶校验)通讯资料结构:ASCII模式通讯地址:00H:所有变频器广播(broadcast)01H:对01地址变频器通讯。

[赏析]rs485多机通信的组网方法

[赏析]rs485多机通信的组网方法

RS485多机通讯的组网方式本文先容了以波仕转换器为代表的几种RS-485多机通讯的组网方式:总线式、菊花链式、星形、单环冗余型。

用户可以根据现场的串口设备的位置分布或者可靠性要求来选择。

通讯软件都是一样的,与普通的RS-485总线多机通讯一样。

波仕RS-232/RS-485/RS-422转换器都可将RS-232通讯间隔延长至1.2Km以上(9600bps时)。

都可以用于PC 机之间、PC机与单片机之间构成远程多机通讯网络。

波仕的485TC和485TA转换器外形都为DB-9/DB-9转接盒大小,其中DB-9(孔座)一端直接插在9芯RS-232插座(针座)上。

PC机RS-232串行口的DB-9芯连接器引脚分配如下:2-RXD(收),3-TXD(发),5–GND(地)。

产品均无需任何初始化设置!只用到RXD(收)、TXD(发)、GND(地)信号,加上独占的内部零延时自动收发转换技术,确保适合所有软件!RS-485为半双工通讯方式。

RS-422为全双工方式。

485TC为全双工半双工通用型(图1)。

485TA为半双工型(图2)。

均内置600W抗雷击浪涌保护器。

图1 波仕485TC图2 波仕485TA一、典型的RS-485总线式通讯方式最典型的RS-485多机通讯就是总线式的通讯(图3):所有RS-485节点全部挂在一对RS-485总线上。

实际上还有一根GND地线。

留意RS-485总线不能够开叉、但是可以转弯。

图3 典型的RS-485半双工多机通讯RS-422是全双工通讯方式,也就是说发送(Y、Z)与接收(A、B)是分开的,所以能够同时收发。

RS-422有时也称为“全双工的RS-485”,或者“RS-485的全双工方式”。

总线式的全双工多机通讯图如图4。

留意不是所有的RS-422都支持全双工多机通讯的。

波仕的485C系列转换器是少有的能够支持全双工多机通讯的、而且全双工半双工通用的转换器。

图4 典型的全双工多机通讯图二、菊花链式的多机通讯方式这种菊花链式的多机通讯方式(图5)比较少见,但是却有其独特的上风、也有其缺点。

485双机通信案例原理与测试说明

485双机通信案例原理与测试说明

“485双机通信”功能实现说明1程序设计目标及程序运行效果说明程序设计目标:通过本例程理解RS485通信方式,实现双机通信。

程序运行效果:将两块带有485模块的51单片机通过485外接引脚A、B连接起来,单片机上电烧写程序后485模块的D/R引脚所对应的二极管均点亮,然后通过按键KEY3、KEY2控制数码管上的数值进行加减处理,两块单片机起始都默认为接收状态,最后按下KEY1发送键,将数据传送给另一块单片机,而此时接收方数码管上的数值发生相应的改变,与发送方数码管上的数值一致。

2程序相关电路及工作原理说明2.1 RS485通信原理RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。

针对RS232的不足,于是不断出现了新的接口标准,RS485就是其中的一种。

RS485接口的最大传输距离标准值为4000英尺,实际上可达 3000米,另外RS232接口在总线上只允许连接1个收发器,即单站能力。

而RS485接口在总线上是允许连接多达128个收发器。

即具有多站能力,这样用户可以利用单一的RS485接口方便地建立起设备网络。

RS485属于半双工通信,数据可以在一个信号载体的两个方向上传输,但是不能同时进行传输。

电平转换采用差分电路方式,A、B两线的电压差大于0.2认为是逻辑“1”,小于-0.2认为是逻辑“0”,方便与TTL电路连接。

使用RS485进行通信与RS232通信的逻辑是一致的,但RS485抗干扰性更强,传输距离更远。

RS485广泛运用在工业自动化控制、视频监控、门禁对讲以及楼宇报警等各个领域。

图1 485模块电路原理图MAX485芯片的功能是将TTL电平转换为RS485电平,引脚功能如下:(1)485 D/R输出、接收信号控制引脚:当该引脚为低电平时,485为接收态,MAX485通过485_RXD把来自总线的信号输出给单片机;当该引脚为高电平时,485为发送态,来自485_TXD的输出信号通过A、B引脚加载到总线上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

于RS-485的多机通信程序(主机端)//-----------------------函数声明,变量定义---------------------#include ;sbit RE_DE=P1^0;#define COUNT 10 // 定义接收缓冲区大小#define Slaver_NUM 10unsigned char bdata flag; //在可位寻址去定义一个标志变量sbit time_over_flag =flag^0; //接收超时标志unsigned char buffer[COUNT]; //定义缓冲区unsigned char point; //定义缓冲区位置指示unsigned char Slave_AD[Slaver_NUM]; //定义有效地址存放区unsigned char ADD_num; //有效地址个数unsigned char idata count_10ms; //用于表示有多少次10ms中断unsigned char idata send_data[7]={0x31,0x32,0x33,0x34,0x35,0x36,0x37}; //与定义发送数据,共7位void UART_init(); //串口初始化函数void COM_send(void); //串口接收函数unsigned char CLU_checkdata(void); //计算校验位函数//---------------------------------------------------------------// 函数名称: UART_init()串口初始化函数// 函数功能:在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s// 串口接收中断允许,发送中断禁止,设定定时器中断允许//---------------------------------------------------------------void UART_init(){//初始化串行设置SCON =0x58; //选择串口工作方式为1,打开接收允许,TB8=1TMOD =0x21; //定时器1工作在方式2,定时器0工作在方式1TR1 =1; //启动定时器T1ES=1; //允许串行口中断PS=1; //设计串行口中断优先级//初始化定时器1TH1 =0xfd; //实现波特率9600(系统时钟11.0592MHZ)ET1 =0; //定时器1中断禁止}//---------------------------------------------------------------// 函数名称: timer0_init()初始化定时器0// 函数功能:设置timer0工作模式//---------------------------------------------------------------void timer0_init(){time_over_flag=0;count_10ms=0;ADD_num=0;TL0=0x0F0; //T0用于产生10ms的中断TH0=0x0D8; //50次T0中断产生1次超时溢出ET0=1; //允许定时器0中断}//---------------------------------------------------------------// 函数名称: system_init()系统初始化// 函数功能:调用串口、定时器初始化函数,完成系统初始化//---------------------------------------------------------------void system_init(void){//系统总设置UART_init();timer0_init();EA =1; //单片机中断允许}//---------------------------------------------------------------// 函数名称: com_interrup()串口接收中断处理函数// 函数功能:接收包括起始位&quot;S&quot;在内的十位数据到数据缓冲区//---------------------------------------------------------------com_interrupt(void) interrupt 4 using 3{unsigned char RECEIVR_buffer;if(RI) //处理接收中断{RI=0; //清除中断标志位RECEIVR_buffer=SBUF; //接收串口数据if(point==0) //如果还没有接收到起始位{if(RECEIVR_buffer==0xFE) //判断是否起始标志位{buffer[point++]=RECEIVR_buffer;//把接收到的数据放入接收缓存区}elsepoint=0; //不是,继续等待起始位}else if(point>;0&&point<10) //判断是否接收够十位数据buffer[point++]=RECEIVR_buffer; //不够,把接收到的数据放入接收缓存区else if(point==10){if(RECEIVR_buffer==0xEF) //判断结束标志位是否正确{buffer[point]=RECEIVR_buffer; //把接收到的数据放入接收缓存区Slave_AD[ADD_num++]=buffer[2]; //把接收到的地址放到地址存储器//表示该地址有有效设备}elsepoint=0; //不是,继续等待起始位}else point=0; //缓冲区已满,清除缓存区内数据重新接收}if(TI) //串口发送中断{TI=0; //清除发送中断}}//---------------------------------------------------------------// 函数名称: timer0_interrup()// 函数功能:定时器T0中断服务程序// 函数说明:T0枚10ms中断一次,连续中断50次置time_over_flag=1;//-----------------------------------------------timer0_interrupt(void) interrupt 1 using 2{count_10ms++;if(count_10ms==50){ET0=0; //关闭定时器T0中断TR0=0; //停止定时器T0time_over_flag=1;//设置接收超时标志count_10ms=0x00; //10ms计数器复位}else{TL0=0x0F0; //重装定时器初始值TH0=0x0D8;}}//---------------------------------------------------------------// 函数名称: COM_send()串口发送函数// 函数功能:把数据缓冲区的十位数据发送出去//-----------------------------------------------void COM_send(void){RE_DE=1; //设置MAX483进入发送状态for(point=0;point<=10,TI=1;point++) //连续发送十位数据//把缓存区的数据都发送到串口{SBUF=buffer[point];TI=0;}RE_DE=0; //设置MAX483进入接收状态}//---------------------------------------------------------------// 函数名称: write_buffer()// 函数功能:写发送缓冲区十位数据//---------------------------------------------------------------void write_buffer(unsigned char slaver_add){unsigned char i;TB8=1; //打开多机通信方式buffer[0]=0xFE;buffer[1]=slaver_add;for(i=2;i<9;i++) //连续发送十位数据//把缓存区的数据都发送到串口{buffer[i]=send_data[i-2];}buffer[9]=0xEF;}//---------------------------------------------------------------// 函数名称:主函数// 函数功能:调度个子函数,完成通信过程//---------------------------------------------------------------void main(void){unsigned char i=0;system_init(); //系统初始化do{ //查旬0到10好地址有没有对应设备write_buffer(i++); //写查询第i号设备的发送信息COM_send(); //调用发送函数,完成发送timer0_init(); //完成一次查询,重新初始定时器0,准备下一次查询}while(time_over_flag&&i<10);}。

相关文档
最新文档