新闻中心

EEPW首页>手机与无线通信>设计应用> Modbus通信协议的FPGA实现

Modbus通信协议的FPGA实现

作者: 时间:2010-08-11 来源:网络 收藏

(6)等待发送完成,转到步骤(1)。
解释模块主要由解释控制模块、分析模块、各功能码解释模块、错误功能码处理模块组成。分析模块首先分析接收消息起始两个字节,即地址码和功能码。如果地址为广播消息地址(地址为0)或者地址码和本从站地址不相等,则不处理本消息,解释控制模块发出解释完毕并置不响应信号为“1”,顶层控制模块继续处于等待接收消息状态。如果功能码为非支持功能码,则选择错误功能代码处理模块;如果为某一支持的功能码,则选择相应的功能模块解释接收消息,按照功能码要求解码(例如读/写某一指定寄存器或者线圈)。处理完之后把相应的异常码响应消息或者正常响应消息写入接口模块里的发送缓冲寄存器里,完毕之后通过Ld_TbNCE信号把发送缓冲寄存器锁存消息的末地址(不带CRC校验位)Trbuf_add[7..O](保证在Ld_TbNCE有效时它为末地址)存入接口模块,发出解释完毕信号,不响应信号置“O”,之后由顶层控制模块控制接口模块发送响应消息。对于某些功能码,比如01码和02码,03码和04码,由于对它们的解释差别很小,可以共用一个模块,达到节省资源的目的。对于特定的系统,完全可以选择某一些功能码甚至某一个功能码,而达到需求,故这里采用这种模块化方式,可以很容易在不改变其他功能模块的情况下删除不需要的功能码模块或者增加新需要的功能码模块。
该协处理器与从设备其他部分接口仅仅为双口RAM,从设备完全被映射为寄存器组的抽象,这比启用寄存器直接要节省逻辑资源。由于这些双口RAM是完全透明的,用户可以根据整个系统需要自定义各个寄存器的实际含义。Modbus主设备可以在任何时候随机地访问这些寄存器组。Modbus从设备控制、执行模块对这些寄存器组的访问需要寻求一种较好的方式,由于的高速度及并行机制,一般情况下可以采取轮询的机制即可满足工业实时性需求。对于某些特殊情况需要更高优先级的控制方式,也可以采取中断方式。如图7所示,可以通过双口RAM的地址线和写使能信号线进行中断检测和冲突检测:当从站协处理模块对某些特定寄存器读/写完毕之后,产生一个中断信号,对某些可能存在从站协处理器模块和从设备控制执行模块都要对其进行写操作的寄存器,如果有写操作同时发生,则从设备控制执行模块应该等待从站协处理器写完再写,以保证写操作是原子的。图8为03码应答的完整仿真时序。

本文引用地址://m.amcfsurvey.com/article/157238.htm


图9为示波器在线路上检测到的波形,图9(a)展现了一系列连续帧实况;图9(b)展现某一应答情况,可以看出主机和从机电平有差异,但都在RS 485范围之内;图9(c)展现了某一帧的具体情况。

5 结语
该设计基于Altera公司,首先设计了一个可以通用于Modbus主设备和从设备的Modbus接口,然后基于该协议接口设计了一个通用的Modbus从设备协处理器,该接口也可以方便地用于主协议设备中。本设计通过了多款芯片的综合验证,并与WEINVIEW公司触摸屏MT-506MV和INVT公司CHF1OO-5R5G/7R5P变频器成功通信。目前该设计已在某工业EPS系统和某冲击试验台中稳定运行半年,可见其有一定应用前景。


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