在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

采取FPGA對IEC61499的功能塊進行加速

工程師鄧生 ? 來源:CSDN ? 作者:姚家灣 ? 2022-09-30 08:59 ? 次閱讀

PLC 與“軟件PLC“

早期的PLC 是使用繼電器實現邏輯控制的。也就是說,它們完全是硬件實現的。當微處理器出現之后,PLC 內部使用了CPU和程序來實現控制邏輯。現代PLC中也使用了實時操作系統以及各種網絡協議。自動控制行業的專家總是將在通用操作系統上運行的PLC控制程序成為“軟件PLC”,普遍認為軟件PLC 沒有PLC 設備可靠,實時性沒有PLC設備強。

這其實是一種誤解。某種意義上講,現代的PLC 都是軟件PLC。它們之間的唯一差別是PLC設備是在特定硬件平臺上實現的實時操作系統和程序具有更高的實時性,確定性和穩定性。它們經過了廠商預先反復的測試。確保了軟硬件匹配的的更好。如果重視軟硬件的相互匹配,在通用硬件平臺上,同樣能夠實現可靠運行的PLC 系統。比如倍福公司工業電腦就是在微軟公司為其定制的windows 下運行。同樣非常的可靠。

在實時性方面,大多數PLC 使用實時操作系統(RTOS),比如VxWorks OS。這是一個可靠性,實時性極強的實時操作系統。不過,RTOS的處理能力也是有限的,設想編寫一個“巨大”的程序在PLC上運行, 也會出現性能下降問題。只是PLC 設備預留了足夠的資源來保證在特定的應用中的需要,通俗地講,“就是殺雞用牛刀”。

實時操作系統本質上是操作系統,只是內部調度算法上考慮了對外部事件的響應事件而已。但是令人遺憾的是,幾乎所有的OS 調度算法都只是“盡力而為”。PLC 的做法是預留了足夠的硬件算力,來確保應用程序滿足實時性的要求。為了提高PLC 的算力,高性能的PLC內部采用了FPGA 來實現實時性要求高的功能,例如產生高速PWM 和脈沖輸出,運動控制模塊,脈沖計數,電機編解碼器等。

開放性的挑戰

現代控制系統對PLC 提出了越來越高的要求,例如導入更復雜的控制算法,AI模塊和云端交互功能,它們對PLC 內部CPU/FPGA 提出更高的算力需求,另一方面,控制系統朝著開放性方向發展。第三方開發者和最終用戶參與PLC 功能塊的開發。在PLC 的生命周期內會變更程序和功能塊升級。如此一來,PLC廠商其實能難預估應用程序對算力的預估。并且難以承諾產品的實時性。而是又第三方開發者和用戶能夠更高效地方式來保證系統的實時性能。

IEC61499 的實時性

目前大多數的IEC61499 功能塊和運行時是軟件實現,并且在PC或者Linux 設備上運行。因此IEC61499 目前是一個典型的“軟”控制器

問題的確是存在的,IEC61499 運行時的實時性和確定性的確令人擔心的。為了解決這個問題,可以吸取PLC 的方式

提高設備內部的SOC算力的富余量

采取FPGA 對功能塊加速

硬件實現實時功能塊網絡。

采取FPGA 對功能塊加速

通過對一些對算力比較大的功能塊使用FPGA 實現,能夠縮短功能塊的執行時間。提高功能塊網絡的實時性。

ae84683e-4056-11ed-b1c7-dac502259ad0.png

功能塊內部的算法由FPGA IP來實現。FB實現PS/PL 之間的數據交換。類似的FB包括:

高速PWM 發生器

高速脈沖計數器

FFT 快速傅里葉

數字濾波器

不過這種方式具有局限性,功能塊之間的數據和事件的傳遞和功能塊的調度仍然是由軟件實現的,存在著非確定性。對于像高速電機控制中,控制環由多個功能塊構造而成,如果由軟件實現功能塊之間的數據傳遞,整個系統的實時性,確定性難以保證。

aeb21c16-4056-11ed-b1c7-dac502259ad0.png

硬件實現實時功能塊網絡

將實時處理要求高的一端功能塊網絡(譬如一個PID 環控制)使用FPGA來實現,而配置,監控和事務交互功能塊仍然由軟件實現。這樣完整的硬件實現,避免了軟件的干預而造成不確定性和實時性。并且能夠高速地處理控制算法和信號處理。

af246186-4056-11ed-b1c7-dac502259ad0.png

