mpi通信最多15個cpu,包括mpi全局通訊,單邊通訊和雙邊通訊
mpi的全局通訊(300plc和300plc):
mpi的全局通訊一個包最多22個字節(jié),最多4個數(shù)據(jù)包(一個發(fā)送,一個接收算一個數(shù)據(jù)包)
硬件的配置(我們在一個項目里面組態(tài)三個cpu)
注意在組態(tài)的時候建立的是mpi通訊,不是dp通訊
plc1里進行硬件組態(tài):
在plc2里進行硬件組態(tài):
在plc3里進行硬件組態(tài):
(和plc2的cpu屬性設(shè)置相同,地址更改為3)
我們在plc里面不用編輯通訊的程序,只需在plc1里給mb0開始的22個字節(jié)賦值,在plc2里給mb0開始的22個字節(jié)解壓使用即可。
程序的下載步驟:
一,先下載plc1,使用編程電纜連接plc1上的mpi接口
二,下載完plc1的項目程序后,我們開始下載plc1的全局通訊的通訊信息
三,下載plc2,使用編程電纜連接plc2上的mpi接口
四,下載完plc2的項目程序后,我們開始下載plc2的全局通訊的通訊信息
下載完成,連接上mpi通信電纜,測試通訊情況
mpi單邊通訊(300的plc和300的plc):
單邊通訊主要用在plc與plc之間的通訊,一個發(fā)送和接受最多76個字節(jié)
特別提示:因為通訊程序沒有必要每個掃描周期都運行,所以我們可以把通訊程序放到ob35(循環(huán)中斷)里面
下面我們開始單邊通訊300對300的編程:
我們使用系統(tǒng)功能sfc68發(fā)送,sfc67接受
下面我們在plc1里面進行編程:
sfc68發(fā)送數(shù)據(jù)
req:等于“1”的時候發(fā)送數(shù)據(jù)
c0nt:保持通訊,(是否使用這個sfc68進行發(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ù)
同樣在標準庫中找到sfc67:
sfc67接收信息
req:等于“1”的時候發(fā)送數(shù)據(jù)
c0nt:保持通訊,(是否使用這個sfc68進行發(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進行,em277撥碼開關(guān)地址要和300編程時填寫的對方通訊地址相同)
和200的單邊通訊方式和300對300的通訊相同,都需要使用sfc67和sfc68,進行數(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的默認通訊速率是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)的qb0中
當(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進行發(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é)中。