本技術(shù)涉及數(shù)據(jù)傳輸領(lǐng)域,特別是涉及一種通用熱電廠機(jī)房dcs設(shè)備數(shù)據(jù)傳輸方法、設(shè)備、介質(zhì)及產(chǎn)品。
背景技術(shù):
1、在工廠自動化環(huán)境中,通用熱電廠機(jī)房dcs(分散控制系統(tǒng),distributed?controlsystem)設(shè)備和機(jī)房側(cè)一般使用通信協(xié)議(例如modbus協(xié)議)來進(jìn)行通信,通信使用的串口和波特率等數(shù)據(jù)一般是固定的,同時(shí)通用熱電廠機(jī)房dcs設(shè)備進(jìn)行讀取的數(shù)據(jù)也是固定存在,這種通信形式在單個(gè)通用熱電廠機(jī)房dcs設(shè)備較為適用,但在多個(gè)通用熱電廠機(jī)房dcs設(shè)備或不同工廠工況情況下整體通信邏輯就需要完成重構(gòu)工作,可擴(kuò)展性以及復(fù)用性很差。
2、現(xiàn)有技術(shù)方案中主要是針對每一個(gè)通用熱電廠機(jī)房dcs設(shè)備進(jìn)行單獨(dú)的通信程序編寫,針對不同的工廠需要的不同的通信協(xié)議不能全覆蓋。比如modbus?tcp協(xié)議以及常見的大小端對應(yīng)都需要對現(xiàn)有通信進(jìn)行較大規(guī)模修改。
3、現(xiàn)有的通信協(xié)議在處理大數(shù)據(jù)量時(shí)存在一些局限性。其中一個(gè)主要的缺點(diǎn)是無法指定獲取數(shù)據(jù)的數(shù)量,這使得在需要處理大量數(shù)據(jù)時(shí),受到諸多限制。此外,現(xiàn)有的通信協(xié)議通常使用串行通信,帶寬和速度有限,這導(dǎo)致在大數(shù)據(jù)傳輸過程中出現(xiàn)延遲和效率低下的問題。另外,現(xiàn)有的通信協(xié)議在傳輸過程中缺乏重發(fā)機(jī)制和數(shù)據(jù)完整性保障,容易受到噪音和干擾的影響,導(dǎo)致數(shù)據(jù)丟失或損壞。
技術(shù)實(shí)現(xiàn)思路
1、為解決現(xiàn)有技術(shù)存在的上述問題,本技術(shù)提供了一種通用熱電廠機(jī)房dcs設(shè)備數(shù)據(jù)傳輸方法、設(shè)備、介質(zhì)及產(chǎn)品。
2、為實(shí)現(xiàn)上述目的,本技術(shù)提供了如下方案:
3、第一方面,本技術(shù)提供了一種通用熱電廠機(jī)房dcs設(shè)備數(shù)據(jù)傳輸方法,包括:
4、定義配置文件,在配置文件中,為通信程序定義一個(gè)配置塊,并基于yaml格式設(shè)置所述配置塊的配置內(nèi)容;所述配置內(nèi)容包括:通信參數(shù)和待獲取的數(shù)據(jù)項(xiàng)列表;所述通信參數(shù)包括串口號、波特率、ip地址、數(shù)據(jù)位、停止位、奇偶校驗(yàn)、從站地址(設(shè)備id)、超時(shí)時(shí)間、幀間隔時(shí)間、起始符、結(jié)束符、錯誤檢測、mbap頭、數(shù)據(jù)速率、功能碼、字節(jié)順序和端口號中的一種或多種;
5、定義映射表,使用mysql數(shù)據(jù)庫存儲和管理所述映射表中的各種映射關(guān)系;映射表包含的內(nèi)容有:協(xié)議內(nèi)容映射導(dǎo)入模塊、連接報(bào)錯映射、單位映射轉(zhuǎn)換和數(shù)據(jù)類型映射;協(xié)議內(nèi)容映射導(dǎo)入模塊用于定義不同通信協(xié)議之間的數(shù)據(jù)映射關(guān)系;協(xié)議內(nèi)容映射導(dǎo)入模塊包括源協(xié)議和目標(biāo)協(xié)議的標(biāo)識,以及數(shù)據(jù)點(diǎn)映射規(guī)則;所述連接報(bào)錯映射用于標(biāo)準(zhǔn)化各種連接錯誤的處理方式;在數(shù)據(jù)庫中存儲連接錯誤類型,每種錯誤都有相應(yīng)的錯誤代碼、描述文本和嚴(yán)重程度級別;單位映射轉(zhuǎn)換用于定義不同計(jì)量單位之間的轉(zhuǎn)換規(guī)則;數(shù)據(jù)庫中存儲源單位、目標(biāo)單位以及相應(yīng)的轉(zhuǎn)換公式或轉(zhuǎn)換因子;數(shù)據(jù)類型映射用于定義各種數(shù)據(jù)項(xiàng)的數(shù)據(jù)類型,用于在不同系統(tǒng)或協(xié)議之間傳輸數(shù)據(jù)時(shí)正確處理數(shù)據(jù)類型;
6、解析所述配置文件,根據(jù)所述通信參數(shù)和所述映射表與通用熱電廠機(jī)房dcs設(shè)備建立連接,基于用戶請求按照待獲取的數(shù)據(jù)項(xiàng)列表,從所述通用熱電廠機(jī)房dcs設(shè)備中讀取數(shù)據(jù)得到原始數(shù)據(jù),基于通信協(xié)議的規(guī)定對所述原始數(shù)據(jù)進(jìn)行處理,得到數(shù)據(jù)讀取結(jié)果;
7、在獲得數(shù)據(jù)讀取結(jié)果的過程中,設(shè)置重發(fā)機(jī)制和錯誤處理機(jī)制;
8、當(dāng)在設(shè)定時(shí)間內(nèi)未得到數(shù)據(jù)讀取響應(yīng)時(shí),觸發(fā)所述重發(fā)機(jī)制;
9、當(dāng)?shù)玫降乃鰯?shù)據(jù)讀取結(jié)果存在異常時(shí),觸發(fā)所述錯誤處理機(jī)制。
10、可選地,基于通信協(xié)議的規(guī)定對所述原始數(shù)據(jù)進(jìn)行處理,得到數(shù)據(jù)讀取結(jié)果,包括:
11、根據(jù)所述原始數(shù)據(jù)的數(shù)據(jù)格式,遍歷解析出所述原始數(shù)據(jù)的各層數(shù)據(jù)結(jié)構(gòu);
12、定義數(shù)據(jù)解析邏輯,并基于所述數(shù)據(jù)解析邏輯,在所述原始數(shù)據(jù)的各層數(shù)據(jù)結(jié)構(gòu)中定位到與所述用戶請求對應(yīng)的數(shù)據(jù)項(xiàng)所在位置,提取數(shù)據(jù)項(xiàng)值;
13、針對所述數(shù)據(jù)項(xiàng)值,根據(jù)所述數(shù)據(jù)項(xiàng)值的原始單位和點(diǎn)位情況,查詢規(guī)則庫得到轉(zhuǎn)換規(guī)則;所述規(guī)則庫定義得到;
14、基于所述轉(zhuǎn)換規(guī)則轉(zhuǎn)換所述數(shù)據(jù)項(xiàng)值,基于轉(zhuǎn)換后的所述數(shù)據(jù)項(xiàng)值得到所述數(shù)據(jù)讀取結(jié)果。
15、可選地,當(dāng)在設(shè)定時(shí)間內(nèi)未得到數(shù)據(jù)讀取響應(yīng)時(shí),觸發(fā)所述重發(fā)機(jī)制,包括:
16、重新發(fā)送與所述用戶請求相同的請求,并確定是否在設(shè)定時(shí)間內(nèi)得到數(shù)據(jù)讀取響應(yīng);
17、如果在設(shè)定時(shí)間內(nèi)得到數(shù)據(jù)讀取響應(yīng),則輸出所述數(shù)據(jù)讀取結(jié)果;
18、如果在設(shè)定時(shí)間內(nèi)未得到數(shù)據(jù)讀取響應(yīng),則返回重新發(fā)送與所述用戶請求相同的請求,并確定是否在設(shè)定時(shí)間內(nèi)得到數(shù)據(jù)讀取響應(yīng)的步驟,直至達(dá)到請求重發(fā)上限時(shí),返回讀取失敗信息;針對每次重發(fā)請求,設(shè)定時(shí)間進(jìn)行梯度增加。
19、可選地,當(dāng)?shù)玫降乃鰯?shù)據(jù)讀取結(jié)果存在異常時(shí),觸發(fā)所述錯誤處理機(jī)制,包括:
20、對所述數(shù)據(jù)讀取結(jié)果進(jìn)行完整性檢查,得到檢驗(yàn)結(jié)果;
21、當(dāng)所述檢驗(yàn)結(jié)果為所述數(shù)據(jù)讀取結(jié)果完整時(shí),則輸出所述數(shù)據(jù)讀取結(jié)果;
22、當(dāng)所述檢驗(yàn)結(jié)果為所述數(shù)據(jù)讀取結(jié)果不完整時(shí),確定所述數(shù)據(jù)讀取結(jié)果被破壞,觸發(fā)所述重發(fā)機(jī)制,并返回對所述數(shù)據(jù)讀取結(jié)果進(jìn)行完整性檢查,得到檢驗(yàn)結(jié)果的步驟,直至達(dá)到請求重發(fā)上限且所述檢驗(yàn)結(jié)果仍然為數(shù)據(jù)讀取結(jié)果不完整時(shí),返回讀取錯誤信息。
23、可選地,通過pyyaml庫加載和解析所述配置文件。
24、可選地,解析所述配置文件,根據(jù)所述通信參數(shù)和所述映射表與通用熱電廠機(jī)房dcs設(shè)備建立連接的過程包括:
25、根據(jù)所述通用熱電廠機(jī)房dcs設(shè)備的協(xié)議類型從所述映射表中查找到對應(yīng)的模塊路徑和類名,使用python的importlib模塊動態(tài)導(dǎo)入與所述模塊路徑對應(yīng)的模塊,獲取類的引用;
26、利用反射機(jī)制,通過類的引用創(chuàng)建該類的通信對象;
27、從所述配置文件中解析得到所述通用熱電廠機(jī)房dcs設(shè)備的通信參數(shù);
28、將所述通用熱電廠機(jī)房dcs設(shè)備的通信參數(shù)傳遞給所述通信對象,根據(jù)不同的協(xié)議類型調(diào)用對應(yīng)的初始化方法,建立與所述通用熱電廠機(jī)房dcs設(shè)備的連接。
29、可選地,基于yaml格式設(shè)置所述配置塊的配置內(nèi)容的過程,包括:
30、采用編輯工具,基于所述yaml格式設(shè)置所述配置塊的配置內(nèi)容。
31、第二方面,本技術(shù)提供了一種計(jì)算機(jī)設(shè)備,包括:存儲器、處理器以存儲在存儲器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序以實(shí)現(xiàn)上述提供的通用熱電廠機(jī)房dcs設(shè)備數(shù)據(jù)傳輸方法的步驟。
32、第三方面,本技術(shù)提供了一種計(jì)算機(jī)可讀存儲介質(zhì),其上存儲有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述提供的通用熱電廠機(jī)房dcs設(shè)備數(shù)據(jù)傳輸方法的步驟。
33、第四方面,本技術(shù)提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述提供的通用熱電廠機(jī)房dcs設(shè)備數(shù)據(jù)傳輸方法的步驟。
34、根據(jù)本技術(shù)提供的具體實(shí)施例,本技術(shù)公開了以下技術(shù)效果:
35、本技術(shù)提供了一種通用熱電廠機(jī)房dcs設(shè)備數(shù)據(jù)傳輸方法、設(shè)備、介質(zhì)及產(chǎn)品,通過定義配置文件,可以靈活獲取所需數(shù)據(jù),使得數(shù)據(jù)量的增減變得更加便捷。解析配置文件,根據(jù)通信參數(shù)和映射表與通用熱電廠機(jī)房dcs設(shè)備(簡稱設(shè)備)建立連接,使得設(shè)備之間的通信更加便利。同時(shí),即使在后期更換設(shè)備時(shí),也無需對設(shè)備的通信程序進(jìn)行大幅調(diào)整。并且,解析配置文件,根據(jù)通信參數(shù)和映射表與通用熱電廠機(jī)房dcs設(shè)備(簡稱設(shè)備)建立連接,能夠解決大數(shù)據(jù)傳輸過程中出現(xiàn)的延遲和效率低下問題。通過設(shè)置錯誤處理機(jī)制和重發(fā)機(jī)制,能夠避免出現(xiàn)因受噪音和干擾的影響而導(dǎo)致數(shù)據(jù)丟失或損壞的問題。