| 注冊(cè)| 產(chǎn)品展廳| 收藏該商鋪

行業(yè)產(chǎn)品

當(dāng)前位置:
上海亞津電子科技有限公司>>技術(shù)文章>>導(dǎo)軌式多通道數(shù)字稱(chēng)重儀表設(shè)計(jì)

產(chǎn)品分類(lèi)品牌分類(lèi)

更多分類(lèi)

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

閱讀:1587        發(fā)布時(shí)間:2017-11-28

  文章介紹了種導(dǎo)軌式多通道地磅數(shù)字稱(chēng)重儀表的硬件電路設(shè)計(jì)要點(diǎn)和軟件編程方法,提出了類(lèi)似產(chǎn)品設(shè)計(jì) 時(shí)的新思路,尤其是在模塊式通道擴(kuò)展方式、儀表相關(guān)參數(shù)定義等方面有自己到的想法。

  0.前言

  在工業(yè)自動(dòng)化域,很多應(yīng)用場(chǎng)合都需要用 到稱(chēng)重儀表,例如包裝輸送帶、分選機(jī)、充絨機(jī) 等。這些應(yīng)用般都以PLC為主要控制設(shè)備,要 求同時(shí)采集多只稱(chēng)重傳感器的重量數(shù)據(jù),進(jìn)行相 關(guān)控制。傳統(tǒng)的方案是將每只稱(chēng)重傳感器輸出的 mV信號(hào)經(jīng)過(guò)模擬放大器變送到0 ~5V或者4 ~ 20 mA的工業(yè)標(biāo)準(zhǔn)過(guò)程信號(hào),再輸入到PLC的模 擬量模塊,進(jìn)行AD轉(zhuǎn)換處理。這種處理方式容易 存在信號(hào)處理精度不高,溫度特性不佳,以及成 本造價(jià)較高等缺點(diǎn),而且由于PLC處理速度的限 制,在進(jìn)行數(shù)字濾波等軟件處理方面往往受到限 制。采用市面上單通道的數(shù)字儀表又存在著占用 空間大、安裝接線(xiàn)復(fù)雜、循環(huán)讀取效率低等問(wèn)題。 本文采用了多通道數(shù)字儀表的設(shè)計(jì)思路,可以用 Modbus RTU命令次讀取全部所有通道的稱(chēng)重?cái)?shù) 據(jù),很好地解決了上述問(wèn)題。

  1.功能概述

  本設(shè)計(jì)的多通道數(shù)字稱(chēng)重儀表采用多顆立 高精度ASADC,內(nèi)置PGA,直接對(duì)稱(chēng)重傳感器輸 出的m號(hào)進(jìn)行AD轉(zhuǎn)換,并經(jīng)ARM內(nèi)核的32 位處理器進(jìn)行數(shù)字濾波、標(biāo)度變換,配有RS485 總線(xiàn)接口,支持標(biāo)準(zhǔn)Modbus RTU協(xié)議,將多通道 稱(chēng)重?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í)考慮了各種軟硬件抗干擾措施, 以滿(mǎn)足EMC/EMI要求。為了安裝方便,采用工業(yè)標(biāo)準(zhǔn)導(dǎo)軌式安裝方式。本儀表以4通道為基本設(shè) 計(jì),可接4個(gè)通道擴(kuò)展模塊,每個(gè)擴(kuò)展模塊可擴(kuò) 充2通道,多支持12通道。支持通過(guò)SD卡進(jìn) 行固件升。

  2.硬件電路設(shè)計(jì)

  本儀表硬件電路部分由M⑶及存儲(chǔ)器、SD卡 接口、LCD顯示及按鍵、ADC、電源、通信等部 分組成。

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

  如圖1所示,MCU選用意法半導(dǎo)體公司32位 ARM Corte-M3 內(nèi)核處理器 STM32F103RCT6。存儲(chǔ) 部分外掛了 I2C接口的EEPR0M,用于存儲(chǔ)儀表 工作參數(shù)。LCD采用的是串行接口的12864液晶 模塊,背光采用PWM控制。按鍵部分是普通的并 行IO輸入。

  

