色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 現(xiàn)場(chǎng)總線運(yùn)動(dòng)控制模塊的設(shè)計(jì)及其在PLC系統(tǒng)中的應(yīng)用

          現(xiàn)場(chǎng)總線運(yùn)動(dòng)控制模塊的設(shè)計(jì)及其在PLC系統(tǒng)中的應(yīng)用

          作者: 時(shí)間:2010-02-26 來源:網(wǎng)絡(luò) 收藏
          1.3.1 G代碼解碼
            接收到工作指令后,開始進(jìn)行G代碼的解釋執(zhí)行任務(wù)。G代碼存放在SD卡中,主器集成FAT文件,支持SD卡的文件讀寫。G代碼讀入后,逐行進(jìn)行第一遍掃描(即指令預(yù)處理),期間將注釋、空格、非法字符去除,小寫字符轉(zhuǎn)換成大寫,以方便解碼程序進(jìn)行識(shí)別。
          經(jīng)過預(yù)處理的G代碼指令逐行送入G代碼解碼程序,解釋程序再逐字檢查其是否為G代碼的指令字符,若是,則提取關(guān)鍵字的后續(xù)數(shù)值,作為該指令的操作數(shù),將其提取出來。其中用到了ANSI C的標(biāo)準(zhǔn)庫(kù)函數(shù)sscanf( )(位于stdio.h中),可以方便地提取字符串中指定的信息,支持類正則表達(dá)式的格式字符串,非常靈活。同時(shí)因?yàn)槭褂昧薃NSI C的標(biāo)準(zhǔn)庫(kù)函數(shù),程序移植簡(jiǎn)單。
          以下是G代碼解碼程序的部分代碼:
          /*遍歷整個(gè)s字符串,找到字符后,提取后續(xù)數(shù)字,并存入中間代碼中*/

          本文引用地址:http://cafeforensic.com/article/152081.htm


            其中,CurrentGMidCode是預(yù)定義的結(jié)構(gòu)體變量,用于保存每行G代碼提取出來的指令操作數(shù),結(jié)構(gòu)如下:

            提取到每行G代碼的關(guān)鍵信息后進(jìn)行相關(guān)處理,計(jì)算出每行代碼的起止坐標(biāo),將其通過SPI發(fā)送至NC芯片,控制電機(jī)。
          1.3.2 插補(bǔ)進(jìn)給
            電機(jī)的插補(bǔ)運(yùn)算、加減速和進(jìn)給控制,由一個(gè)獨(dú)立STM32微控制器完成,并稱為NC運(yùn)動(dòng)控制芯片。
            目前市場(chǎng)上的運(yùn)動(dòng)控制芯片主要是日本和歐美公司的專用ASIC和各數(shù)控廠家自行開發(fā)的FPGA芯片,雖然性能優(yōu)越,但價(jià)格不低。相對(duì)于使用ASIC芯片或FPGA芯片,完成同樣的任務(wù)使用MCU方案,硬件生產(chǎn)成本和開發(fā)成本均具有明顯優(yōu)勢(shì),當(dāng)STM32微控制器運(yùn)行在其最高頻率為72 MHz下時(shí),性能完全可以滿足中低端數(shù)控的要求。
            在三軸數(shù)控銑中,NC運(yùn)動(dòng)控制芯片需要實(shí)現(xiàn)三軸快速定位、二軸直線插補(bǔ)、二軸圓弧插補(bǔ)、三軸直線插補(bǔ)的功能。
            插補(bǔ)是在組成軌跡的直線段或曲線段的起點(diǎn)和終點(diǎn)之間,按一定的算法進(jìn)行數(shù)據(jù)點(diǎn)的密化工作,以確定一些中間點(diǎn),從而為軌跡控制的每一步提供逼近目標(biāo)。在本控制器中,選用逐點(diǎn)比較法作為基本的插補(bǔ)算法,具有算法簡(jiǎn)單高效、進(jìn)給速度均勻的特點(diǎn),同時(shí)支持三軸的直線插補(bǔ)[1],滿足本控制器對(duì)插補(bǔ)算法的要求。
            逐點(diǎn)比較直線插補(bǔ),就是執(zhí)行機(jī)構(gòu)每走一步都要和給定運(yùn)動(dòng)軌跡上相應(yīng)的坐標(biāo)值相比較,比較的結(jié)果稱為偏差函數(shù)F,根據(jù)偏差的正、負(fù)決定下一步的進(jìn)給方向。實(shí)質(zhì)上這是一種用階梯折線來逼近直線的一種算法,它與規(guī)定運(yùn)動(dòng)軌跡之間的最大誤差為1個(gè)脈沖當(dāng)量(每走1步移動(dòng)的距離)。因此,只要把脈沖當(dāng)量得足夠小,就可以達(dá)到運(yùn)動(dòng)精度的要求[2]。
          1.4 Modbus-RTU協(xié)議的實(shí)現(xiàn)
            Modbus-RTU是Modicon公司開發(fā)的一種通信協(xié)議。它采用主從應(yīng)答方式工作,其規(guī)范已公布在互聯(lián)網(wǎng)上,是一種在工業(yè)領(lǐng)域被廣為的真正開放的標(biāo)準(zhǔn)網(wǎng)絡(luò)通信協(xié)議。由于它具有免收許可費(fèi)用,易于集成不同的設(shè)備、簡(jiǎn)單易用、開發(fā)成本低、有著廣泛的知識(shí)資源支持等特點(diǎn),已經(jīng)成為一種公認(rèn)的通用工業(yè)標(biāo)準(zhǔn)。有了這個(gè)標(biāo)準(zhǔn),不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。Modbus PTU協(xié)議有2種傳輸模式:RTU模式和ASCII模式。其中RTU模式信息幀中的8 bit數(shù)據(jù)包括2個(gè)4 bit十六進(jìn)制字符,相對(duì)于ASCII模式,RTU模式表達(dá)相同的信息需要較少的位數(shù),且在相同通信速率下具有更大的數(shù)據(jù)流量。因此通常情況下,一般工業(yè)智能儀器儀表都是采用RTU模式的Modbus規(guī)約。
            Modbus-RTU協(xié)議以幀為通信的基本單位,幀格式為:地址碼1 B;功能碼1 B;數(shù)據(jù)區(qū)N B;錯(cuò)誤校驗(yàn)2 B CRC碼。
            本運(yùn)動(dòng)控制器在其RS-485接口上實(shí)現(xiàn)了Modbus-RTU協(xié)議,使用了當(dāng)今流行的免費(fèi)開源協(xié)議棧FreeModbus-RTU,從而保證了可靠的通信、節(jié)約了開發(fā)成本。
            FreeModbus是針對(duì)通用的Modbus協(xié)議棧在嵌入式系統(tǒng)中的實(shí)現(xiàn),其遵循BSD開放源代碼協(xié)議,并可以免費(fèi)用于商業(yè)用途,成熟可靠。移植FreeModbus到STM32處理器只需要少量資源,除了1個(gè)雙工USART外,只需要配置1個(gè)定時(shí)器進(jìn)行超時(shí)判斷即可。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