《以FPGA为基础的实现MEWTOCOL-COM与MODBUS RTU协议转换方法的设计.docx》由会员分享,可在线阅读,更多相关《以FPGA为基础的实现MEWTOCOL-COM与MODBUS RTU协议转换方法的设计.docx(9页珍藏版)》请在第一文库网上搜索。
1、以FPGA为基础的实现Mewtoco1-COM与modbusRTIJ协议转换方法的设计0引言现场总线技术是在工业自动化领域中解决工业现场的智能化仪器仪表、控制器、执行机构等现场设备间的数字通信以及这些现场控制设备和高级控制系统之间的信息传递问题,是工业设备自动化和信息化的基础。然而,由于历史原因,现场总线的通信协议却种类繁多,根据IEC61158第四版国际标准,已有20种现场总线协议成为国际标准1O常用的现场总线协议有西门子的MP1和PP1RoCkweII的DF1、松下的MEWToCo1-CoM以及绝大多数设备厂商都遵循的MoDBUS协议等。由于不同设备商支持的协议标准不同,导致不同设备商的设
2、备之间不能直接互联互通,这就造成了生产制造单位在扩大生产线或设计巴星线时,无法做到资源的合理规划和充分利用,老旧产线无法顺利接入智能网络等困境。目前,针对不同的工业协议之间的相互转换,最常见的方式有基于嵌入式系统实现协议转换、基于专用皿实现协议转换和基于FPGA实现协议转换2。表1是对这三种常用方式的优缺点的比较。表1三种协议转换方案对比比较内容嵌入式系统专用AS1CFPGA转换速度慢:快.快CPU开销小小扩展协议灵活灵活成本低中本文针对松下电工的私有协议Mewtoco1-Com和标准串行协议modbusrtu进行了深入的研究,并设计和实现了一种Mewtoco1-Com与modbusRTIJ协
3、议快速转换的电路方案,不但解决了Mewtoco1-Com标准设备与modbusRTU标准设备集成在一个现场总线网络中进行互联互通、数据交换的问题,而且完成了两个协议快速转换,转换前后的数据报文时延小于2msO1MEwToCO1-COM与MoDBUS通信原理1.1MEWTOCO1YOM通信原理Mewtoco1-COM是松下电工fp系列P1C与p1c、计算机或者hmi触摸屏之间采用的一种专用的通信协议。该协议采用主从应答模式,数据传送采用的是ASCI1码编码形式,每次通信的开始,都由主站(主P1C、计算机或者HM1触摸屏)发送指令,从站(从P1C)接受到指令后,自动进行相应的响应,主站根据从站的响
4、应,可以得知从设备是否正确执行了刚刚发送的指令,这样就构成了一个交互式的操作。图1是完成主从通信模型的示意图。1. 2MEWTOCO1-COM基本帧格式MEWTOCO1-COM协议中规定了基本帧格式,基本帧格式有控制代码,包含了帧头、命令、正常响应、错误响应、结束等字符,如表2所示。MEWTOCO1-COM的每次通信都先由主站发起,主站发起命令帧,命令帧内容除了包含控制代码外,还包括一些特殊标志码、P1C站号和呼号字符等3。表3是基本帧的格日。命令帧在文本区域中填写命令代码和操作地址,命令代码含义如表4所zjO表2控制代码名称字符ASCII码说明帧头%or25Hor3CHA指示消息帧开始命令#
5、23H指示命令类型消息正常响应$24H指示正常响应类型消息错误响应!21H当有错误发生时.指示错误响应类型消息结束CRODH指示消息帧结束表3MEWOCO1-COM基本帧格式%H1#/!文本区BCCCR帧头目的/源站点号命令/正常响应/错误响应块校验码结束符表4MEWTOCO1-COM命令代码表命令代码说明命令代码说明RCS读单个接点RK读定时/计数当前值区WCS写单个接点HrK写定时/计数当前值区RCP读多个接点RD读数据区WCP写多个接点WD写数据区RCC以字为单位读接点信息WD写k*区WCC以字为单位写接点信息SD数加二预置1.3MODBUSRTU工作原理自1979年来,MODBUS已经
6、成为工业领域通信协议的业界标准,通过MODBUS连接着百万台自动化设备之间的通信。在OS1模型中,MODBUS位于第7层,是一种应用层报文传输协议。MODBUS在串行通信模式下,通信帧格式有两种:一种是主机发起的查询和命令从设备的格式,另一种是从设备收到主机命令后的应答格式4。通信原理是采用请求/应答的方式进行主从通信,其工作原理如图2所示。MODBUS主站通过向相应物理地址的从站发送相应的控制信息进行总线数据的交互,一般采用的是一对多的物理连接方式,其通信的实质是主从一对一的请求/应答模式的通信过程5O当物理层为RS422或RS485的串行通信方式下,MODBUS通信协议有两种数据的收发模式
7、,一种是RTU(RemoteTermina1Unit)模式,另外一种是ASCn模式。与ASCI1模式不同的是,RTU模式下的报文内容是按十六进制的字节方式进行收发,没有报文的开始和结束标记。MODBUS协议规定,在工业总线上的所有设备,都必须支持RTU模式,而ASCI1通信模式作为可选项,而非必选项。本文以RTU模式为研究对象,建立MEWTOCO1YOM与MODBUSRTU报文的命令、地址映射关系,从而实现两种不同的总线协议的相互转换。在MODBUSRTU协议中,主机设备通常通过不同的功能码实现对位、字进行操作,这里的功能码就是对应MEwToCO1YOM中的命令。1.4命令映射表为了实现MEW
8、ToeO1YoM协议与MODBUS协议的相互转换,首先创建命令对应表,如表5所示。表5MODBUSRTU功能码与Mewtoco1-Com命令对应转换关系表MoDBUS功能码MODBUSRTu名称MEWTOCo1-CoM名称1读线圈寄存器读Y和R线圈2读输入状态读X输入3读保持寄存器读DT4读输入寄存器读W1和1D5强置单一线圈写单一Y和R6预置单一寄存器按字写DT15强置多线圈写多个Y和R16预置多寄存器写多个字DT22屏蔽写4X寄存器屏蔽F,K4X等存呼23读/写4X寄存器读/写二,4X寄存器1. 5地址映射表MODBUS的地址编码是从1开始,并且分不同的地址段,MEWTOCO1YOM的地址
9、是从0开始,要进行两者相互之间的转换,MODBUS的地址是MEWToCO1YOM的地址+1。转换关系如表6所示。表6MODBUS与MEWTOCO1-COM协议地址转换关系设备地址MODBUSMEWToCO1-COMMODBUSMEWTOco1-CoM线圈Y1-20480-2047R2049-99992048-9998输入X100001-1099990-9998保持寄存器DT4001-4327650-32764输入寄存器W1300001-31280.1D302001-3022562000-22552FPGA实现设计本文结合实际协议网关项目验证了一种基于FPGA的高速协议转换的设计方案,它以此送旦
10、公司CyC1One系列FPGA芯片为核心,采用原理图和YeriIOgHD1语言编程实现4-8。采用友晶提供的DEO-Nano开发板,配合开发软件QuartusII13.0,设计了一个验证系统,系统采用固定波特率115200bs,接收MEWTOCO1-COM协议数据,使用8bit数据位,1bit停止位,无奇偶校验位。转换后的MoDBUSRTU协议报文,按照8bit数据位,1bit停止位的发送。FPGA从串行端口接收一帧MIWTOCO1-COM协议数据%10#RDDoI1O50110757cr,表明读取站号为10的寄存器地址1105T107三个字的内容,转换为MoDBUSRTU报文后,为OA030
11、4520003A451。2. 1顶层设计图3是验证系统的顶层RT1视图,顶层一共有三个输入端口:e1k,rst_n和rxd信号,分别表示FPGA的外部时钟输入,复位信号的输入(低电平有薮)和串口接收信号。顶层的两个输出端口,分别是数据输出有效信号C1VaIid和串口发送信号txd.M3协仪转换功能IEIIJgRT1URI顶层一共例化了4个独立模块,分别是p11,uartreceiver,cov_fp_mod和uart_transfer模块。2. 2各模块说明(1)时钟模块P11P11模块采用A1tera公司提供的基础锁相环IP,输入时钟e1k是50MHz,通过P11后,输出信号CO是波特率的采
12、样时钟,本例中采用固定波特率115200bs,因此,采用频率为波特率115200的16倍,即1.8432MHz。采样时钟c作为模块的运行时钟,分别送到串行端口的收发数据模块。(2)串口接收数据模块Uartreceiveruart_receiver模块是从串行端口rxd信号中接收串行数据,并转换成8bit并行数据后从dout端口输出,同时模块将给出data_ready指示信号,表明串并转换完成1个字节的有效数据。(3)协议转换模块COv_fp_nIOdcov_fpmod模块是从串口接收数据模块中接收并行的8bit数据,同时按照MEWTOCO1YOM协议帧转换为MODBUSRTU协议帧的方式,将重
13、新组装数据,并实时地发送到串口发送数据模块。(4)串口发送数据模块UarttranSfer串口发送数据模块是将协议转换模块输出的协议帧数据,进行并串转换,并发送到串行接旦线路上。2. 3Signa1Tap信号抓取图4是通过AItera(现为InteI)公司的QUartUSII软件信号抓取工具Signa1Tap,实时获得的FPGA的内部信号数据,其中rxd和txd为FPGA的串口输入和输出信号,i_data_d是来自METYTOCO1-COM协议的做了同步处理后的并行数据,Sene1en是转换模块进行转换后使能数据输出的指示信号;o_data信号是协议转换模块的MODBUSRTU协议报文的输出并
14、行数据;si1ent_interva1_done信号是根据MODBUSRTU协议,发送数据报文前后至少要保持3.5个字杵时间以内,串口总线保持寂静,对于波特率为115200b/s时,要求这个时间为1750USo当总线上不满足寂静时间时,信号Si1entJnterva1done为低电平,否则为高电平,表示数据可以从串行端口上进行发送。信号t35nt是串口总线寂静时间的累加寄存器值,当MODBUSRTU协议的数据从串行端口上发送结束后,信号t35nt便开始从0计时,直到计满1750US后,Si1ent_interva1_done信号才为高电平有效,表示串口发送总线上可以进行数据的传送了。W4Sia
15、an排以转换数据Signa1TaP的采样时钟使用16x波特率的时钟,BP1.8432MHz,每个时钟周期为0.5425USo从接收到MEWTOCO1-COM协议的数据到转换为MODBUSRTU的数据并发送,通过将SigrIa1TaP的数据导出为CSv格式,得到从rxd信号接收开始有效计算到协议转换发送txd信号有效输出,两者之间的时间差2212个时间单位,每个时间单位为0.5425us,则协议转换并开始发送的时间为0.5425X2212=1200.O1Us0因此,协议转换时间很短,而且不需要完全接收完整的一个Mewtoco1-COM协议的报文才开始转换,硬性电路上可以在适当的时间内开始进行转换,大大节省了协议收发的时间延时(协议转换的CRC计算为组合逻辑,时延为纳秒级,不影响整个转换时延)。3测试