0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PLC作為TCP服務(wù)器的實戰(zhàn)應(yīng)用

PLC技術(shù)圈 ? 來源:PLC技術(shù)圈 ? 作者:PLC技術(shù)圈 ? 2020-09-25 11:44 ? 次閱讀

對于自控或電氣工程師來說,西門子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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • plc
    plc
    +關(guān)注

    關(guān)注

    5006

    文章

    13107

    瀏覽量

    461458
  • 西門子
    +關(guān)注

    關(guān)注

    93

    文章

    2996

    瀏覽量

    115491
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1347

    瀏覽量

    78933

原文標(biāo)題:深度剖析西門子PLC的開放式TCP通信

文章出處:【微信號:xue_PLC,微信公眾號:PLC技術(shù)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    串口服務(wù)器TCP/IP協(xié)議棧是什么關(guān)系

    串口服務(wù)器TCP/IP協(xié)議棧之間存在著緊密而復(fù)雜的關(guān)系。這種關(guān)系主要體現(xiàn)在串口服務(wù)器如何利用TCP/IP協(xié)議棧來實現(xiàn)串口設(shè)備與網(wǎng)絡(luò)之間的數(shù)據(jù)通信。以下是對這種關(guān)系的詳細(xì)解析。
    的頭像 發(fā)表于 08-25 17:35 ?1361次閱讀

    ESP8266與IE相比,Chrome/Mozilla中的TCP服務(wù)器速度較慢是什么原因?

    我正在嘗試將 ESP8266-01 模塊用于一個項目。我將其用作TCP服務(wù)器。我注意到瀏覽 Chrome 和 Mozilla 的服務(wù)器響應(yīng)速度非常慢。但是,當(dāng)我使用IE瀏覽
    發(fā)表于 07-22 06:44

    請問ESP32 C3支不支持在STA模式且不作為TCP服務(wù)器時,與多個IP地址建立TCP通訊?

    請問ESP32 C3支不支持在STA模式且不作為TCP服務(wù)器時,與多個IP地址建立TCP通訊? 或者支不支持在AP+STA共存模式時,與多個IP地址建立
    發(fā)表于 07-22 06:25

    TCP服務(wù)器發(fā)送數(shù)據(jù)丟失的原因?

    當(dāng)UART有數(shù)據(jù)后,Tcp服務(wù)器會獲取發(fā)送到TCP客戶端的數(shù)據(jù)。我們無法知道 UART 數(shù)據(jù)的數(shù)量,in.so porj Tcp 發(fā)送的數(shù)據(jù)將被發(fā)送到 erverone 數(shù)據(jù)。 1
    發(fā)表于 07-19 16:51

    如果ESP上的TCP客戶端與服務(wù)器斷開連接,如何啟用自動重連?

    ESP - TCP 客戶端 嵌入式 Linux 服務(wù)器 - TCP 服務(wù)器 如果ESP上的TCP客戶端與
    發(fā)表于 07-17 06:25

    基于esp8266創(chuàng)建一個TCP服務(wù)器,TCP服務(wù)器每秒自動斷開連接是為什么?

    我基于 esp8266 創(chuàng)建一個 TCP 服務(wù)器。它總是每秒斷開一次。我不知道為什么。我已將espconn_register_time設(shè)置為最大 7200。
    發(fā)表于 07-15 08:26

    tcp方式連接不了服務(wù)器了,服務(wù)器代碼還能開源嗎?

    是在維護(hù)服務(wù)器嗎?已經(jīng)兩天了。http方式還可以連接上,就tcp的方式不行了.服務(wù)器代碼能開源嗎?讓我們自己搭建服務(wù)器用。
    發(fā)表于 07-15 06:53

    ESP826如何運行AP TCP服務(wù)器?

    我正在開發(fā)一個室外遠(yuǎn)程控制系統(tǒng),帶有來自ESP8266 AP的專用WLAN。帶有 TCP 客戶端的平板電腦應(yīng)連接到它,以便在 ESP 上設(shè)置一些 GPIO。根據(jù)我的理解,ESP 上的 TCP 服務(wù)器
    發(fā)表于 07-09 06:27

    如何同時在ESP8266上運行TCP客戶端和TCP服務(wù)?

    到我們的云服務(wù)器)和 TCP 服務(wù)器(某些 TCP 客戶端可以連接到 ESP)。 限制:雖然我們在同時設(shè)置TCP客戶端和
    發(fā)表于 07-08 08:26

    為什么在一些路由中使用ESP32的Active mode無法接收服務(wù)器TCP數(shù)據(jù)呢?

    在“ARRIS”和其他一些路由中,我們面臨這個問題。 ① 在設(shè)置 AT+CIPRECVMODE=0 (Active mode)中,我們無法從服務(wù)器接收 TCP 數(shù)據(jù)。 ② 在同一個服務(wù)器
    發(fā)表于 06-27 07:34

    安徽京準(zhǔn) | PLC時鐘同步(NTP網(wǎng)絡(luò)時間服務(wù)器)的重要性

    安徽京準(zhǔn)、PLC時鐘同步-ntp網(wǎng)絡(luò)時間服務(wù)器的重要性
    的頭像 發(fā)表于 06-19 10:38 ?409次閱讀
    安徽京準(zhǔn) | <b class='flag-5'>PLC</b>時鐘同步(NTP網(wǎng)絡(luò)時間<b class='flag-5'>服務(wù)器</b>)的重要性

    請問usb_cdc_4g_module如何向指定的TCP服務(wù)器發(fā)送數(shù)據(jù)?

    4G模塊,運行usb_cdc_4g_module例程, wifi上網(wǎng)功能正常。 向指定的TCP服務(wù)器發(fā)送數(shù)據(jù),修改如下: 1、正常連網(wǎng)后,使用_ppp_network_stop(dte)函數(shù),將模式
    發(fā)表于 06-06 07:52

    linux服務(wù)器和windows服務(wù)器

    Linux服務(wù)器和Windows服務(wù)器是目前應(yīng)用最廣泛的兩種服務(wù)器操作系統(tǒng)。兩者各有優(yōu)劣,也適用于不同的應(yīng)用場景。本文將 對Linux服務(wù)器和Windows
    發(fā)表于 02-22 15:46

    獨立服務(wù)器和云服務(wù)器的區(qū)別

    獨立服務(wù)器和云服務(wù)器的區(qū)別是很多用戶在選擇服務(wù)器時要做的課程,那么獨立服務(wù)器和云服務(wù)器的區(qū)別有哪些呢?
    的頭像 發(fā)表于 01-17 10:58 ?792次閱讀

    【北亞服務(wù)器數(shù)據(jù)恢復(fù)】ZFS文件系統(tǒng)服務(wù)器RAIDZ數(shù)據(jù)恢復(fù)案例

    服務(wù)器數(shù)據(jù)恢復(fù)環(huán)境: 服務(wù)器中有32塊硬盤,組建了3組RAIDZ,部分磁盤作為熱備盤。zfs文件系統(tǒng)。 服務(wù)器故障: 服務(wù)器運行中
    的頭像 發(fā)表于 12-28 15:17 ?516次閱讀
    【北亞<b class='flag-5'>服務(wù)器</b>數(shù)據(jù)恢復(fù)】ZFS文件系統(tǒng)<b class='flag-5'>服務(wù)器</b>RAIDZ數(shù)據(jù)恢復(fù)案例