云網(wǎng)客1.jpg

 

  2. 2 ADC部分

  ADC部分如圖2所示。稱(chēng)重傳感器通常采用 應(yīng)變式原理,為全橋式惠斯通電橋形式,輸出信 號(hào)般都是mV。以常見(jiàn)的2. 0 mV/V靈敏度傳 感器為例,在橋路激勵(lì)電壓為10 V時(shí),其滿(mǎn)量程 輸出為:

  

云網(wǎng)客2.jpg

 

  2 mV/V X 10 V =20 mV 數(shù)字稱(chēng)重儀表傳感器橋壓和ADC參考電壓通 常采用比例式接法以降低橋壓波動(dòng)對(duì)轉(zhuǎn)換結(jié)果的 影響。為了簡(jiǎn)化電源設(shè)計(jì),傳感器橋路激勵(lì)電壓 選擇5V,這樣傳感器滿(mǎn)度輸出會(huì)降低到:

  2 mV/V X5 V = 10 mV 在這個(gè)數(shù)量的輸入電壓條件下,為了實(shí)現(xiàn) 十萬(wàn)分之以上的測(cè)量分辨率,要求ADC有良好的無(wú)噪聲分辨率等指標(biāo)。本設(shè)計(jì)選用CS5532ASZ。 在參考電壓為5 V的情況下,其滿(mǎn)量程差分輸入范 圍為:

  VFS=5 000 mV/ (64 x2) =39 mV 按無(wú)噪聲分辨率19位算,當(dāng)輸入39 mV滿(mǎn)量程電壓時(shí),能得到約26萬(wàn)無(wú)噪聲碼。滿(mǎn)量程輸入 10 mV算,無(wú)噪聲AD碼為6.5萬(wàn)。通過(guò)后續(xù)做進(jìn) 步的軟件濾波能實(shí)現(xiàn)10萬(wàn)以上的有效輸出AD 碼。采用4片CS5532立并行采集,保證了通道 之間的同步和立有效的輸出速率。

  2.3電源部分

  電源部分如圖3所示。本儀表采用直流24 V 電,經(jīng)電源隔離模塊后,輸出電壓為6V,輸出 功率為6W。儀表工作電源分為數(shù)字和模擬兩部 分。數(shù)字部分電源有5 V和3. 3 V,分別由6 V電 壓經(jīng)兩路LDO降壓得到,CPU等外圍電路使 用;模擬電源部分是由6 V電壓經(jīng)過(guò)每個(gè)通道各自 的用LDO降為5 V,提給各通道的ADC芯片 及傳感器擠壓。

  

云網(wǎng)客3.jpg

 

  2.4通訊部分

  通信接口為RS485,支持Modbus RTU協(xié)議。 通信和MCU相互電氣隔離,有效提高了抗* 力,如圖4所示.

  

云網(wǎng)客6.jpg

 

  3.軟件設(shè)計(jì)

  軟件開(kāi)發(fā)環(huán)境采用IAR for STM32。通過(guò) STM32配置工具STM32CubeMX設(shè)置好IO 口,中 斷,定時(shí)器等資源后,直接可以生成IAR工程文 件基本配置代碼,直接打開(kāi)即可進(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ù)字量I0,通信協(xié)議解析等。下面重點(diǎn) 介紹主要的幾個(gè)模塊功能。

  3.1參數(shù)初始化模塊

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

  參數(shù)定義如下:

  

云網(wǎng)客7.jpg

 

  

