基于RS485总线多机通信系统可靠性的研究
485 多主机通信机制

485 多主机通信机制485多主机通信机制,是指通过一种基于以太网的通信协议,实现多个主机之间的高速数据传输和通信的技术。
本文将详细介绍485多主机通信机制的原理、特点和应用。
一、485多主机通信机制的原理485多主机通信机制是基于RS-485通信协议的,RS-485是一种串行通信协议,支持多主机通信。
它采用差分信号传输方式,具有抗干扰能力强、传输距离远、传输速率高等优点,适用于工业环境中的数据通信。
在485多主机通信机制中,每个主机都有一个唯一的地址。
当一个主机要发送数据时,它会先发送一个起始信号,然后将数据按字节发送出去。
其他主机会监听总线上的信号,如果检测到起始信号,就会暂时放弃总线的控制权,等待发送数据的主机发送完毕后再参与通信。
在485多主机通信机制中,还有一个重要的概念是主机的优先级。
每个主机都有一个优先级,优先级高的主机具有更高的控制权,在总线上能够更快地发送数据。
当多个主机同时要发送数据时,优先级高的主机会优先发送,而优先级低的主机会等待。
二、485多主机通信机制的特点1. 高速传输:485多主机通信机制支持高速数据传输,最高传输速率可达10Mbps,能够满足实时性要求高的应用场景。
2. 长距离传输:485多主机通信机制采用差分信号传输方式,传输距离可达1200米,适用于工业环境中远距离的通信需求。
3. 抗干扰能力强:485多主机通信机制采用差分信号传输方式,能够有效抵抗电磁干扰和噪声干扰,保证数据传输的可靠性。
4. 多主机通信:485多主机通信机制支持多个主机同时进行通信,每个主机都有一个唯一的地址和优先级,能够实现灵活的数据交互和控制。
三、485多主机通信机制的应用1. 工业自动化:485多主机通信机制广泛应用于工业自动化领域,用于实现各种设备之间的数据通信和控制,如PLC、传感器、执行器等。
2. 智能楼宇:485多主机通信机制可用于智能楼宇系统中,实现楼宇设备之间的数据传输和控制,如照明控制、空调控制、安防监控等。
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多机通信的四轴步进电机同步控制系统张五一;罗冬冬;程宾【摘要】This article describes a four-axis stepper motor control system which takes STC89C58 MCU as its core. This system consists of one main engine and four subordinate engines. The main machine completes reversing control and speed control of each stepper motor by downloading data from the U-disk and then taking use of the RS485 bus to data transfer from the host and the subordinate machine. This system has high generality, and accomplishes all kinds of oper-ation requirements by users modify the download data in the U-disk on the basis of different applications.%提出一种以STC89C58单片机为核心的四轴步进电机控制系统。
它由主机和4个从机构成。
主机通过U盘进行数据下载,再利用RS485总线实现主机与从机之间的数据传输,从而实现主机对各个从机步进电机的正反转控制以及速度控制。
该系统通用性强,不同应用场合的用户通过修改U盘中的下载数据即可实现对步进电机各种运行要求的控制。
【期刊名称】《中原工学院学报》【年(卷),期】2015(000)003【总页数】5页(P19-23)【关键词】RS485多机通信;步进电机;同步控制【作者】张五一;罗冬冬;程宾【作者单位】中原工学院,郑州450007;中原工学院,郑州450007;中原工学院,郑州450007【正文语种】中文【中图分类】TM306近年来,国内外对于步进电机控制技术的研究主要有传统的PID控制、矢量控制以及一些现代的智能控制理论。
基于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多机通信系统设计_马庆功

