張立輝
(吉林建筑工程學(xué)院電氣與電子信息工程學(xué)院,長(zhǎng)春 130118)
PLC控制器憑借其可靠的穩(wěn)定性在工業(yè)控制領(lǐng)域倍受青睞,然而由于其數(shù)據(jù)處理和管理能力方面的不足,無法提供人機(jī)友好界面.針對(duì)這一問題,本文利用PLC的通訊能力將其與PC機(jī)相結(jié)合,基于LabVIEW軟件平臺(tái)設(shè)計(jì)了S 7-200與PC機(jī)的串行通訊系統(tǒng),并將其成功應(yīng)用于糧食干燥機(jī)自動(dòng)控制系統(tǒng)中.本系統(tǒng)不僅能及時(shí)的采集、存儲(chǔ)數(shù)據(jù),同時(shí)能對(duì)數(shù)據(jù)做相應(yīng)的處理,有效彌補(bǔ)了PLC數(shù)據(jù)處理能力弱的不足.
S 7-200 PLC提供了非常強(qiáng)大的通信功能,主要有PPI和自由口兩種通訊模式.PPI模式是專門為S 7-200設(shè)計(jì)的通信協(xié)議,一般不對(duì)外開放;而自由口通信模式則是完全對(duì)用戶開放的協(xié)議,其應(yīng)用方式主要有兩種,包括使用Modbus主從站協(xié)議(PC機(jī)作為主機(jī),PLC作為從機(jī))和使用完全由用戶自定義的協(xié)議.
Modbus網(wǎng)絡(luò)通信協(xié)議是MODICON公司于1979年開發(fā),它詳細(xì)定義了校驗(yàn)碼、數(shù)據(jù)序列等這些通信時(shí)數(shù)據(jù)交換的必要內(nèi)容.Modbus協(xié)議采用主從方式進(jìn)行通信,有效的避免了通信時(shí)各方爭(zhēng)用通信線路,即通信時(shí)PC機(jī)作為主機(jī),PLC作為從機(jī),只有主機(jī)才能夠主動(dòng)發(fā)送請(qǐng)求報(bào)文或請(qǐng)求幀,從機(jī)收到報(bào)文后返回響應(yīng)報(bào)文.
Modbus通信協(xié)議具有ASCII和RTU兩種數(shù)據(jù)傳輸方式.用戶選擇需要的模式,包括串口通信參數(shù),在配置每個(gè)控制器時(shí),在一個(gè)Modbus網(wǎng)絡(luò)上的所有設(shè)備都必須選擇相同的傳輸模式和串口參數(shù).以RTU模式通信,在消息中的每個(gè)8 Bit字節(jié)包含兩個(gè)4 Bit的十六進(jìn)制字符.這種方式的主要優(yōu)點(diǎn)是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)[1].因此,本文采用RTU模式的Modbus通信協(xié)議.RTU數(shù)據(jù)幀的基本結(jié)構(gòu)見表1.
表1 RTU數(shù)據(jù)幀的基本結(jié)構(gòu)
使用RTU模式,為避免數(shù)據(jù)在傳輸過程中出現(xiàn)錯(cuò)誤,消息包括了CRC方法的錯(cuò)誤檢測(cè)域.CRC域是兩個(gè)字節(jié),包含一16位的二進(jìn)制值.它由傳輸設(shè)備計(jì)算后加入到消息中.接收設(shè)備重新計(jì)算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同,則有誤.在Modbus通信協(xié)議中CRC的計(jì)算流程圖如圖1所示.
圖1 CRC計(jì)算流程
圖2 Modbus從站協(xié)議指令的梯形圖
PLC通信程序遵循Modbus協(xié)議,采用模塊化式結(jié)構(gòu),即由多個(gè)功能相對(duì)獨(dú)立的子功能組合實(shí)現(xiàn)完成系統(tǒng)總功能,這種模塊式結(jié)構(gòu)有利于系統(tǒng)升級(jí)和功能調(diào)整.
在S 7-200的程序中使用Modbus從站協(xié)議指令進(jìn)行編程.圖2為Modbus從站協(xié)議指令的梯形圖.在該梯形圖中,Mode輸入值用來選擇通信協(xié)議方式:數(shù)值1將端口0指定給Modbus協(xié)議,并啟用協(xié)議.
虛擬儀器技術(shù)(LabVIEW)是一種以圖形化編程語言(G語言)為基礎(chǔ)的系統(tǒng)開發(fā)軟件,軟件界面直觀形象,而且具有很多傳統(tǒng)硬件儀器無法比擬的優(yōu)勢(shì),近年來,在測(cè)試與測(cè)量、過程控制和工業(yè)自動(dòng)化、實(shí)驗(yàn)室研究與自動(dòng)化等方面都得到了廣泛的應(yīng)用.因此本文以LabVIEW為基礎(chǔ)實(shí)現(xiàn)上位機(jī)與S 7-200 PLC的通訊.
其串口通信模塊包括 Visa Configure Serial Port.VI,Visa Write.VI,Visa Read.VI及 Visa C1ose 等.其功能是完成串口通信初始化,實(shí)現(xiàn)串口通信[2].使用LabVIEW內(nèi)置函數(shù)模塊可很方便直觀的實(shí)現(xiàn)串口通訊,其設(shè)計(jì)程序如圖3和圖4所示.
(1)串口初始化.利用Visa Configure Serial Port vi節(jié)點(diǎn)設(shè)定串口的端口號(hào)、波特率等;
(2)讀/寫串口.利用VISA Write.vi節(jié)點(diǎn)和Visa Read.vi節(jié)點(diǎn)對(duì)串口進(jìn)行讀寫.由于在LabVIEW平臺(tái)上的串行通信過程中,發(fā)送和接收的數(shù)據(jù)格式是以字符串的格式組成的,字符串中的每個(gè)字符對(duì)應(yīng)ASCII字符;而采用ModbusRTU模式進(jìn)行通信時(shí),發(fā)送和接收的數(shù)據(jù)格式是直接的16進(jìn)制字符;
(3)Visa設(shè)置I/O緩沖區(qū)大小.利用Visa Set I/O Buffer Size vi節(jié)點(diǎn)來設(shè)置I/O緩沖區(qū)的大小;
(4)Visa清空I/O緩沖區(qū).利用Visa Flush I/O Buffer vi節(jié)點(diǎn)來清空由指定的I/O緩沖區(qū);
(5)關(guān)閉串口.利用VISA Close vi節(jié)點(diǎn)來將打開的串口關(guān)閉,停止所有讀寫操作.
圖3 LabVIEW程序前面板
圖4 LabVIEW程序框圖
ModbusRTU通信協(xié)議的CRC校驗(yàn)碼包含2 Bytes,即16位二進(jìn)制數(shù).發(fā)送設(shè)備計(jì)算CRC碼,放置于發(fā)送信息幀的尾部.接收信息的設(shè)備將利用接收到的信息重新計(jì)算CRC碼,比較計(jì)算得到的CRC碼是否與接收到的相符.如果兩者相符,表示接收的信息幀正確無誤,若不符,則表明接收的信息幀有誤.在進(jìn)行CRC碼計(jì)算時(shí)只需用到8個(gè)數(shù)據(jù)位,起始位、停止位,以及奇偶校驗(yàn)位都不參與CRC的計(jì)算,其校驗(yàn)程序如圖5所示.
圖5 CRC校驗(yàn)程序
本文給出的基于Modbus通信協(xié)議的上位機(jī)LabVIEW與PLC串行通信設(shè)計(jì)已得到了較好的應(yīng)用.在糧食干燥自動(dòng)控制系統(tǒng)中的實(shí)際運(yùn)行情況表明,通過采用Modbus通信協(xié)議的串行通信,保證了通信數(shù)據(jù)的安全、可靠和穩(wěn)定,同時(shí)做到了用戶界面友好和直觀,意義深遠(yuǎn),具有一定的應(yīng)用價(jià)值.
[1]馮向科,鄧 瑩.基于MODBUS RTU通信協(xié)議下的CRC算法實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2006(8):43.
[2]楊樂平,李海濤,楊 磊.LabVIEW程序設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2001:220-245.
吉林建筑大學(xué)學(xué)報(bào)2013年1期