当前位置:文档之家› 单片机RS485通信接口、控制线、原理图及程序教学实例

单片机RS485通信接口、控制线、原理图及程序教学实例

单片机RS485通信接口、控制线、原理图及程序教学实例

单片机RS485通信接口、控制线、原理图及程序教学实例

[前言]RS232 标准是诞生于RS485 之前的,但是RS232 有几处不足的地方:接口的信号电平值较高,达到十几V,使用不当容易损坏接口芯片,电平标准也与TTL 电平不兼容。传输速率有局限,不可以过高,一般到一两百千比特每秒(Kb/s)就到极限了。接口使用信号线和GND 与其它设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。传输距离有限,最多只能通信几十米。通信的时候只能两点之间进行通信,不能够实现多机联网通信。针对RS232 接口的不足,就不断出现了一些新的接口标准,RS485 就是其中之一。RS232 标准是诞生于RS485 之前的,但是RS232 有几处不足的地方:

接口的信号电平值较高,达到十几V,使用不当容易损坏接口芯片,电平标准也与TTL 电平不兼容。

传输速率有局限,不可以过高,一般到一两百千比特每秒(Kb/s)就到极限了。

接口使用信号线和GND 与其它设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。

传输距离有限,最多只能通信几十米。

通信的时候只能两点之间进行通信,不能够实现多机联网通信。

针对RS232 接口的不足,就不断出现了一些新的接口标准,RS485 就是其中之一,它具备以下的特点:

采用差分信号。我们在讲A/D 的时候,讲过差分信号输入的概念,同时也介绍了差分输入的好处,最大的优势是可以抑制共模干扰。尤其当工业现场环境比较复杂,干扰比较多时,采用差分方式可以有效的提高通信可靠性。RS485 采用两根通信线,通常用A 和B 或者D+和D-来表示。逻辑1以两线之间的电压差为+(0.2~6)V 表示,逻辑0以两线间的电压差为-(0.2~6)V 来表示,是一种典型的差分通信。

RS485 通信速率快,最大传输速度可以达到10Mb/s 以上。

RS485 内部的物理结构,采用的是平衡驱动器和差分接收器的组合,抗干扰能力也大大增

51单片机串口通信,232通信,485通信,程序

51单片机串口通信,232通信,485通信,程序代码1:232通信 #include #define uchar unsigned char #define uint unsigned int uchar flag,a,i; uchar code table[]="i get"; void init() { TMOD=0X20; TH1=0XFD; TH0=0XFD; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init();

while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 {

RI=0; a=SBUF; flag=1; } 代码2:485通信 #include #include"1602.h" #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]="i get "; void init() { TMOD=0X20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1;

} void main() { init_1602(); init(); while(1) { if(flag==1) { display(0,a); } } } void ser() interrupt 4 { RI=0; a=SBUF; flag=1; } Love is not a maybe thing. You know when you love someone.

(完整版)51单片机实现双机通信(自己整理的)

1号机程序 #in clude #defi ne uint un sig ned int #defi ne uchar un sig ned char sbit p10=P1 A 0; uchar a,b,kk; //uchar code d_c[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void delay_ms(uchar y) { uchar i; while(y__) for(i=0;i<120;i++) 5 } void put(uchar x) // 发送函数 { SBUF=x; //SBUF:串行口数据缓冲器 while (TI==0); 〃等待发送结束 TI=0; } P £j £fA>l3 旳 4阳 1370 丘阳 H 鮎口 PDLWAJil- PDSA>f POfiAME PQ TiJT FZ^KS 畑 阳pz- A A-m FZW11 PZ.AtZ FZj9jAl4 PZ.TW? P3£VR : iD paimcc P3.sii nrn pjjfflrn F3.WTI] M*Tl pgtjgQIH F3.7/IF 1E 11 左边1号机,右边2号机, ,功能实现 帕叶DO ■ 口 IJApi FDJ H [I Z — 观旧 IP 口 .hQKD* *QAADf H ^ 弓 H.Lta RQfMM FZJWS pz. iwe F2JKA-IDI P2JTA11I F2.HW1Z P2JSM13 F2W.14 F2JM1S F3Ji nHX& gj.im:& riaiWTO rjjfWTT F3.1/W f3AT1 P3JillW F3JMF ■T2 1E

51单片机实现的485通讯程序

51单片机实现的485通讯程序 #ifndef __485_C__ #define __485_C__ #include #include #define unsigned char uchar #define unsigned int uint /* 通信命令*/ #define __ACTIVE_ 0x01 // 主机询问从机是否存在 #define __GETDATA_ 0x02 // 主机发送读设备请求 #define __OK_ 0x03 // 从机应答 #define __STATUS_ 0x04 // 从机发送设备状态信息 #define __MAXSIZE 0x08 // 缓冲区长度 #define __ERRLEN 12 // 任何通信帧长度超过12则表示出错uchar dbuf[__MAXSIZE]; // 该缓冲区用于保存设备状态信息uchar dev; // 该字节用于保存本机设备号 sbit M_DE = P1^0; // 驱动器使能,1有效 sbit M_RE = P1^1; // 接收器使能,0有效

