MPI通信最多15個CPU,包括MPI全局通訊,單邊通訊和雙邊通訊 MPI的全局通訊(300plc和300PLC): MPI的全局通訊一個包最多22個字節(jié),最多4個數(shù)據(jù)包(一個發(fā)送,一個接收算一個數(shù)據(jù)包) 硬件的配置(我們在一個項目里面組態(tài)三個CPU) 注意在組態(tài)的時候建立的是MPI通訊,不是DP通訊 PLC1里進(jìn)行硬件組態(tài):
在PLC2里進(jìn)行硬件組態(tài): 在PLC3里進(jìn)行硬件組態(tài): (和PLC2的CPU屬性設(shè)置相同,地址更改為3)
我們在PLC里面不用編輯通訊的程序,只需在PLC1里給MB0開始的22個字節(jié)賦值,在PLC2里給MB0開始的22個字節(jié)解壓使用即可。 程序的下載步驟: 一,先下載PLC1,使用編程電纜連接PLC1上的MPI接口 二,下載完P(guān)LC1的項目程序后,我們開始下載PLC1的全局通訊的通訊信息
三,下載PLC2,使用編程電纜連接PLC2上的MPI接口 四,下載完P(guān)LC2的項目程序后,我們開始下載PLC2的全局通訊的通訊信息 下載完成,連接上MPI通信電纜,測試通訊情況 MPI單邊通訊(300的PLC和300的PLC): 單邊通訊主要用在PLC與PLC之間的通訊,一個發(fā)送和接受最多76個字節(jié) 特別提示:因為通訊程序沒有必要每個掃描周期都運(yùn)行,所以我們可以把通訊程序放到OB35(循環(huán)中斷)里面 下面我們開始單邊通訊300對300的編程: 我們使用系統(tǒng)功能SFC68發(fā)送,SFC67接受 下面我們在PLC1里面進(jìn)行編程: SFC68發(fā)送數(shù)據(jù) REQ:等于“1”的時候發(fā)送數(shù)據(jù) C0NT:保持通訊,(是否使用這個SFC68進(jìn)行發(fā)送),常為“1” DEST_TD:通訊對方的地址 VAR_ADDR:對方接收數(shù)據(jù)的的緩存區(qū)(把要發(fā)送的數(shù)據(jù)放到對方的什么地方) SD:本地需要發(fā)送的數(shù)據(jù) REST_VAL:錯誤代碼 BUSY:完成位 上圖中SFC68的意思為,當(dāng)M1.0為“1”,且M1.1為“1”,時向MPI地址是3的PLC中發(fā)送M0.0開始的20個字節(jié),存到對方DB1.DB1000.0開始的20個字節(jié)中去。
SFC67接收數(shù)據(jù) 同樣在標(biāo)準(zhǔn)庫中找到SFC67:
SFC67接收信息 REQ:等于“1”的時候發(fā)送數(shù)據(jù) C0NT:保持通訊,(是否使用這個SFC68進(jìn)行發(fā)送),常為“1” DEST_TD:通訊對方的地址 VAR_ADDR:對方存儲數(shù)據(jù)的緩存區(qū)(我們要從地方的什么地方取數(shù)據(jù)) REST_VAL:錯誤代碼 BUSY:完成位 RD:本地存儲信息的的地址(把對方的數(shù)據(jù)拿過來以后放到自己這邊的什么地方) 上圖中SFC67的意思是:當(dāng)M1.4為“1”,且M1.5為“1”,時把MPI地址是3的PLC中DB1.DBX2000.0開始的76個字節(jié)存到自己PLC里從M100.0開始的76個字節(jié)中。 分別把PLC的程序下載到相應(yīng)的CPU內(nèi),連接MPI通訊電纜測試 MPI單邊通訊(300的PLC和200的PLC):
S7-300為主站,S7-200為從站 (MPI通訊也可以通過EM277進(jìn)行,EM277撥碼開關(guān)地址要和300編程時填寫的對方通訊地址相同) 和200的單邊通訊方式和300對300的通訊相同,都需要使用SFC67和SFC68,進(jìn)行數(shù)據(jù)的接收和發(fā)送。
上圖中的信息意思是:當(dāng)M200.0為“1”,且M200.1為“1”的時候把300PLC的以M0.0為開始的76個字節(jié)傳送到200PLC以V0.0為開始的76個字節(jié)中去。
上圖中的意思是:當(dāng)M200.4為“1”,且M200.5為1的時候讀取200PLC里以V1.0為開始的76個字節(jié)存放到300PLC的以M100.0為開始的76個字節(jié)里面。 特別提示:MPI的默認(rèn)通訊速率是187.5kbit/s,需要將200對應(yīng)接口的通訊速率也改成187.5kbit/s S7-300和200的通訊不只是只能傳遞V區(qū)的數(shù)據(jù) 如下圖程序:
當(dāng)M1.1為“1”的時候,CPU調(diào)用SFC68(X_PUT)把S7-300中的數(shù)據(jù)MB6寫入S7-200(站地址為 4)的0中
當(dāng)M1.5為1的時候,S7-300會將S7-200的IB0的數(shù)值讀取到S7-300的MB7中 MPI雙邊通訊(300PLC和300PLC) MPI的雙邊通訊需要使用系統(tǒng)功能SFC65發(fā)送和SFC66接收、 SFC65發(fā)送數(shù)據(jù):
SFC65,發(fā)送數(shù)據(jù) REQ:等于“1”的時候發(fā)送數(shù)據(jù) C0NT:保持通訊,(是否使用這個SFC65進(jìn)行發(fā)送),常為“1” DEST_TD:通訊對方的地址 REQ_ID:數(shù)據(jù)編號,(常填寫本地MPI地址) SD:要發(fā)送的數(shù)據(jù)塊 REST_VAL:錯誤代碼 BUSY:完成位 上圖中的信息意思是:當(dāng)M5.0和M5.1接通的時候把DB1.DBX3000.0為起始的76個字節(jié)的數(shù)據(jù)的3號數(shù)據(jù)包寫入到MPI地址是3的PLC中。 在另外一臺PLC(MPI地址中SFC65中的對方地址相同)內(nèi)編寫SFC66接收數(shù)據(jù): EN_DT:等于“1”的時候發(fā)送數(shù)據(jù) RET_VAL:錯誤代碼 REQ_ID:接收數(shù)據(jù)編號 NDA:檢測數(shù)據(jù) RD:接收數(shù)據(jù)存放的地點 上圖中的信息意思是:當(dāng)M6.0為“1”的時候,接收對方發(fā)來的信息,存放到DB1.DB3100.0開始的76個字節(jié)中。
|