PPI通信定義
PPI協(xié)議是西門子S7-200PLC之間交換信息的專用協(xié)議,PPI協(xié)議是一種點對點協(xié)議,它只定義了一次通信中的主從問題,西門子編程軟件與CPU進行通信同樣使用PPI協(xié)議,同樣下載時也要用PPI線纜。今天我們介紹如何基于PPI協(xié)議實現(xiàn)兩個CPU之間進行數(shù)據(jù)交換。
基于PPI協(xié)議實現(xiàn)兩個PLC的通信
第一步:硬件接線
圖片所示S7-200通信端口的端口定義。PPI通信基于485的硬件。因此,必須需要包含至少一對雙絞線的屏蔽電纜,并且兩端分別連接到DB9頭3腳和8腳。兩臺S7-200PLC距離不建議超過50米,如遇特殊情況在50米以上,需要使用配套的中繼器進行連接。


第二步:CPU地址分配
PPI通信要求PPI網(wǎng)絡(luò)中的每個CPU都有不同的地址,Micro/WIN默認為0,CPU默認為2,因此,建議將主PLC的地址設(shè)置為2,并將PLC地址設(shè)置為按順序設(shè)置為11,12,13,依此類推。
第三步:初始化
通過初始化特殊寄存器SMB30,將主CPU端口0配置為PPI主站模式,同時將數(shù)據(jù)緩存區(qū)清零。

配置時只需要看最低兩位即可,即mm,其他的都配置成零就行了。2就是PPI主站模式。

從站配置成PPI從站模式,即配置成2。

第四步:準備數(shù)據(jù)
必須根據(jù)規(guī)定將數(shù)據(jù)填入緩沖區(qū),數(shù)據(jù)格式如,如果數(shù)據(jù)傳輸緩沖區(qū)是VB200,則VB200是狀態(tài)字,不需要填寫,用于讀取指令執(zhí)行的狀態(tài)。VB201是目標從機的地址,VB202到VB205的時候是從機目標地址,VB206是數(shù)據(jù)長度,如果是寫命令則是你要寫的字節(jié)數(shù),如果是讀命令,你想要的讀取數(shù)據(jù)的長度。VB207是數(shù)據(jù)區(qū)域。對于NETR,在執(zhí)行NETR指令后,從遠程站讀取的數(shù)據(jù)將放在此數(shù)據(jù)區(qū)中。對于NETW,在執(zhí)行NETW指令之前,要發(fā)送到遠程站的數(shù)據(jù)放在該數(shù)據(jù)區(qū)中。

第五步、調(diào)用收發(fā)指令
PPI通信指令只有兩條,分別是:網(wǎng)絡(luò)讀和網(wǎng)絡(luò)寫,調(diào)用也很簡單,只需要指定本次讀寫己方的端口和數(shù)據(jù)緩沖區(qū)地址。

為了減少由數(shù)據(jù)交換引起的CPU資源的過度浪費,不建議每個周期調(diào)用通信命令??梢愿鶕?jù)需要調(diào)用指令來交換數(shù)據(jù)。如果找不到適當?shù)闹噶钣|發(fā)條件,可以使用定時器進行周期調(diào)用。為了保證數(shù)據(jù)的實時性,建議采用定時中斷,在中斷事件中調(diào)用通信指令。
第六步,指令調(diào)用

使用PPI通信注意事項
1)硬件接線時,DB9頭子,3腳對3腳,8腳對8腳。線纜采用雙絞線,盡量使用屏蔽線,長度不要超過50m,超過50m需要使用中繼器。
2)千萬不要每個CPU掃描周期調(diào)用讀寫指令,否則會對過多占用CPU資源。