国产三级精品三级在线专区,国产欧美亚洲精品a第一页,国产亚洲日韩欧美看国产

<s id="owwia"><td id="owwia"></td></s>
  • <li id="owwia"></li><small id="owwia"><td id="owwia"></td></small>
  • <li id="owwia"></li><small id="owwia"><li id="owwia"></li></small>
  • <small id="owwia"></small>
  • <small id="owwia"></small>
  • <td id="owwia"></td>
  • <li id="owwia"></li> <td id="owwia"><s id="owwia"></s></td>
  • <small id="owwia"><small id="owwia"></small></small>
  • <td id="owwia"></td>
  • <td id="owwia"><li id="owwia"></li></td>
  • <td id="owwia"><li id="owwia"></li></td><td id="owwia"></td><small id="owwia"><td id="owwia"></td></small><small id="owwia"></small>
  • EN
    當前所在位置:首頁 > 技術知識 > EtherCAT

    技術知識

    專注于實時現場總線技術及工業通訊技術的研發、推廣及技術支持服務

    在Windows工控機上開發EtherCAT主站控制器

    發布時間:2020-02-20

            2020年初,由于新型冠狀病毒肺炎(NCP)的突襲,我們度過了一個特別的春節。在這個特殊時期,每個人都在用自己的方式努力著,為這場戰役盡綿薄之力,在各自的戰場上扮演獨特而關鍵的角色。
           作為自動化行業從業者,我們一部分小伙伴已經提前返工,奮戰在抗疫一線,保障設備運行和急需物資的生產供應,大部分小伙伴則積極響應國家號召,待在家里以減少病毒傳播的風險。在家隔離也是戰斗,北京盟通科技全體員工2.10-2.14繼續在家遠程辦公,和大家一起“悶死病毒”。
           在此,我們希望利用這段空閑時間,把在推廣EtherCAT主站和服務客戶過程中的心得記錄下來,供大家參考。

    一、用Windows工控機開發EtherCAT控制器

           我們知道EtherCAT是自動化領域中被廣泛應用的一種實時現場總線技術。在控制器端,EtherCAT主站通常運行在實時操作系統上。比較常見的實時操作系統,如商業版的風河系統Vxworks和QNX,開源的Linux RT Preempt 和Xenomai,以及國產翼輝實時系統都有相應的EtherCAT主站協議??晒┛蛻暨x擇。Linux RT Preempt和Xenomai的比較同樣是客戶經常提及的問題,我們在后續有專門的短文討論,在此不贅述。
           在操作系統的選擇上,我們遇到相當一部分控制器生產廠商,他們一方面有在Windows系統上多年研發的應用在市場上銷售,另一方面對控制精度的要求和對實時現場總線技術的需求都在逐步增加。對這部分廠商來說,在運行Windows系統的工控機上盡量簡單的增加EtherCAT主站協議,并能繼續使用他們熟悉的Visual Studio開發環境,是他們把現有應用和EtheCAT功能相結合的最理想的解決方案。
           還有另外一部分廠商如KUKA機器人,既需要實時系統保障實時現場總線的性能,也需要Windows環境下友好的用戶界面帶來高質量的用戶體驗。當然,Windows系統上應用開發工程師的數量優勢和價格優勢,同樣是很多廠商在設計新一代產品時重要的關注點??傊?,我們有足夠的理由相信,在運行Windows系統上開發支持EtherCAT主站的控制器,是市場上實際存在的需求。
           但是很可惜,Windows不是實時操作系統,所以我們工控機上啟動EtherCAT主站之前,還需要再多做些工作?;蛟S在這里需要特別強調一下,我們說Windows不是實時系統不是因為Windows不夠快。如果我們極端一點,實時性和運行速度快慢沒有多大關系,實時性強調的是時間上的確定性。我們沒有辦法讓標準的Windows7 或者Windows 10系統保證在一個確定的時間間隔內完成一個任務,所以Windows不是實時操作系統。實時系統的確定性問題,我們同樣留到之后的短文討論。
           雖然Windows不是實時操作系統,但我們可以通過類似虛擬機的方式,在工控機的Windows系統中嵌入或擴展實時環境,并將EtherCAT主站或運動控制算法等有實時性要求的應用放在實時環境中,從而完成在Windows工控機上開發EtherCAT控制器的任務。 

    二、Windows實時擴展方案LxWIN

           德國acontis 公司是全球領先的EtherCAT軟件協議棧提供商?;谖覀冊谏瞎澲辛私獾降目蛻粜枰?,acontis公司在其EtherCAT主站產品基礎上,開發了Windows實時擴展解決方案。acontis 公司的EtherCAT協議棧及Windows實時擴展方案已經在全球多家客戶產品如KUKA機器人控制器中使用多年,其可靠性和穩定性已經得到市場充分驗證。
           acontis 公司的Windows實時擴展方案包括兩個重要的組成部分。首先,實現環境可以在不同的實時操作系統之間選擇。我們推薦用戶使用Linux RT Preempt或RTOS-32 Ontime系統作為實時環境。當然客戶也可以選擇VxWorks、QNX、WinCE以及自行開發實時操作系統作為實時環境。

    圖1.Windows實時擴展+實時Linux系統
           圖1 是選擇Real Time Linux 作為實時環境的框架示意圖??刂破鲝S商在Windows上開發的非實時應用程序和客戶圖形界面可以繼續保留在Windows系統下,而EtherCAT主站、運動控制算法等實時應用需要運行在Linux RT Preempt實時環境中。圖1中同樣可以看出,Windows操作系統和實時Linux系統被隔離在不同的CPU核和不同的內存空間中,兩個操作系統相互獨立,并分別獨立控制被分配給其的硬件。隔離帶來的好處顯而易見,如同我們現在通過隔離截斷冠狀病毒的傳播,兩個系統的隔離可以在一個系統出現異常時,比如Windows被某個應用阻塞或者藍屏,而實時Linux下的應用程序將繼續正常運行而不受Windows狀態的影響。
           Windows實時擴展的另外一個重要組成部分即圖1中的Hypervisor部分。如同N95口罩和普通外科口罩的防護效果,acontis公司自主開發的Hypervisor保證了Windows和實時Linux更好的隔離效果。Hypervisor還包括了硬件抽象層HAL以及網絡通信函數庫。Windows和實時Linux通過共享內存和Event方式進行數據交換,或者調用網絡通信函數庫提供的API構建虛擬網絡驅動,在Windows和實時Linux直接搭建虛擬網絡進行通信。
           上面介紹的Windows實時擴展使用Linux RT Preempt作為實時環境,因此這個解決方案被命名為LxWIN。LxWIN包含了已經做過實時性能優化的實時Linux系統,使用Visual Studio作為應用開發IDE,以及圖形化配置界面,如圖2所示。即使缺乏Linux經驗的用戶,也可以在較短的時間內開發標準的EtherCAT應用。

    圖2.LxWIN圖形化配置界面
           LxWIN最突出的特點來源于Linux系統本身的開發性和豐富的第三方軟件。各方面的信息和數據都清晰的表明,Linux是目前最被廣泛使用的操作系統,并在市場占有率上持續保持上升趨勢。Linux擁有健康和強大的開源社區,可提供超出想象的第三方函數庫。

    三、Windows實時擴展方案EC-WIN

           如果用戶目標產品固定且不需要第三方軟件,但需要加快EtherCAT網絡循環周期,通過快速數據更新提高精度,我們建議選擇Ontime RTOS-32系統作為實時環境。EC-WIN即是包括了RTOS-32實時系統和EtherCAT主站的完整解決方案。RTOS-32是一款精簡的實時操作系統,在I3 CPU的工控機上,我們可以相對輕松的把EtherCAT主站循環周期調高到50微秒。RTOS-32穩定性高,增加負載對系統抖動沒有特別明顯的影響。此外,EC-WIN擁有遠高于其他方案的性價比,一直是深受我們團隊喜愛且大力推薦的Windows實時擴展和包括EtherCAT主站的完整解決方案。

    圖3.EC-WIN框架

    四、總結

           北京盟通科技有限公司是德國acontis公司在中國大陸唯一的合作伙伴。我們在過去幾年EtherCAT總線的推廣中接觸了大量的用戶需求,并積累了豐富的開發和實際操作經驗。本文是利用隔離期間的空閑時間,對過去工作產生的一些看法的總結,希望能給同樣在隔離中的同仁們提供些許可用信息,或許也算對防治冠狀病毒貢獻了微薄之力。

    <s id="owwia"><td id="owwia"></td></s>
  • <li id="owwia"></li><small id="owwia"><td id="owwia"></td></small>
  • <li id="owwia"></li><small id="owwia"><li id="owwia"></li></small>
  • <small id="owwia"></small>
  • <small id="owwia"></small>
  • <td id="owwia"></td>
  • <li id="owwia"></li> <td id="owwia"><s id="owwia"></s></td>
  • <small id="owwia"><small id="owwia"></small></small>
  • <td id="owwia"></td>
  • <td id="owwia"><li id="owwia"></li></td>
  • <td id="owwia"><li id="owwia"></li></td><td id="owwia"></td><small id="owwia"><td id="owwia"></td></small><small id="owwia"></small>