色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

英特爾開發者套件愛克斯板與CODESYS實現軟PLC配置并與外界程序通信

SDNLAB ? 來源:SDNLAB ? 2023-06-28 16:49 ? 次閱讀

序言

愛克斯板介紹

AIxBoard愛克斯板開發者套件是一款功能強大的小型計算機,專為支持入門級邊緣人工智能應用程序和設備而設計。無論是在人工智能學習、開發還是實訓等應用場景下,它都能完美勝任。

該開發板是類樹莓派的x86主機,可支持Linux Ubuntu及 完整版Windows操作系統。板載一顆英特爾4核處理器,最高運行頻率可達2.9 GHz,且內置核顯(iGPU),板載 64GB eMMC存儲及LPDDR4x 2933MHz(4GB/6GB/8GB),內置藍牙Wi-Fi模組,支持USB 3.0、HDMI視頻輸出、3.5mm音頻接口,1000Mbps以太網口。完全可把它作為一臺mini小電腦來看待,且其可集成一塊Arduino Leonardo單片機,可外拓各種傳感器模塊。

此外, 其接口與Jetson Nano載板兼容,GPIO與樹莓派兼容,能夠最大限度地復用樹莓派、Jetson Nano等生態資源,無論是攝像頭物體識別,3D打印,還是CNC實時插補控制都能穩定運行。可作為邊緣計算引擎用于人工智能產品驗證、開發;也可以作為域控核心用于機器人產品開發。

然而,雖然愛克斯板具有如上的諸多優點。但由于其運行的Windows或者Linux系統都是非實時性的操作系統,難以用于對實時性要求較高的工業環境中。而實時性的PLC環境通常較為封閉,難以使用python,Openvino等外界程序。

CODESYS介紹

CODESYS是一款工業自動化領域的一款開發編程系統(CODESYS是Code System的簡寫),應用領域涉及工廠自動化、汽車自動化、嵌入式自動化、過程自動化和樓宇自動化等等。CODESYS軟件可以分為兩個部分,一部分是運行在各類硬件中的RTE(Runtime Environment),另一部分是運行在PC機上的IDE。因此CODESYS的用戶既包括生產PLC、運動控制器的硬件廠商,也包括最終使用PLC、運動控制器的用戶。

目前全球有近400家的控制系統生產制造商是CODESYS的用戶:如ABB、施耐德電氣SchneiderElectric、伊頓電氣EATON、博世力士樂Rexroth、倍福BECKHOFF、科控KEBA、日立HITACHI、三菱自動化MITSUBISHI、歐姆龍OMRON、研華科技、凌華科技ADLINK、新漢電腦、和利時集團、SUPCON 中控集團、步科自動化KINCO、深圳雷賽、匯川技術、深圳合信、深圳英威騰、華中數控、固高科技等等。

簡單來說,CODESYS可以說是PLC界的安卓,許多PLC廠商都以CODESYS作為其PLC的內核。

此外,CODESYS可以將任何一款arm架構或者x86架構的處理器變為實時的PLC系統。CODESYS結合AIxBoard,我們能夠得到一個可以用于工業控制檢測領域的一款功能強大的人工智能小型計算機。

前期準備

CODESYS軟件分三層架構,可用下圖來表示:

0f7f781e-14d6-11ee-962d-dac502259ad0.png

| CODESYS軟件架構示意圖

其中開發層(IDE)可使用CODESYS Development System(具有完善的在線編程和離線編程功能)、編譯器及其配件組件、可視化界面編程組件等對CODESYS程序進行開發與部署。本文使用的版本為CODESYS V3.5 SP17,下載與安裝教程可見:CODESYS 3.5.17.0 軟件安裝_codesys安裝教程_小 Co的博客-CSDN博客。

開發層主機前期準備

在安裝完CODESYS后,還需要根據需求下載安裝部分CODESYS軟件包,由于本文需要在運行有Ubuntu的AIxBoard上部署CODESYS Runtime,并通過共享內存實現與外界程序通信,故需安裝的軟件包有以下幾種:

1. CODESYS Control for Linux SL

2. CODESYS Edge Gateway for Linux

