簡體   English   中英

了解Linux中的RS-485

[英]Understanding RS-485 in Linux

我正在嘗試通過在兩台Linux計算機之間發送數據來學習RS-485接口。 主計算機正在運行ubuntu16.04,另一台計算機正在內核4.19上運行基於debian的系統。

主PC具有USB轉RS-485適配器,另一PC具有RS-485接口。

最初,我以為我可以直接在接口上回顯數據,但我做不到。 如果我連接了picocom,則可以輸入數據但不能發送。 通過環顧四周,我意識到這是因為兩台PC都在等待RTS,因此需要進行某種切換。

然后我得出結論,我需要某種C程序來初始化接口(如果我錯了,請更正我)。

我去了https://www.kernel.org/doc/Documentation/serial/serial-rs485.txt,其中是用於設置RS-485的示例代碼。

但是,當我嘗試運行時,它總是在以下位置失敗:

status = ioctl(fd,TIOCSRS485, &ctrl485);
  if (status) {
    printf("ERROR PORT 1! TIOCSERSETRS485 failed %i", status);
    return -1;
  }

我用谷歌搜索了我能想到的RS-485的每種組合,但是大多數信息都是關於Modbus和傳感器的。 我也讀過有關ioctl的文章,但我仍然陷於困境。

如果有人有經驗或技巧,我將非常感激。

最好的問候,W

我不能完全確定,但我認為您根本不需要使用RTS切換,因為默認情況下,您的設備似乎支持硬件半雙工。

檢查以下內容以確保您的硬件設置正確:

根據您的Cincoze手冊,您必須在BIOS級別上選擇每個端口的操作模式:

COM2的BIOS設置

然后確保您的USB電纜也與微動開關半雙工(默認情況下應該沒問題):

USB電纜設置

最后,請確保按照以下圖表正確連接設備:

接線圖

如果電纜不太長(也許不到50米?),則不必擔心端接或阻抗太大,否則,您可能需要在計算機DB9上加一個電阻並移動USB電纜上的開關。

最后,請注意您的設備也支持全雙工。 如果您按照上述說明更改設置,但選擇RS422並進行4線設置,則您應該能夠在兩台計算機上打開一個終端,並在需要時同時發送和接收。

編輯1:為完整起見 ,我在這里添加了一些參考,供正在使用不支持硬件方向控制的設備的用戶參考:

RS485:設備的不適當的ioctl

Pymodbus-在Raspberry Pi3的uart上通過rs485讀取電能表的輸入寄存器

編輯2:如以下注釋中所討論,對於可以在BIOS中選擇不同操作模式的特定硬件,要記住的另一件事是,當您選擇一個端口時,端口的命名(在OS級別)可能會改變。新的操作模式。 使用$cat /proc/tty/driver/serial查找有關硬件的詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM