问题标签 [rs485]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1516 浏览

serial-port - 如何将 9 针串行连接连接到 Arduino?

我的问题很简单。我有一台大型旧机器,背面有一个 RS-485 连接,我有一个从 RS-485 到 9 针串行的转换器。

我要连接的设备会发出一个 ACK​​ 信号以查看是否有任何连接。如何将我的 Arduino (Uno) 连接到 9 针串行连接器,以便我可以读取 ACK(以及将来写回)并在串行监视器中显示 ACK 信号?

0 投票
1 回答
8418 浏览

c# - 如何在 .NET 中实现 RS485 2 线双向通信?

我正在尝试使用 RS485 2 线进行双向通信,到目前为止我尝试过的一切都失败了。

我可以发送数据并让我的外围设备按预期做出反应(因此接线正确),但我从未收到任何回复。


我正在使用 .NET SerialPort,我尝试使用DataReceived事件以及Thread轮询端口中的循环。我什至尝试阻止读取,直到收到足够的数据。


我尝试了几种硬件选项:

  • 带有 Sena RS232-RS485 转换器的 PCI RS232 卡
  • PCI RS232 卡带 Moxa RS232-RS485 转换器
  • PCI RS485 卡

我玩过驱动程序设置: - FIFO 中断触发级别 - 接收器 FIFO 流控制阈值 - RS485 缓冲区启用(正常、高电平有效、低电平有效)


