CN109901469A - 一种基于fpga技术实现profibus-pa总线通信的方法 - Google Patents
一种基于fpga技术实现profibus-pa总线通信的方法 Download PDFInfo
- Publication number
- CN109901469A CN109901469A CN201910182696.7A CN201910182696A CN109901469A CN 109901469 A CN109901469 A CN 109901469A CN 201910182696 A CN201910182696 A CN 201910182696A CN 109901469 A CN109901469 A CN 109901469A
- Authority
- CN
- China
- Prior art keywords
- data
- profibus
- message
- read
- fpga chip
- 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
Abstract
本发明公开了一种基于FPGA技术实现PROFIBUS‑PA总线通信的方法,步骤:①在FPGA芯片中实现了PA通信链路层、曼彻斯特编码调制解调、报文解析与拼接、共享存储器DPRAM、通信接口等功能;②接收的PA总线标准电平信号通过外围驱动电路进入FPGA芯片被解调为PA总线报文,发送的总线报文由FPGA芯片调制为曼彻斯特编码后由外围驱动电路转换为PA总线标准电平信号;③FPGA芯片实现了标准PROFIBUS通信状态机制;④FPGA芯片和微控制单元MCU之间通过通信接口完成共享存储器DPRAM中各种数据的相互传输;⑤上电后,微控制单元MCU将PA从站初始化信息通过共享存储器DPRAM发送给FPGA芯片;⑥FPGA芯片按照获得的PA从站初始化信息完成总线通信。本发明实现了一种以低功耗FPGA芯片为核心技术实现PROFIBUS‑PA通信的方法。
Description
技术领域
本发明属于一种网络通信技术。具体属于应用于为非总线设备提供一种实现PROFIBUS-PA总线通信接口的方案,是通过FPGA技术实现PROFIBUS-PA总线通信,使得现场设备仪表可作为PA从站存在于PROFIBUS总线上的方法。
背景技术
PROFIBUS现场总线是当今应用广泛的通信协议,而目前主要应用的PROFIBUS现场总线可分为两种,分别为PROFIBUS DP和PROFIBUS-PA。
其中PROFIBUS-PA专为过程自动化设计,可使现场仪器仪表连接在同一条PROFIBUS总线上。与PROFIBUS-DP不同,PROFIBUS-PA通信波特率为31.25K,且PA总线标准电平信号以曼彻斯特编码在总线物理层上传输。
目前,已存在多种成熟的PROFIBUD-DP从站通信接口开发方案,但PROFIBUS-PA从站通信接口的开发方案很少。这些现有的开发方案中通常使用了国外的ASIC芯片,开发方案复杂,成本昂贵,缺乏技术支持。为了促进国产设备的总线化,提高国产设备的竞争力,为国内制造商提供本低成本,低功耗、可用户自行快速开发的PROFIBUS-PA从站通信接口开发方案,本发明提供了一种以FPGA芯片为核心技术,配合微控制单元MCU和外围驱动电路实现标准PROFIBUS-PA从站通信接口的方法。PROFIBUS-PA总线通信的曼彻斯特编码调制解调、标准DPV0/V1通信状态机制的实现、各种通信数据在FPGA芯片与用户微控制单元MCU之间的传输、低功耗的实现、以及多种通信接口的实现都是此方案中的开发难点。
发明内容
本发明的目的是提供一种基于FPGA技术实现PROFIBUS-PA总线通信的方法,解决非现场总线设备无法连接至PROFIBUS-PA网络与PROFIBUS主站通信的问题,实现了为非现场总线设备提供PROFIBUS-PA从站通信接口等技术问题,为国内制造商提供一种低成本,低功耗,更简单的PROFIBUS-PA从站通信接口开发方案。
为了实现上述发明目的,本发明所采用的方法,其硬件设备包括:FPGA芯片和微控制单元MCU,其中共享存储器DPRAM内置于FPGA芯片中,本发明包括以下步骤:
步骤①:在FPGA芯片中,实现了标准PROFIBUS通信状态机制模块、曼彻斯特编码调制解调模块、报文解析模块、报文拼接模块、共享存储器DPRAM模块和通信接口模块;
其中,标准PROFIBUS通信状态机制模块负责在接收到总线报文之后,判断接收到的报文是否正确合理,并跳转到符合PROFIBUS通信标准的通信状态,并根据当前通信状态给出响应总线报文;
曼彻斯特编码调制解调模块负责在接收到经过外围驱动电路进入FPGA芯片的PA总线标准电平信号后按曼彻斯特编码完成解调,并在得到需要发送到PROFIBUS-PA总线上的报文时,将报文调制为曼彻斯特编码;
报文解析模块负责在得到经过曼彻斯特编码解调的总线报文后,按照PROFIBUS总线报文格式对报文进行解析,以确定接收到的总线报文类型,并获取报文中的通信数据;
报文拼接模块负责根据要发送的报文类型和报文数据,按照PROFIBUS总线报文格式进行拼接,以形成完全符合PROFIBUS通信标准的总线报文;
共享存储器DPRAM模块是由FPGA芯片实现的可供FPGA芯片和微控制单元MCU共同进行读写操作的共享存储器DPRAM,用于在FPGA芯片和微控制单元MCU之间传输PA从站初始化信息数据、DPV0输入输出数据、DPV1读写数据等总线通信数据与各种状态标志信息;
通信接口模块中包含了FPGA芯片向用户微控制单元MCU提供的多种通信接口,目前在此通信接口模块中提供了DPRAM通信接口、SPI通信接口和UART通信接口三种常用的通信接口;
步骤②:在PROFIBUS-PA网络中,所有总线报文以曼彻斯特编码在总线物理层上传输,PROFIBUS-PA总线物理信号线并不直接与FPGA芯片相连,而是经由外围驱动电路之后与FPGA芯片内部的曼彻斯特编码调制解调模块连接,所有在PA总线上传输的报文都需要由此模块完成调制解调;
步骤③:PROFIBUS-PA总线通信的链路层通信状态机制与PROFIBUS DP总线通信完全一致,FPGA芯片的标准PROFIBUS通信状态机制模块实现了完全符合国家标准GB/T20540-2006的PROFIBUS总线链路层通信状态机制,在接收到总线报文之后,标准PROFIBUS通信状态机制模块从当前通信状态跳转或维持到正确的通信状态,并提供正确的响应报文;
标准PROFIBUS通信状态机制模块实现了PA从站与PROFIBUS主站之间的周期性DPV0通信和非周期性DPV1通信,其中非周期性DPV1通信又包括DPC1通信和DPC2通信;
步骤④:FPGA芯片内部实现的共享存储器DPRAM模块使得FPGA芯片和微控制单元MCU可以共同读写同一共享存储器DPRAM,使得PA从站初始化数据、通信数据和各种状态标志能在FPGA芯片与微控制单元MCU之间相互传输;
共享存储器DPRAM模块内部又分为基础信息区、状态字节区、命令字节区、初始化数据区、诊断数据区、参数化数据区、配置数据区、DPV0输入数据区、DPV0输出数据区、DPC1读写数据区、DPC2读写数据区;
步骤⑤:设备上电后,微控制单元MCU周期性查询FPGA芯片有效标志,在查询到此标志置位之后,微控制单元MCU将初始化数据写入共享存储器DPRAM的初始化数据区,并将命令寄存器区中相应的标志位置位,以通知FPGA芯片及时读取此PA从站初始化数据;
FPGA芯片在上电启动进入正常工作状态后将FPGA芯片有效标志置位,然后等待微控制单元MCU发送PA从站初始化数据,在查询到命令寄存器区中的PA从站初始化数据标志位后,FPGA芯片从共享存储器DPRAM的初始化数据区中将PA从站初始化数据取出并进行解析;
步骤⑥:初始化数据被传输给FPGA芯片的标准DPV0/V1通信状态机制模块,在解析了PA从站初始化数据之后,标准DPV0/V1通信状态机制模块按照初始化数据中给出的总线配置完成与PROFIBUS主站之间的通信,在接收到报文之后,此模块按照报文类型将报文数据存储到共享存储器DPRAM相应的寄存器区中,并将相应的标志位置位;
在通信进入数据交换状态之后,标准DPV0/V1通信状态机制模块与PROFIBUS主站进行周期性DPV0输入输出数据交换,在接收到PROFIBUS主站发送的输出数据之后,标准DPV0/V1通信状态机制模块将DPV0输出数据存储进共享存储器DPRAM的DPV0输出数据区,标准DPV0/V1通信状态机制模块向PROFIBUS主站提供的输入数据来自于共享存储器DPRAM的DPV0输入数据区;
在接收到PROFIBUS主站发送的非周期性DPC1读写请求或DPC2读写请求之后,标准DPV0/V1通信状态机制模块将DPV1非周期性读写请求中包含槽号、索引号在内的具体参数写入共享存储器DPRAM的DPC1读写数据区或DPC2读写数据区,并置位相应的标志位以通知微控制单元MCU处理此条DPV1非周期性读写请求,微控制单元MCU在查询到非周期性DPC1读写请求标志或DPC2读写请求标志之后,处理当前DPV1非周期性读写请求,并将DPV1非周期性读写响应存储进共享存储器DPRAM的DPC1读写数据区或DPC2读写数据区,微控制单元MCU同样需要置位相应的标志,以告知FPGA芯片DPV1非周期性读写请求处理完成,FPGA芯片的标准DPV0/V1通信状态机制模块处理与PROFIBUS主站之间的非周期性通信报文序列,直到查询到微控制单元MCU给出的DPC1读写响应标志或DPC2读写响应标志,用共享存储器DPRAM中给出的非周期性读写响应数据组成响应报文发送给PROFIBUS主站。
其中步骤①中,作为实现PROFIBUS-PA从站通信接口的核心技术,本方法中选取了一款低功耗的144管脚FPGA芯片,在通过逻辑编程之后由FPGA芯片实现了实现了标准PROFIBUS通信状态机制模块、曼彻斯特编码调制解调模块、报文解析模块、报文拼接模块、共享存储器DPRAM模块和通信接口模块;
为了与其它硬件元器件相连,本方法中对FPGA芯片的各个管脚进行了定义,参照表1可见其主要功能管脚有:
L_REQ,L_STA,R_REQ,R_STA四根握手信号线,用于辅助处理FPGA芯片和微控制单元MCU之间的共享存储器DPRAM读写访问权管理;
ADDR00~ADDR11地址总线为微控制单元MCU访问FPGA芯片实现的共享存储器DPRAM时所需的地址线;
DATA00~D07数据总线为微控制单元MCU访问FPGA芯片实现的共享存储器DPRAM时所需的数据线;
RD为共享存储器DPRAM低有效读信号,WR为共享存储器DPRAM低有效写信号;
MOSI,MISO,SPI_SCK,NSS为微控制单元MCU通过SPI通信接口访问FPGA芯片的SPI信号线;
UART_TD,UART_RD,UART_RTS为微控制单元MCU通过UART通信接口访问FPGA芯片的UART信号线;
INTR0为FPGA芯片向微控制单元MCU提供的下降沿有效中断信号线,用于以中断形式通知微控制单元MCU当前正在通过共享存储器DPRAM向其发送总线通信数据;
CSR为低有效共享存储器DPRAM片选信号;
RESET为FPGA芯片外部复位信号,当此管脚拉低时,FPGA芯片被复位至初始工作状态;
CLK为FPGA芯片全局时钟输入管理,用于48M时钟的输入;
PA_TxD,PA_RxD为FPGA芯片的总线信号传输管脚,与外围驱动电路相连,用于接收发送曼彻斯特编码的总线电平信号;
PA_TxE为PA总线发送使能管脚,如需通过PA_TxD发送曼彻斯特串行数据,需先将此管脚置高;
PA_RxA为PA总线接收指示管脚,当有曼彻斯特串行数据进入PA_RxD,此管脚自动置高;
其中步骤②中,在PROFIBUS-PA网络中,PROFIBUS-PA总线的两根物理信号线PA+和PA-并未直接与FPGA芯片连接,而是连接至外围驱动电路模块,外围驱动电路模块与FPGA芯片之间以PA_TxD、PA_RxD和3V3相连,PROFIBUS-PA总线报文的接收与发送由此硬件方案解决;
PROFIBUS主站发出的总线标准电平信号经过外围驱动电路转化后的信号电平进入FPGA芯片,被FPGA芯片内部的曼彻斯特编码调制解调模块解调为总线报文,而向PROFIBUS主站响应的总线报文由曼彻斯特编码调制解调模块调制为曼彻斯特编码后发送给外围驱动电路,经由外围驱动电路转化为PA总线标准电平信号发送到PA总线上;
其中步骤③中,FPGA芯片的标准PROFIBUS通信状态机制模块实现了完全符合国家标准GB/T 20540-2006的PROFIBUS总线链路层通信状态机制,此通信状态机制适用于包含DP从站和PA从站在内的所有PROFIBUS从站设备;
在DPV0通信中,标准PROFIBUS通信状态机制模块可使PA从站按照PROFIBUS标准的要求在四个通信状态中跳转,这四个通信状态包括:
POWER_ON:DPV0通信的上电状态,在此状态时,PA从站刚完成上电过程,等待PROFIBUS主站发送的第一次诊断请求报文,以诊断响应报文告知PROFIBUS主站自身处于等待初始化的通信状态;
WAIT_PRM:DPV0通信的等待参数化状态,在此状态时,PA从站等待PROFIBUS主站发送参数化报文,在收到PROFIBUS主站发送的参数化报文之后,PA从站以短应答E5H响应;
WAIT_CFG:DPV0通信的等待配置状态,在此状态时,PA从站等待PROFIBUS主站发送配置报文,在收到PROFIBUS主站发送的配置报文之后,PA从站以短应答E5H响应;
DATA_EX:DPV0通信的周期性数据交换状态,在此状态时,PA从站和PROFIBUS主站周期性完成输入数据与输出数据的交换,PROFIBUS主站向PA从站发送DPV0输出报文,PA从站则以DPV0输入报文响应;
标准PROFIBUS通信状态机制模块使得使用本方法的PA从站设备有能力按照PROFIBUS标准处理与PROFIBUS主站之间的所有DPV0通信,在接收到各种正常或不正常的DPV0通信报文时,跳转到相应的通信状态,并向PROFIBUS主站提供符合PROFIBUS标准的响应;
在实现了标准DPV0周期性通信状态机制的基础上,FPGA芯片还实现了标准DPV1非周期性通信状态机制,DPV1非周期性通信又分为与PROFIBUS一类主站之间的DPC1通信和与PROFIBUS二类主站之间的DPC2通信;
其中DPC1通信状态机制与DPV0通信相关,PA从站仅在处于DPV0通信中的DATA_EX状态时,才可以与PROFIBUS一类主站进行DPC1读写通信,且仅支持与当前配置主站完成DPC1读写通信,若PA从站当前并未处于DATA_EX数据交换状态,或DPC1读写请求报文并非来自于配置主站,标准PROFIBUS通信状态机制模块拒绝进行DPC1通信;
DPC2通信状态机制则相对独立,不与DPV0通信状态绑定,PROFIBUS二类主站可以在任何通信状态下与PA从站完成DPC2读写通信,标准PROFIBUS通信状态机制模块在任何通信状态下都可以接收DPC2读写请求,且不要求此DPC2读写请求来自配置主站;
以上所有通信状态机制,都由FPGA芯片经过逻辑编程实现;
其中步骤④中,FPGA芯片中实现了可供FPGA芯片和微控制单元MCU共同进行读写操作的共享存储器DPRAM,此共享存储器DPRAM共有2K空间,此2K的地址空间内部又分为基础信息区、状态字节区、命令字节区、初始化数据区、诊断数据区、参数化数据区、配置数据区、DPV0输入数据区、DPV0输出数据区、DPC1读写数据区、DPC2读写数据区;
为了实现微控制单元MCU对FPGA芯片内部的共享存储器DPRAM的读写操作,微控制单元MCU和FPGA芯片之间有DPRAM通信接口、SPI通信接口和UART通信接口三种通信接口可以选择;
当选择DPRAM通信接口时,微控制单元MCU和FPGA芯片之间有几下管脚线相连:
握手信号线:L_REQ,L_STA,R_REQ,R_STA四根握手信号线,用于微控制单元MCU向FPGA芯片申请共享存储单元MCU的访问权;
地址线:ADDR00~ADDR11共12根地址线;
数据线:DATA00~DATA07共8根数据线;
当选择SPI通信接口时,微控制单元MCU和FPGA芯片之间有几下管脚线相连:
输入输出信号线:MOSI,MISO两根信号线用于数据的输入输出;
数据读写同步时钟信号线:SPI_SCK用于SPI数据读写的时钟同步;
从设备选通信号线:FPGA芯片作为SPI从设备存在,NSS信号用于将FPGA芯片作为从设备选通;
当选择UART通信接口时,微控制单元MCU和FPGA芯片之间有几下管脚线相连:
TTL接收发送信号线:UART_TD,UART_RD两根信号线用于串口数据的接收和发送;
接收允许信号线:UART_RTS用于允许FPGA芯片的串口接收;
为了保证PROFIBUS通信数据的正确性与完整性,不允许FPGA芯片和微控制单元MCU同时对共享存储器DPRAM进行读写操作,当微控制单元MCU需要通过DPRAM通信接口或SPI通信接口对共享存储器DPRAM进行读写时,需要先申请共享存储器DPRAM的访问权,而UART通信接口的通信协议基于串口通信问答方式,不需要共享存储器DPRAM访问权的申请;
使用DPRAM通信接口时,微控制单元MCU通过操作握手信号线申请共享存储器DPRAM的访问权,使用SPI通信接口时,微控制单元MCU通过读取共享存储器DPRAM中的空闲状态字来申请共享存储器DPRAM的访问权;
在申请到DPRAM访问权之后,微控制单元MCU访问不同的寄存器和通信数据区,从不同的地址读取标志置位和不同类型的通信数据,将不同类型的通信数据和标志置位写入共享存储器DPRAM中不同的地址,共享存储器DPRAM内部分区的地址定义如表2所示,所有的读写数据在FPGA芯片和微控制单元MCU之间传输;
其中步骤⑤中,设备上电后,微控制单元MCU周期性查询FPGA芯片有效标志,此FPGA芯片有效标志位于共享存储器DPRAM的基础信息区,微控制单元MCU需要先申请到共享存储器DPRAM的访问权,从基础信息区相应的地址读取FPGA芯片有效标志并判断FPGA芯片当前是否已经处于正常工作状态,每次读取FPGA芯片有效标志字节之后,微控制单元MCU需要释放共享存储器DPRAM的访问权以便FPGA芯片可以访问DPRAM更新其当前工作状态;
在查询到FPGA芯片已经进入正常工作状态之后,微控制单元MCU将PA从站初始化数据写入共享存储器DPRAM的初始化数据区,并将用户命令字节区中将相应的标志位置位,以通知FPGA芯片及时读取此PA从站初始化数据,在完成以上工作之后,微控制单元MCU释放共享存储器MCU的访问权给FPGA芯片;
FPGA芯片在启动进入正常工作状态之后,需要将FPGA芯片有效标志置位,FPGA芯片对共享存储器DPRAM的操作同样需要判断微控制单元MCU是否当前正在进行读写操作,FPGA芯片申请到共享存储器DPRAM访问权之后置位FPGA芯片有效标志置位,然后释放DPRAM访问权,等待微控制单元MCU发送初始化数据,FPGA芯片周期性获取共享存储器DPRAM的访问权以读取用户命令字节,在查询到用户命令字节区中的初始化数据有效标志位后,FPGA芯片从共享存储器DPRAM的初始化数据区中将初始化数据取出并进行解析;
其中步骤⑥中,PA从站初始化数据被传输给FPGA芯片的标准DPV0/V1通信状态机制模块,此PA从站初始化数据中包含以下信息:
初始化数据长度:PA从站初始化数据的总长度,FPGA芯片从共享存储器DPRAM中读取此长度的初始化数据;
ID号:设备作为PROFIBUS站点存在于总线上的唯一识别ID号,共有两个字节;
PA从站通信地址:设备作为PROFIBUS站点存在于总线上的通信地址信息;
用户诊断数据长度:PA从站与PROFIBUS主站进行DPV0通信时,向PROFIBUS主站提供的用户诊断数据长度;
最大用户参数化数据长度:PA从站与PROFIBUS主站进行DPV0初始化通信时,可从PROFIBUS主站接收到的最大用户参数化数据长度;
用户参数判断方式:当FPGA芯片将PROFIBUS主站参数化数据传送给微控制单元MCU时,用户以何种方式判断此参数化数据是否正确;
最大配置数据长度:PA从站与PROFIBUS主站进行DPV0初始化通信时,可从PROFIBUS主站接收到的最大配置数据长度;
配置数据判断方式:当FPGA芯片将PROFIBUS主站参数化数据传送给微控制单元MCU时,用户以何种方式判断此配置数据是否正确;
默认配置数据:在未接收到来自PROFIBUS主站的配置报文时,PA从站应以何种默认配置数据完成自身DPV0输入输出数据长度的规划;
DPV0最大输入输出数据长度:PA从站与PROFIBUS主站进行DPV0周期性输入输出数据交换通信时,输入数据与输出数据的长度信息;
是否开启DPV1通信:FPGA芯片的标准DPV0/V1通信状态机制模块默认仅开启DPV0通信状态机制的处理,当需要PA从站支持DPV1通信时,用户需要通过初始化数据告知FPGA芯片开启DPV1通信状态机制;
在解析了PA从站初始化数据之后,标准DPV0/V1通信状态机制模块按照PA从站初始化数据中给出的总线配置完成与PROFIBUS主站之间的通信,在DPV0初始化通信过程中,FPGA芯片有能力辅助用户完成最基础的数据判断,在接收超过最大数据长度的总线报文数据时,FPGA芯片拒绝此总线报文,在接收到正确的总线报文之后,标准DPV0/V1通信状态机制模块按照报文类型将报文数据存储到共享存储器DPRAM相应的数据区中,并将相应的标志位置位;
在通信进入周期性数据交换状态之后,标准DPV0/V1通信状态机制模块与PROFIBUS主站进行周期性DPV0输入输出数据交换,在接收到PROFIBUS主站发送的输出数据之后,标准DPV0/V1通信状态机制模块将DPV0输出数据存储进共享存储器DPRAM的DPV0输出数据区,标准DPV0/V1通信状态机制模块向PROFIBUS主站提供的输入数据来自于共享存储器DPRAM的DPV0输入数据区,因此输入输出数据的互传是周期性操作,无需FPGA芯片和微控制单元MCU在命令字节区进行置位;
在接收到PROFIBUS主站发送的DPV1非周期性读写请求之后,标准DPV0/V1通信状态机制模块将DPV1读写请求中包含槽号、索引号在内的具体参数写入共享存储器DPRAM的DPC1读写数据区或DPC2读写数据区,并置位相应的标志位以通知微控制单元MCU处理此条DPV1非周期性读写请求,微控制单元MCU在查询到DPC1读写请求标志或DPC2读写请求标志之后,处理当前非周期性读写请求,并将非周期性读写响应数据存储进共享存储器DPRAM的DPC1读写数据区或DPC2读写数据区中,微控制单元MCU同样需要置位相应的标志,以告知FPGA芯片本次DPV1非周期性读写请求处理完成,FPGA芯片的标准DPV0/V1通信状态机制模块处理与PROFIBUS主站之间的DPV1非周期性通信报文序列,直到查询到微控制单元MCU给出的DPC1读写响应标志或DPC2读写响应标志,用共享存储器DPRAM中给出的非周期性读写响应数据组成DPV1读写响应报文发送给PROFIBUS主站;
同样,在以上的步骤中,微控制单元MCU对共享存储器DPRAM的通信数据以及标志的读写操作可以选择FPGA芯片支持的通信接口中的任何一种完成,在选用DPRAM通信接口和SPI通信接口时,FPGA芯片和微控制单元MCU每一次读写共享存储器DPRAM,需要进行共享存储器DPRAM访问权的申请获取与释放。
本发明有以下积极有益效果:
本方法由低功耗FPGA芯片完成了曼彻斯特编码的调制解调,使得PA总线标准电平信号可被解调为总线报文,同时可以将总线报文调制为符合PA总线曼彻斯特编码的电平信号,而FPGA芯片实现的共享存储器DPRAM内部定义了各种寄存器和数据区,使得PROFIBUS通信数据和各种相关标志可以轻松的在FPGA芯片和微控制单元MCU之间快速传输,完整实现的标准DPV0/V1通信状态机制使得使用此方法的PA从站可以按照PROFIBUS标准处理与PROFIBUS主站之间的DPV0周期性通信以及DPV1非周期性通信,同时因为完整的DPV0/V1通信状态机制已经由FPGA芯片实现,大大减轻了用户微控制单元MCU的工作量。
附图说明
图1是本发明的模块结构示意图。
图2是本发明的微控制单元MCU使用DPRAM通信接口获取DPRAM访问权流程示意图。
图3是本发明的微控制单元MCU使用SPI通信接口获取DPRAM访问权流程示意图。
图4是本发明的数据缓存区示意图。
具体实施方式
参照图1,在本发明中,本方法的硬件主要包含FPGA芯片、微控制单元MCU与外围驱动电路三部分,其中共享存储器DPRAM由FPGA芯片实现,内置于FPGA芯片中。
PROFIBUS-PA总线的物理层信号线与外围驱动电路相连,外围驱动电路的主要功能是将PA总线标准电平信号转化为可被FPGA芯片识别的电平信号,以及将FPGA芯片发送的电平信号转化为符合PA总线物理层要求的标准电平信号;
FPGA芯片是本方法的核心技术,在其中实现了标准PROFIBUS通信状态机制模块、曼彻斯特编码调制解调模块、报文解析模块、报文拼接模块、共享存储器DPRAM模块和通信接口模块,FPGA芯片主要负责完成的工作包括:
实现了与PROFIBUS主站之间进行DPV0周期性通信和DPV1非周期性通信的标准通信状态机制,使得使用本方法的设备可作为一个标准PROFIBUS DPV0/V1从站在PA总线上存在,并与其它设备相互通信;
完成了PROFIBUS-PA总线标准电平信号的曼彻斯特编码调制解调工作,将使用本方法的用户与总线物理层信号处理完全隔离开,无需再进行总线物理层标准电平信号的调制解调工作;
负责PROFIBUS-PA总线报文的解析与拼装,可按照PROFIBUS总线报文标准格式完成报文格式类型、通信地址、报文功能类型、报文数据等具体内容的解析与拼装;
实现了可供FPGA芯片和微控制单元MCU共同读写操作的共享存储器DPRAM,为了方便各种通信数据与通信标志在FPGA芯片与微控制单元MCU之间相互传输,提高数据传输速度,此共享存储器DPRAM内部又分为基础信息区、状态字节区、命令字节区、初始化数据区、诊断数据区、参数化数据区、配置数据区、DPV0输入数据区、DPV0输出数据区、DPC1读写数据区、DPC2读写数据区;
为用户提供了丰富的通信接口并定义了严密的通信协议,FPGA芯片现已支持DPRAM通信接口、SPI通信接口和UART通信接口,微控制单元MCU可以通过其中任意一种通信接口,完成与FPGA芯片之间的通信;
微控制单元MCU在本方法中为用户MCU,其中带有针对FPGA芯片操作的固件程序,其主要作用是完成FPGA芯片的初始化、与FPGA芯片之间通过各种通信接口完成各种DPV0通信数据的互传、DPV1读写通信数据的互传,为了实现以上功能,微控制单元MCU中搭载的固件程序被分为以下三个模块:
初始化处理模块:用于在PA从站上电后,监测FPGA芯片的FPGA芯片有效状态标志,在确认FPGA芯片已进入正常工作状态后,将PA从站初始化数据通过共享存储器DPRAM发送给FPGA芯片,并确认FPGA芯片已经成功接收到了PA从站初始化数据并成功解析了其中包含的各种信息;
DPV0通信数据周期性传输模块:用于微控制单元MCU周期性的查询共享存储器DPRAM中各个DPV0通信数据有效标志位,在芯片命令字节区查询到DPV0通信数据有效标志被置位时,从相应的共享存储器DPRAM数据区中取出DPV0通信数据,微控制单元MCU可以通过本模块周期性向共享存储器DPRAM中写入通信数据,并在用户命令字节将相应的通信数据有效标志置位;
DPV1通信数据非周期性传输模块:用于微控制单元MCU周期性的查询共享存储器DPRAM中各个DPV1读写数据有效标志位,在芯片命令字节区查询到DPC1读写数据有效标志或DPC2读写数据有效标志被置位时,从相应的共享存储器DPRAM数据区中取出DPV1读写数据,微控制单元MCU可以通过本模块向共享存储器DPRAM中写入非周期性通信数据,并在用户命令字节将相应的非周期性通信数据有效标志置位,与DPV0通信数据周期性传输模块不同,本模块向共享存储器DPRAM中写入DPV1读写数据为非周期性完成;
参照图2,在本发明中,为了保证通信数据的完整性,不允许FPGA芯片和微控制单元MCU同时操作共享存储器DPRAM,为了实现此需求,微控制单元MCU在使用DPRAM通信接口读写共享存储器DPRAM之前需要进行共享存储器DPRAM访问权申请,共享存储器DPRAM访问权的申请与释放都通过四根DPRAM握手信号线L_REQ,L_STA,R_REQ,R_STA完成;
微控制单元MCU通过DPRAM通信接口完成一次访问共享存储器DPRAM的过程被划分为获取DPRAM访问权限、读写DPRAM据以及释放DPRAM访问权限三个部分:
获取DPRAM访问权限:微控制单元MCU在获取DPRAM访问权限的初始状态为R_REQ,R_STA两根握手信号线为低电平,在申请访问权时,微控制单元MCU先将R_REQ握手信号线拉高,保持R_STA握手信号线低电平不变,在此步之后,微控制单元MCU查询L_REQ和L_STA握手信号线是否同时为高,如果L_REQ和L_STA握手信号线同时为高,意味着FPGA芯片正在访问共享存储器DPRAM,微控制单元MCU在超时时间内等待FPGA芯片释放访问权并保持R_REQ握手信号线为高电平,R_STA握手信号线为低电平,直至查询到L_REQ和L_STA两根握手信号线都变为低电平,微控制单元MCU获得共享存储器DPRAM的访问权,将R_REQ和R_STA两根握手信号线同时拉高;
读写DPRAM:在获得共享存储器DPRAM的访问权之后,微控制单元MCU可以通过DPRAM通信接口对共享存储器DPRAM的各个寄存器或数据区进行读写操作;
释放DPRAM访问权:当微控制单元MCU或者微控制单元MCU在超时时间内没有查询到FPGA芯片释放了访问权,或者微控制单元MCU已经完成了读写操作,通过将R_REQ和R_STA两根握手信号线同时拉低来释放RAM访问权;
参照图3可见,在本发明中,为了保证通信数据的完整性,不允许FPGA芯片和微控制单元MCU同时操作共享存储器DPRAM,为了实现此需求,微控制单元MCU在使SPI通信接口读写共享存储器DPRAM之前需要进行共享存储器DPRAM访问权申请,微控制单元MCU采用查询的方式查看共享存储器DPRAM是否空闲,从而获取访问权限;
微控制单元MCU通过SPI通信接口完成一次访问共享存储器DPRAM的过程同样被划分为获取DPRAM访问权限、读写DPRAM据以及释放DPRAM访问权限三个部分:
获取DPRAM访问权限:当微控制单元MCU想要访问共享存储器DPRAM,需要读取共享存储器DPRAM中指定地址的空闲状态字,空闲状态字当前值为0x01表明此时FPGA芯片占用共享存储器DPRAM访问权限,微控制单元MCU不得访问共享存储器DPRAM数据,此时微控制单元MCU可以不断的查询访问空闲状态字,直到空闲状态字数值为0x00时,表示此时FPGA芯片并未访问DPRAM,微控制单元MCU此时需要写空闲状态字为0x02,表明微控制单元MCU获得DPRAM访问权限;
读写DPRAM:在获得共享存储器DPRAM的访问权之后,微控制单元MCU可以通过SPI通信接口对共享存储器DPRAM的各个寄存器或数据区进行读写操作;
释放DPRAM访问权:当微控制单元MCU访问结束后,需要释放访问权限,此时需要将空闲状态字写为0x00。
参照图4可见,为了实现PROFIBUS通信数据的分类存储、总线通信的快速响应、多种通信服务并行处理,同时也是为了进一步的保证通信数据的完整性与一致性,FPGA芯片在共享存储器DPRAM之外设置了缓存单元,使用本方法的用户不需要对各个缓存单元进行初始设定存储空间大小,各个缓存单元的大小设定为固定值,为PROFIBUS通信各种通信数据的最大长度值,完全满足PROFIBUS总线通信的需求;
在FPGA芯片中,输出数据缓存单元设置两个,每个缓存单元大小为244字节,周期性数据交换的输出数据缓存至输出数据缓存单元1,当PA从站支持PROFIUBS通信同步功能且PROFIBUS主站发送了同步请求时,输出数据缓存单元1中的输出数据存储至输出数据缓存单元2,当PROFIBUS主站再次发起读输出数据请求时,FPGA芯片将输出数据缓存2中的输出数据作为响应数据发送至PA总线。当PROFIBUS主站发送参数化报文时,FPGA芯片将用户参数化数据缓存至参数化数据缓存单元,最大支持237字节。当PROFIBUS主站发送配置报文时,配置数据先存储在配置数据缓存单元中,最大支持200字节。输入数据缓存单元同样有两个,每个缓存单元大小为244字节,周期性数据交换的输入数据缓存至输入数据缓存单元1,当PA从站支持PROFIBUS总线冻结功能且PROFIBUS主站发送了冻结请求时,输入缓存单元1中的输入数据存储至输入数据缓存单元2,当PROFIBUS主站再次发起读输入数据请求,FPGA芯片将输入数据缓存单元2中的输入数据发送至PA总线,当PROFIBUS主站发送诊断请求报文时,FPGA芯片将当前诊断数据缓存单元中的诊断数据发送至总线,诊断数据缓存单元大小为244字节。
各管脚定义参见表1所示。存储器DPRAM内部分区参见表2所示。
表1:
注:其它未列出管脚悬空。
表2:
Claims (7)
1.一种基于FPGA技术实现PROFIBUS-PA总线通信的方法,其硬件设备包括:FPGA芯片、微控制单元MCU和外围驱动电路;
其具体步骤如下:
步骤①:在FPGA芯片中,实现了标准PROFIBUS通信状态机制模块、曼彻斯特编码调制解调模块、报文解析模块、报文拼接模块、和共享存储器DPRAM模块和通信接口模块;
其中,标准PROFIBUS通信状态机制模块负责在接收到总线报文之后,判断接收到的报文是否正确合理,并跳转到符合PROFIBUS通信标准的通信状态,并根据当前通信状态给出响应总线报文;
曼彻斯特编码调制解调模块负责在接收到经过外围驱动电路进入FPGA芯片的PA总线标准电平信号后,按曼彻斯特编码完成解调,并在得到需要发送到PA总线上的报文时,将报文调制为曼彻斯特编码;
报文解析模块负责在得到经过曼彻斯特编码解调的总线报文后,按照PROFIBUS总线报文格式对报文进行解析,以确定接收到的总线报文类型,并获取报文中的通信数据;
报文拼接模块负责根据要发送的报文类型和报文数据,按照PROFIBUS总线报文格式进行拼接,以形成完全符合PROFIBUS通信标准的总线报文;
共享存储器DPRAM模块是由FPGA芯片实现的可供FPGA芯片和微控制单元MCU共同进行读写操作的共享存储器DPRAM,用于在FPGA芯片和微控制单元MCU之间传输总线通信数据,包括:PA从站初始化信息数据、DPV0输入输出数据、DPV1读写数据与各种状态标志信息;
通信接口模块中包含了FPGA芯片向用户微控制单元MCU提供的多种通信接口,包括DPRAM通信接口、SPI通信接口和UART通信接口三种常用的通信接口;
步骤②:在PROFIBUS-PA网络中,所有PA总线标准电平信号以曼彻斯特编码在总线物理层上传输,PROFIBUS-PA总线物理信号线并不直接与FPGA芯片相连,而是经由外围驱动电路之后与FPGA芯片连接,所有在PA总线上传输的报文都需要由FPGA芯片内部的曼彻斯特编码调制解调模块完成调制解调;
步骤③:PROFIBUS-PA总线通信的链路层通信状态机制与PROFIBUS DP总线通信完全一致,FPGA芯片的标准PROFIBUS通信状态机制模块实现了完全符合中国国家标准GB/T20540-2006的PROFIBUS总线链路层通信状态机制,在接收到总线报文之后,标准PROFIBUS通信状态机制模块从当前通信状态跳转或维持到正确的通信状态,并提供正确的响应报文;
标准PROFIBUS通信状态机制模块实现了PA从站与PROFIBUS主站之间的周期性DPV0通信和非周期性DPV1通信,其中非周期性DPV1通信又包括DPC1通信和DPC2通信;
步骤④:FPGA芯片内部实现的共享存储器DPRAM模块使得FPGA芯片和微控制单元MCU可以共同读写同一片共享存储器DPRAM空间,使得PA从站初始化数据、各种通信数据、命令标志和状态标志能在FPGA芯片与微控制单元MCU之间相互传输;
共享存储器DPRAM模块内部又分为基础信息区、状态字节区、命令字节区、初始化数据区、诊断数据区、参数化数据区、配置数据区、DPV0输入数据区、DPV0输出数据区、DPC1读写数据区、DPC2读写数据区;
步骤⑤:设备上电后,微控制单元MCU周期性查询FPGA芯片有效标志,在查询到此标志置位之后,微控制单元MCU将PA从站初始化数据写入共享存储器DPRAM的初始化数据区,并将命令寄存器区中相应的标志位置位,以通知FPGA芯片及时读取此PA从站初始化数据;
FPGA芯片在上电启动进入正常工作状态后将FPGA芯片有效标志置位,然后等待微控制单元MCU发送PA从站初始化数据,在查询到命令寄存器区中的PA从站初始化数据有效标志位后,FPGA芯片从共享存储器DPRAM的初始化数据区中将PA从站初始化数据取出并进行解析;
步骤⑥:PA从站初始化数据被传输给FPGA芯片的标准DPV0/V1通信状态机制模块,在解析了PA从站初始化数据之后,标准DPV0/V1通信状态机制模块按照PA从站初始化数据中给出的总线配置完成与PROFIBUS主站之间的通信,在接收到报文之后,此模块按照报文类型将报文数据存储到共享存储器DPRAM相应的寄存器区中,并将相应的标志位置位;
在通信进入周期性数据交换状态之后,标准DPV0/V1通信状态机制模块与PROFIBUS主站进行周期性DPV0输入输出数据交换,在接收到PROFIBUS主站发送的输出数据之后,标准DPV0/V1通信状态机制模块将DPV0输出数据存储进共享存储器DPRAM的DPV0输出数据区,标准DPV0/V1通信状态机制模块向PROFIBUS主站提供的输入数据来自于共享存储器DPRAM的DPV0输入数据区;
在接收到PROFIBUS主站发送的非周期性DPC1读写请求或DPC2读写请求之后,标准DPV0/V1通信状态机制模块将非周期性读写请求中包含槽号、索引号在内的具体参数写入共享存储器DPRAM的DPC1读写数据区或DPC2读写数据区,并置位相应的标志位以通知微控制单元MCU处理此条非周期性读写请求,微控制单元MCU在查询到非周期性DPC1读写请求标志或DPC2读写请求标志之后,处理当前非周期性读写请求,并将非周期性读写响应存储进共享存储器DPRAM的DPC1读写数据区或DPC2读写数据区,微控制单元MCU同样需要置位相应的标志,以告知FPGA芯片非周期性读写请求处理完成,FPGA芯片的标准DPV0/V1通信状态机制模块处理与PROFIBUS主站之间的非周期性通信报文序列,直到查询到微控制单元MCU给出的DPC1读写响应标志或DPC2读写响应标志,用共享存储器DPRAM中给出的非周期性读写响应数据组成响应报文发送给PROFIBUS主站。
2.根据权利要求1所述的一种基于FPGA技术实现PROFIBUS-PA总线通信的方法,其中步骤①中,在FPGA芯片中,实现了标准PROFIBUS通信状态机制模块、曼彻斯特编码调制解调模块、报文解析模块、报文拼接模块、共享存储器DPRAM模块和通信接口模块;
其中,标准PROFIBUS通信状态机制模块实现了PROFIBUS-PA从站总线通信的链路层,PA从站总线通信链路层与DP从站总线链路层相同,完全符合中国国家标准GB/T 20540-2006的现场总线DPV0/V1从站通信状态机制,在与PROFIBUS主站通信的正常DPV0初始化过程中,此模块在接收到PROFIBUS主站发送给PA从站的诊断请求报文、参数化报文、配置报文之后,解析接收到的报文并跳转到符合PROFIBUS标准的相应通信状态,进入周期性数据交换状态之后,标准PROFIBUS通信状态机制模块完成与PROFIBUS主站的周期性DPV0输入输出数据交换,在DPV0通信之外,标准PROFIBUS通信状态机制模块也负责在接收到来自PROFIBUS主站的DPV1读写请求之后完成符合PROFIBUS标准的DPV1读写报文序列;
曼彻斯特编码调制解调模块负责调制解调PA总线标准电平信号,PA总线标准电平信号以曼彻斯特编码传输,经过外围驱动电路进入FPGA芯片由曼彻斯特编码调制解调模块完成解调,转化为可被解析的总线报文,此模块还在得到需要发送到PROFIBUS-PA总线上的总线报文时将报文进行曼彻斯特编码调制,调制为符合PROFIBUS-PA总线物理层标准的标准电平信号;
报文解析模块负责在得到经过曼彻斯特编码解调的总线报文后进行解析,通过报文第一个字节的起始定界符,报文解析模块可以确定接收到的报文的格式类型,按照相应报文格式解析后续字节,可以确定接收到的总线报文是否发送给自身功能地址,解析出接收到的总线报文功能类型,并获取报文中的通信数据;
报文拼接模块负责根据要发送的报文格式类型、报文功能类型和报文数据拼接总线报文,以形成完成符合PROFIBUS通信标准的总线报文;
共享存储器DPRAM模块包含初始化数据区、状态字节区、命令字节区、诊断数据区、参数化数据区、配置数据区、DPV0输入数据区、DPV0输出数据区、DPC1读写数据区、DPC2读写数据区;
通信接口模块,当微控制单元MCU需要读写FPGA芯片内部的共享存储器DPRAM时,可选择任意一种通信接口方式实现读写操作;
其中,DPRAM通信接口使得微控制单元MCU可以通过握手信号线、数据线、地址线操作共享存储器DPRAM,SPI通信接口使得微控制单元MCU可以通过SPI通信信号线操作共享存储器DPRAM,UART通信接口使得微控制单元MCU通过UART串口信号线读写FPGA芯片内部的共享存储器DPRAM。
3.根据权利要求1所述的一种基于FPGA技术实现PROFIBUS-PA总线通信的方法,其中步骤②中,在PROFIBUS-PA网络中,所有的总线标准电平信号以曼彻斯特编码在PA总线的两根信号线上传输,PROFIBUS-PA总线的两根物理信号线连接至外围驱动电路模块,PA总线标准电平信号经过外围驱动电路之后转化为可被FPGA芯片识别的电平信号,PROFIBUS主站发出的总线报文经由物理传输,经由外围驱动电路进入FPGA芯片由曼彻斯特编码调制解调模块被解调为总线报文,而PA从站向PROFIBUS主站响应的总线报文由曼彻斯特编码调制解调模块调制为曼彻斯特编码后发送给外围驱动电路,经由外围驱动电路转化为PA总线标准电平信号发送到PA总线上。
4.根据权利要求1所述的一种基于FPGA技术实现PROFIBUS-PA总线通信的方法,其中步骤③中,在一个正确的DPV0通信过程中,PROFIBUS主站最先向PA从站发送诊断请求报文,标准PROFIBUS通信状态机制模块根据当前的通信状态形成六个字节的标准诊断数据,与微控制单元MCU提供的用户诊断数据拼接后形成完整的PROFIBUS从站诊断响应发送给PROFIBUS主站,PROFIBUS主站后续依次发送参数化报文和配置报文,标准PROFIBUS通信状态机制模块都以短应答响应,PROFIBUS主站继续发送第二次诊断请求报文,标准PROFIBUS通信状态机制模块此时已进入数据交换状态,并将当前的通信状态形成的六个字节的标准诊断数据与用户诊断数据拼接后形成第二次诊断响应发送给PROFIBUS主站,在此之后,PROFIBUS主站与PA从站之间开始周期性的输入输出数据交换过程,PROFIBUS主站向PA从站发送输出数据报文,PA从站以输入数据报文响应;
在一个正确的DPC1通信过程中,PROFIBUS主站向处于数据交换状态的PA从站发送DPC1读写请求报文,标准PROFIBUS通信状态机制模块在接收到此报文后用短应答响应此DPC1读写请求报文以及后续PROFIBUS主站发送的轮询报文,在通过DPRAM从微控制单元MCU得到本次DPC1读写请求的响应数据之后,以DPC1读写响应报文响应最新的PROFIBUS主站轮询报文;
在一个正确的DPC2通信过程中,PROFIBUS主站向任意通信状态中的PA从站发送DPC2通道初始化请求报文,标准PROFIBUS通信状态机制模块在接收到此报文后立即开通一条DPC2通信通道,并将此通道号以DPC2通道初始化快速响应报文上传给PROFIBUS主站,PROFIBUS主站在收到通道号后以轮询请求确认以通信通道的建立,标准PROFIBUS通信状态机制模块以DPC2通道确认响应报文响应PROFIBUS主站的此次轮询,在DPC2通信通道建立成功之后,PROFIBUS主站向处于数据交换状态的PA从站发送DPC2读写请求报文,标准PROFIBUS通信状态机制模块在接收到此报文后用短应答响应此DPC2读写请求报文以及后续PROFIBUS主站发送的轮询报文,在通过DPRAM从微控制单元MCU得到本次DPC2读写请求的响应数据之后,以DPC2读写响应报文响应最新的PROFIBUS主站轮询报文,当PROFIBUS主站完成DPC2读写通信之后,向PA从站发送终止请求,标准PROFIBUS通信状态机制模块在接收到此终止请求之后中断当前DPC2通信通道;
当PROFIBUS主站发送了不正确的总线报文、不正常的总线报文序列、或总线报文中含有不正确的通信数据时,标准PROFIBUS通信状态机制模块有能力识别出这些错误,使得PA从站跳转至符合PROFIBUS通信标准的正确的安全通信状态,并以正确的总线报文响应PROFIBUS主站。
5.根据权利要求1所述的一种基于FPGA技术实现PROFIBUS-PA总线通信的方法,其中步骤④中,用于在FPGA芯片与微控制单元MCU之间互传数据的共享存储器DPRAM由FPGA芯片实现,为了存储不同类型的通信数据与通信状态信息,此共享存储器DPRAM内部又分为基础信息区、初始化数据区、状态字节区、命令字节区、诊断数据区、参数化数据区、配置数据区、DPV0输入数据区、DPV0输出数据区、DPC1读写数据区、DPC2读写数据区;
其中,基础信息区用于保存当前FPGA芯片固件程序的版本信息,以及FPGA芯片有效标志信息;
初始化数据区用于保存由微控制单元MCU发送给FPGA芯片的PA从站初始化数据,初始化数据中包含作为PA从站工作所需的总线配置信息,包含初始化数据长度信息、PROFIBUS从站通信地址、ID号、DPV0最大输入输出数据长度、用户诊断数据长度、最大用户参数数据长度、用户参数判断方式、最大配置数据长度、配置数据判断方式、默认配置数据、是否开启DPV1通信等信息在内;
状态字节区又分为用户状态字节区与芯片状态字节区,其中用户状态字节区用于保存微控制单元MCU向FPGA芯片发送的各种通信数据的判断结果标志,芯片状态字节区用于保存FPGA芯片向微控制单元MCU发送的各种DP通信状态标志与通信数据的判断结果标志;
命令字节区又分为用户命令字节区与芯片命令字节区,其中用户命令字节区用于微控制单元MCU在向DPRAM写入各种通信数据时置位相应的标志以告知FPGA芯片,芯片命令字节区用于FPGA芯片在向DPRAM写入各种通信数据时置位相应的标志以告知微控制单元MCU;
诊断数据区用于存储微控制单元MCU向FPGA芯片提供的用户诊断信息,其中包含诊断的类型、诊断数据长度和具体用户诊断数据,此用户诊断数据将作为FPGA芯片提供给DP主站的诊断响应的用户诊断部分发送到PA总线上;
参数化数据区用于存储FPGA芯片向微控制单元MCU传送的参数化信息,其中包含参数化数据长度和具体用户参数化数据,微控制单元MCU在接收到此用户参数数据之后可以判断此用户参数数据是否正确,并按照用户参数数据中内容完成相关的参数设置;
配置数据区用于存储FPGA芯片向微控制单元MCU传送的配置信息,其中包含配置数据长度和具体配置数据,微控制单元MCU在接收到此配置数据之后可以判断此用户参数数据是否正确,并根据配置数据计算与PROFIBUS主站之间通信的DPV0输入输出数据长度;
DPV0输入数据区用于存储微控制单元MCU向FPGA芯片传送的向PROFIBUS主站响应的输入数据;
DPV0输出数据区用于存储FPGA芯片向微控制单元MCU传送的来自PROFIBUS主站的输出数据;
DPV1读写数据区又分为DPC1读写数据区与DPC2读写数据区,其中DPC1读写数据区用于存储与PROFIBUS一类主站之间的非周期性读写报文信息,其中包含DPC1读写报文的槽、索引、读写数据长度、具体读写数据、和错误代码;DPC2读写数据区用于存储与PROFIBUS二类主站之间的非周期性读写报文信息,其中包含DPC2读写报文的槽、索引、读写数据长度、具体读写数据、和错误代码。
6.根据权利要求1所述的一种基于FPGA技术实现PROFIBUS-PA总线通信的方法,其中步骤⑤中,PA从站设备初上电时,FPGA芯片在成功进入正常工作状态之后,将基础信息区中的FPGA芯片有效标志置位,此时FPGA芯片并不知道自身作为PROFIBUS从站的总线配置信息,处于等待PA从站初始化数据状态;
微控制单元MCU在上电后周期性查询FPGA芯片有效标志,在查询到FPGA芯片已经进入正常工作状态之后,微控制单元MCU将PA从站初始化数据写入共享存储器DPRAM的初始化数据区,并将用户命令寄存器区中将相应的标志位置位,以通知FPGA芯片及时读取此PA从站初始化数据;
FPGA芯片在查询到用户命令寄存器区中的初始化数据有效标志位后,从共享存储器DPRAM的初始化数据区中将PA从站初始化数据取出并进行解析,同时清除初始化数据标志位的置位,表示此数据已被读取;
此步骤中,微控制单元MCU对共享存储器DPRAM的通信数据以及标志的读写操作可以选择FPGA芯片支持的通信接口中的任何一种完成。
7.根据权利要求1所述的一种基于FPGA技术实现PROFIBUS-PA从站在总线上进行通信的方法,其中步骤⑥中,PA从站初始化数据被传输给FPGA芯片的标准DPV0/V1通信状态机制模块,此PA从站初始化数据中含有初始化数据长度信息、PROFIBUS从站通信地址、ID号、DPV0最大输入输出数据长度、用户诊断数据长度、最大用户参数数据长度、用户参数判断方式、最大配置数据长度、配置数据判断方式、默认配置数据、是否开启DPV1通信等信息,通过解析此PA从站初始化数据,标准DPV0/V1通信状态机制模块获知自身作为PA从站的总线配置信息,有能力按照此总线配置完成与PROFIBUS主站之间的通信;
在PROFIBUS主站与PA从站进行的DPV0初始化通信过程中,微控制单元MCU的DPV0通信数据周期性传输模块将当前用户诊断数据存储到共享存储器DPRAM的诊断数据区中,并在共享存储器DPRAM的用户命令寄存器区中将相应的诊断数据有效标志位置位,FPGA芯片的标准DPV0/V1通信状态机制模块查询用户命令寄存器区中的诊断数据有效标志位,在发现诊断数据有效标志位置位后,从共享存储器DPRAM中取出用户诊断响应数据,与自身生成的六字节标准诊断响应数据拼接在一起形成完整的诊断数据,此诊断数据被用来响应PROFIBUS主站发送的诊断请求;在接收到PROFIBUS主站发送的参数化报文和配置报文之后,FPGA芯片的标准DPV0/V1通信状态机制模块将参数化报文数据和配置报文数据分别存储到共享存储器DPRAM相应的寄存器区中,并在共享存储器DPRAM的芯片命令寄存器区中将相应的参数化数据有效标志位和配置数据有效标志位置位,微控制单元MCU的DPV0通信数据周期性传输模块周期性查询芯片命令字节区中的各标志位,在发现相应的标志位被置位后,从共享存储器DPRAM的参数化数据区或配置数据区将通信数据取出;
在PROFIBUS主站与PA从站进行的DPV0周期性通信过程中,PROFIBUS主站发送给PA从站的输出报文数据由FPGA芯片的标准DPV0/V1通信状态机制模块周期性存储到共享存储器DPRAM的DPV0输出数据区中,并从DPV0输入数据区中取出发送给PROFIBUS主站的输入数据,微控制单元MCU的DPV0通信数据周期性传输模块同样周期性将输入数据写入共享存储器DPRAM的DPV0输入数据区中,并从DPV0输出数据区取出来自PROFIBUS主站的输出数据;
在处理PROFIBUS主站发送给PA从站的DPV1非周期性通信读写请求时,FPGA芯片的标准DPV0/V1通信状态机制模块将DPV1非周期性读写请求中包含槽号、索引号在内的具体参数写入共享存储器DPRAM的DPC1读写数据区或DPC2读写数据区,并将芯片命令字节区的C1非循环输出数据有效标志位或C2非循环输出数据有效标志位置位,以通知微控制单元MCU处理此条DPV1非周期性读写请求;
微控制单元MCU的DPV1通信数据非周期性传输模块在查询到标志之后,将DPV1读写请求信息从DPC1读写数据区或DPC2读写数据区中取出并处理当前DPV1非周期性读写请求,在得到DPV1非周期性读写响应数据之后,DPV1通信数据非周期性传输模块在将DPV1读写响应数据同样存储进共享存储器DPRAM的DPC1读写数据区或DPC2读写数据区之后,在用户命令字节中将相应的用户C1非循环输入数据有效标志和用户C2非循环输入数据有效标志置位,以告知FPGA芯片DPV1读写请求处理完成,FPGA芯片的标准DPV0/V1通信状态机制模块处理与PROFIBUS主站之间的DPV1通信报文序列,直到查询到微控制单元MCU给出的用户C1非循环输入数据有效标志或用户C2非循环输入数据有效,用共享存储器DPRAM中给出的DPV1读写响应数据组成DPV1读写响应报文发送给PROFIBUS主站;
此步骤中,微控制单元MCU对共享存储器DPRAM的通信数据以及标志的读写操作可以选择FPGA芯片支持的通信接口中的任何一种完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910182696.7A CN109901469B (zh) | 2019-03-12 | 2019-03-12 | 一种基于fpga技术实现profibus-pa总线通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910182696.7A CN109901469B (zh) | 2019-03-12 | 2019-03-12 | 一种基于fpga技术实现profibus-pa总线通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109901469A true CN109901469A (zh) | 2019-06-18 |
CN109901469B CN109901469B (zh) | 2020-08-21 |
Family
ID=66947001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910182696.7A Active CN109901469B (zh) | 2019-03-12 | 2019-03-12 | 一种基于fpga技术实现profibus-pa总线通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109901469B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110430110A (zh) * | 2019-08-12 | 2019-11-08 | 北京和利时系统工程有限公司 | 一种现场总线网关及其协议转换方法 |
CN110687854A (zh) * | 2019-11-05 | 2020-01-14 | 杭州和利时自动化有限公司 | 一种pa总线控制器以及一种pa总线控制系统 |
CN111090447A (zh) * | 2019-12-23 | 2020-05-01 | 杭州和利时自动化有限公司 | 一种io模块的固件更新方法及相关装置 |
CN111683310A (zh) * | 2020-06-04 | 2020-09-18 | 天津电气科学研究院有限公司 | 一种可组网式数据采集分析系统及方法 |
CN112187605A (zh) * | 2020-09-30 | 2021-01-05 | 西安热工研究院有限公司 | 一种profibus-dpv0总线负荷率的计算方法 |
CN113890785A (zh) * | 2021-11-03 | 2022-01-04 | 西安热工研究院有限公司 | 一种现场总线混合组网的通讯系统及方法 |
CN114019843A (zh) * | 2021-10-12 | 2022-02-08 | 浙江中控技术股份有限公司 | 一种基于fpga实现hart通信的用户空间i/o框架 |
CN115242677A (zh) * | 2021-04-23 | 2022-10-25 | 中国移动通信集团四川有限公司 | 一种家宽用户状态监听系统、方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040210664A1 (en) * | 2003-04-17 | 2004-10-21 | Schneider Automation Inc. | System and method for transmitting data |
CN101841542A (zh) * | 2010-05-07 | 2010-09-22 | 北京鼎实创新科技有限公司 | 基于fpga技术实现profibus主站通信协议的方法 |
US20110029254A1 (en) * | 2006-10-17 | 2011-02-03 | Endress + Hauser Gmbh + Co. Kg | Field device for determining and monitoring process variable in process automation systems |
CN101976074A (zh) * | 2010-11-03 | 2011-02-16 | 浙江工业大学 | 基于现场总线和控制网络的工业控制系统 |
CN103618657A (zh) * | 2013-11-29 | 2014-03-05 | 南京科远自动化集团股份有限公司 | 一种RS485-Profibus PA总线转换器 |
CN105245424A (zh) * | 2015-09-18 | 2016-01-13 | 北京鼎实创新科技股份有限公司 | Profibus dp与profinet通信网络通过共享存储器互连的方法 |
-
2019
- 2019-03-12 CN CN201910182696.7A patent/CN109901469B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040210664A1 (en) * | 2003-04-17 | 2004-10-21 | Schneider Automation Inc. | System and method for transmitting data |
US20110029254A1 (en) * | 2006-10-17 | 2011-02-03 | Endress + Hauser Gmbh + Co. Kg | Field device for determining and monitoring process variable in process automation systems |
CN101841542A (zh) * | 2010-05-07 | 2010-09-22 | 北京鼎实创新科技有限公司 | 基于fpga技术实现profibus主站通信协议的方法 |
CN101976074A (zh) * | 2010-11-03 | 2011-02-16 | 浙江工业大学 | 基于现场总线和控制网络的工业控制系统 |
CN103618657A (zh) * | 2013-11-29 | 2014-03-05 | 南京科远自动化集团股份有限公司 | 一种RS485-Profibus PA总线转换器 |
CN105245424A (zh) * | 2015-09-18 | 2016-01-13 | 北京鼎实创新科技股份有限公司 | Profibus dp与profinet通信网络通过共享存储器互连的方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110430110A (zh) * | 2019-08-12 | 2019-11-08 | 北京和利时系统工程有限公司 | 一种现场总线网关及其协议转换方法 |
CN110687854A (zh) * | 2019-11-05 | 2020-01-14 | 杭州和利时自动化有限公司 | 一种pa总线控制器以及一种pa总线控制系统 |
CN110687854B (zh) * | 2019-11-05 | 2021-07-30 | 杭州和利时自动化有限公司 | 一种pa总线控制器以及一种pa总线控制系统 |
CN111090447A (zh) * | 2019-12-23 | 2020-05-01 | 杭州和利时自动化有限公司 | 一种io模块的固件更新方法及相关装置 |
CN111683310A (zh) * | 2020-06-04 | 2020-09-18 | 天津电气科学研究院有限公司 | 一种可组网式数据采集分析系统及方法 |
CN112187605A (zh) * | 2020-09-30 | 2021-01-05 | 西安热工研究院有限公司 | 一种profibus-dpv0总线负荷率的计算方法 |
CN115242677A (zh) * | 2021-04-23 | 2022-10-25 | 中国移动通信集团四川有限公司 | 一种家宽用户状态监听系统、方法和装置 |
CN115242677B (zh) * | 2021-04-23 | 2023-09-01 | 中国移动通信集团四川有限公司 | 一种家宽用户状态监听系统、方法和装置 |
CN114019843A (zh) * | 2021-10-12 | 2022-02-08 | 浙江中控技术股份有限公司 | 一种基于fpga实现hart通信的用户空间i/o框架 |
CN114019843B (zh) * | 2021-10-12 | 2023-11-28 | 浙江中控技术股份有限公司 | 一种基于fpga实现hart通信的用户空间i/o框架 |
CN113890785A (zh) * | 2021-11-03 | 2022-01-04 | 西安热工研究院有限公司 | 一种现场总线混合组网的通讯系统及方法 |
CN113890785B (zh) * | 2021-11-03 | 2022-12-27 | 西安热工研究院有限公司 | 一种现场总线混合组网的通讯系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109901469B (zh) | 2020-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109901469A (zh) | 一种基于fpga技术实现profibus-pa总线通信的方法 | |
CN101447915B (zh) | 一种实现自动平滑切换多种网络拓扑结构的方法及网络装置 | |
CN103248526A (zh) | 实现带外监控管理的通信设备、方法及主从切换方法 | |
CN105939253A (zh) | 一种工业无线网关装置及其协议转换方法 | |
CN105978778A (zh) | 基于stm32的以太网与串口/can协议转换装置 | |
CN110266569B (zh) | 一种io-link端口扩展装置及方法 | |
CN201294545Y (zh) | 多协议数据采集网关 | |
RU2226710C2 (ru) | Драйвер устройства ieee для приставки | |
CN108255754B (zh) | 一种兼容i2c的i3c主设备、i3c主从设备通信系统及方法 | |
CN101937406A (zh) | 一种VxWorks操作系统中实现驱动1394设备的方法和系统 | |
CN109783416A (zh) | Spi从设备和i2c从设备共用gpio的方法、电路和电子设备 | |
CN106878131B (zh) | 一种profibus耦合器及profibus的数据传输方法 | |
CN102263698A (zh) | 虚拟通道的建立方法、数据传输的方法及线卡 | |
JP2002016613A (ja) | 電子機器、電子機器システムおよび通信制御方法 | |
CN114039808B (zh) | 基于can的多通道的can/lin/sent转发协议 | |
CN104993583B (zh) | 配电自动化设备的通信方法 | |
JPH03123232A (ja) | データ伝送制御処理方法 | |
CN109388606A (zh) | 一种芯片内可重构的串行总线控制器 | |
CN207853917U (zh) | 一种从机、通讯扩展卡及组网系统 | |
CN101521918A (zh) | 通信设备、通信方法以及数据结构 | |
CN107506318A (zh) | 一种软件模拟串行数据传输装置 | |
CN104346310B (zh) | 一种高性能i2c从机数据交换电路及方法 | |
CN202750089U (zh) | 蓝牙装置和集成式外设 | |
CN112822174A (zh) | 一种数据采集智能模组、数据采集箱及数据采集方法 | |
CN105893036B (zh) | 一种嵌入式系统的兼容式加速器扩展方法 |
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 |