隋 濤 管 良 陳浩然 梁 寧 劉秀芝
(山東科技大學(xué) 電氣與自動(dòng)化工程學(xué)院, 青島 266590)
隨著控制技術(shù)、計(jì)算機(jī)技術(shù)的發(fā)展,計(jì)算機(jī)控制技術(shù)已經(jīng)成為工業(yè)自動(dòng)化生產(chǎn)的必然要素。及時(shí)準(zhǔn)確地獲取現(xiàn)場設(shè)備的信息,完成設(shè)備間的信息交互,是實(shí)現(xiàn)計(jì)算機(jī)控制的基本條件。高效可靠的控制網(wǎng)絡(luò)與通信則是迅速有效地傳輸生產(chǎn)與管理數(shù)據(jù)的基本保證[1-2]。這就要求自動(dòng)化及相關(guān)專業(yè)的學(xué)生掌握工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信的相關(guān)知識(shí)。而各大高校現(xiàn)有的工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信或工業(yè)現(xiàn)場總線一類的課程主要承襲了早期的工業(yè)現(xiàn)場總線課程設(shè)置,理論較難且關(guān)聯(lián)性不強(qiáng),難以滿足當(dāng)前相關(guān)專業(yè)的建設(shè)需要[3]。
隨著通信技術(shù)(Communication Technology),互聯(lián)網(wǎng)技術(shù)(Internet Technology),運(yùn)營技術(shù)(Operational Technology)等技術(shù)的相互融合,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信技術(shù)發(fā)展日新月異。高校實(shí)驗(yàn)室需要緊跟技術(shù)發(fā)展前沿,培養(yǎng)適應(yīng)時(shí)代發(fā)展,具有工程應(yīng)用能力的“新工科”人才。但限于其運(yùn)營特點(diǎn),高校不可能每年都投入大量的人力、物力進(jìn)行實(shí)驗(yàn)室建設(shè),如何多快好省的建設(shè)適應(yīng)技術(shù)發(fā)展的專業(yè)技術(shù)實(shí)驗(yàn)室,是每個(gè)高校面臨的實(shí)際問題。
思科公司開發(fā)的Packet tracer仿真軟件,用戶可利用其中的設(shè)備和組件模擬工業(yè)現(xiàn)場的各種傳感器、單片機(jī)、執(zhí)行器等硬件,實(shí)現(xiàn)事物間的互聯(lián)[4]。
借此平臺(tái),設(shè)計(jì)一個(gè)組網(wǎng)實(shí)驗(yàn),意在鍛煉學(xué)生的動(dòng)手能力和實(shí)踐創(chuàng)新能力,幫助相關(guān)專業(yè)學(xué)生了解工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信的基礎(chǔ)理論,較完整地形成工業(yè)綜合互聯(lián)的基本思想,一定程度上也解決實(shí)驗(yàn)室設(shè)備局限等問題[4]。
根據(jù)通信數(shù)據(jù)功能的不同,傳統(tǒng)的工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)結(jié)構(gòu)一般具有設(shè)備層(DeviceNET),控制層(ControlNET)、信息層(EtherNET),其中設(shè)備層主要實(shí)現(xiàn)實(shí)時(shí)工業(yè)生產(chǎn)的短數(shù)據(jù)通信,信息層主要是完成數(shù)據(jù)量大的非實(shí)時(shí)通信,而控制層介于兩者之間,實(shí)現(xiàn)控制層的中型數(shù)據(jù)通信?;诖私Y(jié)構(gòu),許多公司或協(xié)會(huì)提出了多種多樣的工業(yè)網(wǎng)絡(luò)通信協(xié)議,難以統(tǒng)一[5]。
近年來,隨著以太網(wǎng)技術(shù)的發(fā)展,以太網(wǎng)技術(shù)已經(jīng)克服原有的擁堵、非實(shí)時(shí)的短板,在一定層度可以實(shí)現(xiàn)實(shí)時(shí)控制。以太網(wǎng)作為工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信的主要技術(shù)方向和手段已形成廣泛共識(shí),出現(xiàn)了多種工業(yè)以太網(wǎng)技術(shù),從而使高層管理人員可直接獲取工業(yè)現(xiàn)場的控制信息,實(shí)現(xiàn)管理層、監(jiān)控層與現(xiàn)場設(shè)備層之間工業(yè)通信的“一網(wǎng)到底”[6-7],如圖1所示。
圖1 工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信基本結(jié)構(gòu)
Packet Tracer是美國思科公司(CISCO)開發(fā)的一款網(wǎng)絡(luò)仿真軟件[8],為設(shè)計(jì)、配置、排除網(wǎng)絡(luò)故障提供網(wǎng)絡(luò)模擬環(huán)境,能夠提供路由器、交換機(jī)、服務(wù)器、控制單元等網(wǎng)絡(luò)設(shè)備,用戶可以在軟件的圖形用戶界面(GUI)上直接使用拖曳方法建立網(wǎng)絡(luò)拓?fù)?,并可提供?shù)據(jù)包在網(wǎng)絡(luò)中行進(jìn)的詳細(xì)處理過程,觀察網(wǎng)絡(luò)實(shí)時(shí)運(yùn)行情況。
Packet Tracer網(wǎng)絡(luò)仿真軟件中,除了已有的路由器、交換機(jī)等設(shè)備外,新增了許多智能硬件設(shè)備和組件。其中,智能硬件設(shè)備具有網(wǎng)絡(luò)模塊,通過網(wǎng)關(guān)或注冊(cè)服務(wù)器聯(lián)網(wǎng)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和配置,組件則通過連接到控制單元(MCU)的數(shù)字或模擬接口進(jìn)行聯(lián)網(wǎng),使用JavaScript、Python和可視化編程語言進(jìn)行操控,實(shí)現(xiàn)遠(yuǎn)程控制和管理[9]。
以物聯(lián)網(wǎng)設(shè)備為組件,模擬了一個(gè)基本的工業(yè)計(jì)算機(jī)網(wǎng)絡(luò),包含設(shè)備層、控制層、信息層的各個(gè)層次。組網(wǎng)簡圖如圖2所示,在此基礎(chǔ)上,設(shè)計(jì)了一個(gè)工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)的組網(wǎng)實(shí)驗(yàn)。
圖2 工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)組網(wǎng)簡圖
該實(shí)驗(yàn)依據(jù)圖2構(gòu)建了一個(gè)組網(wǎng)拓?fù)浣Y(jié)構(gòu),將計(jì)算機(jī)和設(shè)備連接到工業(yè)計(jì)算機(jī)網(wǎng)絡(luò),其基本結(jié)構(gòu)如圖3所示。
圖3 工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)
整個(gè)實(shí)驗(yàn)?zāi)M一個(gè)工業(yè)鍋爐液位控制系統(tǒng),電機(jī)表示抽水水泵,液位檢測由液位傳感器完成,控制器采用MCU控制器,實(shí)現(xiàn)局部控制,安全門禁系統(tǒng)可以看作工業(yè)生產(chǎn)的安全門。通過局域網(wǎng)服務(wù)器及TCP協(xié)議和控制單元進(jìn)行數(shù)據(jù)傳輸,監(jiān)控系統(tǒng)可以實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。這個(gè)系統(tǒng)實(shí)現(xiàn)了一個(gè)簡易的工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng),系統(tǒng)共分為3級(jí),上下兩層網(wǎng)絡(luò),其中上層網(wǎng)絡(luò)是以太網(wǎng),下層是物聯(lián)網(wǎng)網(wǎng)絡(luò)連線(該連線代表IO直連、工業(yè)實(shí)時(shí)以太網(wǎng)、CAN、RS485等工業(yè)現(xiàn)場連接方式)。
1) 設(shè)置TCP通信服務(wù)
實(shí)驗(yàn)中,數(shù)據(jù)通信是基于以太網(wǎng)TCP通信協(xié)議[9],包括一個(gè)服務(wù)器端(局域網(wǎng)服務(wù)器),兩個(gè)客戶端(安全門禁、控制單元),兩個(gè)客戶端通過服務(wù)器端的數(shù)據(jù)交互。其中服務(wù)器端的部分網(wǎng)絡(luò)通信程序如下所示。
port = 1234
server = TCPServer()
……
server.onNewClient(onTCPNewClient)
print(server.listen(port))
客戶端的部分網(wǎng)絡(luò)通信程序如下所示。
serverIP = “192.168.1.100”
serverPort = 1234
client = TCPClient()
def onTCPConnectionChange(type):
print(“connection to ” + client.remoteIP() + “ changed to state ” + str(type))
def onTCPReceive(data):
print(“received from ” + client.remoteIP() + “ with data: ” + data)
……
client.onConnectionChange(onTCPConnectionChange)
client.onReceive(onTCPReceive)
print(client.connect(serverIP, serverPort))
2) 設(shè)置服務(wù)器數(shù)據(jù)接收和傳送程序
在實(shí)驗(yàn)中服務(wù)器是數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)中樞,其接收門禁客戶端的開關(guān)狀態(tài),然后傳送到控制器中,從而實(shí)現(xiàn)遠(yuǎn)程控制,其由服務(wù)器接收事件響應(yīng)程序完成,由于服務(wù)器和客戶端的通信是由TCP完成,需要注意消息序列,該部分程序代碼如下。
clients_Add=client.remoteIP()
print(clients_Add)
if clients_Add == “192.168.1.6”:
client.send(“C”+Romt_Ctrl+“@”+recvdata)
print(“C”+Romt_Ctrl+“@”+recvdata)
elif clients_Add == “192.168.1.2”:
Romt_Ctrl=recvdata
client.send(recvdata)
print(recvdata)
else :
recvdata=“9999”
client.send(recvdata)
print(recvdata)
client.onConnectionChange(onTCPConnectionChange)
client.onReceive(onTCPReceive)
3) 設(shè)置MCU客戶端
利用Packet Tracer軟件中的組件,實(shí)驗(yàn)以控制單元(MCU)為核心構(gòu)建了一個(gè)工業(yè)鍋爐液位控制系統(tǒng)的局部控制網(wǎng)絡(luò),其組成如圖3所示。設(shè)備與控制單元之間通過軟件中的IoT線纜(IoT Custom cable)連接,模擬實(shí)現(xiàn)現(xiàn)場傳感器及執(zhí)行器等組成的控制網(wǎng)絡(luò)。控制單元與服務(wù)器間通信與門禁客戶端設(shè)置相同,實(shí)現(xiàn)與服務(wù)器的數(shù)據(jù)交互。利用編程實(shí)現(xiàn)設(shè)備的就地控制??刂茊卧梢孕纬梢粋€(gè)具有模擬輸入輸出的閉環(huán)系統(tǒng),也可以接收遠(yuǎn)端設(shè)備的控制信號(hào),該部分程序的代碼如下。
def readFromSensors():
global AlarmVal # declare switchValue as global
global ButtonValue # declare ButtonValue as global
global LevelValue # declare LevelValue as global
global Motor_Sta # declare Motor_Sta as global
AlarmVal = digitalRead(0) # 讀取運(yùn)行狀態(tài)
ButtonValue = digitalRead(1) # 讀取按鈕狀態(tài)
LevelValue = analogRead(A0) # 讀取液位值
#actuator or alarm writer
def writeToActuators():
if (ButtonValue == HIGH): # 讀取按鈕狀態(tài)值
digitalWrite(0, HIGH) # 狀態(tài)指示
if (LevelValue > 0): #液位狀態(tài)
analogWrite(2, LevelValue) # 驅(qū)動(dòng)電機(jī)旋轉(zhuǎn),#此處可加閉環(huán)控制
Motor_Sta=HIGH
else:
analogWrite(2, 0) #電機(jī)速度輸入為0
Motor_Sta=HIGH
digitalWrite(0, LOW) # turn off the LEDelse:
analogWrite(2, 0) # turn off the motorMotor_Sta=LOW
digitalWrite(0, LOW) # 狀態(tài)指示
analogWrite(3, LevelValue) #液位狀態(tài)顯示
4) 通信測試
實(shí)驗(yàn)系統(tǒng)建立后可以通過Packet Tracer的實(shí)時(shí)及仿真功能查看數(shù)據(jù)通信的流程,了解工業(yè)數(shù)據(jù)通信各個(gè)環(huán)節(jié)。如圖4所示。
圖4 TCP通信模擬測試界面
也可以通過設(shè)備的Progamming標(biāo)簽頁中的outputs窗口查看設(shè)備間的通信狀態(tài)。如圖5所示。
圖5 服務(wù)器端的Outputs窗口截圖
組網(wǎng)拓?fù)鋱D中的門禁、電機(jī)、液位傳感器等都可視為工業(yè)現(xiàn)場的各類設(shè)備,這些設(shè)備及、服務(wù)器、交換機(jī)則構(gòu)成一個(gè)“工業(yè)控制網(wǎng)絡(luò)”。由此可看出,實(shí)驗(yàn)包含了設(shè)備層、控制層和信息層的各個(gè)層次,形成了一個(gè)基本的工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信模擬操作實(shí)驗(yàn)架構(gòu)[10]。
利用Packet Tracer 8.0版本設(shè)計(jì)一個(gè)組網(wǎng)實(shí)驗(yàn),完成了各個(gè)部分設(shè)置,實(shí)現(xiàn)各個(gè)設(shè)備間的交互過程,大大提升實(shí)驗(yàn)教學(xué)的實(shí)用性、直觀性和趣味性。通過該實(shí)驗(yàn),可使學(xué)生了解工業(yè)綜合互聯(lián)的基本思想,激發(fā)學(xué)生的學(xué)習(xí)興趣。實(shí)驗(yàn)?zāi)M網(wǎng)絡(luò)的硬件資源,并能直接移植到硬件設(shè)計(jì)中,突破時(shí)空限制,學(xué)生隨時(shí)隨地進(jìn)行實(shí)驗(yàn),并能在不更新硬件設(shè)備的情況下,緊跟工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信技術(shù)發(fā)展,節(jié)省實(shí)驗(yàn)空間與投資。