三菱FX系列PLC在我國應(yīng)用十分廣泛,是目前國內(nèi)市場上占有率較高的幾種PLC機型之一。根據(jù)三菱公司提供的技術(shù)資料,在用戶系統(tǒng)中,要實現(xiàn)PLC與Pc機串行通信,一般還需購買FX-232-BD通信模塊;而PLC自身所帶的編程口在下載完程序后處于閑置狀態(tài)。因此,若能直接利用編程口實現(xiàn)PLC與PC機串行通信,將有利于節(jié)約資源。
PLC主要面向生產(chǎn)現(xiàn)場,具有使用方便、可靠性高和抗干擾能力強等優(yōu)點。PC機直接面向用戶,在數(shù)據(jù)處理、圖像顯示和打印報表等方面具有顯著優(yōu)勢。將PC機與PLC以上、下位機的形式聯(lián)合起來應(yīng)用,可以更有效地發(fā)揮各自優(yōu)勢,互補應(yīng)用上的不足。
LabVIEW是美國NI公司開發(fā)的一個基于計算機的虛擬儀器開發(fā)平臺。強大而靈活的儀器控制功能是LsbVIEW區(qū)別于其他編程語言的主要特點,LabVIEW在數(shù)據(jù)采集、儀器控制、過程監(jiān)控和自動測試等領(lǐng)域有著廣泛的應(yīng)用。
②PC機“強制ON”命令幀
PC機“強制ON”命令幀由報文開始標(biāo)志、命令碼(37H)、軟元件地址、報文結(jié)束標(biāo)志以及和校驗碼組成。接收命令正常時,PLC應(yīng)答“ACK”;接收出錯時,PLC應(yīng)答“NAK”。
③PC機“強制OFF”命令幀
PC機“強制OFF”命令幀由報文開始標(biāo)志、命令碼(38H)、軟元件地址、報文結(jié)束標(biāo)志以及和校驗碼組成。接收命令正常時,PLC應(yīng)答“ACK”;接收出錯時,PLC應(yīng)答“NAK”。
④PC機“寫”命令幀
PC機“寫”命令幀由報文開始標(biāo)志、命令碼、軟元件首地址、軟元件數(shù)據(jù)長度(字節(jié)數(shù))、待寫入軟元件的數(shù)據(jù)、報文結(jié)束標(biāo)志以及和校驗碼組成,如圖3所示。寫入正常時,PLC應(yīng)答“ACK”;寫入出錯時,PLC應(yīng)答“NAK”。
圖3 “寫”命令幀
3 LabVIEW程序設(shè)計
在LabVlEW編程中,系統(tǒng)利用虛擬儀器軟件規(guī)范VISA(virtual instrument software architecture)實現(xiàn)串行通信。VISA本身并不具有儀器編程能力,它通過調(diào)用相應(yīng)設(shè)備驅(qū)動器的高層應(yīng)用程序編程接口(API)進行編程。
首先對端口進行配置,然后發(fā)送“ENQ”信號給PLC請求通信,在收到PLC返回的“ACK”信號后,PC機連續(xù)對PLC進行“讀取”和“寫入”操作,通信結(jié)束后關(guān)閉端口。PC機和PLC串行通信的程序結(jié)構(gòu)如圖4所示。
圖4 串行通信程序流程圖
3.1 串口初始化
串口按照Fx系列PLC的標(biāo)準(zhǔn)通信參數(shù)進行配置:①波特率為9 600 bit/s;②數(shù)據(jù)比特為7位;③奇偶校驗方式采用偶校驗;④停止位為1位。
3.2 請求通信
開始通信時,PC機發(fā)送“ENQ”指令查詢PLC是否準(zhǔn)備好,同時也檢查PC機到PLC的連接是否正確。當(dāng)接收到字符后,若PLC處在RUN狀態(tài),則要等到本次掃描周期結(jié)束時才應(yīng)答;若PLC處在STOP狀態(tài),則馬上應(yīng)答。通信正常時,PLC應(yīng)答“ACK”;通信出錯時,應(yīng)答“NAK”。
3.3 讀取PLC軟元件狀態(tài)
程序首先通過VISA寫入節(jié)點發(fā)送命令字符“0”讀取PLC相應(yīng)軟元件的狀態(tài),然后VISA讀取節(jié)點獲得PLC返回數(shù)據(jù)。寫入和讀取的字符串都是十六進制形式的。通過對讀取的字符串的拆分可獲得相應(yīng)軟元件每一位的狀態(tài),從而起到監(jiān)視PLC的作用。
3.4 數(shù)據(jù)寫入PLC軟元件
程序首先通過VISA寫入節(jié)點發(fā)送命令字符“1”對相應(yīng)的軟元件進行寫入操作,然后VISA讀取節(jié)點獲得PLC返回的應(yīng)答幀,若寫入正確,PLC應(yīng)答“ACK”;若寫入錯誤,PLC應(yīng)答“NAK”。將寫入數(shù)據(jù)傳送至PLC軟元件所對應(yīng)的地址,即可對軟元件的任意位進行實時操作。數(shù)據(jù)寫入PLC的程序框圖如圖5所示。
圖5 數(shù)據(jù)寫入PLC的程序框圖
3.5 關(guān)閉串口
通信結(jié)束后,需使用VISA關(guān)閉節(jié)點關(guān)閉串口設(shè)備,否則程序會一直占用串口資源,導(dǎo)致其他程序無法訪問。
4 結(jié)束語
以PC機和PLC分別構(gòu)成上、下位機的監(jiān)控系統(tǒng)在工業(yè)控制中應(yīng)用廣泛。本文通過編程口直接實現(xiàn)三菱PLC與PC機之間的串行通信,無需使用通信模塊,既節(jié)省了成本又簡化了系統(tǒng),具有較大的實用價值。同時,結(jié)合相關(guān)硬件,本文以LabVlEW作為開發(fā)平臺設(shè)計了相應(yīng)的通信程序。實驗結(jié)果表明,該通信方式方便簡單、穩(wěn)定可靠,具有廣泛的應(yīng)用前景。
1 系統(tǒng)硬件構(gòu)成
三菱FX系列PLC自帶的編程口是RS-422接口,而PC機的串行通信口則是RS-232C接口,兩者之間需要通過SC-09適配電纜才能通信。不同設(shè)備上相同類型的通信接口的引腳定義可能存在差異。PC機與三菱FX系列PLC上的通信接口引腳定義如圖1所示。
圖1 接口引腳定義
RS-422和RS-232C是兩種不同標(biāo)準(zhǔn)的串行數(shù)據(jù)接口,兩者的主要差別在于信號傳輸方式不同。RS-232C標(biāo)準(zhǔn)利用信號線與公共地線之間的電壓差進行信號傳輸,采用的是單向傳輸方式;RS-422標(biāo)準(zhǔn)則是利用傳輸線之間信號的電壓差進行傳輸?shù)?,采用的是差動傳輸方式。SC-09電纜實現(xiàn)了這兩種不同的信號傳輸方式之間的轉(zhuǎn)換,其內(nèi)部電路如圖2所示。
圖2 SC-09電纜內(nèi)部電路
2 通信協(xié)議
PC機與PLC之間有兩種通信方式:一種是PC機具有優(yōu)先權(quán)而PLC始終被動響應(yīng)Pc機發(fā)來的命令;另一種則是PLC具有優(yōu)先權(quán),將命令發(fā)送給PC機,并接收來自PC機的響應(yīng)。本文采用的是前一種通信方式。
為實現(xiàn)Pc機與FX系列PLC編程口之間的通信,系統(tǒng)采用的是編程口專用通信協(xié)議。
2.1 控制字符
在PC機與FX系列PLC的串行通信中,數(shù)據(jù)是以幀為單位發(fā)送和接收的。其中,控制字符ENQ(05H)、ACK(06H)和NAK(15H)可以構(gòu)成單字符幀心1,其余的字符幀在發(fā)送或接收時都必須用控制字符STX(02H)和ETX(03H)分別作為該幀的起始標(biāo)志和結(jié)束標(biāo)志。
各控制字符的意義如表1所示。
表1 控制字符意義
2.2 命令代碼
PC機對PLC相應(yīng)軟元件的操作是通過“0”、“1”、“7”、“8”四個命令符來實現(xiàn)的,各命令符的含義如表2所示。
表2 命令字符含義
2.3 命令幀
一個完整的命令幀由控制字符STX(02H)、命令碼(CMD)、數(shù)據(jù)段、控制字符ETX(03H)以及和校驗碼五部分組成。其中,和校驗碼是從命令碼到控制字符ETX的所有字符的ASCII碼(十六進制)相加所得結(jié)果的最,低兩位數(shù)。
①PC機“讀”命令幀
“讀”命令幀由報文開始標(biāo)志、命令碼、軟元件首地址、軟元件數(shù)據(jù)長度(字節(jié)數(shù))、報文結(jié)束標(biāo)志以及和校驗碼組成。
當(dāng)通信正確時,PLC返回的應(yīng)答幀由報文開始標(biāo)志、數(shù)據(jù)段、報文結(jié)束標(biāo)志以及和校驗碼組成;通信出錯時,PLC應(yīng)答“NAK”。