导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→高手们,来看看RS-485的问题,有深度,特急!!!!!!![zhenge]

 *第25051篇: 高手们,来看看RS-485的问题,有深度,特急!!!!!!!!!

  
楼 主:zhenge 2004年8月25日11:29
 高手们,来看看RS-485的问题,有深度,特急!!!!!!!!!

高手们,来看看RS-485的问题,有深度,特急!!!!!!!!!

请问用RS-485收发器,51单片机连成的总线系统,为了收发准确,打算使用MODBUS协议,是否需要增加一个MODBUS协议控制器,来完成物理层

以上的协议,(因为RS-485收发器仅仅只完成电平的转换)还是只使用软件来在51单片机完成MODBUS协议,那样工程量太大了,另外我没有查

到MODBUS协议控制器,如果大虾知道请赐教方法及芯片型号。


Modbus通信编程

 


 

1. Modbus 协议简介

Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信

。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回

应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。

当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回

应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也

扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

1.1 在Modbus网络上转输

标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem

组网。

控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。

典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。

主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则

不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。

从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从

设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。

1.2 在其它类型网络上转输

在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。这样在单独的通信过程中,控制器既可作为主设备也可

作为从设备。提供的多个内部通道可允许同时发生的传输进程。

在消息位,Modbus协议仍提供了主—从原则,尽管网络通信方法是“对等”。如果一控制器发送一消息,它只是作为主设备,并期望从从设备

得到回应。同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。

1.3 查询—回应周期

 
.查询

查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备

读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了

一种验证消息内容是否正确的方法。

.回应

如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:象寄存器值或

状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备

确认消息内容是否可用。

 

2. 两种传输方式

控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。用户选择想要的模式,包括串口通信参数(波特率、校

验方式等),在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。

ASCII模式

:
 地址
 功能代码
 数据数量
 数据1
 ...
 数据n
 LRC高字节
 LRC低字节
 回车
 换行
 

 

RTU模式

地址
 功能代码
 数据数量
 数据1
 ...
 数据n
 CRC高字节
 CRC低字节
 

 

所选的ASCII或RTU方式仅适用于标准的Modbus网络,它定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和

如何解码。

在其它网络上(象MAP和Modbus Plus)Modbus消息被转成与串行传输无关的帧。

 
 

3. Modbus消息帧

两种传输模式中(ASCII或RTU),传输设备以将Modbus消息转为有起点和终点的帧,这就允许接收的设备在消息起始处开始工作,读地址分配

信息,判断哪一个设备被选中(广播方式则传给所有设备),判知何时信息已完成。部分的消息也能侦测到并且错误能设置为返回结果。

 

4. 错误检测方法

标准的Modbus串行网络采用两种错误检测方法。奇偶校验对每个字符都可用,帧检测(LRC或CRC)应用于整个消息。它们都是在消息发送前由

主设备产生的,从设备在接收过程中检测每个字符和整个消息帧。

用户要给主设备配置一预先定义的超时时间间隔,这个时间间隔要足够长,以使任何从设备都能作为正常反应。如果从设备测到一传输错误,

消息将不会接收,也不会向主设备作出回应。这样超时事件将触发主设备来处理错误。发往不存在的从设备的地址也会产生超时。

  
2楼:eastzsp 2004年8月25日13:28
 软件做有什么难度??
  
3楼:guest 2004年9月21日15:54
 yfhxtdx
yfhxtdx
  
4楼:guest 2004年9月4日15:07
 你可以做一个控制器,也就是一段子函数来处
你可以做一个控制器,也就是一段子函数来处理MODBUS协议,好像难度没你想的那么大,你做过通信开发吗?

>>>>>>对该主题发表你的看法

本主题贴数4,分页: [第1页]


[上一篇主题]:供应多种品牌编程器,仿真器,13332986029  李小姐

[下一篇主题]:方舟CPU指令集手册中文版免费下载