高性能
多接口
寬溫--適應惡劣環境
★★★★★
“ 01/前言”
虹科工業樹莓派是一款基于樹莓派計算模塊進行工業級設計和封裝的,并且經過工業標準測試(EN61131-2和IEC 61000-6-2),如EMI,浪涌和突發事件等等,有ESD的極性保護,達到4KV/8KV。
?虹科工業樹莓派的操作系統在Raspbian基礎上進行了優化,給linux內核添加了RT實時補丁,以使得linux滿足硬實時的需求。
“ 02/Modbus TCP/RTU主從站功能”
虹科工業樹莓派內置虛擬Modbus TCP/RTU主從站功能,用戶可以通過產品上的USB接口(需要USB轉接線)/RS485接口連接Modbus RTU設備,并對設備進行讀寫操作。
圖1.1 虛擬Modbus TCP/RTU主從站
用戶可以在網頁配置界面PiCtory中對虛擬主從站進行配置。
比如:配置Modbus RTU Master一個任務為每1000ms讀取一次從站地址為1,寄存器地址為1的保持寄存器的值,并將讀取到的值放入Input_Word_1中,配置好之后讀取操作將自動執行,用戶只需讀取Input_Word_1的值即可獲得相應數據。
圖1.2 虛擬Modbus RTU Master任務配置
在配置Modbus RTU Master時需要輸入通過USB口連接的從站的設備編號的路徑,比如:/dev/ttyUSB0。
但這就帶來一個問題:當從站通過USB口連接到模塊時,其設備端口號是系統自動分配的,Linux內核會根據設備插入的先后順序進行編號的分配,比如第一個插入的設備編號是ttyUSB0,第二個插入的設備編號是ttyUSB1,依次類推。
所以,在每次重啟系統之后,連接的Modbus RTU從站的設備編號可能會發生變化,上一次啟動時是ttyUSB0,下一次啟動就可能變成ttyUSB1。
如果每次啟動設備都要檢查和修改設備編號路徑的話就會在實際應用中帶來很多麻煩,那么有沒有一種方法可以固定設備編號呢?
答案是肯定的!
我們可以通過指定udev規則,讓udev除了產生/dev/ttyUSB*設備文件外,另外再創建一個軟鏈接。具體操作見下文。
“ 03/udev規則-通過芯片的特定碼創建軟鏈接”
Vender ID和Product ID,即“廠家標識”和“產品標識”。USB 設備驅動的硬件接口需要識別Vender ID和Product ID。
可以通過lsusb命令查看當前通過USB接入的設備的描述列表,就可以得到設備的Vender ID和Product ID,然后在進行后續綁定。
圖2.1 lsusb命令
從上圖可以看到,我通過USB口連接的USB-Serial adapter設備的Vender ID是1a86,Product ID是7523。接下來,在/etc/udev/rule.d目錄下創建新的規則文件ttyUSBLink.rules。并輸入以下規則:
KERNEL==”ttyUSB*”, ATTRS{idVendor}==”1a86”, ATTRS{idProduct}==”7523”, MODE:=”0666”, GROUP:=”dialout”, SYMLINK+=”modbus_device_1”
保存并退出文件,重新拔插USB設備,新建的udev規則即可生效(若沒有生效,以root權限運行命令:service udev reload和service udev restart)。
以上述規則為例,以后無論按照什么順序插入,都能夠通過自定義的modbus_device_1設備文件軟鏈接訪問設備,而無需關心系統分配給設備的ttyUSB*的編號是什么。
圖2.2 udev規則效果
從上圖可以看出,系統自動為我的設備分配的編號是ttyUSB0,同時也創建了一個名為modbus_device_1的軟鏈接,這樣就可以在PiCtory界面直接輸入軟鏈接的路徑。
但很多時候,設備廠商由于一些特殊原因,在串口芯片上寫入的設備號是相同的:
圖2.3 具有相同ID的USB串口設備
那么這種創建軟連接的方法就會出問題,此時我們就需要另一種方法,詳見下一部分。
“ 04/udev規則-綁定硬件端口號”
如上文所說,我們可能會遇到具有相同ID號的設備,此時通過綁定ID號創建軟鏈接的方法就行不通了,但可以通過綁定硬件端口號實現同樣的效果。
每個設備的硬件端口號是不一樣的,可以通過udevadm info --attribute-walk --name=/dev/ttyUSB0查看設備的硬件端口號:
圖3.1 查看設備硬件端口號
通過上述命令,可以看到我的ttyUSB0設備的硬件端口號是1-1.2:1.0,ttyUSB1設備的硬件端口號是1-1.3:1.0。
然后修改一下ttyUSBLink.rules文件,改為以下規則:
圖3.2 綁定硬件端口號udev規則
保存并退出后,重新拔插設備就可以看到生成的兩個軟鏈接:
圖3.3 udev規則效果
需要注意的是,這里涉及的硬件端口號對應的是USB端口而不是USB端口上連接的設備。也就是說,假如你有左右兩個USB端口,左邊USB端口的端口號是1-1.2:1.0,右邊USB端口的端口號是1-1.3:1.0。那么,插入左邊USB端口的設備對應的軟鏈接就是modbus_device_1,插入右邊USB端口的設備對應的軟鏈接就是modbus_device_2。
虹科--工業物聯網
虹科是一家在工業物聯網IIoT行業經驗超過3年的高科技公司,虹科與世界領域頂級公司包括EXOR、Eurotech、Unitronics、Matrikon、KUNBUS、VDOO、Esper等合作,提供先進的高端工業4.0 工業觸摸屏、高端邊緣計算機、IoT開發框架、PLC與HMI一體機、OPC UA、工業級樹莓派、VTSCADA、VDOO設備安全分析與防護平臺、安卓設備一站式管理平臺等解決方案。物聯網事業部所有成員都受過專業培訓,并獲得專業資格認證,平均3年+的技術經驗和水平一致贏得客戶極好口碑。我們積極參與行業協會的工作,為推廣先進技術的普及做出了重要貢獻。至今,虹科已經為行業內諸多用戶提供從硬件到軟件的不同方案,并參與和協助了眾多OEM的設備研發和移植項目,以及終端用戶的智能工廠和工業4.0升級改造項目。
原文標題:虹科教您派固定工業樹莓派Modbus RTU設備編號
文章出處:【微信公眾號:工業物聯網技術】歡迎添加關注!文章轉載請注明出處。
-
Linux
+關注
關注
87文章
11292瀏覽量
209330
發布評論請先 登錄
相關推薦
評論