void get_status(); // 调用该函数获得设备状态信息,函数代码未给出 void send_data(uchar type, uchar len, uchar *buf); // 发送数据帧 bit recv_cmd(uchar *type); // 接收主机命令,主机请求仅包含命令信息 void send_byte(uchar da); // 该函数发送一帧数据中的一个字节,由send_data()函数调用void main() { uchar type; uchar len; /* 系统初始化*/ P1 = 0xff; // 读取本机设备号 dev = (P1>>2); TMOD = 0x20; // 定时器T1使用工作方式2 TH1 = 250; // 设置初值 TL1 = 250; TR1 = 1; // 开始计时 PCON = 0x80; // SMOD = 1 SCON = 0x50; // 工作方式1,波特率9600bps,允许接收 ES = 0; // 关闭串口中断 IT0 = 0; // 外部中断0使用电平触发模式 EX0 = 1; // 开启外部中断0

什么是RS485通信接口

什么是RS485通信接口 通信概述 通信设备从早期的邮件,电报,电话,传真,传呼机,手机,电脑,一路发展下来,而且随着科技的发展,世界必将由一个网络组成,所以,在未来开发的设备中,也必然要求大部分的设备都带有通信的功能。 设备与设备之间互相通信,就要有一座桥梁把二者连接起来,那就是传输通路与通信协议。传输通路由传输介质与传输接口组成,传输介质可分为有线和无线传输介质两大类。 有线传输介质在数据传输中只作为传输介质,而非信号载体。计算机网络中流行使用的有线传输介质为:铜线和玻璃纤维。 铜线具有便宜,安装容易的特点,在现在工业应用中普遍应用,在应用中主要有两种基本的铜线类型:双绞线和同轴电缆。双绞线可减小流过电流所辐射的能量,也可防止来自其他通信线路上信号的干扰,对于一些要求比较高的项目上,还需要给双绞线加上屏蔽层;同轴电缆由一对同轴导线组成。同轴电缆频带宽,损耗小,具有比双绞线更强的抗干扰能力和更好的传输性能。按阻抗值不同,同轴电缆可分为基带和宽带两种,同轴电缆是目前局域网与有线电视网中普遍采用的比较理想的传输介质。 所谓玻璃纤维介质,就是指现在所流行的光纤传输,他的两边有一个激光发生器与一个激光接收器,组成一整套通信线路,由于光纤传输距离远,因此现很多在工程都是采用“光端机+光纤”的模式。 结合我在工程中经常应用的通信模式,与“南方的老树51CPLD开发板”上具有的RS232通信、RS485通信两种,详细讲解下这两种通信方式的应用。 什么是RS232接口 首先介绍下什么是RS232接口,什么是RS485接口。

RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。DB25的串口一般只用到的管脚只有2(RXD)、3(TXD)、7(GND)这三个,随着设备的不断改进,现在DB25针很少看到了,代替他的是DB9的接口,DB9所用到的管脚比DB25有所变化,是2(RXD)、3(TXD)、5(GND)这三个。因此现在都把RS232接口叫做DB9。 元器件常识:市场上把公头的接插件叫做DRXX,母头的叫DBXX,比如我们电脑上的串口,在市场上叫做DR9,不是DB9,很多人都误叫做DB9,实际上的DB9是两个把两个DR9互相连接在一起的接口。 在文章中,我把所有的串口设备接口都统一叫做RS232接口。 三、什么是RS485接口 由于RS232接口标准出现较早,难免有不足之处,主要有以下四点: (1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL电路连接。 (2)传输速率较低,在异步传输时,波特率为20Kbps;因此在“南方的老树51CPLD开发板”中,综合程序波特率只能采用19200,也是这个原因。 (3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。 (4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在50米左右。 针对RS232接口的不足,于是就不断出现了一些新的接口标准,RS-485就是其中之一,它具有以下特点:

51单片机实现双机通信(自己整理的)

左边1号机,右边2号机,,功能实现 1号机程序 #include #define uint unsigned int #define uchar unsigned char sbit p10=P1^0; uchar a,b,kk; //uchar code d_c[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void delay_ms(uchar y) { uchar i; while(y--) for(i=0;i<120;i++) ; } void put(uchar x) //发送函数 { SBUF=x; //SBUF:串行口数据缓冲器 while(TI==0); //等待发送结束 TI=0; } void main() { uchar j; SCON=0x40; //串行口工作方式1,8位通用异步发送器

— TMOD=0x20; //定时器1工作方式2 PCON=0x00; //波特率不倍增 TH1=0xf4; TL1=0xf4; //波特率2400 TR1=1; //定时器1开始计时 P2=0xc0; while(1) { if(p10==0&&j==0) { delay_ms(15); while(p10==0); kk=1; P2=0xf9; j=1; } if(p10==0&&j==1) { delay_ms(15); while(p10==0); kk=2; P2=0xa4; j=2; } if(p10==0&&j==2) { delay_ms(15); while(p10==0); kk=3; P2=0xb0; j=0; } if(kk==1) put('A'); if(kk==2) put('B'); if(kk==3) put('C'); delay_ms(10); } }

RS-485通信原理

一、RS485串口通信电路图 二、VxWorks中基于RS485总线得串口通信协议及实现 摘要:本文介绍了在嵌入式实时操作系统Vxworks下串行设备得驱动架构及实现,提出了一种基于RS-485总线得新型串口通信协议,重点讨论了基于这种协议得应用程序得设计方法,发送时主要采用了总线仲裁机制,接收时主要采用了字符合法性校验、长度校验、内容得CRC校验,提高了系统得通信效率与稳定性。 关键词:VxWorks;RS-485;通信协议;总线仲裁;CRC校验 1 引言 随着信息技术与互联网得飞速发展,以及计算机、通讯、数码产品等领域得高速增长,数字化时代已经来临。嵌入式设备就是数字化时代得主流产品,嵌入式软件就是数字化产品得核心,作为嵌入式软件得基础与关键,嵌入式操作系统在产业发展过程中扮演着越来越重要得角色,应用遍及工业自动化、网络通信、航空航天、医疗仪器等领域。 2 RS-485总线 RS-485总线接口就是一种常用得串口,具有网络连接方便、抗干扰性能好、传输距离远等优点。RS-485收发器采用平衡发送与差分接收,因此具有抑制共模干扰得能力,加上收发器具有高得灵敏度,能检测到低达200mv得电压,可靠通信得传输距离可达数千米。使用RS-485总线组网,只需一对双绞线就可实现多系统联网构成分布式系统、设备简单、价格低廉、通信距离长。 3 VxWorks中串口驱动得实现

VxWorks 操作系统就是美国Wind River公司设计开发得嵌入式实时操作系统(RTOS),就是嵌入式开发环境得关键组成部分。Vxworks 操作系统得I/O 系统可以提供简单、统一、与任何设备无关得接口。这些设备包括:面向字符设备、随机块存储设备、虚拟设备、控制与监视设备以及网络设备。Vxworks 得I/O 系统包括基本I/O 系统与缓冲I/O 系统,具有比其她I/O 系统更快速,兼容性更好得特性。这对于实时系统就是很重要得。 3、1 串口驱动架构 基于vxWorks得串口设备驱动程序架构,对vxWorks得 虚拟设备ttyDrv进行封装,向上将TTY设备安装到标准 得I/O系统中,上层应用通过标准得I/O 接口完成对硬 件设备得操作,向下提供对实际硬件设备得底层设备驱 动程序。其软件架构如图1所示。 由图1可知,串口设备驱动由两部分组成,一部分为对 ttyDrv进行封装,将串行设备安装到标准得I/O系统中, 提供对外得接口;另一部分为串行设备驱动程序,提供 对硬件设备得基本操作。 虚拟设备ttyDrv管理着I/O系统与真实驱动程序之间 得通信。在I/O系统方面,虚拟设备ttyDrv作为一个字 符型设备存在,它将自身得入口点函数挂在I/O系统上, 创建设备描述符并将其加入到设备列表中。当用户有I/O请求包到达I/O系统中时,I/O系统会调用ttyDrv相应得函数响应请求。同时,ttyDrv管理了缓冲区得互斥与任务得同步操作。另一方面,ttyDrv负责与实际得设备驱动程序交换信息。通过设备驱动程序提供得回调函数及必要得数据结构,ttyDrv将系统得I/O 请求作相应得处理后,传递给设备驱动程序,由设备驱动程序完成实际得I/O操作。 3、2 驱动初始化 串口设备得初始化xxDevInit流程如图2。 设备驱动得初始化过程首先调用系统函数ttyDrv(),该 函数通过调用iosDrvInstall()将ttyOpen()、 ttyIoctl()、tyRead()、tyRead、tyWrite安装到系统 驱动函数表中,供I/O系统调用。 接着根据用户入参对串口芯片寄存器进行初始化,安装 驱动函数指针。 最后调用系统函数ttyDevCreate()创建ttyDrv设备。 该函数初始化设备描述符,调用tyDevInit()函数初始

51单片机实现的485通讯程序

标签:modbus8051源程序 modbus协议--51端程序的实现 RTU需要一个定时器来判断3.5个流逝时间。 #define ENABLE 1 #define DISABLE 0 #define TRUE 1 #define FAULT 0 #define RECEIVE_EN 0 #define TRANSFER_EN 1 #define MAX_RXBUF 0x20 extern unsigned char emissivity; extern unsigned char tx_count,txbuf[15]; extern unsigned char rx_count,rxbuf[15]; extern unsigned char tx_number,rx_number; extern bit rx_ok; unsigned char rx_temp; void InitTimer1() //针对标准8051 { TMOD=(TMOD|0xf0)&0x1f; //将T1设为16位定时器 TF1=0; TH1=0x62; //设T1位3.5位的接收时间35bit/9600bit/s=3.646ms TL1=0x80;//晶振为11.0592MHz,T= 65535-3.646ms*11.0592MHz/12=0xf2df //0x6280是22.1184M下LPC9XX下的值。 ET1=1; //允许T1中断 TR1=1; //T1开始计数 } void timer1() interrupt 3 using 2 //定时器中断 { TH1=0x62; //3.646ms interrupt TL1=0x80; if(rx_count>=5) //超时后,若接收缓冲区有数则判断为收到一帧 { rx_ok=TRUE; } } void scomm() interrupt 4 using 3 //modbus RTU模式 {

单片机双机通信系统的课程设计

一.课程设计的目的及基本要求: 实践课程是使学生融会贯通本课程所学专业理论知识,完成一个较完整的设计计算和安装调试过程,以加深学生对所学理论的理解与应用,认识和熟悉元器件和电子测量仪器的性能指标,了解解决实际问题的一般过程,培养学生综合运用基础理论知识和专业知识去解决实际工程设计问题的能力。通过电子技术的综合性工程训练,使学生达到以下的目的和要求: 1、结合模拟电路、数字电路、可编程逻辑 器件、单片机电子线路CAD等课程中所学的 理论知识,按要求独立设计方案,培养学生 独立分析与解决问题的能力; 2、学会查阅相关手册和资料,通过查阅手 册和资料,进一步熟悉常用电子器件的类型 和特性,并掌握合理选用的原则; 3、学会使用常用电子元器件(包括中规模 芯片、专用芯片和可编程器件);

4、掌握基本的现代电子技术设计工具和EDA (Electronic design automation)技术; 5、掌握电子电路的安装与调试技术,进一 步熟悉电子仪器的使用方法; 6、认真撰写总结报告,培养严谨的作风和 科学的态度; 二.课程设计的主要内容: 课题十九单片机双机通信系统 基本要求:设计两个单片机最小系统,能实现有线通信,一方为发送,另一方为接收。 提高要求:两个单片机最小系统能相互通信,并能实现校验。 三.具体要求和时间安排: 每一个学生在教师指导下,独立完成一个应用系统。工作量如下: 1、电路原理图(A3幅面)1张,要求Protel软件绘制; 2、pcb版图(A3及以上幅面)1张;

3、设计说明书(20-30页)1本,内含能编译通过的源程序(有必要的注释)。

RS485协议简介及MAX485芯片介绍

RS-485协议简介及MAX485芯片介绍 1 RS-485协议简介及MAX485芯片介绍 由于RS-232的种种缺点,新的串行通讯接口标准RS-449被制定出来,与之相对应的是RS-485的电气标准。RS -485是美国电气工业联合会(EIA)制定的利用平衡双绞线作传输线的多点通讯标准。它采用差分信号进行传输;最大传输距离可以达到1.2 km;最大可连接32个驱动器和收发器;接收器最小灵敏度可达±200 mV;最大传输速率可达2.5 Mb /s。由此可见,RS-485协议正是针对远距离、高灵敏度、多点通讯制定的标准。 MAX485接口芯片是Maxim公司的一种RS-485芯片。 采用单一电源+5 V工作,额定电流为300 μA,采用半双工通讯方式。它完成将TTL电平转换为RS-485电平的功能。其引脚结构图如图1所示。从图中可以看出,MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX 485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在与单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,一般可选100Ω的电阻。 2用PC机实现与8031单片机的多点通讯 用8031单片机实现与PC机之间的通讯时,必须使用电平转换接口芯片,因为单片机输出的是TTL电平,必须经过电平转换才能和PC机的一致。本文中采用的是RS-485协议,所以单片机需要采用RS-485接口;而在PC机侧使用的是RS-232与RS-485的电平转换接口。在本文中采用的是武汉新特电子公司的电平转换接口,该接口使用简便、无需外加电源、数据传输速率最高可达10 Mb/s,而且不用任何软件初始化和修改。另外实现多点通讯还需要了解器件的驱动能力,当器件的驱动能力足够大时,我们就可以根据需要加入所需要的节点。 本文中所举的例子就是利用一台PC控制64块单片机的工作,采用多点通讯形式。通过发送控制字和工作方式字给相应的单片机,使其进行相应的操作。单片机在接收到数据后,进行数据的采集工作,等到PC机再发指令,将采集到的数据反馈给PC机,PC机对数据进行分析和计算。 PC机的程序可以采用Windows下任何一种面向对象的高级语言来编写,它比在DOS下的利用串口中断的方式进行更加简便,应用程序将控制权交向串口的驱动程序,接收和发送的中断完全由串口驱动程序来控制,减轻了编写过程中的很多麻烦。本程序中选用的是Delphi的串口通讯控件Spcomm来实现。参数的设置可以自动完成。单片机采用中断工作

RS485通讯几种常见问题

485通讯常见问题 1.MAX488/MAX490在点对点通信中工作很正常,为何在点对多点通信时无法正常通信? 由于MAX488/MAX490没有发送使能控制,因而其输出无法处于高阻态,当多个输出被连接在一起时(即点对多点通信时),差分输出信号线被多个发送器驱动(通常为TXD=1对应的电平状态);当某个节点开始通信,且发送TXD=0对应的差分电平时,A,B两线上将形成很大的短路电流,若长时间工作,则接口芯片将损坏;而这种情况不会在点对点通信中发生,且不会出现在点对多点通信中的处于点的一方,这也是象MAX488/MAX490以及其它一些没有发送使能控制的接口的适用范围。以上是造成这个问题的原因,当然,类似情况也会出现在那些带使能控制而软件没有编程控制使能的接口芯片中。 2.RS-485/RS-422接口为何在停止通信时接收器仍有数据输出? 由于RS-485/RS-422在发送数据完成后,要求所有的发送使能控制信号关闭且保持接收使能有效,此时,总线驱动器进入高阻状态且接收器能够监测总线上是否有新的通信数据。但是由于此时总线处于无源驱动状态(若总线有终端匹配电阻时,A和B线的差分电平为0,接收器的输出不确定,且对AB线上的差分信号的变化很敏感;若无终端匹配,则总线处于高阻态,接收器的输出不确定),容易受到外界的噪声干扰。当噪声电压超过输入信号门限时(典型值±200mV),接收器将输出数据,导致对应的UART接收无效的数据,使紧接着的正常通讯出错;另外一种情况可能发生在打开/关闭发送使能控制的瞬间,使接收器输出信号,也会导致UART错误地接收。 解决方法: 1)在通讯总线上采用同相输入端上拉(A线)、反相输入端下拉(B线)的方法对总线进行钳位,保证接收器输出为固定的“1”电平; 2)采用内置防故障模式的MAX308x系列的接口产品替换该接口电路; 3)通过软件方式消除,即在通信数据包内增加2-5个起始同步字节,只有在满足同步头后才开始真正的数据通讯。 3.采用RS-485/RS422接口通讯时,在什么条件下需要采用终端匹配?电阻值如何确定?如何配置终端匹配电阻?