某一段功能塊網絡的硬件實現最好的方法是將這些硬件功能塊網封裝成為復合功能塊。通過工具軟件將這個復合功能塊轉換成為FPGA 硬件語言(HDL,verilog等)。由FPGA開發工具vivado 轉換成FPGA 比特流。

IEC61499 硬件功能塊的實現

筆者初步開始嘗試FPGA 實現IEC61499 的方法,使用xilinx zynq 作為SOC平臺。由于IEC61499 并不普及,網絡上相關的文章非常少。也只能自己慢慢摸索

在IEC61499 運行時的實現中,功能塊大多數采用了C++ 類實現,因此我們希望采用HLS 來實現C++類為基礎的IEC61499 功能塊,但是發現HLS 幾乎是為復雜算法而準備的,使用C++類的介紹非常少,如果去實現與數字邏輯非常接近的功能塊,好像不如verilog 語言更簡單。

verilog 語言以module 為一個編程單元,相當于C語言中的一個函數(function),但是由于硬件的特殊性,所有的變量都是靜態分配的,所以與C++的類又有幾分相似,內部實現ECC狀態機和算法十分方便。與此同時,verlog 的功能塊能夠實例化。在另外的模塊中實現實例。與IEC61499 功能塊實例化十分相像。使用verilog 語言編寫IEC61499 硬件功能塊更加合適。

例子1-E_CTD 功能塊

下面是筆者使用verilog 實現的一個E_CTD 計數器

`timescale 10ns / 1ns



module e_ctd(cd,ld,cdo,ldo,pv,cv,q);



   input cd,ld;



   input [15:0] pv;



   output reg q,cdo,ldo;



   output reg [15:0] cv;



   reg [15:0] v;



   always@(posedge cd)



   begin



    



     if (cv==0)begin



       cv <= v;



 ? ? ? ? ?  #5 q=1;



 ? ? ? ? ?  end else



 ? ? ? ? ?  begin



 ? ? ? ? ? ? cv <= cv - 1;



 ? ? ? ? ?  #5 q=0;



 ? ? ? ? ?  end



 ? ? ?  #5 cdo=1;



 ? ? ?  #5 cdo=0;



 ?  end



 ?  always@(posedge ld)



 ?  begin



 ? ? ?  v  <= pv;



 ? ? ?  cv <= pv;



 ? ? ?  ldo=1;



 ? ? ?  #10 ldo=0;



 ?  end



endmodule

在上面的程序中,忽略了ECC 的實現。module e_ctd是功能塊,下面的test 是仿真程序

仿真的結果

af659fd4-4056-11ed-b1c7-dac502259ad0.png

IEC61499 基本功能塊都是底層邏輯構建得,使用verilog 語言描寫非常合適,如果要深入研究IEC61499 功能塊硬件化得課題,需要開發 hardware function block 庫。在這個基礎上開發一些構建工具(XML->verilog)

例2 -E_CYCLE 功能塊

`timescale 10ns / 1ns



module e_cycle(start,stop,eo);



input start,stop;



output reg eo;



parameter FREQ = 100000;  // in constraint_mode



parameter DUTY = 50;  // in percentage 



parameter clk_pd  = 1.0/(FREQ * 1e3) * 1e9; 



parameter clk_on  = DUTY/100.0 * clk_pd;



parameter clk_off = (100.0 - DUTY)/100.0 * clk_pd;



  reg start_clk;



  initial begin



  eo <= 0;



 ?  start_clk <= 0;



  end



  always @(posedge start) begin



 ?  if (start) 



 ? ?  start_clk=1;



 end



 ?  always @(posedge stop) begin



 ?  if (stop) 



 ? ?  start_clk=0;



 end ?



 ? always @(posedge start_clk) begin



 if (start_clk) begin



while (start_clk) begin



 ? ?  #(clk_on) eo=1;



 ? ?  #(clk_off) eo=0; ?



 ? ? ?  end ? ? ?



 ?  end



  end ?



 endmodule

例3 -E_T_FF

`timescale 10ns / 1ns



module E_T_FF(clk,eo,q);



input clk;



output reg eo,q;



initial



begin



   q=0;



   eo=0;



end



  always @(posedge clk) begin



   if (clk) 



   begin



    q <=~q;



 ? ?  eo=1;



 ? ?  #2 eo=0;



 ? ?  end



  end



endmodule

測試程序

測試程序完成IEC61499 功能塊網絡。

af85202a-4056-11ed-b1c7-dac502259ad0.png

`timescale 10ns / 1ns







