当前位置:首页 >> 信息与通信 >>

一种基于FPGA的Modbus通信协议的接口设计与应用


2013 年 第3 期

仪 表 技 术 与 传 感 器
Instrument Technique and Sensor

2013 No. 3

一种基于 FPGA 的 Modbus 通信协议的接口设计与应用
曹建锋, 陈 星, 王明智
( 大连理工大学机械工程学院 , 辽宁大连 1160

24 ) 摘要: 文中针对远程视频监控配置的问题 , 设计了一种基于 FPGA 实现的 Modbus 协议的通信接口。 通过对 Modbus 通信协议分析, 并应用了 FPGA 自顶向下的模块化设计思想 , 对该接口进行了子模块的划分 、 设计、 仿真和验证。 结果表 明: 这种通信接口可以很好完成视频监控中图像传感器的远程配置 , 并且具有较高的可靠性 、 灵活性和稳定性。 关键词: 视频监控; FPGA; Modbus 中图分类号: TP216 文献标识码: A 文章编号: 1002 - 1841 ( 2013 ) 03 - 0079 - 02

Design and Application of Modbus Communication Protocol Interface Based on FPGA
CAO Jianfeng, CHEN Xing, WANG Mingzhi ( School of Mechanical Engineering, Dalian University of Technology, Dalian 116024 , China) Abstract : This paper designed a sort of Modbus protocol communication interface based on FPGA, pinpointing at the problem of the remote video monitoring configuration problem. The submodule division, design, simulation and verification of the interface were realized throughout the analysis of the Modbus communication protocol and the application of FPGA topdown modular design concept. The results show that, this communication interface can complete remote configuration of the image sensor in the video monitoring in a superior quality with a high reliability, flexibility and stability. Key words: video monitoring; FPGA; Modbus 0 引言 随着科学技术的发展和公共安全需求的提高 , 视频监控系 统在工业生产和日常生活中的应用越来越广泛 。 视频监控系 统一般包括图像采集、 数据处理、 传输、 系统控制等, 其中图像 采集是整个视频监控系统的前提 , 采集一帧好的图像对后端的 图像处理起着重要的作用 。 现有的大多视频监控系统中存在 — —图像传感器的配置一旦完成则在应用中不方 这样的问题— 便修改, 这样有时会影响图像采集的效果 。因此提出了一种基 于 FPGA 实现的 Modbus 协议的通信接口, 并且由于 FPGA 开发 成本低等优点和鉴于 Modbus 协议是一种简单、 开放、 周期短、 帧格式紧凑、 应用十分广泛的工业现场总线 , 所以该接口具有 很好的经济性和通用性 。 监控计算机可以通过现场总线技术 远程访问该接口, 实现了对图像传感器配置的在线修改 。 1 Modbus 通信协议 现场总线技术是 20 世纪 80 年代中期发展的一种先进工 业控制方 式, 现 在 已 经 广 泛 应 用 于 汽 车、 工 业 等 领 域。 其 中 Modbus 通信协 议 是 最 常 用 的 协 议 之 一 , 其通讯模式主要分 ASCII、 RTU( Remote Terminal Unit ) 等。 其中 ASCII 模式是将 1 个字节分为 2 个 ASCII 字符发送; RTU 模式以十六进制传输数 1 个字节就是 1 帧, 据, 因此 RTU 传输数据的效率更高 - 232 /485 进行通信, 因此被大多数厂家使用 。 一个典型的 Modbus 协议 RTU 模式数据包格式包括开始标 CRC 校验码、 志、 地址、 功能码、 数据、 结束标志。主机发送数据
图1 收稿日期: 2012 - 03 - 13 收修改稿日期: 2012 - 12 - 26 功能模块连接图
[1 ]

包开始于 1 个至少 3. 5 帧的时间间隔, 然后被发送的第 1 个字 在同一个网络中有 1 个主机和最多达 255 台 节是从机的地址,
[2 ] Mod从机, 每个从机的地址编码为 1 ~ 255 ; 第 2 个是功能码,

