在工業(yè)現(xiàn)場調(diào)試中,IP 地址沖突是比較常見的問題,如何及時(shí)地發(fā)現(xiàn) IP 地址存在沖突并快速地定位沖突設(shè)備的位置非常重要。通常,我們可以通過專業(yè)的軟件掃描出沖突的設(shè)備,例如:PRONETA、TIA 博途等。
檢測 IP 沖突信息
2.1.1 TIA 博途
如下圖的例子,S7-1500 控制器連接了設(shè)備名稱為 “io device_2” 的ET200SP,SCALANCE XC208 交換機(jī)也作為 PN 設(shè)備連接在了主 CPU。設(shè)備都直接連在交換機(jī),形成星型的網(wǎng)絡(luò)。
設(shè)備的參數(shù)信息如下圖:
雖然 PROFINET 通信是基于 MAC 地址收發(fā)數(shù)據(jù),但是在通信的連接建立過程中會(huì)使用 IP 建立通信關(guān)系,因此如果 PN 設(shè)備存在 IP 沖突,不會(huì)導(dǎo)致 PN 通信的中斷,但是如果通信斷了,重新連接就會(huì)受到影響。
如下圖,如果 PN 設(shè)備的 IP 地址存在沖突,TIA 博途在線檢查 CPU 的診斷緩沖區(qū),我們可以知道 ”io device_2” 的 IP 地址存在沖突,但是不能知道沖突設(shè)備的信息和位置。
2.1.2 ARP 地址表
以太網(wǎng)數(shù)據(jù)在交換機(jī)上的轉(zhuǎn)發(fā)是依靠 MAC 地址尋址的,因此在進(jìn)行 IP 通信之前,設(shè)備都會(huì)通過 ARP 協(xié)議去探測設(shè)備的 MAC 地址,形成 IP 地址和 MAC 地址的對應(yīng)表,這就是我們常說的 ARP 地址表。如果 IP 地址存在沖突,就會(huì)導(dǎo)致 ARP 地址表不斷在不同的 MAC 地址間反復(fù)切換,導(dǎo)致通信的失敗。PC 側(cè)可以通過指令查詢 ARP 地址表,如下圖。
SIMATIC PLC 作為一個(gè)標(biāo)準(zhǔn)的以太網(wǎng)設(shè)備,同樣存在 ARP 地址表,通過查看 CPU 的 ARP 表內(nèi)容,我們就可以知道沖突的 IP 地址設(shè)備當(dāng)前的 MAC 地址是什么,這樣,此時(shí)沖突的設(shè)備的 MAC 地址就無處遁形了。
因此,如果在 PLC 程序中能夠獲得 PLC 的 ARP 地址表信息,沖突設(shè)備的 MAC 地址就知道了。借助 SNMP 的程序塊,CPU 可以獲得所有這些信息,只需要知道查詢 ARP 地址表的 OID 即可。
注意,CPU 本體的以太網(wǎng)接口不能通過 SNMP 獲得自己的信息,因此本例中,為 CPU 增加了一塊 CP 卡,連接在同一網(wǎng)絡(luò)中,通過 CP 卡 SNMP 收集 CPU 的信息。
2.1.3 SIMATIC PLC SNMP 查詢ARP 地址表信息
設(shè)備的 ARP 地址表可以通用的 MIB-2 規(guī)范定義的 OID 中查詢到,查詢 CPU ARP 表中 IP 地址對應(yīng) MAC 地址的 OID 為:1.3.6.1.2.1.4.22.1.2.1.IP。
本例中 “io device_2” 的地址為192.168.0.1,因此在 CPU 中查詢 ARP 的OID:1.3.6.1.2.1.4.22.1.2.1.192.168.0.1。
如下圖,程序上分別調(diào)用“LSNMP_GET“指令,來查詢 CPU 的 ARP地址表中192.168.0.1對應(yīng)的 MAC 地址,返回的 MAC 地址會(huì)存儲(chǔ)在”varBinding“ 定義好的 DB 中。注意,本例中在“connParam” 參數(shù)中定義的設(shè)備硬件標(biāo)識(shí)符,應(yīng)該是 CP 卡的標(biāo)識(shí)符。
指令執(zhí)行后,在”varBinding“ 定義好的 DB 中監(jiān)控,可以看到 CPU 的 ARP 表中,192.168.0.1對應(yīng)的 MAC 地址是 00.1B.1B.21.09.CD,對應(yīng)上面的設(shè)備參數(shù)信息,我們可以知道當(dāng)前的設(shè)備 MAC 地址就是 io device_2的 MAC 地址。
這時(shí)候,如果接入存在 IP 沖突的設(shè)備,再次查詢 CPU 的 ARP 表中,192.168.0.1對應(yīng)的 MAC 地址變成了是20.87.56.7F.34.8D,通過比較 MAC,可以知道 IP 地址存在沖突,沖突設(shè)備的 MAC 地址也就知道了。(注意,最好暫時(shí)移除 io device_2 去探測,如果兩個(gè)設(shè)備同時(shí)存在,讀到的數(shù)據(jù)有可能會(huì)反復(fù)切換,影響程序處理)。
在實(shí)際工程中,我們也對程序塊做了重新的封裝,方便最終的應(yīng)用,如下圖,簡單地輸入 CPU 的 IP 地址和需要查詢的設(shè)備的 IP 地址,這個(gè) IP 地址在 CPU ARP 表中的 MAC 地址就可以一目了然看到了。
2.1.4 SIMATIC PLC SNMP 定位 IP 沖突設(shè)備的位置
知道了沖突 IP 地址的 MAC 地址,下一步,我們需要根據(jù) MAC 地址快速地定位它的位置,這就可以用到我們在《巧用SIMATIC PLC SNMP 庫-判斷網(wǎng)絡(luò)拓?fù)?span style=";padding: 0px;outline: 0px;max-width: 100%;letter-spacing: 1px;box-sizing: border-box !important;overflow-wrap: break-word !important">》內(nèi)容中介紹的通過 SNMP 查詢交換機(jī)的 MAC 地址表的功能。
如下圖,我們直接使用重新封裝的指令塊為大家展示一下效果,首先通過指令讀取 CPU ARP 表中192.168.0.1的對應(yīng)的 MAC 地址,然后通過讀取交換機(jī)的 MAC 地址表來獲得設(shè)備連接在哪個(gè)端口。
正常情況下,指令執(zhí)行后,就可以查詢交換機(jī) MAC 地址表,設(shè)備連接在交換機(jī)的哪個(gè)端口就知道了,下圖中,讀取到的192.168.0.1的 MAC 地址是00.1B.1B.21.09.CD,對照參數(shù)表知道,這個(gè) MAC 地址就是 io device_2的 MAC 地址,連接在交換機(jī)的 P7 口。
當(dāng)網(wǎng)絡(luò)存在 IP 沖突時(shí),我們移除 io device_2,再次指令執(zhí)行后,讀取到的192.168.0.1的 MAC 地址變成了20.87.56.7F.34.8D,連接在交換機(jī)的 P4 口。
這樣,通過兩個(gè) SNMP 指令的配合使用,我們知道了沖突 IP 的設(shè)備的信息,并且能夠快速地找到這個(gè)設(shè)備。
結(jié)語
SNMP 協(xié)議可以查詢、更改網(wǎng)絡(luò)設(shè)備的狀態(tài),不同的 MIB 庫也為實(shí)際應(yīng)用定義了很多有用的信息。作為最終用戶,我們只要知道 OID,就可以獲得這些信息,為網(wǎng)絡(luò)的維護(hù)、診斷提供了有力的幫助。
SIMATIC PLC SNMP 庫,隨著版本的不斷升級(jí),性能上也有不斷的提高,通過指令塊的靈活使用,SIMATIC PLC 的網(wǎng)絡(luò)通信功能如虎添翼,為自動(dòng)化工程師提供了更多的網(wǎng)絡(luò)診斷手段,我們后續(xù)也會(huì)繼續(xù)開發(fā)相關(guān)的應(yīng)用,擴(kuò)展思路,期望能夠成為大家工程中的有效工具
相關(guān)產(chǎn)品
免責(zé)聲明
- 凡本網(wǎng)注明“來源:化工儀器網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-化工儀器網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:化工儀器網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其他來源(非化工儀器網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。