3. Shared Memory Communication

完成安裝后,可在包管理器中查看到這三個軟件包。

0fa9d91a-14d6-11ee-962d-dac502259ad0.png

| 在CODESYS中安裝軟件包

安裝完成三個軟件包后,重啟CODESYS,隨后能夠在工具中最下面一行找到Update Linux,點擊后會打開一個能夠與安裝了Linux系統的AIxBoard進行通信部署的界面。

0ff3672e-14d6-11ee-962d-dac502259ad0.png

| 安裝軟件包完成后的效果

設備硬件層前期準備

為了提高AIxBoard的適用性,本文將使用Ubuntu系統作為AIxBoard的操作系統,系統版本為Ubuntu 20.04LTS,這里使用的是Canonical為Intel優化的版本。下載與安裝教程如下:系統安裝 - AIxBoard開發指南 (xzsteam.com)。

除此之外,安裝完成系統后,還需安裝python以進行共享內存通信,本文使用的python版本為3.8.10。

為驗證CODESYS能夠與外界程序通信,同時也安裝了Epics。Epics全稱為Experimental Physics and Industrial Control System即“實驗物理及工業控制系統”,是上世紀90年代初由美國洛斯阿拉莫斯國家實驗室(LANL)和阿貢國家實驗室(ANL)等聯合開發的大型控制軟件系統。安裝完成Epics后,需使其在后臺運行,后續將通過CODESYS與其進行通信。

102b0490-14d6-11ee-962d-dac502259ad0.png

| 在AIxBoard中預先安裝好Ubuntu系統與Epics

工程建立

新建標準工程

在CODESYS中,選擇文件-新建工程,命名工程為AIxBoard,選擇新建標準工程。

10a05088-14d6-11ee-962d-dac502259ad0.png

| 新建標準工程

在彈出的標準工程對話框中,選擇設備為CODESYS Control for Linux SL,選擇結構化文本(ST)作為編程語言。

10cdd58a-14d6-11ee-962d-dac502259ad0.png

| 新建標準工程選項

加載所需函數庫

將我們剛剛安裝的軟件包中的所需函數庫加載到此工程中,需要添加的函數庫有:

· SysShm,3.5.8.0 (System)

· SysTypes2 Interfaces,3.5.4.0 (System)

打開庫管理器(Library Manager),選擇“添加庫(Add Library)”,點“高級(Advanced.。.)”;

10f1ace4-14d6-11ee-962d-dac502259ad0.png

| 在工程中加載剛剛安裝好的函數庫

在搜索框(String for a fulltext search.。.)中分別輸入SysShm和SysTypes搜索添加SysShm,3.5.8.0 和SysTypes2 Interfaces,3.5.4.0 ,

選中搜索到的庫,點“OK”確認添加,

1130f43a-14d6-11ee-962d-dac502259ad0.png

117611c8-14d6-11ee-962d-dac502259ad0.png

| 搜索并添加所需的兩個函數庫

建立設備通信

點擊工具-Update Linux打開與Linux通信的界面,在左側輸入用戶名和密碼,搜索到AIxBoard的IP后,點擊Install將CODESYS Runtime安裝至AIxBoard中,安裝文件可以在AIxBoard的/etc/中找到。

117611c8-14d6-11ee-962d-dac502259ad0.png

| 與AIxBoard通信并將Runtime部署在AIxBoard上

經過圖9的操作之后,AIxBoard便已經成為了一個能夠運行CODESYS的實時性系統的PLC了。

12017a60-14d6-11ee-962d-dac502259ad0.png

| 在AIxBoard上安裝好的CODESYS Runtime程序文件

新建項目后,點擊左下角設備進入設備樹,雙擊Device后,點擊掃描網絡進行設備連接,選擇AIxBoard為控制器的網絡路徑。

12a6d1e0-14d6-11ee-962d-dac502259ad0.png

| 進行設備掃描與連接

輸入賬號密碼進行登錄,如果是第一次登陸,還需要另外設置一次登錄密碼。

12d18d36-14d6-11ee-962d-dac502259ad0.png

| 在CODESYS Runtime上登錄并自動下載代碼

