一、概述
本項(xiàng)目為某市煤炭運(yùn)銷系統(tǒng)與企業(yè)內(nèi)部系統(tǒng)接口技術(shù)。
為了提高效率及減少企業(yè)的成本。通過定義接口,實(shí)現(xiàn)稱重?cái)?shù)據(jù)自動從企業(yè)內(nèi)部系統(tǒng)傳遞給市煤炭運(yùn)銷系統(tǒng)。這樣能有效的提高用戶的工作效率,并保證數(shù)據(jù)的準(zhǔn)確性與一致性。
如上圖,建設(shè)“某市煤炭運(yùn)銷接口”完成后,企業(yè)內(nèi)部系統(tǒng)完成稱重時,自動將稱重?cái)?shù)據(jù)通過接口服務(wù)程序,發(fā)送到市煤炭運(yùn)銷系統(tǒng),一輛車只需要在企業(yè)內(nèi)部系統(tǒng)中進(jìn)行操作即可完成多個系統(tǒng)的數(shù)據(jù)保存。
二、對接方式
1.對接實(shí)現(xiàn)方式
市運(yùn)銷系統(tǒng)和企業(yè)內(nèi)部系統(tǒng)屬于不同制造商生產(chǎn)的系統(tǒng),兩套系統(tǒng)實(shí)現(xiàn)的技術(shù)、功能、部署的環(huán)境各不相同,要實(shí)現(xiàn)兩個系統(tǒng)的稱重業(yè)務(wù)數(shù)據(jù)交換,采用哪種通訊方式是首要解決的問題。
選擇合適的對接實(shí)現(xiàn)方式,主要考慮可行性、穩(wěn)定性、安全性、可維護(hù)性。
不同系統(tǒng)(程序)間通信的主要目的是實(shí)現(xiàn)多臺計(jì)算機(jī)中應(yīng)用程序之間的數(shù)據(jù)共享與信息交換。在不同的計(jì)算機(jī)系統(tǒng)中,它們之間要通過網(wǎng)絡(luò)之間的協(xié)議才能實(shí)現(xiàn)數(shù)據(jù)共享與信息交換;在同一臺計(jì)算機(jī)系統(tǒng)中,它們之間只需一定的通道就能實(shí)現(xiàn)數(shù)據(jù)共享與信息交換。在不同計(jì)算機(jī)系統(tǒng)和同一計(jì)算機(jī)系統(tǒng)的程序通信中,既有很多相同之處,也有各自的特點(diǎn)。程序間通信都要靠一定的通道(pipe)來實(shí)現(xiàn),其中的通道多種多樣,各俱特色。
(1)共享
在硬盤上建立一個文件,一個應(yīng)用程序往該文件里寫數(shù)據(jù)(可以不關(guān)閉文件,但必須刷新緩沖區(qū)),另一個應(yīng)用程序以共享方式打開這個文件并讀取其中的內(nèi)容,這便是最簡單的一種數(shù)據(jù)交換方式。對于網(wǎng)絡(luò)用戶而言,只要兩臺終端上安裝的都是windows系統(tǒng),則只要設(shè)置一下目錄共享,映射成網(wǎng)絡(luò)驅(qū)動器,同樣可以簡單地實(shí)現(xiàn)數(shù)據(jù)交換。但它的缺點(diǎn)也是顯而易見的:只能采取輪詢的方式獲得最新數(shù)據(jù)(效率低下),網(wǎng)絡(luò)映射的驅(qū)動器絕對不能變動或取消(可靠性差),所以這是一種“低級”的通訊方式。
(2)WM_COPYDATA
一個應(yīng)用程序向另一個應(yīng)用程序傳遞數(shù)據(jù)時通過發(fā)送消息來實(shí)現(xiàn)。Windows在很大程度上依賴于消息機(jī)制,這樣,只要調(diào)用SendMessage,以對方窗體的句柄作為第一個參數(shù),以含有指向?qū)嶋H數(shù)據(jù)的指針結(jié)構(gòu)的地址作為第二個參數(shù),就可以把整個數(shù)據(jù)塊當(dāng)作消息發(fā)向另一個應(yīng)用程序。使用WM_COPYDATA先創(chuàng)建一個文件映射的對象,將發(fā)送方的原始數(shù)據(jù)先拷貝至映射文件,然后再在接收方對該映射文件打開一個“視圖”。WM_COPYDATA的不足之處在于:必須要有一個窗體來接收消息和數(shù)據(jù)(缺乏靈活性),數(shù)據(jù)在使用之前先得拷貝到一個映射文件(浪費(fèi)資源)。并且這種方式要求要傳遞消息的程序部署在同一臺計(jì)算機(jī)上。
(3)Socket 通訊
這是最常用的通訊方式。Socket通訊是兩個計(jì)算機(jī)之間最基本的通訊方法,有TCP和UDP兩種協(xié)議。
①TCP的特點(diǎn)
TCP協(xié)議是一種有連接、可靠的、面向字節(jié)流、相對比較慢、點(diǎn)對點(diǎn)的傳輸層協(xié)議。TCP協(xié)議適用于對可靠性要求比較高的場合。
TCP的優(yōu)點(diǎn)是:可靠、穩(wěn)定。它體現(xiàn)在TCP在傳遞數(shù)據(jù)之前,會有三次握手來建立連接;在數(shù)據(jù)傳遞時,采用校驗(yàn)和、序列號、確認(rèn)應(yīng)答、超時重發(fā)、流量控制、擁塞控制,為了提高性能,還采用了滑動窗口、延遲應(yīng)答和捎帶應(yīng)答等機(jī)制;在數(shù)據(jù)傳完后,會斷開連接以節(jié)約系統(tǒng)資源。
②UDP的特點(diǎn)
UDP協(xié)議是一種無連接,不可靠、面向數(shù)據(jù)報、速度比較快、可實(shí)現(xiàn)一對一,多對一的傳輸層協(xié)議。UDP協(xié)議適用于對實(shí)時性有要求的場合。因?yàn)閁DP不保證可靠性,所以UDP也沒有重傳機(jī)制,也沒有擁塞機(jī)制,它只是盡最大努力交付數(shù)據(jù)。
UDP的優(yōu)點(diǎn):運(yùn)行速度快,因?yàn)?UDP連接沒有TCP的三次握手、確認(rèn)應(yīng)答、超時重發(fā)、流量控制、擁塞控制等機(jī)制,而且UDP是一個無狀態(tài)的傳輸協(xié)議,所以它在傳遞數(shù)據(jù)時非常快。較安全,因?yàn)闆]有TCP的那些機(jī)制,UDP較TCP被攻擊者利用的漏洞就會少一些。
圖2 TCP、UDP通訊流程圖
從上圖能清晰的看出,TCP通信需要服務(wù)器端偵聽listen、接收客戶端連接請求accept,等待客戶端connect建立連接后才能進(jìn)行數(shù)據(jù)包的收發(fā)(recv/send)工作。
UDP則服務(wù)器和客戶端的概念不明顯,服務(wù)器端即接收端需要綁定端口,等待客戶端的數(shù)據(jù)的到來。后續(xù)便可以進(jìn)行數(shù)據(jù)的收發(fā)(recvfrom/sendto)工作。
TCP是面向連接的協(xié)議。運(yùn)輸連接是用來傳送TCP報文的。TCP傳輸連接的建立和釋放是每一次面向連接的通信中必不可少的過程。因此,傳輸連接就由三個階段,即:連接建立、數(shù)據(jù)傳送和連接釋放。
在同一個局域網(wǎng)內(nèi),市運(yùn)銷系統(tǒng)和企業(yè)內(nèi)部系統(tǒng)通過建立可靠的數(shù)據(jù)連接,
在企業(yè)內(nèi)部系統(tǒng)完成稱皮重、稱毛重等業(yè)務(wù)時,將對應(yīng)的數(shù)據(jù)實(shí)時傳遞個市運(yùn)銷系統(tǒng),希望做到整個過程無需人工操作,系統(tǒng)自動完成。
雙方系統(tǒng)定義好通訊方式、傳輸?shù)臄?shù)據(jù)格式,保證數(shù)據(jù)傳輸?shù)恼_性。
綜上分析:運(yùn)銷系統(tǒng)對接采用網(wǎng)絡(luò)Socket通訊方式比較合適。
有一個服務(wù)器端程序Server,內(nèi)部系統(tǒng)和市運(yùn)銷系統(tǒng)各Client由中心服務(wù)程序負(fù)責(zé)數(shù)據(jù)通訊。如圖3所示。
圖3 數(shù)據(jù)通信
三、容錯處理
雙方系統(tǒng)在傳輸數(shù)據(jù)過程中難免出現(xiàn)異常情況,造成接口失敗。這里暫時考慮以下幾種可能的情況并提出處理意見,后續(xù)可以根據(jù)實(shí)際情況補(bǔ)充完善處理方法。
1.網(wǎng)絡(luò)連接失?。涸谡{(diào)用接口的時候,由于網(wǎng)絡(luò)不通,造成數(shù)據(jù)不能正常傳輸。這樣,系統(tǒng)提醒用戶網(wǎng)絡(luò)故障,請重試。系統(tǒng)應(yīng)能在網(wǎng)絡(luò)恢復(fù)后自動恢復(fù)連接。
2.反饋錯誤信息:市運(yùn)銷系統(tǒng)在處理數(shù)據(jù)時應(yīng)數(shù)據(jù)格式錯誤會發(fā)生異常情況。所以,市銷系統(tǒng)應(yīng)當(dāng)能夠捕捉異常信息,比如“非法參數(shù)”、“用戶認(rèn)證失敗”等,然后反饋給企業(yè)內(nèi)部系統(tǒng)。企業(yè)內(nèi)部系統(tǒng)在接受到這類的錯誤信息之后,會反映給客戶。
3.網(wǎng)絡(luò)連接正常,但是無信息反饋:這種情況下,可能是系統(tǒng)出現(xiàn)了異常,但是又沒有捕捉到的情況下發(fā)生。這種情況下,系統(tǒng)應(yīng)能夠有相應(yīng)機(jī)制避免或者盡快恢復(fù)通訊,例如:通過心跳檢測檢查通訊情況。
四、接口方法
1.企業(yè)內(nèi)部系統(tǒng):完成稱皮重,將稱重信息傳遞給市運(yùn)銷系統(tǒng);
2.企業(yè)內(nèi)部系統(tǒng):完成稱毛重,將稱重信息傳遞給市運(yùn)銷系統(tǒng);
3.其它情況:企業(yè)內(nèi)部系統(tǒng)手動將數(shù)據(jù)傳遞給市運(yùn)銷系統(tǒng),例如:糾正重量后重傳數(shù)據(jù);修改車牌號后重新傳遞數(shù)據(jù)等。傳遞數(shù)據(jù)格式如下表:
舉例說明:
1.稱皮完成時傳輸?shù)臄?shù)據(jù)格式
2.稱毛完成時傳輸?shù)臄?shù)據(jù)格式
通訊協(xié)議可以選擇TCP或UDP。
五、內(nèi)部系統(tǒng)實(shí)現(xiàn)技術(shù)方案
1.界面調(diào)整
(1)在內(nèi)部系統(tǒng)(過磅軟件)界面增加有給按鈕“發(fā)送”,用于處理因?yàn)榫W(wǎng)絡(luò)或其他異常導(dǎo)致的數(shù)據(jù)發(fā)送失敗后的二次發(fā)送,該按鈕需要判斷是否有需要發(fā)送的數(shù)據(jù),如果沒有,則不可用。
(2)內(nèi)部系統(tǒng)界面增加一個紅綠指示燈,綠色代表與市運(yùn)銷系統(tǒng)連接正常,紅色代表斷開。
(3)內(nèi)部系統(tǒng)界面增加票號輸入框,方便司磅人員輸入票號
2.業(yè)務(wù)邏輯
(1)完成皮重確認(rèn)后,內(nèi)部系統(tǒng)系統(tǒng)自動發(fā)送數(shù)據(jù)給市運(yùn)銷系統(tǒng),數(shù)據(jù)格式見上表;
(2)完成毛重確認(rèn)后,內(nèi)部系統(tǒng)系統(tǒng)自動發(fā)送數(shù)據(jù)給市運(yùn)銷系統(tǒng),數(shù)據(jù)格式見上表;
(3)增加作廢邏輯,車輛完成皮重過磅放棄提貨后,需要在內(nèi)部系統(tǒng)上刷卡,并進(jìn)行作廢處理,作廢時,需要將數(shù)據(jù)發(fā)給市運(yùn)銷系統(tǒng),確保將原來的皮重信息作廢。
(4)如果數(shù)據(jù)由變化,比如車號等錯誤,需要在內(nèi)部系統(tǒng)調(diào)出原來的皮重或者毛重信息,并重新發(fā)送數(shù)據(jù)給市運(yùn)銷系統(tǒng),如果完成毛重則發(fā)毛重信息,如果未完成毛重,則發(fā)送皮重信息。
(5)磅秤錯誤處理,如果因?yàn)榘醭拥仍?,?dǎo)致獲取的重量錯誤,司磅人員可以重新獲取重量,獲取后,重新發(fā)送皮重或者毛重信息,稱重步驟為修改。
(6)內(nèi)部系統(tǒng)系統(tǒng)以UDP格式定時向市運(yùn)銷系統(tǒng)發(fā)送字符串“HI”,市運(yùn)銷系統(tǒng)反饋?zhàn)址癥ES”,則表明通信正常,指示燈綠色,如果無應(yīng)答,則指示燈紅色。
(7)系統(tǒng)增加處理大媒種的業(yè)務(wù)邏輯。
(8)增加票號自動增加業(yè)務(wù)邏輯,即用戶輸入有給票號后,系統(tǒng)自動在下一車時,根據(jù)大媒種分類,自動將票號后面序號+1。
(9)發(fā)送成功、失敗處理邏輯。數(shù)據(jù)發(fā)送后,市運(yùn)銷系統(tǒng)反饋結(jié)果,如果成功則返回“SUCCESS“,如果失敗,則返回失敗原因,并由內(nèi)部系統(tǒng)向用戶提示。
3.數(shù)據(jù)格式及約束
內(nèi)部系統(tǒng)發(fā)送給市運(yùn)銷系統(tǒng)的數(shù)據(jù)主鍵值是提貨單號(20位以內(nèi)不重復(fù)字符串),市運(yùn)銷系統(tǒng)需依據(jù)該字段判斷是否重復(fù),或者修改、作廢時處理那條原始數(shù)據(jù)。
具體數(shù)據(jù)格式如下:
主鍵(唯一標(biāo)識)#票號#稱重步驟#車牌號#銷售類型#大煤種#小煤種#稱皮時間#稱毛時間#毛重(噸)#皮重(噸)#凈重(噸)#車型#出境方向#單價(元)#磅秤標(biāo)識#。
舉例說明:
L123456789#境外票號#g#陜K12345#境外#塊煤#三八塊#2018-12-23 01:02:03#2018-12-23 03:04:05#48.90#20.00#28.90#解放半掛#河南#200#bc02#。
說明:
(1)數(shù)據(jù)一行,中間無換行符;
(2)兩個字段間用#分割;
(3)所有數(shù)字不用單位。
六、運(yùn)行效果
正式上線運(yùn)行,市煤管數(shù)據(jù)及內(nèi)部系統(tǒng)可以共享數(shù)據(jù)。
1.門房(不再)登記入場----在空車地磅過磅錄入(內(nèi)部系統(tǒng))---自動傳輸?shù)绞忻汗芟到y(tǒng)—--裝車—-重磅打票錄入(內(nèi)部系統(tǒng))---自動傳輸?shù)绞忻汗芟到y(tǒng)
2.磅房不在給市煤管系統(tǒng)單獨(dú)錄入數(shù)據(jù),即可共享數(shù)據(jù)。
3.出廠利用個系統(tǒng)的共同體“卡”,刷卡后調(diào)出過磅系統(tǒng)的數(shù)據(jù),節(jié)省人為的過程中拿卡及刷卡的時間,提高發(fā)運(yùn)效率。
4.減少工序、工作量、及補(bǔ)錄數(shù)據(jù)的時間,加快在廠區(qū)停留流程時間和過磅的效率。增加企業(yè)運(yùn)銷的發(fā)運(yùn)量,創(chuàng)造企業(yè)利益。
七、磅房窗口監(jiān)控系統(tǒng)
設(shè)有兩個地磅房共有4個窗口,車流飽和,工作量大、在每個窗口配置一臺高清攝像機(jī),查看實(shí)時的打票,過磅及票據(jù)傳遞等情況,做到有源可查,如有錯誤等能實(shí)時查看當(dāng)時的細(xì)節(jié)過程,
八、煤管值班室車牌識別系統(tǒng)及通信設(shè)備更換
要求將完整的配置數(shù)據(jù)導(dǎo)入新的設(shè)備中。
在煤管值班室設(shè)立車牌識別系統(tǒng)在過磅的數(shù)據(jù)通過車牌實(shí)時調(diào)取至煤管系統(tǒng),通過車牌識別及刷卡協(xié)帶共享數(shù)據(jù),保證在出入值班室能與煤管數(shù)據(jù)同步,較少在值班室的停留時間,保證數(shù)據(jù)的一致性,便捷性。與地磅系統(tǒng)對接共享,由于設(shè)備運(yùn)行時間超過六年,煤礦現(xiàn)場的環(huán)境惡劣,為了保證正常的運(yùn)銷工作的暢通,現(xiàn)將采購值班室原有型號,華為設(shè)備更換,更換下來的設(shè)備作為備用設(shè)備。通信的上的所有配置數(shù)據(jù)將完整的導(dǎo)入新的設(shè)備中
九、煤管值班室道閘欄桿計(jì)數(shù)雷達(dá)控制系統(tǒng)
要求對接煤管系統(tǒng)的配置參數(shù)完全統(tǒng)一及計(jì)數(shù)功能。
煤管站值班室設(shè)立了道閘計(jì)數(shù),煤管站在所有設(shè)備暫時由煤礦單位來維護(hù)更換,道閘6秒地感的故障嚴(yán)重導(dǎo)致煤礦車輛出入的數(shù)量,煤管現(xiàn)使用的地感系統(tǒng),性能底下,故障率高,對煤礦車輛出入影響極大。利用現(xiàn)在的技術(shù)道閘3秒桿雷達(dá)系統(tǒng)更高效,故障率更低。
十、煤管矸石通道監(jiān)控系統(tǒng)
自2018年以來,煤管主管部門對煤礦所有單位的煤泥,矸石加強(qiáng)管理,檢查力度,要實(shí)時查看煤泥及矸石裝卸情況,并要求所有煤礦單位自己設(shè)立高清攝像機(jī),加入到煤管站監(jiān)控系統(tǒng)。
十一、磅房語音系統(tǒng)
地磅房內(nèi)語音系統(tǒng)運(yùn)行多年,設(shè)備陳舊,拾音效果性能差,工作人員在車輛流量大的情況下工作強(qiáng)度加大,現(xiàn)更換一套語音系統(tǒng),高拾音率,工作人員工作時更輕松。
轉(zhuǎn)化果平臺咨詢電話:400-1817-969