艾 博,許向陽,賈月明
(中國電子科技集團公司第四十五研究所,北京100176)
在數據采集和監視控制系統(SCADA)中,Modbus通常用來連接監控計算機和遠程終端控制系統,因其開放、集成方便等特點,如今成為工業領域全球最流行的通信協議[1-3]。為實現液氮補給裝置自動控制,需實時采集和監視液氮杜瓦罐內的溫度、液位及周邊氧氣濃度數據,并將采集結果發送給上位機。
本設計的數據采集平臺是基于RS-485總線和Modbus RTU協議,通過ADAM4117獲取各傳感器的模擬量電流值,實現實時監測液氮杜瓦罐內的溫度值、液氮液位值及裝置周邊的氧氣濃度值。同時,該平臺除具有完成數據采集、數據分析和處理功能外,還需具有提供數據采集接口和人機交互接口的功能。
圖1為液氮補給裝置數據采集平臺的設計示意圖。在本系統設計中ADAM4117作為系統核心,由ADAM4117的通道0、通道1和通道2獲取溫度傳感器、液位傳感器和氧氣傳感器實時反饋的數據,并通過串口Modbus RTU協議與上位機通信,在上位機軟件實現3個通道的數據采集、分析和處理。

圖1 數據采集系統設計示意圖
其中,ADAM4117是16位A/D、8通道的模擬量輸入模塊,可以采集電壓、電流等模擬量輸入信號,并且為所有通道提供了獨立的可編程的輸入范圍。在工業測量和監控的應用中,ADAM4117具有良好的性價比。它不僅能夠用于惡劣的環境中,而且還具有更加堅固型的設計。本系統中ADAM4117設置為采集4~20 mA電流量程,將電流信號轉換為RS-485信號,傳輸到上位機,Modbus協議讀到的數值為16進制的整數,數值從0~65 535,分別對應量程的上下限。例如,當量程為4~20 mA時,輸入的電流值為12 mA,則讀取到的Modbus數值為32 767。
Modbus是一種串行通訊協議,是由Modicon公司于1979年提出,允許多個設備連接在同一個網絡上進行通信。本文使用的RTU格式傳輸效率高,在相同速率下具有更大的數據流量,得到了廣泛認可與使用。Modbus通信是主從通信機制,主機將消息幀發送給從機,從機在接收到消息后,返回相應的應答幀,其主從關系如圖2所示[4]。

圖2 Modbus主從關系
Modbus RTU消息幀結構如表1所示[5]。本文中讀取ADAM4117輸入寄存器的電流值,使用0x04功能碼控制。

表1 Modbus RTU消息結構
上位機程序在VS2010環境中編寫,軟件實現流程如圖3所示。

圖3 上位機軟件實現流程圖
//串口控制塊
DCB dcb;/
/串口超時控制參數
COMMTIMEOUTS timeouts={100,1,500,1,100};
//串口名稱或設備路徑
m_hComm=CreateFile(szPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPE
N_EXISTING,0,NULL);
//獲取串口DCB設置參數
GetCommState(m_hComm,&dcb);
//設置波特率、位、停止位、校驗方式
dcb.BaudRate=9600;dcb.ByteSize=8;
dcb.StopBits=ONESTOPBIT;dcb.Parity=NOPARITY;
//設置DCB參數
SetCommState(m_hComm,&dcb);
//設置超時參數
SetCommTimeouts(m_hComm,&timeouts)。
ADAM4117的設備地址為0x01,通過04功能碼讀取輸入寄存器電流數據。8通道的模擬量輸入采集電流模擬量輸入信號,通過Modbus寄存器地址40001~40008來讀取CH0~CH7的數值。以讀取CH0為例,其請求指令如表2所示,返回幀如表3所示。

表2 讀取CH0請求指令
部分代碼如下:

主機向從機發送信息幀時,將CRC(Cyclic Redundancy Check)校驗碼一并發送。CRC校驗碼包含2個字節,即16位二進制。CRC校驗碼由主機計算,放置于發送信息的尾部。從機再重新計算接收到信息的CRC校驗碼,比較計算得到的CRC校驗碼是否與接收到的相符,如果兩者不相符,則表明出錯[6]。計算CRC16校驗碼的函數如下:


通過RS-485總線將ADAM4117連接到工控機的COM2口,讀取溫度傳感器、液位傳感器和氧氣濃度傳感器數值,上位機軟件界面如圖4所示。

圖4 軟件界面
打開上位機調試程序,對ADAM4117通訊進行測試,可以正確讀取ADAM4117返回的電流值,經過數據處理轉換為相對應的數值,如表4所示。

表4 采集的數據
本文針對芯片測試設備的液氮補給自動控制系統的數據采集需求,在VS2010環境下設計開發了基于Modbus RTU協議的數據采集平臺,實現上位機與ADAM4117數據采集模塊的Modbus協議通信,采集各傳感器的電流數據。經過對數據采集平臺的測試,軟件運行穩定、可靠,能夠實時采集讀取各傳感器反饋的數據。