云網(wǎng)客8.jpg

 

  上面的例子定義了3個(gè)參數(shù):

  (1)參數(shù) paramDisplayRangeHigh I 索引值 0, 出廠默認(rèn)值100.00,編輯方式為數(shù)值方式,小 值-999. 99,大值999.99,小數(shù)點(diǎn)位置2。

  (2 )參數(shù)paramBaudRate :索引值1,出廠默認(rèn) 值3,即9600bps,編輯方式為下拉列表方式,小值 0即1 200 bps,大值4即19 200 bps,無(wú)小數(shù)點(diǎn)。

  (3 )參數(shù)paramDeviceld :索引值2,出廠默 認(rèn)值1,編輯方式為數(shù)值方式,小值1,大值 254,無(wú)小數(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ù)有:

  void Display8x8Pattern (unsigned char x,unsigned char y,unsigned char

  * pattern) ; I丨在位置顯示個(gè)8x8點(diǎn)陣圖像

  void Display16x12Pattern (unsigned char x,unsigned char y,unsigned

  char * pattern) ; I丨在位置顯示個(gè)16x12點(diǎn)陣圖像

  void Display24x16Pattern (unsigned char x,unsigned char y,unsigned

  char * pattern) ; I丨在位置顯示個(gè)24x16點(diǎn)陣圖像

  void DisplayChar (TCharStyle style, unsigned char x,unsigned char y,

  unsigned char ch) ; I丨在位置顯示_個(gè)特定點(diǎn)陣的字符

  void DisplayStrNull (TPatternStyle style, unsigned char x, unsigned char

  y,unsigned char ch) ; I丨在位置顯示個(gè)特定點(diǎn)陣的以NULL

  結(jié)尾的字符串

  void DisplayInt32 (TPatternStyle style, unsigned char x,unsigned char y,int32 val) ; I丨在位置顯示個(gè)特定點(diǎn)陣的32位整數(shù)。 點(diǎn)陣類(lèi)型由以下定義:

  typedef enum {ps8x8,ps16x12,ps24x 16 } TPatternStyle ;

  3.3按鍵處理模塊

  按鍵處理模式包括SET鍵處理、移位鍵處理、 功能鍵處理等。按鍵值索引定義:

  enum {kbSET,kbSHIFT,kbINC,kbDEC,kbF1,kbF2,kbLONG SET,kbLONGSHIFT};

  在10 ms定時(shí)器中斷服務(wù)子程序里做按鍵掃 描,每次中斷記錄次某個(gè)或者某兩個(gè)按鍵的按 壓時(shí)間及抬起時(shí)間,作為按鍵消抖處理,并識(shí)別 單鍵或者組合鍵鍵值。鍵值為-1的時(shí)候,表示無(wú) 任何按鍵按下。主循環(huán)根據(jù)鍵值進(jìn)入到對(duì)應(yīng)的按 鍵功能處理函數(shù)。

  3.4濾波及標(biāo)度變換模塊

  這是稱(chēng)重儀表的主要功能模塊。稱(chēng)重儀表的 數(shù)據(jù)處理流程為:AD原碼讀出—初始軟件濾波— 系統(tǒng)校準(zhǔn)(內(nèi)碼值規(guī)格化)—用戶(hù)標(biāo)定(多段標(biāo) 定、零點(diǎn)跟蹤、去皮)—顯示值。軟件濾波要根據(jù) 實(shí)際應(yīng)用選擇合適的濾波算法,常見(jiàn)的有加權(quán)滑 動(dòng)平均值濾波、階滯后濾波、消抖濾波等。成 熟的產(chǎn)品會(huì)有幾種濾波方法的組合應(yīng)用,并且可 由用戶(hù)在現(xiàn)場(chǎng)自由調(diào)整濾波參數(shù)。良好的軟件濾 波會(huì)有效增加系統(tǒng)的無(wú)噪聲分辨率。系統(tǒng)校準(zhǔn)是 為了消除儀表模擬鏈路的離散誤差,將內(nèi)碼值統(tǒng) 規(guī)格化到個(gè)特定值。本儀表在輸入標(biāo)準(zhǔn)滿(mǎn)量 程的2mVZV時(shí),通過(guò)系統(tǒng)校準(zhǔn)為1000000 (百 萬(wàn))內(nèi)碼。用戶(hù)標(biāo)定是指標(biāo)定到用戶(hù)所實(shí)際使用 的傳感器量程。用戶(hù)標(biāo)定采用多段線(xiàn)性變換的方 法,即根據(jù)輸入的內(nèi)碼值,查表得到對(duì)應(yīng)的線(xiàn)性 方程,進(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ì)沒(méi)有運(yùn)行 RT0S,UCOS等嵌入式實(shí)時(shí)操作系統(tǒng),要防止些 占用時(shí)間較長(zhǎng)的函數(shù)過(guò)程影響主循環(huán)的調(diào)度效率。 例如全屏幕的顯示刷新會(huì)影響儀表對(duì)Modbus RTU 通訊命令的及時(shí)響應(yīng)。將此類(lèi)函數(shù)里面耗時(shí)的循 環(huán)過(guò)程拆分成在主循環(huán)里面多次調(diào)度逐步執(zhí)行的 函數(shù)片是個(gè)可行的辦法。

  3.6 ADC完成中斷處理子程序

  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)查詢(xún)處理。

  3.7定時(shí)器中斷服務(wù)子程序

  定時(shí)器中斷主要用于按鍵掃描、顯示刷新、 Modbus RTU幀中斷處理、通用異步延時(shí)等.

  3.8通訊中斷服務(wù)子程序

  STM32片上USART提接收和發(fā)送中斷。我 們?cè)O(shè)置兩個(gè)接收緩沖區(qū)和個(gè)發(fā)送緩沖區(qū)。當(dāng)收 到個(gè)串行字符時(shí),會(huì)觸發(fā)接收中斷。在中斷服 務(wù)函數(shù)里面, 行本機(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ù)。Modbus RTU對(duì)幀定時(shí)有著嚴(yán)格的要求, 要根據(jù)波特率調(diào)整幀定時(shí)時(shí)間。采用光耦做收發(fā)控 制線(xiàn)隔離時(shí),要格外注意其轉(zhuǎn)換速率的影響。

  