登陸完成后,將會自動下載程序代碼至AIxBoard上,并且可以在device中看到設備信息

13146426-14d6-11ee-962d-dac502259ad0.png

| 連接完成后的設備網絡圖

代碼編寫

定義數據單元類型與全局變量

右擊Application,選擇添加DUT(Data Unit Type,數據單元類型),DUT為自定義的數據類型,本文中新建自定義的數據單元類型目的為通過不同類型的數據單元,將輸出至外部程序的變量與從外部程序輸入進來的變量分離開。

新建兩個數據類型分別為:Str_ParaFromHMI與Str_ParaToHMI,目前結構體內部僅包含一個長整型格式的數據(LREAL),可根據實際需求修改或添加。

TYPE Str_ParaToHMI : STRUCT fOut: LREAL; END_STRUCT END_TYPE TYPE Str_ParaFromHMI : STRUCT fIn: LREAL; END_STRUCT END_TYPE 右擊Application添加全局變量列表GVL(Global Var List),并將剛剛新建的兩種數據類型實例化,并添加至全局變量中。實例化的名稱分別為GetPara與SetPara。其中GetPara用于從外部程序中獲取數據進入CODESYS,SetPara用于將CODESYS中的數據輸出至外部程序中。

VAR_GLOBAL GetPara:Str_ParaFromHMI; SetPara:Str_ParaToHMI; END_VAR

編寫共享內存POU

右擊Application添加POU(Program organizational unit,程序組織單元),命名為Sharedmemory。

136e9ef0-14d6-11ee-962d-dac502259ad0.png

| 新增程序組織單元的相關配置

POU上方為局部變量聲明區域,下方為結構化文本程序區域。

局部變量聲明如下:

PROGRAM SharedMemory VAR bStart: BOOL:= FALSE; ReadHandle: RTS_IEC_HANDLE:= RTS_INVALID_HANDLE; WriteHandle: RTS_IEC_HANDLE:= RTS_INVALID_HANDLE; szNameRead: STRING:= ‘CODESYS_MEMORY_READ’; //聲明共享內存的讀取內存名稱 szNameWrite: STRING:= ‘CODESYS_MEMORY_WRITE’; //聲明共享內存的寫入內存名稱 ulPhysicalAddressRead: __UXINT:= 0;//讀取數據的偏移地址,0為從頭讀取 ulPhysicalAddressWrite: __UXINT:= 0;//寫入數據的偏移地址,0為從頭寫入 ulSizeRead: __UXINT:= 1024;//讀取空間大小 ulSizeWrite: __UXINT:= 1024;//寫入空間大小 ResultRead: ARRAY[0..2] OF RTS_IEC_RESULT; //返回運行錯誤碼,0中為運行錯誤碼,1中為讀取執行錯誤碼,2中為寫出執行錯誤碼 ResultWrite: ARRAY[0..2] OF RTS_IEC_RESULT; //返回運行錯誤碼,0中為運行錯誤碼,1中為讀取執行錯誤碼,2中為寫出執行錯誤碼 SMRead: __UXINT; SMWrite: __UXINT; ulOffsetRead: __UXINT:= 0; ulOffsetWrite: __UXINT:= 0; END_VAR 其中,高亮部分語句所指定的名稱是之后需要與python中讀取共享內存中數據一致的文件名稱。可任意修改但是應與python中程序一致,共享內存的文件將會保存在/dev/shm/中。 下方ST程序部分編寫代碼如下:

