- 品牌/商標:西門子
- 產品型號:6ES7307-1BA00-0AA0
- 原產地:德國
- 聯系人:李軍
概述
S7-1200 與 S7-300 之間的以太網通信方式比較多,可以采用ISO on TCP、TCP和 S7 的方式進行通信。在S7-1200 CPU 中采用ISO on TCP和TCP這兩種協議進行通信所使用的指令是相同的,都使用 T-block ( TSEND_C, TRCV_C, TCON, TDISCON, TSEN, TRCV ) 指令編程。S7-300 CPU一側如果使用的是CPU集成的PN接口,連接不在STEP7的NetPro中建立連接,而是使用西門子提供的OPEN IE 的方式來實現。
本文主要介紹了如何實現在S7-1200 和S7-300 CPU集成PN口之間的ISO on TCP通信,包括通信的基本步驟、配置及編程等內容。具體的實現方法有多種,比如在S7-1200中可以使用不帶連接的通信指令(TCON, TDISCON, TSEN, TRCV),也可以使用帶連接的通信指令(TSEND_C, TRCV_C);在S7-300中可以采用功能塊編程的方式來實現,也可以使用Open Communication Wizard工具(OPEN IE向導)的方式來建立OPEN IE的通信。
為了方便理解,本文在S7-1200中使用不帶連接的通信指令TCON, TDISCON, TSEN, TRCV,在S7-300側通過功能塊編程的方式來實現。
關于S7-1200和S7-300 OPEN IE通信的文檔可以登錄西門子自動化與驅動集團網站的中心,網址:https://www.ad.siemens.com.cn/download/ ,根據如表1提供的文檔編號搜索并相關文檔。
| 文檔編號 | 中文標題 |
| A0426 | 西門子 S7-1200 PLC 技術參考Version 1.5 |
| A0416 | S7-1200與S7-300 的以太網TCP 及ISO on TCP通信 |
| A0421 | 如何實現兩個S7-1200 CPU之間的以太網通信 |
| A0415 | 通過S7協議實現S7-1200 與S7-300的通信 |
| A0414 | S7-1200基本以太網通信使用指南 |
| A0284 | 使用西門子PLC集成的PN口實現S5 兼容通信使用入門 |
| A0345 | 使用 Open Communication Wizard 建立開放式 ISO on TCP 通信 |
| A0346 | 使用 Open Communication Wizard 建立開放式 UDP 通信 |
| A0347 | 使用 Open Communication Wizard 建立開放式 TCP 通信 |
| A0344 | S7-300和S7-400集成PN口的S7通信 |
| A0334 | PN CPU/CP的開放式通訊-Open IE |
表1 中心文檔列表
2 軟硬件及所要完成的通信任務
2.1硬件設備
實驗的硬件設備:
1、S7-1200 CPU,CPU1212 AC/DC/RLY(6ES7 212-1BD30-0XB0)
2、S7-300 PN CPU,CPU317-2PN/DP(6ES7 317-2EH13-0AB0 V2.6.7)
3、PC機(帶以太網卡)
4、SCALANCE X216交換機,S7-1200、S7-300和PC通過交換機互連起來
5、TP以太網電纜
2.2 軟件環境
1、STEP7 Basic V10.5 SP2
2、STEP7 V5.4 SP5
3、通信所需的功能塊,請參見附件提供的例程 ”Sample_1 ( 50 KB ) ” 或參考中心文檔:《A0284 使用西門子PLC集成的PN口實現S5 兼容通信使用入門》提供的程序。鏈接:
2.3 所要完成的通信任務
本例中所要完成的通信任務定義為:
1、 將S7-1200的發送數據塊DB3里的8個字節數據發送到S7-300的DB3中。
2、 將S7-300 DB3里接收到的8個字節數據再發送到S7-1200的接收數據塊DB4中。
3 S7-1200 CPU的組態編程
3.1創建新項目
1、打開STEP 7 Basic 軟件并新建項目
在STEP 7 Basic 的 “Portal View”中選擇“Create new project”創建一個新項目,項目名稱為“GS_ISO”。
2、添加硬件并命名PLC
然后進入 “Project view”,在“Project tree” 下雙擊 “Add new device”,在對話框中選擇所使用的S7-1200 CPU(6ES7 212-1BD30-0XB0)添加到機架上,設備名為 PLC_1,如圖1所示。

