1 系統(tǒng)硬件構(gòu)成
三菱FX系列PLC自帶的編程口是RS-422接口,而PC機(jī)的串行通信口則是RS-232C接口,兩者之間需要通過SC-09適配電纜才能通信。不同設(shè)備上相同類型的通信接口的引腳定義可能存在差異。PC機(jī)與三菱FX系列PLC上的通信接口引腳定義。
2 通信協(xié)議
PC機(jī)與PLC之間有兩種通信方式:一種是PC機(jī)具有優(yōu)先權(quán)而PLC始終被動(dòng)響應(yīng)Pc機(jī)發(fā)來的命令;另一種則是PLC具有優(yōu)先權(quán),將命令發(fā)送給PC機(jī),并接收來自PC機(jī)的響應(yīng)。本文采用的是前一種通信方式。
為實(shí)現(xiàn)Pc機(jī)與FX系列PLC編程口之間的通信,系統(tǒng)采用的是編程口專用通信協(xié)議。
2.1 控制字符
在PC機(jī)與FX系列PLC的串行通信中,數(shù)據(jù)是以幀為單位發(fā)送和接收的。其中,控制字符ENQ(05H)、ACK(06H)和NAK(15H)可以構(gòu)成單字符幀心1,其余的字符幀在發(fā)送或接收時(shí)都必須用控制字符STX(02H)和ETX(03H)分別作為該幀的起始標(biāo)志和結(jié)束標(biāo)志。
2.2 命令代碼
PC機(jī)對(duì)PLC相應(yīng)軟元件的操作是通過"0"、"1"、"7"、"8"四個(gè)命令符來實(shí)現(xiàn)的,各命令符的含義。
2.3 命令幀
一個(gè)完整的命令幀由控制字符STX(02H)、命令碼(CMD)、數(shù)據(jù)段、控制字符ETX(03H)以及和校驗(yàn)碼五部分組成。其中,和校驗(yàn)碼是從命令碼到控制字符ETX的所有字符的ASCII碼(十六進(jìn)制)相加所得結(jié)果的最低兩位數(shù)。
①PC機(jī)"讀"命令幀
"讀"命令幀由報(bào)文開始標(biāo)志、命令碼、軟元件首地址、軟元件數(shù)據(jù)長(zhǎng)度(字節(jié)數(shù))、報(bào)文結(jié)束標(biāo)志以及和校驗(yàn)碼組成。
當(dāng)通信正確時(shí),PLC返回的應(yīng)答幀由報(bào)文開始標(biāo)志、(電工之家http://www.pw0.cn)數(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)文開始標(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)文開始標(biāo)志、命令碼(38H)、軟元件地址、報(bào)文結(jié)束標(biāo)志以及和校驗(yàn)碼組成。接收命令正常時(shí),PLC應(yīng)答"ACK";接收出錯(cuò)時(shí),PLC應(yīng)答"NAK"。
④PC機(jī)"寫"命令幀
PC機(jī)"寫"命令幀由報(bào)文開始標(biāo)志、命令碼、軟元件首地址、軟元件數(shù)據(jù)長(zhǎng)度(字節(jié)數(shù))、待寫入軟元件的數(shù)據(jù)、報(bào)文結(jié)束標(biāo)志以及和校驗(yàn)碼組成,如圖3所示。寫入正常時(shí),PLC應(yīng)答"ACK";寫入出錯(cuò)時(shí),PLC應(yīng)答"NAK"。
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)求通信
開始通信時(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)
程序首先通過VISA寫入節(jié)點(diǎn)發(fā)送命令字符"0"讀取PLC相應(yīng)軟元件的狀態(tài),然后VISA讀取節(jié)點(diǎn)獲得PLC返回?cái)?shù)據(jù)。寫入和讀取的字符串都是十六進(jìn)制形式的。通過對(duì)讀取的字符串的拆分可獲得相應(yīng)軟元件每一位的狀態(tài),從而起到監(jiān)視PLC的作用。
3.4 數(shù)據(jù)寫入PLC軟元件
程序首先通過VISA寫入節(jié)點(diǎn)發(fā)送命令字符"1"對(duì)相應(yīng)的軟元件進(jìn)行寫入操作,然后VISA讀取節(jié)點(diǎn)獲得PLC返回的應(yīng)答幀,若寫入正確,PLC應(yīng)答"ACK";若寫入錯(cuò)誤,PLC應(yīng)答"NAK"。將寫入數(shù)據(jù)傳送至PLC軟元件所對(duì)應(yīng)的地址,即可對(duì)軟元件的任意位進(jìn)行實(shí)時(shí)操作。
3.5 關(guān)閉串口
通信結(jié)束后,需使用VISA關(guān)閉節(jié)點(diǎn)關(guān)閉串口設(shè)備,否則程序會(huì)一直占用串口資源,導(dǎo)致其他程序無法訪問。