单片机RS-485通信源程序

附录一、主机源程序 #include unsigned char xdata table[5]; unsigned char code tab[]={0x03,0x9f,0x25,0x0d, 0x99,0x49,0x41,0x1f, 0x01,0x09,0x05,0xc1, 0x63,0x85,0x61,0x71,0xff}; sbit ctrl=P1^2; sbit DATA=P1^0; sbit CLK=P1^1; void show(unsigned char m)//LED显示子程序 { unsigned char i,d; d=tab[m]; for(i=0;i<8;i++) { DATA=d&0x01; CLK=0; CLK=1; d=d>>1; } } void interrupt0(void) interrupt 0 using 0//串行中断程序{ unsigned char cm0,cm1,sum0,sum1,i; lab: sum0=0; ctrl=1;//将MAX485设置为发送方式 SBUF=0xFF;//发送数据申请 while(TI!=1); ctrl=0; //将MAX485设置为接收方式 TI=0; while(RI!=1); cm0=SBUF;//接收申请确认信号 RI=0; if(cm0==0xff) { i=0; ctrl=0; while(RI!=1); cm1=SBUF; //接收第一个数据 RI=0;

while(cm1!=0xf0) { table[i]=cm1; while(RI!=1); cm1=SBUF;//接收后续的数据 RI=0; i++; } for(i=0;i<4;i++) sum0=sum0+table[i];//计算校验和 sum1=table[4];//获取收到的校验和 if(sum0==sum1) { ctrl=1; SBUF=0xf0; //发送数据确认信号 while(TI!=1); TI=0; for(i=0;i<4;i++) show(table[i]); } else goto lab; } else goto lab; ctrl=1;//将MAX485设置为发送方式return ; } void main(void) { SCON = 0x50; //串口方式1,允许接收TMOD = 0x20; //定时器1 定时方式2 PCON=0x80; //设SMOD=1; TH1 = 0xFA; //11.0592MHz 9600 波特率TL1 = 0xFA; TR1 = 1; //启动定时器 EX0=1; //开外部中断0 IT0=0; EA=1; //开总中断 ctrl=1;//将MAX485设置为发送方式while(1); //等待中断 }

RS485通信网络功能

RS-485通信网络功能 一 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信号,对于情况比较复杂的工业环境最好是选用防浪涌带隔离珊的产品。(2)通过PCI多串口卡,可以直接选用输出信号为RS485类型的扩展卡。 二RS485布网 网络拓扑一般采用终端匹配的总线型结构,不支持环形或星形网络。在构建网络时,应注意如下几点:(1)采用一条双绞线电缆作总线,将各个节点串接起来,从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。有些网络连接尽管不正确,在短距离、低速率仍可能正常工作,但随着通信距离的延长或通信速率的提高,其不良影响会越来越严重,主要原因是信号在各支路末端反射后与原信号叠加,会造成信号质量下降。(2)应注意总线特性阻抗的连续性,在阻抗不连续点就会发生信号的反射。下列几种情况易产生这种不连续性:总线的不同区段采用了不同电缆,或某一段总线上有过多收发器紧靠在一起安装,再者是过长的分支线引出到总线。总之,应该提供一条单一、连续的信号通道作为总线。在RS485组网过程中另一个需要注意的

三菱FX3U 485无协议通讯程序详解(含程序)

三菱FX2N PLC串行通讯指令(FNC 80 RS) 串行通讯指令(FNC 80 RS) 1、指令格式:[RS D0 K8 D10 K8] 发送数据帧起始地址和数目↓ 接收数据帧起始地址和数目 2、功能和动作: ※RS指令是为使用RS232C、RS-485功能扩展板及特殊适配器,进行发送和接收串行数据的指令。 ※传送的数据格式在后面讲述的特殊寄存器D8120设定。RS指令驱动时即使改变D8120的设定, 实际上也不接收。 ※在只发送的系统中,可将接收数设定为K0。(K表示常数) ※在只接收的系统中,可将发送数设定为K0。 ※在程序中可以多次使用RS指令,但在同一时间必须保证只有一个RS指令被驱动。 ※在一次完整的通讯过程中,RS指令必须保持一直有效,直至接收数据完成。 D8120说明: ※根据MD320的通讯协议,无帧头和帧尾,则(bit9,bit8)=(0,0)。 ※bit13~15是计算机链接通讯时的设定项目,使用RS指令时必须设定为0。 ※RS485未考虑设置控制线的方法,使用FX2N-485-BD、FX0N-485ADP时,(bit11,bit10 )=(1,1)。 ※若PLC和变频器之间的通讯参数如下:8位数据位,无校验,2位停止位,波特率9600,无帧头无帧尾,无协议模式,则D8120=H0C89(H表示16进制)(0000 1100 1000 1001B) M8002 │──||────────── [ MOV H0C89 D8120 ]

5、相关标志位: 一.基本指令介绍 ※M8122:数据发送请求标志 当PLC处于接收完成状态或接收等待状态时,用脉冲触发M8122,将使得从D0开始的连续8个数据被发送。当发送完成后,M8122自动被复位。当RS指令的驱动输入X0变为ON状态时,PLC就进入接收等待状态。 ※M8123:数据接收完成标志 当M8123置位时,表明接收已经完成,此时需要将接收到的数据从接受缓冲区转移到用户指定的数据区,然后手工复位M8123。复位M8123后,则PLC再次进入接收等待状态。 如果指定的接收长度为0,则M8123不动作,也不进入接收等待状态。从这个状态想进入接收等待状态,必须使接受长度≥0,然后对M8123进行ON→OFF操作。 ※M8129:通讯超时标志 接收数据中途中断时,那个时点开始如果在D8129中规定的时间内不再重新开始接收,作为超时输出标志M8129变为ON状态,则接收结束。M8129需手工复位。 二.详细程序(与英威腾GD20变频器测试通讯成功的案例)

芯片485通信

RS-485串行总线接口标准以差分平衡方式传输信号,具有很强的抗共模干扰的能力,允许一对双绞线上一个发送器驱动多个负载设备。工业现场控制系统中一般都采用该总线标准进行数据传输,而且一般采用RS-485串行总线接口标准的系统都使用8044芯片作为通信控制器或各分机的CPU。8044芯片内部集成了SDLC,HDLC等通信协议,并且集成了相应的硬件电路,通过硬件电路和标准协议的配合,使系统的通讯准确、可靠、快速。8044在市场上日渐稀少,虽然有8344可替代,但几百元的价位与普通单片机几元至几十元的价位相差甚远,用户在开发一般的单片机应用系统时,都希望能用简单的电路和简单的通信协议完成数据交换。譬如:利用单片机本身所提供的简单串行接口,加上总线驱动器如SN75176等组合成简单的RS-485通讯网络。本文所述的方法已成功地应用于工程项目,一台主机与60台从机通讯,通讯波特率达64KBPS。 2总线驱动器芯片SN75176 常用的RS-485总线驱动芯片有SN75174,SN75175,SN75176。SN75176芯片有一个发送器和一个接收器,非常适合作为RS-485总线驱动芯片。 SN75176及其逻辑如图1所示。 图1SN75176芯片及其逻辑关系 3RS-485方式构成的多机通信原理 在由单片机构成的多机串行通信系统中,一般采用主从式结构:从机不主动发送命令或数据,一切都由主机控制。并且在一个多机通信系统中,只有一台单机作为主机,各台从机之间不能相互通讯,即使有信息交换也必须通过主机转发。采用RS-485构成的多机通讯原理框图,如图2所示。

图2采用RS-485构成的多机通讯原理框图 在总线末端接一个匹配电阻,吸收总线上的反射信号,保证正常传输信号干净、无毛刺。匹配电阻的取值应该与总线的特性阻抗相当。 当总线上没有信号传输时,总线处于悬浮状态,容易受干扰信号的影响。将总线上差分信号的正端A+和+5电源间接一个10K的电阻;正端A+和负端B-间接一个10K的电阻;负端B-和地间接一个10K的电阻,形成一个电阻网络。当总线上没有信号传输时,正端A+的电平大约为3.2V,负端B-的电平大约为1.6V,即使有干扰信号,却很难产生串行通信的起始信号0,从而增加了总线抗干扰的能力。 4通信规则 由于RS-485通讯是一种半双工通讯,发送和接收共用同一物理信道。在任意时刻只允许一台单机处于发送状态。因此要求应答的单机必须在侦听到总线上呼叫信号已经发送完毕,并且没有其它单机发出应答信号的情况下,才能应答。半双工通讯对主机和从机的发送和接收时序有严格的要求。如果在时序上配合不好,就会发生总线冲突,使整个系统的通讯瘫痪,无法正常工作。要做到总线上的设备在时序上的严格配合,必须要遵从以下几项原则: 1) 复位时,主从机都应该处于接收状态。 SN75176芯片的发送和接收功能转换是由芯片的RE*,DE端控制的。RE*=1,DE=1时,SN75176发送状态;RE*=0,DE=0时,SN75176处于接收状态。一般使用单片机的一根口线连接RE*,DE端。在上电复位时,由于硬件电路稳定需要一定的时间,并且单片机各端口复位后处于高电平状态,这样就会使总线上各个分机处于发送状态,加上上电时各电路的不稳定,可能向总线发送信息。因此,如果用一根口线作发送和接收控制信号,应该将口线反向后接入 SN75176的控制端,使上电时SN75176处于接收状态。 另外,在主从机软件上也应附加若干处理措施,如:上电时或正式通讯之前,对串行口做几次空操作,清除端口的非法数据和命令。 2) 控制端RE*,DE的信号的有效脉宽应该大于发送或接收一帧信号的宽度。 在RS-232,RS-422等全双工通讯过程中,发送和接收信号分别在不同的物理链路上传输,发送端始终为发送端,接收端始终为接收端,不存在发送、接收控制信号切换问题。在RS -485半双工通讯中,由于SN75176的发送和接收都由同一器件完成,并且发送和接收使用同一物理链路,必须对控制信号进行切换。控制信号何时为高电平,何时为低电平,一般以单片机的TI,RI信号作参考。

