1. <span id="7b99h"><output id="7b99h"></output></span>

      歡迎來(lái)到《圣博凱斯》變頻供水設備官網(wǎng)
      精銳于專(zhuān)業(yè) / 卓然于品質(zhì) -- 20年專(zhuān)注于供水行業(yè),締造至臻品質(zhì) -- 服務(wù)熱線(xiàn):0731-85783205 18932453205

      PLC和電腦連接_plc與pc機的通訊連接

      由于項目需要連接PLC和PC,所以傳送幾種狀態(tài)和控制信息。 為了實(shí)現最快的響應速度,采用了I/O直接連接。 但是,這需要添加I/O卡,與PLC的I/O功能有些重復。 那么,網(wǎng)絡(luò )通信可能嗎? 本文進(jìn)行一些實(shí)驗。

      西門(mén)子S7-1200

      概述

      使用的PLC是目前主流的西門(mén)子S7-1200。 支持PROFINET、PROFIBUS等網(wǎng)絡(luò )標準/協(xié)議,也可以間接連接到Modbus設備。 任何標準都有很多服務(wù)/協(xié)議。 詳情請參照Communication with SIMATIC 但是,這些標準中有些用于西門(mén)子的設備相互連接,不一定適用于PC。

      下圖為T(mén)IA門(mén)戶(hù)v 14的通信相關(guān)命令,也可作為線(xiàn)索。

      PLC通信指令

      與PC的通信可以使用OPC服務(wù)器,但它是基于OLE/COM的,只能在Windows上使用。 一些軟件(如LabView )支持與西門(mén)子PLC的通信。 是跨平臺開(kāi)源方案,一個(gè)是Snap7。 先試試這個(gè)吧。 另外,請嘗試最原始的TCP協(xié)議。

      Snap7

      Snap7是針對西門(mén)子S7協(xié)議的。 PLC不需要S7的服務(wù)器這一配置,但只需要利用Snap7 lib,就可以將PC作為S7客戶(hù)端讀取/寫(xiě)入服務(wù)器端的數據塊。

      數據塊映射

      塊分為輸入區域(DI、AI )、輸出區域) DQ、AQ )、程序塊) DB )等。 在下圖中,DB3是測試程序的數據塊。

      數據塊和監視值

      可以使用Snap7包附帶的(編譯的)測試程序查看/更改值。

      Snap7測試程序

      訪(fǎng)問(wèn)設置

      讀寫(xiě)前需要進(jìn)行配置和權限設置。 禁用塊優(yōu)化,并授予完全權限。 有關(guān)詳細信息,請參閱Snap7文檔。

      另外,有些設置未在文檔中列出,即允許從遠程對象進(jìn)行PUT/GET通信訪(fǎng)問(wèn)。 否則就會(huì )出現“函數不可用”,

      錯誤,如“基于函數的處理器”。

      Snap7通信的訪(fǎng)問(wèn)設定

      Python版的Snap7

      使用腳本語(yǔ)言有時(shí)會(huì )很方便。 Python-snap7是Snap7 lib的python軟件包。 因為只是接口層的封裝,所以對速度的影響很小。

      安裝時(shí),需要安裝Snap7庫,然后使用pip安裝python-snap7。 有些平臺沒(méi)有現成的Snap7庫,需要自己編譯。 總之是草莓派,我自己編譯的。 實(shí)測Python2和Python3都工作。

      核心代碼如下: I/O只有2字節,所以直接讀取/寫(xiě)入2字節。

      導入快照7

      從快照7 .快照7類(lèi)型導入S7區域數據庫,S7區域PA,S7區域應用

      第7類(lèi)客戶(hù)端:類(lèi)

      def _ init _ (自,ip,槽=1,軌跡=0) :

      self.client=snap7. client.client (

      self.client.connect(IP,機架,插槽)。

      延遲(自) :

      區域=S7區域應用

      db=0

      開(kāi)始=0

      amount=2

      ba=self.client.read _ area (區域、數據庫、開(kāi)始、停止) )。

      d=巴西

      d=8

      d|=壩0

      返回d

      efwritedq (自,數據) :

      區域=S7區域帕

      db=0

      開(kāi)始=0

      amount=2

      ba=字節數組(amount )

      BA0=數據0x FF

      BA [1]=數據8

      sel

      f.client.write_area(area, db, start, ba)

      速度測試

      循環(huán)讀/寫(xiě)DQ,看看總耗時(shí)。示意代碼如下:

      def testWriteLoop(self, count): d = 0 self.log.info("Write DQ from: %04x", d) t1 = time.time() while d < count: self.plc.writeDQ(d) d += 1 t2 = time.time() self.log.info("Write DQ till: %04x. Average: %.2fms", (d - 1), (t2 - t1) * 1000 / d)

      可以看到單次讀/寫(xiě)的平均時(shí)間略高于9ms.

      讀寫(xiě)測試結果

      下圖是最低位的波形。10個(gè)周期對應于20次寫(xiě),耗時(shí)約182ms。高低電平不對稱(chēng)的問(wèn)題后面再說(shuō)。

      遞增寫(xiě)DQ時(shí)DQ0.0的波形

      反向通信

      如果PC做Snap7的服務(wù)器,則PLC需要使用GET/PUT指令讀/寫(xiě)PC端的數據。既然都是S7協(xié)議,我們假設它的速度和正向是相當的,暫且跳過(guò),先試試另一類(lèi)型的通信。

      原始的TCP通信

      S7-1200支持開(kāi)放式用戶(hù)通信,即基于TCP,但不屬于任何標準應用層協(xié)議的,完全由用戶(hù)自己定義的協(xié)議。

      實(shí)驗設計

      PC端作為服務(wù)器:實(shí)際測試使用樹(shù)莓派充當PC的角色。PLC端發(fā)送數據:由一個(gè)DI來(lái)觸發(fā)數據發(fā)送。樹(shù)莓派開(kāi)啟數據發(fā)送:通過(guò)控制一個(gè)GPIO來(lái)開(kāi)關(guān)繼電器,進(jìn)而改變PLC端的DI(信號1);樹(shù)莓派在收到數據后,改變另一個(gè)GPIO的狀態(tài)(信號2)作為標志;比較信號2和信號1的時(shí)間差。

      實(shí)驗器材及連線(xiàn)

      PC端

      PC端作為服務(wù)器,監聽(tīng)某一端口。在Linux上,可以用命令行工具netcat進(jìn)行調試。

      開(kāi)兩個(gè)窗口:

      netcat -l 2000: 監聽(tīng)端口2000netcat localhost 2000: 與本機2000端口連接

      一個(gè)窗口輸入字符,另一個(gè)窗口就會(huì )顯示出來(lái)。

      然后,用Python socket寫(xiě)一個(gè)類(lèi)似的服務(wù)器端程序,核心代碼如下:

      import socket self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.bind(('', self.args.port)) self.sock.listen(1) self.conn, addr = self.sock.accept() data = self.conn.recv(32) self.log.info("Received: %02X %02X", data[0], data[1])

      可以用 netcat 測試這個(gè)服務(wù)器程序。

      PC端的TCP server

      PLC端

      PLC端使用TSEND_C發(fā)送數據。

      由trigger觸發(fā)數據發(fā)送,trigger對應于數字輸入,比如DI0.1.trigger同時(shí)觸發(fā)一個(gè)計數器。TSEND發(fā)送這個(gè)計數器的值,這樣PC每次收到的數據是遞增的。CONT設為T(mén)RUE,保持連接,這樣速度最快。

      PLC端程序

      在網(wǎng)絡(luò )連接設置中指定PC端的IP地址和端口號,端口號要和服務(wù)器監聽(tīng)的端口號一致。由PLC主動(dòng)發(fā)起連接。

      PLC端網(wǎng)絡(luò )連接設置

      初步的結果

      下圖中,黃色為PLC端的輸入(信號1),綠色為樹(shù)莓派上收到數據后的輸出(信號2)。

      都以上升沿作為標志。兩者的時(shí)間差不到9ms。

      通信耗時(shí)的波形圖

      可以更快嗎?

      通信負載

      由通信引起的循環(huán)負荷:默認是20%,取值可以從15%到50%。改變這個(gè)值,發(fā)現對通信時(shí)間并沒(méi)有影響。

      輸入濾波器

      這個(gè)值默認是6.4ms,它是用來(lái)過(guò)濾按鍵抖動(dòng)的。但對于電路觸發(fā)(非人工/機械按鍵)的情況,這個(gè)抖動(dòng)可以設得很小。

      PLC輸入濾波器

      將它調小至0.1ms,整個(gè)耗時(shí)降低了約6ms. 通信耗時(shí)不到3ms了。

      通信耗時(shí)(0.1ms輸入濾波)

      循環(huán)時(shí)間

      PLC的運行方式是不斷循環(huán)去讀取輸入,執行程序塊,更新輸出的模式。循環(huán)周期過(guò)長(cháng),是否會(huì )影響網(wǎng)絡(luò )通信呢?

      通過(guò)在線(xiàn)診斷,可以看到循環(huán)時(shí)間最長(cháng)為4ms,通常都在1~2ms。

      PLC循環(huán)時(shí)間

      這說(shuō)明循環(huán)時(shí)間并不是瓶頸。而且反過(guò)來(lái),循環(huán)時(shí)間比通信時(shí)間還短(即使輸入濾波器為6.4ms,通信時(shí)間9ms時(shí),循環(huán)時(shí)間依然是1~2ms),這說(shuō)明通信和循環(huán)似乎是分頭執行的。

      其它

      本來(lái)還想試一下中斷執行方式的,但把通信程序塊放到中斷響應里執行并沒(méi)有成功??紤]到對于PLC的百兆網(wǎng)口,3ms已經(jīng)夠快了,就沒(méi)再折騰了。

      還試驗了一下,在PLC上單純地增加一個(gè)計數器或反復翻轉輸出電平,每次操作耗時(shí)大約也是3ms。

      順便說(shuō)一句,在PLC的數字輸出上,卻看不到電平的翻轉(看到的總是高電平)。前面有一張“遞增寫(xiě)DQ時(shí)DQ0.0的波形”圖,18ms的周期,基本上已看不到電平下降到0了。感覺(jué)PLC的輸出頻率并不高,甚至可能有高頻濾波。

      結語(yǔ)

      從PLC的眾多網(wǎng)絡(luò )通信方式中,本文試驗了簡(jiǎn)單易行并且跨平臺的兩種方式,用來(lái)和PC通信。

      使用基于S7協(xié)議的Snap7庫,在讀寫(xiě)PLC時(shí)大約耗時(shí)9ms.使用開(kāi)放式的TCP協(xié)議,PLC向PC發(fā)送數據最快不到3ms.

      考慮到S7-1200只是百兆網(wǎng)絡(luò ),這個(gè)速度應該是不錯的,可以滿(mǎn)足大部分需要。

      猜你喜歡

      • 離心泵特性曲線(xiàn)測定實(shí)驗報告數據處理_離心泵特性曲線(xiàn)

        離心水泵的性能參數之間存在著(zhù)一定的相互依化關(guān)系,畫(huà)成曲線(xiàn)來(lái)表示,稱(chēng)為離心泵特性曲線(xiàn)或者性能曲線(xiàn),每臺離心泵都有自己特定的特性曲線(xiàn)。離心泵特性曲線(xiàn)包括:流量-揚程曲線(xiàn)(Q-H),流量-效率曲線(xiàn)(Q-η),流量-功率曲線(xiàn)(Q-N),流量-汽

      • 2020年水泵市場(chǎng)容量_2022年我國水泵行業(yè)市場(chǎng)數據分析

        水泵是泵送流體或者使流體增壓的機械設備。水泵主要用來(lái)泵送油、水、酸堿液、乳化液、懸乳液、液態(tài)金屬等液體,也能泵送液、氣液混合物、含有懸浮固體物的液體。我國水泵行業(yè)和歐美發(fā)達地區相比起步會(huì )晚一些,但是隨著(zhù)近年來(lái)國民經(jīng)濟的發(fā)展,水泵行業(yè)的設計、

      • 什么是智慧供水?智慧供水大數據平臺整體解決方案

        什么是智慧供水?隨著(zhù)水環(huán)境污染和水資源短缺問(wèn)題的日益突出,在新時(shí)代智慧化和數字化的發(fā)展背景下

      • 下列關(guān)于潛水泵使用表述正確的有_選擇潛水泵時(shí)應了解的基本數據

        潛水泵選型主要根據潛水泵所在系統或裝置的相關(guān)參數和特點(diǎn),以及所在環(huán)境條件和要求而定。潛水泵的結構形式、類(lèi)型和規格有多種。一般可以按照以下步驟進(jìn)行選擇:①確定潛水泵使用的外部條件(主要包括被輸送介質(zhì)的理化性質(zhì)、運行參數、現場(chǎng)條件等);

      • 農村污水治理現狀,農村污水治理“大數據”是發(fā)展方向-泵業(yè)

            農村污水治理“大數據”是發(fā)展方向,因此,“農村污水治理要跳出污水處理的范疇,也就是說(shuō),不單單考慮污水治理,而應與畜禽糞便處理、秸稈利用等相結合,,采購污水提升設備、污水提升器,把廢物轉化為能源,在

      • 水環(huán)境污染現象,觸目驚心的水污染數據,改變現狀,一定要用一體化泵站

        早在2018年的統計出來(lái)的數據,經(jīng)相關(guān)部門(mén)檢測發(fā)現,全國每天有1億多噸污水直接排入水體。其中七大水系中一半以上的河段水質(zhì)受到了污染。35個(gè)重點(diǎn)湖泊中,將近有17個(gè)被嚴重的污染,有1/3的水不適合灌溉。90%以上的城市水域污染嚴重,50%以上

      18932453205
      国产ww久久久久久久久久|中字人妻内射喷潮第二页|日本不卡视频高清播放|麻豆久久精品免费看国产|丁香色欲久久久久久综合网
      1. <span id="7b99h"><output id="7b99h"></output></span>