CN114726674A - 一种基于fpga的profibus总线工艺数据提取方法 - Google Patents
一种基于fpga的profibus总线工艺数据提取方法 Download PDFInfo
- Publication number
- CN114726674A CN114726674A CN202210355608.0A CN202210355608A CN114726674A CN 114726674 A CN114726674 A CN 114726674A CN 202210355608 A CN202210355608 A CN 202210355608A CN 114726674 A CN114726674 A CN 114726674A
- Authority
- CN
- China
- Prior art keywords
- data
- message
- profibus
- fpga
- bus
- 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
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000013075 data extraction Methods 0.000 title claims abstract description 8
- 238000012544 monitoring process Methods 0.000 claims abstract description 19
- 238000004458 analytical method Methods 0.000 claims abstract description 5
- 238000004806 packaging method and process Methods 0.000 claims abstract description 4
- 238000001914 filtration Methods 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 11
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 239000000284 extract Substances 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 3
- 238000002372 labelling Methods 0.000 claims description 3
- 238000005538 encapsulation Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 5
- 238000012800 visualization Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013079 data visualisation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
- H04L43/045—Processing captured monitoring data, e.g. for logfile generation for graphical visualisation of monitoring data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
- H04L43/103—Active monitoring, e.g. heartbeat, ping or trace-route with adaptive polling, i.e. dynamically adapting the polling rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/4026—Bus for use in automation systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于FPGA的PROFIBUS总线工艺数据提取方法,包括如下步骤:步骤①:搜索和获取PROFIBUS总线报文数据波特率;步骤②:实时监测总线电平变化判定报文起始位,当监测到数据帧起始时,标注时间标签;步骤③:采样PROFIBUS报文数据,并对数据进行初步解析;步骤④:将有效的数据和相对应的时间标签,以特定的格式封装在一起,写入双口RAM;步骤⑤:连接双口RAM另一侧的MCU将双口RAM中的数据读出并通过TCP协议,将数据顺序传至上位PC机。步骤⑥:通过PC上运行的上位软件显示抓取到的工艺数据。本发明提供一种在线实时监测控制系统PROFIBUS上有效工艺数据,用以分析系统性能、产品质量的方法。
Description
技术领域
本发明涉及工业自动化通讯总线的监测技术,具体涉及基于FPGA的PROFIBUS总线工艺数据的提取方法。
背景技术
PROFIBUS现场总线是当今应用最为广泛的工业通信网络之一,通常由PROFIBUS主站、从站、总线电缆和其它网络部件组成。
由于PROFIBUS现场总线在通讯时,数据在PROFIBUS主站和从站传递,报文内容并不可见,如果工程人员需要知道报文的具体内容,就需要从PROFIBUS主站,例如PLC中提取数据,或者将额外的信号转换工具接入总线,将报文传至PC机。但是这些方法均存在一定的缺陷:从PLC中提取的数据往往存在报文的缺失;传统的信号转换工具支持的波特率不高,而且没有报文之间的时间间隔等信息。而且在某些情况下,现场工程人员并不熟悉PROFIBUS总线协议,如果使用传统方法将总线上所有的数据提取出来,他们并不能直接获得需要的信息。在一些情况下,现场工程人员主要仅仅需要报文中所包含的工艺数据,即报文净荷,以及主站、从站发出的报文之间的时间关系。
这就需要一种总线监测工具,可以接入PROFIBUS总线,在所有PROFIBUS规定的波特率下,可以提取报文数据,并能提取其中的工艺数据,标识精确的时间标签,最终通过常规的通讯接口,将工程人员关注的数据传输给PC机,在PC机上完成数据的可视化。
PROFIBUS总线工艺数据提取方法的难点在于:
①PROFIBUS的最高串口波特率较高,达到12M,在数据监测过程中,需利用FPGA的串口接收模块对总线电平无缝监测,做到不缺失原始数据。
②报文监测时,并行实时分析数据,直接过滤不需要的数据,提取有效数据,并标注时间标签。
③生成便于工程人员解析的数据包,只包含长度、时间标签、工艺数据等内容,方便获取到数据的工程人员在PC机上对数据进行二次开发,实现PROFIBUS总线工艺数据在PC机上的可视化。
发明内容
本发明的目的是提供一种基于FPGA的PROFIBUS总线工艺数据提取方法,通过FPGA对PROFIBUS总线数据进行抓取、解析、提取有效数据、标识时间标签,重新封包并通过以太网将最终数据上传给PC机,使工程人员能够在PC端直接获得带时间标签的工艺数据,从而解决PROFIBUS总线中的工艺数据在PC端的可视化问题。
为了实现上述发明目的,本发明采用如下技术方案:
一种基于FPGA的PROFIBUS总线工艺数据提取方法,所述的PROFIBUS报文数据的获取,硬件部分主要由现场可编程逻辑门阵列FPGA程序模块、PROFIBUS总线RS-485物理层芯片、单片机MCU以及运行上位软件的PC机组成;其中RS-485物理层接口芯片(PHY)用于连接PRUFIBUS总线网络,并在FPGA程序模块与PROFIBUS网络之间进行信号电平转换与传输;现场可编程逻辑门阵列FPGA程序模块主要用于实现波特率自适应、报文抓取、报文过滤、内容提取、标注时间标签、封装成新的数据格式、数据缓存等功能;单片机MCU主要用于运行TCP/IP协议栈,将数据通过以太网传到PC机;PC机上运行的上位软件主要用于数据的最终展示。
该方法包括如下步骤:
步骤①:搜索和获取PROFIBUS总线报文数据波特率;
上电后,首先要自动获取PROFIBUS总线报文数据波特率;可编程逻辑门阵列FPGA模块通过预设波特率值,并判断当前预设值下,采样的PROFIBUS总线RS-485接口报文数据是否符合PROFIBUS总线报文数据结构的方法,实现搜索和锁定当前PROFIBUS总线报文的数据波特率的功能,从而完成波特率自适应过程;
步骤②:实时监测总线电平变化判定报文起始位,当监测到数据帧起始时,标注时间标签;
在可编程逻辑门阵列FPGA程序模块锁定当前PROFIBUS总线报文数据波特率的前提下,FPGA程序模块中有一个以当前比特时间(Tbit)驱动的计数器,作为锁定波特率后的相对时间基准。程序模块实时监测总线电平的变化,在总线静默的情况下,一旦发现接收信号Rx的下降沿,即作为一个数据帧的起始标志,程序模块会记录此时刻对应的时间计数器数值,即此数据帧的时间标签。
步骤③:采样PROFIBUS报文数据,并对数据进行初步解析;
可编程逻辑门阵列FPGA程序模块监测到数据帧起始后,按照PROFIBUS编码层和数据链路层的标准解析数据帧的后续部分。根据解析的报文内容,丢弃不包含工艺数据的报文段以及相对应的时间标签。
步骤④:将有效的数据和相对应的时间标签,以特定的格式封装在一起,写入双口RAM;
可编程逻辑门阵列FPGA程序模块进一步提取报文中的工艺数据,即PROFIBUS数据交换报文中的数据净荷部分,与之前记录的时间标签一起,封装成自定义的新数据包,并将其按顺序写进FPGA内的双口RAM里,并给出一个信号,告知MCU有新的数据待读取。
步骤⑤:连接双口RAM另一侧的MCU将双口RAM中的数据读出并通过TCP协议,将数据顺序传至上位PC机。
MCU通过双口RAM的另一侧读取数据,并通过TCP协议,将带有时间标签信息的PROFIBUS报文传至上位机。
步骤⑥:通过PC上运行的上位软件显示抓取到的工艺数据;
最终,带有时间标签的工艺数据,以直观、方便查阅的格式,在PC端的上位软件中显示。
可编程逻辑门阵列FPGA程序模块按照实现功能可划分为波特率搜索与锁定模块、波特率发生器模块、串口数据接收模块、报文帧解析及过滤模块、时间标签生成模块、自定义数据包生成模块、双口RAM写控制模块及双口RAM模块。
FPGA数据接收模块运行频率是PROFIBUS总线最通讯高波特率12M的8倍,即96MHz。FPGA串口数据接收模块在时间上无缝监测总线电平变化,实时进行报文的解析和转存,PROFIBUS运行在9.6K~12M时,数据都能100%被解析,不存在丢包的情况。FPGA的报文帧解析及过滤模块通过解析数据帧的第一个字节,过滤掉SD2之外的报文,再解析至SAP位时,进一步过滤过滤掉非数据交换阶段的报文。最后通过解析当前数据位在数据帧的位置和长度位,提取数据帧的工艺数据部分。过滤掉的无用信息不再向后传递到MCU。
FPGA串口数据接收模块在监测到有效数据帧时,要依据此数据帧第一个Byte的第一个Bit的下降沿,精确的给数据帧打时间标签。即记录此下降沿到来的时刻,时间计数器的值,并与当前的数据帧相对应的存储在缓存中。
FPGA自定义了一种数据封装,其结构是:固定内容为0x46,0x53(2Byte)的报文头,跟在后面的内容依次是:数据净荷长度(1Byte)、总线当前波特率(1Byte)、时间标签(6Byte)、工艺数据净荷(长度取决于前面提到的数据净荷长度位的内容)。此数据封装的长度4Byte对齐,如果数据封装的总长度不能被4整除,将在封装的末尾补充0xFF,直至总长度能被4整除。
本发明有以下积极效果:
本发明的FPGA内部采用专有的报文监测模块,对PROFIBUS总线的物理层信号进行无间断监测,可以做到PROFIBUS协议全波特率(9.6K-12M)的无丢包解析,且波特率是自适应的,基本不需要额外配置。可以实现在线、实时且长时间监测PROFIBUS控制系统上有效工艺数据,使现场工程师可以脱离PROFIBUS协议,以最简单的方式,直接获得真正需要的数据内容,用以分析系统性能、产品质量。
附图说明
图1是本发明的整体硬件框图。
图2是本发明中,现场可编程逻辑门阵列FPGA内部各功能模块结构图。
图3是本发明中,报文解析及过滤模块工作的状态机跳转图。
图4是本发明中的自定义数据包结构以及此数据包在双口RAM中的排列。
图5是本发明中MCU程序简要流程图。
图6是本发明中TCP传输数据的简要流程图。
具体实施方法
本发明通过FPGA对PROFIBUS总线从物理层开始进行报文的基础抓取,通过解析报文进行有用信息(即报文中包含的工艺数据)的提取,并对其加上时间标签。带有时间标签的报文先通过并口传入MCU,最终通过MCU中的TCP/IP协议栈,将所有数据通过标准以太网上传至PC机,从而达到报文中工艺数据可视化的目的。
同时,现场工程人员可以在脱离PROFIBUS协议的情况下,在PC机上,对接收到的工艺数据进行二次开发,以便于更好的分析、处理和使用数据。
参照图1,在本发明中,硬件部分主要由现场可编程逻辑门阵列FPGA、PROFIBUS总线RS-485物理层芯片、单片机MCU以及运行上位软件的PC机组成。
RS-485物理层接口芯片(PHY)用于连接PRUFIBUS总线网络,将总线上的RS-485电平,转换为FPGA能够接收的TTL电平。
由于本发明仅涉及从总线上获取数据,不会向总线上发送数据,因此PHY芯片与FPGA的通讯接口只有TTL电平的Rx信号线一条。
通过Rx信号线的数据,经过FPGA内的模块处理后,最终要传至MCU的数据会存储在由FPGA内部IP核生成的双口RAM中,FPGA的模块,控制此双口RAM的写,MCU程序控制此双口RAM的读。双口RAM对外的接口是通用并行总线,因此MCU与FPGA之间的通信接口是并行总线。除此之外,FPGA控制一条中断线,用于告知MCU有数据待读取。
MCU至PC机的通信采用标准以太网线,接口是RJ-45。
本发明使用的现场可编程逻辑门阵列FPGA为美国Lattice公司LFXP2-8E-5TN144I芯片。
本发明使用的单片机MCU为意法半导体公司的STM32-F407ZGT6芯片。
上述各硬件之间的通讯关系:RS-485芯片将接收到的PROFIBUS总线A线与B线信号转换成TTL电平标准的串行接收Rx信号,并将此信号发送至现场可编程逻辑门阵列FPGA。FPGA采样Rx信号,进行数据串并转换,内容解析,内容提取,加时间标签,自定义报文包生成,数据缓存等操作,最终将数据传递至由FPGA内部IP核生成的双口RAM中缓存,同时通过中断脉冲通知MCU,双口RAM中有数据待读取。MCU响应中断,从双口RAM中读取数据。数据在MCU中也做一级缓存,之后通过MCU控制的PHY芯片,配合其内部运行的TCP/IP协议栈,被传递至PC上位机。
参照图2,本发明中,现场可编程逻辑门阵列FPGA程序模块按照实现功能可划分为波特率搜索与锁定模块、波特率发生器模块、串口数据接收模块、报文帧解析及过滤模块、时间标签生成模块、自定义数据包生成模块、双口RAM写控制模块及双口RAM模块。
在PFGA借助波特率搜索与锁定模块确定当前PROFIBUS总线波特率的条件下,接收串口数据模块按照波特率采样脉冲对串行接收数据Rx进行采样,将采样的数据进行串并转换,转换后的数据以Byte的形式发送至报文帧解析及过滤模块,进行报文级的解析。
符合过滤条件并且不存在传输错误的报文,会向后传递至自定义数据包生成模块。
在自定义数据包生成模块中,报文的有效数据部分被提取出来,与时间标签生成模块传递过来的,和此条报文相对应的时间标签一起,合并成新的自定义数据包。之后此数据包被传递至双口RAM写控制模块。
最终,双口RAM写控制模块将自定义的数据包,以报文序列的形式,顺序写进双口RAM,每写完一条报文,都会向外发中断脉冲,期待MCU响应此中断并从双口RAM中将报文读出。
参照图3,本发明的核心目的是要提取报文中的工艺数据,而工艺数据存在于处于数据交换状态的SD2报文中。报文帧解析及过滤模块的主要功能,就是:
A.过滤不包含工艺数据的报文。
B.过滤有数据链路层错误的报文。
图3是解析报文模块的状态机跳转图,状态机从监测到报文帧的起始时刻开始跳转,根据顺序收到的字节内容进行判定,只要有不符合预期的内容,状态机跳回初始状态,重新开始监测报文帧的起始时刻,而已经收到的报文部分直接丢弃,不向后续模块传递。对于完全符合条件的数据帧,状态机会最终跳转到“接收完毕”的状态。只有状态机正常跳转到此最终状态,报文数据才会继续向后续模块传递。
具体针对过滤不包含工艺数据报文的方法如下:
如表1所列,工艺数据包含在PROFIBUS的SD2报文中,SD2报文帧以0x68为起始字节,且在第四个字节重复。如果第一个字节和第四个字节不是SD2的标准起始字节,即0x68,当前帧被丢弃。
进一步只有在循环数据交换过程的SD2报文才包含工艺数据,此类报文在报文帧的DA和SA位,最高的一个bit,即bit7=0,因此当收到DA位时,判定其bit7是否为0,如果是1,则当前帧被丢弃。
具体针对过滤错误报文的方法如下:
SD2报文的第二个字节和第三个字节是报文的长度字节,此两个字节内容必须相等,如果不相等,则丢弃此帧。
FCS是报文帧的校验位,本模块在开始接收报文后,每收到一个Byte都进行FCS计算。当收到FCS位时,比对自行计算的FCS结果和收到报文的内容,如果二者内容不一样,说明FCS校验错误,丢弃此数据帧。
根据PROFIBUS规定,SD2报文帧以0x16为结尾,如果收到报文的最后一个字节,其内容不是0x16,则丢弃此帧。
最终完全符合条件的数据帧,被向后传递到自定义数据包生成模块。
参照图4,此图是本发明中,被传递到自定义数据包生成模块的数据帧,在此模块中被排列成自定义的数据包结构。每条工艺数据报文,会在真实数据之前,插入固定长度为10Byte的辅助报文头,此报文头各部分的内容和功能如下:
Byte1、Byte2:固定内容,为0x46、0x53。此两个Byte的功能是报文帧分段。最终报文在双口RAM里,是按序列依次排列的,向PC机传输的过程中,TCP包与工艺数据报文包不一一对应,一次TCP传输,有可能包含多个工艺数据报文(最大TCP包的字节数,远远大于一个PROFIBUS报文帧的最大字节数)。一包数据到达PC后,也会按照到达PC的先后顺序,被拼成一个大数据包。PC端的上位程序,需要依靠此报文头,将数据逐帧区分开。
Byte3:长度信息,表示除了10个Byte的报文头之外的数据净荷的总长度。
Byte4:当前波特率,波特率搜索与锁定模块会将当前被锁定的波特率传递到此模块,此模块将波特率值写入每个自定义数据包的Byte4中。
Byte5-Byte10:时间标签,体现各个报文之间的时间间隔。时间标签生成模块会实时监测一个报文帧的起始时刻,并记录报文帧第一个下降沿的时间值。如果当前数据帧是有效数据帧,此时间值会被传递到自定义数据包生成模块,并被写到Byte5-Byte10的位置上,共6个Byte。
从Byte11开始,就是从抓取到的SD2报文帧中,提取到的数据。为了尽量减少后续传输的数据量,自定义数据包的数据部分,删去了原先SD2报文中的帧头,长度,FCS和帧尾等内容,仅包含可视化应用中真正需要的主从站站点信息、FC功能码和真正的工艺数据。
自定义数据包的总长度是4Byte对齐,如果写完工艺数据内容的最后一个Byte,数据包的总长不能被4整除,会在报文后面自动补充0xFF,直至总长度能被4整除。
数据包排列完成后,通知双口RAM写控制模块,双口RAM写控制模块负责从自定义数据包生成模块中读出独立的数据包,并将其按报文序列的模式,从双口RAM的A口写入双口RAM。
报文完全写入之后,双口RAM写控制模块还需要将当前A口的写地址指针写到双口RAM的一个独立区域,并发出中断脉冲,期待MCU响应此中断。
双口RAM同时起着数据缓存的作用,尽管每条有效数据包准备完毕,都会发出中断脉冲,但是如果MCU忙,没有及时响应中断(即没有及时读取当前数据),也没有关系,下一个数据包到来时,会排列在当前数据包的后面,如果MCU可以响应本次中断,会将之前所有未读取的数据全部读取至MCU。由于FPGA与MCU之间的并口总线带宽远远大于PROFIBUS串行协议最大通讯波特率12M,所有包含工艺数据的报文将会100%无损失的传递至MCU。
参照图5,是本发明MCU程序的简要流程图。在本发明中,MCU的主要作用是通过双口RAM读取FPGA传递过来的数据包,同时MCU运行一个TCP协议栈。从双口RAM读出的数据在MCU内不进行解析,所有数据直接通过TCP协议栈上传至PC。
MCU上电后,首先要初始化必要的硬件:
中断:FPGA利用中断告知MCU有数据要读取。
时钟:运行TCP协议栈时必要的各种计时器。
MII接口:MCU与以太网PHY的通讯接口。
并口:读写双口RAM里的数据。
接下来程序会初始化TCP协议栈。
最后程序进入轮询阶段。在轮询阶段中仅轮询两个事件:
TCP连接是否正常?程序需不断判断TCP连接是否正常,如果连接断开,需要重新进行连接。
是否有待传输数据?当轮询到有数据要传输时,需要从双口RAM里读取数据并最终将其拷贝至TCP的发送缓冲区里进行发送。
参照图6,是本发明中,利用TCP协议发送数据至PC的流程图。
首先在轮询中判定是否有数据要发送,判定的依据是:当FPGA发中断信号时,同时通过双口RAM传递当前双口RAM的写地址指针。MCU响应中断后,读出双口RAM写地址指针,与本地控制的双口RAM读地址指针做对比,二者不相同,就说明双口RAM中有数据待读出。
双口RAM读/写指针的差值,就是待读取的数据长度。
MCU确定要读取的长度后,将数据从双口RAM中读到MCU内部的RAM中。
之后将MCU内部RAM的首地址和当前MCU内部待传输数据的总长度,传递给TCP发送函数。
TCP发送函数会将数据拷贝至最终的发送缓冲区,并进行发送。
每次发送完毕,需要更新本地的双口RAM读地址指针,如果全部数据发送完毕,在下一个中断到来之前,双口RAM的读/写地址指针的值应该是一致的。
表1
SD2 | LE | LEr | SD | DA | SA | FC | DSAP | SSAP | DU | FCS | ED |
68H | xx | xx | 68H | xx | xx | xx | xx | xx | …… | xx | 16H |
Claims (6)
1.一种基于FPGA的PROFIBUS总线工艺数据提取方法,所述的PROFIBUS报文数据的获取,硬件部分主要由现场可编程逻辑门阵列FPGA程序模块、PROFIBUS总线RS-485物理层芯片、单片机MCU以及运行上位软件的PC机组成;其中RS-485物理层接口芯片(PHY)用于连接PRUFIBUS总线网络,并在FPGA程序模块与PROFIBUS网络之间进行信号电平转换与传输;现场可编程逻辑门阵列FPGA程序模块用于实现波特率自适应、报文抓取、报文过滤、内容提取、标注时间标签、封装成新的数据格式、数据缓存功能;单片机MCU用于运行TCP/IP协议栈,将数据通过以太网传到PC机;PC机上运行的上位软件主要用于数据的最终展示;
其特征在于,该方法包括如下步骤:
步骤①:搜索和获取PROFIBUS总线报文数据波特率;
上电后,首先要自动获取PROFIBUS总线报文数据波特率;可编程逻辑门阵列FPGA模块通过预设波特率值,并判断当前预设值下,采样的PROFIBUS总线RS-485接口报文数据是否符合PROFIBUS总线报文数据结构的方法,实现搜索和锁定当前PROFIBUS总线报文的数据波特率的功能,从而完成波特率自适应过程;
步骤②:实时监测总线电平变化判定报文起始位,当监测到数据帧起始时,标注时间标签;
在可编程逻辑门阵列FPGA程序模块锁定当前PROFIBUS总线报文数据波特率的前提下,FPGA程序模块中有一个以当前比特时间Tbit驱动的计数器,作为锁定波特率后的相对时间基准;程序模块实时监测总线电平的变化,在总线静默的情况下,一旦发现接收信号Rx的下降沿,即作为一个数据帧的起始标志,程序模块会记录此时刻对应的时间计数器数值,即此数据帧的时间标签;
步骤③:采样PROFIBUS报文数据,并对数据进行初步解析;
可编程逻辑门阵列FPGA程序模块监测到数据帧起始后,按照PROFIBUS编码层和数据链路层的标准解析数据帧的后续部分。根据解析的报文内容,丢弃不包含工艺数据的报文段以及相对应的时间标签;
步骤④:将有效的数据和相对应的时间标签,以特定的格式封装在一起,写入双口RAM;
可编程逻辑门阵列FPGA程序模块进一步提取报文中的工艺数据,即PROFIBUS数据交换报文中的数据净荷部分,与之前记录的时间标签一起,封装成自定义的新数据包,并将其按顺序写进FPGA内的双口RAM里,并给出一个信号,告知MCU有新的数据待读取;
步骤⑤:连接双口RAM另一侧的MCU将双口RAM中的数据读出并通过TCP协议,将数据顺序传至上位PC机;
MCU通过双口RAM的另一侧读取数据,并通过TCP协议,将带有时间标签信息的PROFIBUS报文传至上位机;
步骤⑥:通过PC上运行的上位软件显示抓取到的工艺数据;
最终,带有时间标签的工艺数据,以直观、方便查阅的格式,在PC端的上位软件中显示。
2.根据权利要求1所述的一种基于FPGA的PROFIBUS总线工艺数据提取方法,其特征在于,可编程逻辑门阵列FPGA程序模块按照实现功能可划分为波特率搜索与锁定模块、波特率发生器模块、串口数据接收模块、报文帧解析及过滤模块、时间标签生成模块、自定义数据包生成模块、双口RAM写控制模块及双口RAM模块。
3.根据权利要求1所述的一种基于FPGA的PROFIBUS总线工艺数据提取方法,其中步骤②中,FPGA数据接收模块运行频率是PROFIBUS总线最高通讯波特率12M的8倍,即96MHz。FPGA串口数据接收模块在时间上无缝监测总线电平变化,实时进行报文的解析和转存,PROFIBUS运行在9.6K~12M时,数据都能100%被解析,不存在丢包的情况。
4.根据权利要求1所述的一种基于FPGA的PROFIBUS总线工艺数据提取方法,其中步骤③中,FPGA的报文帧解析及过滤模块通过解析数据帧的第一个字节,过滤掉SD2之外的报文,再解析至SAP位时,进一步过滤掉非数据交换阶段的报文;最后通过解析当前数据位在数据帧的位置和长度位,提取数据帧的工艺数据部分;过滤掉的无用信息不再向后传递到MCU。
5.根据权利要求1所述的一种基于FPGA的PROFIBUS总线工艺数据提取方法,其中步骤②中,FPGA串口数据接收模块在监测到有效数据帧时,要依据此数据帧第一个Byte的第一个Bit的下降沿,精确的给数据帧打时间标签;即记录此下降沿到来的时刻,时间计数器的值,并与当前的数据帧相对应的存储在缓存中。
6.根据权利要求1所述的一种基于FPGA的PROFIBUS总线工艺数据提取方法,其中步骤④中,自定义了一种数据封装,固定内容为0x46,0x53的报文头,跟在后面的内容依次是:数据净荷长度、总线当前波特率、时间标签、工艺数据净荷;此数据封装的长度4Byte对齐,如果数据封装的总长度不能被4整除,将在封装的末尾补充0xFF,直至总长度能被4整除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210355608.0A CN114726674B (zh) | 2022-04-06 | 2022-04-06 | 一种基于fpga的profibus总线工艺数据提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210355608.0A CN114726674B (zh) | 2022-04-06 | 2022-04-06 | 一种基于fpga的profibus总线工艺数据提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114726674A true CN114726674A (zh) | 2022-07-08 |
CN114726674B CN114726674B (zh) | 2023-12-29 |
Family
ID=82242394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210355608.0A Active CN114726674B (zh) | 2022-04-06 | 2022-04-06 | 一种基于fpga的profibus总线工艺数据提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114726674B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116847004A (zh) * | 2023-08-30 | 2023-10-03 | 江铃汽车股份有限公司 | 一种汽车can信号的解析方法、系统及计算机设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841542A (zh) * | 2010-05-07 | 2010-09-22 | 北京鼎实创新科技有限公司 | 基于fpga技术实现profibus主站通信协议的方法 |
CN103914031A (zh) * | 2013-12-04 | 2014-07-09 | 哈尔滨安天科技股份有限公司 | 一种自适应多种协议的rs-485总线监测探头电路 |
CN105262542A (zh) * | 2015-09-18 | 2016-01-20 | 北京鼎实创新科技股份有限公司 | 一种用于profibus的光纤接口转换模块的实现方法 |
CN107612800A (zh) * | 2017-09-14 | 2018-01-19 | 北京鼎实创新科技股份有限公司 | 一种连接profibus冗余网络与单总线网络的y型转换设备的实现方法及控制装置 |
CN110519138A (zh) * | 2019-08-12 | 2019-11-29 | 北京和利时系统工程有限公司 | 一种Profibus-DP主站协议的实现方法及系统 |
CN111679993A (zh) * | 2020-05-29 | 2020-09-18 | 湖南苍树航天科技有限公司 | 一种多通道并行同步总线控制器 |
-
2022
- 2022-04-06 CN CN202210355608.0A patent/CN114726674B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841542A (zh) * | 2010-05-07 | 2010-09-22 | 北京鼎实创新科技有限公司 | 基于fpga技术实现profibus主站通信协议的方法 |
CN103914031A (zh) * | 2013-12-04 | 2014-07-09 | 哈尔滨安天科技股份有限公司 | 一种自适应多种协议的rs-485总线监测探头电路 |
CN105262542A (zh) * | 2015-09-18 | 2016-01-20 | 北京鼎实创新科技股份有限公司 | 一种用于profibus的光纤接口转换模块的实现方法 |
CN107612800A (zh) * | 2017-09-14 | 2018-01-19 | 北京鼎实创新科技股份有限公司 | 一种连接profibus冗余网络与单总线网络的y型转换设备的实现方法及控制装置 |
CN110519138A (zh) * | 2019-08-12 | 2019-11-29 | 北京和利时系统工程有限公司 | 一种Profibus-DP主站协议的实现方法及系统 |
CN111679993A (zh) * | 2020-05-29 | 2020-09-18 | 湖南苍树航天科技有限公司 | 一种多通道并行同步总线控制器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116847004A (zh) * | 2023-08-30 | 2023-10-03 | 江铃汽车股份有限公司 | 一种汽车can信号的解析方法、系统及计算机设备 |
CN116847004B (zh) * | 2023-08-30 | 2023-11-17 | 江铃汽车股份有限公司 | 一种汽车can信号的解析方法、系统及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114726674B (zh) | 2023-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6724729B1 (en) | System analyzer and method for synchronizing a distributed system | |
CN109089029B (zh) | 一种基于FPGA的Gige Vision接口图像传输系统与方法 | |
CN105099828A (zh) | 一种高性能网络测试仪及其实现方法 | |
CN210804041U (zh) | 多总线协议转换及数据采集系统 | |
US9066162B2 (en) | Industrial controller apparatus capable of low error, ultra high-speed serial communication and method for driving same | |
CN108023787B (zh) | 基于fpga的以太网业务测试装置及方法 | |
US4680755A (en) | Real-time end of packet signal generator | |
CN107579894B (zh) | 一种基于fpga的ebr1553总线协议实现装置 | |
CN111917753B (zh) | 一种基于位域的Modbus TCP报文解析方法 | |
CN114726674A (zh) | 一种基于fpga的profibus总线工艺数据提取方法 | |
CN105406920B (zh) | 一种支持千兆以太网协议处理的光模块 | |
CN111211863B (zh) | Mac发射端、mac接收端及电路、fpga芯片及数据传输系统 | |
CN114356829B (zh) | 一种基于串口收发的协议自适应识别、跨平台、标准化的系统 | |
CN107276834B (zh) | 一种航空电子环境下光纤通道流量分析记录方法及装置 | |
EP1388952B1 (en) | Transceiver having shadow memory facilitating on-transceiver collection and communication of local parameters | |
CN102158381A (zh) | 智能电网中双模式网络数据采集装置及网络数据采集系统 | |
EP0739561B1 (en) | Apparatus and method for selectively storing error statistics | |
CN100426788C (zh) | 异步串口数据的远程传输方法 | |
CN101771617B (zh) | 点到点带宽跟随方法及系统、远端设备及本端设备 | |
CN212009372U (zh) | 工控数据融合采集系统 | |
CN114509966A (zh) | 一种非同步高速串口实时连续数据采集系统 | |
CN108900596B (zh) | Wtb物理层数据帧采集装置及数据帧采集方法 | |
CN114143135B (zh) | 一种远距离数据传输装置、系统及方法 | |
CN112799124B (zh) | 分布式地震勘探采集系统数据传输方法及装置 | |
CN110138665B (zh) | 一种吉比特级SpaceWire路由器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |