• Modbus软件开发实战指南 之 开发自己的Modbus Poll工具


        在开发Modbus程序的过程中,也可以发现经常需要使用诸如Modbus Poll和Modbus Slave等辅助调试工具,

    用于验证MODBUS通讯消息是否正确。但是,Modbus Poll和Modbus Slave都属于共享软件,

    价格都在百美元左右,在未购买的情况下有时间或功能限制,怎么办呢?

        其实,我们完全可以开发自己的MODBUS辅助调试工具。

        

    那么先定一个小目标,开发一个简化版的Modbus Poll,能够方便调试MODBUS通讯,

    支持RTU模式和TCP模式,支持以下最常用MODBUS功能码,如:

    ²  01: Read coil status 读线圈状态

    ²  02: Read input status 读输入状态

    ²  03: Read holding register读保持寄存器

    ²  04: Read input registers 读输入寄存器

    ²  05: Force single coil 强制单线圈

    ²  06: Preset single register 预置单(保持)寄存器

    ²  15: Force multiple coils 强制写多线圈

    ²  16: Preset multiple registers 预置写多个(保持)寄存器

    RTU模式下,支持设置串口参数,如串口号、波特率、数据位、停止位、校验位等;TCP模式下,支持设置IP地址和端口号。

    另外,如果采用图形化界面,则将花较大的篇幅过多关注于GUI部分的代码编写,

    为了不影响关注重点,这里采用命令行方式开发,假设程序命名为modpoll.exe,命令行设定规则如下:

    modpoll.exe [--debug] [-m {rtu|tcp}] [-a<slave-addr=1>] [-c<read-no>=1]

                  [-r<start-addr>=100] [-t<f-type>] [-o<timeout-ms>=1000]

    [{rtu-params|tcp-params}] serialport|host [<write-data>]

    命令行各参数的意义如下:

    l   [--debug]:设置为debug模式,在debug模式下,将以十六进制方式打印通信数据。

    l   [-m {rtu|tcp}]:选择RTU或TCP模式,如-mrtu,-mtcp等。

    l   [-a<slave-addr=1>]:从设备地址,省略则默认为1。

    l   [-c<read-no>=1]:读/写寄存器的个数,省略则默认为1。

    l   [-r<start-addr>=100]:寄存器起始地址,省略则默认起始地址为100。

    l   [-t<f-type>]:功能码的取值,范围是0x01/0x02/0x03/0x04/0x05/0x06/0x0F/0x10。

    l   [-o<timeout-ms>=1000]:设置超时毫秒数,省略则默认为1000毫秒。

    l   [{rtu-params|tcp-params}]:设置串口或者TCP配置参数:

         RTU模式下,包括

    b<baud-rate>=9600      波特率,缺省默认为9600

    d{7|8}<data-bits>=8    数据位,缺省默认为8

    s{1|2}<stop-bits>=1    停止位,缺省默认为

    p{none|even|odd}=even  校验位,缺省默认为even偶校验

         TCP模式下,为p<port>=502,设置端口号。

    l   serialport|host:设置串口号或者IP地址,如COM1, COM2 ..或127.0.0.1等。

    l   [<write-data>]:写功能码的情况下,需写入的数据,多个数据的情况下中间用空格隔开,可以为十进制或者16进制。

    具体使用方法举例如下:

    ü   写数据(TCP方式):modpoll --debug -mtcp -t0x10 -r0 -p1502 127.0.0.1 0x01 0x02 0x03

    ü   写数据(RTU方式):modpoll --debug -mrtu -t0x06 -r10 -b19200 COM3 0x33

    ü   读数据(TCP方式):modpoll --debug -mtcp -t0x03 -r0 -c3 -p1502 127.0.0.1

    ü   读数据(RTU方式):modpoll --debug -mrtu -t0x03 -r0 -c3 -b19200 COM3

    至此,软件功能需求基本分析完毕,下面开始具体开发过程。

    待续。。。

  • 相关阅读:
    python 之Twsited
    python之 rabbitmq
    python 之redis
    异常处理
    python select
    线程与进程
    初识socket
    Position属性
    Http协议理解
    BFC(块级格式化上下文)
  • 原文地址:https://www.cnblogs.com/magic2008/p/6534752.html
Copyright © 2020-2023  润新知