本發(fā)明涉及PLC監(jiān)控和調(diào)試領(lǐng)域,更具體地說,涉及一種遠(yuǎn)程PLC監(jiān)控和調(diào)試系統(tǒng)及方法。
背景技術(shù):
可編程邏輯控制器(Programmable Logic Controller,PLC)是一種可編程的存儲器,用于其內(nèi)部存儲程序,執(zhí)行邏輯運算、順序控制、定時、計數(shù)與算術(shù)操作等面向用戶的指令,并通過數(shù)字或模擬式輸入/輸出控制各種類型的機械或生產(chǎn)過程。
目前工業(yè)應(yīng)用環(huán)境中一些可編程控制器11通過數(shù)據(jù)傳輸模塊(Data Transfer Unit,DTU)12的設(shè)備連接到網(wǎng)絡(luò)上,如圖1所示,用戶可以在遠(yuǎn)端的設(shè)備(即遠(yuǎn)程終端13)查看PLC運行數(shù)據(jù)或者遠(yuǎn)程調(diào)試PLC。
然而,這種通過DTU 12來遠(yuǎn)程查看數(shù)據(jù)或調(diào)試的方式存在很多問題。例如DTU 12僅提供了一個遠(yuǎn)程虛擬串口的通信模型,一些基于串口的PLC調(diào)試軟件在使用這種遠(yuǎn)程虛擬串口連接遠(yuǎn)程終端13時,采用的通信協(xié)議和本地調(diào)試時采用的協(xié)議是一樣的:通常是發(fā)送一個命令,等待響應(yīng),再發(fā)送下一個命令,等待響應(yīng)這樣一個循環(huán)過程。
上述通信流程對于本地真實串口問題不大,但是對于遠(yuǎn)程虛擬串口,由于網(wǎng)絡(luò)通信延遲的存在,部分指令會出現(xiàn)超時重發(fā);并且協(xié)議中命令和響應(yīng)本身字節(jié)數(shù)比較短,用網(wǎng)絡(luò)來傳輸這些命令和響應(yīng)時需要增加頭部信息,且這些頭部信息通常比命令和響應(yīng)本身還長,通信效率不高。上述兩個因素將導(dǎo)致單位時間內(nèi)交互的數(shù)據(jù)比較少,使用者最直接的感受就是進行遠(yuǎn)程調(diào)試時超時嚴(yán)重,體驗非常差。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題在于,針對上述DTU遠(yuǎn)程查看數(shù)據(jù)或調(diào)試時響應(yīng)時間長、通信效率不高的問題,提供一種新的遠(yuǎn)程PLC監(jiān)控和調(diào)試系統(tǒng)及方法。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案是,提供一種遠(yuǎn)程PLC監(jiān)控或調(diào)試系統(tǒng),包括連接到PLC的數(shù)據(jù)傳輸模塊且該數(shù)據(jù)傳輸模塊通過網(wǎng)絡(luò)連接到遠(yuǎn)程終端,所述遠(yuǎn)程終端包括地址分析單元、第一收發(fā)單元、數(shù)據(jù)緩存單元,所述數(shù)據(jù)傳輸模塊包括數(shù)據(jù)讀取單元和第二收發(fā)單元;其中:所述地址分析單元,用于獲得之前預(yù)定時間內(nèi)的所有遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址,所述獲取的所有PLC數(shù)據(jù)單元地址通過第一收發(fā)單元發(fā)送到數(shù)據(jù)傳輸模塊;所述數(shù)據(jù)讀取單元,用于根據(jù)第二收發(fā)單元從遠(yuǎn)程終端接收的PLC數(shù)據(jù)單元地址讀取對應(yīng)數(shù)據(jù),所述數(shù)據(jù)由第二收發(fā)單元發(fā)送到遠(yuǎn)程終端;所述數(shù)據(jù)緩存單元,用于將第一收發(fā)單元接收的來自數(shù)據(jù)傳輸模塊的數(shù)據(jù)與PLC數(shù)據(jù)單元地址對應(yīng)緩存,并在下一遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址包含于數(shù)據(jù)緩存單元中時直接使用該數(shù)據(jù)緩存單元內(nèi)的對應(yīng)數(shù)據(jù)進行響應(yīng)。
在本發(fā)明所述的遠(yuǎn)程PLC監(jiān)控或調(diào)試系統(tǒng)中,所述地址分析單元創(chuàng)建包含有所有遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址的結(jié)構(gòu)化表格,所述結(jié)構(gòu)化表格通過第一收發(fā)單元發(fā)送到數(shù)據(jù)傳輸模塊。
在本發(fā)明所述的遠(yuǎn)程PLC監(jiān)控或調(diào)試系統(tǒng)中,所述數(shù)據(jù)讀取單元周期性地根據(jù)結(jié)構(gòu)化數(shù)據(jù)表格中的PLC數(shù)據(jù)單元地址讀取對應(yīng)數(shù)據(jù),所述第二收發(fā)單元將所有數(shù)據(jù)組合成一個數(shù)據(jù)包發(fā)送到遠(yuǎn)程終端。
在本發(fā)明所述的遠(yuǎn)程PLC監(jiān)控或調(diào)試系統(tǒng)中,所述地址分析單元在下一遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址未包含在緩存中時,重新獲得預(yù)定時間內(nèi)的所有遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址,該重新獲得的PLC數(shù)據(jù)單元地址通過所述第一收發(fā)單元和第二收發(fā)單元發(fā)送到數(shù)據(jù)傳輸模塊;所述數(shù)據(jù)讀取單元根據(jù)重新獲得的PLC數(shù)據(jù)單元地址讀取對應(yīng)的數(shù)據(jù)。
在本發(fā)明所述的遠(yuǎn)程PLC監(jiān)控或調(diào)試系統(tǒng)中,所述遠(yuǎn)程指令為監(jiān)控指令或調(diào)試指令。
本發(fā)明還提供一種遠(yuǎn)程PLC監(jiān)控或調(diào)試方法,包括以下步驟:
(a)遠(yuǎn)程終端獲得之前預(yù)定時間內(nèi)的所有遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址,并將獲取的所有PLC數(shù)據(jù)單元地址發(fā)送到PLC端;
(b)PLC端的數(shù)據(jù)傳輸模塊根據(jù)來自遠(yuǎn)程終端的PLC數(shù)據(jù)單元地址讀取對應(yīng)數(shù)據(jù),并將所述數(shù)據(jù)發(fā)送到遠(yuǎn)程終端;
(c)遠(yuǎn)程終端將接收的數(shù)據(jù)與PLC數(shù)據(jù)單元地址對應(yīng)緩存,并在下一遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址包含于緩存中時直接從緩存讀取對應(yīng)的數(shù)據(jù)。
在本發(fā)明所述的遠(yuǎn)程PLC監(jiān)控或調(diào)試方法中,所述步驟(a)中包括:創(chuàng)建包含有所有遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址的結(jié)構(gòu)化表格,并將所述結(jié)構(gòu)化表格發(fā)送到PLC端。
在本發(fā)明所述的遠(yuǎn)程PLC監(jiān)控或調(diào)試方法中,所述步驟(b)包括:所述PLC端的數(shù)據(jù)傳輸模塊周期性地根據(jù)結(jié)構(gòu)化數(shù)據(jù)表格中的PLC數(shù)據(jù)單元地址讀取對應(yīng)數(shù)據(jù),并將所有數(shù)據(jù)組合成一個數(shù)據(jù)包發(fā)送到遠(yuǎn)程終端。
在本發(fā)明所述的遠(yuǎn)程PLC監(jiān)控或調(diào)試方法中,所述步驟(c)包括:在下一遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址未包含在緩存中時,返回步驟(a)。
在本發(fā)明所述的遠(yuǎn)程PLC監(jiān)控或調(diào)試方法中,所述遠(yuǎn)程指令為監(jiān)控指令或調(diào)試指令。
本發(fā)明的遠(yuǎn)程PLC監(jiān)控或調(diào)試系統(tǒng)和方法,通過分析獲得之前預(yù)定時間內(nèi)的所有遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址,并將上述PLC數(shù)據(jù)單元地址所對應(yīng)的數(shù)據(jù)緩存到遠(yuǎn)程終端,從而遠(yuǎn)程終端在下一遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址位于緩存時可直接從緩存讀取數(shù)據(jù),可大大提高遠(yuǎn)程指令的響應(yīng)時間。本發(fā)明還通過將上述所有PLC數(shù)據(jù)單元地址對應(yīng)的數(shù)據(jù)組合長一個數(shù)據(jù)包發(fā)送到遠(yuǎn)程終端,大大提高了數(shù)據(jù)發(fā)送的效率。
附圖說明
圖1是現(xiàn)有遠(yuǎn)程PLC系統(tǒng)的結(jié)構(gòu)示意圖
圖2是本發(fā)明遠(yuǎn)程PLC監(jiān)控或調(diào)試系統(tǒng)實施例的示意圖。
圖3是本發(fā)明遠(yuǎn)程PLC監(jiān)控或調(diào)試方法實施例的流程示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖2所示,是本發(fā)明一種遠(yuǎn)程PLC監(jiān)控或調(diào)試系統(tǒng)實施例的示意圖,該系統(tǒng)可應(yīng)用于使用數(shù)據(jù)傳輸模塊(DTU)實現(xiàn)遠(yuǎn)程數(shù)據(jù)傳輸?shù)腜LC系統(tǒng)中。本實施例中的遠(yuǎn)程PLC監(jiān)控或調(diào)試系統(tǒng)包括數(shù)據(jù)傳輸模塊40以及遠(yuǎn)程終端20,且數(shù)據(jù)傳輸模塊40通過串口連接到PLC 50,并通過網(wǎng)絡(luò)(通信網(wǎng)絡(luò)和/或互聯(lián)網(wǎng))連接到遠(yuǎn)程終端20,從而將從PLC 50讀取的狀態(tài)數(shù)據(jù)或調(diào)試數(shù)據(jù)傳輸?shù)竭h(yuǎn)程終端20,實現(xiàn)遠(yuǎn)程監(jiān)控或調(diào)試。
上述遠(yuǎn)程終端20可以為運行有相應(yīng)軟件的個人電腦(PC),并包括地址分析單元21、第一收發(fā)單元22、數(shù)據(jù)緩存單元23;數(shù)據(jù)傳輸模塊40采用運行有相應(yīng)軟件的DTU,并包括數(shù)據(jù)讀取單元41和第二收發(fā)單元42,其中上述第一收發(fā)單元22和第二收發(fā)單元42通過TCP/UDP/IP協(xié)議等實現(xiàn)遠(yuǎn)程終端20與數(shù)據(jù)傳輸模塊40之間的通訊。上述地址分析單元21、第一收發(fā)單元22、數(shù)據(jù)緩存單元23、數(shù)據(jù)讀取單元41和第二收發(fā)單元42可結(jié)合相應(yīng)軟件構(gòu)成。
地址分析單元21用于獲得當(dāng)前時刻之前的預(yù)定時間(該預(yù)定時間可根據(jù)需要設(shè)定,例如1分鐘或30秒等)內(nèi)的所有遠(yuǎn)程指令(例如遠(yuǎn)程監(jiān)控指令或遠(yuǎn)程調(diào)試指令等)需訪問的PLC數(shù)據(jù)單元地址,上述獲取的所有PLC數(shù)據(jù)單元地址通過第一收發(fā)單元22發(fā)送到數(shù)據(jù)傳輸模塊。該地址分析單元21可在遠(yuǎn)程終端20(即相應(yīng)軟件)運行達(dá)到預(yù)定時間時執(zhí)行PLC數(shù)據(jù)單元地址獲取操作,也可由其他指令觸發(fā)執(zhí)行PLC數(shù)據(jù)單元地址獲取操作。
特別地,該第一收發(fā)單元22可將上述獲取的所有PLC數(shù)據(jù)單元地址組合到一個數(shù)據(jù)包中發(fā)送到數(shù)據(jù)傳輸模塊40。例如可通過地址分析單元21先將上述獲取的所有PLC數(shù)據(jù)單元地址記錄到一個緩存中,并結(jié)構(gòu)化為一個表格,并由第一收發(fā)單元22將上述表格打包后發(fā)送到數(shù)據(jù)傳輸模塊40。
數(shù)據(jù)讀取單元41用于根據(jù)第二收發(fā)單元42從遠(yuǎn)程終端20接收的PLC數(shù)據(jù)單元地址通過串口從PLC 50讀取對應(yīng)數(shù)據(jù),該讀取的數(shù)據(jù)由第二收發(fā)單元42發(fā)送到遠(yuǎn)程終端20。特別地,該數(shù)據(jù)讀取單元41周期性地從PLC 50讀取上述PLC數(shù)據(jù)單元地址對應(yīng)的數(shù)據(jù),并由第二收發(fā)單元42主動將上述數(shù)據(jù)組合成為一個數(shù)據(jù)包周期性地發(fā)送到遠(yuǎn)程終端20。
數(shù)據(jù)緩存單元23用于將第一收發(fā)單元22接收的來自數(shù)據(jù)傳輸模塊40的數(shù)據(jù)包內(nèi)的PLC數(shù)據(jù)與PLC數(shù)據(jù)單元地址對應(yīng)緩存。在下一遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址包含于緩存中時,數(shù)據(jù)緩存單元23直接使用緩存的對應(yīng)數(shù)據(jù)響應(yīng)該遠(yuǎn)程指令。
本發(fā)明的遠(yuǎn)程PLC監(jiān)控或調(diào)試系統(tǒng),遠(yuǎn)程終端20在需要訪問PLC上的數(shù)據(jù)單元時,優(yōu)先從數(shù)據(jù)緩存單元23獲取對應(yīng)數(shù)據(jù)(如果數(shù)據(jù)緩存單元23中存在期望的數(shù)據(jù)則直接響應(yīng)),解決了遠(yuǎn)程監(jiān)控或調(diào)試中的超時問題。另外通過將多個PLC數(shù)據(jù)單元地址及數(shù)據(jù)組合發(fā)送,大大減少了命令和響應(yīng)的交互次數(shù),通信過程的數(shù)據(jù)包不會再出現(xiàn)包頭大、數(shù)據(jù)內(nèi)容小的情況,通信效率大大提高,用戶體驗明顯提升。
此外,如果下一指令所需訪問的PLC數(shù)據(jù)單元地址并不在緩存中,則數(shù)據(jù)緩存單元23觸發(fā)地址分析單元21重新獲取預(yù)定時間內(nèi)的遠(yuǎn)程指令所需訪問的PLC數(shù)據(jù)單元地址,并由第一收發(fā)單元22發(fā)送到數(shù)據(jù)傳輸模塊40,數(shù)據(jù)讀取模塊41根據(jù)新的PLC數(shù)據(jù)單元地址進行數(shù)據(jù)讀取。
如圖3所示,是本發(fā)明遠(yuǎn)程PLC監(jiān)控或調(diào)試方法實施例的流程示意圖,該方法具體包括以下步驟:
步驟S31:遠(yuǎn)程終端分析獲得當(dāng)前時刻之前的預(yù)定時間內(nèi)的所有遠(yuǎn)程指令(例如遠(yuǎn)程監(jiān)控指令或調(diào)試指令等)需訪問的PLC數(shù)據(jù)單元地址,并將獲取的所有PLC數(shù)據(jù)單元地址發(fā)送到PLC端。上述遠(yuǎn)程終端可以為運行有相應(yīng)軟件的個人電腦(PC),而PLC端則具有數(shù)據(jù)傳輸模塊(DTU),且該數(shù)據(jù)傳輸模塊通過串口連接到PLC,并通過網(wǎng)絡(luò)(通信網(wǎng)絡(luò)和/或互聯(lián)網(wǎng))連接到遠(yuǎn)程終端。
該步驟可在遠(yuǎn)程終端(即相應(yīng)軟件)運行達(dá)到預(yù)定時間時執(zhí)行PLC數(shù)據(jù)單元地址獲取操作。具體地,該步驟中,可將上述獲取的所有PLC數(shù)據(jù)單元地址組合到一個數(shù)據(jù)包中發(fā)送到數(shù)據(jù)傳輸模塊,例如可先將上述獲取的所有PLC數(shù)據(jù)單元地址記錄到一個緩存中,并結(jié)構(gòu)化為一個表格,然后將上述表格打包后發(fā)送到數(shù)據(jù)傳輸模塊。
步驟S32:PLC端的數(shù)據(jù)傳輸模塊根據(jù)來自遠(yuǎn)程終端的PLC數(shù)據(jù)單元地址,通過串口從PLC讀取對應(yīng)數(shù)據(jù),并將讀取的數(shù)據(jù)發(fā)送到遠(yuǎn)程終端。
特別地,該步驟周期性地執(zhí)行,即數(shù)據(jù)傳輸模塊周期性地從PLC讀取上述PLC數(shù)據(jù)單元地址對應(yīng)的數(shù)據(jù),并主動將上述數(shù)據(jù)組合成為一個數(shù)據(jù)包周期性地發(fā)送到遠(yuǎn)程終端。
步驟S33:遠(yuǎn)程終端將接收的數(shù)據(jù)包內(nèi)的數(shù)據(jù)與PLC數(shù)據(jù)單元地址對應(yīng)緩存,并在下一遠(yuǎn)程指令需訪問的PLC數(shù)據(jù)單元地址包含于緩存中時直接從緩存讀取對應(yīng)的數(shù)據(jù)。
此外,如果下一指令所需訪問的PLC數(shù)據(jù)單元地址并不在緩存中,則重新執(zhí)行步驟S31,即遠(yuǎn)程終端重新分析獲取預(yù)定時間內(nèi)的遠(yuǎn)程指令所需訪問的PLC數(shù)據(jù)單元地址,并將獲取的PLC數(shù)據(jù)單元地址發(fā)送到數(shù)據(jù)傳輸模塊,數(shù)據(jù)讀取模塊根據(jù)新的PLC數(shù)據(jù)單元地址進行數(shù)據(jù)讀取。
以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準(zhǔn)。