摘 要:隨著生物工程規模化生產的發展,自動控制的理論和方法已經在生化工業中得到了很好的應用。以工業酶發酵數據采集器為課題,采集器以ATMEL公司的ATmega128為核心,簡要介紹了工業酶發酵數據采集器的設計組成,重點介紹了利用ATmega128的USART接口完成數據采集器與上位機通信的實現方法。通信協議采用了已被廣泛應用的Modbus協議,最終實現了對工業酶發酵罐系統可靠的遠程監控。
關鍵詞:ATmega128;USART;Modbus;工業酶發酵
Communication Technique of Industrial Enzyme Production Data Collector
Based on ATmega128
NIU Rui,LIU Fei
(College of Communications and Control Engineering,Jiangnan University,Wuxi,214122,China)
Abstract:With the development of biotechnological production on a large scale,the theory and technique on automatic control have been well used in biochemical industry.The research task of this paper is industrial enzyme fermentation data collector which use ATmega128 of ATMEL corporation as its core.This paper concisely introduces the composition of industrial enzyme fermentation data collector and mainly illuminate the technique that use USART interface of ATmega128 to build communications bewteen data collector and host-computer.Communication protocol of this system is Modbus protocol.Ultimately we achieve remote monitoring the system of industrial enzyme fermentation pots.
Keywords:ATmega128;USART;Modbus;industrial enzyme fermentation
1 引 言
近年來,我國的生物工程技術發展迅速,酶發酵過程是生物工程研究成果轉化為工業產品的重要環節。發酵的過程都是一個微生物生長代謝的復雜過程,發酵系統都體現出多參數、非線性、強耦合的特征。因此對發酵過程可靠的數據采集是對生物發酵系統進行分析的前提和基礎。ATMEL公司的AVR單片機,是一種高性能低功耗的8位單片機。由于優越的性價比,目前已廣泛應用于計算機外部設備、工業實時控制、儀器儀表、通訊設備、家用電器等各個領域。本文簡要介紹了以AVR的ATmega128為MCU設計開發的工業酶發酵數據采集器,并詳細說明了基于ATmega128的工業酶發酵數據采集器與上位機進行通信的一種實現方法。
2 數據采集器的總體要求及功能設計
(1) 輸入:采集器主要對生物酶發酵環境的PH值、溶氧量、發酵溫度、進入發酵罐的空氣流量、是否有泡沫等數據進行采集。需要采集的數據在進入單片機采集器之前,已經通過專用的前置測量變送模塊變換成了0~5 V的標準電壓量。ATmega128只需要對這些標準信號采集和處理。采集器一共設計了16個數字量輸入通道和4 個模擬量輸入通道。16個數字量輸入使用了ATmega128上與I2C總路線接口兼容的TWI(two wire interface)接口,并采集使用了I2C總線擴展芯片PCF8574進行端口擴展。 4 個模擬量輸入采集全部使用了ATmega128自身提供的10位精度的模數轉換器。
(2) 輸出:在工業酶發酵罐系統中,需要對控制算法的參數進行設定,需要對發酵過程PH值、溶氧量、發酵溫度等環境參數的給定值進行設定,還需要對一些開關量輸出控制信號,如:消泡蠕動泵開關、補料蠕動泵開關、循環泵開關、PH蠕動泵開關、加熱管開關、電磁閥等。
(3) 顯示:現場LCD使用AT320240進行動態顯示。
(4) 傳輸:上位機與單片機采集器之間采用主從查詢結構,半雙工通信方式,上位機作為主設備,單片機采集器作為從設備。主設備定時通過RS 232(距離15 m以內)或RS 485(1.5 km以內)按順序向從設備廣播從機地址,采集器處于監聽狀態,把接收到的地址與自身的地址相比較,若相同,就把采集到的最新的信號值通過總線傳給上位機。
采集系統示意圖如圖1所示。
圖1 采集系統示意圖
3 AVR單片機簡介
AVR單片機是1997年由ATMEL公司研發出的增強型內置FLASH的RISC(Reduced Instruction Set CPU) 精簡指令集高速8位單片機[1]。它采用流水線操作(Pipelining)和等長指令體系結構,在一個時鐘周期可以完成一條指令,同時采用了通用快速寄存器組的結構大量使用寄存器之間的操作,并使用了哈佛結構,使取指令和取數據可同時進行。
AVR單片機也是RISC架構的單片機,本項目所用的單片機ATmega128L是一款高性能低功耗AVR8位單片機,工作電壓2.7~5.5 V,工作頻率范圍0~16 MHz,實際的工作電壓為5 V。這款芯片有128 kB FLASH/4 kB E2PROM/4 kB SRAM,有JTAG和串口支持,64個通用 I/O 端口。
4 硬件接口及通信
4.1 ATmega128的UART接口[2]
工業酶發酵數據采集器,我們使用的是AVR系列中的ATmega128這個型號,其中與實現Modbus通信相關的接口是ATmega128片內集成的通用同步/異步串行接口USART,在ATmega128中一共配備了2個這種USART接口:USART0和USART1。USART在內部對寄存器進行了改進,功能上與普通的異步通信接口UART兼容。
ATmega128的USART單元中有五個寄存器:一個波特率寄存器UBRR、三個控制和狀態寄存器UCSRA、UCSRB、UCSRC和一個數據寄存器UDR。進行通信之前要對USART進行初始化,初始化通常要設定包括波特率、工作模式、幀格式、收發使能以及中斷使能等,都必須通過對USART寄存器進行設置才能完成。
UBRR是一個16位的寄存器,其中低12位有效,這12位包含了USART的波特率信息。
UCSRA,UCSRB,UCSRC是USART得以實現其功能的關鍵。
UCSRA、B、C定義如下:
UCSRC主要用來定義數據幀的格式;最低位為同步模式下,時鐘極性設置位。
USART有4種工作模式,分別為:正常異步模式、倍速異步模式、主機同步模式、從機同步模式。UCSRC的UMSEL位用來對同步和異步模式進行選擇,UCSRA的U2X位用來對倍速模式設置;另外,數據幀的結構由UCSRB和UCSRC的UCSZ2:0位、UPM1:0位和USBS位設定,它們分別定義了幀數據位長度、校驗模式和停止位位數。
UDR既是USART的發送數據緩沖寄存器又是接收數據緩沖寄存器,將數據寫入UDR,讀取UDR中的數據,即可完成數據的發送和接收。
4.2 用Modbus協議實現通信
Modbus協議[3]規定:
主設備查詢幀格式為:設備(或廣播)地址、功能代碼、要發送的數據、錯誤檢測域。
從設備回應幀格式為:回應功能代碼(傳輸錯誤將被修改)、要返回的數據、錯誤檢測域。
本設計使用的是Modbus協議的RTU傳輸模式,消息幀格式為:
起始位設備地址功能代碼數據CRC校驗結束符
T1-T2-T3-T48 b8 bn個8 b16 bT1-T2-T3-T4
使用RTU模式,消息發送至少要以3.5個字符時間為間隔。整個消息幀必須是一個連續的流傳輸。
上位機在發送給采集器的數據幀中會在功能代碼段指示出采集器將執行的功能。上位機下發的命令可以分為兩個大類:主機接收命令和主機發送命令。
上位機下發主機接收命令后,等待采集器返回數據。如果采集器接收后經過CRC校驗后沒有出錯,在應答幀的數據域中將放入上位機要求返回的參數值;如果校驗后發現出錯,就將功能代碼最高位改寫為1,以此使上位機知道出錯,這時應答幀的數據域中不包含任何參數返回值,上位機收到應答幀后將重發命令;如果超過規定時間上位機仍然沒有收到應答,上位機將進行超時重發。
上位機下發主機發送命令后,等待采集器作出響應,這種命令的應答幀中不包含任何參數返回值。如果采集器接收后經過CRC校驗后沒有出錯,將回應一個標準的應答幀告訴上位機命令已正確下發;如果校驗后發現出錯,就將功能代碼最高位改寫為1,以此使上位機知道出錯,上位機收到應答幀后將重發命令;如果超過規定時間上位機仍然沒有收到應答,上位機將進行超時重發。
4.2.1 主機接收命令
(1) 實時環境參數上傳使能
采集器接收到這個命令后,每5 s自動將生物酶發酵環境的PH值、溶氧量、發酵溫度、進入發酵罐的空氣流量、是否有泡沫等重要指標參數放入應答幀的數據域中發往上位機。
(2) 實時數據上傳停止
采集器接收到這個命令后,將停止環境參數實時自動上傳功能。
(3) 當前各開關狀態查詢
上位機查詢幀的數據域中會附帶一個或幾個開關對應的地址代碼。采集器接收到這個命令后,會按地址代碼將消泡蠕動泵開關、補料蠕動泵開關、循環泵開關、PH蠕動泵開關、加熱管開關、電磁閥等開關當前的狀態放入應答幀的數據域中發往上位機。
4.2.2 主機發送命令
(1) 軟件復位
采集器除了有自己復位系統外,還應該能夠對上位機下發的復位命令給出響應。采集器接收到這個命令后,將進行軟件復位及寄存器的初始化。
(2) 修改控制算法的參數值
上位機通過對實時數據的分析和計算如果發現當前使用的控制算法的模型參數值與實現環境存在誤差,就要對參數值進行修定。上位機查詢幀的數據域中會附帶新的參數值,采集器接收到這個命令后,將模型算法子程序的實參改為修定值。
(3) 修改酶發酵環境溫度給定值
采集器接收到這個命令后,就會根據當前要求,改變恒溫設定值。
(4) 修改發酶酵環境PH給定值
采集器接收到這個命令后,就會根據當前要求,改變PH設定值。
(5) 修改發酶酵環境溶氧量給定值。
5 程序設計及實現
作為下位機的數據采集器的Modbus通信接口模塊使用的是AVR單片機C語言編寫的。可以在PC上開發時通過ATmega128的JTAG口進行在線仿真,開發完成后也可以通過JTAG口下載到ATmega128的FLASH程序存儲器中。
5.1 ATmega128的USART0初始化
本設計使用的是USART0接口,工作模式為普通異步模式,波特率目標值9 600,實際值9 615,偏差0.2%,數據字符長度8 b,停止位1位,未使用硬件奇偶校驗。
接口初始化程序段如下:
5.2 數據發送和接收的實現
在完成通信功能時,使用了USART0的發送結束中斷和接收結束中斷,中斷向量號分別為19和21。USART0接收數據流程圖如圖2所示。
在控制通信時序時,使用了ATmega128定時計數器1[4]的比較匹配A中斷,中斷向量號為13。
當定時計數器中斷寄存器TIFR的OCF1A位變為1時,說明數據間的時間間隔已達到協議要求,一個完整的幀已經接收完成,程序進入定時計數器1的比較匹配A中斷子程序,對接收到的幀進行處理。流程圖如圖3所示。
由于已經使能了發送中斷,當UDR中有數據時,USART的發送緩沖器會自動完成發送。在發送中斷子程序執行發送時,要屏蔽接收中斷以防止UDR被意外修改出錯。
圖2 接收數據流程圖
6 結 語
Modbus通訊協議作為一種標準的工業控制網絡協議,是一種普遍通用的串行通信協議。工程上實現單片機與上位機通信的方法有很多。本文基于工程需要,
[CM(22]
詳細闡述了在8位AVR單片機ATmega128上實現[CM)]
Modbus通訊協議模塊(Modbus RTU模式),實現生物發酵數據采集器與上位機通信的一種方法。經現場測試,可以保證采集器與上位機監控器的可靠通信。本文所用的設計思想和方法對類似下位機通信模塊的設計具有一定的借鑒和參考價值。
圖3 中斷子程序流程圖
參 考 文 獻
[1]沈文,詹衛前.AVR單片機C語言開發入門指導[M].北京:清華大學出版社,2003.
[2]ATmega128/Atmega128L Datasheet:8 b Microcontroller with 128K bytes in-System Programmable Flash.
[3]Modbus通信協議[EB/OL].http://www.chinalong.net.
[4]曹國華,高藝,姜濤,等.高速嵌入式單片機原理與接口技術[M].北京:國防工業出版社,2004.
作者簡介 牛 睿 女,1983年出生,江南大學碩士研究生。主要從事單片機工業應用方面的研究。
劉 飛 男,1965年出生,江南大學教授,博士生導師,博士。主要從事復雜系統性能分析與綜合、先進控制理論與應用、工業系統監控等研究。