對于自控或電氣工程師來說,西門子PLC是每個人都非常熟悉的一款PLC品牌;而對于上位機開發(fā)工程師來說,Socket通信或TCP/IP協(xié)議也是必須要掌握的一種通信方式。
相比較而言,西門子PLC對Socket通信的支持性是很不錯的。如果你在使用西門子軟件時,發(fā)現(xiàn)一個詞叫做Open User Communication或開放式通信,沒錯,那其實就是我們說的Socket通信方式。關(guān)于這一點,我們可以從以下兩張圖中看出,分別為S7-200Smart編程軟件Micro/Win Smart V2.5及博途TIA V15.1編程軟件中關(guān)于通信庫的部分截圖:
我們可以看到無論是西門子的中高端PLC還是低端PLC,都是支持開放式TCP/UDP通信的,既然都支持,我們來看下如何實現(xiàn)。
眾所周知,對于Socket通信來說,是可以支持TCP、UDP等多種通信方式,但是今天在這里,我們主要針對TCP這種通信方式。除此以外,大家都知道,Socket會存在服務(wù)器和客戶端的說法,也就意味著,同樣是使用Socket通信,我們?nèi)匀恍枰_定到底PLC是作為服務(wù)器還是作為客戶端,因為不管對于PLC編程或者上位機開發(fā)來說,這兩種方式都是完全不同的,下面做具體介紹。
一、PLC作為TCP服務(wù)器的實戰(zhàn)應(yīng)用
(1)PLC編程
1.1 創(chuàng)建一個TCPServer的子程序,拖拽一個TCP_CONNECT的庫指令,對于該指令的每個引腳對應(yīng)的含義,大家可以按下F1直接獲取在線幫助,程序段1編寫如下圖所示:
1.2 拖拽一個TCP_SEND的庫指令,對于該指令的每個引腳填寫,ConnID為1,Req為觸發(fā)條件,必須為沿信號,這里為了方便,直接使用1秒的脈沖信號,DataLen及DataPtr為發(fā)送的起始字節(jié)指針及發(fā)送的字節(jié)長度,程序段2如下圖所示:
1.3拖拽一個TCP_RECV的庫指令,對于該指令的每個引腳填寫,ConnID統(tǒng)一為1,MaxLen為接收的最大程度,DataPtr表示接收字節(jié)存放的起始位置,程序段3如下圖所示:
1.4最后需要編譯,編譯會提示需要給庫分配地址,點擊文件下的存儲器,給該庫分配地址即可,然后在MAIN主程序中調(diào)用TCPServer這個子程序,并下載到PLC中,PLC編程部分結(jié)束。
(2)TCP調(diào)試助手測試
如果PLC程序編寫沒問題,打開一個網(wǎng)絡(luò)調(diào)試助手,輸入對應(yīng)的IP地址及端口號,即可連接上服務(wù)器。連接服務(wù)器后,PLC端會自動每隔一秒發(fā)送200個字節(jié)數(shù)據(jù)過來,這200個字節(jié)即對應(yīng)VB100-VB299的值。
(3)上位機客戶端軟件開發(fā)
通過與編程軟件的狀態(tài)圖表進(jìn)行對照,可以實時讀取PLC數(shù)據(jù),并隨時設(shè)置相應(yīng)的數(shù)值
二、PLC作為TCP客戶端的實戰(zhàn)應(yīng)用
(1)PLC編程
1.1創(chuàng)建一個TCPClient的子程序,拖拽一個TCP_CONNECT的庫指令,與服務(wù)器程序不同的是,這里需要把Active設(shè)置為ON,同時IP地址和端口號需要根據(jù)上位機實際情況填寫,程序段1編寫如下圖所示:
1.2 拖拽一個TCP_SEND的庫指令,對于該指令的每個引腳填寫,ConnID為2,Req為觸發(fā)條件,必須為沿信號,這里為了方便,直接使用1秒的脈沖信號,DataLen及DataPtr為發(fā)送的起始字節(jié)指針及發(fā)送的字節(jié)長度,程序段2如下圖所示
1.3拖拽一個TCP_RECV的庫指令,對于該指令的每個引腳填寫,ConnID統(tǒng)一為2,MaxLen為接收的最大程度,DataPtr表示接收字節(jié)存放的起始位置,程序段3如下圖所示
1.4 最后需要編譯,如果已經(jīng)編寫過服務(wù)器程序,這里就不需要分配地址了,直接在MAIN主程序中調(diào)用TCPClient這個子程序,并下載到PLC中,PLC編程部分結(jié)束
(2)TCP調(diào)試助手測試
如果PLC程序編寫沒問題,打開一個網(wǎng)絡(luò)調(diào)試助手,設(shè)置模式為TCP Server,輸入端口號為2000,即可開啟服務(wù)器。
服務(wù)器開啟后,PLC端會自動連接服務(wù)器,并且每隔一秒發(fā)送100個字節(jié)數(shù)據(jù)過來,這100個字節(jié)即對應(yīng)VB500-VB599的值。
(3)上位機服務(wù)器軟件開發(fā)
通過與狀態(tài)圖表進(jìn)行對比,驗證可以正常讀取和寫入PLC數(shù)據(jù)。
原文標(biāo)題:深度剖析西門子PLC的開放式TCP通信
文章出處:【微信公眾號:PLC技術(shù)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
plc
+關(guān)注
關(guān)注
5006文章
13107瀏覽量
461458 -
西門子
+關(guān)注
關(guān)注
93文章
2996瀏覽量
115491 -
TCP
+關(guān)注
關(guān)注
8文章
1347瀏覽量
78933
原文標(biāo)題:深度剖析西門子PLC的開放式TCP通信
文章出處:【微信號:xue_PLC,微信公眾號:PLC技術(shù)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論