This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F28335:如何在 MODBUS 中动态设置从地址

Guru**** 2589300 points
Other Parts Discussed in Thread: TMS320F28335

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/666341/ccs-tms320f28335-how-to-set-slave-addresses-dynamically-in-modbus

器件型号:TMS320F28335

工具/软件:Code Composer Studio

我正在学习 MODBUS。 我 是这个领域的初学者。  当  我 在 TMS320F28335中使用 SCI 模块来实现 MODBUS 协议时、是否有人可以帮助我了解如何在 MODBUS RTU 中将地址分配给不同的从器件。  主设备 是否会动态分配1到247之间的一些值?  无法在 所有器件中预定义它? 有人能详细解释一下吗?   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    从器件地址通常是静态的(实际上、我从未见过动态从 Modbus 地址)。  这样做的原因是、您通常希望准确知道您要与哪个传感器或器件通信、而无需动态发现它的开销。  请记住、当认为9600波特对于大多数情况来说足够快时、Modbus 就在附近。

    在许多现有器 件中、Modbus 地址可由 DIP 开关或命令设置为默认地址(通常为1或2的地址)。  某些器件具有小显示屏和按钮、允许您在器件上设置地址、尤其是许多电机驱动器(VD)都是这样。

    启用了 Modbus 的 VFD 示例:

    https://www.hitachiacdrive.com/wp-content/uploads/2013/05/NE-S1QuickReferenceGuide.pdf

    见第8章。  通过从器件上的显示屏手动设置 Modbus 地址(第8.4节)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    感谢您的回答。 我打算使用 TMS320F28335作为我的从器件、使用 PC 作为我的主器件。 我将如何像您提到的那样将 Modbus 地址设置为"by commands to a default address"? 请您解释一下。 我是这个领域的初学者。 主器件是否应该知道从器件的地址以便开始通信? 因此、如果没有地址主器件、就无法正确启动通信。 那么、您是否意味着用户应该通过从器件代码在从器件的某些寄存器中设置一些地址、并将所有这些使用的地址存储在主器件中、例如查找表、以便主器件知道哪个地址属于哪个从器件?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    看看...
    advdownload.advantech.com/.../UM-ADAM-4000_series-Ed0-1-EN.pdf
    第23页(第2.2节)

    这给出了一个默认情况下器件地址为0x01的示例。 首次设置时,您需要将其连接到计算机(仅限于计算机,没有其它设备),并向其提供更改地址的命令。 这就是您设置此器件的从器件地址的方式。

    完成此操作后、您可以将其安装到网络上、其他从站具有所有唯一地址。

    ===

    现在、为了进一步说明、让我们来做一个假设案例:

    假设您的器件有两个开关、一个是"复位"、另一个是"恢复为默认值"。 如果用户在按下然后释放"reset"按钮时按住"revert to default"、则器件会将其所有设置恢复为"Factory default"。 这包括将其从器件地址设置为0x01。

    现在、您将该设备连接到您的计算机、并且仅连接该设备。 您向地址为0x01的器件发送 Modbus 命令。 该命令告诉器件将其地址更改为0x42。  您的计算机在此处充当 Modbus 主站,但它未连接至您的系统。

    现在、您断开该设备的连接、并使用许多从设备将其安装到您的系统中。 您刚刚安装的此器件应该是唯一一个地址为0x42的器件。 您转到控制站(Modbus 主站)并将其设置为与0x42通话。 设备现在可以告诉您压力为100KPSI、设备即将爆炸。  (直到您意识到主软件的扩展错误)。

    请注意、在上面的"您的计算机"和"控制站"是两种不同的东西。 "您的计算机"应该是一台单独的计算机、它没有连接到具有许多从设备的系统。 "控制站"可能是控制化学加工厂的计算机、该厂有许多从设备。

    ====

    要回答您的最后一个问题:

    是的、主器件需要知道从器件所在的位置以及它们的地址。  在像化工厂一样的系统中、所有仪器和控件(P&ID)的图纸均提供了所有器件的名称。  在某个地方、应该有一个表将这些器件与唯一地址相匹配。  主控制站的软件应配置为了解如何与所有这些器件通信、以获取有关工厂中发生的情况的信息:压力、温度、流量等  通常、对于基于 Modbus 的系统、控制站的软件基本上配置为轮询器件列表中预先编程的寄存器和线圈列表。  可能每秒一次、甚至更慢。