您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页uC/Modbus 用户手册——第一节

uC/Modbus 用户手册——第一节

来源:宝玛科技网

 


这篇文档对uC/Modbus进行叙述,实现了Modicon Modbus协议(简称Modbus)以及Modbus协议的“丹尼尔扩展”,在Daniel Flow Products中详述。

Modbus协议的更多详细信息,参考Modicon的:

Modicon Modbus Protocol Reference Guide

PI–MBUS–300 Rev. J

Modbus协议包含接收和发送预定义的数据包,这里称为“帧”。Modbus协议操作两种类型的数据帧,一种是ASCII帧,一种是远程终端单元(RTU)帧。ASCII帧是一种基于ASCII十六进制字符的数据帧,而RTU帧这是一个严格的二进制实现。ASCII模式更容易实现与调试,但是只能提供RTU模式一半的传输速率。在uC/Modbus中您可以使用任意模式,因为Micrium已经全部实现。

uC/Modbus可以支持任意数量的通信通道。每个通道上的操作模式都可以是ASCII或RTU,并且可以按通道进行选择。

图1-1展示了使用uC/Modbus设计的产品与其他Modbus主机和从机产品之间的关系。“串行通道”通常是RS-232C或RS-485异步串行接口,通常是UART(通用异步收发器)。

图1-1 基于Modbus的产品之间的关系

主机(也称为客户端)在系统中启动所有数据传输,发送到一个或多个从机(也称为服务器)。也就是,只有Master(Client)可以从Slave(Server)读取数据或向其写入值。

uC/Modbus可以做到看起来像有多个主/从端口。事实上,uC/Modbus允许您从一个目标系统中组合多达250个主/从端口!

uC/Modbus-S表示您的产品包含uC/Modbus的Modbus从机实现,uC/Modbus-M表示您的产品包含uC/Modbus的Modbus主机实现。

应该注意,产品可以同时包含uC/Modbus-S和uC/Modbus-M。但是,主端口和从端口将位于单独的端口上。

1.01

图1-2展示了多个产品(从设备)与一个主设备的关系。(假设使用RS-485)

图1-2 Modbus主机与从机在RS-485网络上的关系

图1-3展示多个产品(从机)与多个Modbus主句的关系(假设示例中使用RS-485),其中一种产品是uC/Modbus-M。需要注意,每个RS-485网络上只能有一个主机存在。

图1-3 RS-485网络上的多个Modbus主机与从机

图1-4展示多个产品(从机)与多个Modbus主机的关机的关系(假设示例中使用RS-232C)。可以看到,使用RS-232C,每一个主机需要直与每一个从机进行连接。uC/Modbus支持这种拓扑,因为每个产品可以拥有多个通信通道。虽然RS-232C需要多个点对点连接,但它的好处是提高了吞吐量,因为通信可以同时发生,而不是按顺序进行。

图1-4 RS-232C中的多个Modbus主机与从机

Modbus允许按整型、浮点(如果是丹尼尔扩展)和离散值从目标系统读取或写入目标系统。uC/Modbus可以读写:

    16-bit整型值,最大65536。

    32位浮点值,最大65536。

    多达65536个线圈和多达65536个离散输入。

整型和浮点请求不可以混合在同一个命令中。可以通过一条命令写入多个整型值(最多125个)和多个浮点值(最多62个)。

根据使用的处理器,可以选择运行uC/Modbus的速率,波特率可以是9600-256000。事实上可实现的波特率仅受限于CPU的性能,并不是uC/Modbus。

1.02 结构体系

图1-5展示uC/Modbus通信栈如何适配您的产品以及源文件与每个层的关系。

图1-5 模块之间的关系

MB代表ModBus,MBS代表ModBus Slave,MBM代表ModBus Master。以mb_开头的文件表示文件中的代码于Modbus Slave或Master。以mbs_开头的文件包含Modbus Slave特定的代码,当然,以mbm_开头的文件包含Modbus Master特定的代码。

F1-5(1)

F1-5(2)

F1-5(3)

这是应用程序专用代码,它知道如何处理Modbus ASCII和/或Modbus RTU数据包。 您不必修改此代码。

F1-5(4)

F1-5(5)

不论是否使用RTOS环境,,都可以使用uC/Modbus-S。uC/Modbus-M默认RTOS存在。当然,您可以使用任何RTOS,并且RTOS的细节被隔离在mb_os.c的文件中。uC/OS-II、uC/OS-III和Non-OS环境的代码已经提供,因此您的产品在使用uC/OS-II或uC/OS-III或不使用任何RTOS的时候,使用uC/Modbus-S是不需要修改这些代码的。mb_os.h文件仅在不运行RTOS的时候使用uC/Modbus-S才需要。在第8节中说明。

F1-5(6)

uC/Modbus不依赖于CPU以及您使用的编译器。但是您需要提供您的CPU和编译器的数据类型的信息。例如,您需要定义如下数据类型:

CPU_BOOLEAN Boolean (True or False, Yes or No, etc.)

CPU_INT08U 8 bit unsigned integer

CPU_INT16U 32 bit unsigned integer

CPU_INT32U 8 bit unsigned integer

CPU_FP32 32 bit IEEE754 floating-point

这些数据类型是需要的,因为uC/Modbus从不使用标准C的数据类型(如,char、short、int、long等),因为他们是不可移植的。

这些数据类型需要放置在cpu.h文件中。(后面在谈这个)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务