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