圖1 添加新的PLC站
為了編程方便,我們使用 CPU 屬性中定義的時鐘位,定義方法如下:
在“Project tree> PLC_1 > Device configuration” 中,選中 CPU ,然后在下面的屬性窗口中,“Properties > System and clock memory” 下,將系統位定義在MB1,時鐘位定義在MB0,如圖2所示。程序中我們主要使用 M0.3,它是以2Hz 的速率在0和1之間切換的一個位,可以使用它去自動激活發送任務。

圖2 系統和時鐘存儲器
3、為 S7-1200 CPU的PROFINET 通信口分配以太網地址
在 “Device View”中點擊 CPU 上代表PROFINET 通信口的綠色小方塊,在下方會出現PROFINET 接口的屬性,在 “Ethernet addresses”下分配IP 地址為 192.168.0.2 ,子網掩碼為255.255.255.0,如圖3所示。

圖3為 S7-1200 CPU的PROFINET 接口分配IP地址
3.2調用并配置通信指令
1、在 PLC_1 的 OB1 中調用 “TCON”通信指令
進入“Project tree > PLC_1 > Program blocks > OB1” 主程序中,從右側窗口 “Instructions > Extended Instructions > Communications” 下調用 “TCON” 指令,并選擇 “Single Instance” 生成背景 DB塊,如圖4所示。

圖4 調用TCON指令
2、定義PLC_1 的 “TCON” 連接參數
PLC_1 的 TCON 指令的連接參數需要在指令下方的屬性窗口“Properties > Configuration > Connection parameter”中設置,如圖5所示。連接參數說明:
End point
:選擇通信伙伴,這里選擇“unspecified”
Address
:指定通信伙伴S7-300站的IP地址“192.168.0.3”
Connection type
:選擇通信協議為ISO on TCP
Connection ID
:連接的地址 ID 號,這個 ID 號在后面的編程里會用到
Connection data
:創建連接時,系統會自動生成本地的連接 DB 塊,所有的連 接數據都會存在這個 DB 塊中。
:選擇本地 PLC_1作為主動連接,S7-300 CPU作為被動連接
Address details
:設定 TSAP 地址這里本地設置成“PLC_1”, TSAP ID自動為“50.4C.43.5F.31”,伙伴方設置成不設置TSAP(ASCII),設置TSAP ID 為“E0.02.50.4C.43.5F.31”。

圖5 “TCON” 指令的連接參數
3、分配 “TCON” 的塊參數
在指令下方的屬性窗口“Properties > Configuration > block parameter”中設置,可以根據需要自己為“TCON” 塊指定相應的輸入輸出參數。指定好參數的塊,如圖6所示。其中M8.0作為啟動連接的觸發位,連接ID = 1與連接參數里面的設置相同。

圖6 “TCON” 的塊參數
4、在 PLC_1 的 OB1 中調用 “TSEND” 發送通信指令
首先創建一個發送數據塊,通過 “Project tree > PLC_1 > Program blocks > Add new block”,選擇 “Data block” 創建 DB 塊,選擇尋址,點擊“OK”鍵,如圖7所示。

圖7 創建一個發送數據塊DB3
打開創建的發送數據塊,在數據塊中定義發送數據區為 8個字節的數組,如圖8所示。

圖8 創建發送數據區
然后在OB1 中調用“TSEND”發送通信指令,并為“TSEND”指定參數。使用M0.3( 2Hz 的時鐘脈沖)上升沿激活發送任務,指定發送數據區為P# DB3.DBX0.0 BYTE 8,連接 ID = 1與連接參數里面的設置相同,發送長度LEN=8。分配好參數的“TSEND”塊如圖9所示。

