485通信讲解(附案例)
7
6
5
4
3
2
1
0
=68H:特殊报文 =7EH:短帧 =02H:长帧
RS485通讯协议
从机地址 数据含义:从机的本机地址
从机地址范围2 ~126,127为广播地址,0、1号地址保留。从站数目超出29个,
要求使用中继器,同时中继器将占用从机数目。从机的群组地址与本机地址不 同时使用。地址字节最高位为0表示是本机的单机地址,为1表示是群组地址。
机 器 型 号
6
异 或 校 验
变频器至控制器:
RS485通讯协议
短帧(起始字节=7EH)
发送顺序 1 (字节) 控制器至变频器:
2
3
4
控 制 字
5
运行 数据 设定
6
运行 数据 设定
7
异 或 校 验
校验
起 始 字 节
从 控 机 制 地 字 址
字节定义 头 地址 控制区
数据区
发送顺序 1 (字节) 变频器至控制器:
2
3
4
状 态 字
5
实际 运行 数据
6
实际 运行 数据
7
异 或 校 验
校验
起 始 字 节
从 状 机 态 地 字 址
字节定义 头 地址 状态区
数据区
RS485通讯协议
长帧(起始字节=02H)
发送顺序 1 (字节) 控制器至变频器:
2 3 4 5 6 7 8 9 10 11
起 始 字 节
从 功 命 功能 机 能 令 码设 地 码 字 定值 址 号
RS485 通讯
目录
RS485基础 通讯协议 通讯案例 超级终端
RS485基础
通信接口方式 RS485接口:异步,半双工,串行 数据格式 1位起始位、8位数据位、1位停止位、无校验 1位起始位、8位数据位、1位停止位、奇校验 1位起始位、8位数据位、1位停止位、偶校验 波特率 1200bps、2400bps、4800bps、9600bps、19200bps、38400bps、125K 当与现场总线适配器PROFIBUS连接时采用默认数据格式:见上黑粗体
数据帧格式示意图
起始字节 (字节) 从机地址 (字节) 用户数据 异或校验 (字节)
7
6
5
4
3
2
1
0
单机地址或群组地址 =0:单机地址 =1:群组地址
RS485通讯协议
命令字(响应字)+功能码号(2个字节,16BIT)
数据含义:主机发送的命令或从机对命令的应答。 功能码组号范围0~16(BIT8~BIT11),功能码的范围0~99(BIT0~BIT7),参见 TD3000 先发高字节,再发低字节的原则 数据帧格式示意图
命令字(码)
命令字(码) 0 1 2 14 3~13,15 无任务 请求读取功能码参数数据 请求更改功能码参数数据 请求更改功能码参数并存储至EEPROM 预留
功能描述
响应字(码)
响应字(码) 0 1 2~6 7 8 ~ 15
内容描述 无响应 功能码参数操作正确(读取或更改) 预留 无法执行,错误信息用功能码实际值的低字节表示(此时并不返回功能码值) 预留
异 功能 控 控 运行 运行 或 码设 制 制 数据 数据 校 定值 字 字 设定 设定 验
控制区
7 8
字节定义 头 地址 命令区
发送顺序 1 (字节) 变频器至控制器:
2 3 4 5
参数区
6
数据区
9 10
校验
11
起 始 字 节
从 功 响 功能 机 能 应 码实 地 码 字 际值 址 号
异 功能 状 状 实际 实际 或 码实 态 态 运行 运行 校 际值 字 字 数据 数据 验
在短帧中没有参数数据。 过程数据:主机控制命令/从机状态响应、主机运行主设定/从机运行实际值。
数据帧格式示意图
起始字节 (字节) 从机地址 (字节)
功能码操作 命令/响应 (字节)
功能码号 (字节)
功能码设 定/实际值 (字)
控制/状 态字 (字)
主设定/ 实际值 (字)
异或校验 (字节)
参数数据
过程数据
帧头
用户数据
帧尾
RS485通讯协议
特殊报文(起始字节=68H),用于获取从站的软件版本和机器型号
发送顺序 (字节)
1
起 始 字 节
2
从 机 地 址
3
A A H
4
5 5 H
5
A 5 H
6
异 或 校 验
控制器至变频器:
发送顺序 (字节)
Hale Waihona Puke 1起 始 字 节2
从 机 地 址
3
软 件 版 本
4
软 件 版 本
5
控制区 数据区 校验
字节定义 头 地址 命令区
参数区
RS485通讯协议
帧头 帧头:一个字节 帧头是主机发布命令或从机回应主机响应的第一个字节,不论是主机还是从 机,都在收到该字节后开始记录有效数据。 为确保能准确识别报文头,要求两个通信帧之间保持2个字节传输时间以上的 总线空闲时间。
数据帧格式示意图
起始字节 (字节) 从机地址 (字节)
功能码操作 命令/响应 (字节)
功能码号 (字节)
功能码设 定/实际值 (字)
控制/状 态字 (字)
主设定/ 实际值 (字)
异或校验 (字节)
1514 13 12 1110 9 8 7 6 5 4 3 2 1 0
功能码号 功能码组号 命令/响应字(码)
RS485通讯协议
从机在最近一次对主机轮询的应答帧中上报当前故障信息。
通信准备 用从机键盘设置变频器串行接口通信参数:本机地址、波特率、数据格式。 具备RS232的主机可以使用通信接口转换器( OCI-6A)完成到RS485的转换。
RS485通讯协议
数据帧结构 帧头:起始字节、从机地址。 帧尾:校验数据(异或校验)。 用户数据:参数数据和过程数据两部分。 参数数据:功能码操作命令/响应、功能码号、功能码设定/实际值。
RS485通讯协议
响应字(码)
参数操作错误(响应字=7时)内容定义列表
错误号 0 1 2 12 101 其它
内容描述 非法参数号 参数不允许设置(参数只读) 参数数值超限 密码错误 参数数据无法更改(运行中不可更改) 预留
RS485通讯协议
功能码设定/实际值(2个字节,16BIT) 对应功能码号的参数值或错误参数代码。当功能码操作正确时,功能码的实际 返回值用一个字(2个字节)表示;如果功能码操作不正确则用低字节返回操 作错误代码,此时高字节为0;遵循先发高字节,再发低字节的原则
RS485基础
主机为PC RS232 OCI-6A
或
主机为PLC
主机为PC RS232 OCI-6A
RS485
RS485 TD3000 TD3000 单主机单从机
TD3000
TD3000
TD3000
单主机多从机
RS485基础
通信方式 采用主机“轮询”,从机“应答”的点对点通信方式,变频器为从机。 主机使用广播地址发送命令时,从机不允许应答。
三菱fx3u485无协议通讯程序详解(含程序)
串行通讯指令(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再次进入接收等待状态。
RS485通讯基础及通讯方式
RS485通讯基础及通讯方式1、什么是通讯,如图要搞清楚RS485通讯我们要先搞明白什么是通讯,通讯就是两个设备之间0、1代码的传递、0-低电平 1-高电平举例:plc 向变频器从机1和变频器从机2传递数据,首先变频器从机1和变频器从机2设备之间必须通过电缆连接(硬件连接)。
如果变频器从机1和变频器从机设备发送101010这样一串代码,那么变频器从机1就要在他的通讯端口产生如下图所示的高低电平的组合,通过电缆这个介质变频器从机2设备的通讯端口就会接收到A设备发出高低电平的组合,同时就会将接收到的高低电平组合翻译成101010,这就完成了PLC 向两台变频器从机1设备数据的传递。
2、与通讯有关的概念描述:1、全双工与半双工】全双工是通讯端口在发送数据的同时可以接收数据。
而半双工指的是同一时刻通讯端口要么只能发送数据,要么只能接收数据。
举例全双工:打电话时双方都可以说。
半双工:对讲机-同一时刻只能一个人说另一个人听。
单双工:只能是设备发送数据,另一台设备只能接受设备,不具备发送(例如打印机)如图2、通讯速率:通讯速率也叫通讯波特率是1S内通讯端口发送0、1。
代码(或者说是高、低电平)的数量。
举例:我们说通讯速率是9.6kbps,就表示通讯端口每秒发送9600个bit的数据,也就是每秒可以产生9600个高低电平(注意:是高低电平总共加起来9600个)比特传输速率每秒钟通过信道传输的信息量称为比特传输速率,记作rb。
单位是比特/秒(b/s),简称比特率。
3、主从通讯是在一个通讯网络中一个站点是主站,其他站点作为从站。
主站和从站之间可以直接进行数据的传递,但是从站与从站之间不能直接进行数据的传递。
如果需要从站之间交换数据也必须要通过主站进行转发。
如下图所示3、 RS485的接口定义:明白了通讯的基本概念后再理解485通讯就相对容易了,下面我们从通讯介质、通讯方式、通讯类型、物理层四个方面来介绍485通讯。
485通信讲解(附案例)解析
2
3
4
状 态 字
5
实际 运行 数据
6
实际 运行 数据
7
异 或 校 验
校验
起 始 字 节
从 状 机 态 地 字 址
字节定义 头 地址 状态区
数据区
RS485通讯协议
长帧(起始字节=02H)
发送顺序 1 (字节) 控制器至变频器:
2 3 4 5 6 7 8 9 10 11
起 始 字 节
从 功 命 功能 机 能 令 码设 地 码 字 定值 址 号
1 0
RS485通讯协议
响应字定义 控制字 (位)
bit5
值
1 0
含义
停机2状态 非停机2状态
功能描述
变频器执行停机2命令,处于停机状态
bit6
1 0
控制禁止状态 控制允许状态 上位机控制 本地控制方式
到达设定频率/ 速度 未到达设定频率 /速度
因停机1或停机2或变频器故障或异常命令使变 频器停机的状态,需控制字恢复到准备运行状态 使其复位
bit9
1 0
bit10
1 0
变频器只允许本地控制(面板和端子)
RS485通讯协议
响应字位定义 控制字 (位)
bit11
值
1 0
含义 变频器运行状态 变频器停止状态 变频器接受出错
功能描述
bit15
1
0
bit0 bit7~8 bit12~1 4,
变频器接收正确
预留 预留 预留
本位表示来自控制器的通讯帧经 校验出错,控制器应再次发送该 帧。
RS485通讯协议
控制字定义 控制字 (位) bit0 值 1 0 bit1 含义 运行命令 方式0停车 功能描述 起动变频器 减速停车
485通信讲(附案例)
RS485通讯协议
校验和
数据含义:数据帧校验和计算结果。 数据类型:16进制,单字节。 计算方法:连续异或。
数据帧格式示意图
起始字节 (字节)
从机地址 (字节)
功能码操作
命令/响应 (字节)
功能码号 (字节)
功能码设 定/实际值
(字)
控制/状 态字
(字)
主设定/ 实际值
异或校验
(字) (字节)
进行异或计算
RS485通讯协议
响应字定义
控制字 (位)
值
含义
bit1 1 准备工作状态
功能描述 变频器就绪
bit2
0 非准备工作状态 1 变频器输出允许
bit3
0 变频器禁止输出 1 变频器有故障
0 变频器无故障
以所能达到的最快方式停车
bit4 1
停机1状态
变频器执行停机1命令,处于停机状态
0 非停机1状态
RS485通讯协议
起始字节 (字节)
从机地址 (字节)
功能码操作
命令/响应 (字节)
功能码号 (字节)
功能码设 定/实际值
(字)
控制/状 态字
(字)
主设定/ 实际值
异或校验
(字) (字节)
帧头
参数数据
用户数据
过程数据
帧尾
RS485通讯协议
特殊报文(起始字节=68H),用于获取从站的软件版本和机器型号
发送顺序
(字节) 1 2 3 4 5 6
RS485 通讯
目录
RS485基础 通讯协议 通讯案例 超级终端
RS485基础
通信接口方式 RS485接口:异步,半双工,串行
485通信讲解(附案例)
8 ~15 预留
RS485通讯协议
响应字(码)
参数操作错误(响应字=7时)内容定义列表
错误号
内容描述
0 非法参数号
1 参数不允许设置(参数只读)
2 参数数值超限
12 密码错误
101 参数数据无法更改(运行中不可更改)
其它 预留
RS485通讯协议
功能码设定/实际值(2个字节,16BIT) 对应功能码号的参数值或错误参数代码。当功能码操作正确时,功能码的实际 返回值用一个字(2个字节)表示;如果功能码操作不正确则用低字节返回操 作错误代码,此时高字节为0;遵循先发高字节,再发低字节的原则
7 6 5432 1 0
RS485案例
应用案例
说明:使用通信控制变频器时,请先检查硬件是否连接好。同时,将变频器 的通信数据格式,波特率,以及通信地址设置好。如果是用在PROFIBUS上, 还需选定PPO参数(F9参数组)。本文例子中默认变频器使用长桢进行通信 。
1、以50Hz运行2#变频器。(此例需要将变频器频率设定成F0.03=6)
数据帧格式示意图
起始字节 (字节)
从机地址 (字节)
功能码操作 命令/响应 (字节)
功能码号 (字节)
功能码设 定/实际值
(字)
控制/状 态字
(字)
主设定/ 实际值
(字)
异或校验 (字节)
1514 13 12 1110 9 8 7 6 5 4 3 2 1 0
RS485通讯协议
故障代号
故障代号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
=68H:特殊报文 =7EH:短帧 =02H:长帧
RS485通讯协议
从机地址 数据含义:从机的本机地址 从机地址范围2 ~126,127为广播地址,0、1号地址保留。从站数目超出29个, 要求使用中继器,同时中继器将占用从机数目。从机的群组地址与本机地址不 同时使用。地址字节最高位为0表示是本机的单机地址,为1表示是群组地址。
MODBUS实例485通讯解析
用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通信原理图及程序实例详解
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 串⼝连接起来,并且使⽤完全相同的异步串⾏通信协议。
RS485通讯
精通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通信讲解(附案例)解析
数据帧格式示意图
起始字节 从机地址 (字节) (字节)
用户数据
异或校验 (字节)
76543210
单机地址或群组地址 =0:单机地址 =1:群组地址
RS485通讯协议
命令字(响应字)+功能码号(2个字节,16BIT)
数据含义:主机发送的命令或从机对命令的应答。
功能码组号范围0~16(BIT8~BIT11),功能码的范围0~99(BIT0~BIT7),参见 TD3000
响应字定义
控制字 (位) 值
bit5
1
含义
停机2状态
功能描述
变频器执行停机2命令,处于停机状态
0
非停机2状态
bit6
1
控制禁止状态
因停机1或停机2或变频器故障或异常命令使变
频器停机的状态,需控制字恢复到准备运行状态
0
控制允许状态
使其复位
bit9
1 上位机控制
0 本地控制方式
bit10
1
到达设定频率/
数据帧格式示意图
起始字节 (字节)
从机地址 (字节)
功能码操作 命令/响应 (字节)
功能码号 (字节)
功能码设 定/实际值
(字)
控制/状 态字
(字)
主设定/ 实际值
异或校验
(字) (字节)
1514 13 12 1110 9 8 7 6 5 4 3 2 1 0
功能码操作错误代码 功能码设定/实际值
RS485通讯协议
帧头 帧头:一个字节 帧头是主机发布命令或从机回应主机响应的第一个字节,不论是主机还是从 机,都在收到该字节后开始记录有效数据。 为确保能准确识别报文头,要求两个通信帧之间保持2个字节传输时间以上的 总线空闲时间。
485通讯协议怎么使用(传统光电隔离的典型电路实例)
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的数据发送有两个中断标志,一个是发送数据寄存器空标志,一个是发送完毕标志。