bus 协议定义了 255 个功能码, 其中大多功能码是用于异常应 答; 在最后 1 个传送的字符后面, 至少需要 3. 5 帧的时间间隔 标志着消息的结束。 接口主要实现 Modbus 协议的读写功能, 因此文中重点介 绍读写时的 Modbus 通信命令格式。Modbus 通信过程中发送和 接收的数据包由若干帧组成 , 协议定义了这些帧的意义 , 控制 就能与在同一网 器只要按照协议解释其接收和发送的帧数据 , 络中采用同样协议的控制器实现通信 。 当主机发送 1 个数据 4 帧为主机欲 包时, 第 1 帧为从机地址, 第 2 帧为功能码, 第 3、 访问的从机的起始寄存器地址 , 最后 2 帧为 16 位 CRC 校验码。 2、 3 帧及最后 2 帧的意 对任何一个 Modbus 协议数据包, 其第 1 、 义都是相同的, 其他帧是根据功能码来定的 。 2 功能模块连接图 接口各模块关系示意图如图 1 所示。

, 并且

PC 机可以采用 RS 该通信的帧格式与串口通信的帧格式相同 ,

接口的设计采用 Cyclone Ⅱ 系列中的 FPGA 芯片来完成。

80

Instrument Technique and Sensor

Mar. 2013

FPGA 芯片选用 EP2C5Q208C8 , 设计中, 它具有 4 608 个逻辑单 元, 内部 RAM 达 119 808 位。 通过实验验证, 这些丰富的资源 能够满足该设计各个模块的实际需求 。同时, 设计中采用了模 块化设计思想, 这样仿真测试更加容易 , 并且代码维护和升级 更加便利。通过对 Modbus 通信过程的分析, 给出以下主要模 块: ( 1 ) 波特率发生器。 该模块的功能是实现对 Modbus 通信 协议中数据传输速度的控制 , 上位机串口收发软件的波特率是 1 200 bit / s - 115 200 bit / s, 可以根据传输速度的要求选择合适 的波特率。 ( 2 ) 接收模块。由于 Modbus 的数据传输是基于 RS - 232 / 485 串行通信, 为了将数据写入 RAM 中, 首先需要把引脚 RX 接收串行数据转成并行数据 , 同时该模块可以完成对数据的缓 存。 ( 3 ) 发送模块。由于数据传输需要按位进行 , 因此在发送 数据时, 首先应将并行数据转换成串行数据 , 通过引脚 TX 发送 进而符合传输的要求。 串行数据, ( 4 ) CRC 校验模块。该模块完成从机对主机发过来的数据 包进行 CRC 校验, 并且还要对从机发送给主机的数据包进行 CRC 计算, 并附在数据包的后面发给主机 。 其中, 计算 CRC 采 用的是系数为 0XA001 的多项式。虽然计算时间比查表法稍微 长一点, 但是可以节省内存资源 。比如查表法计算 CRC 需要一 个数组来存放所有可能的 CRC 结果值, 而 FPGA 内部资源有 限, 因此采用多项式进行 CRC 校验对 FPGA 来说是很重要的。 该模块的 RTL 视图如图 2 所示。

进行比较, 若不同则表明接收的数据包错误 , 将接收的功能码 最高位置 1 , 即功能码大于 127 。 ( 6 ) SCCB 总线控制模块。目前, 一般的 CMOS 图像传感器 都采用 SCCB 总线作为控制总线, 该总线可以工作在两线方式 SIO_data 是双向数据线。 该模块 下, 其中 SIO_clk 是时钟信号, 的功能是将 RAM 的数据配置到相应的图像传感器的寄存器 则立即按照接收到的 中。从机一旦接收到主机发送的数据包 , 数据来重新配置图像传感器 。 3 验证 在 Quartus II 8. 1 环境下, 通过 Verilog 硬件语言来配置 FPGA 实现 Modbus 通信协议, 并且通过 Modelsim6. 2 来进行仿真 FPGA 实现的接口 验证和最后进行板级验证 。以 PC 机为主机, 为从机, 为了用 RS - 485 总线进行通信, 首先 PC 机要通过标准 的 RS - 232 / RS - 485 转换器进行接口转换。 并用 VB. NET 编 写上位机调试软件, 该软件功能包括端口的选择 、 通信常用波 特率的选取和 ModbusRTU 等。其中 ModbusRTU 功能是计算待 并附在数据包后面, 组成 1 个 Modbus 协 发送数据包的 CRC 值, 主 议支持的数据包。图 3 分别给出了在不同情况通信过程中 , 机发送和接收数据包。