圖9 調用“TSEND”發送通信塊
5、在 PLC_1 的 OB1 中調用“TRCV”接收通信指令
同樣,先創建一個接收數據塊DB4 ,如圖10所示。“TRCV”接收通信指令的調用方法與“TSEND” 發送通信指令的調用方法相同,M8.1作為接收指令的使能位,如圖11所示。

圖10創建接收數據區

圖11 調用“TRCV”接收通信塊
6、在 PLC_1 的 OB1 中調用 “TDISCON”通信指令
后,為了斷開通信鏈接,我們需要調用“TDISCON”通信指令,如圖12所示。

圖12 調用“TDISCON”通信塊
3.3程序
至此,S7-1200側的組態和編程都已經完成,可以在項目編譯無錯誤后,直接到S7-1200 CPU中,并啟動CPU的運行。
4 S7-300 CPU的組態編程
S7-300帶PN接口的CPU支持ISO on TCP通信功能,通過該集成以太網接口組態ISO on TCP通信時,只能使用開放式通信專用的功能塊,這些專用的功能塊可以在STEP7 “ 通訊塊”的 “標準庫 ”中找到,如圖13所示。

圖13 S7-300 CPU通信指令庫
庫中提供了下列通信功能塊:
′> FB 65 "TCON",用于建立連接,連接時需要UDT65來提供參數
> FB 66 "TDISCON",用于終止連接
> FB 63 "TSEND",用于發送數據到S7站點、S5站點、PC站或者第三方設備
> FB 64 "TRCV" 用于從S7站點、S5站點、PC站或者第三方設備接收數據
要通過CPU 的 集成PN 接口實現開放的ISO on TCP通信,不能在Netpro網絡組態中直接建立連接,必須通過程序指定每個連接的參數。用于通信的FB標準功能塊,請參見附件提供的例程 ”Sample_1 ( 50 KB ) ” 或參考中心文檔《A0284 使用西門子PLC集成的PN口實現S5 兼容通信使用入門》提供的例程。鏈接:
從附件提供的例程 ”Sample_1 ( 50 KB ) ” 中將把需要的程序塊拷貝到新建的項目中,包括:
> UDT 65 "TCON_PAR",存放用戶通信參數
> FB420 "SET_ISO_ENDPOINT" ,用于修改UDT65內通信對象參數
> FC21, 被FB420調用
隨后,使用通信功能塊 FB65 "TCON"、FB66 "TDISCON"、FB63 "TSEND" 和 FB64 "TRCV" 完成程序的編寫。
4.1創建新項目
1、打開STEP7,新建一個項目
2、在項目中插入一個SIMATIC 300的站
3、組態硬件,插入一個CPU317-2PN/DP的CPU,并為PN接口分配IP地址“192.168.0.3”,如圖14所示。同時,在CPU的“Cycle/Clock Memory”屬性頁中指定MB0為時鐘存儲器,在程序中可以使用M0.3(2Hz 的時鐘脈沖)去自動激活發送任務,如圖15所示。

圖14為PN接口分配IP地址

圖15設置時鐘存儲器字節
4.2編寫通信程序
1、從樣例程序中拷貝通信所需的塊
從附件提供的sample_1 ( 50 KB ) 例程中把需要的FB420、FC21與UDT65程序塊拷貝到新創建的項目中,如圖16所示。

圖 16
2、生成數據塊
在程序中創建一個DB塊,塊號不限(本例為DB101),在塊中建立變量DB_VAR,類型為UDT65,如圖17所示。