module test();



   reg cd,ld;



   wire cdo,ldo,q,q2;



   wire [15:0] cv;



   wire ecycle_eo,e_t_ff_eo;



  reg start,stop;



     E_CYCLE #(.FREQ(200000)) ecycle1(start,stop,ecycle_eo);



     E_CTD #(.PV(8)) etcd1(ecycle_eo,ld,cdo,ldo,cv,q);



     E_T_FF e_t_ff(cdo,e_t_ff_eo,q2);



initial



  begin 



     #5 ld =0;



     #5 ld=1;



    #5  start=1;



    #5 start=0;



   end



  initial



     $monitor("at time %t ,",$time,"CDO=%b,LDO=%b,Q=%b,CV=%b",ecycle_eo,ldo, q,q2);  



endmodule

仿真結果

afda0194-4056-11ed-b1c7-dac502259ad0.png

軟硬件接口

實現IEC61499 硬件功能塊,需要設計一個統一的軟硬件接口。如下圖所示。

IEC61499 運行時通過HFB API 訪問硬件功能塊

API 包括:

Event_Action() 向硬件FB 發送事件

Put_Data 向FB 發送數據

Get_Data讀取FB數據

Event_Notify() 處理FB 輸出的事件中斷。(也可以是查詢方式)

ARM 處理器通過AXI-lite 接口與PL 端的AXI 外設IP 通信

write Register

readRegister

interrupt processing

b020ea00-4056-11ed-b1c7-dac502259ad0.png

AXI 外設寄存器

輸入事件寄存器(Input Event register)

輸出事件寄存器(Output Event register)

輸入數據寄存器(Input Data Register)

輸出數據寄存器(Output Data Register)

操作過程

事件輸入

當需要向功能塊注入事件時,運行時向輸入事件寄存器對應的bit 位置 1,硬件FB 檢測輸入事件寄存器的狀態,一旦發現變化,轉向事件處理。完成后,清除對應的狀態位。

事件輸出

當功能塊輸出一個事件時,在輸出事件寄存器相關位置1,并產生一個中斷信號。由運行時軟件讀取事件寄存器,并且清零。

數據輸入/輸出

由軟件直接寫入或讀取數據輸入寄存器。這一點與軟件實現有所不同,軟件FB 處理時是通過 getDataIn根據connection 去數據源功能塊中讀取的。對于硬件FB,當事件來臨時,API要根據事件-數據關聯性,調用getDataIn 讀取數據后需要寫入數據輸入寄存器中。

結束語

這只是一個開頭,還有許多工作要做

1 軟件功能塊與硬件功能塊的接口的實現方式

2 如何將IEC61499 復合功能塊的XML 描述轉換成verilog 的模塊。

3 如何調用HLS 產生的IP





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1631

    文章

    21806

    瀏覽量

    606598
  • PLC控制
    +關注

    關注

    9

    文章

    251

    瀏覽量

    27399
  • 編解碼器
    +關注

    關注

    0

    文章

    268

    瀏覽量

    24326
  • RTOS
    +關注

    關注

    22

    文章

    821

    瀏覽量

    119939

原文標題:IEC61499 在FPGA中的實現