RS485通信原理

RS485通信原理 1. RS-485的电气特点:逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。接口旌旗灯号电平比RS-232-C 降低了,就不易破坏接口电路的芯片,且该电平与TTL电平兼容,可便利与TTL 电路连接。 2. RS-485的数据最高传输速度为10Mbps 。 3. RS-485接口是采取均衡驱动器和差分接收器的组合,抗共模干才能加强,即抗噪声干扰性好。 4. RS-485接口的最大年夜传输距离标准值为4000英尺,实际上可达 3000米,别的RS-232-C接口在总线上只许可连接1个收发器,即单站才能。而RS-485接口在总线上是许可连接多达128个收发器。即具有多站才能,如许用户可以应用单一的RS-485接口便利地建立起设备收集。 因RS-485接口具有优胜的抗噪声干扰性,长的传输距离和多站才能等上述长处就使其成为首选的串行接口。因为RS485接口构成的半双工收集一般只需二根连线,所以RS485接口均采取樊篱双绞线传输。 RS485接口连接器采取DB-9的9芯插头座,与智能终端RS485接口采取DB-9(孔),与键盘连接的键盘接口RS485采取DB-9(针)。 RS485编程 串口协定只是定义了传输的电压,阻抗等,编程方法和通俗的串口编程一样RS-232与RS-422之间转换道理和接法 平日我们对于视频办事器、录像机、切换台等直接播出、切换控制重要应用串口进行,重要应用到RS-232、RS-422与RS-485三种接口控制。下面就串口的接口标准以及应用和外部插件和电缆进行商量。 RS-232、RS-422与RS-485标准只对接口的电气特点做出规定,而不涉及接插件、电缆或协定,在此基本上用户可以建立本身的高层通信协定。例如:视频办事器都带有多个RS422串行通信接口,每个接口均可经由过程RS422通信线由外部计算机控制实现记录与播放。视频办事器除供给各类控制硬件接口外,还供给协定接口,如RS422接口除支撑RS422的Profile协定外,还支撑 Louth、Odetics 、BVW等经由过程RS422控制的协定。 RS-232、RS-422与RS-485都是串行数据接口标准,都是由电子工业协会(EIA)制订并宣布的,RS-232在1962年宣布。RS-422由RS-232成长而来,为改进RS-232通信距离短、速度低的缺点,RS- 422定义了一种均衡通信接口,将传输速度进步到10Mbps,传输距离延长到4000英尺(速度低于100Kbps时),并许可在一条均衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、均衡传输规范,被定名为TIA/EIA-422-A标准。为扩大应用范围,EIA又于 1983年在RS-422基本上制订了RS-485标准,增长了多点、双向通信才能,即允很多个发送器连接到同一条总线上,同时增长了发送器的驱动才能和冲突保护特点,扩大了总线共榜样围,后定名为TIA/EIA-485-A标准。 1. S-232串行接口标准 今朝RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速度串行通信中增长通信距离的单端标准。RS-232采取不均衡传输方法,即所谓单端通信。收、发端的数据旌旗灯号是相对于旌旗灯号地。典范的RS-232旌旗灯号在正负电平之间摆动,在发送数据时,发送端驱动器输出

