CN105262542A - 一种用于profibus的光纤接口转换模块的实现方法 - Google Patents
一种用于profibus的光纤接口转换模块的实现方法 Download PDFInfo
- Publication number
- CN105262542A CN105262542A CN201510598531.XA CN201510598531A CN105262542A CN 105262542 A CN105262542 A CN 105262542A CN 201510598531 A CN201510598531 A CN 201510598531A CN 105262542 A CN105262542 A CN 105262542A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- profibus
- baud rate
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Communication Control (AREA)
- Optical Communication System (AREA)
Abstract
本发明公开了一种用于PROFIBUS的光纤接口转换模块的实现方法,包括如下步骤:步骤①:搜索和获取PROFIBUS总线报文数据波特率;步骤②:采样PROFIBUS总线报文数据,并将采样值写入接收数据缓存;步骤③:对PROFIBUS接收缓存数据进行调制运算,将运算结果发送至光纤收发器;步骤④:对光纤调制数据进行解调运算,解调运算输出数据写入发送数据缓存;步骤⑤:将发送数据缓存中的报文数据发送至PROFIBUS总线。本发明可以解决PROFIBUS长距离、高速率、高可靠性数据传输的技术问题。
Description
技术领域
本发明涉及自动化工业控制技术领域,具体涉及用于工业现场总线PROFIBUS的光纤接口转换模块的技术实现方法。
背景技术
PROFIBUS现场总线是当今应用最为广泛的工业通信网络之一,通常由PROFIBUS主站、从站、总线电缆和其它网络部件组成。
由于PROFIBUS现场总线的电气通信网络在应用时,受到传输距离、通讯速率、电磁干扰等方面的影响与限制,无法同时达到长距离和高速率的数据通信指标。而光纤数字通信正好可以弥补这方面的不足,这就需要一种PROFIBUS光纤接口转换技术,能把PROFIBUS的电信号报文与光纤传输报文相互转换,使得PROFIBUS现场总线能方便的进行光、电混合组网,从而达到长距离、高速率、高可靠性数据传输的目的。
PROFIBUS光纤接口转换技术的难点在于:
①由于PROFIBUS的波特率与常见的光纤收发器在工作带宽上的差异,因此在利用光纤进行数据传输时,需要对PROFIBUS报文进行调制/解调。但传统数字通信常用的一些调制/解调方法比较复杂,成本较高。因此设计一种新的、低载频的、简单可靠的,适用于PROFIBUS的调制/解调算法是本发明的主要目标。
②由于基于FPGA的光纤模块在光电以及电光信号转换过程中必然存在数据处理延迟,那么在FPGA中采用何种模块划分方式以及何种数据流处理机制,以便在提高光电或电光信号转换效率的同时保证数据传输的可靠性,是首先要解决的问题,因此合理的功能模块划分以及数据处理流程是本发明的关键点。
发明内容
本发明的目的是提供一种用于PROFIBUS的光纤接口转换模块的实现方法,通过FPGA算法对PROFIBUS报文进行解析、和调制/解调,使PROFIBUS信号能在电网络和光纤网络上相互转换和传输,从而能方便的进行PROFIBUS总线的光、电混合组网,以解决长距离、高速率、高可靠性数据传输的技术问题。
为了实现上述发明目的,本发明采用如下技术方案:
一种用于PROFIBUS的光纤接口转换模块的实现方法,所述PROFIBUS光纤接口转换模块的硬件,主要由现场可编程逻辑门阵列FPGA程序模块、PROFIBUS总线RS-485接口芯片以及光纤收发器模块组成;其中RS-485接口芯片用于连接PRUFIBUS总线网络,并在FPGA程序模块与PROFIBUS网络之间进行信号电平转换与传输;光纤收发器模块用于连接光纤线缆,并在FPGA程序模块与光纤线缆之间进行光/电转换和信号传输;现场可编程逻辑门阵列FPGA程序模块主要用于完成报文解析、波特率自适应、调制/解调和报文收/发功能;
该方法包括如下步骤:
步骤①:搜索和获取PROFIBUS总线报文数据波特率;
上电后,光纤接口转换模块在对PROFIBUS总线报文数据进行采样之前,要获取PROFIBUS总线报文数据波特率;可编程逻辑门阵列FPGA程序模块通过判断当前采样的PROFIBUS总线RS-485报文数据(或解调后的光纤收发器接收的数据)是否符合PROFIBUS总线报文数据结构的方法,实现搜索和锁定当前PROFIBUS总线报文的数据波特率,从而完成波特率自适应过程;
步骤②:采样PROFIBUS总线报文数据,并将采样值写入接收数据缓存;
在可编程逻辑门阵列FPGA程序模块锁定当前PROFIBUS总线报文数据波特率的前提下,可编程逻辑门阵列FPGA程序模块利用波特率采样脉冲对PROFIBUS总线(RS-485)接口输入的报文数据(或解调后的光纤收发器接口数据)进行采样,并将采样值写入接收数据缓存;
步骤③:对PROFIBUS接收缓存数据进行调制运算,将运算结果发送至光纤收发器;
在可编程逻辑门阵列FPGA程序模块锁定当前PROFIBUS总线报文数据波特率的前提下,可编程逻辑门阵列FPGA程序模块对接收数据缓存中采样的PROFIBUS总线报文数据进行调制运算,调制运算采用将采样数据与特定频率的方波进行异或运算的方法实现,调制运算后的数据增加起始符和结束符后,经过光纤收发器发送至下一级光纤接口转换模块;
步骤④:对光纤调制数据进行解调运算,解调运算输出数据写入发送数据缓存;
上电后,当解调模块从光纤收发器接收端搜索到来自光纤总线的调制报文数据起始符后,开始对报文数据进行解调运算;本步骤不依赖于PROFIBUS数据波特率是否已被锁定;
解调运算采用将光纤收发器接收的调制信号与特定频率的方波进行异或运算的方法实现,解调运算产生的输出数据为PROFIBUS总线报文数据,可编程逻辑门阵列FPGA程序模块将该数据写入发送数据缓存,同时送往接收串口数据模块;
步骤⑤:将发送数据缓存中的报文数据发送至PROFIBUS总线;
在可编程逻辑门阵列FPGA程序模块锁定当前PROFIBUS总线报文数据波特率的前提下,可编程逻辑门阵列FPGA程序模块将发送数据缓存中解调出的PROFIBUS报文数据,按照锁定的波特率,通过RS-485接口芯片发送至PROFIBUS总线。
所述光纤接口转换模块能够搜索的波特率范围包括9.6KBit/s、19.2KBit/s、45.45KBit/s、93.75KBit/s、187.5KBit/s、500KBit/s、1.5MBit/s、3MBit/s、6MBit/s、12MBit/s,共10个波特率值。
可编程逻辑门阵列FPGA程序模块按照实现功能可划分为接收串口数据模块、发送串口数据模块、接收数据缓存模块、发送数据缓存模块、波特率搜索与锁定模块、波特率发生器模块、报文帧判决模块以及调制模块和解调模块。
波特率搜索与锁定模块程序流程是:上电后,“波特率搜索与锁定模块”处于搜索状态,按不同的波特率依次、反复对PROFIBUS总线报文进行采样,直至“报文帧判决模块”发送报文帧判断正确结果标识,此时停止搜索波特率,模块进入波特率锁定状态。此后,如果由于总线波特率改变、或总线报文中断等原因,使“报文帧判决模块”的判断结果发生变化,则“波特率搜索与锁定模块”将重新进入搜索状态,重复以上过程。
调制模块程序流程是:当接收数据缓存中有PROFIBUS总线报文数据时,调制模块采用PROFIBUS波特率整数倍的特定频率12MHz方波,即24MBit/s信号作为载频对PROFIBUS数据报文进行调制运算;当接收数据缓存中没有PROFIBUS总线报文数据时,调制模块向光纤收发器发送载频4倍频后的48MHz方波,即96MBit/s信号作为无报文数据的空闲信号;
波特率搜索与锁定模块,或接收串口数据模块进行工作时,数据方向可以来自RS-485接口芯片,也可以来自光纤模块解调后的结果。这样无论PROFIBUS主站在网络中位于RS-485接口一侧,还是光纤收发器一侧,光纤接口转换模块都可以正常工作。
调制模块与解调模块的算法是完全一样的;S、T、G、R、分别为原始数据信号、载频信号、调制后的信号、解调后的信号、“异或”运算符,则调制过程:解调过程:
本发明有以下积极效果:
本发明中,PROFIBUS总线的波特率自适应、报文解析、调制/解调、报文收/发完全由FPGA完成,外围电路只需要RS-485物理层器件和普通的光纤收发器即可,硬件开销小、成本低、易于产品化。应用于PROFIBUS领域后,使PROFIBUS信号能在电网络和光纤网络上相互转换和传输,从而能方便的进行PROFIBUS总线的光/电混合组网,总线型/树形/星型混合组网,达到长距离、高速率、高可靠性数据传输的目的。
附图说明
图1是本发明的光纤模块硬件示意图;
图2是本发明的FPGA功能模块框图;
图3是接收串口数据模块程序流程图;
图4是波特率搜索与锁定模块程序流程图;
图5是调制模块程序流程图;
图6是调制运算方法示意图;
图7是调制数据报文波形示意图;
图8是解调模块程序流程图;
图9是发送串口数据模块程序流程图。
具体实施方式
本发明通过FPGA算法对PROFIBUS报文进行解析、和调制/解调,使PROFIBUS信号能在电网络和光纤网络上相互转换和传输,从而能方便的进行PROFIBUS总线的光、电混合组网,达到长距离、高速率、高可靠性数据传输的目的。
同时,采用光纤接口转换模块后,可以改变PROFIBUS的网络拓扑结构,除传统的总线型结构外,还可以组成树形、星型,或混合型结构,组网更加方便灵活。本发明中,利用FPGA实现光纤接口转换模块的方法,具有低成本、速度快、工作稳定可靠的特点,由于在FPGA算法中采用了合理的模块划分和高效的数据处理机制,对PROFIBUS通讯的可靠性提供了保障。
参照图1,在本发明中,光纤模块硬件主要有现场可编程逻辑门阵列FPGA、PROFIBUS总线RS-485接口芯片以及光纤收发器组成。
RS-485接口芯片通过串口差分信号线A线与B线连接PROFIBUS总线,实现与PROFIBUS网络部件通讯,PROFIBUS总线网络部件包括PROFIBUS主站和从站等。
光纤收发器的功能是将现场可编程逻辑门阵列FPGA输出的电信号转换为光信号发送至光纤线缆,并能够将从光纤线缆接收到的光信号转换为电信号输入到现场可编程逻辑门阵列FPGA。
现场可编程逻辑门阵列FPGA和RS-485芯片之间的通信接口主要包括串行接收RXD、串行发送TXD和发送请求RTS信号。
现场可编程逻辑门阵列FPGA与光纤收发器之间的通信接口主要包括FPGA输出调制报文数据线OP_DOUT和FPGA输入调制报文数据线OP_DIN。
本发明使用的现场可编程逻辑门阵列FPGA为美国Lattice公司LFXP2-8E-5TN144I芯片。
上述各硬件之间的通讯关系:RS-485芯片将接收到的PROFIBUS总线A线与B线信号转换成串行接收RXD信号,并将RXD信号发送至现场可编程逻辑门阵列FPGA。现场可编程逻辑门阵列FPGA采样RXD信号,对采样数据进行调制运算,运算结果发送至光纤收发器,光纤收发器将调制电信号(OP_DOUT)转换成光信号发送到光纤线缆。光纤收发器也可以将光信号转换为调制电信号(OP_DIN)发送至FPGA,现场可编程逻辑门阵列FPGA对OP_DIN进行采样、解调运算,解调出的数据通过串行发送数据线TXD发送至RS-485芯片,并置发送请求RTS为高电平,RS-485芯片将TXD信号发送至PROFIBUS总线差分信号A线与B线。
参照图2,本发明中,现场可编程逻辑门阵列FPGA程序模块按照实现功能可划分为接收串口数据模块、发送串口数据模块、接收数据缓存模块、发送数据缓存模块、波特率搜索与锁定模块、波特率发生器模块、报文帧判决模块以及调制模块和解调模块。
接收串口数据模块按照波特率采样脉冲对串行接收数据RXD进行采样,并同时对解调模块解调后的串行报文数据进行采样,将采样的数据进行串并转换,转换后的报文数据发送至报文帧判决模块。
在PFGA锁定当前PROFIBUS总线波特率条件下,接收串口数据模块将采样的串行报文数据存储至接收数据缓存。
参照图3,接收串口数据模块处理流程:当采集到串行接收RXD信号下降沿后,根据波特率采样脉冲采样第一位数据,并判断采样值是否为‘0’,判断结果是:如果采样的第一位数据不是‘0’,表示采样的数据不是有效的起始位,接收串口数据模块重新等待串行接收数据RXD下降沿;如果采样的第一位数据是‘0’,表示采样的数据是有效的起始位,开始采样第一字节数据并计算偶校验和,待第一字节数据采样完成后,判断偶校验和是否正确,判断结果是:如果偶校验和错误,等待33个波特率采样脉冲后结束本次采样;如果偶校验和正确,开始采样下一位数据,判断该位数据是否为字节停止位,判断结果是:如果是‘0’,表示该位不是字节停止位,接收串口数据模块等待33个波特率采样脉冲后结束本次采样;如果是‘1’,表示该位是字节停止位,需要继续采样第二字节数据,按照上述步骤反复执行。如果接收信号来自光纤收发器解调后的结果,处理流程与此相同。
报文帧判决模块主要功能是依据PROFIBUS标准判断报文数据是否正确,将判断结果告知波特率搜索与锁定模块。
波特率搜索与锁定模块实现的主要功能是搜索并获取当前PROFIBUS总线波特率,模块状态分为搜索状态和锁定状态。
当光纤模块没有获取当前PROFIBUS总线波特率的情况下,波特率搜索与锁定模块处于搜索状态,通过不断轮换波特率序号,搜索能使接收串口数据模块正确采样PROFIBUS报文数据的波特率值,具体方法是:波特率搜索与锁定模块不断轮换当前波特率值,从而使得波特率发生器模块产生轮换的波特率采样脉冲信号。接收串口数据模块利用不同波特率采样脉冲采样PROFIBUS报文数据,并将数据发送至报文帧判决模块。报文帧判决模块接收到正确的一帧报文数据时,将正确的判断结果告知波特率搜索与锁定模块,波特率搜索与锁定模块锁定当前波特率,至此波特率搜索与锁定模块获取当前PROFIBUS总线波特率,转到锁定状态。
参照图4,波特率搜索与锁定模块程序流程是:上电后,光纤模块没有获取当前总线波特率,波特率搜索与锁定模块处于搜索状态,此时按照初始默认的波特率值12MBit/s对PROFIBUS总线报文进行采样,启动波特率搜索定时器,等待报文帧判决模块发送报文帧判断正确结果标识,如果在波特率搜索定时时间范围内没有收到报文帧判断结果正确标识,波特率搜索与锁定模块更换当前总线波特率到6MBit/s,重新启动波特率搜索定时器,等待报文帧判决模块发送报文帧判断正确标识,如果在波特率搜索定时时间范围内依然没有收到报文帧判断正确标识,波特率搜索与锁定模块继续更换当前总线波特率,依次反复直到波特率搜索与锁定模块收到报文帧正确标识为止,波特率搜索与锁定模块锁定当前PROFIBUS总线波特率值。
如果在波特率搜索时间范围内收到报文帧判断正确结果标识,波特率搜索与锁定模块锁定当前总线波特率,停止波特率搜索定时器,启动波特率锁定定时器,波特率搜索与锁定模块进入锁定状态,如果在波特率锁定定时时间范围内依然没有收到来自报文帧判决模块判断结果正确标识,波特率搜索与锁定模块返回到搜索状态,重复搜索波特率;如果在波特率锁定定时时间范围内,波特率搜索与锁定模块收到来自报文帧判决模块报文帧判断结果正确标识,复位并重新启动波特率锁定定时器。
波特率发生器模块依据波特率搜索与锁定模块发送的波特率值产生对应的波特率采样脉冲信号,接收串口数据模块利用波特率采样脉冲对串行接收RXD信号和解调串行报文数据进行采样,发送串口数据模块利用波特率采样脉冲信号产生串行发送TXD信号。
接收数据缓存模块主要功能是缓存接收串口数据模块采样的串行报文数据,调制模块读取接收缓存中的串行报文数据并将数据进行调制运算。
接收数据缓存采用先进先出栈FIFO实现,先写入的数据在读取时先被读出,先进先出栈FIFO的存储宽度是1Bit,深度是256Bit。
调制模块主要功能是对缓存中的PROFIBUS报文数据进行调制运算,将调制后的报文数据OP_DOUT输出至光纤收发器,光纤收发器将电信号OP_DOUT转换成光信号发送至光纤线缆。
参照图5,本发明中,当接收数据缓存没有PROFIBUS总线报文数据时,FPGA调制模块默认向光纤收发器发送48MHz方波。当接收数据缓存中存有PROFIBUS总线报文数据时,FPGA调制模块首先向光纤收发器发送调制报文起始符0xF1,然后按位读取接收数据缓存中的PROFIBUS串行报文数据,并对串行报文数据进行调制运算,将调制运算后的数据发送至光纤收发器,直到接收数据缓存中的PROFIBUS报文数据全部被读取为止,调制运算结束,此时调制模块输出调制报文结束符0xC3,至此调制模块完成一帧数据报文的调制,继续向光纤收发器发送48MHz方波,直到接收数据缓存中再次存储PROFIBUS总线报文数据时,重复上述处理流程。
参照图6,本发明中,现场可编程逻辑门阵列FPGA调制模块对PROFIBUS报文帧进行调制运算后,将运算输出数据OP_DOUT发送至光纤收发器,光纤收发器将OP_DOUT电信号转换为光信号发送至光纤线缆。调制运算方法是调制模块用12MHz方波,即24MBit/s信号作为载频对PROFIBUS串行数据报文进行异或运算,运算结果为调制数据报文OP_DOUT。
调制运算方法具体步骤如下:
步骤1:置寄存器初始值为‘1’,转到步骤2。
步骤2:读取接收缓存中1Bit串行数据,转到步骤3。
步骤3:将串行数据和寄存器值进行异或运算,运算结果为调制输出报文数据,转到步骤4。
步骤4:将寄存器中的值进行取反运算,重新写入寄存器,转到步骤5。
步骤5:如果发送缓存中的数据都被读空,调制运算结束;如果发送缓存中的数据没有读空,转到步骤2。
本发明中,调制模块异或运算的运算频率是24MHz,因此调制报文数据载频的波特率为24MBit/s,也就是将PROFIBUS数据报文10个波特率值统一调制到24MBit/s。
由于异或运算的运算频率是24MHz,对于12MBit/s波特率PROFIBUS报文数据来说,每个Bit位需要进行2次异或运算,对于6MBit/s波特率PROFIBUS报文数据来说,每个Bit位需要进行4次异或运算,不同波特率PROFIBUS报文数据的每Bit位需要进行异或运算的次数如表1所示。
参照图7,本发明中,调制模块输出数据OP_DOUT的波形分为非调制数据报文部分和调制数据报文部分。非调制数据报文部分包括48MHz方波、调制报文起始符0xF1和调制报文结束符0xC3,调制数据报文部分是调制模块对PROFIBUS报文数据进行调制运算后产生的波形。
解调模块主要功能是对光纤收发器输入的调制报文数据进行采样,对采样的数据进行解调运算,将解调后的串行报文数据写入发送数据缓存,同时将串行报文数据发送至接收串口数据模块。
本发明中,解调模块在对数据进行解调运算前首先要对输入的调制报文数据OP_DIN进行采样,调制报文数据OP_DIN波特率为24MBit/s,解调模块采用192MHz采样频率对OP_DIN采样,即解调模块按8倍采样率对调制报文数据OP_DIN进行采样,每Bit位调制报文数据能够被采样8个样点,解调模块选取其中不相邻的3个采样点进行表决(即在3个采样点中取2个相同的值)后作为采样值参与解调运算。
参照图8,本发明中,解调模块对调制报文数据进行解调的程序流程:解调模块将调制报文数据采样值按位写入一个8Bit位宽的移位寄存器,每写入1Bit采样数据,解调模块判断移位寄存器的值是否等于调制报文起始符0xF1,
判断结果是:如果移位寄存器的值不是0xF1,解调模块继续向移位寄存器中写入采样值,并继续判断移位寄存器的值;如果移位寄存器的值是0xF1,解调模块开始对后续采样值进行解调运算,将运算出的串行数据报文写入发送数据缓存,同时继续将采样值写入移位寄存器,判断移位寄存器的值是否等于调制报文结束符0xC3,
判断结果是:如果移位寄存器的值是0xC3,则表示调制数据报文结束,解调模块停止对采样值的解调运算,停止向发送数据缓存中写数据,继续向移位寄存器写入OP_DIN采样值;如果移位寄存器的值不是0xC3,表示调制数据报文没有结束,解调模块继续对OP_DIN采样值进行解调运算,并将运算结果写入发送数据缓存,同时判断移位寄存器的值是否等于调制报文起始符0xF1,
判断结果是:如果移位寄存器的值是0xF1,说明在没有完成本帧的调制数据报文采样值解调运算的情况下,新的一帧调制报文数据输入到解调模块,此时解调模块清空发送数据缓存,对采样值进行解调运算,将解调运算产生串行数据报文写入发送数据缓存,之后按照上述流程反复执行;如果移位寄存器的值不是0xF1,解调模块继续对调制报文数据进行解调,并继续判断移位寄存器的值是否等于0xF1或0xC3,判断结果按照上述流程执行。
参照图6,本发明中,解调模块的解调运算方法和调制模块的调制运算方法相同,解调模块将调制报文数据采样值与寄存器的值进行异或运算,并将寄存器的值取反。
解调运算方法具体步骤如下:
步骤1:置寄存器初始值为‘1’,转到步骤2。
步骤2:调制报文数据1Bit采样值与寄存器值进行异或运算,结果是PROFIBUS串行数据报文,转到步骤3。
步骤3:将寄存器中的值进行取反运算,重新写入寄存器,转到步骤4。
步骤4:如果移位寄存器的值等于0xC3,解调运算结束;如果移位寄存器的值等于0xF1,转到步骤1;以上两种情况都不是,转到步骤2.
解调运算后的数据报文写入发送数据缓存,同时也送往接收串口数据模块;
发送数据缓存模块用于缓存解调模块解调运算产生的串行数据报文。发送数据缓存利用现场可编程逻辑门阵列FPGA先进先出栈FIFO实现,缓存存储宽度是1Bit位宽,缓存存储深度是256Bit位宽。
发送串口数据模块按照波特率采样脉冲信号将发送数据缓存中的串行报文数据通过串行发送TXD输出至RS-485芯片,在发送串行数据报文期间置发送请求RTS为‘1’。
参照图9,发送串口数据模块程序流程:当波特率搜索与锁定模块处于搜索状态时,波特率锁定标识无效,发送串口数据模块赋值TXD串行发送数据为‘1’,同时赋值发送请求RTS信号为‘0’。当波特率搜索与锁定模块处于锁定状态时,波特率锁定标识有效,发送串口数据模块判断发送数据缓存中是否存有解调数据,
判断结果是:如果发送数据缓存未写入解调串行报文数据,发送串口数据模块赋值TXD串行发送数据为‘1’,同时赋值发送请求RTS信号为‘0’;如果发送数据缓存中已写入解调串行数据报文,发送串口数据模块读取发送数据缓存存储的数据,将读取的数据通过串行发送TXD信号线发送至RS-485芯片,同时赋值发送请求RTS信号为‘1’,直到发送数据缓存被读空,此时发送串口数据模块赋值TXD串行发送信号线为‘1’,同时赋值发送请求RTS为‘0’,至此发送串口数据模块将一帧解调串行数据报文发送至PROFIBUS总线。
综观上述,基于FPGA实现的光纤模块处理流程是:
步骤①:搜索和获取PROFIBUS总线报文数据波特率。
波特率自适应是光纤模块通过判断PROFIBUS总线报文数据采样值是否正确的方法,搜索并锁定当前PROFIBUS总线波特率。
波特率自适应的目的是使得接收串口数据模块能够通过波特率采样脉冲正确采样PROFIBUS总线报文数据,并使得发送串口数据模块能够按照波特率采样脉冲正确发送PROFIBUS总线报文数据。
波特率自适应的过程:接收串口数据模块按照波特率发生器产生的波特率采样脉冲信号采样RXD串行接收数据,将采样值转换为并行报文帧数据发送至报文帧判决模块,报文帧判决模块判断报文帧是否符合PROFIBUS标准报文格式,并将判断结果发送至波特率搜索与锁定模块,如果报文帧判断结果正确,则波特率搜索与锁定模块处于锁定状态,锁定当前波特率值;如果报文判断结果错误,则波特率搜索与锁定模块处于搜索状态,继续轮换波特率值,直到报文帧判断结果正确为止。波特率搜索与锁定模块将波特率值发送至波特率发生器模块,波特率发生器模块按照波特率值产生相应的波特率采样脉冲信号。
当波特率搜索与锁定模块处于搜索状态时,接收串口数据模块不将串口接收RXD采样值写入接收数据缓存;发送串口数据模块不向RS-485接口芯片发送TXD串行数据;调制模块不产生调制报文数据输出,只向光纤收发器发送48MHz方波;但解调模块可以对调制报文数据OP_DIN进行采样和解调运算。
步骤②:采样PROFIBUS总线报文数据,并将采样值写入接收数据缓存。
如果波特率搜索与锁定模块处于锁定状态,接收串口数据模块将串行报文数据写入接收数据缓存。
步骤③:对PROFIBUS接收缓存数据进行调制运算,将运算结果发送至光纤收发器。
当接收数据缓存为空,调制模块通过OP_DOUT向光纤收发器发送48MHz方波;当接收缓存存有PROFIBUS报文帧采样值,调制模块停止向光纤收发器发送48MHz方波,通过OP_DOUT向光纤收发器发送调制报文起始符0xF1,发送完毕后,调制模块从接收数据缓存中读取串行报文数据,并将读取的数据进行调制运算,通过OP_DOUT将运算结果发送至光纤收发器,当接收数据缓存被读空时,表示调制模块对一帧PROFIBUS报文调制并发送完成,此时调制模块通过OP_DOUT向光纤收发器发送调制报文结束符0xC3,发送完毕后,调制模块通过OP_DOUT继续向光纤发送48MHz方波。
至此,现场可编程逻辑门阵列FPGA将PROFIBUS总线报文数据转换为调制报文数据,并通过OP_DOUT发送至光纤收发器,再由光纤收发器将OP_DOUT电信号转换为光信号发送至光纤线缆。
步骤④:对光纤调制数据进行解调运算,解调运算输出数据写入发送数据缓存。
解调模块按照192MHz采样频率对光纤收发器输入的调制报文数据OP_DIN采样,将采样值按Bit位写入移位寄存器。当移位寄存器的值等于调制数据报文起始符0xF1时,解调模块开始对调制报文数据OP_DIN采样值进行解调运算,并将解调运算结果写入发送数据缓存。解调模块判断移位寄存器的值等于调制报文结束符0xC3时,继续对输入的调制报文数据OP_DIN进行采样,停止对OP_DIN采样值进行解调,停止向发送数据缓存写入解调数据。
解调模块在将解调数据写入发送数据缓存的同时,也将解调数据发送至接收串口数据模块,这是为了在光纤模块PROFIBUS总线接口未连接情况下,FPGA波特率搜索与锁定模块仍然能够通过光纤解调数据获取总线波特率。
步骤⑤:将发送数据缓存中的报文数据发送至PROFIBUS总线。
当波特率搜索与锁定模块处于锁定状态时,发送串口数据模块监测发送数据缓存中是否缓存解调串行报文数据。当发送数据缓存存有解调串行数据时,发送串口数据模块读取解调串行数据,并通过串行发送TXD数据线,按照波特率采样脉冲将解调串行数据发送到RS-485接口芯片,同时将发送请求RTS置为高电平‘1’。当发送数据缓存中的数据被读空时,发送串口数据模块将发送请求RTS置为低电平‘0’,同时将串行发送TXD置为高电平‘1’。
至此,光纤收发器将调制报文数据OP_DIN发送至现场可编程逻辑门阵列FPGA,FPGA将调制报文数据转换成PROFIBUS总线报文数据,通过串口发送TXD数据线输出至RS-485接口芯片,再由RS-485芯片发送至PROFIBUS串行差分线A线与B线,完成了光信号到电信号的转换。
表1:
Claims (7)
1.一种用于PROFIBUS的光纤接口转换模块的实现方法,所述PROFIBUS光纤接口转换模块的硬件,主要由现场可编程逻辑门阵列FPGA程序模块、PROFIBUS总线RS-485接口芯片以及光纤收发器模块组成;其中RS-485接口芯片用于连接PRUFIBUS总线网络,并在FPGA程序模块与PROFIBUS网络之间进行信号电平转换与传输;光纤收发器模块用于连接光纤线缆,并在FPGA程序模块与光纤线缆之间进行光/电转换和信号传输;现场可编程逻辑门阵列FPGA程序模块主要用于完成报文解析、波特率自适应、调制/解调和报文收/发功能;
其特征在于,该方法包括如下步骤:
步骤①:搜索和获取PROFIBUS总线报文数据波特率;
上电后,光纤接口转换模块在对PROFIBUS总线报文数据进行采样之前,要获取PROFIBUS总线报文数据波特率;可编程逻辑门阵列FPGA程序模块通过判断当前采样的PROFIBUS总线RS-485接口报文数据、或解调后的光纤收发器接收的数据是否符合PROFIBUS总线报文数据结构的方法,实现搜索和锁定当前PROFIBUS总线报文的数据波特率,从而完成波特率自适应过程;
步骤②:采样PROFIBUS总线报文数据,并将采样值写入接收数据缓存;
在可编程逻辑门阵列FPGA程序模块锁定当前PROFIBUS总线报文数据波特率的前提下,可编程逻辑门阵列FPGA程序模块利用波特率采样脉冲对PROFIBUS总线RS-485接口输入的报文数据或解调后的光纤收发器接口数据进行采样,并将采样值写入接收数据缓存;
步骤③:对PROFIBUS接收缓存数据进行调制运算,将运算结果发送至光纤收发器;
在可编程逻辑门阵列FPGA程序模块锁定当前PROFIBUS总线报文数据波特率的前提下,可编程逻辑门阵列FPGA程序模块对接收数据缓存中采样的PROFIBUS总线报文数据进行调制运算,调制运算采用将采样数据与特定频率的方波进行异或运算的方法实现,调制运算后的数据增加起始符和结束符后,经过光纤收发器发送至下一级光纤接口转换模块;
步骤④:对光纤调制数据进行解调运算,解调运算输出数据写入发送数据缓存;
上电后,当解调模块从光纤收发器接收端搜索到来自光纤总线的调制报文数据起始符后,开始对报文数据进行解调运算;本步骤不依赖于PROFIBUS数据波特率是否已被锁定;
解调运算采用将光纤收发器接收的调制信号与特定频率的方波进行异或运算的方法实现,解调运算产生的输出数据为PROFIBUS总线报文数据,可编程逻辑门阵列FPGA程序模块将该数据写入发送数据缓存,同时送往接收串口数据模块;
步骤⑤:将发送数据缓存中的报文数据发送至PROFIBUS总线;
在可编程逻辑门阵列FPGA程序模块锁定当前PROFIBUS总线报文数据波特率的前提下,可编程逻辑门阵列FPGA程序模块将发送数据缓存中解调出的PROFIBUS报文数据,按照锁定的波特率,通过RS-485接口芯片发送至PROFIBUS总线。
2.根据权利要求1所述的一种用于PROFIBUS的光纤接口转换模块的实现方法,其特征在于,所述光纤接口转换模块能够搜索的波特率范围包括9.6KBit/s、19.2KBit/s、45.45KBit/s、93.75KBit/s、187.5KBit/s、500KBit/s、1.5MBit/s、3MBit/s、6MBit/s、12MBit/s,共10个波特率值。
3.根据权利要求1所述的一种用于PROFIBUS的光纤接口转换模块的实现方法,其特征在于,可编程逻辑门阵列FPGA程序模块按照实现功能可划分为接收串口数据模块、发送串口数据模块、接收数据缓存模块、发送数据缓存模块、波特率搜索与锁定模块、波特率发生器模块、报文帧判决模块以及调制模块和解调模块。
4.根据权利要求3所述的一种用于PROFIBUS的光纤接口转换模块的实现方法,其特征在于,波特率搜索与锁定模块程序流程是:上电后,“波特率搜索与锁定模块”处于搜索状态,按不同的波特率依次、反复对PROFIBUS总线报文进行采样,直至“报文帧判决模块”发送报文帧判断正确结果标识,此时停止搜索波特率,模块进入波特率锁定状态;此后,如果由于总线波特率改变、或总线报文中断原因,使“报文帧判决模块”的判断结果发生变化,则“波特率搜索与锁定模块”将重新进入搜索状态,重复以上过程。
5.根据权利要求3所述的一种用于PROFIBUS的光纤接口转换模块的实现方法,其特征在于,调制模块程序流程是:当接收数据缓存中有PROFIBUS总线报文数据时,调制模块采用PROFIBUS波特率整数倍的特定频率12MHz方波,即24MBit/s信号作为载频对PROFIBUS数据报文进行调制运算;当接收数据缓存中没有PROFIBUS总线报文数据时,调制模块向光纤收发器发送载频4倍频后的48MHz方波,即96MBit/s信号作为无报文数据的空闲信号。
6.根据权利要求3所述的一种用于PROFIBUS的光纤接口转换模块的实现方法,其特征在于,波特率搜索与锁定模块,或接收串口数据模块进行工作时,数据方向可以来自RS-485接口芯片,也可以来自光纤模块解调后的结果;这样无论PROFIBUS主站在网络中位于RS-485接口一侧,还是光纤收发器一侧,光纤接口转换模块都可以正常工作。
7.根据权利要求3所述的一种用于PROFIBUS的光纤接口转换模块的实现方法,其特征在于,调制模块与解调模块的算法是完全一样的;S、T、G、R、分别为原始数据信号、载频信号、调制后的信号、解调后的信号、“异或”运算符,则调制过程:解调过程:。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510598531.XA CN105262542B (zh) | 2015-09-18 | 2015-09-18 | 一种用于profibus的光纤接口转换模块的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510598531.XA CN105262542B (zh) | 2015-09-18 | 2015-09-18 | 一种用于profibus的光纤接口转换模块的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105262542A true CN105262542A (zh) | 2016-01-20 |
CN105262542B CN105262542B (zh) | 2017-07-07 |
Family
ID=55102073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510598531.XA Active CN105262542B (zh) | 2015-09-18 | 2015-09-18 | 一种用于profibus的光纤接口转换模块的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105262542B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105959093A (zh) * | 2016-04-25 | 2016-09-21 | 成都大学 | 一种串行通信波特率实时自适应方法 |
CN107566042A (zh) * | 2017-08-28 | 2018-01-09 | 北京卓越信通电子股份有限公司 | 一种profibus冗余环网光纤收发器的实现方法 |
CN109932966A (zh) * | 2019-03-07 | 2019-06-25 | 东方电子股份有限公司 | 一种基于m-lvds总线实时高效数据传输方法 |
CN110597646A (zh) * | 2019-09-16 | 2019-12-20 | 五八有限公司 | 一种数据读写方法、系统、电子设备及存储介质 |
CN114706810A (zh) * | 2022-04-07 | 2022-07-05 | 中国兵器装备集团自动化研究所有限公司 | 基于fpga的波特率自适应串口通信扩展装置及方法 |
CN114726674A (zh) * | 2022-04-06 | 2022-07-08 | 北京鼎实创新科技股份有限公司 | 一种基于fpga的profibus总线工艺数据提取方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841542A (zh) * | 2010-05-07 | 2010-09-22 | 北京鼎实创新科技有限公司 | 基于fpga技术实现profibus主站通信协议的方法 |
CN201813395U (zh) * | 2010-10-14 | 2011-04-27 | 中国北车股份有限公司大连电力牵引研发中心 | 一种以太网-profibus-dp总线网关 |
CN103036823A (zh) * | 2012-12-14 | 2013-04-10 | 中船重工(武汉)凌久电子有限责任公司 | 基于fpga的波特率快速自适应方法、处理器及接收端 |
CN203618013U (zh) * | 2013-11-29 | 2014-05-28 | 南京科远自动化集团股份有限公司 | 一种RS485-Profibus PA总线转换器 |
US20150030337A1 (en) * | 2007-07-16 | 2015-01-29 | Ciena Corporation | High-speed optical transceiver for infiniband and ethernet |
-
2015
- 2015-09-18 CN CN201510598531.XA patent/CN105262542B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150030337A1 (en) * | 2007-07-16 | 2015-01-29 | Ciena Corporation | High-speed optical transceiver for infiniband and ethernet |
CN101841542A (zh) * | 2010-05-07 | 2010-09-22 | 北京鼎实创新科技有限公司 | 基于fpga技术实现profibus主站通信协议的方法 |
CN201813395U (zh) * | 2010-10-14 | 2011-04-27 | 中国北车股份有限公司大连电力牵引研发中心 | 一种以太网-profibus-dp总线网关 |
CN103036823A (zh) * | 2012-12-14 | 2013-04-10 | 中船重工(武汉)凌久电子有限责任公司 | 基于fpga的波特率快速自适应方法、处理器及接收端 |
CN203618013U (zh) * | 2013-11-29 | 2014-05-28 | 南京科远自动化集团股份有限公司 | 一种RS485-Profibus PA总线转换器 |
Non-Patent Citations (3)
Title |
---|
孙倩华等: "FPGA和ARM的Profibus-DP主站通信平台设计", 《单片机与嵌入式系统应用》 * |
杜军钊: "基于FPGA的PROFIBUS-DP总线光电收发器设计", 《电子元器件应用》 * |
王鑫: "基于FPGA的PROFIBUS-DP集线器设计", 《电子元器件应用》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105959093A (zh) * | 2016-04-25 | 2016-09-21 | 成都大学 | 一种串行通信波特率实时自适应方法 |
CN105959093B (zh) * | 2016-04-25 | 2019-02-12 | 成都大学 | 一种串行通信波特率实时自适应方法 |
CN107566042A (zh) * | 2017-08-28 | 2018-01-09 | 北京卓越信通电子股份有限公司 | 一种profibus冗余环网光纤收发器的实现方法 |
CN107566042B (zh) * | 2017-08-28 | 2019-12-13 | 北京卓越信通电子股份有限公司 | 一种profibus冗余环网光纤收发器的实现方法 |
CN109932966A (zh) * | 2019-03-07 | 2019-06-25 | 东方电子股份有限公司 | 一种基于m-lvds总线实时高效数据传输方法 |
CN109932966B (zh) * | 2019-03-07 | 2020-04-14 | 东方电子股份有限公司 | 一种基于m-lvds总线实时高效数据传输方法 |
CN110597646A (zh) * | 2019-09-16 | 2019-12-20 | 五八有限公司 | 一种数据读写方法、系统、电子设备及存储介质 |
CN114726674A (zh) * | 2022-04-06 | 2022-07-08 | 北京鼎实创新科技股份有限公司 | 一种基于fpga的profibus总线工艺数据提取方法 |
CN114726674B (zh) * | 2022-04-06 | 2023-12-29 | 北京鼎实创新科技股份有限公司 | 一种基于fpga的profibus总线工艺数据提取方法 |
CN114706810A (zh) * | 2022-04-07 | 2022-07-05 | 中国兵器装备集团自动化研究所有限公司 | 基于fpga的波特率自适应串口通信扩展装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105262542B (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105262542A (zh) | 一种用于profibus的光纤接口转换模块的实现方法 | |
CN107147600B (zh) | 一种基于神经网络的数字调制信号解调器及其解调方法 | |
CN102820926B (zh) | 一种光纤网络系统及采用该系统的异步通信数据在光纤传输上调制解调的方法 | |
CN102104575A (zh) | 一种bfsk扩频载波电力线通信方法及系统 | |
CN107171728B (zh) | 1b4b与曼彻斯特编码的正向、反向传输方法及装置、系统 | |
CN105208467A (zh) | 宽带接入网系统的帧对齐装置 | |
CN118138414B (zh) | 一种无线供能融合时间索引调制的新型dcsk通信系统 | |
CN101431389B (zh) | 一种电路及其信号的传输方法 | |
CN1152827A (zh) | 通信设备 | |
CN102638315B (zh) | 用于光通信系统中的多进制数字脉冲周期调制和解调方法 | |
CN107370567A (zh) | 一种Turbo解码方法 | |
CN105072058A (zh) | 一种基于光纤传输的数据正反相位编码方法及数据传输方法 | |
CN204615911U (zh) | 一种低压电力线载波通信的调制解调芯片及装置 | |
Bali et al. | Improved Maximum Likelihood S‐FSK Receiver for PLC Modem in AMR | |
CN103117774A (zh) | 一种用于电力载波通信芯片 | |
Voutsinas et al. | Control and communication for smart photovoltaic arrays | |
CN105656517B (zh) | 一种岛屿信息传输测控系统 | |
CN104158779B (zh) | 一种基于脉宽等长机制的fsk调制方法 | |
CN106921436B (zh) | 用于对多种速率的数据进行处理的方法及装置 | |
CN108718294A (zh) | 适用于控制系统的通信方法及通信装置 | |
CN107222441A (zh) | 一种新的差分混沌键控通信方法 | |
CN207743963U (zh) | 一种基于LiFi灯光与二维码的传输装置 | |
CN109905176A (zh) | 一种光信号数据的解析方法 | |
CN104734749A (zh) | 一种用于电力载波通信芯片 | |
CN105103446A (zh) | 一种信号处理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |