谘詢電話

ENGLISH0755-88840386
新聞中心

谘詢電話

0755-88840386
您的位置:首頁 > K8凯发大酒店天生赢家專題 > 專業技術專題 > 工業自動化稱重儀表>詳情頁

導軌式多通道數字稱重儀表設計

發布時間:2020-09-27 09:26:30 |來源:網絡轉載

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

儀表存儲及顯示按鍵部分圖

圖1MCU、存儲及顯示按鍵部分

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

儀表ADC部分圖

圖2ADC部分

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

儀表電源部分圖

2.4通訊部分
通信接口為RS485,支持ModbusRTU協議。通信和MCU相互電氣隔離,有效提高了抗幹擾能力,如圖4所示。

儀表通信部分圖

3軟件設計
軟件開發環境采用IARforSTM32O通過STM32配置工具STM32CubeMX設置好10口,中斷,定時器等資源後,直接可以生成IARI程文件基本配置代碼,直接打開即可進一步進行編程。
我們釆用傳統的模塊式編程方式。主要功能模塊有外設初始化模塊、參數初始化模塊、顯示及按鍵處理模塊、濾波及標度變換模塊、主循環調度模塊、ADC完成中斷處理子程序、定時器中斷服務子程序、通信中斷服務子程序和參數及SD卡存儲服務函數等。其中主循環模塊包括ADC標度變換,數字量10,通信協議解析等。下麵重點介紹主要的幾個模塊功能。

3.1參數初始化模塊
儀表參數存儲在MCU內部的Flash及外掛的EEPR0M芯片中,互為備份。開機時,對參數存儲進行CRC校驗。發現錯誤,則用正確的拷貝覆蓋,提高了參數存儲的可靠性。
參數定義如下:

儀表參數定義表

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

保持寄存器和內 部參數對應舉例表

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

 

文章來源於網絡轉載,侵刪

分享到
網站地圖凱發K8凱發K8凱發K8凱發K8凱發K8凱發K8凱發K8凱發K8