图3

Modbus 协议读写功能的实现

首先通过 ModbusRTU 功能, 实现构建 Modbus 协议支持的 数据包( 即主机发送给从机的数据包 ) 。 以写多个连续的寄存 器为例, 在图 3 第 3 个视图中, 第 1 个窗口中的数据包是主机发
图2 CRC 校验模块

送给从机的数据包, 第 2 个窗口中的数据包是从机发送给主机 的数据包。通信开始时, 首先由主机 ( PC) 向从机发送地址 01 , 同一个网络中的所有从机都会接收地址并与本机地址比较 , 若 与自己的地址不同则不接收其余帧 , 只有地址是 01 的从机开 始接收数据包。其中第 1 帧 01 是从机的地址; 10 是功能码, 其 功能是写多个连续的寄存器 ; 接下来的 0000 是寄存器的起始 地址, 后面的 3A04 ~ 1717 是要写入寄存器的数据 , 每个数据占 用 2 个字节。从机将接收到的数据放到相应的 RAM 中, 并进 行一个完整包的结束判断 , 在这里两帧之间的时间超过 3. 5 帧 认为是一个数据包的结束或起始 。下一帧数据即为地址帧 , 所 有的从机都将接收, 因此在一个数据包中, 帧与帧的间隔不能 超过 3. 5 帧, 否则将可能引发通信出错 。 一个完整数据包后面 的 2 个字节是 CRC 校验码, 该码与 FPGA 内部生成的 CRC 校 验码进行比较, 由于 CRC 校验的准确率高, 若两者相同, 则表示 收到了一个正确的数据包 。从机按照接收到功 ( 下转第 84 页)

CRC 校验模块中每个输入输出引脚含义如表 1 所示。 表1
名称 clk rst_n outdata_end send_crc_begin send_data[ 7. . 0] send_crc_over crc_result[ 15. . 0]

CRC 校验模块引脚描述
类型 输入 输入 输入 输入 输入 输出 输出 功能 时钟信号( 50M) 复位信号 数据传输结束 CRC 校验开始标志 需要校验的数据 CRC 校验结束标志 CRC 校验值

( 5 ) RAM 写控制模块。该模块设计了 512 个字节的 RAM, 监控中心可将摄像头中修改的寄存器地址和数据通过 Modbus 通信方式写到该 RAM 中, 这样便于实现图像传感器配置 。 同 时, 该模块将接收到数据包的 CRC 值与 FPGA 生成的 CRC 值

84

Instrument Technique and Sensor

Mar. 2013

