Ethernet/IP是一種工業(yè)自動(dòng)化領(lǐng)域中常用的網(wǎng)絡(luò)通信協(xié)議,它是基于標(biāo)準(zhǔn)以太網(wǎng)技術(shù)的應(yīng)用層協(xié)議。作為工業(yè)領(lǐng)域的通信協(xié)議之一,Ethernet/IP 提供了一種在工業(yè)自動(dòng)化設(shè)備之間實(shí)現(xiàn)通信和數(shù)據(jù)交換的標(biāo)準(zhǔn)化方法。python要實(shí)現(xiàn)Ethernet/IP的客戶端,可以采用pycomm3模塊,但不一定是pycomm3,其中原委咋們慢慢聊,本文為第一篇。
一、關(guān)于Ethernet/IP
1、Ethernet/IP的特點(diǎn)
實(shí)時(shí)性和可靠性: Ethernet/IP 被設(shè)計(jì)用于滿足工業(yè)控制系統(tǒng)中對(duì)實(shí)時(shí)性和可靠性的高要求。這對(duì)于需要在嚴(yán)格時(shí)間限制內(nèi)傳輸數(shù)據(jù)的應(yīng)用非常重要,例如,在自動(dòng)化制造過(guò)程中。
基于 TCP/IP: Ethernet/IP 是基于 TCP/IP 協(xié)議棧的,這使得它可以與通用的互聯(lián)網(wǎng)技術(shù)和網(wǎng)絡(luò)設(shè)備兼容。這也使得它相對(duì)于其他專有的工業(yè)網(wǎng)絡(luò)更易于集成。
多層次和多協(xié)議: Ethernet/IP 屬于 CIP(Common Industrial Protocol)協(xié)議族的一部分。CIP 是一種多層次、多協(xié)議的體系結(jié)構(gòu),它支持以太網(wǎng)、控制網(wǎng)(ControlNet)、設(shè)備網(wǎng)(DeviceNet)等多種網(wǎng)絡(luò)。Ethernet/IP是CIP的一個(gè)擴(kuò)展,其中一種擴(kuò)展方式為引入EDS文件,詳見(jiàn)CIP相關(guān)文檔的擴(kuò)展方式。
開(kāi)放標(biāo)準(zhǔn): Ethernet/IP 是一個(gè)開(kāi)放的標(biāo)準(zhǔn),其規(guī)范是由 ODVA(Open DeviceNet Vendors Association)維護(hù)的。這種開(kāi)放性意味著各種廠商的設(shè)備可以使用 Ethernet/IP 進(jìn)行通信,促進(jìn)了設(shè)備的互操作性。
應(yīng)用領(lǐng)域: Ethernet/IP 廣泛應(yīng)用于工業(yè)自動(dòng)化中,包括了生產(chǎn)線控制、傳感器和執(zhí)行器之間的通信、工業(yè)機(jī)器人控制等。
2、CIP相關(guān)文檔
https://download.csdn.net/download/weixin_54178481/87825320?utm_medium=distribute.pc_relevant_download.none-task-download-2~default~OPENSEARCH~Rate-1-87825320-download-88243395.257%5Ev14%5Epc_dl_relevant_base&depth_1-utm_source=distribute.pc_relevant_download.none-task-download-2~default~OPENSEARCH~Rate-1-87825320-download-88243395.257%5Ev14%5Epc_dl_relevant_base&spm=1003.2020.3001.6616.1
3、EDS文件解釋
https://zhidao.baidu.com/question/756737794820675884.html
4、假如Ethernet/IP的服務(wù)端會(huì)提供一個(gè)EDS文件,pycomm3該怎么用?
假設(shè)我有一個(gè)Ethernet/IP的服務(wù)端,那么PLC如何與其建立通信呢?
PLC編程軟件將該服務(wù)端的EDS文件寫入到PLC中,而因?yàn)镋DS文件定義了該設(shè)備的寄存器等信息,所以PLC可以通過(guò)Ethernet/IP協(xié)議與服務(wù)端進(jìn)行通信。
而pycomm3模塊是通過(guò)CIP進(jìn)行通信的,沒(méi)有EDS文件的加載接口,因此需要直接通過(guò)CIP通信,應(yīng)該是可行的。
二、Ethernet/IP通信與實(shí)驗(yàn)
1、抓包過(guò)程
以下過(guò)程是我以非專業(yè)的術(shù)語(yǔ)描述,詳細(xì)過(guò)程可查閱官方文檔。
2、實(shí)驗(yàn)與理論
本文將以實(shí)驗(yàn)的方式來(lái)探究CIP協(xié)議的理論文檔,這樣就可以了解理論知識(shí)的同時(shí),學(xué)會(huì)如何調(diào)試協(xié)議。
比如現(xiàn)在,我們已經(jīng)有了正常的通信包(PLC與服務(wù)端),那么我們將使用pycomm3來(lái)替換PLC,對(duì)比二者的通信包,進(jìn)行調(diào)試。
三、pycomm3
1、一定是pycomm3么?
不一定,如果使用pycomm3實(shí)現(xiàn)不了通信,我們將采用其他模塊,比如cpppo,甚至自己組裝協(xié)議包來(lái)實(shí)現(xiàn)通信,這都是有可能的。
2、pycomm3官方文檔
Getting Started - pycomm3 1.2.14 documentation
3、關(guān)于實(shí)現(xiàn)CIP的三個(gè)類
在 pycomm3
中,CIPDriver
、LogixDriver
、SLCDriver
是三個(gè)關(guān)鍵的驅(qū)動(dòng)類,用于實(shí)現(xiàn)與設(shè)備進(jìn)行通信的功能。以下是它們的簡(jiǎn)要解釋:
(1)CIPDriver:
解釋: CIPDriver
是一個(gè)基礎(chǔ)的 CIP(Common Industrial Protocol)驅(qū)動(dòng)器類。它實(shí)現(xiàn)了一些常見(jiàn)的 CIP 服務(wù),如會(huì)話注冊(cè)、前向打開(kāi)/關(guān)閉、通用消息傳遞等。這個(gè)類提供了一些基本的功能,可以在更高層次的協(xié)議中使用,如 Logix。
用途: 一般用于構(gòu)建更高級(jí)別的驅(qū)動(dòng)器,如 LogixDriver
。
(2)LogixDriver:
解釋: LogixDriver
是 CIPDriver
的一個(gè)衍生類,專門用于與 Logix 系列的工業(yè)控制器進(jìn)行通信。它實(shí)現(xiàn)了與 Logix 控制器通信的協(xié)議和服務(wù),提供了對(duì) Logix 控制器的更高級(jí)別的訪問(wèn)。
用途: 用于與 Allen-Bradley Logix 系列控制器進(jìn)行通信,支持對(duì)控制器進(jìn)行讀寫、訂閱通知等操作。
(3)SLCDriver:
解釋: SLCDriver
是 CIPDriver
的另一個(gè)衍生類,專門用于與 Allen-Bradley SLC 系列的工業(yè)控制器進(jìn)行通信。它實(shí)現(xiàn)了適用于 SLC 控制器的通信協(xié)議和服務(wù)。
用途: 主要用于與 Allen-Bradley SLC 系列控制器進(jìn)行通信,支持讀寫 SLC 控制器的數(shù)據(jù)。
這些驅(qū)動(dòng)器類提供了一種在 Python 中與工業(yè)自動(dòng)化設(shè)備進(jìn)行通信的方式,允許開(kāi)發(fā)人員構(gòu)建與特定工業(yè)控制設(shè)備交互的應(yīng)用程序。