一個(gè)完整的命令幀由控制字符STX(02H)、命令碼(CMD)、數(shù)據(jù)段、控制字符ETX(03H)以及和校驗(yàn)碼五部分組成。其中,和校驗(yàn)碼是從命令碼到控制字符ETX的所有字符的ASCII碼(十六進(jìn)制)相加所得結(jié)果的最低兩位數(shù)。
①PC機(jī)“讀”命令幀
“讀”命令幀由報(bào)文開(kāi)始標(biāo)志、命令碼、軟元件首地址、軟元件數(shù)據(jù)長(zhǎng)度(字節(jié)數(shù))、報(bào)文結(jié)束標(biāo)志以及和校驗(yàn)碼組成。
當(dāng)通信正確時(shí),PLC返回的應(yīng)答幀由報(bào)文開(kāi)始標(biāo)志、數(shù)據(jù)段、報(bào)文結(jié)束標(biāo)志以及和校驗(yàn)碼組成;通信出錯(cuò)時(shí),PLC應(yīng)答“NAK”。
②PC機(jī)“強(qiáng)制ON”命令幀
PC機(jī)“強(qiáng)制ON”命令幀由報(bào)文開(kāi)始標(biāo)志、命令碼(37H)、軟元件地址、報(bào)文結(jié)束標(biāo)志以及和校驗(yàn)碼組成。接收命令正常時(shí),PLC應(yīng)答“ACK”;接收出錯(cuò)時(shí),PLC應(yīng)答“NAK”。
③PC機(jī)“強(qiáng)制OFF”命令幀
PC機(jī)“強(qiáng)制OFF”命令幀由報(bào)文開(kāi)始標(biāo)志、命令碼(38H)、軟元件地址、報(bào)文結(jié)束標(biāo)志以及和校驗(yàn)碼組成。接收命令正常時(shí),PLC應(yīng)答“ACK”;接收出錯(cuò)時(shí),PLC應(yīng)答“NAK”。
④PC機(jī)“寫(xiě)”命令幀
PC機(jī)“寫(xiě)”命令幀由報(bào)文開(kāi)始標(biāo)志、命令碼、軟元件首地址、軟元件數(shù)據(jù)長(zhǎng)度(字節(jié)數(shù))、待寫(xiě)入軟元件的數(shù)據(jù)、報(bào)文結(jié)束標(biāo)志以及和校驗(yàn)碼組成,如圖3所示。寫(xiě)入正常時(shí),PLC應(yīng)答“ACK”;寫(xiě)入出錯(cuò)時(shí),PLC應(yīng)答“NAK”。

圖3 “寫(xiě)”命令幀
3 LabVIEW程序設(shè)計(jì)
在LabVlEW編程中,系統(tǒng)利用虛擬儀器軟件規(guī)范VISA(virtual instrument software architecture)實(shí)現(xiàn)串行通信。VISA本身并不具有儀器編程能力,它通過(guò)調(diào)用相應(yīng)設(shè)備驅(qū)動(dòng)器的高層應(yīng)用程序編程接口(API)進(jìn)行編程。
首先對(duì)端口進(jìn)行配置,然后發(fā)送“ENQ”信號(hào)給PLC請(qǐng)求通信,在收到PLC返回的“ACK”信號(hào)后,PC機(jī)連續(xù)對(duì)PLC進(jìn)行“讀取”和“寫(xiě)入”操作,通信結(jié)束后關(guān)閉端口。PC機(jī)和PLC串行通信的程序結(jié)構(gòu)如圖4所示。

圖4 串行通信程序流程圖
3.1 串口初始化
串口按照Fx系列PLC的標(biāo)準(zhǔn)通信參數(shù)進(jìn)行配置:①波特率為9 600 bit/s;②數(shù)據(jù)比特為7位;③奇偶校驗(yàn)方式采用偶校驗(yàn);④停止位為1位。
3.2 請(qǐng)求通信
開(kāi)始通信時(shí),PC機(jī)發(fā)送“ENQ”指令查詢PLC是否準(zhǔn)備好,同時(shí)也檢查PC機(jī)到PLC的連接是否正確。當(dāng)接收到字符后,若PLC處在RUN狀態(tài),則要等到本次掃描周期結(jié)束時(shí)才應(yīng)答;若PLC處在STOP狀態(tài),則馬上應(yīng)答。通信正常時(shí),PLC應(yīng)答“ACK”;通信出錯(cuò)時(shí),應(yīng)答“NAK”。
3.3 讀取PLC軟元件狀態(tài)
程序首先通過(guò)VISA寫(xiě)入節(jié)點(diǎn)發(fā)送命令字符“0”讀取PLC相應(yīng)軟元件的狀態(tài),然后VISA讀取節(jié)點(diǎn)獲得PLC返回?cái)?shù)據(jù)。寫(xiě)入和讀取的字符串都是十六進(jìn)制形式的。通過(guò)對(duì)讀取的字符串的拆分可獲得相應(yīng)軟元件每一位的狀態(tài),從而起到監(jiān)視PLC的作用。
3.4 數(shù)據(jù)寫(xiě)入PLC軟元件
程序首先通過(guò)VISA寫(xiě)入節(jié)點(diǎn)發(fā)送命令字符“1”對(duì)相應(yīng)的軟元件進(jìn)行寫(xiě)入操作,然后VISA讀取節(jié)點(diǎn)獲得PLC返回的應(yīng)答幀,若寫(xiě)入正確,PLC應(yīng)答“ACK”;若寫(xiě)入錯(cuò)誤,PLC應(yīng)答“NAK”。將寫(xiě)入數(shù)據(jù)傳送至PLC軟元件所對(duì)應(yīng)的地址,即可對(duì)軟元件的任意位進(jìn)行實(shí)時(shí)操作。數(shù)據(jù)寫(xiě)入PLC的程序框圖如圖5所示。

圖5 數(shù)據(jù)寫(xiě)入PLC的程序框圖
3.5 關(guān)閉串口
通信結(jié)束后,需使用VISA關(guān)閉節(jié)點(diǎn)關(guān)閉串口設(shè)備,否則程序會(huì)一直占用串口資源,導(dǎo)致其他程序無(wú)法訪問(wèn)。
4 結(jié)束語(yǔ)
以PC機(jī)和PLC分別構(gòu)成上、下位機(jī)的監(jiān)控系統(tǒng)在工業(yè)控制中應(yīng)用廣泛。本文通過(guò)編程口直接實(shí)現(xiàn)三菱PLC與PC機(jī)之間的串行通信,無(wú)需使用通信模塊,既節(jié)省了成本又簡(jiǎn)化了系統(tǒng),具有較大的實(shí)用價(jià)值。同時(shí),結(jié)合相關(guān)硬件,本文以LabVlEW作為開(kāi)發(fā)平臺(tái)設(shè)計(jì)了相應(yīng)的通信程序。實(shí)驗(yàn)結(jié)果表明,該通信方式方便簡(jiǎn)單、穩(wěn)定可靠,具有廣泛的應(yīng)用前景。