圖17
3、生成并調用FB塊
首先生成一個FB塊(本例為FB400),在FB400靜態變量區建立一個結構“T_TSAP“,包含如下變量,并為變量分配初始值,如圖18所示。
1) LOC_RACK_SLOT (BYTE)= B#16#2 表示有兩個前導字符 0xE0 (CPU31x-2PN/DP 或者 CPU319-3PN/DP規定)和 0x02(CPU槽號)
2) LOC_TSAP(STRING14)= 本地用戶定義的ASCII字符'PLC_1' (注意要與S7-1200側設置保持一致)。
3) REM_RACK_SLOT(BYTE)= B#16#0 不使用兩個前導符。
4) REM_TSAP (STRING16)= 遠程用戶定義的ASCII字符'PLC_1' (注意要與S7-1200側設置保持一致)。

圖18
然后在生成的FB400中調用FB420,如圖19所示。
西門子CPU312
圖19
其中參數的含義如下:
1)ID: 連接ID,與S7-1200里的設置保持一致
2)DEV_ID:用于本PLC型號(注意不是通信對方)
DEV_ID = B#16#1本PLC型號為 IM151-8 PN/DP CPU
DEV_ID = B#16#2本PLC型號為CPU31x-2PN/DP或IM154-8 CPU
DEV_ID = B#16#3本PLC型號為CPU319-3PN/DP
DEV_ID = B#16#5本PLC型號為CPU41x-3PN/DP
3)ACTIVE: 主動或是被動建立連接,通信雙方必須一個主動,一個被動,本例中S7-300側為被動方。
4)T_TSAP: 靜態變量區的結構變量,用于ISO ON TCP 通信的TSAP地址
5)IP_ADDR1 ... IP_ADDR4: 通信伙伴的IP地址,即S7-1200的IP地址192.168.0.2
6)CON_DB: 用UDT65生成的變量,即DB1014、在OB1中調用發送和接收功能塊
在OB1中先調用FB400功能塊,為其指定背景數據塊DB400,如圖20所示。

圖20
然后再在OB1中依次調用通信功能塊FB65、FB64、FB63、FB66。其中發送和接收功能塊FB64、FB63的數據區都為DB3,建立DB3如圖21所示。關于塊的使用請參考STEP7的在線幫助或相關文檔說明。

圖21
FB65 “TCON”,建立連接功能塊,如圖22所示。通過輸入參數 "REQ"一個上升沿來建立連接。 “ID” 為連接ID,“CONNECT” 參數填寫用 UDT65 生成的變量, 連接建立后會一直保持,直到調用FB66 "TDISCON" 斷開連接、CPU停止或者斷電。其中CONNECT指定為通過UDT65生成的DB塊,即DB101, ID = 1。通過M8.0啟動作業,執行連接的建立。

圖22
FB64 “TRCV”,接收功能塊,如圖23所示。"TRECV" EN_R始終為TRUE, ID 填寫連接ID,”DATA” 填寫接收數據區,輸出參數 "NDR" 用于表示新的數據已經收到,輸出參數 "LEN" 表示接收的數據長度。本例中連接ID = 1。指定DB3作為接收數據塊,接收數據的字節長度為8,接收作業通過M8.1使能。

圖23
FB63 “TSEND”,發送功能塊,如圖24所示。連接ID = 1。指定DB3為發送數據塊,發送字節長度為8,發送作業通過M0.3觸發。"TSEND" 發送請求依靠輸入參數"REQ"的上升沿來實現,如果“BUSY”位為true時不要觸發"REQ"。輸出參數 "DONE", "ERROR" 和 "STATUS" 用于評估工作的情況。

圖24
FB66 “TDISCON”,取消連接功能塊,如圖25所示。可以根據需要取消ID=W#16#1的連接,作業通過M8.2使能。

圖25
4.3程序
S7-300側的組態和編程都完成后,直接到S7-300 CPU中,并啟動CPU的運行。
5 監控通信結果
對S7-1200和S7-300都組態和編程后,所有組態及程序并搭建好網絡后,首先在在S7-1200中將M8.0置位為1,然后再在S7-300中將M8.0置位為1,兩個站的“TCON” 被激活,建立兩個站之間的ISO on TCP連接。
連接正常建立后,即可以進行數據的交換。在S7-1200和S7-300站中將 ”TRCV” 功能塊的EN_R置位為1,使能接收,監控通信結果如圖26所示。
通過監控結果可以看到,S7-1200中發送數據塊DB3的8個字節數據被發送到S7-300站的DB3中,同時,S7-300的DB3中接收到的數據又被發送到S7-1200的接收數據塊DB4中。

