西門子S7系列PLC的開放式乙太網通信過程包括如下幾個步驟:建立連接(Establish connection)、發送/接收數據(Send/receive data)、斷開連接(Disconnect)。

與通信夥伴建立連接要使用TCON指令,該指令的「CONNECT」引腳的數據包含了通信夥伴的相關信息(比如:通信協議、IP地址、埠號等等)。在S7-300/400中,CONNECT引腳的數據類型為:TCON_Param。但是,在S7-1500系列PLC的開放式乙太網通信中,數據類型TCON_Param會出現通信無法建立的情況。這是怎麼回事呢?

我們知道,S7-1500系列PLC的CPU1515、CPU1516和CPU1517都有兩個乙太網埠:X1和X2。其中X1包括2個RJ45口(內置交換機功能);X2有1個RJ45口。X1和X2是獨立的,也就是可以設置成兩個不同網段的IP地址,都支持開放式乙太網通信協議。當使用數據類型TCON_Param做為連接的參數時,X1口可以建立通信,但是X2口確無法建立通信。

這種情況下,應該使用新的數據類型:TCON_IP_v4。

與TCON_Param相比,數據類型TCON_IP_v4明確了硬體標識符,因此可以指明當前是使用哪個網口進行通信。

TCON_IP_v4的數據結構如下表:

各部分的含義解釋如下:

1)interface_id:本地通信埠的硬體標識符。默認值64表示使用X1埠,若要使用X2埠,則根據硬體配置的標識符數據進行修改;

2)id:用來標識連接,在發送/接收指令中會用到連接的ID;

3)connection_type:表示連接的類型。

  • 11(0x0B)=TCP協議;
  • 19(0x13)=UDP協議。

出於兼容及程序移植的考慮,17(0x11)也表示TCP協議;

4)active_established:是否主動建立連接。TRUE表示主動;FALSE則表示被動建立連接;

5)remote_address:通信夥伴的IP地址,是一個四個位元組的數組。

假設通信夥伴的IP地址為:192.168.0.88,則:

  • addr[1]=192;
  • addr[2]=168;
  • addr[3]=0;
  • addr[4]=88;

6)remote_port:通信夥伴的埠號,建議使用大於2000的數值;

7)local_port:本地埠號,建議使用大於2000的數值;

在S7-1500及S7-1200(V4.0以上)的乙太網通信連接中,建議使用TCON_IP_v4代替TCON_Param!

好了,關於TCON_IP_v4數據類型就先介紹到這裡。相關參考文章:

西門子PLC乙太網開放式用戶通信連載(1)-TCON?

www.founderchip.com

如果你喜歡這篇文章,可以去官網(founderchip.com)下載本文PDF版本。


推薦閱讀:
相關文章