<li id="ufp7l"><legend id="ufp7l"><th id="ufp7l"></th></legend></li>

      1. <li id="ufp7l"><meter id="ufp7l"></meter></li>

        <span id="ufp7l"><optgroup id="ufp7l"></optgroup></span>

        技術支持
        當前位置:首頁 > 技術支持 > 如何使用 Modbus 進行樣機開發(fā)(獲取完整代碼)
        如何使用 Modbus 進行樣機開發(fā)(獲取完整代碼)
        更新時間:2021-10-15  |  點擊率:1865

        您是在進行樣機開發(fā),還是在尋找一種經(jīng)濟型方式,保障應用中的溫濕度測量質(zhì)量?您是否了解關于 Python 等編程語言的一些基本知識?

        如果您了解,那么我想要向您展示如何僅通過一個 維薩拉HMP110 探頭、一條 USB 服務電纜 (219690) 和一臺安裝了 Python 3 的計算機來輕松地長時間記錄數(shù)據(jù)。我將帶您了解該代碼的各個方面,但如果您對解釋內(nèi)容不感興趣,您可以直接跳到本文的末尾,獲取完整的代碼。另外需要說明的是,這只是一個用于演示 Modbus 通信的示例腳本。

        庫:

        在介紹代碼之前,讓我們首先了解一下我們將用到的庫,其中最重要的是 pymodbus。我們使用該庫來通過 Modbus RTU 與探頭建立通信,具體操作是從 pymodbus.client.sync 導入 ModbusSerialClient。我們使用struct庫將字位處理為不同的變量類型,使用time庫更改輪詢率,使用datetime庫獲得讀取數(shù)據(jù)的時間和日期,此外,我們導入 argparse庫,將參數(shù)從命令行傳遞至代碼。



        參數(shù):

        為了有助提高代碼的靈活性,我添加了一些參數(shù)。使用上述參數(shù)可讓我們無需更改代碼,便能從命令行輕松更改變量值。我認為可能會有所幫助的參數(shù)有通信端口、數(shù)據(jù)存儲文件的名稱、探頭的地址、輪詢頻率和數(shù)據(jù)記錄長度。



        Modbus 連接:

        我們首先需要初始化新的串行 Modbus 客戶端,此客戶端應已根據(jù)探頭進行正確設置。本示例中的參數(shù)集必須包括通信方式、通信端口、響應超時、波特率、停止位和奇偶校驗。 Modbus RTU 的通信方式為“rtu",端口取決于您的計算機,因此我將在以下部分說明如何識別正確的端口。由于其他參數(shù)由探頭的設置決定,因此您需要參考探頭的數(shù)據(jù)表,獲取恰當?shù)闹怠R话闱闆r下,針對維薩拉探頭,波特率應為 19200,停止位為 2,無奇偶校驗。



        讀取保持寄存器:

        現(xiàn)在我們來創(chuàng)建一個函數(shù)以讀取探頭的保持寄存器。我們要調(diào)用上一節(jié)中創(chuàng)建的 Modbus 客戶端實例的 read_holding_registers() 方法來讀取寄存器。我們需要保持寄存器的起始地址、寄存器的數(shù)量和探頭的從屬地址。我們會從寄存器收到低字節(jié)序格式的 16 位字數(shù)據(jù),之后,我們必須將其轉換為 32 位浮點值。



        將寄存器的值轉換為 32 位的值:

        寄存器的值以 16 位整數(shù)的形式存儲,我們需要將其轉換為 32 位浮點格式。為此,我創(chuàng)建了一個函數(shù),它可以獲取寄存器的值和寄存器索引,并返回索引數(shù)據(jù)的 32 位浮點值。我們采用模塊結構來執(zhí)行此轉換。



        記錄數(shù)據(jù):

        鑒于我們已經(jīng)可以讀取保持寄存器并將寄存器的值轉換為 32 位浮點值,我們需要創(chuàng)建一個可將這些值存儲在 .csv 文件中的函數(shù)。為此,我創(chuàng)建了一個名為 data_logger() 的函數(shù)。它可以調(diào)用函數(shù) holding_registers_data(),并以日期時間、相對濕度、溫度、露點的格式將獲取的數(shù)據(jù)附加到文件中。



        確定探頭的通信端口:

        首先,確保您的探頭能正確連接到計算機。

        Windows:

        在 Windows 操作系統(tǒng)中,您可以在“設備管理器"下找到設備的 COM 端口。要打開“設備管理器"窗口,請打開屏幕左下方的“開始"菜單,然后輸入“設備管理器"。它會顯示為“最佳匹配"下的第一個結果,單擊該圖標或按下鍵盤上的 Enter 鍵便可打開該窗口。單擊“端口(COM 和 LPT)"旁邊的箭頭以展開端口。您會看到被列為“Vaisala USB Device"的一個設備,它的旁邊列出了 COM 端口名稱,在我們的示例中應為 COM6。



        Linux :

        在 Linux 中,您可以通過在終端鍵入命令“dmesg | grep tty"來確定通信端口。在所有返回的語句中,會有一個類似于“'cp210x converter now attached to ttyUSBn "的語句,其中 ttyUSBn 便是端口。

        運行代碼:

        要運行腳本,您必須安裝所有的庫。如果需要,可以使用 pip 命令



        以獲得有關參數(shù)的操作。命令提示符中應顯示此過程。下方是輸出內(nèi)容的屏幕截圖。



        通信端口是必需參數(shù),其他參數(shù)均具備默認值,您可以根據(jù)自己的偏好進行更改。通信端口參數(shù)不需要標識符,可以放在文件名稱之后的任意位置。但其他可選參數(shù)需要標識符。

        以下是以長格式和短格式顯示的典型命令示例:




        版權所有 © 2025 無錫徽科特測控技術有限公司 備案號:蘇ICP備12010649號-16 技術支持:儀表網(wǎng)
        主站蜘蛛池模板: 亚洲A丁香五香天堂网| 精品国产无限资源免费观看| 国产免费无遮挡精品视频| 国产亚洲中文日本不卡二区| 亚洲成AV人片在WWW色猫咪| 日本一区二区在线免费观看| 日韩视频在线观看免费| 日韩亚洲人成在线综合日本| 三级黄色免费观看| 男女啪啪永久免费观看网站| 亚洲中文字幕无码爆乳av中文 | 久久久久久影院久久久久免费精品国产小说 | 67194在线午夜亚洲| 免费观看AV片在线播放| 亚洲中文字幕久久精品蜜桃| 精品国产麻豆免费网站| 一区二区三区免费在线视频| 在线日韩日本国产亚洲| 亚洲妇女无套内射精| 精品熟女少妇a∨免费久久| 亚洲国产精品综合久久2007| 成人免费看吃奶视频网站| 亚洲精品视频在线| 人体大胆做受免费视频| 亚洲熟妇无码AV在线播放| 午夜视频在线免费观看| 久久综合久久综合亚洲| 亚洲综合色区在线观看| 99爱免费观看视频在线| 亚洲av网址在线观看| 美女视频黄免费亚洲| 老司机免费午夜精品视频| 青草草在线视频永久免费| 无码免费又爽又高潮喷水的视频 | 一区二区三区免费视频播放器| 国产精品亚洲а∨无码播放| 成年人网站免费视频| 一级毛片免费在线| 亚洲成年人免费网站| 亚洲日韩中文在线精品第一| 1000部禁片黄的免费看|