云網(wǎng)客9.jpg

 

  BootLoader我們要在BootLoader里面操作SD 卡以支持通過(guò)SD卡升固件,其流程如下:開(kāi)機(jī) 先檢測(cè)SD卡內(nèi)是否有符合要求的固件升文 件,有的話(huà)讀出版本信息和當(dāng)前固件版本做比較, 是新版本則詢(xún)問(wèn)是否升,否則直接跳到Aro。

  Modbus RTU協(xié)議我們把儀表的通道測(cè)量值和運(yùn)行參數(shù) 對(duì)應(yīng)到Modbus保持寄存器區(qū),支持多寄存器的連續(xù)讀寫(xiě)操作,可與PLC等ModbusR- TU主站設(shè)備方便快捷交換數(shù)據(jù)。保持寄存器和內(nèi)

  部參數(shù)對(duì)應(yīng)舉例如表1所示.

  PLC通過(guò)發(fā)送次Modbus RTU讀保持寄存器 命令,即可讀出全部4組通道的測(cè)量值。

  PLC 發(fā)送:01 03 00 00 00 08 (此處省略 CRC 校驗(yàn)碼)

  儀表回傳:01 03 10 CH1 CH1 CH1 CH1 CH2 CH2 CH2 CH2 CH3 CH3 CH3 CH3 CH4 CH4 CH4 CH4 (此處省略CRC校驗(yàn)碼)

  其中CH1 ~ CH4測(cè)量值各占4個(gè)字節(jié),即32位

收藏該商鋪

請(qǐng) 登錄 后再收藏

提示

您的留言已提交成功!我們將在第一時(shí)間回復(fù)您~
二維碼 意見(jiàn)反饋
在線(xiàn)留言