

摘要:在大規模、復雜的工業應用中,常常會用到不同的軟、硬件平臺,如何實現不同平臺的數據通信,是經常需要解決的問題。本文針對LabVIEW和西門子S7-200系列PLC這兩種被廣泛使用的軟、硬件平臺之間的數據通信問題,提出了一種基于Modbus RTU協議的解決方案,并闡述了具體的實現步驟。
關鍵詞:Modbus RTU,LabVIEW,PLC
中圖分類號: TP336 文獻標識碼:A 文章編號:1674-098X(2015)07(c)-0000-00
1.引言
LabVIEW是美國國家儀器有限公司提供的一套軟件開發平臺,廣泛應用于數據采集、監控、自動化測試測量領域[1]。
西門子S7-200系列PLC具有緊湊的設計、豐富的擴展能力、極高的可靠性、便捷的操作性和強大的指令系統,廣泛的應用于各種工業領域中。
Modbus是一種串行通信協議,它已經成為工業領域的通信協議標準,并且是現在工業電子設備之間常用的連接方式。Modbus傳輸協議定義了控制器可以識別和使用的信息結構,而無須考慮通信網絡的拓撲結構[2]。
Modbus具有兩種串行傳輸模式:ASCII和RTU。它們定義了數據如何打包、解碼的不同方式。本文闡述的主要內容是以Modbus RTU為基礎實現的LabVIEW與S7-200系列PLC之間的串口數據通信。
2.系統架構
本文以某企業數據采集與監控系統項目為背景。該項目中,上位機為工控機運行LabVIEW軟件,完成各個分系統的數據匯總和人機界面等功能;下位機PLC作為客戶端,負責向上位機提供采集的數據,同時接收上位機控制指令。
S7-200PLC的通信口是RS-485串行接口,工控機是RS-232串行接口,之間通過RS485/RS232轉換模塊連接。
3.軟件實現
本方案,PLC作為Modbus RTU的從站,通過自由口通信模式實現。
3.1配置RTU從站
Modbus RTU從站功能是通過指令庫中預先編好的程序功能實現的。從站指令庫只支持CPU上的通信端口0(Port0)。
從站指令庫包括初始化程序MBUS_INIT和響應主站請求子程序MBUS_SLAVE。
圖1 MBUS_INIT子程序
MBUS_INIT子程序可以用SM0.1調用,本方案配置如圖1所示,Mode 置1,Addr取2, Baud設為9600, Parity置2, Delay取默認值0, MaxIQ取默認值128, MaxAI 為32,MaxHold為1000, HoldStart設為“VB0”,使用庫存儲器命令為Modbus從站協議指令所要求的V存儲器分配一個起始地址。 Done 成功初始化后置1,Error在Done位為1時有效。
圖2 MBUS_SLAVE子程序
MBUS_SLAVE指令用于響應主站的請求,必須在每個循環周期都執行,用SM0.0調用,如圖2所示。
本方案,工控機端軟件采用LabVIEW 編寫,實現通信設置、數據處理等功能。
3.2Modbus RTU從站指令
上位機用到的Modbus從站協議功能:
3--讀單個/多個保持寄存器。功能3返回V存儲器的內容。保持寄存器在Modbus下是字類型,在一個請求中最多可讀120個字。
6--寫單個保持寄存器。功能6寫一個單個保持寄存器的值到S7--200的V存儲區。
16--寫多個保持寄存器。功能16寫多個保持寄存器到S7--200的V區。在一個請求中最多可寫120字。
3.3創建VISA串口通信
首先需要調用VISA Configure Serial Port完成串口參數的設置,包括串口資源分配、波特率、數據位、停止位、校驗位等。串口參數根據PLC設置的串口參數配置。串口號選擇與實際硬件連接的串口號。如圖3所示。
圖3 串口參數配置
初始化后,就可使用該串口進行數據收發。發送數據使用VISA Write,接收數據使用VISA Read。
在接收數據之前需要使用VISA Bytes at Serial Port查詢當前串口接收緩沖區中的數據字節數,使VISA Read要讀取的字節數等于緩沖區中的數據字節數。
數據收發格式:
<1> 寫PLC數據格式:
發送:串口號+PLC地址+功能碼+寄存器起始地址+寄存器數量+字節計數+設置內容+CRC校驗
響應:串口號+PLC地址+功能碼+寄存器起始地址+寄存器數量+CRC校驗
<2> 讀PLC數據格式:
發送:串口號+PLC地址+功能碼+寄存器起始地址+讀取數量+CRC校驗
響應:串口號+PLC地址+功能碼+字節計數+輸入狀態+ CRC校驗
圖4 讀PLC程序
如圖4所示,為上位機讀取PLC的地址為2,數據地址為VB100至VB109數據的LabVIEW程序。
3.4數據通信
本文主要闡述的是上位機LabVIEW軟件如何讀寫S7-200 PLC中V區的數據。PLC把上位機需要的所有數據先存儲到V區,在上位機需要時發送給上位機。上位機通過寫PLC的V區,待PLC響應V區數據時進而控制PLC。
4.總結
在大規模、復雜的工業應用中,常常會用到不同的軟、硬件平臺,如何實現不同平臺的數據通信,是經常需要解決的問題。本文針對LabVIEW和西門子S7-200系列PLC這兩種被廣泛使用的軟、硬件件平臺之間的數據通信問題,闡述了基于Modbus RTU協議的串口通信解決方案和具體的實現步驟。
參考文獻:
[1] Elliott C, et al. National instruments LabVIEW: a programming environment for laboratory automation and measurement[J] . Journal of the Association for Laboratory Automation, 2007, 12( 1) : 17 -24.
[2] 韓戰濤.西門子S7-200PLC編程與工程實例詳解.北京:電子工業出版社,2013.2