CN114726674A - 一种基于fpga的profibus总线工艺数据提取方法 - Google Patents

一种基于fpga的profibus总线工艺数据提取方法 Download PDF

Info

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
Application number
CN202210355608.0A
Other languages
English (en)
Other versions
CN114726674B (zh
Inventor
罗小易
梁亚青
王彪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing D&s Fieldbus Technology Co ltd
Original Assignee
Beijing D&s Fieldbus Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing D&s Fieldbus Technology Co ltd filed Critical Beijing D&s Fieldbus Technology Co ltd
Priority to CN202210355608.0A priority Critical patent/CN114726674B/zh
Publication of CN114726674A publication Critical patent/CN114726674A/zh
Application granted granted Critical
Publication of CN114726674B publication Critical patent/CN114726674B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • H04L43/045Processing captured monitoring data, e.g. for logfile generation for graphical visualisation of monitoring data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/103Active monitoring, e.g. heartbeat, ping or trace-route with adaptive polling, i.e. dynamically adapting the polling rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40208Bus networks characterized by the use of a particular bus standard
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/4026Bus for use in automation systems
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total 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总线工艺数据提取方法
技术领域
本发明涉及工业自动化通讯总线的监测技术,具体涉及基于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整除。
CN202210355608.0A 2022-04-06 2022-04-06 一种基于fpga的profibus总线工艺数据提取方法 Active CN114726674B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116847004A (zh) * 2023-08-30 2023-10-03 江铃汽车股份有限公司 一种汽车can信号的解析方法、系统及计算机设备

Citations (6)

* Cited by examiner, † Cited by third party
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 湖南苍树航天科技有限公司 一种多通道并行同步总线控制器

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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