- -/2012.01/基于RS485多机通信系统设计常州大学信息中心 马庆功常州技师学院电子校区 莫玉华常州刘国钧高等职业技术学校 郑恩兴【摘要】本设计是基于RS485总线的多机通信系统。
本设计是利用51系列单片机模拟RS485多机通信,系统由一个主机和两个从机组成,从机的地址是可以通过拨码开关设置进而可以表示多个从机。
在本设计当中主从机之间采用modbus的03指令进行通信,从机读取的值是18B20的温度数据,通过485总线传给主机,主机显示读取从机温度的值,同时从机也显示自己采集到的温度的值。
【关键词】RS485;单片机;modbus;多机通信;18B201.前言在当今数字化的时代里,多机通信系统也已经广泛地渗透到科学研究、工程设计、军事技术、文化艺术以及人们的日常生活等各个领域。
通过通信的手段实现了信息交换、资源共享已经成为一种必然和趋势。
在多机通信的发展中基于RS485的多机通信[1]也多被广泛的运用于实际的运用当中。
RS485串行接口标准及两级单片机主从式结构,实现了成本低、传输距离远、抗干扰能力强的通信。
在仪表设计方面为了满足仪表数据的远程采集和处理,对多个仪表间的通信以及仪表与主机间的通信提出了要求。
本设计是在常州和普电子公司实习期间参与其仪表接口的开发,主要设计仪表间RS485通信,同时使用的通信协议是工业上面比较通用的ModBus协议。
通过本设计可以实现多种仪表间的相互的通信。
2.硬件设计2.1 硬件电路图本设计主要是分为主机和从机两模块[2]的设计(硬件电路图如图2-1)。
主机系统是由电源、晶振电路、RS485串口电路及1602显示电路、ISP下载接口、电容等组成;从机系统是由电源、晶振电路、RS485串口电路、拨码开关及1602显示电路、ISP下载接口、电容、18b20测温电路等组成。
2.2 RS485串行芯片选择MAX485接口芯片是Maxim公司的一种485接口[3]芯片。
RS485实验一报告模板

实验一基于RS485和牛顿模块的A/D、D/A实验一、实验目的和要求(1)熟悉RS485总线与牛顿模块的结构组成,了解其工作过程,认识其结构形式。
(2)熟悉牛顿模块的基本工作原理。
(3)掌握应用RS485和牛顿模块进行电压输出和电压采集的方法。
二、主要仪器设备计算机、R-8017、R-8024、R-8043D、R-8053、RS232转RS485模块、24V稳压源三、实验内容和原理(1)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的多机通信程序

//-----------------------函数声明,变量定义---------------------#include <reg51.h>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=1 TMOD =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()串口接收中断处理函数// 函数功能:接收包括起始位"S"在内的十位数据到数据缓冲区//---------------------------------------------------------------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);}。
基于RS485总线的分布式高精度数据采集系统

