本文下面主要介紹如何基于ppi協(xié)議實現(xiàn)兩個cpu之間進(jìn)行數(shù)據(jù)交換。
如何基于ppi協(xié)議實現(xiàn)兩個plc之間通信
第一、硬件連接
下圖是s7-200通信端口端口定義入下圖所示,ppi通信建立在485的硬件基礎(chǔ)上,因此需要制作一根至少包含一對雙絞線的屏蔽線,兩端分別接db9頭子的3腳和8腳,屏蔽層接db9頭子的金屬外殼。如果實在找不到雙絞線自己也可以找兩根單根線,自己絞一下,但是只限于臨時用正式產(chǎn)品不建議用。
兩個plc之間距離不能太遠(yuǎn),最好不要超過50米,如果超過的話最好使用中繼器,可以采購200配套的中繼器,也可以自己從某寶上買。
第二、合理分配cpu地址
ppi通信要求ppi網(wǎng)絡(luò)內(nèi)每個cpu具有不同地址,micro/win默認(rèn)為0,cpu默認(rèn)為2,因此建議主plc的地址設(shè)置為2,從plc地址依次設(shè)置為11、12、13……依次類推。
第三、正確初始化
通過初始化特殊寄存器smb30,將主cpu端口0配置為ppi主站模式,同時將數(shù)據(jù)緩存區(qū)清零。
配置時只需要關(guān)心最低兩位即可,即mm,其他的都配置成零就行了。2就是ppi主站模式。
從站配置成ppi從站模式,即配置成2。
第四、正確準(zhǔn)備數(shù)據(jù)
數(shù)據(jù)必須按照規(guī)定將相應(yīng)的數(shù)據(jù)填入緩沖區(qū),數(shù)據(jù)格式如下所示。例如數(shù)據(jù)發(fā)送緩沖區(qū)為vb200,那么vb200就是狀態(tài)字,不需要填寫,用于讀取指令執(zhí)行的狀態(tài)。vb201為目標(biāo)從站的地址,vb202到vb205時從站目標(biāo)地址,vb206為數(shù)據(jù)長度,如果是寫指令就是希望寫的字節(jié)數(shù),如果是讀指令就是希望讀回來數(shù)據(jù)的長度。vb207及以后是數(shù)據(jù)區(qū)。對netr,執(zhí)行netr指令后,從遠(yuǎn)程站讀到的數(shù)據(jù)放在這個數(shù)據(jù)區(qū)。對netw,執(zhí)行netw指令前,要發(fā)送到遠(yuǎn)程站的數(shù)據(jù)放在這個數(shù)據(jù)區(qū)。
第五、適時調(diào)用收發(fā)指令
ppi通信指令只有兩條,分別是:網(wǎng)絡(luò)讀和網(wǎng)絡(luò)寫,調(diào)用也很簡單,只需要指定本次讀寫己方的端口和數(shù)據(jù)緩沖區(qū)地址。
為了減少數(shù)據(jù)交換造成cpu資源的過度浪費,不建議每個循環(huán)周期都調(diào)用通信指令??梢愿鶕?jù)需要進(jìn)行指令調(diào)用,進(jìn)行數(shù)據(jù)交換,如果無法找到合適的指令觸發(fā)條件,可以使用定時器進(jìn)行周期調(diào)用。
為了保證數(shù)據(jù)的實時性,建議采用定時中斷,在中斷事件中調(diào)用通信指令。
第六,正確進(jìn)行指令調(diào)用
使用ppi通信注意事項
1、硬件接線時,db9頭子,3腳對3腳,8腳對8腳。線纜采用雙絞線,盡量使用屏蔽線,長度不要超過50m,超過50m需要使用中繼器。
2、千萬不要每個cpu掃描周期調(diào)用讀寫指令,否則會對過多占用cpu資源。