問:我有一個改造項目新系統(tǒng)的313cplc需要從老系統(tǒng)上用mpi通訊讀取一個模擬量和16個數(shù)字量的數(shù)據(jù),現(xiàn)在問題是用定義全局數(shù)據(jù)通訊還是在新系統(tǒng)plc中用sfc67和sfc68通訊,是不是編程通訊比全局數(shù)據(jù)通訊速度快更穩(wěn)定?請高手指點。(還要問一句如果用編程通訊的話怎么把定義好的全局數(shù)據(jù)給刪除掉)如果不用全局數(shù)據(jù)的話,用編程,兩個plc在組態(tài)里用不用連?是不是只用設(shè)置一下地址就行了吧?
答:全局數(shù)據(jù)通信是plc之間進行的不需要編程通過mpi接口在cpu間循環(huán)地交換少量數(shù)據(jù),當(dāng)過程映像被刷新時,在循環(huán)掃描檢測點上進行數(shù)據(jù)交換;而無組態(tài)的連接的mpi通信(編程通信)通過調(diào)用sfc67和sfc68來實現(xiàn),mpi無組態(tài)連接就是mpi通信時,不需要組態(tài),只要編寫通信程序即可實現(xiàn)通信,plc之間可以采用雙邊編程通信和單邊編程通信方式,你這里應(yīng)該是采用單邊編程通信方式,因為cpu313c需要從老系統(tǒng)上用mpi通訊讀取一個模擬量和16個數(shù)字量的數(shù)據(jù),只要在cpu313c上進行編程就可以實現(xiàn)數(shù)據(jù)交換,編程通信要比全局數(shù)據(jù)傳輸?shù)臄?shù)據(jù)量要大,速度更快;
你首先必須把兩個plc之間的mpi端口連接起來,設(shè)定主站cpu313c的mpi通信參數(shù)(波特率187.5kbit/s)和主站的mp地址如“3”,不能與老的plc的mpi地址重復(fù),把兩個站的波特率設(shè)定一樣,各自下載到plc中;因為你只想老系統(tǒng)上用mpi通訊讀取一個模擬量和16個數(shù)字量的數(shù)據(jù),在cpu313c中單邊編程,在讀取數(shù)據(jù)區(qū)只要指定對方的plc的mpi地址和數(shù)據(jù)區(qū)就可以了。
x_put(sfc68)為發(fā)送數(shù)據(jù)的指令,通過此指令將數(shù)據(jù)寫入不在同一個本地s7站中的通信伙伴,其中dest_id為對方的mpi地址(這里指你的老系統(tǒng)plc的mpi地址)和var_addr為對方的數(shù)據(jù)區(qū),sd為本地數(shù)據(jù)區(qū),必須保證sd參數(shù)定義的數(shù)據(jù)長度和數(shù)據(jù)類型與通信伙伴上var_addr一致;
x_get(sfc67)為接收數(shù)據(jù)的指令,可以從本地站s7站以外的通信伙伴(這里指老系統(tǒng)上plc站)中讀取數(shù)據(jù),其中參數(shù)dest_id和var_addr分別指對方的mpi地址和對方的數(shù)據(jù)區(qū),rd為本機的數(shù)據(jù)區(qū)必須保證rd參數(shù)定義的接收區(qū)(cpu313c)至少和由var_addr參數(shù)定義的要讀取的區(qū)域一樣大,而且類型必須相匹配。
如果不想要全局數(shù)據(jù)通信,只要在硬件組態(tài)界面中選擇菜單options(選項)/defineglobaldata“(定義全局數(shù)據(jù))界面中,打開全局變量發(fā)送和接收組態(tài),斷口連接,執(zhí)行保存編譯,下載到plc就可以了。