遵循各种线索(例如Can't receive serial data in .net 2.0, using rs232 to rs485 converter),我尝试设置DtrEnable为 true、false 或切换它。

我也尝试RtsEnable在发送和接收时进行切换(按照http://en.wikipedia.org/wiki/RS-232#RTS.2FCTS_handshaking)。


如果不求助于不同的接线,我现在没有其他可以尝试的方法。有什么问题?


根据要求,一些代码(它只是多次尝试后的快照):

打开:

发送:

读者线程:

注意:数据包长 10 个字节,双向。

0 投票
1 回答
2366 浏览

python - 通过python中的modbus将(更新值)写入寄存器

我可以使用03函数代码读取 modbus 中的寄存器值,此外,我还可以通过 Modbus 协议用寄存器内部的相同值重写当前存在的值,但是当我尝试修改时寄存器的内容会引发错误说socket.timeout: timed out。如何通过 Modbus 协议修改寄存器的内容。

这是代码。

0 投票
0 回答
1205 浏览

linux - RS485串行通讯

我有两台嵌入式机器(同一制造商)。我已经通过 2 线 Rs485 串行通信连接了两台机器。我这样接线(machine1-pin Tx+ 到 machine2- pin Tx+ 和 machine1- pin Tx- 到 machine2- pin Tx-)。我已经在 minicom 工具上测试过数据传输。在那一台机器1只传输数据,另一台机器2作为接收器。如何使它充当 machine1 作为接收器和 machine2 作为发送器?波特率:9600,无硬件和软件流量控制,Xon/off-None。

0 投票
1 回答
1317 浏览

java - Java - jSSC 库和 RTS 信号不激活/停用

我正在使用 jSSC 库,我需要实现 RTS 信号,因为我需要连接到一些 RS-485 客户端,所以我将此信号用于 SN75176 的 DE/RE。问题是当我激活或停用 RTS 信号时,我在 MAX232 和 SN75176 之间有一个 LED 来指示 RTS 是否处于活动状态,它似乎没有按我的需要工作。这是代码:

这是输出:


运行:端口名称:COM1 端口打开:true 参数设置:true 设置流量控制模式:true 获取流量控制模式:3 Primer RTS tiene que ser False RTS 信号:false

客户数量:1

Ingrese rele que desea activar (A = 1, B = 2, M = 3, N = 4, OFF = 6): 1

客户数量:2

Ingrese rele que desea activar (A = 1, B = 2, M = 3, N = 4, OFF = 6): 2

客户数量:3

Ingrese rele que desea activar (A = 1, B = 2, M = 3, N = 4, OFF = 6): 3

Enviando datos al Cliente numero 1 Segundo RTS tiene que ser True RTS 信号:假 Paso el segundo RTS (True) y esta por mandar

BUILD STOPPED(总时间:57 分 38 秒)

我究竟做错了什么?

随意询问是否缺少某些信息或某事。不清楚。

提前致以亲切的问候和感谢。

0 投票
2 回答
5248 浏览

serial-communication - Modbus RTU - 3.5 个字符时间

我是 Modbus 新手,正在使用 Modbus RTU 开发应用程序。我想知道如何找出 RTU 消息帧分离时间。在 Modbus RTU 规范中,它提到了 3.5 个字符的时间,但没有更多关于我如何决定这个间隔的数据。任何想法?

0 投票
2 回答
1425 浏览

python - 通过 RS-485 串行通讯时控制 RTS 线

我正在尝试通过带有内核 2.6.39 的 Linux 机器上的串行接口 RS-485 进行通信。我将这个分线板pySerial模块一起使用。当我通过界面写东西时,我的数据经常被破坏。在分线板的产品页面上有人提到:

我从一开始就注意到,在发送串行数据之后,我需要延迟大约 25 毫秒,然后才能将 RTS 线拉低,否则传输会损坏或无法传输。

我发现 RTS 线在我写入字节时很快变高,但在写入后立即变低。我如何保持这条线高(更长一点)?

0 投票
1 回答
3237 浏览

networking - RS485:简单可靠的协议

我正在尝试为 2 线 RS485 总线设计一个简单可靠的主/从协议。

总线上的所有节点都有一个唯一的地址。一个节点是主节点,它是唯一能够开始通信的节点。在主节点向它们发送请求之前,所有其他节点都无法发送任何内容。

我在考虑简单的“请求/响应”协议:主机向从机发送请求并等待它的回答。之后,M 向另一个从站发送请求。可能会发生三种情况。

  1. 两个帧(请求和响应)都被目的地正确接收,事务结束没有问题。
  2. 从站没有收到来自主站的请求(校验和错误)。超时后,主机再次发送请求。没问题。
  3. 主站未收到从站的响应(校验和错误)。超时后,master 可以再次发送请求。

恕我直言,最后一种情况是有问题的。从站无法理解第二个请求是否与第一个完全相同,因此它处理了两次请求。如果请求是“将电机移动两步”、“在上次请求后是否按下开关”、“切换继电器”等等,会发生什么?

我认为最简单的“请求/响应”协议不能很好地工作,除非应用程序级别知道协议的限制并避免如果传输两次就会很危险的请求。

你有什么好的简单可靠的协议可以推荐吗?我不想重新发明轮子。

0 投票
3 回答
1297 浏览

ascii - Modbus RTU 与 ASCII

从带有 USB 转换器到 RS-485 网络的 Linux 主机 PC 查询设备,我们有机会使用带有校验和的 Modbus RTU 或 ASCII。

鉴于我们使用的是 Linux PC,我们可以自由地使用使用 libmodbus 或任何其他高级语言的 C 程序来使用 ASCII。

每种应用协议的优缺点是什么?

我知道 ASCII 不是一种协议,但它在这里有点像应用程序协议。

这篇文章有帮助,但在我看来并不完全清楚。在第一印象中,Modbus RTU 应该更轻,因此对 CRC 执行速度更快并且可能更安全。

真实世界的体验会很棒!

0 投票
2 回答
20901 浏览

communication - 计算 modbus RTU 3.5 字符时间

我是 Modbus 新手,正在使用 Modbus RTU 开发应用程序。我想知道如何找出 RTU 消息帧分离时间。在 Modbus RTU 规范中,它提到了 3.5 个字符的时间,但没有更多关于我如何决定这个间隔的数据。计算分离时间的步骤是什么?