//Init Memory IF NOT bStart THEN ReadHandle:= SysSharedMemoryCreate(pszName:= szNameRead, ulPhysicalAddress:= ulPhysicalAddressRead, pulSize:= ADR(ulSizeRead), pResult:= ADR(ResultRead[0])); WriteHandle:= SysSharedMemoryCreate(pszName:= szNameWrite, ulPhysicalAddress:= ulPhysicalAddressWrite, pulSize:= ADR(ulSizeWrite), pResult:= ADR(ResultWrite[0])); IF RTS_INVALID_HANDLE 《》 ReadHandle AND RTS_INVALID_HANDLE 《》 WriteHandle THEN bStart:= TRUE; END_IF END_IF //讀入數據 IF RTS_INVALID_HANDLE 《》 ReadHandle THEN SMRead:= SysSharedMemoryRead( hShm:= ReadHandle, //讀取內存的設備句柄 ulOffset:= ulOffsetRead, //讀取數據的偏移地址 pbyData:= ADR(GVL.GetPara), //指向讀取數據的緩沖區 ulSize:= SIZEOF(Str_ParaFromHMI), //讀取數據的字節大小 pResult:= ADR(ResultRead[1])); //返回執行的錯誤碼 END_IF //寫出數據 IF RTS_INVALID_HANDLE 《》 WriteHandle THEN SMWrite:= SysSharedMemoryWrite( hShm:= WriteHandle, //寫入內存的設備句柄 ulOffset:= ulOffsetWrite, //寫入數據的偏移地址 pbyData:= ADR(GVL.SetPara), //指向寫入數據的緩沖區 ulSize:= SIZEOF(Str_ParaToHMI), //寫入數據的字節大小 pResult:= ADR(ResultWrite[2])); //返回執行的錯誤碼 END_IF 在Maintask中調用編輯好的POU,將此POU加入到執行程序中。

13993714-14d6-11ee-962d-dac502259ad0.png

| 在任務配置中調用編寫好的程序

編寫數據來源POU

在主程序PLC_RPG中添加正弦數據函數,不斷向SetPara中發送正弦波數據。

13cde3f6-14d6-11ee-962d-dac502259ad0.png

| 編寫主程序相關函數,用于輸入正弦波形 完成后,點擊上方編譯,編譯通過后即可將程序登錄下載至AIxBoard中。 在AIxBoard上,編寫相關python程序接收來自CODESYS傳遞的信號并通過pyepics將其發送至Epics中,代碼如下: import mmap import struct from epics import caput import epics import time name=“CODESYS_MEMORY_WRITE” f= open(‘/dev/shm/’+name,“r”) while 1: f.flush() mm=mmap.mmap(f.fileno(),0,prot=mmap.PROT_READ) #print(mm.read(8)) [number,]=struct.unpack(‘d’,mm.read(8)) print(number) #print(epics.ca.find_libca()) caput(‘aiHost:xxxExample’,number) time.sleep(0.05) 運行結果 以管理員身份運行python程序,可在AIxBoard上不斷讀取到CODESYS發送的數據。

1432c442-14d6-11ee-962d-dac502259ad0.png

| AIxBoard上最終運行結果,左側為接收到的數據量 同時在CODESYS中可建立信號跟蹤器,檢測發送出的數據波形。

1467a4dc-14d6-11ee-962d-dac502259ad0.png

| 信號跟蹤器上顯示的CODESYS中發出的數據波形 通過新建CS-Studio界面,可以從Epics中查看數據,驗證CODESYS中發送出來的數據的正確性。

14957b1e-14d6-11ee-962d-dac502259ad0.png

| 在CS-Studio界面上監視到的Epics網絡中PV量的變化波形 至此,我們已完成了將AIxBoard變為PLC并與外界程序通信的全部任務,順利將AIxBoard從一臺非實時性的開發板變成了一個能夠用于工業控制領域的實時PLC控制器。能夠與外界程序進行通信,使基于AIxBoard與CODESYS配置而成的軟PLC相比傳統的PLC而言,具有了更高的靈活性,通過搭配OpenVINO等人工智能模型,能夠實現更加智能化的控制效果。 文中所涉及到的所有工程文件與代碼均已開源于github。 網址為: https://github.com/EHU0/Codesys_ShareMemory_On_AIxBoard.git

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

    關注

    61

    文章

    9955

    瀏覽量

    171712
  • plc
    plc
    +關注

    關注

    5010

    文章

    13283

    瀏覽量

    463181
  • 智能化
    +關注

    關注

    15

    文章

    4875

    瀏覽量

    55356

原文標題:英特爾開發者套件愛克斯板與CODESYS實現軟PLC配置并與外界程序通信

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

