1.概述
1.1 s7-1200 的profinet 通信口
s7-1200 cpu 本體上集成了一個 profinet 通信口,支持以太網(wǎng)和基于 tcp/ip 的通信標準。使用這個通信口可以實現(xiàn) s7-1200 cpu 與編程設備的通信,與hmi觸摸屏的通信,以及與其它 cpu 之間的通信。這個profinet 物理接口是支持10/100mb/s的 rj45口,支持電纜交叉自適應,因此一個標準的或是交叉的以太網(wǎng)線都可以用于這個接口。
1.2 s7-1200支持的協(xié)議和最大的連接資源
s7-1200 cpu 的profinet 通信口支持以下通信協(xié)議及服務
• tcp
• iso on tcp ( rcf 1006 )
• s7 通信 (服務器端)
通信口所支持的最大通信連接數(shù)
s7-1200 cpu profinet 通信口所支持的最大通信連接數(shù)如下:
• 3個連接用于hmi (觸摸屏) 與 cpu 的通信
• 1個連接用于編程設備(pg)與 cpu 的通信
• 8個連接用于open ie ( tcp, iso on tcp) 的編程通信,使用t-block 指令來實現(xiàn)
• 3個連接用于s7 通信的服務器端連接,可以實現(xiàn)與s7-200,s7-300以及 s7-400 的以太網(wǎng)s7 通信
s7-1200 cpu可以同時支持以上15個通信連接,這些連接數(shù)是固定不變的,不能自定義。
tcp(transport connection protocol)
tcp是由 rfc 793描述的標準協(xié)議,可以在通信對象間建立穩(wěn)定、安全的服務連接。如果數(shù)據(jù)用tcp協(xié)議來傳輸,傳輸?shù)男问绞菙?shù)據(jù)流,沒有傳輸長度及信息幀的起始、結(jié)束信息。在以數(shù)據(jù)流的方式傳輸時接收方不知道一 條信息的結(jié)束和下一條信息的開始。因此,發(fā)送方必須確定信息的結(jié)構(gòu)讓接收方能夠識別 。在多數(shù)情況下tcp應用了ip (internet protocol) ,也就是“tcp/ip 協(xié)議”, 它位于 iso-osi 參考模型的第四層。
協(xié)議的特點:
• 與硬件綁定的高效通信協(xié)議
• 適合傳輸中等到大量的數(shù)據(jù) (<=8192 bytes)
• 為大多數(shù)設備應用提供
– 錯誤恢復
– 流控制
– 可靠性
• 一個基于連接的協(xié)議
• 可以靈活的與支持tcp協(xié)議的第三方設備通信
• 具有路由兼容性
• 只可使用靜態(tài)數(shù)據(jù)長度
• 有確認機制
• 使用端口號進行應用尋址
• 大多數(shù)應用協(xié)議,如telnet、ftp都使用tcp
• 使用 send/receive 編程接口進行數(shù)據(jù)管理需要編程來實現(xiàn)
1.3 硬件需求和軟件需求
硬件:
① s7-1200 cpu
② s7-300 cpu + cp343-1(支持s7 client)
③ pc(帶以太網(wǎng)卡)
④ tp以太網(wǎng)電纜
軟件:
① step 7 basic v10.5
② step 7 v5.4
2. iso on tcp 通信
s7-1200 cpu 與s7-300/400 之間通過iso on tcp 通信,需要在雙方都建立連接,連接對象選擇“unspecified”。
所完成的通信任務為:
① s7-1200將db3里的100個字節(jié)發(fā)送到s7-300的db2中
② s7-300將輸入數(shù)據(jù)ib0發(fā)送給s7-1200的輸出數(shù)據(jù)區(qū)qb0。
2.1 s7-1200 cpu 的組態(tài)編程
組態(tài)編程過程與 s7-1200 cpu 之間的通信基本相似 (見 6.3 ),這里簡單描述一下步驟:
① 使用step 7 basic v10.5 軟件新建一個項目
在step 7 basic 的“portal view”中選擇 “create new project”創(chuàng)建一個新項目
② 添加新設備
然后進入“project view”,在“project tree”下雙擊“add new device”,在對話框中選擇所使用的s7-1200 cpu添加到機架上,命名為 plc_1。
③ 為 profinet 通信口分配以太網(wǎng)地址
在“device view”中點擊 cpu 上代表profinet 通信口的綠色小方塊,在下方會出現(xiàn)profinet 接口的屬性,在 “ethernet addresses”下分配ip 地址為 192.168.0.1 ,子網(wǎng)掩碼為255.255.255.0。
④ 在 s7-1200 cpu 中調(diào)用“tsend_c”通信指令并配置連接參數(shù)和塊參數(shù)
在主程序中調(diào)用發(fā)送通信指令,進入“project tree” > “ plc_1”>“program blocks”>“main”主程序中,從右側(cè)窗口“instructions”> “extended instructions”>“communications”下調(diào)用“tsend_c”指令,并選擇“single instance”生成背景 db塊。然后單擊指令塊下方的“下箭頭”,使指令展開顯示所有接口參數(shù)。
然后,創(chuàng)建并定義發(fā)送數(shù)據(jù)區(qū) db 塊。通過“project tree”>“ plc_1”> “program blocks” >“add new block” ,選擇 “data block”創(chuàng)建 db 塊,選擇絕對尋址,點擊“ok”鍵,定義發(fā)送數(shù)據(jù)區(qū)為 100個字節(jié)的數(shù)組。
根據(jù)所使用的參數(shù)創(chuàng)建符號表,如圖1所示。
配置連接參數(shù),如圖2所示。
配置塊接口參數(shù),如圖3所示。
圖1 創(chuàng)建所使用參數(shù)的符號表圖plc tag
圖2 配置連接參數(shù)
圖3 配置 tsend_c 塊參數(shù)
⑤ 調(diào)用“trcv”通信指令并配置塊參數(shù)如圖6 47所示。
因為與發(fā)送使用的是同一連接,所以使用的是不帶連接的發(fā)送指令“trcv”,連接“id”使用的也是“tsend_c”中的“connection id”號,如圖4所示。
圖4 配置 t_rcv 塊參數(shù)
2.2 s7-300 cpu 的iso on tcp通信的組態(tài)編程
① 使用step 7 軟件新建一個項目并進行硬件組態(tài)
創(chuàng)建完新項目,在項目的窗口下,右鍵菜單里,選擇“insert new object”>“simatic 300 station” ,插入一個s7-300 站。
為了編程方便,我們使用時鐘脈沖激活通信任務,在cpu的“properties”>“cycle/clock memory”中設置,如圖5所示。
圖5 設置時鐘脈沖
每一個時鐘位都按照不同的周期/頻率在0和1之間切換變化,見表1。
表1:時鐘位頻率
位
7
6
5
4
3
2
1
0
周期(s)
2
01. jun
1
0.8
0.5
0.4
0.2
0.1
頻率(hz)
0.5
0.625
1
jan 25
2
02. mai
5
10
② 配置以太網(wǎng)模塊
進入“hw config”中,組態(tài)所使用的 cpu 及“cp343-1”模板。并新建以態(tài)網(wǎng) ethernet (1) ,配置“cp343-1”模板ip 地址為:192.168.0.2,子網(wǎng)掩碼為: 255.255.255.0 。如圖6所示。配置完硬件組態(tài)及屬性,編譯存盤并下載所有硬件組態(tài)。
圖6 s7-300 硬件配置
③ 網(wǎng)絡組態(tài)
打開 “netpro” 配置網(wǎng)絡,選中 cpu,在連接列表里建立新的連接并選擇連接對象和通信協(xié)議,如圖7所示。
圖7 創(chuàng)建新的連接并選擇 iso-on-tcp 協(xié)議
這時會跳出通用信息,如圖8所示。
圖8 通用信息
然后,進入“addresses”配置通信雙方的ip 地址及tsap 地址,如圖9所示。
圖9 配置通信的ip 地址及tsap 地址
配置完連接并編譯存盤后,將網(wǎng)絡組態(tài)下載到cpu300中。
④ 軟件編程
在ob1中,從“l(fā)ibraries”>“simatic_net_cp”>“cp300”下,調(diào)用fc5(ag_send)、fc6(ag_recv)通信指令。創(chuàng)建接收數(shù)據(jù)區(qū)為 db2,定義成100個字節(jié)的數(shù)組。
call “ ag_recv” //調(diào)用fc6
id :=1 // 連接號,要與連接配置列表中一致,見圖8
laddr :=w#16#100 //cp的地址,要與配置中一致,見圖8
recv :=p#db2.dbx 0.0 byte 100 //接收數(shù)據(jù)區(qū)
ndr :=m10.0 //為1時,接收到新數(shù)據(jù)
error :=m10.1 //為1時,有故障發(fā)生
status :=mw12 //狀態(tài)代碼
len :=mw14 //接收到的實際數(shù)據(jù)長度
call “ag_send” //調(diào)用fc5
act :=m0.2 //為1時,激活發(fā)送任務
id :=1 // 連接號,要與連接配置中一致
laddr :=w#16#100 //cp的地址,要與配置中一致
send :=ib0 //發(fā)送數(shù)據(jù)區(qū)
len :=1 //發(fā)送數(shù)據(jù)的長度
done :=m10.2 //為1時,發(fā)送完成
error :=m10.3 //為1時,有故障發(fā)生
status :=mw16 //狀態(tài)代碼
2.3 監(jiān)控通信結(jié)果
下載s7-1200和s7-300中的所有組態(tài)及程序,監(jiān)控通信結(jié)果,如圖10、圖11所示。
在s7-1200 cpu中向db3中寫入數(shù)據(jù):“11”、“22”、“33”,則在s7-300中的db2塊收到數(shù)據(jù)也為“11”、“22”、“33”。
在s7-300 cpu中,將“2#1111_1111”寫入ib0,則在s7-1200 cpu中qb0中收到的數(shù)據(jù)也為“2#1111_1111”。
圖10 s7-1200監(jiān)控表
圖11 s7-300 變量表
3. tcp 通信
使用tcp 協(xié)議通信,除了連接參數(shù)的定義不同,通信雙方的其它組態(tài)及編程與前面的iso on tcp 協(xié)議通信完全相同。
s7-1200 cpu中,使用 tcp 協(xié)議與s7-300通信時,plc_1的連接參數(shù),如圖12所示。通信伙伴 s7-300 的連接參數(shù),如圖13所示。
圖12 s7-1200 的tcp連接參數(shù)的配置
圖13 s7-300 的tcp連接參數(shù)的配置