圖26 在線監控通信結果
1.概述
通過以太網可以實現S7-1200與S7-300連接通信。S7-300可以使用帶集成口CPU或通信處理器(CP343-1)連接到工業以太網上,它們都提供S7 通信的功能,既可作為客戶機,也可以作為服務器,所擁有的連接資源可參見相關產品手冊;S7-1200 集成以太網接口,提供S7 通信的功能,只能作為服務器,可以同時建立3 個通信連接。
下面會用一個實例來描述S7-300 如何與S7-1200建立通信連接。
192.168.0.8 192.168.0.18
192.168.0.100

圖1: 實例網絡拓撲圖
S7 1200 與 S7-300 通過 S7通信的基本原理如下圖所示:

圖2:S7-300與S7-1200 通信原理
2.硬件需求
? S7-1214C AC/DC/RLY
? CPU 319-3 PN/DP
? SCALANCE X204-2
? PG/PC
3.軟件需求
? S7-1200編程軟件 STEP 7 Basic V10.5
? S7-300 編程軟件 STEP 7 V5.4 + SP4
4.組態
4. 1 S7-1200 配置
? 使用STEP 7 Basic 創建項目“comS7300”;

圖3: 創建項目
? 添加S7-1200 設備 CPU1214C,設置IP 地址192.168.0.18;

圖4: 添加S7-1200設備
4. 2 S7-1200 PLC 編程
? 在Program blocks 下,添加程序塊(DB1,DB2,DB3),其中DB1和DB3為符號DB(選擇 Symbolic access only),DB2為地址DB(不選擇 Symbolic access only) , S7 通信只支持地址DB 尋址通信;

圖5: 創建地址DB2
? 打開全局DB2,輸入2個數組類型數據,每個數組有16 個元素;

圖6: 在DB2中添加數據
? 創建兩個監視表格(監視表格_1, 監視表格_2) 用來觀察DB2的實時狀態;
? 將程序到PLC CPU1214C 中。
4. 3 S7-300 配置
使用STEP 7 創建 SIMATIC 300 Station。
? 在硬件組態中添加CPU 319-3 PN/DP,設置IP地址 192.168.0.8;

圖7: 硬件組態
? 在網絡組態中(NetPro)中創建S7連接,首先在打開的NetPro中點擊 SIMATIC 300 (1) 機架的“CPU 319-3PN/DP”處;

圖8: 在NetPro中選擇相應的機架
? 創建連接一個與“Unspecified”的S7 連接,點擊“OK”;

圖9: 添加S7連接
? 在相應的輸入通信伙伴的IP地址192.168.0.18,點擊“Address Details…”;

圖10:輸入通信伙伴IP地址 ;
? 在Address Details 對話框中,將通信伙伴的槽號改為1,確認其TSAP 為03.01,點擊“OK”,之后,可以將所建立硬件組態和網絡連接編譯并到PLC 中。

圖11:設置通信伙伴機架和槽號 ;
4. 4 S7-300 PLC 編程
? 在STEP 7 Blocks 中創建寫數據DB1 ( put data)和讀數據DB3 (get data)數據塊;

圖12: DB1和DB2;
? 打開主程序OB1,分別在Network1和Network2中添加指令FB14 GET和 FB15 PUT,并為其添加背景數據塊DB14和DB15 ;

圖13: 選擇單邊通信指令;
注意:
在選擇指令時,要根據使用的產品來確定。如果采用CPU集成的以太網接口建立S7 通信,要采用左側的指令;如果采用CP 以太網卡建立S7通信,要采用右側的指令。

圖14:在OB1中調用FB14 ;

