• 
    

    
    

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

      ?

      基于3D打印機傳輸中斷解決方案的設計與實現(xiàn)

      2016-03-25 06:13:44劉晉金禹含步亞楠蘇臣
      微型電腦應用 2016年1期

      劉晉,金禹含,步亞楠,蘇臣

      ?

      基于3D打印機傳輸中斷解決方案的設計與實現(xiàn)

      劉晉,金禹含,步亞楠,蘇臣

      摘 要:PC機使用C#語言在VS2008的工具上編寫實現(xiàn)“數(shù)據(jù)處理”軟件。下位機選取STM32系列的STM32F103RBT6作為主控系統(tǒng),采用串口作為硬件傳輸媒介,下位機軟件設計借助uC/OS-III實現(xiàn)多任務并發(fā)處理。數(shù)據(jù)傳輸過程中傳輸中斷現(xiàn)象設計方法和解決方案,借助此方案很容易快速查詢出錯位置以及信息。經(jīng)過理論分析和軟硬件結合測試,不但證明了傳輸系統(tǒng)的可行性和實用性,而且還為降低研發(fā)成本、實用性、方便性構建數(shù)據(jù)傳輸系統(tǒng)提供了問題解決思路及參考價值。關鍵詞:C#;STM32;uC/OS-II;中斷傳輸

      0 引言

      3D打印機為保證打印出3D實體,宿主機應用軟件中導入由CAD[1](Computer Aided Design)生成的實物數(shù)據(jù),通過PC機所攜有的器件與下位機傳輸數(shù)據(jù),但有時會突發(fā)傳輸中斷現(xiàn)象,即文件數(shù)據(jù)傳輸?shù)街虚g位置時中斷傳輸。一旦發(fā)生此類問題,很難判斷是上位機還是下位機導致的中斷現(xiàn)象,如何能快速的發(fā)現(xiàn)出錯位置和信息值得深入研究和探討。

      1 系統(tǒng)設計理念

      本文3D打印系統(tǒng)[2]采用采用的是快速成型技術(Rapid Prototyping,RP)[3]之一的熔融沉積成型原理,通過分層加工和疊加成形相結合的方法,逐層打印材料來生成3D實體。官網(wǎng)提供的Cure軟件打開如圖1所示:

      圖1 3D實物圖原形

      后生成右圖的chinese__laser.gcode文件如圖2所示:

      圖2 3D實物圖數(shù)據(jù)

      左圖上的29 minutes說明打印此3D實物需要29分鐘,而下面的0.26 meter 2gram說明此實物的耗材需0.26米2克。右圖為3D實物圖的數(shù)據(jù)量,即515KB,從這點看3D打印系統(tǒng)傳輸速度不需過快。不少專家指出我國3D打印機落后原因[4]是成本過高、研發(fā)技術落后等,出于落后原因、實用性、方便性、以及對打印速度的要求為出發(fā)點與考慮,采用UART作為硬件傳輸媒介,即PC機利用C#語言編寫基于上位機的軟件,把3D圖像通過計算機輔助軟件生成“.gcode”文件進行讀、修改后通過串口發(fā)送給下位機(STM32)。

      此實物圖數(shù)據(jù)量為515KB,若采用串口通信機制的波特率為115200時,不過一分鐘就能把數(shù)據(jù)傳送完。根據(jù)官網(wǎng)提供的打印信息以及底層機械處理因素知,應采取校驗碼來控制傳輸狀態(tài)。下位機采用的是STM32系列的STM32F103RBT6作為主控制器,借助嵌入式實時操作系統(tǒng)最新版uC/OS-III,把接收到的數(shù)據(jù)通過消息、信號量等信息發(fā)送給特定任務進行后續(xù)處理。PC機與下位機發(fā)送大量的數(shù)據(jù)時,偶爾會遇到傳輸中斷現(xiàn)象,即PC機不再發(fā)送數(shù)據(jù)且下位機不再接收數(shù)據(jù)。剛開始傳輸出現(xiàn)此現(xiàn)象根據(jù)邏輯分析、程序運行過程是很容易查詢出錯位置,但過程中中斷,即數(shù)據(jù)傳輸中間時中斷,是很難判斷是PC機應用軟件問題還是下位機STM32原因造成的。

      針對此類問題,本系統(tǒng)在實驗過程中自定義調(diào)試方法,來快速查找出錯位置、糾正錯誤信息及時改正。通過多次試驗和對比驗證,證明大量數(shù)據(jù)傳輸過程中在無法判斷是上層PC機軟件還是下位機主控程序出錯導致傳輸中斷時,可參考此調(diào)試方法進行查找,為用戶快速查詢問題提供參考價值。

      2 基于系統(tǒng)的硬件設計

      因本系統(tǒng)以降低研發(fā)成本、實用性、方便性為出發(fā)點與考慮,研發(fā)出一套基于低價格的打印系統(tǒng),以便適用更多的用戶群體,所以下位機的選擇以低成本、實用性為考慮選取STM32為硬件開發(fā)平臺。該研發(fā)版采用ST公司32為ARM[5]處理器STM32F103RBT6:該芯片最大時鐘頻率是72MHZ;采用LQFP64封裝;內(nèi)置大容量存儲器包括128 KB 的高速Flash和20 K 的SRAM;豐富的外設接口;工作電壓2.0--3.6V、64 個I/O 接口、2 個USART、2 個I2C、2 個SPI、RTC 等。本系選取STM32主控的UART1作為硬件傳輸媒介,PA9為數(shù)據(jù)接收引腳、PA10為數(shù)據(jù)發(fā)送引腳。因uC/OS[6]任務運行起來的調(diào)度主要是通過周期時鐘中斷來實現(xiàn)的,每個時鐘節(jié)拍到來都會產(chǎn)生一次定時中斷,中斷后啟動調(diào)度器運行,運行就緒表中優(yōu)先級最高的任務。選取STM32主控的滴答定時器來產(chǎn)生周期中斷,并設置OS_CFG_TICK_RATE_HZ 宏定義為1000u,即1ms產(chǎn)生一次中斷。中斷產(chǎn)生后進入中斷服務程序SysTick_Handler(),退出時調(diào)度器進行調(diào)度。

      3 基于系統(tǒng)的軟件設計

      3.1文件傳輸格式

      文件并不能完全適用于下位機的處理,它不但有多余的注釋信息,而且還有大量的冗余空格和回車換行等。為減輕下位機負擔,提高系統(tǒng)整體工作效率,此時設計數(shù)據(jù)傳輸格式如圖3所示:

      圖3 數(shù)據(jù)傳輸格式生成的“.gcode”

      即以G、M、X字符標記一行數(shù)據(jù)命令的開始,中間以空格的形式隔開。PC機下發(fā)的每一行數(shù)據(jù)通過下位機STM32解析后,發(fā)出控制命令控制電機在X、Y、Z軸方向移動以及擠壓耗材。

      研究設計傳輸模式為:上位機應用軟件首先發(fā)送“傳輸頭”0x01,下位機接收到0x01,說明上位機準備傳輸數(shù)據(jù)。下位機從“程序初始化時建立的緩沖池”中申請存儲塊,申請成功回發(fā)0x06,未成功則發(fā)數(shù)據(jù)0x15。上位機接收到0x06后,則傳送一行字符,傳送完一行數(shù)據(jù)后下發(fā)數(shù)據(jù)0x00,下位機接收到0x00后說明一行數(shù)據(jù)傳送完成,下位機發(fā)消息到任務的內(nèi)建消息隊列中為后續(xù)解析以及向電機發(fā)控制命令等做準備。消息向內(nèi)建消息隊列發(fā)送成功,向上位機回發(fā)0x04,當上位機接收到0x04說明一行數(shù)據(jù)發(fā)送成功。若上位機未完成所有數(shù)據(jù)的傳輸,則上位機繼續(xù)發(fā)送“數(shù)據(jù)頭”0x01,為下次傳輸做準備。但是若上位機發(fā)送0x01,接收到的回響數(shù)據(jù)是0x15時,說明下位機從緩沖池中申請內(nèi)存塊沒成功,則上位機等待400ms左右,繼續(xù)發(fā)送0x01,直到接收到下位機的回響數(shù)據(jù)0x06后,才能繼續(xù)傳輸。PC機在向下位機STM32傳輸數(shù)據(jù)之前刪除無用的gcode文件數(shù)據(jù),不但使傳輸?shù)奈募?shù)據(jù)看起來簡單易懂,而且減輕了下位機STM32的負擔,更滿足此3D傳輸系統(tǒng)的簡潔、方便的特性。

      3.2 下位機軟件程序流程

      下位機數(shù)據(jù)流程設計如圖4所示:

      圖4 下位機數(shù)據(jù)流程設計圖

      根據(jù)圖4知,下位機有數(shù)據(jù)到來時直接促發(fā)中斷產(chǎn)生,為降低中斷服務時間,接收數(shù)據(jù)后直接發(fā)送消息到“Uart Process”任務的內(nèi)建消息隊列中。uC/OS-III中每一個任務都有其內(nèi)建的消息隊列,用戶可以不用通過外部的消息隊列而直接向任務發(fā)布消息。uC/OS-III對此的設計不但簡化了代碼,而且比使用外部消息隊列更加有效。“Uart Process”首先Pend消息,查詢到接收數(shù)據(jù)是0x01后,從設定的緩沖池中OSMemGet()申請存儲塊,成功后存儲接收到的數(shù)據(jù)。存儲完一行數(shù)據(jù)后把存儲塊的首地址當作消息Post到“Data Process”任務的內(nèi)建消息隊列中,“Data Process”任務首先Pend消息,然后把接收到一行的數(shù)據(jù)進行解析,給電機發(fā)控制信號,對電機方向、運動、擠壓耗材等進行控制,處理完后,把申請的存儲通過OSMenput()函數(shù)歸還到空存儲塊的鏈表上,以備后續(xù)使用。當下位機接收傳輸頭0x01后,若存儲塊中沒有空閑的存儲塊時,則上位機會繼續(xù)發(fā)送0x01,直到申請存儲塊成功后才可繼續(xù)接收數(shù)據(jù)。為使接收數(shù)據(jù)任務與數(shù)據(jù)處理任務并發(fā)的進行,初始化時設定緩沖池,考慮到每行數(shù)據(jù)約30幾個字符不等,所以設定16個存儲塊并且每個存儲塊設定為40個字節(jié),接收到“傳輸頭”后申請存儲,數(shù)據(jù)處理完后釋放。不但使用方便,而且避免了在嵌入式系統(tǒng)中使用malloc()函數(shù)和free()函數(shù)造成存儲空間碎片等問題。

      3.3 調(diào)試信息模塊設置

      通過以上對系統(tǒng)上位機與下位機的設計與實現(xiàn),整個系統(tǒng)開始運作時偶爾會出現(xiàn)傳輸中斷現(xiàn)象。如系統(tǒng)工作中對“圖1”傳輸實驗,此文件每行有30左右字節(jié)數(shù)據(jù),共17000多行。有時可成功傳輸,但偶爾會突發(fā)中斷傳輸現(xiàn)象,此中斷還不是出現(xiàn)在開始,而是出現(xiàn)在中間,即有可能出現(xiàn)完成5000或10000多行等傳輸后突然中斷傳輸。上位機不再下發(fā)數(shù)據(jù),下位機也不在處理數(shù)據(jù),這時是很難發(fā)現(xiàn)是上位機應用軟件還是下位機STM32造成了中斷。調(diào)試過程中捕捉錯誤現(xiàn)象是關鍵,并使這種偶然的bug能頻繁的出現(xiàn)為后續(xù)解決做準備。通過資料查詢以及借鑒學者的經(jīng)驗下,基于此不穩(wěn)定狀態(tài)的設置思路為圖5示:

      圖5 收發(fā)數(shù)據(jù)校驗流程圖

      在上位機應用軟件的編寫過程中設置兩個8字節(jié)大小的緩沖區(qū),收發(fā)數(shù)據(jù)顯示在如圖設置的PC機端的緩沖區(qū)內(nèi)。顯示8個字節(jié)數(shù)據(jù)后,當有新接收或發(fā)送的數(shù)據(jù)到來時,8字節(jié)數(shù)據(jù)往后移動,先前第二位置時現(xiàn)變成第一位、先前第三位置時現(xiàn)變成第二位,如此一來,先前第一位的數(shù)據(jù)舍棄,先前第八位置數(shù)據(jù)空缺,則新接收和發(fā)送的數(shù)據(jù)填補到第8個字節(jié)的位置上,以此形式重復的刷新。void buf_proc(char rch, char tch)//緩沖區(qū)處理

      {

      int i;

      for (i = 0; i < 7; i++)

      {

      buf_rx[i] = buf_rx[i + 1];//接收區(qū)數(shù)據(jù)后移

      buf_tx[i] = buf_tx[i + 1];//發(fā)送區(qū)數(shù)據(jù)后移

      }

      buf_tx[7] = tch;

      buf_rx[7] = rch;

      }以上程序為調(diào)試模塊中緩沖區(qū)的數(shù)據(jù)刷新。為方便觀察,若此時是接收數(shù)據(jù),則對應的發(fā)送數(shù)據(jù)處補“00”,若此時是發(fā)送數(shù)據(jù),則對應的接收數(shù)據(jù)處補“00”。以此通過最后收發(fā)數(shù)據(jù)的對比來查詢出錯位置及信息。

      4 系統(tǒng)的測試

      上位機應用軟件在PC機使用C#語言借助VS2008工具下實現(xiàn)的應用軟件,此截圖是傳送完一行數(shù)據(jù)后中斷的截圖,如圖6所示:

      圖6 系統(tǒng)傳輸中斷截圖

      為方便觀察,標記了需要觀察的位置,連續(xù)的兩個“30”是右上方正在發(fā)送文本框中的“0”的十六進制顯示。在發(fā)完第一行后,上位機發(fā)送數(shù)據(jù)“00”,即一行的結束標志,但下位機回發(fā)數(shù)據(jù)是06(內(nèi)存申請成功),上位機在發(fā)送01“傳輸頭”后,下位機沒回。對比來看,上位機發(fā)送一行結束標志“00”時,下位機應回發(fā)04但是下位機回發(fā)的是06。上位機沒有接收到字符“04”,所以顯示發(fā)送的行數(shù)仍然是“0行”。綜合來看,此次中斷的產(chǎn)生是下位機系統(tǒng)的回響數(shù)據(jù)有問題,即下位機系統(tǒng)造成了此次中斷的產(chǎn)生,更深一步說下位機程序在接收到“00”后的數(shù)據(jù)處理有問題。

      傳輸過程中突然中斷的截圖,如圖7所示:

      圖7 系統(tǒng)傳輸中斷截圖

      因此系統(tǒng)是按最初的設計進行編寫,并沒有按系統(tǒng)中規(guī)定的字符顯示形式進行編寫,為分析容易,只是顯示傳輸過程中部分校驗數(shù)據(jù)。即“1”,“4”,“6”,“15”這些數(shù)據(jù),且數(shù)據(jù)是單字符顯示。為方便觀察,特意用軟件將要觀察的地方標記出來。此截圖是正在發(fā)送完859行數(shù)據(jù)后突然傳輸中斷。分析接收和發(fā)送區(qū)的數(shù)據(jù)知,上位機在發(fā)送數(shù)據(jù)“1”(傳輸頭)后,下位機申請內(nèi)存成功返回數(shù)據(jù)“6”,最后接收到“4”,,此行發(fā)送正確,但當上位機發(fā)送準備傳輸數(shù)據(jù)“1”后,下位機回發(fā)“6”,內(nèi)存申請成功,后產(chǎn)生中斷。分析知,偶爾出現(xiàn)傳輸中斷原因是上位機產(chǎn)生的,即上位機接收到下位機內(nèi)存申請成功的標志,也就是下位機已準備好接受數(shù)據(jù),但是上位機不再操作。通過分析知,上位機在接收到“6”后沒有按程序設定的狀態(tài)運行,所以偶爾會在此處中斷傳輸,進一步解釋,上位機在從串口接收區(qū)讀取數(shù)據(jù)的延時時間以及在對接收數(shù)據(jù)“6”的判斷可能有問題,可從此處所提到的程序處查找問題。

      5 總結

      本文的3D打印系統(tǒng)以降低打印成本、簡單、方便、實用性、面向更多的用戶群體為出發(fā)點與考慮。PC 機借助C#編程語言設計實現(xiàn)上位機應用軟件,下位機采取STM32作為主控制平臺,借助uC/OS-III實現(xiàn)多任務的并發(fā)處理,采用串口作為數(shù)據(jù)硬件傳輸媒介。通過實踐和理論研究證明此方案的可行性,并對大量數(shù)據(jù)傳輸過程中偶爾中斷現(xiàn)象設計了解決方案。實驗證明通過此方案很容易查詢出錯原因是在上位機還是下位機,為構建數(shù)據(jù)傳輸系統(tǒng)提供了解決問題思路及參考價值。由于本文的3D打印系統(tǒng)正處于研發(fā)階段,一定還有不少缺陷和不足,需以后加以彌補和改正。也希望將來此傳輸系統(tǒng)能為我國3D打印機的發(fā)展提供思路以及參考價值。

      參考文獻

      [1] 王月圓,楊萍.3D打印技術及其發(fā)展趨勢[J].印刷雜志2013,04:10-12.

      [2] 古麗萍.蓄勢待發(fā)的3D打印機及其發(fā)展[J].技術前沿.2014:64-67.

      [3] 余冬梅,方奧,張建斌. 3D打印:技術和應用[J].知識園地.2013,06:6-11.

      [4] 王雪瑩. 3D 打印技術與產(chǎn)業(yè)的發(fā)展及前景分析[J].中國高新技術企業(yè).2012,26:3-5.

      [5] 宋亮,苗瓊.嵌入式實時操作系統(tǒng)μC/OS-II 串口通信的設計與實現(xiàn) [J].電子設計工程.2011,1:3-5 .

      [6] 逯玉蘭,燕振剛,李廣.uC /OS-III內(nèi)核在STM32F103VET6芯片上的移植研究[J].計算機與現(xiàn)代化.2014,09:132-136.

      Transmission Interruption of Solution Design and Implementation Based on 3D Printer

      Liu Jin, Jin Yuhan,Bu Yanan,Su Chen
      (College of Computer and Information Technology, Liaoning Normal University, Dalian 116081, China)

      Abstract:PC uses C# language to write software for data processing on VS2008. The lower computer selects STM32F103RBT6 from the STM32 series as the main control system, and uss the serial port as the hardware transmission medium. The design of lower computer software uses uC/OS-III to realize the multi-task concurrent processing. It also designs the method and solution scheme for the phenomenon of transmission interruption in the process of data transmission, and the error position and information can be checked out easily and fast by using it. Through theoretical analysis and a testing combining hardware and software, it not only proves the feasibility and practicability of the transmission system, but also provides solution and reference value for cost reducing, practicality, convenience construction of data transmission system.

      Key words:C#; STM32; uC/OS-III; Interrupt Transmission

      收稿日期:(2015.07.07)

      作者簡介:劉 晉(1964-),男,遼寧師范大學,計算機與信息技術學院,教授,研究方向:數(shù)字印刷技術與嵌入式系統(tǒng)設計,大連,116081金禹含(1987-),女,遼寧師范大學,計算機與信息技術學院,碩士研究生,研究方向:噴繪機系統(tǒng)設計,大連,116081步亞楠(1989-),男,遼寧師范大學,計算機與信息技術學院,碩士研究生,研究方向:數(shù)字印刷技術,大連,116081 蘇 臣(1990-),男,遼寧師范大學,計算機與信息技術學院,碩士研究生,研究方向:嵌入式系統(tǒng),大連,116081

      文章編號:1007-757X(2016)01-0060-03

      中圖分類號:TP393

      文獻標志碼:A

      宽城| 福安市| 德钦县| 富顺县| 永康市| 广昌县| 西和县| 巢湖市| 西安市| 彩票| 陈巴尔虎旗| 富锦市| 镇江市| 开封市| 科技| 崇仁县| 安岳县| 东海县| 滨州市| 寿宁县| 南投县| 双城市| 西贡区| 吐鲁番市| 张掖市| 永嘉县| 罗江县| 依安县| 中西区| 金堂县| 崇仁县| 大安市| 正定县| 天镇县| 大安市| 苗栗市| 鹰潭市| 黑山县| 寿光市| 瓦房店市| 彭州市|