技術頻道

娓娓工業(yè)
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > VC下實現基于Modbus協議的DCS與遠程I/O系統通信

VC下實現基于Modbus協議的DCS與遠程I/O系統通信

時間:2008-09-03 10:03:00來源:ronggang

導語:?本文在分析Modbus協議及其通信原理的基礎上,結合工程實際,提出了一種在工業(yè)PC機上實現串行通信的方法,并在Visual C++6.0環(huán)境下開發(fā)了通信的應用程序,實現了基于Modbus協議的DCS與遠程I/O系統通信
摘 要:本文在分析Modbus協議及其通信原理的基礎上,結合工程實際,提出了一種在工業(yè)PC機上實現串行通信的方法,并在Visual C++6.0環(huán)境下開發(fā)了通信的應用程序,實現了基于Modbus協議的DCS與遠程I/O系統通信。 關鍵詞:Modbus協議; DCS; 遠程I/O; 串行通信 1 引言   近年來隨著工控領域自動化水平的大幅提高,許多廠、礦企業(yè)原有的控制系統陸續(xù)開始各種軟硬件的升級和改造。改造過程中,數據通信的合理、可靠關系到現場一系列大型設備的安全。由于整個工程往往由不同的單位分別完成,各部分之間的整合性必須得到保證,因此工業(yè)控制系統中常使用標準的協議進行接口通信。   Modbus協議 是一種工業(yè)通信和分布式控制系統協議,由MODICON公司出品,現已被眾多的硬件生產廠商所支持并廣泛應用于工業(yè)控制領域。DCS即集散控制系統,是以微處理器為核心的操作顯示集中、控制功能分散的工業(yè)控制系統。安全可靠的性能和成熟的使用技術使得DCS廣泛地應用于電力、冶金、石油化工、造紙、制藥等行業(yè)。   陜西某電廠改擴建工程包括兩部分系統:DCS,遠程I/O數據采集系統。這兩部分之間采用Modbus協議進行接口串行通信 。 2 Modbus通信協議   2.1 協議簡介   Modbus是一種主從網絡,允許一個主機(Master)和一個或多個從機(Slave)通信,支持兩種有效的傳送方式 :RTU(Remote Terminal Unit,遠程終端裝置)和 ASCII(美國標準信息交換碼)。兩種方式的命令格式是相同的,采用何種方式取決于對通信速度的要求。要求速度快的要用RTU方式,而對通信速度要求不高的可用ASCⅡ碼方式。協議的內容主要包括寄存器讀寫、開關量I/O等命令的格式。   本項目工程通信要求采用RTU方式,以下介紹、分析的命令格式均為標準的Modbus協議格式,所用的數據示例均引自工程中的應用實例。   2.2 主、從機命令格式   主機和從機之間采用查詢與應答方式進行通信,每一種查詢命令報文都對應著一種應答報文。主機發(fā)出的查詢命令報文格式如表1所示:   表1 主機查詢命令報文格式
  地址碼“02”表示主機要求查詢02號從機,功能碼“04”表示主機要求讀保持寄存器操作,起始數據“00 00”表示從第1個數據開始讀,數據長度“00 40”表示要求讀取64個模擬量數據。   CRC校驗碼:即循環(huán)冗余校驗碼,當本機計算得的CRC碼與接收到的CRC碼一致時 方認為命令校驗正確并進行操作,否則返回出錯信息或放棄此命令。具體參見下文2.3。   從機接收到表1所示命令時的正確信息應答報文格式如表2所示:   表2 從機應答命令報文格式
  表中“02、04”如前所述,“80”為從機發(fā)送數據的字節(jié)個數,即數據共發(fā)送了128個字節(jié)(64個數據);“00 10 … 01 3A”為第1~64個數據的高、低字節(jié)值。   從機應答命令中的地址碼、功能碼必須與主機查詢命令相同;命令中的模擬量數據必須按高位字節(jié)在前、低位字節(jié)在后的順序放置,而CRC碼與此相反,是低位字節(jié)在前、高位字節(jié)在后。   如果發(fā)生錯誤或異常,從機將返回主機出錯命令,格式如表3所示:   表3 從機返回出錯命令報文格式
  “84”是與主機查詢命令中功能碼“04”相對應的出錯功能碼,出錯碼“03”表明主機查詢命令中的“數據長度”項有錯,例如超出了最大數據量等。   在其他工程應用中,Modbus協議的各種功能碼、出錯碼的含義及其具體選擇、使用可參見參考文獻[1]。   2.3 錯誤檢測方法   標準的Modbus協議串行通信網絡采用兩種錯誤檢測方法。一是奇偶校驗,對每個字符都可用;二是幀檢測(CRC 或LRC),應用于整個命令報文。   RTU方式下幀檢測采用的是CRC校驗,方法是先調入一值是全“1”的16位寄存器,然后調用一過程對命令中連續(xù)的8位字節(jié)各當前寄存器中的值進行處理 。最終寄存器中的值,就是命令字符串中所有的字節(jié)都執(zhí)行之后的CRC校驗碼值。   下面給出Visual C++ 6.0下CRC校驗碼計算函數:   WORD CRC_Calc (PBYTE buf, UINT num)  ?。?   UINT i, j;   WORD temp, crc = 0xFFFF;   for ( i = 0; i < num; i ++){   temp = buf[ i ] & 0x00FF;   crc ︿= temp;   for ( j = 0; j < 8; j ++){   if ( crc & 0x0001)   {crc >>= 1;crc ︿= 0xA001;}   else crc >>= 1;  ?。?  ?。?   return crc;   }   計算得的CRC校驗碼添加到命令中時,必須按低位字節(jié)在前、高位字節(jié)在后的順序放置。例如,對表1所示的主機查詢命令調用計算函數得到其CRC碼為C9F1,則命令中最后兩個字節(jié)是F1、C9。 3 硬件構架   系統中通信網絡采用點對點方式,即網絡中只有一臺主機和一臺從機。將一臺工業(yè)PC機模擬PLC作為從機(遠程I/O數據采集系統),采用RS-485信號與DCS主機進行串口通信。通信的模擬量參數為#1機組217點、#2機組217點和公用部分48點,共計三個數據塊482點。   系統的硬件實現如圖1所示: [align=center] 圖1 系統硬件接口框圖[/align]   主機、從機之間裝有一對臺灣研華公司的ADAM4520轉換器,用于完成RS-232與RS-485信號的轉換,實現長距離的通信。另外,此轉換器還需要+24V直流電源。 4 軟件設計   4.1 軟件功能   主機通信子程序已內嵌在DCS系統中,以下介紹從機通信子程序的設計和開發(fā)。   從機操作系統為Win2000,程序設計平臺為VC++6.0 ,通信程序采用Win32的API函數讀、寫串口。   程序的界面設計主要包括:一個復選框,用于選擇通信的數據塊;一系列下拉列表,用于設置通信的串口參數;網絡狀態(tài)顯示控件。復選框的內容是#1、#2及公用部分三個數據塊,下拉列表主要包括設定波特率(9600bps)、起始位(1位)、數據位(7位)、奇偶校驗位(1位)、停止位(1位),有無奇偶檢驗(無)等,設置的內容均可以調整。   程序的功能設計請參見通信子程序以及解析應答模塊的流程圖,分別如圖2、3所示: [align=center] 圖2 從機通信子程序流程圖[/align]   從機通信子程序采取了多線程的工作方式。程序首先設置與DCS相同的串口參數以進行串口初始化,并按照DCS的要求選定通信的數據塊,之后創(chuàng)建一個偵聽串口事件線程CommWatchThread( ),由此線程監(jiān)測網絡狀態(tài)及主機發(fā)送來的命令消息等各種串口事件,再調用相應的函數對事件進行處理。 [align=center] 圖3 從機解析應答模塊流程圖[/align]   解析應答模塊共有兩個函數:RecvData( )、SendData( )。當RecvData( )函數成功讀取到主機的查詢命令后,首先對數據量和校驗碼進行校驗,如果有錯,則由SendData( )向主機返回相應的出錯命令報文;如果正確,則由SendData( )按照命令中要求的起始數據和數據量讀取數據庫,準備應答命令報文,并調用CRC計算函數計算出CRC碼添加到命令的最后兩個字節(jié)中,發(fā)送給主機。   由于通信系統網絡采用點對點方式且只進行模擬量數據的通信,所以從機程序的解析、應答模塊在對命令進行校驗的時候只進行了數據量和CRC校驗,省略了地址碼和功能碼等的校驗,以節(jié)省時間,提高通信的效率。   4.2 軟件特點   1、 采用VisualC++面向對象的設計方法編寫通信軟件程序,模擬PLC通信的原理在工業(yè)PC機上實現基于Modbus協議的串行通信,操作方便。   2、 采用多線程技術和消息驅動的工作方式,可以充分利用計算機系統的資源,避免瓶頸的產生,達到將系統進行合理組織的目的,有效地避免了網絡數據的沖突,使得數據通信安全可靠。 5 結束語   本文介紹了使用工業(yè)PC機通過Modbus協議實現DCS與遠程I/O系統進行串口數據通信的過程,采用VC開發(fā)的通信軟件已成功應用于陜西某電廠的改造工程,這種通信方式靈活方便,可靠性高,完全達到了預期的要求。了解Modbus協議是我們掌握PLC、智能儀表、單片機等通信機制的重要內容,對過程監(jiān)控、數據采集等系統中使用PC機進行串行通信的軟件開發(fā)本文不失為具有普遍的意義。 參考文獻:   [1] Modicon Modbus Protocol Reference Guide[EB/OL]. June 1996, MODICON, Inc.   [2] Mark Nelson著.瀟湘工作室譯.串行通信開發(fā)指南[M].北京:中國水利水電出版社,2000年   [3] 王常力,廖道文.集散型控制系統的設計與應用[M].北京:清華大學出版社,1993年.   [4] Davis Chapman著.駱長樂譯.學用Visual C++ 6.0.北京:清華大學出版社,1999年.

標簽:

點贊

分享到:

上一篇:功率模塊的過電流保護

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(m.u63ivq3.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業(yè)自動化與智能制造的全媒體“互聯網+”創(chuàng)新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號