精华内容
下载资源
问答
  • modbus 设备模拟器

    2018-08-03 13:14:43
    用于模拟基于Modbus ascii 的硬件,结合虚拟串口软件serial null,可以在PC上模拟硬件设备,调试客户端控制软件。对于开发调试 Modbus设备的上位机软件特别有用
  • 虚拟MODBUS 设备

    2012-04-26 11:29:07
    虚拟MODBUS 设备,用于MODBUS 设备的程序调试
  • 从命令行访问Modbus设备 作者: 日期: 2020-01-17 版权: MPL 2.0 版本: 0.1.5 手册部分: 1个 概要 modbus [-h] [-r寄存器] [-s SLAVE_ID] [-b BAUD] [-p STOP_BITS] [-P {e,o,n}] [-v]设备访问[访问.....
  • Modbus设备调试工具

    2014-09-10 08:00:32
    Modbus设备调试工具,汉化的。西门子的设备都可以用无问题。
  • 显控HMI与modbus设备驱动 简介pdf,显控HMI与modbus设备驱动 简介
  • 通过DTU与MODBUS设备交互的通讯协议,指令等。包括读写线圈、读写寄存器等指令,还提供了最常用的读数据寄存器和写数据寄存器的实例。
  • 使用NModBus组件读取modbus设备上的参数,温度和湿度,仅供新手使用,建议使用最新版vs打开运行。
  • 西门子plc与modbus设备进485通信详解(modbus多机通信)

    接触西门子s7-200一段时间后,接手一个通信项目,需要在触摸屏上显示三台pid温度表的温度。

    一开始打算触摸屏多余的串口转485直接连接温度表,后来由于一直通信不上,怀疑触摸屏的问题,于是打算用plc来读取pid表,走的是modbus协议,即port1接三台pid表,port0用来连触摸屏以及下载程序。好了,直接上代码。

    1、定义port1口的modbus属性,注意,定义完后,如果要再用port1口下载程序的话,必须先把plc设成stop(专家请无视)。

    这里的奇偶校验是个坑,要找到合适的,否则error的值会一直是为3,没有返回值



    2、这里是关键了,轮询三台485连接的pid温度表,这里利用done来实现三台pid表的msg发送工作,这样也能保证返回数据互不干扰。




    3、同一时间只能有一个msg在工作,所以一定要让这几个m10.x分别释放


    4、解析返回的数据,这部分就比较简单了,到处都有范例



    经过一周的研究,总算把三台仪表的数据稳定的传出来,但是还有个疑问,modbus返回的数据里,为什么找不到地址码信息,只有返回41001的值,如果有地址码,就更好了。

    下周要继续研究分别写入三个pid表参数的功能,成功了再来分享。

    最后,感谢网络上那些开源的资料,虽然弯也没有少绕,哭,同时鄙视一下那些要注册才能看资料的“专业”网站,以及要各种xx币才能下载的资料。



    展开全文
  • VC++编写的Modbus协议的上位机程序,可作为数据采集模块的上位机程序或者Modbus设备的测试程序
  • golang 实现modbus设备通讯

    千次阅读 2018-07-05 17:24:55
    经过前面golang的基础学习,我们开始写点东西吧一, modbus设备我拿到一台冷链设备,是浙港智能的无线测温监控系统,带了一个windows上的二进制程序,可以使用。但是我们的目标是,windows和linux都能使用啊,联系...

    经过前面golang的基础学习,我们开始写点东西吧

    一, modbus设备

    我拿到一台冷链设备,是浙港智能的无线测温监控系统,带了一个windows上的二进制程序,可以使用。但是我们的目标是,windows和linux都能使用啊,联系厂家也没能拿到芯片手册,坑爹呀。 无奈之下,反编译之,顺利搞定。正确拿到了温度的起始地址。初始条件已经具备,可以开发了。

    二,golang准备

    我们采用已有的modbus库来实现。 目前modbus有三种实现方式:RTU/ASCII/TCP 我根据我的设备情况选择了RTU方式,即串口连接方式。 golang的modbus库提供了底层api的支持,我们只需要做好下面几件事: 1,因为要支持文件配置,定义了如下:

    // 定义了EnvMap,其目的是存放各个配置项,便于程序随时使用,下面紧跟的是每个具体的配置项的key
    var EnvMap = make(map[string]string)
    var RtuDevice = "rtudevice"
    var BaudRate = "baudrate"
    var DataBits = "databits"
    var Parity = "parity"
    var StopBits = "stopbits"
    var SlaveId = "slaveid"
    var SerialTimeout = "serialtimeout"
    var Address = "address"
    var Len = "len"
    
    // 定义上面每个key的初始化值
    const(
    	DefaultRtuDevcie = "/dev/ttyUSB0"
    	DefaultBaudRate = "19200"
    	DefaultDataBits = "8"
    	DefaultParity = "N"
    	DefaultStopBits = "1"
    	DefaultSlaveId = "1"
    	DefaultSerialTimeout = "5"
    	DefaultAddress = "1105"
    	DefaultLen = "20"
    )
    
    // 定义配置文件的名称
    const (
    	workerConf = "modbus.conf"
    )

    2,初始化配置项,如果配置文件存在,就读取,按照文件内容配置,如果不存在使用我们配置的默认值。

    func initConfMap() {
    	strs := ReadFile(workerConf)
    	if strs != "" {
    		result := []string{}
    		for _, lineStr := range strings.Split(strs, "\n") {
    			lineStr = strings.TrimSpace(lineStr)
    			if lineStr == "" {
    				continue
    			}
    			result = strings.Split(lineStr, "=")
    			k := result[0]
    			v := result[1]
    			EnvMap[k] = v
    		}
    	}
    
    	// give a default value
    	if EnvMap[RtuDevice] == "" {
    		EnvMap[RtuDevice] = DefaultRtuDevcie
    	}
    	if EnvMap[BaudRate] == "" {
    		EnvMap[BaudRate] = DefaultBaudRate
    	}
    	if EnvMap[DataBits] == "" {
    		EnvMap[DataBits] = DefaultDataBits
    	}
    	if EnvMap[Parity] == "" {
    		EnvMap[Parity] = DefaultParity
    	}
    	if EnvMap[StopBits] == "" {
    		EnvMap[StopBits] = DefaultStopBits
    	}
    	if EnvMap[SlaveId] == "" {
    		EnvMap[SlaveId] = DefaultSlaveId
    	}
    	if EnvMap[SerialTimeout] == "" {
    		EnvMap[SerialTimeout] = DefaultSerialTimeout
    	}
    	if EnvMap[Address] == "" {
    		EnvMap[Address] = DefaultAddress
    	}
    	if EnvMap[Len] == "" {
    		EnvMap[Len] = DefaultLen
    	}
    }


    3,串口的配置

    // 根据串口设备初始化一个handler
    handler := modbus.NewRTUClientHandler(EnvMap[RtuDevice])
    // 配置handler的波特率
    baudRate, _ := strconv.Atoi(EnvMap[BaudRate])
    handler.BaudRate = baudRate
    // 数据位
    dataBits, _ := strconv.Atoi(EnvMap[DataBits])
    handler.DataBits = dataBits
    // 校验位
    handler.Parity = EnvMap[Parity]
    // 停止位
    stopBits, _ := strconv.Atoi(EnvMap[StopBits])
    handler.StopBits = stopBits
    // modbus SlaveId
    slaveId, _ := strconv.Atoi(EnvMap[SlaveId])
    handler.SlaveId = byte(slaveId)
    // 超时时间
    serialTimeout, _ := strconv.Atoi(EnvMap[SerialTimeout])
    handler.Timeout = time.Duration(serialTimeout) * time.Second

    4,串口连接

    err := handler.Connect()
    defer handler.Close()

    5,根据handler创建client

    client := modbus.NewClient(handler)

    6,读取冷链设备的20个无线温度标签的温度值

    var i uint16
    inputLen, _ := strconv.ParseInt(EnvMap[Len], 10, 16)
    len := uint16(inputLen)
    inputAddr, _ := strconv.Atoi(EnvMap[Address])
    address := uint16(inputAddr)
    //log.Println("len: ", len)
    myS1 := make([]string, len)
    for i=0; i<len; i++ {
    	results, err := gClient.ReadHoldingRegisters(address+i, 1)
    	if err == nil {
    		//log.Println("label = ", i)
    	} else {
    		log.Println("err: ", err)
    	}
    	a := byteToInt([]uint8{0, 0, 0, results[0]})
    	b := byteToInt([]uint8{0, 0, 0, results[1]})
    	var temperature = float64((a*256)+b) / 100
    	//log.Println("temperature: ", temperature)
    	myS1[i] = strconv.FormatFloat(temperature, 'f', 2, 64)
    }
    log.Println("array: ", myS1)

    至此,我们得到了一个关于温度的string数组,在此数组上可以架构我们的业务了。

    有不清楚的地方随时可以咨询我,此外,闲来没事,还实现了一版java版的代码,篇幅关系就不多介绍了,有兴趣的可以私信我。

    mail:yhp.linux@gmail.com


    展开全文
  • 自动测试:用于Modbus设备的自动化测试套件
  • 通用Modbus设备调试工具汉化版,支持串口和网络调试,相当稳定好用。
  • 远创智控MPI-ETH-YC01Puls转以太网模块支持Modbus功能,可作为Modbus从站,实现PLC与其他Modbus设备的通讯。 一、 Modbus从站功能介绍 1.1功能和应用 远创智控MPI-ETH-YC01Puls桥接型的扩展母口作为Modbus ...

      远创智控MPI-ETH-YC01Puls转以太网模块支持 Modbus 功能,可作为 Modbus 从站,实现 PLC 与其他 Modbus 设备的通讯。

    001

    一、   Modbus 从站功能介绍

     

    1.1  功能和应用

    远创智控MPI-ETH-YC01Puls 桥接型的扩展母口作为 Modbus RTU 从站运行,外部具备 Modbus RTU 主站的设备通过Modbus 协议访问以太网模块九针公口所连接的西门子 PLC 数据。应用于 DCS 系统或者触摸屏等作为Modbus 主站设备读写西门子PLC 数据。

    1.2  通讯线连接

    Modbus 主站设备的 RS485 接口连接到远创智控MPI-ETH-YC01Puls桥接型的扩展通讯口,以太网模块扩展通讯口的针脚定义:

     

    以太网模块扩展通讯口引脚 DSUB9 母口

    定义

    说明

    第 3 脚

    RX/TX+

    RS485 信号正

    第 8 脚

    RX/TX-

    RS485 信号负

    第 5 脚

    GND

    RS485 信号地

     

    1.3  远创智控MPI-ETH-YC01Puls 配置

    配置步骤:NetDevice 搜索--参数配置--扩展总线接口--Modbus 从站。

    1.3.1.电脑连接 远创智控MPI-ETH-YC01Puls 转以太网模块,运行 NetDevice(V1013 版本以上)配置软件,选择查找到的NetDevice 转以太网模块,点击按钮栏【修改设备参数】按钮。

    1.3.2.在参数配置界面左侧选择【S7 总线接口参数配置】,右侧页面选择【扩展总线接口】,设置【功能选择】为 Modbus从站,设置波特率、数据位、停止位和奇偶校验参数。

    002

     1.3.3.     在参数配置界面左侧选择【Modbus 从站】,右侧页面点击【新建命令】配置数据交换命令。

    003

     

    1.3.4.     设置好后点击【下载参数】按钮,将参数下载到以太网模块。

    1.4  Modbus 测试

    Modbus 测试可采用 ModScan 软件,该软件作Modbus 主站,去连接 以太网模块。

    1.4.1.     采用一根 USB 转 RS485 的转换线,USB 端口接入计算机,RS485 端子连接一根PROFIBUS 电缆和总线插头,将插头插入MPI-ETH-YC01Puls的扩展通讯口。

    1.4.2.     在计算机上运行 ModScan.exe,点击“Connection”,设置相应的连接参数,此处 USB 连接的串口号可在【计算机】【设备管理器】里查看,这里为 COM6口,波特率,数据位,校验位, 停止位设置与以太网模块扩展口参数一致;

    004

    1.4.3.     Device Id 与西门子 PLC 的通讯口站地址设成一样,如 2。读取了线圈 00001 起始的 100 个线圈状态,查Modbus 映射表可知为 Q0.0~Q12.4 的值;

    005

    1.4.4.     用 NetDevice 诊断 MPI-ETH-YC01Puls扩展总线的状态。

     

    006

     

    1.4.5.     总结:

    1)    MPI-ETH-YC01Puls的 Modbus 从站功能根据预置Modbus 映射表进行通讯,无须在PLC 中编写程序;

    2)    西门子 PLC 的通讯口站地址就是 Modbus 从站地址;

    3)    MPI-ETH-YC01Puls的 Modbus 从站通讯并不影响 MPI-ETH-YC01Puls 的以太网通讯,上位机(如编程软件、监控组态软件、监控组态软件、以太网触摸屏等)仍然可以通过以太网读写PLC 数据。

    4)    提高 PLC 的波特率(如 S7-200 设置为 187.5Kbps)和MPI-ETH-YC01Puls扩展通讯口的波特率(最高256Kbps)可以加快 Modbus 数据采集的速度;如果 Modbus 通讯线较长应适当降低波特率。

    展开全文
  • Modbus设备调试工具、支持大部分指令、网口及串口都可以.rar
  • 远创智控MPI-ETH-YC01Puls转以太网模块支持Modbus功能,可作为Modbus主站或者Modbus从站,实现PLC与其他Modbus设备的通讯。 一、 Modbus主站功能介绍 1.1功能和应用 远创智控MPI-ETH-YC01Puls的扩展母口...

      远创智控MPI-ETH-YC01Puls转以太网模块支持 Modbus 功能,可作为 Modbus 主站或者 Modbus 从站,实现 PLC 与其他 Modbus 设备的通讯。

    image

    一、   Modbus 主站功能介绍

    1.1  功能和应用

    远创智控MPI-ETH-YC01Puls 的扩展母口作为 Modbus 主站运行,连接外部 Modbus 仪表,根据预置命令在西门子 PLC 和Modbus 仪表之间交换数据。应用于西门子 PLC 和 Modbus 仪表进行通讯。

    远创智控MPI-ETH-YC01Puls 可最多配置 72 条数据交换命令,可以传送的数据类型包括位、字节和字。单条命令最多一次传送连续的 100 个字(寄存器),对 Modbus 站点数目并无限制。

    1.2  通讯线连接

    远创智控MPI-ETH-YC01Puls 的扩展总线接口连接外部 Modbus 仪表,桥接模式下,以太网模块扩展总线接口的针脚定义:

    以太网模块扩展通讯口引脚 DSUB9 母口

    定义

    说明

    第 3 脚

    RX/TX+

    RS485 信号正

    第 8 脚

    RX/TX-

    RS485 信号负

    第 5 脚

    GND

    RS485 信号地

     

    1.3  远创智控MPI-ETH-YC01Puls 配置

    配置步骤:NetDevice 搜索--参数配置--扩展总线接口--Modbus 从站。

    1.3.1.电脑连接 远创智控MPI-ETH-YC01Puls 转以太网模块,运行 NetDevice(V1013 版本以上)配置软件,选择查找到的NetDevice 转以太网模块,点击按钮栏【修改设备参数】按钮。

    1.3.2.在参数配置界面左侧选择【S7 总线接口参数配置】,右侧页面选择【扩展总线接口】,设置【功能选择】为 Modbus主站,设置波特率、数据位、停止位和奇偶校验参数。如果为多 Modbus 从站设备的总线网络,建议设定通讯同步时间,一般为 30~50mS;

    image

    1.3.3.     在参数配置界面左侧选择【Modbus 主站】,右侧页面点击【新建命令】配置数据交换命令。

    image

    1.3.4.     编辑新建 Modbus 数据传送命令对话框,配置完成后点击【检查】查看有无错误,点击【确定】保存该命令。

    image

    如上:

    1)    数据传送方向

    ModbusS7:读取 Modbus 仪表数据传送到西门子PLC;

    S7Modbus:读取西门子 PLC 数据传送到 Modbus 仪表; 传送的数据个数、数据类型和数据区域

    对于位传送,只能传送一个位,数据区域:COIL 和 INPUT;

    对于字节传送,最多连续的 200 个字节,数据区域:COIL 和 INPUT;字节传送只能是 ModbusS7 方向。

    对于字传送,最多连续的 100 个字,数据区域:INPUT REG 和 HOLDING REG(输入寄存器和保持寄存器)。

    2)    S7 站点的起始地址:指定PLC 的通讯口站地址和传送区域,对于S7-200 的V 区请选择DB1。另外对于 S7-200 的SM/AI 区只能读取,不能写入。

    3)    Modbus 站点的起始地址:指定 Modbus 站号和数据区起始地址。另外对于 INPUT REG 只能读取不能写入。

    1.3.5.     命令示例

    1)    S7Modbus 字传送:读取PLC 地址为 2 的 DB10.DBW0~18 传送到 Mdobus 1 号站的 40001(HoldingRegsiter 保持寄存器 1)开始的 10 个字。

    2)    S7Modbus 字传送:读取 PLC 地址为 2 的 QW0~18 传送到 Mdobus 1 号站的 40001(HoldingRegsiter 保持寄存器1)开始的 10 个字。

    3)    ModbusS7 字节传送:读取 Modbus 1 号站的 00001(Coil 线圈 1)~00008(Coil 线圈 8) 之间的数据传送到 2 号PLC 的 MB0。

    4)    ModbusS7 位传送:读取 Modbus 1 号站的 00001(Coil 线圈 1)数据传送到 2 号 PLC 的Q0.0。

    image

     

    1.3.6.     配置完成后点击【下载参数】按钮,将参数下载到 远创智控MPI-ETH-YC01Puls;设备重启运行后可对运行状态进行监视;

    image

    1.4  通讯测试

    Modbus 仪表较常见的有各种智能温控仪,示例以集成 ModbusRTU 从站通讯口的温控器仪表为例, 说明如何实现 远创智控MPI-ETH-YC01Puls 的 Modbus 主站数据通讯。示例功能:将两台温控仪表的实际温度值(PV)分别读取到一台S7-300 的DB1.DBW100 和DB1.DBW102数据区;将 S7-300 的 DB1.DBW200 和 DB1.DBW202 数据作为温度设定值(SV)分别传送到两台温控仪表。

    1.4.1.     接线:用 PROFIBUS 电缆连接两台温控器,将 PROFIBUS 网络插头插在 远创智控MPI-ETH-YC01Puls 的扩展总线接口上。如果自制通讯线,远创智控MPI-ETH-YC01Puls 扩展总线接口的 3 脚接 RS485+(接温控器 A 端口),8 脚接RS485-(接温控器B 端口),5 脚接 RS485 地。

    1.4.2.     设置温控器参数为 Modbus 通讯协议,地址分别为 1 和 2,设置 9600bps 波特率,8 数据位,偶校验,一个停止位;

    1.4.3.     配置 远创智控MPI-ETH-YC01Puls 参数,下载参数。

    1)    扩展总线接口参数:Modbus 主站,9600bps 波特率,8 位数据位,1 位停止位,偶校验。

    2)    配置 Modbus 主站命令:

    温控器的当前温度(PV 值)在保持寄存器 16#14,即保持寄存器的 20;设定值(SP 值) 在保持寄存器的 16#28,即保持寄存器的 40。

    按示例要求配置如下命令:

    image

    1.4.4.     点击参数配置页面的【Modbus 执行监视】,查看命令执行信息。

     

    image

     

    1.4.5.     打开 Step7 软件,连接 远创智控MPI-ETH-YC01Puls,在监控表中输入 DB1.DBW100,DB1.DBW102,DB1.DBW200 和 DB1.DBW202,查DB1.DBW100/1002 是否为温控器的实际温度,修改 DB1.DBW200/2002 查看温控器设定温度是否一致。

    image

    1.4.6.     总结:

    1)    远创智控MPI-ETH-YC01Puls 的 Modbus 主站功能依据预先配置的数据交换命令自动执行 Modbus 仪表和 PLC 之间的数据传输,无须在PLC 中编程;

    2)    远创智控MPI-ETH-YC01Puls 的 Modbus 主站通讯并不影响上位机的以太网通讯,上位机(如编程软件、监控组态软件、以太网触摸屏等)仍然可以通过以太网读写 PLC 数据;

    3)    利用命令的连续数据区多字节/字传送可减少每个站点的命令数,从而增加可通讯站点;

    4)    对于位传送,可以采用字节数据类型,连续的 8 个位值将直接传送到PLC 中的一个字节地址;

    5)    提高 PLC 的波特率(如 S7-200 设置为 187.5Kbps)和 远创智控MPI-ETH-YC01Puls 扩展通讯口的波特率(最高256Kbps)可以加快 Modbus 数据交换的速度;如果 Modbus 通讯线较长应适当降低波特率;

    6)    所有的 Modbus 站点需设置为站地址不一样,波特率、数据位和校验位应该相同并和 远创智控MPI-ETH-YC01Puls 扩展通讯口参数一致;

    展开全文
  • 1、准备modbus设备,我们下载一个ModSim32软件,模拟终端设备。安装完成后,打开软件。 选择modbus/tcp连接,默认端口502. 2、选择Device ID=1,功能码03,修改40101地址数据为222。 3、打开mbtools文件夹,进入...
  • Modbus设备仿真程序

    2016-04-09 22:25:29
    方便的modbus客户端程序测试工具
  • MThings可快速便捷完成MODBUS设备在线状态扫描,操作步骤如下: 1、创建串口设备(模拟主机),地址区间设置为最大:1~247,点击“添加”按钮 2、进入数据页面,选择任一设备,添加一条测试数据,并同步至其它...
  • 关键词:Modbus、通用串口、串口协议、串口通信、协议转换 一、引言 现代工业的迅速发展,不断促进着自动化控制技术及设备通信技术的创新和发展。当前,PLC、DCS、 智能仪表等已广泛应用...二、SS-431 将非 Modbus 设备
  • S7-200通过自由口连接MODBUS设备
  • 第三方Modbus设备与霍尼韦尔EBI的集成
  • 不同厂商生产的符合MODBUS协议的控制设备可以连成工业网络,进行集中监控。MODBUS协议采用主从(master-slave)技术,是一种问答方式的通信协议。每次通信均由主机发出数据请求信息,从机接收到正确消息后就可以发送...
  • Android通过串口操控Modbus设备

    热门讨论 2018-03-16 16:10:38
    在单板机承载的Android系统中,通过串口以Modbus RTU协议操控PLC的类库。改编自python类库modbus_tk。
  • 我们在连接modbus设备的时候经常会有一个问题,不知道这个设备的串口参数和modbus地址,导致无法与设备通讯。 下面就介绍一个快捷方法,通过使用串口调试软件来实现自动化寻址。 步骤一、下载一个罗湖斯串口调试...
  • 1、下载两个软件modbus poll与modbus slave 地址在...2、我是根据网管软件来设置rs485设备是客户端模式 192.168.16.8是我电脑本机(服务器)的ip地址 8999就是服务器的端口,也就是本机的端口 modbus pol...
  • downloadfile-三菱 -三菱FX3U利用FX3U-M485BD通讯模块与MODBUS设备通讯_看图王
  • 不同厂商生产的符合MODBUS协议的控制设备可以连成工业网络,进行集中监控。MODBUS协议采用主从(master-slave)技术,是一种问答方式的通信协议。每次通信均由主机发出数据请求信息,从机接收到正确消息后就可以发送...
  • 嵌入式设备的接口通信开发过程中,MODBUS协议时常作为一种数据传输协议,负责采集终端(传感器)设备数据,或上传数据至就地数据服务器。如下图中的“嵌入式数据采集设备”作为系统中数据采集和传输的关键节点,同时...
  • 寄存器地址:查询设备地址表 北醒雷达Dist在0x0000开始 读取寄存器长度:雷达数据长度值 格式:MODBUS RTU 串口协议 北醒默认:波特率115200、8N1 软件下载链接 链接: ...
  • 实现有MODBUS 协议的工业仪器仪表,可以对内置的参数,或数据批量读取或写入。调试串口,调试485等功能。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,613
精华内容 3,445
关键字:

modbus设备