[ 2] 樊昌信, 张甫翊, 徐炳祥, 等. 通信原理. 5 版. 北京: 国防工业出版 2001. 社, [ 3] URKNOWITZ H. Energy detection of unknown deterministic signals. Proc. IEEE, 1967 , 55. [ 4] CABRIC D J, MISHRA S M, BRODERSEN R W. Implementation issues in spectrum sensing for cognitive radios. Conference Record of the ThirtyEighth Asilomar Conference on Signals,System and Com2004. puters, [ 5] CLANCY T C, ARBAUGH W A. Measuring interference temperature. 2006. Virginia tech symposium on wireless personal communications, 图8 主用户出现占空比下对应的全局错误率 [ 6] WILD B, BERKELEY U. Detecting Primary Receivers for Cognitive Radio Applications, Integration The Vlsi Journal, 2005 : 124 - 130. [ 7] 王岗岭, 樊建文. 传感器应用中噪声的产生及其抑制方法. 仪表技 2007 ( 7 ) : 62 - 63. 术与传感器, [ 8] GHASEMI A, SOUSA E S. Collaborative Spectrum sensing for opportunistic access in fading environments. 2005 1st IEEE International Symposium on New Frontiers in Dynamic Spectrum Access Networks, DySPAN, 2005. [ 9] DIGHAM F F, ALOUINI M S, SIMON M K. On the energydetection of unknown signals over fading channels. In Proc. of IEEEInternational 03 ) , 2003 : 3575 - 3579 , Conference on Communications ( ICC ’ 2003. [ 10] HAN W J, LI J D. Efficient Cooperative Spectrum Sensing with Minimum Overhead in Cognitive Radio . IEEE Transactions on Wireless 2010. Communications, [ 11] CHEN T, ZHANG H G, MAGGIO G M, et al. CogMesh: A ClusterBased Cognitive Radio Network. 2007 2nd IEEE International Sympopp. sium on New Frontiers in Dynamic Spectrum Access Networks, 2007 : 168 - 178. 作者简介: 程晖( 1988 —) , 硕士研究生, 主要研究方向为认知无线电频 Email: bestkey@ 163. com 谱感知算法研究与优化,

OR 规则融合的错误率要低 , 而当主用户出现的比例达到 0. 7 及以上时, 该模型下对应的错误率则要稍微高出些 。 说明在主 用户出现不多的情况下 , 分簇式双门限下的数据融合模型的总 体性能得到了明显提高 。只有当主用户出现频率很高时 , 分簇 式双门限下的数据融合模型下的错误率要高些 , 此时认知用户 应该避开使用该信道, 一是该信道空闲利用率不高 , 二是容易 对主用户产生干扰。 5 结束语 合作频谱感知是解决目前感知效率低下的有效技术之一 , 在此基础上, 文中通过双门限频谱检测 , 并利用环境的差异进 行分簇式二次数据融合进行判决 。 该算法既能够把一些不确 定的感知结果剔除, 又能够对簇内感知结果进行权重分配来做 出最后的判决。仿真结果表明: 相比于单点检测与传统合作频 谱感知, 该算法在检测正确率和全局错误率方面都得到了明显 的改善。如何根据环境确定双门限的值使得检测概率最大化 , 并进一步降低检测错误率是今后研究的目标与方向之一 。 参考文献:
[ 1] AKYIDIZ I, LEE W, VURAN M, et al. Next generation / dynamic spectrum access / cognitive radio wireless networks: A survey. Computer Networks, vol. 50 , no. 13 , pp. 2127 - 2159 , Sep. 2006.

( 上接第 80 页) 能码的要求完成操作, 最后将生成新的数据包 发送给主机, 其中 E1 61 是 CRC 的校验码。若校验出错则从机 向主机发送出错数据包 , 出错数据包的特征是将功能码的最高 即大于 127 的功能码是出错功能码 。 上面的通信过程 位置 1 , 表明, 主机和以 FPGA 实现的接口为从机实现了通信 。 视频监控计算机在现有的硬件平台上通过 RS - 485 总线 访问该接口 来 配 置 市 场 上 很 通 用 的 CMOS 数 字 图 像 传 感 器 OV7670
[3 ]

4

结束语 文中对 Modbus 通信协议进行分析, 并基于 Verilog 实现了

该接口的 Modbus 的 RTU 通信协议中常见的读写功能 。通过对 视频监控计算机访问该接口来配置 OV7670 图像传感器进行实 验。实验的结果表明: 主机按要求正确配置了 OV7670 图像传 感器。由于该接口采用现场总线技术 , 因此对远程设备访问有 着重要的作用。 参考文献:
[ 1] 孙强. 过程控制系统中 Modbus 网络的性能分析. 电子技术与应 2007 ( 2 ) : 81 - 87. 用, [ 2] 郑鸿彦, 苗世洪, 张军民. 基于 ARM9 微处理器的 Modbus 通信协 2007 ( 5 ) : 45 - 48. 议的实现. 电气应用, [ 3] 王翥, 佟晓筠. 一种新型彩色图像读取传感器芯片. 仪器仪表与传 2004 ( 7 ) : 31 - 33. 感器, 作者简介: 曹建锋( 1985 —) , 硕士研究生, 主要研究方向为嵌入式应用 mail: cjfsyj@ 163. com 领域和 FPGA 逻辑设计。E-

, 该传感器共有 170 多个寄存器需要配置。系统的整

个工作流程是计算机通过现场总线技术将需要图像传感器的 配置数据发送到接口内部的 RAM 中, 该 RAM 的大小是 512 字 节, 足够存放这些寄存器的地址和数据 。RAM 中相邻的 2 个地 址, 前一个用来存放寄存器的地址 , 后一个用来存放该地址中 需要写的数据。 发送完成后, 传感器配置模块根据 RAM 的数 SCCB 总线控制模块将 RAM 中的数据配置到 据来配置摄像头, 图像传感器中, 实现了传感器的正确配置并采集 1 帧大小为 320 × 240 的 REG16 格式的图像。


相关文章:
一种基于Windows Mobile平台和Modbus通讯协议的数据采集系统
一种基于 Windows Mobile 平台 Modbus 通讯协议的数据采集系统 摘要现在越来越多的智能仪表都提供了 RS485 数据输出的串行接口,本文 介绍一种在 Windows Mobile ...
基于单片机的MODBUS通信接口设计
[关键词] 信号测量测控 Modbus 协议 RS232 DSP320IF2407 3 基于 DSP2407 单片机的 MODBUS 通信接口设计 1 绪论随着计算机技术和网络技术的发展,工业参数的数字...
常见通信协议的接口调试方法_1.0.1
常见通信协议的接口调试方法_1.0.1_计算机软件及应用_IT/计算机_专业资料。modbus 、CDT等协议的调试方法 辽宁力迅风电控制系统有限公司 常见通信协议的接口调试...
常用几种通讯协议
常用几种通讯协议 Modbus Modbus 技术已成为一种工业...基于 OPC 的软件结构如图 由图可见, 应用程序与 ...通常在系统设计中采用 OLE 自动化标准接口。 OLE ...
Modbus通信协议及编程举例
Modbus通信协议及编程举例_电子/电路_工程科技_专业资料。Modbus通信协议及编程举例Modbus 通信协议 一,Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语...
接口协议
软件现在常规基本都具备 OPC MODBUS 一些标准协议的...空调系统是一种冷剂式空调系统, 具有设计安装方便、...等通讯协议接口,VRV 机组可以通 过网关将系统信息...
基于modbus的单片机课程设计+
基于ModBus 总线协议的温度报警设计 指导老师: 班姓学名: 周润发 级: 电气自动...在工业应用中的越来越广泛,越来越普及,Modbus 作为其中 的一种简单协议也受到不...
基于MODBUS协议的单片机与PLC通讯的设计
本次要实现基于 modbus 协议的单片机与 plc 通讯的设计, 通过 MX232 接口。 ...1.2 设计的主要内容对整个 MODBUS 通讯协议的构成、要求、应用等进行大概的了解...
基于modbus通信协议的rs232通信
基于modbus通信协议的rs232通信_信息与通信_工程科技_专业资料。通过程序设计实现基于MODBUS协议RS232点到点的通信 一、实现基于 Modbus 协议 RS232 点到点通信。...
更多相关标签:
modbus通信协议 | modbus通信协议及编程 | stm32 modbus通信协议 | modbus协议通信过程图 | modbus协议通信 从机 | modbus rtu通信协议 | modbus是无协议通信吗 | fpga通信协议 |