文章出處:【微信號:ZYNQ,微信公眾號:ZYNQ】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么是FB功能塊?為什么要使用FB功能塊?如何制作一個FB功能塊

      FB功能塊是一種封裝了特定邏輯功能的模塊。它類似于一個子程序或函數,但是它有自己的內部變量和接口。FB功能塊可以被多次調用,并且每次調用都會創建一個新的實例。
    的頭像 發表于 11-09 16:13 ?4467次閱讀
    什么是FB<b class='flag-5'>功能塊</b>?為什么要使用FB<b class='flag-5'>功能塊</b>?如何制作一個FB<b class='flag-5'>功能塊</b>?

    資料下載:從PLC 到IEC61499 控制器

    )-序列功能圖(Sequential Function Charts) -功能塊(Function Block) -結構文本(Structure Text) -指令表(Instruction List) 梯形圖是使用最廣泛的PLC編程方式.學習PLC編程大多數是從梯形圖開
    發表于 07-02 06:36

    漫談工業軟件IEC61499 功能塊

    功能塊(function block)是IEC61499 標準中最重要的概念之一。不過功能塊的概念并不是該標準所特有的。在符合IEC61131-3 標準的PLC 中就定義了
    發表于 07-02 07:58

    基于IEC61131的PLC和IEC61499兼容型控制器之間有何差別

    PLC是什么?PLC的運行模式有哪幾種?基于IEC61131的PLC和IEC61499兼容型控制器之間有何差別?
    發表于 09-17 06:26

    IEC 61499是什么

    IEC 61499是什么?PLC也可以通過網絡構成分布式控制系統么?這兩個標準有什么區別呢?
    發表于 09-28 08:27

    容器技術和IEC61499在智能制造系統中有何應用

    智能化制造的目的是什么?容器技術和IEC61499在智能制造系統中有何應用?
    發表于 09-28 09:24

    IEC61499功能塊有哪幾種模型

    什么是功能塊功能塊的一般特性是什么?IEC61499功能塊有哪幾種模型?
    發表于 09-29 06:46

    基于FF現場總線的先進PID功能塊設計

    本文在基金會現場總線的標準PID 功能塊結構的基礎上,結合自適應模糊PID 控制理論和功能塊技術,提出了自適應模糊PID 功能塊的設計方法,并且在水箱溫度控制系統中進行驗證
    發表于 08-14 08:59 ?12次下載

    基于EPA的PID功能塊的設計及實現

    本文介紹了EPA功能塊基本模型及功能塊定義;并主要描述了PID功能塊在單片機上的設計方案及PID功能塊過程控制算法的具體實現,并通過組態軟件驗證了PID的過程控制算法及抗干
    發表于 09-26 14:40 ?7次下載

    騰控MODBUS主站功能塊通迅詳解

    TCMODBUS功能塊編程非常簡單,只需要把要讀寫的從站參數配置好,一一的寫好所有的功能塊后,調用TCMODBUSRUN功能塊即可,無需要各功能塊時間上的配合,由系統主動的
    發表于 10-11 11:21 ?8次下載
    騰控MODBUS主站<b class='flag-5'>功能塊</b>通迅詳解

    PLCopen軸組運動功能塊研究

    針對PLCopen單軸及主/從結構多軸功能塊無法實現復雜多維運動控制的問題,對PLCopen軸組功能塊的執行方式和參數保存及傳遞方法進行了研究,提出了結構體隊列法,設計并實現了PLCopen軸組
    發表于 03-12 15:32 ?4次下載
    PLCopen軸組運動<b class='flag-5'>功能塊</b>研究

    西門子PLC系統功能塊和系統功能

    系統功能塊(SFB )和系統功能(SFC ) 已經編好程序 用戶不需要每個功能都自己編程。S7 CPU為用戶提供了一些已經編好程序,這些
    的頭像 發表于 12-23 17:55 ?1.2w次閱讀

    CPM功能塊使用入門

    CPM功能塊使用入門免費下載。
    發表于 05-09 09:58 ?27次下載

    基于AWTK和AWPLC開發自定義功能塊

    AWPLC 是 ZLG 自主研發的 PLC 系統(兼容 IEC61131-3),本文用定時器為例介紹一下如何擴展自定義功能塊
    的頭像 發表于 10-26 11:50 ?997次閱讀

    Freelance函數和功能塊使用指南 V9.1

    函數 在執行過程中,一個函數返回一個確定的數據,函數不含狀態信息。當一個函數帶相同的參數(輸入參數)調用時,總是獲得相同的結果。 功能塊 在執行過程中,功能塊可以提供一個或多個數據元素,相同
    發表于 08-09 15:25 ?2次下載
    主站蜘蛛池模板: 亚洲大黑香蕉在线观看75 | 四虎精品成在线播放 | www.夜夜操| 中日韩黄色大片 | 六月婷婷久久 | 日本一区二区不卡视频 | 欧美成人精品一级高清片 | 欧美性生交xxxxx久久久 | 欧美一卡2卡三卡4卡5卡免费观看 | 午夜精品在线免费观看 | 青青伊人91久久福利精品 | 午夜国产大片免费观看 | 国产午夜精品一区二区三区 | 国产香蕉久久精品综合网 | 一区二区免费视频 | 鲁丝一区二区三区 | 性欧美日韩| 成人精品一区二区三区电影 | 日韩成人午夜 | 午夜免费视频 | 黄色综合 | 国模娜娜扒开嫩木耳 | 四虎精品成人免费观看 | 日日做日日摸夜夜爽 | 97影院理论片在线观看 | 成人免费看黄页网址大全 | 色中色软件 | 丁香婷婷综合五月综合色啪 | 亚洲视频一区二区三区 | 中国美女乱淫免费看视频 | 日本一区二区免费在线观看 | 丁香婷婷视频 | 久久综合九色综合欧洲 | 男人天堂网在线 | 日本美女搞黄 | 精品久久天干天天天按摩 | 被cao到合不拢腿腐男男 | 啪啪亚洲| 色黄污在线看黄污免费看黄污 | 激情五月综合网 | 极品色天使在线婷婷天堂亚洲 |