1. s7通訊特點(diǎn)
1) s7協(xié)議是西門子專有協(xié)議,廣泛用于各種通訊服務(wù),例如:pg通訊,op通訊,s7通訊等;
2) s7協(xié)議獨(dú)立于西門子各種通訊總線,可以在mpi,profibus,ethernet上運(yùn)行;
3) s7協(xié)議是由多種應(yīng)用層協(xié)議組成,或者說s7協(xié)議是一個(gè)多種協(xié)議的集合;
4) s7通訊在以太網(wǎng)上的底層協(xié)議根據(jù)應(yīng)用的不同使用iso或iso on tcp。
2. s7-1200 s7 連接資源
軟件:
1) portal v10.5軟件,只支持 s7 通信的服務(wù)器(sever)端。
2) tia portail v11軟件,支持 s7 通信的服務(wù)器與客戶端。
3) tia portail v12軟件,支持 s7 通信的服務(wù)器與客戶端。
硬件
1) 硬件版本 v1.0,3個(gè)用于 s7 通信的服務(wù)器端連接。
2) 硬件版本 v2.0或更高,支持3個(gè)用于 s7 通信的服務(wù)器端連接,8個(gè)用于s7 通信的客戶端連接。
3. 關(guān)于tsap
當(dāng)建立了一個(gè)連接時(shí),模塊中專用于連接的資源會分配給該連接。 該分配要求連接資源可以被尋址。 tsap(transport service access point,傳輸服務(wù)訪問點(diǎn) ) 是通過連接資源或(在使用固件版本為 v2.0 或更高的 s7-1200 cpu 的情況下)simatic-acc(simatic application controlled communication,simatic 應(yīng)用控制通信) 而形成的資源的地址。
s7-1200 cpu的tsap組態(tài)取決于相關(guān)固件和遠(yuǎn)程連接伙伴。當(dāng)s7-1200 cpu與s7-200/300/400 cpu進(jìn)行連接時(shí),s7-1200 cpu也會使用一個(gè)包含連接資源的tsap組態(tài)。
4. s7通信編程
1) 使用 step7 v11/v12,s7-1200的profinet 通信口僅支持 s7 單邊通信,僅需在客戶端單邊組態(tài)連接和編程,而服務(wù)器端只準(zhǔn)備好通信的數(shù)據(jù)就行。
2) s7-1200 cpu的s7通信使用put, get指令
3) s7-1200 cpu 不能訪問遠(yuǎn)程 s7-1200 cpu 的優(yōu)化 db 中的db 變量。
4) 必須確保put, get指令的addr_x與rd_x或sd_x參數(shù)的長度和數(shù)據(jù)類型相匹配。
5. put/get指令
1) 對于 get: 從下次掃描開始,遠(yuǎn)程 cpu 會將請求的數(shù)據(jù)返回接收區(qū) (rd_x)。 當(dāng)讀操作順利完成時(shí),ndr 參數(shù)設(shè)置為 1。只有在完成前一個(gè)操作后,才能開始新的操作。
2) 對于 put: 本地 cpu 開始將數(shù)據(jù)發(fā)送 (sd_x) 到遠(yuǎn)程 cpu 中的存儲位置(addr_x)。 寫操作順利完成后,遠(yuǎn)程 cpu 返回執(zhí)行確認(rèn)。 然后,put 指令的done 參數(shù)設(shè)置為 1。只有在完成前一個(gè)操作后,才能開始新的寫操作。
注意:
1) 從以上可以看出s7通訊與tcp通信的不同, tcp通信如果接收方?jīng)]有正常接收,發(fā)送方done位仍會置1,即發(fā)送方不知道通信是否真正成功,這也是為什么說s7通信比tcp通信安全的原因。
2) 為確保數(shù)據(jù)的一致性,應(yīng)始終在訪問數(shù)據(jù)或啟動另一讀/寫操作前評估已經(jīng)完成的操作(對于 get 評估 ndr = 1;對于 put 評估 done = 1)。
6. s7-1200之間s7通信故障測試
如果訪問遠(yuǎn)程優(yōu)化的db塊,指令執(zhí)行后會報(bào)錯(cuò),狀態(tài)位故障代碼8。如果是不存在的db塊或者如果遠(yuǎn)程1200的db塊有效長度不滿足本地add_r引腳定義,也報(bào)同樣故障。
7. s7-1200 s7 通訊數(shù)據(jù)長度
通過get指令可接收的字節(jié)總數(shù)或者通過put指令可發(fā)送的字節(jié)總數(shù)有一定的限制。