485通信讲解(附案例)
- 格式:pptx
- 大小:1.47 MB
- 文档页数:42
rs485原理(一)RS485通信协议RS485是一种常用的串行通信协议,用于在远距离通信中传输数据。
它具有高可靠性、抗干扰能力强等特点,被广泛应用于工业控制、自动化、仪器仪表等领域。
本文将从浅入深介绍RS485通信协议的相关原理,帮助读者更好地理解和应用。
1. RS485基础概念RS485是一种差分信号通信协议,即使用两个相反的电信号来表示数据位的“0”和“1”。
它可以同时支持半双工和全双工通信,允许多个节点连接在同一总线上进行通信。
2. RS485物理层连接RS485通信协议的物理层使用一对绞线进行连接,其中一根线为正线(A)、另一根线为负线(B)。
这样设计的目的是为了减小信号的传输噪声和干扰。
3. RS485传输方式RS485协议支持两种不同的传输方式:单点通信和多点通信。
单点通信在单点通信中,RS485总线上只有一个主节点与一个从节点进行通信。
主节点负责发送指令,从节点负责接收并执行指令。
这种方式适用于简单的控制系统,如智能家居等。
多点通信在多点通信中,RS485总线上可以连接多个主节点和从节点,节点之间通过地址进行区分。
主节点可以发送指令给指定的从节点,从节点也可以发送数据给主节点。
这种方式适用于复杂的工业自动化系统,如工控行业等。
4. RS485通信协议RS485通信协议定义了数据帧的格式和通信规则。
数据帧格式RS485通信使用统一的数据帧格式,包括起始位、数据位、校验位和停止位。
典型的数据帧格式为1个起始位、8个数据位、1个校验位和1个停止位。
通信规则RS485通信遵循“主—从”通信模式,主节点负责发起通信,从节点被动接收和响应。
主节点发送数据后,从节点通过校验位判断数据是否正确,并返回响应信息。
5. RS485的优势和应用优势RS485通信协议具有以下优势:•高可靠性:使用差分信号传输,能够有效抵抗干扰和噪声。
•长距离通信:RS485总线可以支持长达1200m的通信距离。
•多点通信:多个节点可以连接在同一总线上进行通信,灵活且经济。
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信号,对于情况比较复杂的工业环境最好是选用防浪涌带隔离珊的产品。
(2)通过PCI多串口卡,可以直接选用输出信号为RS485类型的扩展卡。
1、485总线布线和采用什么样的线?RS-485总线最好采用终端匹配的总线型结构拓扑结构,用一条单一、连续的信号通道总线将各个节点串联起来,从总线到每个节点引出线长度应尽量短,以便引出线中的反射信号对总线影响最低。
应该采用d、e和f的接法,总线式,而不能采用星型接法。
用RS485端口控制TVF2000使用说明:一、硬件连接:1.RS485/RS485:(1)终端设备:将J2用终端方式短接;(2)非终端设备:将J2用非终端方式短接;(3)A、B、AGND对接;(4)如果使用屏蔽线,SCR对接。
2.RS485/RS232(PC机):(1)用RS485/RS232转换器;(2)PC机串口与转换器RS232口连接;(3)TVF2000的CN1与转换器的RS485口的A、B、AGND连接。
二、用MODBUS与TVF2000通讯(RTU方式):1.TVF2000键盘设置:a)键盘菜单设置说明:i.1001=10:外端子1用通讯控制;ii.5005=2:标准MODBUS通讯方式;iii.5201=1-247:从机号(缺省=1);iv.5202=5:通讯速度为9600bps(缺省=5);v.5203=0:无效验(缺省=0);vi.其它=缺省值;b)键盘具体操作:i.9952 = 1:参数初始化;ii.1001 = 10;iii.5005 = 2;这样设置后,就可以与TVF2000通讯了。
2.TVF2000使用的MODBUS命令:a)读存储寄存器:03命令;b)写单个寄存器:06命令;c)写多个寄存器:16命令;3.MODBUS单寄存器写入命令说明(其它说明见附录):a)主机发送:i.[地址]:从机地址1-247;ii.[命令]:06,单寄存器写入命令;iii.[寄存器地址_H]:寄存器地址高8位;iv.[寄存器地址_L]:寄存器地址低8位;v.[数据_H]:写入数据高8位;vi.[数据_L]:写入数据低8位;vii.[CRC_H]:CRC效验高8位;viii.[CRC_L]:CRC效验低8位;b)从机返回(正常):i.[地址]:从机地址1-247(相同地址);ii.[命令]:06,单寄存器写入命令;iii.[寄存器地址H]:寄存器地址高8位;iv.[寄存器地址L]:寄存器地址低8位;v.[数据_H]:写入数据高8位;vi.[数据_L]:写入数据低8位;vii.[CRC_H]:CRC效验高8位;viii.[CRC_L]:CRC效验低8位;c)通讯具体操作(菜单1102=7为例):i.主机发送:[01][06][04][4E][00][07][CRC_H][CRC_L];ii.从机返回(正常):[01][06][04][4E][00][07][CRC_H][CRC_L];4.用通讯命令设置菜单值(调速前必须设置):i.1102=7;外部1有效;ii.1103=8;由串行通讯给定;iii.0002=初始频率;如果不设置,为菜单1104的值;iv.0001=0x06;命令寄存器:0001;v.0001=0x0f;vi.0001=0x2f;启动;vii.0001=0x6f;到达设定频率;5.用通讯命令调速(给定寄存器1:0002):i.0002=0-20000;调速:0对应1104的值,20000对应1105的值;ii.通过03命令读取状态寄存器(0004)的值;iii.通过03命令读取保持寄存器(0005、0006)的值;iv.用通讯命令停车:0001 = 0x06;6.7.给定寄存器1:0002(MODBUS为40002)说明如下:i. 输出频率与给定值成正比例;ii. 输出频率=(0002的值)*(1105的值)/20000;8.状态寄存器:0004(MODBUS为40004)说明如下:9.保持寄存器:0005(MODBUS为40005):实际输出频率(单位:Hz);10.保持寄存器:0006(MODBUS为40006):实际输出电流(单位:0.1A);11.状态寄存器、保持寄存器均为只读;12.如果想保存通讯设置,必须用键盘设置菜单1607=1。
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 内部的物理结构,采⽤的是平衡驱动器和差分接收器的组合,抗⼲扰能⼒也⼤⼤增加。
传输距离最远可以达到 1200 ⽶左右,但是它的传输速率和传输距离是成反⽐的,只有在 100Kb/s 以下的传输速度,才能达到最⼤的通信距离,如果需要传输更远距离可以使⽤中继。
可以在总线上进⾏联⽹实现多机通信,总线上允许挂多个收发器,从现有的 RS485芯⽚来看,有可以挂 32、64、128、256 等不同个设备的驱动器。
RS485 的接⼝⾮常简单,与 RS232 所使⽤的 MAX232 是类似的,只需要⼀个 RS485转换器,就可以直接与单⽚机的 UART 串⼝连接起来,并且使⽤完全相同的异步串⾏通信协议。
伺服电机modbus 485控制案例(实用版)目录1.伺服电机概述2.Modbus 485 简介3.伺服电机 Modbus 485 控制案例详解4.案例优点及应用范围正文1.伺服电机概述伺服电机是一种将电脉冲转换为角位移的电机,具有转速高、精度高、无刷设计等优点。
在自动化控制系统中,伺服电机广泛应用于位置控制、速度控制和力矩控制等领域。
2.Modbus 485 简介Modbus 485 是一种串行通信协议,其具有传输距离远、抗干扰能力强、通信速率快等特点。
在工业自动化领域,Modbus 485 广泛应用于 PLC、变频器、传感器等设备之间的通信。
3.伺服电机 Modbus 485 控制案例详解在本案例中,我们以一款国产伺服电机为例,通过 Modbus 485 协议实现对其控制。
具体操作步骤如下:(1)连接硬件:将伺服电机与 PLC 通过 Modbus 485 通讯线相连接,同时连接电源线。
(2)配置 PLC:在 PLC 编程软件中,设置 Modbus 485 通信参数,包括波特率、地址等。
(3)编写程序:在 PLC 中编写控制程序,实现对伺服电机的启动、停止、转速调节等功能。
(4)调试运行:下载 PLC 程序至现场,通过 Modbus 485 协议对伺服电机进行控制,观察其运行状态。
4.案例优点及应用范围通过 Modbus 485 协议实现对伺服电机的控制,具有以下优点:(1)通信稳定:Modbus 485 协议具有较强的抗干扰能力,可确保长时间稳定通信。
(2)控制灵活:通过 PLC 编程,可实现对伺服电机的各种控制需求,如位置控制、速度控制等。
(3)易于扩展:Modbus 485 协议支持多台设备通信,便于系统扩展。
精通RS485通讯系列教程一、通讯基础知识1.1什么是通讯要搞清楚RS485通讯我们要先搞明白什么是通讯,通讯就是两个设备之间0、1代码的传递,0-低电平1-高电平。
举例:A设备向B设备传递数据,首先A设备和B设备之间必须通过电缆连接(硬件连接)。
如果A设备要向B设备发送101010这样一串代码,那么A设备就要在他的通讯端口产生如下图所示的高低电平的组合,通过电缆这个介质B设备的通讯端口就会接收到A设备发出高低电平的组合,同时就会将接收到的高低电平组合翻译成101010,这就完成了A设备向B设备数据的传递,B 设备向A设备数据传递也是同样的道理。
与通讯有个的概念。
【全双工与半双工】全双工是通讯端口在发送数据的同时可以接收数据。
而半双工指的是同一时刻通讯端口要么只能发送数据,要么只能接收数据。
举例:全双工-打电话时双方都可以说。
半双工:对讲机-同一时刻只能一个人说另一个人听。
【通讯速率】通讯速率也叫通讯波特率是1S内通讯端口发送01代码(或者说是高低电平)的数量。
举例:我们说通讯速率是9.6kbps,就表示通讯端口每秒发送9600个bit的数据,也就是每秒可以产生9600个高低电平(注意:是高低电平总共加起来9600个)。
【主从通讯】是在一个通讯网络中一个站点是主站,其他站点作为从站。
主站和从站之间可以直接进行数据的传递,但是从站与从站之间不能直接进行数据的传递。
如果需要从站之间交换数据也必须要通过主站进行转发。
如下图所示1.2、485通讯定义明白了通讯的基本概念后再理解485通讯就相对容易了,下面我们从通讯介质、通讯方式、通讯类型、物理层四个方面来介绍485通讯。
通讯介质:屏蔽双绞线,也就是我们通常用的带有屏蔽层的两心电缆如下图所示。
通讯方式:半双工通讯类型:主从通讯物理层:9针接口,需要注意的是通常情况下485通讯的9针接口,只需要将两芯电缆接到3号脚和8号脚上,3是信号“﹢”,8是信号“-”。
485通讯协议怎么使用(传统光电隔离的典型电路实例)RS485总线标准是工业中(考勤,监控,数据采集系统)使用非常广泛的双向、平衡传输标准接口,支持多点连接,允许创建多达3两个节点的网络;最大传输距离1200m,支持1200 m时为100kb/s的高速度传输,抗干扰能力很强,布线仅有两根线很简单。
RS485通信网络接口是1种总线式的结构,上位机(以个人电脑为例)和下位机都挂在通信总线上,RS485物理层的通信协议由RS485标准和PLC的多机通讯方式。
传统光电隔离的典型电路VDD与+5V1(VCC485)是两组不共地的电源,一般用隔离型的DC-DC来实现。
通过光耦隔离来实现信号的隔离传输,ISL3152EIBZ与MCU系统不共地,完全隔离则有效的抑制了高共模电压的产生,大大降低485的损坏率,提高了系统稳定性。
但也存在电路体积过大、电路繁琐、分立器件过多,传输速率受光电器件限制等缺点,对整个系统的稳定性也有一定影响。
第一步,配置好串口发送、接收端引脚和485控制引脚;因为RXD1引脚相对于STM32芯片来说是接收外来数据,所以设置为输入;TXD1引脚相对于STM32芯片来说是对外发送数据,所以设置为输出;TRE1 引脚是对外发送1或0高低电平命令,所以设置为输出;/******************************************************************函数名称:UART2Init*功能描述:对串口2参数进行设置、485控制端口初始化**输入参数:无*返回值:无*其他说明:无*当前版本:v1.0*-----------------------------------------------------------------*******************************************************************/void UART2Init(void){GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能外设时钟//GPIO结构的成员设置如下:/*--------------485控制端初始化------PA1----------*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_Init(GPIOA,GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //485_TXGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出GPIO_Init(GPIOA,GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //485_RXGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入GPIO_Init(GPIOA,GPIO_InitStructure);//串口的结构成员设置如下:USART_ART_BaudRate = 9600;USART_ART_WordLength = USART_WordLength_8b;USART_ART_StopBits = USART_StopBits_1;USART_ART_Parity = USART_Parity_No;USART_ART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_ART_Mode = USART_Mode_Tx | USART_Mode_Rx;USART_Init(USART2,USART_InitStructure);USART_Cmd(USART2,ENABLE);/*方法一:清发送完成标志*/// USART_ClearFlag(USART3,USART_FLAG_TC);/*方法二:获取串口1状态标志位*/USART_GeTITStatus(USART1,USART_FLAG_TC);}第二步:发送数据这里需要注意的是:/* CPU的小缺陷:串口配置好,如果直接Send,则第1个字节发送不出去如下两个方法语句解决第1个字节无法正确发送出去的问题*/方法一:USART_ClearFlag(USART3,USART_FLAG_TC); /*清发送完成标志,Transmission Complete flag */方法二:/*获取串口1状态标志位*/USART_GeTITStatus(USART1,USART_FLAG_TC);刚上电时出现乱码的原因:while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)== RESET); // USART_FLAG_TXE---检测发送数据寄存器空标志位如果USART_FLAG_TC---发送完成标志位(1)当设为USART_FLAG_TXE---检测发送数据寄存器空标志位为空,但是发送移位寄存器不为空,数据还没有完全的发送出去,又有数据就被写进来了,所以就会容易出现乱码;(2)当设为USART_FLAG_TC检测发送完成标志位为空,即发送移位寄存器为空,数据才真正的发送出去,因此此时又有数据被写进来也不会发生乱码1STM32的数据发送有两个中断标志,一个是发送数据寄存器空标志,一个是发送完毕标志。
三菱FX2N PLC 串行通讯指令(FNC 80 RS )串行通讯指令(FNC 80 RS )1、指令格式:[RS D0 K8 D10 K8]发送数据帧起始地址和数目J接收数据帧起始地址和数目2、功能和动作:% RS指令是为使用RS232C、RS-485功能扩展板及特殊适配器,进行发送和接收串行数据的指令。
探传送的数据格式在后面讲述的特殊寄存器D8120设定。
RS指令驱动时即使改变D8120的设定,实际上也不接收。
※在只发送的系统中,可将接收数设定为K0o (K表示常数)%在只接收的系统中,可将发送数设定为K0o%在程序中可以多次使用RS指令,但在同一时间必须保证只有一个RS指令被驱动。
%在一次完整的通讯过程中,RS指令必须保持一直有效,直至接收数据完成。
D8120说明:%根据MD320的通讯协议,无帧头和帧尾,则(bit9,bit8 )= (0,0)。
% bit13〜15是计算机链接通讯时的设定项目,使用RS指令时必须设定为0。
% RS485 未考虑设置控制线的方法,使用FX2N-485-BD、FX0N-485ADP 时,(bit11,bit10 )= (1,1 )o%若PLC和变频器之间的通讯参数如下:8位数据位,无校验,2位停止位,波特率9600,无帧头无帧尾,无协议模式,则D8120=H0C89 (H 表示16 进制)(0000 1100 1000 1001B )M8002| ——|| ------------------------------- [ MOV H0C89 D8120 ]5、相关标志位:一.基本指令介绍探M8122 :数据发送请求标志当PLC 处于接收完成状态或接收等待状态时,用脉冲触发M8122 ,将使得从DO 开始的连续8个数据被发送。
当发送完成后,M8122自动被复位。
当 RS 指令的驱动输入 X0变为ON 状态时,PLC 就进入接收等 待状态。
探M8123 :数据接收完成标志当M8123置位时,表明接收已经完成,此时需要将接收到的数据从接受缓冲区转移到用户指定的数据区, 然后手工复位M8123。