本發明涉及靠港船舶接用岸電技術的數據處理,尤其是涉及一種用于靠港船舶接用岸電技術的數據采集與規約轉換方法。
背景技術:
靠港船舶接用岸電技術是指船舶泊靠碼頭時,停止所有的船舶柴油機電站運行,采用陸地電源對靠港船舶供電的技術。通過岸電電源對船舶供電,可降低港口區污染廢氣的排放量。岸電技術是在國家推行“綠色港口”的背景下產生的,是港口解決噪聲、降低環境污染的有效手段。船舶岸電系統能對靠港船舶提供可靠供電,以達到節能減排的目的,這是港口和船舶供電領域的一大進步。因此,靠港船舶使用岸電技術,對靠港船舶降低用電成本、提高供電效率和減少環境污染具有重大意義。但是在現有的岸電系統中具有多種岸電設備,難以同一時間對岸電系統中所有的設備進行監控和信息采集,因此,若可同時解決采集通訊設備與岸電設備及與遠端服務器之間的有效通訊,將會提高監控系統的可操作性,并有效地提高工作效率。
技術實現要素:
本發明的目的就是為了克服上述現有技術存在的缺陷而提供一種降低成本、提高監測可操作性的用于靠港船舶接用岸電技術的數據采集與規約轉換方法。
本發明的目的可以通過以下技術方案來實現:
一種用于靠港船舶接用岸電技術的數據采集與規約轉換方法,包括:
對被動岸電設備的運行數據進行主動采集,寫入到相應的全局變量;
對主動岸電設備的運行數據進行偵聽采集,寫入到相應的全局變量;
將所述主動采集和偵聽采集的所有運行數據進行規約轉換,并發送至通訊前置機。
所述被動岸電設備包括高壓柜、變壓器柜和變頻器柜。
所述主動岸電設備包括遠程終端單元。
所述主動采集具體為:
101)依次初始化系統時鐘、串口和IO口;
102)生成召測報文指令加入到任務隊列;
103)從所述任務隊列中讀取一召測報文指令,將該召測報文指令通過串口發送給被動岸電設備;
104)讀取串口緩沖區中的返回數據;
105)對所述返回數據進行處理,寫入到相應的全局變量;
106)檢測是否有退出指令,若是,則關閉串口,釋放串口占用的資源,若否,則返回步驟103),繼續采集數據。
所述召測報文指令包括遙測指令和遙信指令。
所述偵聽采集具體為:
201)初始化統時鐘和串口,清空IO緩沖區;
202)串口依次讀取字節數據,判斷字節數據的值,并根據所述字節數據的值執行相應讀取操作,獲取主動岸電設備上傳的數據報文;
203)處理所述數據報文;
204)檢測是否有退出指令,若是,則關閉串口,釋放串口占用的資源,若否,則返回步驟202),開始下一輪數據采集過程。
所述步驟203)中,處理所述數據報文具體為:
讀取數據報文字符串,將字符串轉換成字符數組,所述字符數組包括功能碼;
讀取所述功能碼并根據功能碼進行數據報文的分類;
對分類后的數據報文進行校驗碼驗證,若校驗碼正確,則記錄所讀取的數據,進行下一數據報文的處理,若不正確,則直接進行下一數據報文的處理。
所述數據報文的分類包括事件報文、遙測數據報文和遙信數據報文。
所述規約轉換具體為:
301)創建一TCP偵聽,通過該偵聽器判斷是否有通訊前置機連接;
302)在有通訊前置機連接時,讀取設定字節的TCP數據,識別所讀取的TCP數據,根據識別結果執行相應操作,所述相應操作包括激活數據傳輸、接收測試命令、向岸電設備發送單點遙控命令、向岸電設備發送雙點遙控命令以及分批發送采集的所有運行數據。
所述步驟302)包括:
321)讀取2字節的TCP數據,判斷是否有誤,若是,則執行步驟322),若否,則執行所述讀取設定字節的TCP數據的操作;
322)判斷全局變量的數據是否發生變化,若是,則將發生變化的數據上傳至通訊前置機,若否,則返回步驟321)。
與現有技術相比,本發明具有以下優點:
1)本發明可方便地實現數據采集和規約轉換,把不同廠家、不同規約的設備連接到一個通訊管理裝置,再通過以太網接口上傳到通訊前置機,降低了監控系統的硬件成本,同時也提高了監控系統的可操作性,利于監控系統今后功能擴展與應用推廣。
2)本發明有利于監控系統今后功能擴展與應用推廣。
3)數據傳輸方面,可只上傳發生變化的數據,由此可節省網絡資源,并能夠及時更新發生變化的信息量。
4)系統的硬件采用當前流行的STM32嵌入式平臺,價格只有之前外購的產品的三十分之一,開發軟件采用LabVIEW圖形化開發平臺,可根據工程需要,快速搭建系統框架,大幅提高開發效率。
5)自主研發的系統可接入標準規約的數據采集設備,也可以自主開發程序,接入非標準規約的采集設備,擴大了系統的使用范圍。
6)系統硬件體積小,功耗低,可以集成到大的數據采集系統中,不占用過多的空間和電源功耗。
附圖說明
圖1為岸電信息管理與監控系統總體框架圖;
圖2為實施例中數據采集卡硬件結構示意圖;
圖3為本發明主動采集數據的流程圖;
圖4為本發明偵聽采集數據的流程圖;
圖5為RTU通訊報文的處理流程圖;
圖6為本發明的規約轉換流程圖。
具體實施方式
下面結合附圖和具體實施例對本發明進行詳細說明。本實施例以本發明技術方案為前提進行實施,給出了詳細的實施方式和具體的操作過程,但本發明的保護范圍不限于下述的實施例。
據工程項目的功能要求,信息管理與監控總體架構可以分為四層:上層系統(港區電力監控系統)、管理與監控層、通訊與就地監控層和設備層,如圖1所示。其中,港區電力監控系統實現對整個港區用電信息的監視和控制。通訊與就地監控層主要是完成岸電系統各電氣設備的信息集成和運行控制管理,各電氣柜和數據采集設備之間通過工業數據總線連接,各設備相互配合共同完成岸電信息管理與監控的任務。管理與監控層是根據港口電力監控的業務流程對岸電設備所采集到的數據進行整合,實現遠程的信息管理、運行監視、控制、數據存儲、視頻監控與歷史數據的查詢、報表生成、打印和Web發布功能,并提供給相應數據到各個業務部門。設備層有岸電電源的主要設備,實現電網10kV/50Hz到船上用電460V/60Hz的變換。
本發明的數據采集與規約轉換方法實現于圖1所示的通訊與就地監控層,該方法主要是對高壓柜、變壓器柜、變頻器柜、RTU(遠程終端單元)柜等設備通過RS485和RS232進行實時數據采集,并與通訊前置機實現以太網通訊。該方法包括以下步驟:
對被動岸電設備的運行數據進行主動采集,寫入到相應的全局變量,所述被動岸電設備包括高壓柜、變壓器柜和變頻器柜;
對主動岸電設備的運行數據進行偵聽采集,寫入到相應的全局變量,所述主動岸電設備包括遠程終端單元;
將所述主動采集和偵聽采集的所有運行數據進行規約轉換,并發送至通訊前置機。
如圖2所示,本實施例中,對被動岸電設備的運行數據進行主動采集具體包括:
101:系統時鐘初始化,為了保證串口初始化后的波特率是正確的,需要對STM32系統時鐘進行倍頻操作,初始化系統時鐘。
102:串口初始化,串口初始化的參數比較多,除了基本的串口名(COM1~COM5)、波特率(4800~115200)、數據位(8~9bits)、校驗(無、奇偶校驗)、停止位(1.0、1.5、2.0bit)之外,還有兩個比較重要的參數:“讀取終止符”和“是否啟用終止符”。
103:IO初始化,選擇通訊所需要的IO口、設置輸入模式、開啟IO時鐘。
104:數據采集,為每一個通信端口中接入的設備設置一個唯一的地址,根據廠家提供的通訊協議,生成召測報文指令到任務隊列,召測報文指令包括遙測指令和遙信指令。
105:從遙測指令隊列讀取召測命令,進入步驟107和108。
106:從遙信指令隊列讀取召測命令,進入步驟107和108。
107:使能RS485為發送模式。
108:發送指令到串口。
109:使能RS485為讀取模式,準備讀取串口緩沖區中的數據。
110:獲取串口緩沖區的字節數。
111:根據步驟110獲取的字節數,讀取串口緩沖區中的數據報文。
112:數據處理,寫入數據到全局變量,對接收到的數據報文,先要轉換為字節數組,對數據報文校驗無錯誤后,再根據通訊協議中的設備地址、功能碼和寄存器地址,對遙測量、遙信量進行分類,寫入到相應的全局變量。
113:檢測系統是否有退出指令,若沒有,則返回步驟104,開始下一輪的數據采集過程。若有退出指令,則進入步驟114。
114:關閉串口,若收到退出指令,關閉串口,釋放串口占用的資源。
如圖3所示,本實施例中,對主動岸電設備的運行數據進行偵聽采集具體包括:
201:STM32系統時鐘初始化,為了保證串口初始化后的波特率是正確的,需要對STM32系統時鐘進行倍頻操作,初始化系統時鐘。
202:串口初始化,初始化串口名、波特率、數據位、校驗位、停止位、讀取終止符和是否啟用終止符。
203:清空IO緩沖區,與主動召測方式不同,RTU會主動上傳運行數據到所接的通訊端口,所以,在數據采集與規約轉換軟件開啟后,緩沖區就有可能已經有運行的數據,為保通訊數據的實時性,對原有的數據要先清除。
204:串口讀取1字節數據,首先讀取1個字節數據,然后到步驟205,判斷讀到的是否為協議傳輸的第一個字節EB。
205:若讀到的字符串不是EB,則繼續讀取下一個字節數據,直到找到字符串EB.
206:若讀到的第一個字節是EB,則再從串口緩沖區讀取一個字節數據。
207:判斷讀到的第二個字節字符串是否為90,若不是,返回步驟204繼續讀取下一字節,若是,則轉到步驟208。
208:從串口一次讀取10字節數據,然后截取前4個字節。
209:判斷字符串的值是否等于EB90EB90,若不是,返回步驟204繼續讀取下一字節,若是,則轉到步驟210。
210:根據步驟208中讀取的10個字節中的第7個字節值,確定下一次讀取的字節數。
211:根據步驟210中計算的報文長度,從串口緩沖區讀取剩余的數據報文。
212:遠程終端單元報文處理過程。
213:檢測系統是否有退出指令,若無退出指令,返回步驟204,開始下一輪數據采集過程,若有退出指令,則進入步驟214。
214:關閉串口,若收到退出指令,關閉串口,釋放串口占用的資源。
如圖4所示,遠程終端單元報文處理過程具體包括:
221:讀取數據報文字符串,程序對前面幾個步驟中讀到的數據字符串重新連接,組成一條完整的數據報文。
222:把步驟221中讀到的數據報文字符串轉化為字節數組,方便后續步驟中的數據處理。
223:讀取功能碼,數據數組中,第7、8字節是功能碼,功能碼表明了本組數據的數據類型,根據不同的功能碼,對數據進行分類。
224:若在步驟223中讀到的功能碼是E幀,則為事件記錄幀。
225:根據校驗碼算法對數據中的校驗位進行比較,判斷數據在傳輸過程中有無誤碼,若校驗位錯誤,則丟棄數據,返回步驟221,繼續讀取下一組數據。
226:若校驗位正確,則將收到的事件記錄寫入到事件隊列,繼續讀取下一組數據。
227:若在步驟223中讀到的功能碼是A幀、B幀、C幀,則為遙測幀,進入到遙測幀處理分支。
228:根據校驗碼算法對數據中的校驗位進行比較,判斷數據在傳輸過程中有無誤碼,若校驗位錯誤,則丟棄數據,返回步驟221,繼續讀取下一組數據。
229:若校驗位正確,則把收到的遙測幀根據數據中的遙測序號,寫入相應的遙測點全局變量,繼續讀取下一組數據。
230:若在步驟223中讀到的功能碼是遙信幀,進入到遙信幀處理分支。
231:根據校驗碼算法對數據中的校驗位進行比較,判斷數據在傳輸過程中有無誤碼,若校驗位錯誤,則丟棄數據,返回步驟221,繼續讀取下一組數據。
232:若校驗位正確,則把收到的遙信幀根據數據中的遙信序號,寫入相應的遙信點全局變量,繼續讀取下一組數據。
如圖5所示,本實施例中,規約轉換具體包括:
301:創建TCP偵聽,為TCP網絡連接創建偵聽器。
302:等待TCP偵聽,等待已接受的TCP網絡連接。
303:判斷是否有客戶端連接,若沒有,返回步驟302繼續等待TCP偵聽。
304:若有客戶端連接,則讀取2字節的TCP數據。
305:判斷接收緩沖區是否有數據,若緩沖區存在2字節的數據,轉到步驟306,若沒有,則轉到步驟320。
306:字符串數組轉換為字節數組,方便后續步驟對數據的處理。
307:判斷字節數據的第一個字節是否等于68H(H表示16進制格式,下同),若不是,轉到步驟304,若是,則根據數據單元長度,轉到步驟308和步驟313。
308:若數據單元長度為04H,則分析數組中控制域的值。
309:若控制域的值為07H,則表明這條使命是激活數據傳輸。
310:此時服務端會發送確認激活數據傳輸的報文命令給客戶端。
311:若控制域的值為43H,則表明這條使命是測試命令。
312:此時服務端會發送確認測試的報文命令給客戶端。
313:若數據單元長度為0EH,則分析數組中控制域的值。
314:若類型標識為2DH,則表明這條使命是單點遙控命令。
315:根據命令中的控制點號,發送單點遙控命令到相應岸電設備。
316:若類型標識為2EH,則表明這條使命是雙點遙控命令。
317:根據命令中的控制點號,發送雙點遙控命令到相應岸電設備。
318:若類型標識為64H,則表明這條指令是總召喚命令。
319:發送總召喚數據,服務端會把所有的遙測量和遙信量分批發送給客戶端。
320:判斷全局變量中的數據有無發生變化,若沒有變化,會返回步驟304,繼續讀取2字節的數據,若有數據發生了變化,則轉到步驟321。
321:上傳變化的遙測、遙信量。
上述數據采集與規約轉換方法可在一個硬件數據采集板中實現,數據采集板的結構如圖6所示。該數據采集板的處理器采用STM32F407,該處理器具有168MHz主頻、128KB RAM、1M Flash、14個定時器,該處理器擁有更強勁的性能、更高的代碼密度、位帶操作、可嵌套中斷、低成本、低功耗等眾多優勢,是行業領先的32位處理器,適用于具有高確定性的實時應用。該處理器本身具有1M Flash,可通過SD卡接口外接SD卡,用于存放程序和數據,Jlink下載調試USB口用于下載程序和在線調試,以太網接口用于連接管理與監控層的通訊前置機。數據采集板中具有1路485總線接口,一路RS232總線接口,一路CAN接口總線,分別用于連接不同通訊口的監控設備。數據采集板的開發軟件支持LabVIEW圖形化開發,利用開發平臺所帶的開發工具包,可為嵌入式32位精簡指令集運算和微控制器提供圖形化編程,開發平臺為用戶提供了1000多種底層的函數,可以方便、快速使用數據采集板上提供的硬件資源,實現系統的高效、快速開發。