㊀2021年㊀第2期仪表技术与传感器Instrument㊀Technique㊀and㊀Sensor2021㊀No.2㊀基金项目:国家自然科学基金杰出青年基金资助项目(61525107)收稿日期:2020-03-24基于RS485总线的分布式高精度数据采集系统陈㊀航1,严㊀帅2,刘㊀胜1,张会新1(1.中北大学,仪器科学与动态测试教育部重点实验室,山西太原㊀030051;2.北京宇航系统工程研究所,北京㊀100076)㊀㊀摘要:针对分布式测试系统中物理量种类多㊁相互之间易干扰,数据需要远距离传输的要求,设计了一种基于RS485总线的分布式数据采集系统㊂该系统主要包含上位机㊁主控站点和被控站点,通过定制USB和RS485总线通信协议,实现了总线上40个站点的轮询测量或单站点单通道测量㊂实验结果表明,该系统实现了数据的可靠传输,有效解决了大面积环境下进行分布式高精度数据采集的问题,具有较好的实用价值㊂关键词:分布式;RS485总线;高精度;智能化;ADS1258;数据采集中图分类号:TP302㊀㊀㊀文献标识码:A㊀㊀㊀文章编号:1002-1841(2021)02-0071-04DistributedHigh⁃precisionDataAcquisitionSystemBasedonRS485BusCHENHang1,YANShuai2,LIUSheng1,ZHANGHui⁃xin1(1.NorthUniversityofChinaTheMinistryofEducationKeyLaboratoryofInstrumentScienceandDynamicMeasurement,Taiyuan030051,China;2.BeijingAerospaceSystemsEngineeringInstitute,Beijing100076,China)Abstract:AdistributeddataacquisitionsystembasedonRS485buswasdesignedforthesituationthattherearemanykindsofphysicalquantitieswhichareeasytointerferewitheachother,andthedataneedstobetransmittedoverlongdistances.Thissystemmainlyincludedthehostcomputer,themasterstationandthecontrolledstation.BycustomizingtheUSBandRS485buscommunicationprotocols,itimplementedpollingmeasurementof40stationsonthebusorsingle⁃channelmeasurement.Theexper⁃imentalresultsshowthatthesystemachievesreliabledatatransmissionandeffectivelysolvestheproblemofdistributedandhigh⁃precisiondatacollectioninlarge⁃scaleenvironment,whichhashighpracticalvalue.Keywords:distributed;RS485bus;highaccuracy;intelligent;ADS1258;dataacquisition0㊀引言在一些分布式测试系统中,不可避免地要对被测环境不同位置地点多种物理量(湿度㊁温度㊁压力等)进行精确采集和测量[1-2]㊂传统的测试系统大多采用点对点连线的电缆对传感器的模拟量信号进行传输,这种方式一方面容易受到周围电磁环境的影响,降低采集精度;另一方面增加了测试系统中电缆的消耗量和成本,还在一定程度上影响采集系统的健壮性㊂为了提高测试系统的智能化程度和精确度,设计了一个基于RS485总线的分布式高精度数据采集系统,将各地点的传感器信号通过采样转换为数字信号,通过RS485总线传至系统主控站点[3-5]㊂和现有的测试系统相比,增加了数据采集通道个数和采集精度,最多可实现640个测点数据的轮询采集,提高了数据传输的智能化水平㊂1㊀系统总体设计分布式数据采集系统主要包含上位机㊁RS485总线主控站点和40个RS485总线被控站点等部分,原理框图如图1所示㊂主控站点与上位机通过USB接口交换数据,在上位机下传的数据被解析后,FPGA将其通过主站RS485模块发出并与配对成功的被控站点通信㊂根据不同的命令,可以实现不同速率下的固定通道和自动扫描通道数据采集功能㊂主控站点在接收到数据后进行打包,通过USB接口传至上位机,实现了一主控站点多被控站点的高速RS485通信㊂每个被控站点包含RS485总线模块㊁FPGA控制模块㊁A/D采集模块等,属于独立的数据采集子系统,原理设计图如图2所示㊂与主控站点下传的站点号匹配正确后,FPGA首先对ADS1258相关寄存器进行配置,开始A/D采集,完成后将数据传至主控单元㊂㊀㊀㊀㊀㊀72㊀InstrumentTechniqueandSensorFeb.2021㊀图1㊀系统整体原理框图图2㊀被控站点设计示意图2㊀系统硬件设计2.1㊀FPGA控制模块系统选用Spartan-6系列FPGA作为主控芯片㊂在主控站点的硬件电路设计中,选择XC6SLX150芯片对RS485总线通信芯片ISO1176T和USB接口芯片FT2232进行控制,其电路连接示意如图3所示㊂被控站点的A/D采集芯片ADS1258及RS485通信芯片通过SPI接口与FPGA连接,电路设计如图4所示㊂图3㊀主控站点FPGA电路设计图图4㊀被控站点FPGA电路设计图2.2㊀RS485总线模块分布式数据采集系统具有分布范围大㊁电磁环境复杂㊁传输节点要求多等特点㊂为满足设计要求,选用RS485总线通过差分线的压差传输数据,可以极大地减少传输过程中的共模干扰,提高数据传输系统的健壮性[6]㊂总线接口芯片ISO1176T内部集成了变压器驱动器,在不要外部光耦的情况下实现隔离式供电,该芯片最大可支持256个从节点,最大数据传输速率达到40Mbps,详细的电路连接图如图5所示㊂图5㊀RS485总线模块电路连接图2.3㊀A/D转换模块被控站点采用ADS1258对来自传感器的模拟量信号进行模数转换㊂ADS1258具有24位采样分辨率,固定通道的采样速率能达到125KSPS,16个通道同时采集最高速率可达23.7KSPS,同时还集成了片上温度传感器,可以通过读取寄存器来读取芯片工作温度,它的工作温度为-40 105ħ,此外还有低温漂㊁低噪声等特点,非常符合系统的设计要求[7-8]㊂FPGA和ADS1258通过SPI接口相连,CLKIO为外部时钟输入引脚,来自FPGA的16MHz时钟通过50Ω电阻后与其相连,同时要将时钟选择引脚CLKSEL置高,芯片模拟供电电压为AVDD=5V,AVSS=AGND,参考电压为VREF=VREFP-VREFN=5V,数字供电电压为DVDD=3.3V,DVSS=DGND㊂ADS1258的硬件电路如图6所示㊂㊀㊀㊀㊀㊀第2期陈航等:基于RS485总线的分布式高精度数据采集系统73㊀㊀图6㊀ADS1258接口电路设计图2.4㊀USB接口设计FT2232H为支持高速USB2.0通信的接口芯片,支持最高480Mbps的通信速度㊂它有A㊁B2个数据传输通道,根据设计需要可以配置成多种速度模式,具体的接口如图3所示㊂芯片的工作模式为FT245异步FIFO接口模式,93LC56B为EEPROM,用于保存FT2232H配置完后的相关信息[9]㊂3㊀系统软件设计3.1㊀主控站点软件设计主控站点通过USB接口实现和上位机的数据交换,根据不同指令实现数据打包传输和被控站点寄存器配置功能[10]㊂FT2232H的数据收发时序通过FPGA控制,具体的读写时序如图7所示㊂RXF#信号为芯片输出信号,当缓存Buffer内部有读数空间时输出为低,这时可以拉低RD#信号进行一次8位FIFO数据的读取,然后RXF#信号被拉高,这期间不能进行读数操作,等RXF#再次拉低时进行下一次读数操作,写数据过程和读数据过程类似㊂图7㊀FT2232H读写时序图上位机和主控站点的通信协议如表1所示㊂在系统上电完成复位后,若接收到命令的第一个字节为25h,再继续判断下一个字节,若命令是55h(查询指令),则根据表1所示的通信协议进行RS485总线通信,主控站点从1到40依次查询被控站点,并将收到被控站点的数据上传至上位机进行显示㊁存储;若命令是ACh(寄存器配置指令),则对上位机的命令拆分处理,把后4个字节的数据根据总线通信协议进行打包,然后转发至对应的被控站点㊂表1㊀上位机通信协议命令有效标志8bit命令字8bit数据位32bit寄存器配置命令25hACh被控站点地址8bit站点配置数据24bit查询命令25h55h无效位停止命令25h90h无效位㊀㊀总线数据传输采取CRC-4进行差错控制,通信协议如表2所示㊂主控站点将校验无误的数据传送给上位机显示存储,校验不通过则再一次查询该站点,如果连续3次数据校验不通过,则将站点序号告诉上位机,然后进行下一个站点查询,避免了因某个站点工作异常而使整个系统无法工作,提高了数据采集系统的可靠性性和抗干扰能力[11]㊂表2㊀RS485总线通信协议起始位1bit有效数据位32bitCRC码4bit停止位3bit0被控站点地址8bit站点数据㊀24bitCRC-41113.2㊀被控站点软件设计被控站点作为独立的数据采集系统,主要完成16路模拟量信号采集和RS485总线通信工作㊂根据系统设计要求,ADS1258默认工作模式为以23.7KSPS㊀㊀㊀㊀㊀74㊀InstrumentTechniqueandSensorFeb.2021㊀采样速率自动扫描16个模拟量输入通道,寄存器通过SPI接口进行配置,DIN管脚为数据输入引脚,CONFIG1寄存器主要涉及采样速率的设置,命令字和寄存器地址为61h,相应的配置数据为03h;MUXSG0和MUXSG1寄存器主要进行采样通道选择,命令字和寄存器地址分别为64h和65h,相应的配置数据都为FFh㊂根据SCLK管脚的时序写入配置寄存器的数据,如图8所示,在片选信号CS拉低时,有效命令和数据在SCLK上升沿从最高位开始顺序进入DIN管脚㊂图8㊀ADS1258寄存器配置时序图系统运行后,被控单元首先按照默认值对ADS1258的寄存器进行配置,配置完成后对相关寄存器的值进行读取,验证是否配置正确,随后开始监测RS485总线上的数据,当与总线上的站点序号验证成功后,进行数据采集和发送数据,工作软件设计流程如图9所示㊂上位机可以对各被控站点的寄存器进行重新配置,以满足特殊测试要求㊂图9㊀被控站点软件设计流程图ADS1258开始进行数据采集时,首先将START管脚进行拉高,程序开始检测DRDY管脚的电平状态,当为低电平时,表示一个通道模拟量完成转换,读取有效数据共计32位,高8位包含状态信息和通道信息,低24位代表转换的有效数据㊂ADS1258可以在小于700μs的时间内处理完16路通道的数据采集㊂4㊀测试结果分布式数据采集系统的RS485总线上间隔1m设置一个被控站点,总线长度共计40m㊂系统测试时,在第一个被控站点15通道输入2V电压,其余的被控站点和通道不输入电压,使用上位机发送查询命令后回传的数据见图10㊂图10㊀测试数据根据上位机的数据显示,主控站点按顺序查询了被控站点的16路采集通道,EB90EB90是子站点数据发送结束标志,很好地完成了主控站点控制下的数据采集功能㊂数据 ADD00001962F77E9 中 ADD0000196 表示第一个被控站点15通道的数据采集结果, 2F77E9 转变成电压为1.9778V,高精度万用表显示实际电压为1.9789V,所以系统的采集精度为0.6%,表明数据采集系统的精度很高㊂5㊀结束语分布式数据采集系统的设计采用24位的模数转换芯片ADS1258,提高了模拟量数据采集精度,选用RS485总线进行数据的传输,增加了系统挂载的站点数量,总线驱动器芯片ISO1176T的使用实现了电源隔离,减少了周围环境的干扰㊂测试表明,系统数据传输可靠,精度很高,同时还可以根据(下转第79页)㊀㊀㊀㊀㊀第2期李鹏飞等:基于NVIDIATX2模块的双目视觉信号采集系统设计79㊀㊀效果图,在界面上定义一个全黑灰度图,将接收到的坐标点以白色画出,实时采集发送帧率为140fps,采集处理图像无丢帧失帧现象,发送数据包无丢包现象,稳定性好,满足了设计要求㊂6 结论针对胶体三维信息检测面临的缺失高帧率㊁采集实时性的问题,设计了一套双目视觉信号采集系统,该采集系统具有4路线结构光采集系统,实现了双目实时信号采集㊂其中以嵌入式NVIDIATX2为核心详细介绍了图像采集㊁处理以及中心线坐标发送的全过程,结合了小型化硬件以及简便的上位机界面,集成了一套小体积㊁高效率㊁方便操作和移动的采集系统㊂实验测试表明系统稳定性好,精度高,满足了设计要求,为汽车关键部件胶体三维测量做好了充分准备,具有较好的实用价值㊂参考文献:[1]㊀任勇峰,王国忠.基于CMOS传感器的高性能图像采集系统设计[J].仪表技术与传感器,2019(1):64-67.[2]㊀岳昊,武栓虎.基于机器视觉的医用瓶盖质检系统设计[J].仪表技术与传感器,2019(10):83-87.[3]㊀杨长辉,黄琳.基于机器视觉的滚动接触疲劳失效在线检测[J].仪表技术与传感器,2019(4):65-69.[4]㊀相江.线结构光传感器系统建模与误差分析[D].合肥:合肥工业大学,2019.[5]㊀章金敏.基于激光三角法的物体三维轮廓测量系统[D].武汉:武汉理工大学,2015.[6]㊀戴力.汽车涂胶工艺应用研究[J].汽车零部件,2017,23(8):71-74.[7]㊀朱立忠,陈美洋.一种基于机器学习的汽车涂胶缺陷检测研究[J].沈阳理工大学学报,2018,23(4):18-22.车工艺师,2019,25(7):61-64.[9]㊀吴勇,雷旭智.科惠力测量技术在缸体表面刀痕问题中的应用[J].装备制造技术,2017,16(8):121-123.[10]㊀唐广辉,穆建华,夏志豪.基于科惠力测量技术的发动机故障诊断应用[J].汽车科技,2015,23(1):52-56.[11]㊀OLENSKYJAG,DONISIR,BORNHORSTGM.Nonde⁃structivecharacterizationofstructuralchangesduringinvitrogastricdigestionofapplesusing3Dtime⁃seriesmicro⁃computedtomography[J].JournalofFoodEngineering,2020,267:1-11.[12]㊀金贝.基于HALCON的机器视觉教学实验系统设计[D].北京:北京交通大学,2012.[13]㊀方玉红.基于机器视觉的轨道缺陷图像检测系统设计[D].南昌:南昌大学,2013.[14]㊀MICHAELLB,NELEV,PANFILOVAV,etal.R⁃From⁃TasacommonmechanismofarrhythmiainitiationinlongQTsyndromes[J].Circulation.ArrhythmiaandElectrophysiology,2019,12(12):1-15.[15]㊀李杰强.基于线阵CCD的微位移传感器设计与研究[D].广州:华南理工大学,2012.[16]㊀刘文倩,沈三民,刘利生,等.基于以太网与FPGA的多通道信号源的系统设计[J].仪表技术与传感器,2019(1):30-33.[17]㊀何能正,董建云,何岸.以太网数据包分段传输技术[J].光通信技术,2013,37(9):24-27.作者简介:李鹏飞(1994 ),硕士研究生,主要研究方向为嵌入式机器视觉㊂E⁃mail:lipengfeihuft@163.com通信作者:卢荣胜(1963 ),教授,博士生导师,主要从事机器视觉和精密测量等方面的研究㊂E⁃mail:rslu@hfut.edu.cn(上接第74页)要求变换采集通道数量和采集速率,该分布式数据采集系统具有较好的实用价值㊂参考文献:[1]㊀韩慧.基于RS485总线的温室环境监测系统[J].仪表技术与传感器,2012(3):64-65.[2]㊀李木国,王延国,孙慧涛.基于EtherCAT总线的串联型分布式据采集系统设计[J].计算机测量与控制,2016,24(6):195-198.[3]㊀童一飞,王红亮,低功耗IEPE传感器数据采集系统的设计与实现[J].电测与仪表,2019,56(5):101-104.[4]㊀唐夕晴,李建闽,佘晓烁.RS485总线接口性能测试仪设计与开发[J].电测与仪表,2018,56(7):142-147.[5]㊀张志,李琮琮,王平欣,等.智能电能表RS485接口设计方案综述[J].电测与仪表,2015,53(5):124-128.[6]㊀白冰.基于485总线的分布式输入输出系统[D].天津:天津大学,2017.[7]㊀吴平,骆朝亮.基于USB的ADS1258传感器信号采集系统[J].软件导刊,2010(6):65-67.[8]㊀金永杰,龙平,熊剑平.24位高精度模数转换器ADS1258的原理及应用[J].电子设计工程,2008(6):61-64.[9]㊀王辉,陈爱生.基于FT2232H的USB2.0数据采集系统设计[J].电子器件,2015(1):144-147.[10]㊀李超.基于FPGA+USB2.0高速数据采集系统的研究与设计[D].武汉:武汉理工大学,2013.[11]㊀TONGXR,SHENGZB.DesignofUARTwithCRCcheckbasedonFPGA[J].AdvancedMaterialsResearch,2012,490-495:1241-1245.作者简介:陈航(1993 ),硕士研究生,研究方向为嵌入式智能仪器㊂E⁃mail:614441509@qq.com通信作者:张会新(1980 ),博士,副教授,研究方向为动态测试技术与仪器㊂E⁃mail:zhanghx@nuc.edu.cn。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ξ基于R S485总线多机通信系统可靠性的研究3刘文怡,李进武(仪器科学与动态测试教育部重点实验室 中北大学,太原030051)[摘要]介绍了R S485总线多机通信的一般构成,分析了影响R S485总线通信可靠性的主要因素,同时提出了相应的提高多机系统通信可靠性的硬件和软件措施。
[关键词]R S485总线;多机通信;可靠性[中图分类号]TN919 [文献标识码]AThe Research of Rel i ab il ity of M ulti-com puterComm un ica tion System V i a RS485BusL I U W en2yi,L I J in2w u(Key L abo rato ry of Instrum entati on Science&D ynam ic M easurem ent,M inistry of Educati onN o rth U niversity of Ch ina,T ai Yuan030051,Ch ina)Abstract:T he paper briefly introduces the i m p lem entati on of m ulti2computer Comm unicati on based on R S485Bus, and analyzes the m ain facto rs w h ich influence the Comm unicati on reliability of R S485Bus,then offers som e co rresponding hardw are and softw are so luti on m ethods w h ich i m p rove the reliability of m ulti2computer system.Key words:R S485Bus;m ulti2computer comm unicati on;reliability1 引 言在分布式系统中,分机常采用多机通信方式,由于R S485总线其结构简单、通信速率高、传输距离远等诸多优点,所以被认为是一种很好的通信模式。
但R S485总线存在自适应、自保护功能脆弱、通信效率低等缺点,在实际应用过程中,若使用不当,R S485接口会出现很多问题,如噪声干扰,总线冲突,通信电路失控,误码率高等问题,严重影响了主机与从机之间可靠的数据通信,以致影响整个系统的可靠性。
因此研究多机系统的通信可靠性至关重要。
2 多机通信系统的实现在由单片机构成的多机串行通信系统中,一般采用主从式结构:从机不主动发送命令或数据,一切都由主机控制。
R S485构成的多机通讯大多是半双工通信方式,在整个系统中只有一个节点为主节点,总线上的所有其他节点都是从节点。
通信方式一般是主节点循环轮询各个节点。
各个从节点都有自己的通信识别号,当主节点的轮询信息中包括自己的通信识别号时,此从节点则对此帧进行应答,其他节点则忽略此帧,不做任何处理。
并且在一个多机通信系统中,只有一台单机作为主机,各台从机之间不能相互通讯,即使有信息交换也必须通过主机转发。
采用R S485构成的多机通讯原理框图如图1所示。
图1 R S-485多机通信的一般模式半双工485芯片除了电源外有两个控制端R E和D E,两个T TL(C M O S)数据接收RO和发送端D I,以及一对R S485信号端A和B,其中A,B分别为差分信号+、-端。
当R E=0且D E=0时,使485芯片R(接收器)打开,D(驱动器)关闭即处于数据接收状态,此时信号通过・21・弹箭与制导学报2005年 Ξ收稿日期:2004209204基金项目:本文得到总装备部预研管理中心资助,项目编号:41317030107作者简介:刘文怡(1970—),男,副教授,主要研究方向:微系统集成技术。
传输线差分信号到达A和B端,经转换后变成T TL(C M O S)信号到达RO端;当R E=1且D E =1时,使接收器R关闭,驱动器D打开即处于数据发送状态,使T TL(C M O S)信号经驱动器平衡后变成差分信号送A和B端;当R E=1且D E=0时,R和D全部关闭处于高阻状态;当R E=0且D E=1时,R和D同时打开,这对半双工接口是不允许的。
发送时,当D I=1,内部驱动电路使A线的电压比B线高(发送逻辑1);接收时,如果A线电压高于B线(至少200mV),则接收电路使RO为高电平(接收到逻辑1)。
3 提高通信可靠性的硬件措施3.1 通信电缆中的信号反射在通信过程中,有两种情况会导致信号反射:阻抗不连续和阻抗不匹配。
阻抗不连续信号在传输线末端突然遇到电缆阻抗突变,信号在这个地方就会引起反射。
消除这种反射的方法是必须在电缆的末端跨接一个与电缆特性阻抗同样大小的终端电阻,使电缆的阻抗连续。
由于信号在电缆上的传输是双向的,因此,在通信电缆的另一端可跨接一个同样大小的终端电阻。
典型双绞线的特性阻抗约1208,终端电阻也应选择1208。
引起信号反射的另一个原因是数据收发器与传输电缆之间的阻抗不匹配。
这种原因引起的反射、主要表现在通信线路处在空闲方式时,整个网络数据混乱。
信号反射对数据传输的影响,归根结底是因为反射信号触发了接收器输入端的比较器,使接收器收到了错误的信号。
要减弱反射信号对通信线路的影响,通常采用噪声抑制和加偏置电阻的方法。
在实际应用中,对于比较小的反射信号、为简单方便,经常采用加偏置电阻的方法。
在通信波特率比较高的时候、在线路上增加偏置电阻是很有必要的。
偏置电阻的连接方法如图2所示。
它的作用是在线路进入空闲状态后,把总线上没有数据时(空闲方式)的电平拉离0电平。
这样一来,即使线路中出现了比较小的反射信号或干扰,挂接在总线上的数据接收器也不会由于这些信号的到来而产生误动作。
偏置电阻的计算方法如下所述:设终端电阻R Z1=R Z2=1208;假设反射信号最大的峰—峰值V ref=0.36V p_p则负半周的电压V ref=0.18V,终端电阻上由反射信号引起的反射电流;I ref=0.18 (120‖120)=3mA。
一般R S485收发器的滞后电压值为50mV,即:(I bias-I ref)×(R Z1‖R Z2)=50mV 则可以计算出偏置电阻产生的偏置电流:I bias=3.83mA5V=I bias(R上拉+R下拉+R Z1‖R Z2) 通过上式可以计算出:R上拉=R下拉=6208图2 偏置电阻连接图 在实际应用中,R S485总线加偏置电阻有两种方法:(1)把偏置电阻平均分配给总线上的每一个收发器。
这种方法给挂接在R S485总线上的每一个收发器加了偏置电阻和一个偏置电压。
(2)在一段总线上只用一对偏置电阻。
这种方法对总线上存在大的反射信号或干扰信号时比较有效。
但偏置电阻的加入,增加了总线的负载。
3.2 避免通信中异常总线冲突在R S485总线构筑的半双工通信系统中,在整个网络中任一时刻只能有一个节点处于发送状态并向总线发送数据,其他所有节点都必须处于接收状态。
如果有2个节点或2个以上节点同时向总线发送数据,将会导致所有发送方的数据发送失败。
因此,在系统的各个节点的硬件设计中应首先力求避免因异常情况而引起本节点向总线发送数据而导致总线数据冲突。
以M CS51系列的单片机为例,因其在系统复位时,I O口都输出高电平。
如果把I O口直接与R S485接口芯片的驱动器使能端D E端相连,会在CPU复位期间D E为高,从而使本节点处于发送状态。
如果此时总线上有其他节点正在发送数据,则此次数据传输将被打断而告失败,甚至引起整个总线因某一节点的故障而通信阻塞,继而影响整个系统的正常运行。
考虑到系统工作的稳定性和可靠性,在每个节点的设计中应将控制R S485总线接口芯片的发送引脚设计成D E端的反逻辑,即控制引脚为逻辑“1”时,D E 端为“0”;控制引脚为逻辑“0”时,D E端为“1”。
应用中,将CPU的I O引脚D EO(控制R S485总线接口芯片的发送引脚)反相和CPU复位引脚R ESET反相相与驱动D E端,这样就可以使 第25卷第3期基于R S485总线多机通信系统可靠性的研究 刘文怡等控制引脚为高或者异常复位时使R S 485接口始终处于接收状态,从而从硬件上有效避免节点因异常情况而对整个系统造成的影响。
其示例接口电路如图3所示。
图3 与CPU 连接图3.3 分布电容对R S 485总线传输性能的影响电缆的分布电容主要由双绞线的两条平行导线产生。
另外,导线和地之间也存在分布电容,虽然很小,但在分析时也不能忽视。
分布电容对总线传输性能的影响,主要是因为总线上传输的是基波信号,信号的表达方式只有“1”和“0”。
在特殊的字节中,例如00000001,信号“0“使得分布电容有足够的充电时间,而信号“1”到来时,由于分布电容中的负荷,来不及放电,(V in +)—(V in -)还大于200mV ,结果使接收器误认为是“0”,而最终导致整个数据帧传输错误。
由于总线上存在分布电容的影响,导致数据传输错误,从而便整个网络性能降低。
解决这个问题有两种方法:(1)降低数据传输的波特率;(2)使用分布电容小的电缆,提高传输线的质量。
3.4 多机通信中“死循环”现象51系列单片机有方便的串行通信功能,但在实际应用中,常因某台从机失去接收主机发出的地址数据的机会,或因某台从机不工作失去接收主机发出的地址数据的机会,或因某台从机不工作而使系统陷入“死循环”程序而不能正常工作。
解决“死循环”程序的基本方法是对“等待”时间加以限制,如以300波特率、方式3通信为例,发送一帧数据的时间是11×1 300≈37m s ,从机发来数据也需要同样的时间,“等待”时间为2×11×1 300≈74m s 。
当“等待”时间超过了74m s ,说明从机不是没有收到信息就是不能工作,可以利用时间判断从机是否正常工作。
通常在74m s 内如果还没有收到从机发来的信息,就再次发送该机的地址数据。
最多可重发十次后,如果还没有收到从机信息,就将此台从机作错误处理,进行下一步程序。
4 提高通信可靠性的软件措施4.1 在协议中增加校验在通信协议中,要保证多机系统中同一时刻只能有一个发送,可以多个同时接收。
为保证通信可靠性,还应对传送中的数据进行校验,常用的校验方法有奇偶校验、累加和校验以及CRC 校验等。
4.2 在软件设计中适当增加延时在主从式数据通信系统中,数据传输可分为多个阶段,无论是主机还是分机,在一次完整的数据交换过程中,总会有将R S 485差动输出状态转换成差分输入状态或由差分输入状态转换成差动输出状态的过程,而每次转换都需一定的时间。