• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      淺論倉儲(chǔ)控制系統(tǒng)軟件中Socket通信

      2020-04-20 11:36:10劉冠伯
      卷宗 2020年5期
      關(guān)鍵詞:通信

      劉冠伯

      摘 要:現(xiàn)階段物流產(chǎn)業(yè)高速發(fā)展,自動(dòng)化智能倉儲(chǔ)庫日益增多,這也導(dǎo)致倉儲(chǔ)控制系統(tǒng)軟件的角色變得尤為重要,而軟件能否穩(wěn)定運(yùn)行對(duì)倉庫整體的運(yùn)行效率是有很大影響的。軟件的通信效果是軟件能否穩(wěn)定運(yùn)行的一大條件,本文就通信中倉儲(chǔ)控制軟件與下位機(jī)的Socket通信進(jìn)行簡單論述。

      關(guān)鍵詞:通信;Socket;控制系統(tǒng)軟件

      在倉儲(chǔ)日益發(fā)展的今天,倉儲(chǔ)控制系統(tǒng)軟件必不可少。該系統(tǒng)軟件應(yīng)用在智能化倉庫管理,對(duì)各種物流設(shè)備如輸送機(jī)、堆垛機(jī)、穿梭車、自動(dòng)化手臂等物流設(shè)備之間的運(yùn)行進(jìn)行協(xié)調(diào),可制作為B/S架構(gòu)也可以制作為C/S架構(gòu),主要職責(zé)是對(duì)上層系統(tǒng)的指令進(jìn)行分析,并通過接口對(duì)各種設(shè)備進(jìn)行調(diào)度、監(jiān)控。

      1 現(xiàn)有常見通信方式

      倉儲(chǔ)控制系統(tǒng)軟件中,存在多種通信方式。其中最常見的是OPC(OLE for Process Control)協(xié)議通信和Socket協(xié)議通信。OPC協(xié)議是一種對(duì)工業(yè)控制設(shè)備和工業(yè)控制軟件間通信所制定的一套標(biāo)準(zhǔn)協(xié)議,使得二者間建立起一種統(tǒng)一的數(shù)據(jù)傳輸規(guī)范。軟件可以通過Socket(通常稱為套接字)協(xié)議進(jìn)行數(shù)據(jù)傳輸??刂葡到y(tǒng)軟件在操作堆垛機(jī)等大型設(shè)備時(shí),受設(shè)備運(yùn)行速度等因素影響一般采用OPC協(xié)議通信,而穿梭車、載車提升機(jī)、物料提升機(jī)等設(shè)備,因其效率要求等因素一般采用Socket通信協(xié)議。這也從側(cè)面體現(xiàn)出Socket通信的一大特點(diǎn)——快。

      2 Socket通信機(jī)制及問題

      Socket在本質(zhì)上可以理解為,傳輸?shù)氖且环N特殊的文件,通過一些Socket函數(shù)對(duì)其進(jìn)行的操作。Socket通信中,需要知道對(duì)方唯一確定的一個(gè)IP地址和一個(gè)端口號(hào),才能開始建立通信。通信建立后,就可以通過雙方軟件,互相傳遞消息了。使用前,需要將兩端設(shè)備分別設(shè)置為服務(wù)器端(ClientSocket)和客戶端(ServerSocket)。服務(wù)器端設(shè)置好監(jiān)聽程序后,客戶端請(qǐng)求連接至服務(wù)器指定端口,服務(wù)器端收到客戶端連接請(qǐng)求后與客戶端建立Socket連接。通信結(jié)束后,服務(wù)器端和客戶端各自斷開自己的連接。為了應(yīng)對(duì)實(shí)際應(yīng)用中的不同使用環(huán)境,Socket協(xié)議又細(xì)分為:原始套接字(SOCK-RAW)、數(shù)據(jù)報(bào)套接字(SOCK-DGRAM)、流式套接字(SOCK-STREAM)。倉儲(chǔ)工程項(xiàng)目中,主要使用的是“數(shù)據(jù)報(bào)套接字”,這種Socket是一種不可靠的雙向數(shù)據(jù)傳輸服務(wù)。數(shù)據(jù)報(bào)套接字的機(jī)制是在發(fā)送端將數(shù)據(jù)打包后進(jìn)行發(fā)送的,但接收端接收時(shí),不一定是按照發(fā)送端發(fā)送的順序進(jìn)行接收的,并且數(shù)據(jù)包不一定能完整的發(fā)送至接收端。

      倉儲(chǔ)的工程項(xiàng)目中,網(wǎng)絡(luò)環(huán)境十分復(fù)雜,一個(gè)智能化倉庫內(nèi)可能存在大量的網(wǎng)絡(luò)設(shè)備,特別是訂單繁多任務(wù)量龐大時(shí),在網(wǎng)絡(luò)中會(huì)同時(shí)出現(xiàn)大量的數(shù)據(jù)包,這會(huì)對(duì)每一個(gè)數(shù)據(jù)包的發(fā)送成功的概率造成很大影響。如果在倉庫施工建設(shè)過程中未進(jìn)行良好的設(shè)計(jì),例如:網(wǎng)線的水晶頭使用了非屏蔽水晶頭,網(wǎng)線鋪設(shè)過程中多根線、多種線混在一起,這樣會(huì)更加降低數(shù)據(jù)包的發(fā)送成功率。

      這些因素會(huì)導(dǎo)致數(shù)據(jù)傳輸過程中,出現(xiàn)粘包、斷包、丟包的現(xiàn)象。粘包現(xiàn)象的出現(xiàn),正是在發(fā)送端短時(shí)間內(nèi)發(fā)送了大量數(shù)據(jù)包,同時(shí)接收端無法及時(shí)一一將每個(gè)包分析或妥善存儲(chǔ)造成的。而斷包現(xiàn)象,是由于軟件在接收數(shù)據(jù)時(shí),所開的緩沖區(qū)不夠大,以至于一個(gè)包還沒完全接收完,緩沖區(qū)就已經(jīng)滿了。丟包現(xiàn)象則在硬件環(huán)境、網(wǎng)絡(luò)環(huán)境惡劣的情況下出現(xiàn)概率較多,這種惡劣環(huán)境會(huì)造成信號(hào)弱,或者硬件發(fā)送、接收錯(cuò)誤,從而導(dǎo)致丟包。這些問題的存在,會(huì)對(duì)倉儲(chǔ)工業(yè)中控制系統(tǒng)軟件產(chǎn)生重要影響,尤其是要求快速、穩(wěn)定、高效的密集庫項(xiàng)目中,如果無法處理好控制系統(tǒng)軟件的通信問題,對(duì)控制系統(tǒng)軟件乃至智能庫運(yùn)行效率將是很大的打擊。為了解決以上問題,倉儲(chǔ)控制系統(tǒng)軟件設(shè)計(jì)中,可以選擇性的采取但不限于如下幾個(gè)方法。

      3 Socket通信中問題的解決

      3.1 建立序號(hào)

      設(shè)計(jì)數(shù)據(jù)包的內(nèi)容時(shí),在傳輸?shù)臄?shù)據(jù)包之前增加序號(hào),實(shí)現(xiàn)接收端處理報(bào)文的時(shí)候,良好的區(qū)分不同的數(shù)據(jù)包的效果。密集庫中,控制系統(tǒng)軟件可能需要短時(shí)間內(nèi)多次大量的發(fā)送數(shù)據(jù)。為了應(yīng)付這種情況,建立一個(gè)盡可能大的序號(hào)循環(huán)周期,將相同序號(hào)不同報(bào)文的概率降到最低。在與穿梭車等設(shè)備進(jìn)行數(shù)據(jù)交互時(shí),可能會(huì)遇到不同屬性(如:穿梭車狀態(tài),執(zhí)行任務(wù)狀態(tài)等)的消息采取不同的報(bào)文的情況。這時(shí),對(duì)不同屬性的數(shù)據(jù)包可以采用不同范圍的序號(hào)進(jìn)行屬性定義,接收時(shí)通過不同的序號(hào)將不同屬性的報(bào)文進(jìn)行快速區(qū)分,減少軟件的處理時(shí)間,提高處理速度,進(jìn)而提高整體系統(tǒng)的運(yùn)行效率。

      3.2 建立包頭包尾

      控制系統(tǒng)軟件和下位機(jī)約定數(shù)據(jù)包的時(shí)候,在數(shù)據(jù)包的頭尾約定好標(biāo)識(shí)符,可以采用將有用的數(shù)據(jù)包通過兩個(gè)相對(duì)應(yīng)的尖括號(hào)或其他特殊符號(hào)括起的方法。在分析的時(shí)候,就可以從兩個(gè)尖括號(hào)或約定好的特殊符號(hào)之中進(jìn)行有用數(shù)據(jù)采集、分析。并且發(fā)送端發(fā)送時(shí)可以在包頭區(qū)域內(nèi),放入對(duì)包長度或者大小的描述。接收端接收時(shí)依據(jù)該描述對(duì)接收到的數(shù)據(jù)包長度進(jìn)行校驗(yàn),以確保分析處理的數(shù)據(jù)是接收端需要分析的數(shù)據(jù)。在遇到Socket斷包的現(xiàn)象時(shí),若建立包頭包尾和描述信息,控制系統(tǒng)軟件就可以通過分析建立好的包頭包尾,將本次接收到的信息與下次接收到的信息進(jìn)行合并處理,并進(jìn)行分析。這種方法更加提高了系統(tǒng)對(duì)數(shù)據(jù)包的處理和分析能力,使得系統(tǒng)在網(wǎng)絡(luò)接收方面更加穩(wěn)定。

      3.3 增加應(yīng)答機(jī)制、定時(shí)重發(fā)機(jī)制

      倉儲(chǔ)工業(yè)中,常用的通信協(xié)議還有OPC通信協(xié)議。這種通信,在將數(shù)據(jù)包發(fā)送給下位機(jī)并成功接收后,下位機(jī)會(huì)將約定好的標(biāo)志位清0。控制軟件系統(tǒng)才會(huì)進(jìn)行下一步處理。Socket通信中,也可以采取類似的方法進(jìn)行處理??刂栖浖到y(tǒng)發(fā)送的數(shù)據(jù)成功送達(dá)下位機(jī)后,下位機(jī)回復(fù)一個(gè)帶有本條接收到消息特征值的ACK應(yīng)答信號(hào)。這個(gè)ACK信號(hào)可以設(shè)置為“ACK”加接收到的數(shù)據(jù)包的序號(hào),也可以是完整的返回接收到的數(shù)據(jù)包,亦或者設(shè)置為帶有唯一確認(rèn)發(fā)送信息的數(shù)據(jù)包。對(duì)于設(shè)備動(dòng)作指令消息等一些邏輯處理中的關(guān)鍵性信息,可以在應(yīng)答機(jī)制外增加一個(gè)定時(shí)重發(fā)機(jī)制,即在發(fā)送完數(shù)據(jù)包后將時(shí)間記錄,如果到達(dá)超時(shí)時(shí)間,則將本條數(shù)據(jù)包進(jìn)行重發(fā),直到到達(dá)預(yù)設(shè)好的重發(fā)閾值后,提示軟件使用者關(guān)注網(wǎng)絡(luò)健康狀況。而設(shè)備狀態(tài)、光電開關(guān)等信息,可以直接設(shè)置為定時(shí)發(fā)送,使得這些數(shù)據(jù)信息一直向上位機(jī)發(fā)送。

      3.4 固定長度包建立循環(huán)接收處理機(jī)制

      控制下位機(jī)的時(shí)候,若遇到穿梭車等設(shè)備,可能會(huì)對(duì)一個(gè)下位機(jī)的數(shù)據(jù)進(jìn)行拆分,不同的數(shù)據(jù)包描述不同的信息內(nèi)容,也就導(dǎo)致控制系統(tǒng)軟件發(fā)送、接收多種數(shù)據(jù)包。針對(duì)這種情況,可以將數(shù)據(jù)包設(shè)計(jì)為等長度的。將長度最大的數(shù)據(jù)包的報(bào)文長度設(shè)置為標(biāo)準(zhǔn)值,其他不到該長度的數(shù)據(jù)包在數(shù)據(jù)末尾進(jìn)行補(bǔ)0操作,直到報(bào)文長度達(dá)到這個(gè)標(biāo)準(zhǔn)值。這樣處理后,控制系統(tǒng)軟件和下位機(jī)之間通信的數(shù)據(jù)包的大小就是一致的。在處理數(shù)據(jù)包的時(shí)候,如果遇到粘包現(xiàn)象,且遇到整體數(shù)據(jù)包的字節(jié)數(shù)是約定好的字節(jié)數(shù)的整數(shù)倍,就可以將數(shù)據(jù)包按照約定好的長度進(jìn)行分解,拆解后的每個(gè)數(shù)據(jù)包進(jìn)行單獨(dú)處理,以保障處理后得到的每個(gè)數(shù)據(jù)包都是正確的。

      3.5 設(shè)置較大的接收緩沖區(qū)并及時(shí)接收

      設(shè)計(jì)Socket參數(shù)時(shí),將Socket提供的接收緩沖區(qū)適當(dāng)增大,但不要增大過度,增加的過大也會(huì)給服務(wù)器的內(nèi)存造成壓力,且意義不大。設(shè)置好接收緩沖區(qū)后,控制系統(tǒng)還應(yīng)及時(shí)對(duì)緩沖區(qū)的內(nèi)容進(jìn)行處理分析。如果接收到的信息處理時(shí)間較長,可以將數(shù)據(jù)包的內(nèi)容進(jìn)行轉(zhuǎn)儲(chǔ),即儲(chǔ)存到系統(tǒng)軟件內(nèi)部其他位置的緩沖區(qū)內(nèi),減少網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)膲毫?,系統(tǒng)軟件在處理時(shí),也會(huì)更加穩(wěn)定。

      3.6 增加心跳位

      通常,倉儲(chǔ)項(xiàng)目中為了減少下位機(jī)的處理量,在設(shè)計(jì)Socket通信時(shí),會(huì)將下位機(jī)設(shè)置為服務(wù)器端,控制系統(tǒng)軟件設(shè)置為客戶端。出現(xiàn)網(wǎng)絡(luò)故障時(shí),由于采用的是這種架構(gòu)模式,控制軟件無法及時(shí)獲取到下位機(jī)已經(jīng)離線。為了應(yīng)對(duì)這種情況出現(xiàn),對(duì)于載車提升機(jī)等可能在短時(shí)間內(nèi)通信量較少的設(shè)備,可以在設(shè)計(jì)通信報(bào)文時(shí),增加心跳位。即每隔一段時(shí)間,控制系統(tǒng)軟件將數(shù)據(jù)包完整的下發(fā)給下位機(jī),只改變其中一項(xiàng)的值,下位機(jī)則對(duì)該報(bào)文不做邏輯處理,直接丟棄。如遇網(wǎng)絡(luò)故障等情況,控制系統(tǒng)軟件就能夠在較短的時(shí)間內(nèi)發(fā)現(xiàn)下位機(jī)的失聯(lián),從而進(jìn)行重連或告警處理。而不用等到下次發(fā)送報(bào)文時(shí),才可知道下位機(jī)的通信鏈路已經(jīng)故障,損失軟件整體運(yùn)行效率。

      3.7 硬件改善

      傳輸數(shù)據(jù)過程中,除了可以在軟件上進(jìn)行處理,也可以在硬件上進(jìn)行改造。在網(wǎng)線選材時(shí),要在顧及經(jīng)濟(jì)效益的基礎(chǔ)上盡量選用有較高質(zhì)量級(jí)別的網(wǎng)線。在網(wǎng)線鋪設(shè)時(shí),要參考相關(guān)鋪設(shè)標(biāo)準(zhǔn),盡可能的按照標(biāo)準(zhǔn)進(jìn)行網(wǎng)絡(luò)構(gòu)建。與此同時(shí),盡量減少交換機(jī)到終端的距離,若無法避免網(wǎng)線長距離傳輸,則需要在遠(yuǎn)距離傳輸部分盡可能選用光纖作為傳輸介質(zhì),以增快鏈路傳輸速度,減少數(shù)據(jù)包在網(wǎng)線中的阻塞。

      4 結(jié)語

      除此之外,倉儲(chǔ)控制軟件中使用Socket通信協(xié)議與下位機(jī)通信過程中,依然可能遇到一些其他的問題,可以適當(dāng)?shù)脑黾尤斯ぬ幚斫涌?,使得系統(tǒng)更加穩(wěn)定。同時(shí)也需要及時(shí)生成系統(tǒng)工作日志,以求最快的將控制系統(tǒng)軟件中的問題及時(shí)解決。處理好倉儲(chǔ)控制軟件中可能發(fā)生的問題,可以提高軟件的運(yùn)行效率,進(jìn)而提高智能倉庫的整體運(yùn)行效率。

      參考文獻(xiàn)

      [1]韓雪,王維虎.Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第二版)[M].人民郵電出版社,2013.9.

      [2]潘偉.計(jì)算機(jī)網(wǎng)絡(luò)理論與實(shí)驗(yàn)[M].廈門大學(xué)出版社,2013.12.

      [3]黎建業(yè),陳光輝,黎照,趙克農(nóng).網(wǎng)絡(luò)綜合布線系統(tǒng)與施工技術(shù)[M].機(jī)械工業(yè)出版社,2013.9.

      [4]鄧素杰.基于Socket的TCP/IP網(wǎng)絡(luò)通訊模式研究[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013(20):302-302,304.

      猜你喜歡
      通信
      基于數(shù)字化變電站SV報(bào)文通信可靠性問題研究
      鐵路光纜運(yùn)營維護(hù)方式研究
      淺析無線通信技術(shù)應(yīng)用于軌道交通通信、信號(hào)業(yè)務(wù)
      SDH光纖通信網(wǎng)在電網(wǎng)中的應(yīng)用
      電子對(duì)抗中通信技術(shù)研究
      多媒體融合通信與平臺(tái)通信優(yōu)化方案研究
      基于“一級(jí)調(diào)度、兩級(jí)運(yùn)維”的通信管理體系研究①
      科技資訊(2016年19期)2016-11-15 10:10:38
      計(jì)算機(jī)技術(shù)在通信中的應(yīng)用
      簡述計(jì)算機(jī)通信網(wǎng)絡(luò)安全與防護(hù)策略
      Android環(huán)境下主UI線程與子線程通信機(jī)制研究
      罗定市| 新安县| 乌鲁木齐县| 陕西省| 饶河县| 丰原市| 榆林市| 许昌市| 苏州市| 宽城| 都昌县| 南投市| 盖州市| 胶南市| 黔东| 缙云县| 永寿县| 永康市| 堆龙德庆县| 行唐县| 古田县| 绵竹市| 固原市| 宁远县| 张家川| 曲靖市| 岳池县| 夏河县| 鄂尔多斯市| 凤台县| 苏尼特左旗| 卓资县| 三穗县| 海安县| 榆社县| 民权县| 措美县| 白玉县| 海阳市| 浠水县| 盐山县|