基于51单片机的双机串行通信

机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级: xxxxxx 学号: 13xxxxxxxxx : xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计 1.51单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:

RS-485通信原理

一、RS485串口通信电路图 二.VxWorks中基于RS485总线的串口通信协议及实现 摘要:本文介绍了在嵌入式实时操作系统Vxworks下串行设备的驱动架构及实现,提出了一种基于RS-485总线的新型串口通信协议,重点讨论了基于这种协议的应用程序的设计方法,发送时主要采用了总线仲裁机制,接收时主要采用了字符合法性校验、长度校验、内容的CRC校验,提高了系统的通信效率和稳定性。 关键词:VxWorks;RS-485;通信协议;总线仲裁;CRC校验 1 引言 随着信息技术和互联网的飞速发展,以及计算机、通讯、数码产品等领域的高速增长,数字化时代已经来临。嵌入式设备是数字化时代的主流产品,嵌入式软件是数字化产品的核心,作为嵌入式软件的基础和关键,嵌入式操作系统在产业发展过程中扮演着越来越重要的角色,应用遍及工业自动化、网络通信、航空航天、医疗仪器等领域。 2 RS-485总线 RS-485总线接口是一种常用的串口,具有网络连接方便、抗干扰性能好、传输距离远等优点。RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上收发器具有高的灵敏度,能检测到低达200mv的电压,可靠通信的传输距离可达数千米。使用RS-485总线组网,只需一对双绞线就可实现多系统联网构成分布式系统、设备简单、价格低廉、通信距离长。

