• 
    

    
    

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

      基于32位MCU的XLPE生產(chǎn)線中Modbus的實(shí)現(xiàn)

      2020-11-13 02:02:18胡科幻石景龍王向超齊文斌
      關(guān)鍵詞:個(gè)字符調(diào)速器報(bào)文

      胡科幻, 石景龍, 苗 政, 徐 信, 王向超, 齊文斌, 張 軍

      (1. 吉林大學(xué) 電子科學(xué)與工程學(xué)院, 長(zhǎng)春 130012; 2. 白城福佳科技有限公司 工程技術(shù)部, 吉林 白城 137000;3. 吉林電子信息職業(yè)技術(shù)學(xué)院 信息中心, 吉林 吉林 132001)

      0 引 言

      目前我國(guó)正處于工業(yè)自動(dòng)化控制的高速發(fā)展時(shí)期。自動(dòng)化控制主要是通過(guò)中央處理器發(fā)出控制指令, 生產(chǎn)線上的設(shè)備根據(jù)中央處理器的指令完成相應(yīng)動(dòng)作。其中交聯(lián)電纜生產(chǎn)線的自動(dòng)化控制是工業(yè)自動(dòng)化控制成功與成熟的重大體現(xiàn)。在交聯(lián)電纜生產(chǎn)線等自動(dòng)控制系統(tǒng)中, 主要是針對(duì)生產(chǎn)線速度以及溫度的控制。其中對(duì)生產(chǎn)線速度控制依賴(lài)于對(duì)電機(jī)的控制, 這是生產(chǎn)線運(yùn)作的基礎(chǔ)和前提, 同時(shí)也是生產(chǎn)線能否高效生產(chǎn)的重要保障, 而電機(jī)的驅(qū)動(dòng)則是由專(zhuān)門(mén)的直流調(diào)速器實(shí)現(xiàn)的, 因此一個(gè)可靠穩(wěn)定交聯(lián)電纜生產(chǎn)線控制系統(tǒng)對(duì)速度的控制是通過(guò)中央處理器與直流調(diào)速器的通訊實(shí)現(xiàn)的。

      32位MCU是一種高性能、 低功耗、 低成本的嵌入式應(yīng)用芯片, 被廣泛的作為中央控制器應(yīng)用于自動(dòng)控制系統(tǒng), 工業(yè)控制等領(lǐng)域[1-2]。直流調(diào)速器是交聯(lián)電纜生產(chǎn)線自動(dòng)化控制系統(tǒng)中必不可少的電機(jī)驅(qū)動(dòng)設(shè)備, 是連接中央處理器與各電機(jī)模塊之間的橋梁, 并為電機(jī)控制提供支持[3-4]。32位MCU與直流調(diào)速器之間的通訊有直接的模擬量控制方式, 但由于模擬量控制抗干擾能力以及傳輸距離的限制, 并不能滿足工業(yè)自動(dòng)化控制系統(tǒng)的工作環(huán)境。因此筆者就32位MCU與直流調(diào)速器通訊問(wèn)題給出解決方案, 其硬件電路基于RS485硬件結(jié)構(gòu), 軟件設(shè)計(jì)基于Modbus總線協(xié)議, 并設(shè)計(jì)出單個(gè)MCU控制多個(gè)直流調(diào)速器的一主多從通訊協(xié)議。

      1 系統(tǒng)整體結(jié)構(gòu)

      筆者闡述一種基于RS485串行口的物理硬件接口電路實(shí)現(xiàn)的Modbus總線協(xié)議[5-7]。RS485電平需要電平轉(zhuǎn)換芯片才可以被STM32驅(qū)動(dòng), 筆者使用SP3485芯片作為485電平轉(zhuǎn)換。RS485的電平轉(zhuǎn)換芯片電路如圖1所示, 其中TX, RX分別為發(fā)送端和接收端, RE為使能端, AB兩線為數(shù)據(jù)傳輸線。RS485通信原理如圖2所示, 將TTL電平信號(hào)轉(zhuǎn)化成差分信號(hào)A/B線進(jìn)行傳輸, 根據(jù)A/B線的電壓差標(biāo)定數(shù)據(jù)信息(A線電壓>B線電壓標(biāo)定輸出為1, A線電壓

      圖1 RS485電平轉(zhuǎn)換芯片 圖2 RS485通信原理圖 Fig.1 RS485 level shifting chip Fig.2 RS485 communication schematic

      通訊系統(tǒng)框架如圖3所示, 其中STM32、 ETD790P分別為系統(tǒng)的主機(jī)和從機(jī), 物理層基于RS485總線, 應(yīng)用層基于Modbus應(yīng)用協(xié)議實(shí)現(xiàn)整個(gè)通訊系統(tǒng)的設(shè)計(jì)。主機(jī)通過(guò)Modbus應(yīng)用協(xié)議將命令發(fā)送到從機(jī), 從機(jī)解析協(xié)議并做出響應(yīng)回傳到主機(jī), 主機(jī)根據(jù)應(yīng)用協(xié)議解析從機(jī)回應(yīng)的數(shù)據(jù), 即是整個(gè)通訊系統(tǒng)的實(shí)現(xiàn)過(guò)程。

      圖3 通訊系統(tǒng)框架圖Fig.3 Communication system framework

      2 Modbus總線協(xié)議

      2.1 Modbus簡(jiǎn)介

      在我國(guó), Modbus總線協(xié)議[3-4,8-14]已經(jīng)是國(guó)家標(biāo)準(zhǔn), 也是工業(yè)史上首個(gè)用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議, 一般應(yīng)用于各種數(shù)據(jù)采集和過(guò)程監(jiān)控。筆者將其用于32位MCU與直流調(diào)速器的數(shù)據(jù)通訊方向。

      根據(jù)7層OSI通信模型, Modbus標(biāo)準(zhǔn)模型包括應(yīng)用層、 數(shù)據(jù)鏈路層和物理層, 其中應(yīng)用層是Modbus應(yīng)用協(xié)議; 數(shù)據(jù)鏈路層是主-從協(xié)議; 而物理層支持不同的物理接口如RS485(筆者選用)、 RS232等。其中主-從協(xié)議是筆者設(shè)計(jì)的關(guān)鍵, 具體表現(xiàn)為在同一時(shí)刻, 只有一個(gè)主節(jié)點(diǎn)連接于總線, 一個(gè)或多個(gè)子節(jié)點(diǎn)(最多247個(gè))連接于同一個(gè)串行總線, 主節(jié)點(diǎn)在同一時(shí)刻只會(huì)發(fā)起一個(gè)Modbus事務(wù)處理, 從節(jié)點(diǎn)在沒(méi)有收到主節(jié)點(diǎn)的請(qǐng)求時(shí)并不主動(dòng)發(fā)送數(shù)據(jù), 也不與其他子節(jié)點(diǎn)通信。

      2.2 Modbus幀描述

      圖4 Modbus通訊協(xié)議數(shù)據(jù)單元Fig.4 Modbus communication protocol data unit

      Modbus通訊協(xié)議數(shù)據(jù)單元如圖4所示, Modbus應(yīng)用協(xié)議所定義的最基本的數(shù)據(jù)單元(PDU: Protocol Data Unit)包括功能碼段和數(shù)據(jù)段, 筆者使用到的數(shù)據(jù)單元包括地址碼、 功能碼、 數(shù)據(jù)段以及錯(cuò)誤校驗(yàn)碼。Modbus合法的地址碼為0~247, 主節(jié)點(diǎn)通過(guò)將子節(jié)點(diǎn)的地址放到報(bào)文的地址碼處對(duì)子節(jié)點(diǎn)尋址, 子節(jié)點(diǎn)返回應(yīng)答時(shí), 將自己的地址放在應(yīng)答報(bào)文的地址碼以讓主節(jié)點(diǎn)知道哪個(gè)子節(jié)點(diǎn)在回答; 功能碼指明服務(wù)器要執(zhí)行的命令; 數(shù)據(jù)在功能碼后面表示功能碼含有請(qǐng)求和響應(yīng)參數(shù); 錯(cuò)誤檢驗(yàn)碼是對(duì)報(bào)文進(jìn)行冗余校驗(yàn)的結(jié)果。

      Modbus有RTU(Remote Terminal Unit)和ASCII(American Standard Code for Information Interchange)兩種模式進(jìn)行串行傳輸, 這兩種模式均定義了信息如何打包為報(bào)文以及如何進(jìn)行解碼。筆者選用RTU模式傳輸, 此模式下傳輸數(shù)據(jù)密度大, 在相同的波特率下吞吐率比ASCII模式高。RTU報(bào)文幀格式如圖5所示, 其中報(bào)文構(gòu)造由發(fā)送設(shè)備將幀定義為帶有起始和結(jié)束標(biāo)記的幀, 這使設(shè)備可以準(zhǔn)確地檢測(cè)報(bào)文的起始與結(jié)束, 一幀報(bào)文必須以連續(xù)的字符流發(fā)送, 如果一幀數(shù)據(jù)中的兩個(gè)字符之間的空閑間隔大于1.5個(gè)字符時(shí)間, 則報(bào)文幀被認(rèn)為不完整應(yīng)該被丟棄, 而兩個(gè)報(bào)文幀之間至少3.5個(gè)空閑字符以間隔區(qū)分兩幀報(bào)文。

      圖5 RTU報(bào)文幀格式Fig.5 RTU message frame format

      3 通訊協(xié)議設(shè)計(jì)

      RTU模式傳輸狀態(tài)如圖6所示, 其中從初始態(tài)到空閑態(tài)轉(zhuǎn)換需要3.5個(gè)字符時(shí)間定時(shí)超時(shí), 這可以保證兩個(gè)報(bào)文幀之間的時(shí)間滿足大于傳送3.5個(gè)字符時(shí)間, 空閑態(tài)是沒(méi)有發(fā)送接收任務(wù)的狀態(tài)(當(dāng)無(wú)字符傳輸時(shí)間超過(guò)3.5個(gè)字符時(shí), 通信鏈路被認(rèn)為在空閑態(tài)); 此時(shí)在鏈路上檢測(cè)到的任何傳輸?shù)淖址欢x為幀起始, 有字符傳輸時(shí)鏈路變?yōu)榛顒?dòng)態(tài); 當(dāng)鏈路再次無(wú)字符傳輸時(shí)間超過(guò)3.5個(gè)字符的時(shí)間時(shí), 被定義為幀結(jié)束; 幀結(jié)束后, 傳輸?shù)臄?shù)據(jù)在1.5個(gè)字符時(shí)間完成CRC(Cydic Redundancy Check)計(jì)算和檢驗(yàn); 然后, 分析地址域以確定幀是否發(fā)往此設(shè)備, 如果不是, 則丟棄此幀。通訊協(xié)議的設(shè)計(jì)是根據(jù)RTU模式的報(bào)文幀格式以及傳輸狀態(tài)設(shè)計(jì)的, 這種設(shè)計(jì)方法標(biāo)準(zhǔn)化程度高, 可移植性強(qiáng)。

      圖6 RTU模式傳輸狀態(tài)圖Fig.6 RTU mode transmission status diagram

      圖7 程序流程圖Fig.7 Program flow chart

      筆者設(shè)計(jì)32位MCU與直流調(diào)速器通訊的Modbus實(shí)現(xiàn)方法是將32位MCU作為主機(jī)設(shè)備, 直流調(diào)速器作為從機(jī)設(shè)備, 從機(jī)的Modbus應(yīng)用協(xié)議已集成, 因此只需設(shè)計(jì)主機(jī)的通訊協(xié)議即可。筆者設(shè)計(jì)的通訊協(xié)議整體程序流程圖如圖7所示, 首先由STM32作為主機(jī)系統(tǒng)對(duì)軟硬件初始化, 這里主要包括串口通訊、 中斷服務(wù)、 定時(shí)器和I/O端口等初始化; 然后由主機(jī)向從機(jī)發(fā)送操作指令, 筆者涉及的操作指令主要包括從機(jī)寄存器的讀、 寫(xiě)操作(具體涉及到電機(jī)轉(zhuǎn)速、 電流、 轉(zhuǎn)矩等參數(shù)寄存器); 檢測(cè)是否發(fā)送超時(shí), 若發(fā)送超時(shí)重新發(fā)送, 發(fā)送正常則等待從機(jī)應(yīng)答; 主機(jī)接收從機(jī)的應(yīng)答數(shù)據(jù); 因?yàn)橹鳈C(jī)并不知道從機(jī)數(shù)據(jù)何時(shí)發(fā)送完畢, 根據(jù)RTU模式數(shù)據(jù)傳輸規(guī)則, 判斷接收字符時(shí)間間隔是否超過(guò)3.5個(gè)字符時(shí)間, 未超過(guò)則繼續(xù)接收, 超過(guò)則判定本次應(yīng)答數(shù)據(jù)接收完畢; 然后對(duì)接收到的字符校驗(yàn)是否正確。這里筆者設(shè)計(jì)采用兩級(jí)校驗(yàn), 首先是對(duì)接收到字符個(gè)數(shù)的校驗(yàn), 個(gè)數(shù)校驗(yàn)成功再進(jìn)行CRC校驗(yàn); 應(yīng)答數(shù)據(jù)接收正確后進(jìn)行通訊的應(yīng)用層協(xié)議分析執(zhí)行。

      4 實(shí)驗(yàn)數(shù)據(jù)分析

      筆者設(shè)計(jì)的通訊協(xié)議旨在解決MCU與直流調(diào)速器的通訊問(wèn)題。實(shí)驗(yàn)是基于STM32作為主機(jī)與PC端Modbus從機(jī)模擬器通訊證實(shí)筆者實(shí)現(xiàn)的可行性以及可靠性, 這里選取一組數(shù)據(jù)(主機(jī)發(fā)送0x 01 01 00 01 00 04 6C 09)進(jìn)行詳細(xì)說(shuō)明。

      圖8 示波器監(jiān)測(cè)主機(jī)發(fā)送報(bào)文Fig.8 The oscilloscope monitors thehost to send messages

      該實(shí)驗(yàn)示波器監(jiān)測(cè)主機(jī)發(fā)送報(bào)文如圖8所示。主機(jī)發(fā)送報(bào)文的波形, 一個(gè)報(bào)文幀是8個(gè)字符, 1個(gè)字符是10位, 包括1位起始位、 8位數(shù)據(jù)位、 1位停止位, 起始位總是低電平, 結(jié)束位是高電平, 8位數(shù)據(jù)低位在前。如圖8標(biāo)出的第1個(gè)字符, 起始位是低電平, 之后是1個(gè)高電平和7個(gè)低電平, 最后一位是結(jié)束位高電平, 因此中間數(shù)據(jù)位是1000 0000, 由于低位在前, 所以傳輸數(shù)據(jù)是0000 0001, 也就是0x01; 再如圖8第7個(gè)字符, 起始位低電平, 之后高低電平對(duì)應(yīng)數(shù)據(jù)為0011 0110, 最后一位是結(jié)束位高電平, 因此傳輸?shù)臄?shù)據(jù)是0110 1100, 即0x6C。同理可以分析出示波器上監(jiān)測(cè)的數(shù)據(jù)是0x 01 01 00 01 00 04 6C 09。

      PC端Modbus Slave從機(jī)模擬器監(jiān)測(cè)數(shù)據(jù)如圖9所示。其中Modbus Slave接收到的數(shù)據(jù)為0x 01 01 00 01 00 04 6C 09, 響應(yīng)功能碼后發(fā)送給主機(jī)的數(shù)據(jù)為0x 01 01 01 03 11 89, 并且接收到主機(jī)發(fā)送的報(bào)文含義為01H地址的從機(jī)執(zhí)行01H功能碼。具體執(zhí)行的命令為從起始地址0001H取0004H個(gè)線圈寄存器的當(dāng)前狀態(tài), 如圖9所示, 4個(gè)線圈寄存器的狀態(tài)分別為1100。因此Modbus Slave給主機(jī)回傳報(bào)文為01H地址從機(jī)執(zhí)行01H功能碼, 為主機(jī)返回01H字節(jié)數(shù)據(jù), 具體數(shù)據(jù)為03H(03H對(duì)應(yīng)二進(jìn)制00000011, 即4個(gè)線圈寄存器狀態(tài))。主機(jī)串口監(jiān)測(cè)數(shù)據(jù)如圖10所示。從圖10中可以看出, 主機(jī)發(fā)送數(shù)據(jù)為0x 01 01 00 01 00 04 6C 09, 收到的從機(jī)回傳數(shù)據(jù)為0x 01 01 01 03 11 89, 這表明主機(jī)完成報(bào)文的發(fā)送并且從機(jī)接收到報(bào)文作出回應(yīng), 并且主機(jī)成功接收到從機(jī)數(shù)據(jù)。

      為驗(yàn)證所設(shè)計(jì)的通訊方式的可靠性, 筆者進(jìn)行了針對(duì)不同功能碼的多次重復(fù)實(shí)驗(yàn), 發(fā)送與接收可靠性實(shí)驗(yàn)數(shù)據(jù)如表1所示。從表1中可看出, 在不同功能碼下, 主機(jī)可以成功的將發(fā)送報(bào)文幀發(fā)送給從機(jī), 而從機(jī)可準(zhǔn)確地接到主機(jī)發(fā)送的數(shù)據(jù), 并根據(jù)功能碼做出相應(yīng)的數(shù)據(jù)處理, 將處理后的數(shù)據(jù)發(fā)送給主機(jī), 最后主機(jī)也可以準(zhǔn)確的接收到從機(jī)發(fā)送的報(bào)文幀。這表明筆者設(shè)計(jì)的通訊方式可準(zhǔn)確、 穩(wěn)定地實(shí)現(xiàn)數(shù)據(jù)傳輸, 因此可以實(shí)現(xiàn)32位MCU與電機(jī)驅(qū)動(dòng)器的通訊進(jìn)而實(shí)現(xiàn)精確的控制電機(jī)的目的。

      圖9 PC端Modbus Slave從機(jī)模擬器監(jiān)測(cè)數(shù)據(jù) 圖10 串口監(jiān)測(cè)數(shù)據(jù)Fig.9 PC-side Modbus Slave slave simulator monitors data Fig.10 Serial port monitoring data

      表1 發(fā)送與接收可靠性實(shí)驗(yàn)數(shù)據(jù)

      5 結(jié) 語(yǔ)

      筆者所涉及到的通訊系統(tǒng)采用STM32作為主機(jī)、 ETD790P直流調(diào)速器作為從機(jī), 利用Modbus總線協(xié)議實(shí)現(xiàn)直流調(diào)速器與32位MCU的通訊, 從而實(shí)現(xiàn)32位MCU對(duì)交聯(lián)電纜生產(chǎn)線中電機(jī)的精確控制。采用筆者方法進(jìn)行通訊具有數(shù)據(jù)傳輸可靠穩(wěn)定、 可移植性高、 協(xié)議標(biāo)準(zhǔn)化程度高、 易于實(shí)現(xiàn)等特點(diǎn), 可廣泛應(yīng)用于交聯(lián)電纜生產(chǎn)線中32位MCU對(duì)電機(jī)的精準(zhǔn)控制。

      猜你喜歡
      個(gè)字符調(diào)速器報(bào)文
      基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
      CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
      淺析反駁類(lèi)報(bào)文要點(diǎn)
      ATS與列車(chē)通信報(bào)文分析
      四噴四折沖擊式水輪機(jī)調(diào)速器的設(shè)計(jì)及應(yīng)用
      數(shù)字直流調(diào)速器6RA70在紡絲牽伸系統(tǒng)中的應(yīng)用
      水輪機(jī)調(diào)速器的動(dòng)力學(xué)特性
      數(shù)字邏輯插裝閥調(diào)速器在大型貫流機(jī)組上的成功應(yīng)用
      不讓長(zhǎng)文件名成為“絆腳石”
      電腦迷(2014年8期)2014-04-29 07:37:40
      工資報(bào)表計(jì)算機(jī)軟件論述
      卷宗(2011年9期)2011-05-14 17:51:19
      玉田县| 阿拉尔市| 班戈县| 新宾| 宁阳县| 滦平县| 大余县| 红原县| 申扎县| 简阳市| 合江县| 张家界市| 明溪县| 佛教| 聂荣县| 琼中| 班玛县| 德化县| 甘孜| 吉安市| 子长县| 屏东市| 原平市| 革吉县| 张家川| 延庆县| 且末县| 杨浦区| 当阳市| 贵南县| 榆树市| 全椒县| 夹江县| 松溪县| 普格县| 九寨沟县| 吴堡县| 永顺县| 调兵山市| 康定县| 武鸣县|