• 
    

    
    

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

      基于Modbus協(xié)議的終端通訊系統(tǒng)的開發(fā)

      2021-01-19 02:24:20王學(xué)華白志城申楷赟
      關(guān)鍵詞:終端機(jī)以太網(wǎng)通訊

      劉 鑫,王學(xué)華*,白志城,申楷赟,王 剛

      (1.武漢工程大學(xué) 材料科學(xué)與工程學(xué)院,湖北 武漢 430205; 2.縱橫皆景(武漢)信息技術(shù)有限公司,湖北 武漢 430204)

      0 引 言

      智能泊車系統(tǒng)是將先進(jìn)的圖像識別技術(shù)與工業(yè)自動(dòng)化技術(shù)相結(jié)合[1-2],通過計(jì)算機(jī)的數(shù)據(jù)計(jì)算與圖像處理,對進(jìn)出智能車庫車輛的存放、測量、收費(fèi)、引導(dǎo)為一體的全方位管理系統(tǒng)[3]。該系統(tǒng)以用戶個(gè)人信息作為車輛出入車庫的憑證,用先進(jìn)的激光雷達(dá)測距技術(shù)和高清號牌機(jī)獲取車輛信息[4],再通過控制裝置控制機(jī)械手將車輛抓取到托盤小車后引導(dǎo)至指定停車位,實(shí)現(xiàn)用戶的停取車需求。智能泊車庫因其穩(wěn)定的通訊和強(qiáng)大的數(shù)據(jù)庫管理每一個(gè)用戶及其車輛的信息,解決了現(xiàn)有停車場存在的安全隱患[5]。

      PLC因具有靈活性好、通用性強(qiáng)和性價(jià)比高等優(yōu)點(diǎn)使其在工業(yè)自動(dòng)化工程中應(yīng)用廣泛[6]。在智能泊車庫中選用PLC為核心建立運(yùn)動(dòng)控制系統(tǒng)可以有效提高系統(tǒng)的自動(dòng)化程度和安全性,但由于PLC單獨(dú)處理數(shù)據(jù)能力較差[7],所以需要與上位機(jī)結(jié)合彌補(bǔ)這些缺陷[8]。如PLC在操控激光雷達(dá)對目標(biāo)物體與周邊信息進(jìn)行感知與采集的過程中,PLC無法對相關(guān)數(shù)據(jù)進(jìn)行處理,所以通過與上位機(jī)結(jié)合,建立可以實(shí)現(xiàn)數(shù)據(jù)交互的通訊模塊將數(shù)據(jù)傳輸?shù)缴衔粰C(jī)進(jìn)行處理。

      PLC常用的通信協(xié)議有MPI、PROFIBUS、工業(yè)以太網(wǎng)以及串口通信等[9],其中基于工業(yè)以太網(wǎng)的Modbus通訊協(xié)議具有診斷能力強(qiáng)、數(shù)據(jù)傳輸量大、成本低等特點(diǎn)[10],主要用于對PLC寄存器中數(shù)據(jù)讀寫等操作,現(xiàn)已被眾多機(jī)械設(shè)備產(chǎn)品支持并使用[11],所以選用Modbus協(xié)議作為系統(tǒng)的通訊協(xié)議。而在PLC與終端機(jī)數(shù)據(jù)交互過程中,傳統(tǒng)的XML技術(shù)在Modbus數(shù)據(jù)解析上效率較低,因此在數(shù)據(jù)傳輸應(yīng)用開發(fā)中引用Json技術(shù)將Modbus數(shù)據(jù)封裝成為Json對象,通過以太網(wǎng)傳輸可以有效提高傳輸效率。該文通過對Modbus協(xié)議和Json技術(shù)的解析,設(shè)計(jì)了一種以Modbus通信協(xié)議與Json技術(shù)為紐帶,利用上位機(jī)(終端機(jī))與PLC進(jìn)行數(shù)據(jù)傳輸實(shí)現(xiàn)車庫停取車功能的系統(tǒng)。

      1 智能終端系統(tǒng)架構(gòu)

      1.1 系統(tǒng)架構(gòu)

      智能終端系統(tǒng)主要分為數(shù)據(jù)處理模塊、數(shù)據(jù)傳輸模塊和數(shù)據(jù)采集模塊。數(shù)據(jù)處理模塊主要是終端機(jī),它的主要功能是發(fā)送和接收指令以及對系統(tǒng)信息進(jìn)行處理。數(shù)據(jù)采集層主要有號牌機(jī)、激光雷達(dá)、地感線圈、光電傳感器等,它的主要功能是采集外部信息如車輛位置坐標(biāo)、號牌等。數(shù)據(jù)傳輸模塊是數(shù)據(jù)采集模塊與數(shù)據(jù)處理模塊進(jìn)行數(shù)據(jù)交互的重要媒介。在實(shí)際應(yīng)用中由于用戶可以操作多臺終端機(jī),所以PLC需要通過以太網(wǎng)接入交換機(jī),通過交換機(jī)可同時(shí)與多臺終端機(jī)進(jìn)行數(shù)據(jù)傳輸且互不干擾。通訊流程為用戶在終端機(jī)上輸入指令,指令通過數(shù)據(jù)交互模塊發(fā)送至PLC,PLC對指令進(jìn)行分析處理后,操控?cái)?shù)據(jù)采集層開始數(shù)據(jù)采集并將數(shù)據(jù)傳送至終端機(jī),實(shí)現(xiàn)了終端機(jī)與PLC之間的數(shù)據(jù)傳輸。系統(tǒng)數(shù)據(jù)傳輸?shù)募軜?gòu)如圖1所示。

      1.2 智能終端功能

      自助終端機(jī)是用戶在智能泊車庫中完成車輛停取的主要操作設(shè)備。作為無人值守的自動(dòng)泊車終端系統(tǒng)需具備以下主要功能:停車功能、取車功能和支付功能。

      停車功能主要包括用戶信息認(rèn)證、車輛信息讀取與數(shù)據(jù)庫數(shù)據(jù)同步等。用戶將車輛駛進(jìn)停車場后,在終端機(jī)上選擇停車操作,輸入賬戶信息,終端機(jī)系統(tǒng)進(jìn)行用戶和車輛信息驗(yàn)證,驗(yàn)證通過后打印停車憑條,發(fā)出停車動(dòng)作指令,泊車系統(tǒng)自動(dòng)完成停車操作。

      圖1 智能終端數(shù)據(jù)傳輸系統(tǒng)架構(gòu)

      取車功能主要是驗(yàn)證用戶信息以取出車輛。用戶只需將停車憑條放在終端機(jī)上的掃描設(shè)備進(jìn)行識別[12],終端系統(tǒng)根據(jù)掃碼信息進(jìn)行身份認(rèn)證,認(rèn)證通過則可以取出車輛,并顯示停車時(shí)長和費(fèi)用。

      支付功能主要用于完成取車費(fèi)用的支付和發(fā)送道閘動(dòng)作指令。取車信息驗(yàn)證通過后,終端顯示支付界面,用戶完成支付后,終端發(fā)送支付完成信息和道閘動(dòng)作指令,泊車系統(tǒng)隨即會(huì)將車輛取至待取區(qū)域,用戶即可將車輛駛出車庫,完成取車過程。

      2 Modbus協(xié)議的Json格式

      Modbus通訊協(xié)議是一種應(yīng)用層協(xié)議,連接在不同網(wǎng)絡(luò)設(shè)備之間提供服務(wù)器與客戶端通信,其具有支持串口(主要是RS-485總線)和以太網(wǎng)的功能,協(xié)議包括Modbus RTU,Modbus ASCII和Modbus TCP三種[13]。該系統(tǒng)采用基于以太網(wǎng)的Modbus TCP協(xié)議,屬于客戶端/服務(wù)器模式進(jìn)行通信,客戶端發(fā)出數(shù)據(jù)請求消息,服務(wù)端收到消息后就發(fā)送數(shù)據(jù)到客戶端以響應(yīng)請求,客戶端確定了服務(wù)端響應(yīng)后表示連接已建立。

      Modbus TCP數(shù)據(jù)結(jié)構(gòu)如圖2所示,基于TCP/IP協(xié)議的Modbus數(shù)據(jù)格式包含通信報(bào)頭和協(xié)議數(shù)據(jù)單元。通信報(bào)頭包含事務(wù)標(biāo)識符(2字節(jié))、協(xié)議標(biāo)識符(2字節(jié))、長度(2字節(jié))和單元標(biāo)識(1字節(jié)),事務(wù)標(biāo)識符在每次通信完成會(huì)進(jìn)行累加以區(qū)別不同的通信報(bào)文;由于該文采用的是Modbus TCP協(xié)議,所以協(xié)議標(biāo)識為0×0000;長度表示數(shù)據(jù)長度,單位為字節(jié);單元標(biāo)識符代表設(shè)備地址,該文擬用0×02作為終端標(biāo)識。而協(xié)議數(shù)據(jù)單元包括功能碼(1字節(jié))和數(shù)據(jù)集(n字節(jié)),功能碼用于指出要求進(jìn)行的操作,該文主要運(yùn)用功能碼0×03和0×04,0×03代表讀取寄存器數(shù)據(jù),0×04代表在指定地址寄存器中寫入數(shù)據(jù);數(shù)據(jù)集即傳輸數(shù)據(jù)是一個(gè)可變字段,每個(gè)字節(jié)8 bit,字段長短根據(jù)數(shù)據(jù)大小決定。

      圖2 Modbus TCP消息幀的數(shù)據(jù)結(jié)構(gòu)

      Json對象的數(shù)據(jù)結(jié)構(gòu)為鍵值對結(jié)構(gòu),即“key/value”集合。key為對象的屬性,可以是數(shù)據(jù)類型,也可以是一個(gè)數(shù)組,而value表示其對應(yīng)的值,該文采用的Json格式表示為:

      {"terminal”:“0001”,

      “status”:“0001” ,

      “Parking allowed”:“ 0002”,

      “Voucher number”:“1423”,

      “Parking fee”:“0034"}

      從以上結(jié)構(gòu)可以看出,Json格式適用于本系統(tǒng)Modbus協(xié)議指令的數(shù)據(jù)格式,合理地使用Json處理終端機(jī)與PLC之間傳輸?shù)臄?shù)據(jù),可以有效提高M(jìn)odbus協(xié)議的通訊效率,并且可以簡化應(yīng)用程序的開發(fā)。

      3 通訊程序設(shè)計(jì)

      終端機(jī)上的通訊程序主要完成以下任務(wù):初始化通訊程序、發(fā)送通訊請求、檢驗(yàn)數(shù)據(jù)幀是否正確、執(zhí)行讀寫指令、接收返回結(jié)果。程序流程為:終端機(jī)主動(dòng)聯(lián)絡(luò)PLC,首先初始化通信模塊,然后發(fā)送握手信號,其中包括IP地址、端口號等,PLC接收到地址后會(huì)先與本身IP比較,如果地址無誤則回應(yīng)終端機(jī)確認(rèn)連接,當(dāng)終端機(jī)接收到PLC確認(rèn)信息后,則表示通信已經(jīng)建立,同時(shí)可以讀寫PLC寄存器中的數(shù)據(jù),通訊流程如圖3所示。

      3.1 終端機(jī)通訊程序

      3.1.1 連接PLC

      因?yàn)椴窜噹煸O(shè)備采用以太網(wǎng)互聯(lián),所以需要根據(jù)PLC配置設(shè)置參數(shù)。在連接程序中,網(wǎng)關(guān)的IP參數(shù)設(shè)為127.0.0.1,端口號為502,同時(shí)回調(diào)函數(shù)返回連接狀態(tài)值,程序如下:

      IPAddress[]IpAdd=Dns.GetHostAddresses ("127.0.0.1");// IP地址

      IPEndPoint joint=new IPEndPoint(Ip Add[1],502) ;//端口號

      AsyncCallback Value=new AsyncCal lback (ConnectCallback1);//回調(diào)函數(shù)

      AsyncResult connResult =s1.Begin Co nnect(joint,callback,s1);

      connResult.AsyncWaitHandle.WaitOne(50,true);

      該網(wǎng)關(guān)可以自動(dòng)診斷與PLC的連接,終端程序會(huì)定時(shí)發(fā)送報(bào)文至PLC,PLC則會(huì)發(fā)送返回值以確定連接正常。設(shè)定時(shí)間為50 ms,如果終端程序沒有接收到檢測數(shù)據(jù),則表示通信連接異常。如果連接正常,便可以進(jìn)行讀寫操作。

      圖3 通訊流程

      3.1.2 讀取寄存器

      對PLC寄存器中指定地址的DB塊進(jìn)行數(shù)據(jù)讀寫需要指定地址和讀取數(shù)據(jù)長度,根據(jù)通信協(xié)議發(fā)送和讀取指定格式數(shù)據(jù),并轉(zhuǎn)成文本格式保存在本地。

      OperateResultread=busTcpClient.ReadRegister(DBaddress, Length);讀取數(shù)據(jù)

      if (read.IsSuccess)

      {

      Value_List.Text = "";

      String returned_value=ByteToHexString (re ad.Content);

      }

      else

      {

      toolStripStatusLabel1.Text="讀取失敗:"+read.ToMessageShowString();}

      3.1.3 寫入寄存器

      PLC_Write_value Retured_value_write=DeserializeJsonToObject (Str);

      writeResultRender(busTcpClient.WriteRegister(ushort.Parse(Retured_value_write.Adress),short.Parse(Retured_value_write.Value));

      Retured_value_write.Adress);寫入數(shù)據(jù)

      3.1.4 轉(zhuǎn)Json格式

      ArrayList array=GetSeparateSubString(str, 4);

      int Read_adress=Convert.ToInt32(addr ss);

      Retured_v.Clear();

      foreach (string arr in array)

      {

      PLC_Retured_value Retured_value=new PLC_Retured_value();

      Value_List.Text +="DB地址" + Read_adress + ": "+ arr + " ";

      Retured_value.Adress=Read_adress. ToStri ng();

      Retured_value.Value=arr;//實(shí)體集合序列化和反序列化

      Retured_v.Add(Retured_value);

      Read_adress++;

      }

      3.2 PLC通信程序

      該系統(tǒng)PLC選用西門子S7-1200系列,S7-1200系列PLC采用模塊化結(jié)構(gòu),各模塊都具有很好的可擴(kuò)展性,可搭載中央處理器(CPU)、電源、I/O模塊以及通訊模塊[14]。博途(TIA)是西門子工業(yè)常用的集成自動(dòng)化軟件,可對PLC進(jìn)行組態(tài)、編程和調(diào)試。以太網(wǎng)連接設(shè)備后,使用TIA V14軟件找尋到PLC設(shè)備,選中PLC點(diǎn)擊下載硬件和軟件信息,PG/PC接口類型選擇PN/IE[15]。初始化PLC,在通信模塊中選擇MODBUS_SERVER功能塊,并添加至PLC程序集,并按圖4所示的方式設(shè)置通訊參數(shù)和數(shù)據(jù)塊。

      圖4 Modbus通信模塊

      在PLC程序中添加DB塊,定義了終端機(jī)與PLC需要傳輸?shù)臄?shù)據(jù),其中數(shù)據(jù)名稱、數(shù)據(jù)類型和偏移量等如表1所示,終端機(jī)程序可以通過地址和偏移量讀寫這些數(shù)據(jù)值。

      表1 PLC中DB塊的數(shù)據(jù)結(jié)構(gòu)

      4 數(shù)據(jù)通訊測試

      4.1 單組數(shù)據(jù)通訊測試

      在搭載Windows 64位操作系統(tǒng)的計(jì)算機(jī)上進(jìn)行開發(fā)與通訊測試,系統(tǒng)測試在無干擾的環(huán)境下進(jìn)行。在測試過程中,使用Modbus Slave軟件模擬現(xiàn)場PLC情況,在Modbus Slave上添加數(shù)據(jù)內(nèi)容,根據(jù)表1定義的數(shù)據(jù)名稱及大小如圖5所示,同時(shí)選擇連接方式為Modbus TCP/IP,設(shè)定IP地址為127.0.0.1,端口號為502。終端程序通過與Modbus Slave軟件連接,通過讀寫表中數(shù)據(jù)測試通訊程序性能。

      圖5 Modbus Slave數(shù)據(jù)界面

      在通訊程序上輸入IP地址和端口號,運(yùn)行程序后與Modbus Slave建立連接,由于有18個(gè)模擬數(shù)據(jù),所以在程序上設(shè)定DB塊地址為0~17位,設(shè)定讀取時(shí)間間隔為100 ms,得出讀寫數(shù)據(jù)結(jié)果。通訊程序中,利用Stopwatch函數(shù)計(jì)算出讀寫數(shù)據(jù)時(shí)間,通過多次反復(fù)測試,測試結(jié)果如表2所示。

      表2 單組數(shù)據(jù)通訊測試結(jié)果

      4.2 多組數(shù)據(jù)通訊測試

      多組數(shù)據(jù)通訊測試是在單組數(shù)據(jù)通訊測試基礎(chǔ)上,在Modbus Slave上更改數(shù)據(jù)類型與數(shù)據(jù)值,同時(shí)更改通訊數(shù)據(jù)量,在相同的環(huán)境下進(jìn)行測試。設(shè)定五組數(shù)據(jù),每組測試數(shù)據(jù)取50次測試的平均值,測試結(jié)果如表3所示。從統(tǒng)計(jì)結(jié)果可以看出,在通訊數(shù)據(jù)不同的情況下,通訊程序的讀寫操作誤差為0,單次讀寫時(shí)間誤差不超過1 ms,并且程序運(yùn)行過程中占用計(jì)算機(jī)內(nèi)存不超過40 MB。

      表3 多組數(shù)據(jù)通訊測試統(tǒng)計(jì)

      5 結(jié)束語

      通過對ModbusTCP協(xié)議的解析,采用C#編程語言開發(fā)了基于ModbusTCP通信協(xié)議的終端通訊系統(tǒng),并對ModbusTCP通訊數(shù)據(jù)封裝成Json格式傳輸,實(shí)現(xiàn)了終端機(jī)與PLC之間的實(shí)時(shí)通訊和數(shù)據(jù)傳輸。該系統(tǒng)在與Modbus Slave軟件測試結(jié)果表明,數(shù)據(jù)量在150個(gè)以內(nèi)終端通訊系統(tǒng)通信正常、運(yùn)行穩(wěn)定,驗(yàn)證了系統(tǒng)的可行性,達(dá)到了技術(shù)指標(biāo)。

      猜你喜歡
      終端機(jī)以太網(wǎng)通訊
      《茶葉通訊》簡介
      茶葉通訊(2022年2期)2022-11-15 08:53:56
      《茶葉通訊》簡介
      茶葉通訊(2022年3期)2022-11-11 08:43:50
      通訊報(bào)道
      基于1500以太網(wǎng)養(yǎng)豬場的智能飼喂控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      重慶ETC手持終端機(jī)方案探討
      談實(shí)時(shí)以太網(wǎng)EtherCAT技術(shù)在變電站自動(dòng)化中的應(yīng)用
      電子制作(2017年24期)2017-02-02 07:14:44
      冷軋機(jī)操作站終端機(jī)的改造性修復(fù)
      通訊簡史
      一種90W高功率以太網(wǎng)供電系統(tǒng)的設(shè)計(jì)
      淺談EPON與工業(yè)以太網(wǎng)在貴遵高速公路中的應(yīng)用
      边坝县| 六盘水市| 射洪县| 宜兰市| 巨鹿县| 金溪县| 抚宁县| 崇信县| 高邑县| 漳州市| 杭锦旗| 苏尼特右旗| 贵德县| 恭城| 榆中县| 鲁山县| 嘉善县| 莱州市| 崇义县| 沛县| 定南县| 华容县| 滦平县| 蓬莱市| 贞丰县| 莱阳市| 桃源县| 绥化市| 宁强县| 牟定县| 响水县| 镇原县| 新乡市| 临潭县| 那坡县| 湖南省| 康乐县| 商城县| 凤冈县| 尚志市| 醴陵市|