精品视频一区二区观看,欧美一区二区视频三区,日韩一区二区三区不卡,欧美中文综合在线视频,欧美综合网亚洲综合网

      ? ? ? ?

      咨詢電話

      ENGLISH0755-88840386
      新聞中心

      咨詢電話

      0755-88840386
      您的位置:首頁 > 學(xué)習(xí)專題 > 專業(yè)技術(shù)專題 > 工業(yè)自動(dòng)化稱重儀表>詳情頁

      導(dǎo)軌式多通道數(shù)字稱重儀表設(shè)計(jì)

      發(fā)布時(shí)間:2020-10-12 09:39:07 |來源:網(wǎng)絡(luò)轉(zhuǎn)載

      0前言
      在工業(yè)自動(dòng)化領(lǐng)域,很多應(yīng)用場(chǎng)合都需要用到稱重儀表,例如包裝輸送帶、分選機(jī)、充絨機(jī)等。這些應(yīng)用一般都以PLC為主要控制設(shè)備,要求同時(shí)采集多只稱重傳感器的重量數(shù)據(jù),進(jìn)行相關(guān)控制。傳統(tǒng)的方案是將每只稱重傳感器輸出的mV級(jí)信號(hào)經(jīng)過模擬放大器變送到0~5V或者4~20mA的工業(yè)標(biāo)準(zhǔn)過程信號(hào),再輸入到PLC的模擬量模塊,進(jìn)行AD轉(zhuǎn)換處理。這種處理方式容易存在信號(hào)處理精度不高,溫度特性不佳,以及成本造價(jià)較高等缺點(diǎn),而且由于PLC處理速度的限制,在進(jìn)行數(shù)字濾波等軟件處理方面往往受到限制。采用市面上單通道的數(shù)字儀表又存在著占用空間大、安裝接線復(fù)雜、循環(huán)讀取效率低等問題。本文采用了多通道數(shù)字儀表的設(shè)計(jì)思路,可以用ModbusRTU命令一次讀取全部所有通道的稱重?cái)?shù)據(jù),很好地解決了上述問題。
      1功能概述
      本設(shè)計(jì)的多通道數(shù)字稱重儀表釆用多顆獨(dú)立高精度ASADC,內(nèi)置PGA,直接對(duì)稱重傳感器輸出的mV信號(hào)進(jìn)行AD轉(zhuǎn)換,并經(jīng)ARM內(nèi)核的32位處理器進(jìn)行數(shù)字濾波、標(biāo)度變換,配有RS485總線接口,支持標(biāo)準(zhǔn)ModbusRTU協(xié)議,將多通道稱重?cái)?shù)據(jù)上傳到PLC做控制處理。為了在實(shí)際應(yīng)用時(shí)方便調(diào)試,本設(shè)計(jì)采用了輕觸式按鍵和點(diǎn)陣式液晶屏做菜單式人機(jī)交互界面。為了適應(yīng)工業(yè)現(xiàn)場(chǎng)環(huán)境,設(shè)計(jì)時(shí)考慮了各種軟硬件抗干擾措施,以滿足EMC/EMI要求。為了安裝方便,釆用工業(yè)作者簡(jiǎn)介:李樹偉(1967—),男,工程師;    收稿日期:標(biāo)準(zhǔn)導(dǎo)軌式安裝方式。本儀表以4通道為基本設(shè)計(jì),可接4個(gè)通道擴(kuò)展模塊,每個(gè)擴(kuò)展模塊可擴(kuò)充2通道,最多支持12通道。支持通過SD卡進(jìn)行固件升級(jí)。
      2硬件電路設(shè)計(jì)
      本儀表硬件電路部分由MCU及存儲(chǔ)器、SD卡接口、LCD顯示及按鍵、ADC、電源、通信等部分組成。
      2.1MCU及存儲(chǔ)、LCD顯示及按鍵部分
      如圖1所示,MCU選用意法半導(dǎo)體公司32位ARMCorte-M3內(nèi)核處理器STM32F103RCT6。存儲(chǔ)部分外掛了I2C接口的EEPROM,用于存儲(chǔ)儀表工作參數(shù)。LCD釆用的是串行接口的12864液晶模塊,背光釆用PWM控制。按鍵部分是普通的并行10輸入。
      2.2ADC部分
      ADC部分如圖2所示。稱重傳感器通常采用應(yīng)變式原理,為全橋式惠斯通電橋形式,輸出信號(hào)一般都是mV級(jí)。以常見的2.0mV/V靈敏度傳感器為例,在橋路激勵(lì)電壓為10V時(shí),其滿量程輸出為:
      2mV/Vxl0V=20mV
      數(shù)字稱重儀表傳感器橋壓和ADC參考電壓通常采用比例式接法以降低橋壓波動(dòng)對(duì)轉(zhuǎn)換結(jié)果的影響。為了簡(jiǎn)化電源設(shè)計(jì),傳感器橋路激勵(lì)電壓選擇5V,這樣傳感器滿度輸出會(huì)降低到:
      2mV/Vx5V=10mV
      在這個(gè)數(shù)量級(jí)的輸入電壓條件下,為了實(shí)現(xiàn)十萬分之一以上的測(cè)量分辨率,要求ADC有良好

      MCU、存儲(chǔ)及顯示按鍵部分圖

      圖1MCU、存儲(chǔ)及顯示按鍵部分

      的無噪聲分辨率等指標(biāo)。本設(shè)計(jì)選用CS5532ASZO在參考電壓為5V的情況下,其滿量程差分輸入范圍為:
      VFS=5000mV/(64x2)=39mV
      按無噪聲分辨率19位算,當(dāng)輸入39mV滿量程電壓時(shí),能得到約26萬無噪聲碼。滿量程輸入10mV算,無噪聲AD碼為6.5萬。通過后續(xù)做進(jìn)一步的軟件濾波能實(shí)現(xiàn)10萬以上的有效輸出AD碼。采用4片CS5532獨(dú)立并行采集,保證了通道之間的同步和獨(dú)立有效的輸出速率。

      ADC部分圖

      圖2ADC部分

      2.3電源部分
      電源部分如圖3所示。本儀表采用直流24V供電,經(jīng)電源隔離模塊后,輸出電壓為6V,輸出功率為6W。儀表工作電源分為數(shù)字和模擬兩部分。數(shù)字部分電源有5V和3.3V,分別由6V電壓經(jīng)兩路LDO降壓得到,供CPU等外圍電路使用;模擬電源部分是由6V電壓經(jīng)過每個(gè)通道各自的專用LDO降為5V,提供給各通道的ADC芯片及傳感器擠壓。
      2.4通訊部分
      通信接口為RS485,支持ModbusRTU協(xié)議。通信和MCU相互電氣隔離,有效提高了抗干擾能力,如圖4所示。

      電源部分圖

      3軟件設(shè)計(jì)
      軟件開發(fā)環(huán)境采用IARforSTM32O通過STM32配置工具STM32CubeMX設(shè)置好10口,中斷,定時(shí)器等資源后,直接可以生成IARI程文件基本配置代碼,直接打開即可進(jìn)一步進(jìn)行編程。
      我們釆用傳統(tǒng)的模塊式編程方式。主要功能模塊有外設(shè)初始化模塊、參數(shù)初始化模塊、顯示及按鍵處理模塊、濾波及標(biāo)度變換模塊、主循環(huán)調(diào)度模塊、ADC完成中斷處理子程序、定時(shí)器中斷服務(wù)子程序、通信中斷服務(wù)子程序和參數(shù)及SD卡存儲(chǔ)服務(wù)函數(shù)等。其中主循環(huán)模塊包括ADC標(biāo)度變換,數(shù)字量10,通信協(xié)議解析等。下面重點(diǎn)介紹主要的幾個(gè)模塊功能。

      通信部分圖

      3.1參數(shù)初始化模塊
      儀表參數(shù)存儲(chǔ)在MCU內(nèi)部的Flash及外掛的EEPR0M芯片中,互為備份。開機(jī)時(shí),對(duì)參數(shù)存儲(chǔ)進(jìn)行CRC校驗(yàn)。發(fā)現(xiàn)錯(cuò)誤,則用正確的拷貝覆蓋,提高了參數(shù)存儲(chǔ)的可靠性。
      參數(shù)定義如下:

      參數(shù)編輯格式定義表

      所有參數(shù)統(tǒng)一采用32位整型定義,簡(jiǎn)化了讀寫及存儲(chǔ)函數(shù)。預(yù)定義參數(shù)編號(hào):
      enum|//參數(shù)索引定義
      paramDisplayRangeHigh,paramBaudRate,paramDeviceld,
      constTParamDefParamDef[]={//參數(shù)定義舉例{10000,esNumber,-99999,99999,2},
      {3,esList,0,4,0],
      11,esNumber,1,254,0}
      h
      constunsignedchar*sBaudRate]]=|
      “1200bps”,
      “2400bps”,
      “4800bps”,
      “9600bps”,
      “19200bps”
      上面的例子定義了3個(gè)參數(shù):
      (1)參數(shù)paramDisplayRangeHigh:索引值0,出廠默認(rèn)值100.00,編輯方式為數(shù)值方式,最小值-999.99,最大值999.99,小數(shù)點(diǎn)位置2。
      (2)參數(shù)paramBaudRate:索引值1,出廠默認(rèn)值3,即9600bps,編輯方式為下拉列表方式,最小值0即1200bps,最大值4即19200bps,無小數(shù)點(diǎn)。
      (3)參數(shù)paramDeviceld:索引值2,出廠默認(rèn)值1,編輯方式為數(shù)值方式,最小值1,最大值254,無小數(shù)點(diǎn)。
      3.2顯示模塊
      顯示模塊負(fù)責(zé)測(cè)量狀態(tài)下顯示各個(gè)通道的測(cè)量值,參數(shù)編輯狀態(tài)下顯示及編輯參數(shù)等。針對(duì)12864點(diǎn)陣液晶模塊,我們提取了幾個(gè)不同點(diǎn)陣的字模,含有26個(gè)英文字母、0~9數(shù)字及常用的符號(hào),主要函數(shù)有:
      voidDisplay8x8Pattern(unsignedcharx,unsignedchary,unsignedchar*pattern);//在指定位置顯示一個(gè)8x8點(diǎn)陣圖像
      voidDisplay16x12Pattern(unsignedcharx,unsignedchary,unsignedchar*pattern);//在指定位置顯示一個(gè)16x12點(diǎn)陣圖像voidDisplay24xl6Pattem(unsignedcharx,unsignedchary,unsignedchar*pattern);//在指定位置顯示一個(gè)24x16點(diǎn)陣圖像voidDisplayChar(ICharStylestyle,unsignedcharx,unsignedchary,unsignedcharch);//在指定位置顯示一個(gè)特定點(diǎn)陣的字符voidDisplayStrNull(TPattemStylestyle,unsignedcharx,unsignedchary,unsignedcharch);//在指定位置顯示一個(gè)特定點(diǎn)陣的以NULL結(jié)尾的字符串
      voidDisplaylnt32(TPattemStylestyle,unsignedcharx,unsignedchary,int32val);〃在指定位置顯示-•個(gè)特定點(diǎn)陣的32位整數(shù)c點(diǎn)陣類型由以下定義:
      typedefenum|ps8x8,psl6xl2,ps24xl6\TPattemStyle;
      3.3按鍵處理模塊
      按鍵處理模式包括SET鍵處理、移位鍵處理、功能鍵處理等。按鍵值索引定義:
      enum|kbSET,kbSHIFT,kbINC,kbDEC,kbFl,kbF2,kbLONG_SET,kbLONG_SHIFT|:
      在10ms定時(shí)器中斷服務(wù)子程序里做按鍵掃描,每次中斷記錄一次某個(gè)或者某兩個(gè)按鍵的按壓時(shí)間及抬起時(shí)間,作為按鍵消抖處理,并識(shí)別單鍵或者組合鍵鍵值。鍵值為-1的時(shí)候,表示無任何按鍵按下。主循環(huán)根據(jù)鍵值進(jìn)入到對(duì)應(yīng)的按鍵功能處理函數(shù)。
      3.4濾波及標(biāo)度變換模塊
      這是稱重儀表的主要功能模塊。稱重儀表的數(shù)據(jù)處理流程為:AD原碼讀出-初始軟件濾波一系統(tǒng)校準(zhǔn)(內(nèi)碼值規(guī)格化)T用戶標(biāo)定(多段標(biāo)定、零點(diǎn)跟蹤、去皮)T顯示值。軟件濾波要根據(jù)實(shí)際應(yīng)用選擇合適的濾波算法,常見的有加權(quán)滑動(dòng)平均值濾波、一階滯后濾波、消抖濾波等。成熟的產(chǎn)品會(huì)有幾種濾波方法的組合應(yīng)用,并且可由用戶在現(xiàn)場(chǎng)自由調(diào)整濾波參數(shù)6良好的軟件濾波會(huì)有效增加系統(tǒng)的無噪聲分辨率。系統(tǒng)校準(zhǔn)是為了消除儀表模擬鏈路的離散誤差,將內(nèi)碼值統(tǒng)一規(guī)格化到一個(gè)特定值。本儀表在輸入標(biāo)準(zhǔn)滿量程的2mV/V時(shí),通過系統(tǒng)校準(zhǔn)為1000000(一百萬)內(nèi)碼。'用戶標(biāo)定是指標(biāo)定到用戶所實(shí)際使用的傳感器量程。用戶標(biāo)定釆用多段線性變換的方法,即根據(jù)輸入的內(nèi)碼值,查表得到對(duì)應(yīng)的線性方程,進(jìn)而計(jì)算出工程量綱值PV。
      零點(diǎn)跟蹤是為了消除傳感器在零點(diǎn)附近的輸出漂移。我們采用的方法是,當(dāng)PV值處于零點(diǎn)跟蹤區(qū)域內(nèi),維持穩(wěn)定一段時(shí)間,則將此時(shí)的零點(diǎn)重設(shè)為0。去皮即是人為的顯示值遷移。
      3.5主循環(huán)調(diào)度模塊
      主循環(huán)依次判斷各個(gè)中斷服務(wù)子程序設(shè)置的各種信號(hào)量標(biāo)志,并進(jìn)入到相應(yīng)的服務(wù)函數(shù)中。例如按鍵標(biāo)志、定時(shí)器標(biāo)志、ADC讀取完成標(biāo)志、串行口接收到一幀數(shù)據(jù)標(biāo)志等。本設(shè)計(jì)沒有運(yùn)行RTOS,UCOS等嵌入式實(shí)時(shí)操作系統(tǒng),要防止一些占用時(shí)間較長(zhǎng)的函數(shù)過程影響主循環(huán)的調(diào)度效率。例如全屏幕的顯示刷新會(huì)影響儀表對(duì)ModbusRTU通訊命令的及時(shí)響應(yīng)。將此類函數(shù)里面耗時(shí)的循環(huán)過程拆分成在主循環(huán)里面多次調(diào)度逐步執(zhí)行的函數(shù)片是一個(gè)可行的辦法。
      3.6ADC完成中斷處理子程序
      CS5532配置成連續(xù)采集模式。完成一次AD轉(zhuǎn)換后,芯片會(huì)拉低SDO引腳指示AD數(shù)據(jù)已經(jīng)準(zhǔn)備好讀出。將SDO引腳連到MCU的某外部中斷引腳,即可以用中斷方式及時(shí)讀取ADC結(jié)果。中斷方式要配置成下降沿觸發(fā),并在讀取結(jié)束,中斷返回時(shí),清除中斷標(biāo)志,置位ADC完成標(biāo)志位,供主循環(huán)查詢處理。
      3.7定時(shí)器中斷服務(wù)子程序
      定時(shí)器中斷主要用于按鍵掃描、顯示刷新、ModbusRTU幀中斷處理、通用異步延時(shí)等。
      3.8通訊中斷服務(wù)子程序
      STM32片上USART提供接收和發(fā)送中斷。我們?cè)O(shè)置兩個(gè)接收緩沖區(qū)和一個(gè)發(fā)送緩沖區(qū)。當(dāng)收到一個(gè)串行字符時(shí),會(huì)觸發(fā)接收中斷。在中斷服務(wù)函數(shù)里面,首先進(jìn)行本機(jī)地址判斷,是本機(jī)地址則初始化接收緩沖區(qū)指針,并將接收到的字節(jié)數(shù)
      據(jù)存入,指向下一個(gè)緩沖區(qū)位置并啟動(dòng)幀判斷定時(shí)器;否則即將緩沖區(qū)指針設(shè)為-1。當(dāng)幀判斷定時(shí)器溢出時(shí),在中斷服務(wù)子程序里面將緩沖區(qū)數(shù)據(jù)拷貝到工作區(qū),并置位幀接收標(biāo)志,供主循環(huán)處理。
      發(fā)送數(shù)據(jù)時(shí),將要發(fā)送的數(shù)據(jù)拷貝到發(fā)送緩沖區(qū),并設(shè)定要發(fā)送的數(shù)據(jù)長(zhǎng)度,然后將緩沖區(qū)首字節(jié)送給USART發(fā)送寄存器。當(dāng)一個(gè)字節(jié)發(fā)送完成后,會(huì)觸發(fā)發(fā)送完成中斷,在該中斷里面將發(fā)送指針加一,要發(fā)送的數(shù)據(jù)個(gè)數(shù)減一即可,直到發(fā)送完所有數(shù)據(jù)。ModbusRTU對(duì)幀定時(shí)有著嚴(yán)格的要求,要根據(jù)波特率調(diào)整幀定時(shí)時(shí)間。采用光耦做收發(fā)控制線隔離時(shí),要格外注意其轉(zhuǎn)換速率的影響。
      BootLoader我們要在BootLoader里面操作SD卡以支持通過SD卡升級(jí)固件,其流程如下:開機(jī)首先檢測(cè)SD卡內(nèi)是否有符合要求的固件升級(jí)文件,有的話讀出版本信息和當(dāng)前固件版本做比較,是新版本則詢問是否升級(jí),否則直接跳到App。
      ModbusRTU協(xié)議我們把儀表的通道測(cè)量值和運(yùn)行參數(shù)一一對(duì)應(yīng)到Modbus保持寄存器區(qū),支持多寄存器的連續(xù)讀寫操作,可與PLC等ModbusR-TU主站設(shè)備方便快捷交換數(shù)據(jù)。保持寄存器和內(nèi)
      部參數(shù)對(duì)應(yīng)舉例如表1所示。

      保持寄存器和內(nèi) 部參數(shù)對(duì)應(yīng)舉例表

      PLC通過發(fā)送一次ModbusRTU讀保持寄存器命令,即可讀出全部4組通道的測(cè)量值。
      PLC發(fā)送:010300000008(此處省略CRC校驗(yàn)碼)
      儀表回傳:010310CHICHICHICHICH2CH2CH2CH2CH3CH3CH3CH3CH4CH4CH4CH4(此處省略CRC校驗(yàn)碼)
      其中CHI~CH4測(cè)量值各占4個(gè)字節(jié),即32位。

       

      文章來源于網(wǎng)絡(luò)轉(zhuǎn)載,侵刪

      分享到