圖15:在OB1中調用FB15 ;
? 創建變量表VAT_1監視寫數據操作(PUT);

圖16:變量表VAT_1 ;
? 創建變量表VAT_2監視讀數據操作(GET);

圖17:變量表VAT_2 ;
5.調試 S7-1200 與S7-300 PLC 通信
? 從S7-300 程序中可知,在M1.0 從0變為1時,讀取S7-1200的數據DB2.DBB0~DB2.DBB15 到S7-300 DB3.DBB0~ DB3.DBB15中;

圖18:S7-300調用GET函數讀取S7-1200數據
? 從S7-300 程序中可知,在M5.0 從0變為1時,將S7-300的數據DB1.DBB0~ DB1.DBB15 寫入S7-1200 的DB2.DBB16~DB2.DBB31中;

圖19:S7-300調用PUT函數寫入S7-1200數據
6.總結
在使用S7-300與S7-1200 建立S7 通信時,所能建立的連接數和通信任務是與S7-300產品的型號相關,如:CPU319-3 PN/DP ,可組態的連接數為16,可建立通信任務為32(也就是可調用的通信指令的背景數據的總數),每個作業的用戶數據值與所使用的塊類型和通信伙伴有關,PUT 為212 個字節,GET為222個字節。
1 G120控制單元CU240
2 CU240E 6SL3244-0BA10-0BA0
3 CU240S 6SL3244-0BA20-1BA0
4 CU240S DP 6SL3244-0BA20-1PA0
5 CU240S PN 6SL3244-0BA20-1FA0
6 CU240S DP-F 6SL3244-0BA21-1PA0
7 CU240S PN-F 6SL3244-0BA21-1FA0
8 PM240(不帶內置濾波器)380-480V 3AC 重載
9 1.3A/0.37KW 6SL3224-0BE13-7UA0
10 1.7A/0.55KW 6SL3224-0BE15-5UA0
11 2.2A/0.75KW 6SL3224-0BE17-5UA0
12 3.1A/1.1KW 6SL3224-0BE21-1UA0
13 4.1A/1.5KW 6SL3224-0BE21-5UA0
14 5.9A/2.2KW 6SL3224-0BE22-2UA0
15 7.7A/3KW 6SL3224-0BE23-0UA0
16 10.2A/4KW 6SL3224-0BE24-0UA0
17 18A/5.5KW 6SL3224-0BE25-5UA0
18 25A/7.5KW 6SL3224-0BE27-5UA0
19 32A/11KW 6SL3224-0BE31-1UA0
20 38A/15KW 6SL3224-0BE31-5UA0
21 45A/18.5KW 6SL3224-0BE31-8UA0
22 60A/22KW 6SL3224-0BE32-2UA0
23 75A/30KW 6SL3224-0BE33-0UA0
24 90A/37KW 6SL3224-0BE33-7UA0
25 110A/45KW 6SL3224-0BE34-5UA0
26 145A/55KW 6SL3224-0BE35-5UA0
27 178A/75KW 6SL3224-0BE37-5UA0
28 205A/90KW 6SL3224-0BE38-8UA0
29 250A/110KW 6SL3224-0BE41-1UA0
30 302A/132KW 6SL3224-0XE41-3UA0
31 370A/160KW 6SL3224-0XE41-6UA0
32 477A/200KW 6SL3224-0XE42-0UA0
33 PM240(不帶內置濾波器)380-480V 3AC 輕載
34 1.3A/0.37KW 6SL3224-0BE13-7UA0
35 1.7A/0.55KW 6SL3224-0BE15-5UA0
36 2.2A/0.75KW 6SL3224-0BE17-5UA0
37 3.1A/1.1KW 6SL3224-0BE21-1UA0
38 4.1A/1.5KW 6SL3224-0BE21-5UA0
39 5.9A/2.2KW 6SL3224-0BE22-2UA0
40 7.7A/3KW 6SL3224-0BE23-0UA0
41 10.2A/4KW 6SL3224-0BE2