收藏 人收藏

    評論

    相關推薦

    英特爾BOOT Loader開發套件-高級嵌入式開發基礎

    從技術角度概括介紹用于快速開發和部署啟動加載器的英特爾 Boot Loader 開發套件(英特爾 BLDK),該套件基于
    發表于 12-07 14:57 ?59次下載
    <b class='flag-5'>英特爾</b>BOOT Loader<b class='flag-5'>開發套件</b>-高級嵌入式<b class='flag-5'>開發</b>基礎

    英特爾quark處理器開發者手冊

    英特爾quark處理器開發者手冊,面向嵌入式,專注物聯網
    發表于 10-30 16:19 ?14次下載

    Buzz研討會和英特爾游戲開發者計劃

    了解英特爾游戲開發者計劃的Buzz研討會!
    的頭像 發表于 05-31 11:17 ?2174次閱讀

    物聯網開發者展示:英特爾語音啟用開發人員套件

    IoT Developer Show的這一集介紹了英特爾?語音啟用開發人員套件,以及它如何實現您的開發創意!
    的頭像 發表于 11-09 06:19 ?2599次閱讀

    使用英特爾物聯網開發人員套件實現快速原型設計

    使用英特爾?物聯網開發人員套件實現并加速您的產品路徑,以實現快速原型設計。
    的頭像 發表于 05-31 09:00 ?1914次閱讀

    英特爾正式宣布建立統一開發者平臺Developer Zone

    近日,英特爾公司正式宣布建立統一全新oneAPI 2022工具包和全新oneAPI卓越中心的開發者平臺,之后英特爾詳細介紹了針對開發者的重點投入計劃,
    的頭像 發表于 10-28 11:18 ?1719次閱讀

    英特爾On技術創新峰會公布開發者重點投入計劃,全面賦能開發者

    發布了最新產品、開發者工具和技術,強調對賦能開放生態系統的重視,確保開發者能夠使用他們所青睞的開發工具和開發環境,并與云服務提供商、開源社區
    的頭像 發表于 10-28 15:49 ?2766次閱讀
    <b class='flag-5'>英特爾</b>On技術創新峰會公布<b class='flag-5'>開發者</b>重點投入計劃,全面賦能<b class='flag-5'>開發者</b>

    英特爾oneAPI 2023工具包正式上線,幫助開發者利用英特爾硬件的先進功能

    為進一步幫助開發者利用英特爾硬件的先進功能,近日,英特爾宣布英特爾? oneAPI工具包的2023年版本已在英特爾?
    的頭像 發表于 12-20 17:05 ?1152次閱讀
    <b class='flag-5'>英特爾</b>oneAPI 2023工具包正式上線,幫助<b class='flag-5'>開發者</b>利用<b class='flag-5'>英特爾</b>硬件的先進功能

    英特爾開發者套件愛克斯CODESYS實現PLC配置并與外界程序通信

    此外, 其接口與 Jetson Nano 載兼容,GPIO 與樹莓派兼容,能夠最大限度地復用樹莓派、Jetson Nano 等生態資源,無論是攝像頭物體識別,3D 打印,還是 CNC 實時插補控制都能穩定運行。可作為邊緣計算引擎用于人工智能產品驗證、開發;也可以作為域控
    的頭像 發表于 06-15 17:37 ?2531次閱讀
    <b class='flag-5'>英特爾</b><b class='flag-5'>開發者</b><b class='flag-5'>套件</b><b class='flag-5'>愛克斯</b><b class='flag-5'>板</b>與<b class='flag-5'>CODESYS</b><b class='flag-5'>實現</b><b class='flag-5'>軟</b><b class='flag-5'>PLC</b><b class='flag-5'>配置</b><b class='flag-5'>并與</b><b class='flag-5'>外界</b><b class='flag-5'>程序</b><b class='flag-5'>通信</b>

    使用英特爾開發者套件搭建RTMP流媒體服務器

    本文將會介紹如何使用英特爾 開發者套件——愛克斯開發板快速搭建 RTMP 流媒體服務器,并利用 FFmpeg*
    的頭像 發表于 07-18 15:58 ?811次閱讀
    使用<b class='flag-5'>英特爾</b><b class='flag-5'>開發者</b><b class='flag-5'>套件</b>搭建RTMP流媒體服務器

    基于OpenVINO在英特爾開發套件實現眼部追蹤

    本文將以訓練一個眼部追蹤 AI 小模型為背景,介紹從 Pytorch 自定義網絡模型,到使用 OpenVINO NNCF 量化工具優化模型,并部署到英特爾開發套件愛克斯開發板 AIx
    的頭像 發表于 09-18 10:11 ?761次閱讀

    基于英特爾開發套件的AI字幕生成器設計

    市面上有很多自然語言處理模型,本文旨在幫助開發者快速將 OpenAI* 的熱門 NLP 模型 Whisper 部署至英特爾 開發套件愛克斯開發板
    的頭像 發表于 09-27 16:59 ?879次閱讀
    基于<b class='flag-5'>英特爾</b><b class='flag-5'>開發套件</b>的AI字幕生成器設計

    基于英特爾哪吒開發者套件平臺來快速部署OpenVINO Java實戰

    OpenVINO 工具套件基于OneAPI開發,可以加快高性能計算機視覺和深度學習應用開發速度的工具套件,適用于從邊緣到云的各種英特爾計算平
    的頭像 發表于 03-21 18:24 ?1480次閱讀
    基于<b class='flag-5'>英特爾</b>哪吒<b class='flag-5'>開發者</b><b class='flag-5'>套件</b>平臺來快速部署OpenVINO Java實戰

    【轉載】英特爾開發套件“哪吒”快速部署YoloV8 on Java | 開發者實戰

    OpenVINO 工具套件基于OneAPI開發,可以加快高性能計算機視覺和深度學習應用開發速度的工具套件,適用于從邊緣到云的各種英特爾計算平
    的頭像 發表于 03-23 08:05 ?557次閱讀
    【轉載】<b class='flag-5'>英特爾</b><b class='flag-5'>開發套件</b>“哪吒”快速部署YoloV8 on Java | <b class='flag-5'>開發者</b>實戰

    英特爾開發套件『哪吒』在Java環境實現ADAS道路識別演示 | 開發者實戰

    本文使用來自OpenModelZoo的預訓練的road-segmentation-adas-0001模型。ADAS代表高級駕駛輔助服務。該模型識別四個類別:背景、道路、路緣和標記。硬件環境此文使用了英特爾開發套件家族里的『哪吒』(Nezha)
    的頭像 發表于 04-29 08:07 ?565次閱讀
    <b class='flag-5'>英特爾</b><b class='flag-5'>開發套件</b>『哪吒』在Java環境<b class='flag-5'>實現</b>ADAS道路識別演示 | <b class='flag-5'>開發者</b>實戰
    主站蜘蛛池模板: 吉吉影音先锋av资源网| 色小说在线| 国产免费变态视频网址网站| 中字幕视频在线永久在线观看免费 | 姑娘视频日本在线播放| 亚洲欧美视频在线| 日本人xxxⅹ18hd19hd| 久久视频这有精品63在线国产| 国产成人小视频在线观看| 中文字幕在线视频观看| 校花的奶好大好浪| 日本精品无码久久久久APP | 龙广在线收听| 国产香蕉视频在线播放| 川师 最美老师| 99re热有精品国产| 曰批视频免费40分钟不要钱 | 国产精品69人妻无码久久| adc我们的永久网址| 在线观看国产高清免费不卡| 无码天堂亚洲内射精品课堂| 琪琪see色原网站在线观看| 美女被触手注入精子强制受孕漫画| 好姑娘社区在线视频| 国产黄片毛片| 大陆老熟女60岁| yellow日本动漫观看免费| 69xx欧美| 2020年国产理论| 伊人角狠狠狠狠| 一二三四在线观看高清电视剧 | 国内精品久久| 国产精品亚洲污污网站入口| 国产AV在线传媒麻豆| 帝王被大臣们调教高肉| 扒开美女的内衣亲吻漫画| 99久久伊人一区二区yy5o99| 97人妻无码AV碰碰视频| 2020亚洲色噜噜狠狠网站| 4438全国免费观看| 91久久夜色精品|