3 VxWorks中串口驱动的实现 VxWorks 操作系统是美国Wind River公司设计开发的嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。Vxworks 操作系统的I/O 系统可以提供简单、统一、与任何设备无关的接口。这些设备包括:面向字符设备、随机块存储设备、虚拟设备、控制和监视设备以及网络设备。Vxworks 的I/O 系统包括基本I/O 系统和缓冲I/O 系统,具有比其他I/O 系统更快速,兼容性更好的特性。这对于实时系统是很重要的。 3.1 串口驱动架构 基于vxWorks的串口设备驱动程序架构,对vxWorks的 虚拟设备ttyDrv进行封装,向上将TTY设备安装到标 准的I/O系统中,上层应用通过标准的I/O 接口完成 对硬件设备的操作,向下提供对实际硬件设备的底层设 备驱动程序。其软件架构如图1所示。 由图1可知,串口设备驱动由两部分组成,一部分为对 ttyDrv进行封装,将串行设备安装到标准的I/O系统 中,提供对外的接口;另一部分为串行设备驱动程序, 提供对硬件设备的基本操作。 虚拟设备ttyDrv管理着I/O系统和真实驱动程序之间 的通信。在I/O系统方面,虚拟设备ttyDrv作为一个 字符型设备存在,它将自身的入口点函数挂在I/O系统 上,创建设备描述符并将其加入到设备列表中。当用户有I/O请求包到达I/O 系统中时,I/O系统会调用ttyDrv相应的函数响应请求。同时,ttyDrv管理了缓冲区的互斥和任务的同步操作。另一方面,ttyDrv负责与实际的设备驱动程序交换信息。通过设备驱动程序提供的回调函数及必要的数据结构,ttyDrv将系统的I/O请求作相应的处理后,传递给设备驱动程序,由设备驱动程序完成实际的I/O操作。 3.2 驱动初始化 串口设备的初始化xxDevInit流程如图2。 设备驱动的初始化过程首先调用系统函数ttyDrv(),该 函数通过调用iosDrvInstall()将ttyOpen()、 ttyIoctl()、tyRead()、tyRead、tyWrite安装到系统 驱动函数表中,供I/O系统调用。 接着根据用户入参对串口芯片寄存器进行初始化,安装 驱动函数指针。 最后调用系统函数ttyDevCreate()创建ttyDrv设备。

相关主题
文本预览
相关文档 最新文档