0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术ModBus通讯协议软件包简介

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-14 09:38 次阅读

ModBus通讯协议简介

Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC编程控制器等。Modbus通讯物理接口可以选用串口(包括RS232RS485),也可以选择以太网口。其通信遵循以下的过程:

●主设备向从设备发送请求

●从设备分析并处理主设备的请求,然后向主设备发送结果

●如果出现任何差错,从设备将返回一个异常功能码

英创ModBus通讯协议软件产品简介

英创公司推出的ModBus通讯协议软件产品主要应用于英创ARM9嵌入式主板环境,英创工控主板均带有丰富的串口、网络资源、通用GPIO接口等,同时具有强大的处理能力。结合ModBus通讯协议软件,就可非常方便地构成符合ModBus通讯规范的主控(Master)及设备(Slave)的应用平台。针对ModBus通讯的主从方式这一特点,英创公司的ModBus通讯协议软件包分为两个可独立使用的部分,即“ModBus主控协议软件”(简称modbus_Master)以及“ModBus设备方协议软件”(简称modbus_Slave)。目前英创ModBus通讯协议软件运行于WinCE环境下,均以C函数加静态LIB库的形式提供给客户。其主要特征如下:

●非常适用于实时的工业应用

●可以支持基于串口的ModBus通讯协议应用或TCP的ModBus通讯协议应用

●RTU传输模式

●支持大多数的Modbus功能码操作,包括对线圈、离散开关输入的位操作,以及对寄存器的字节操作

●支持广播地址

●可以灵活设置ModBus通讯的超时时间

●可以获取通讯中传输协议的错误代码的详细信息

英创ModBus协议软件通讯关系图

英创ModBus协议软件支持的功能码

功能码 描述
1 读单个线圈
2 读离散量输入
3 读多个寄存器
4 读输入寄存器
5 写单个线圈
6 写单个寄存器
15 写多个线圈
16 写多个寄存器
22 屏蔽写寄存器
23 读/写寄存器

软件基本使用方法

为了方便应用程序的使用,对不同的通讯介质保持一致的代码形式,英创所提供的ModBus协议软件(包括modbus_Master和modbus_Slave)中的API函数可以同时支持基于串口和TCP的Modbus协议,应用程序只需要在调用初始化函数时,用不同参数区分即可,有关参数的说明请参见相应的头文件:modbus_Master.h和modbus_Slave.h

1、modbus_Master的应用

作为Modbus客户端模式的应用,主要是准备请求并向服务器设备发送请求,并等待服务器的响应。在做此类应用开发时,用户可参考Modbus标准文献以及被控设备的通讯接口数据手册,直接调用英创提供的modbus_Master软件包提供了相应的操作API函数,来完成对服务器设备的访问和控制。在进行此类应用开发时,用户只需要包含modbus_master.h/ modbus_master.lib 即可。

2、modbus_Slave的应用

作为ModBus服务器模式的应用,主要需要实现了对于ModBus应用报文的分析与响应,但这还只是ModBus整个通讯的一部分,另一部分是还需要有对应用数据的访问,这部分的内容则需要用户自己来进行定义。为了方便客户的使用,在modbus_Slave软件包中通过函数指针的形式,实现了这些用户接口函数的自动加载,将用户应用数据处理和ModBus应用报文响应关联起来。用户只需根据需求定义这些接口函数来实现相应的功能,各个函数具体的定义是通过专门的一个CPP文件:DataProvider.cpp来实现。

由此可见在这类的开发应用时,需包含两个部分的内容,一部分是 modbus_slave.h/ modbus_slave.lib定义的API函数;另一部分是DataProvider.h /DataProvider.cpp定义的用户数据接口函数,其中接口函数需要用户在DataProvider.cpp中具体实现。

为了及时地响应ModBus应用报文,需要注意的是在程序设计时应设计一个线程反复调用modbus_Slave执行函数,该函数为阻塞模式。

举例如下:

(1)启动modbus设备方协议

hPort = mbusSlave_StartupServer( _T('*'), 1, 10000, mbusSlave_Interface );

或者

hPort=mbusSlave_StartupServer( _T('COM3:9600-8-1-0'),1,10000, mbusSlave_Interface );

(2)线程中调用执行函数Serverloop 响应请求

while( 1 )

{

// 调用执行函数,用于对ModBus报文的分析和响应。

result = mbusSlave_ServerLoop( hPort );

if( result!=0 ) // 检查是否返回错误

{

// 出错处理:本例为获取并打印错误代码的文本信息

wcscpy( szText, mbusSlave_GetErrorText( result ) );

i1 = wcslen( szText );

if( i1>0 )

{

wcstombs( strText, szText, i1 );

printf( ' error code: %s!\n', strText );

}

}

}

之前英创公司提供的ModBus通讯协议软件,均是以C函数加静态库(modbus.lib或libmodbus.a文件)的形式提供给客户。随着越来越多的客户使用,英创将ModBus通讯协议,特别是主控协议软件(简称modbus_Master)以动态库(modbus_Master.dll或libmbusmaster.so文件)的形式预装到英创嵌入式工控主板内核系统中,以方便客户应用程序的调用。预装Modbus协议的工控主板包括英创ESM系列所有主板(ESM6802、ESM6800、ESM335x、ESM928x等)。

相关参考资料

4~20mA电流环采集应用方案 WinCE下的Modbus主控通讯协议软件
WinCE下的Modbus设备方协议软件 英创嵌入式Linux工控主板支持Modbus主控协议软件
Linux下的Modbus设备方协议软件介绍 ESM6802支持Qt MODBUS程序开发
在英创主板中预装Modbus通讯协议

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11224

    浏览量

    208897
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6085

    浏览量

    35210
收藏 人收藏

    评论

    相关推荐

    中科达荣获2024年软件信息技术服务优秀企业

    及前百家企业”名单。中科达凭借非凡的技术实力与持续的创新能力,成功入选“2024年度软件信息技术服务竞争力百强企业”以及“2024年软件
    的头像 发表于 10-30 11:44 378次阅读

    串口屏Modbus通讯协议详解

    Modbus是一种开放的通信协议,广泛应用于工业自动化领域。它定义了消息结构和设备间的通信方式,支持多种物理层网络,如RS-232、RS-485等。本文将详细介绍如何在串口屏上实现Modbus
    的头像 发表于 10-20 14:23 1263次阅读

    Modbus协议网关简介

    ,在工业控制系统中占据了重要地位。然而,随着工业自动化技术的不断发展,不同设备间通信协议的多样性成为了一个亟待解决的问题。Modbus协议网关作为这一背景下的产物,成为了连接不同协议
    的头像 发表于 09-23 14:51 198次阅读
    <b class='flag-5'>Modbus协议</b>网关<b class='flag-5'>简介</b>

    ModBus Scan32模拟软件的使用方法

    Modbus采用主从式通信,日常使用较多的是Modbus RTU和Modbus TCP/IP两种协议。我司仪表较多为Modbus RTU
    发表于 07-24 08:04

    Modbus协议转Profibus协议网关接温控表与PLC通讯

    Modbus协议转Profibus协议网关(XD-MDPB100)则是实现这一通讯的重要工具。Modbus转Profibus网关的主要功能是实现Mo
    的头像 发表于 06-21 11:31 1859次阅读
    <b class='flag-5'>Modbus协议</b>转Profibus<b class='flag-5'>协议</b>网关接温控表与PLC<b class='flag-5'>通讯</b>

    Modbus-RTU通讯协议是什么?

    Modbus-RTU通讯协议是一种串行通讯协议,它可以用于连接不同类型的设备,以实现远程监控和控制。Mo
    的头像 发表于 05-23 15:06 543次阅读

    RT-Thread Studio添加软件包报错怎么解决?

    RT-Thread Studio添加软件包报错ImportError: No module named psutil
    发表于 03-01 08:41

    RZ/G柔性软件包v2.0.1发布说明

    电子发烧友网站提供《RZ/G柔性软件包v2.0.1发布说明.pdf》资料免费下载
    发表于 02-21 10:48 0次下载
    RZ/G柔性<b class='flag-5'>软件包</b>v2.0.1发布说明

    RL78系列 Data Flash Library Type04软件包3.0版发布说明

    电子发烧友网站提供《RL78系列 Data Flash Library Type04软件包3.0版发布说明.pdf》资料免费下载
    发表于 02-19 10:06 0次下载
    RL78系列 Data Flash Library Type04<b class='flag-5'>软件包</b>3.0版发布说明

    软通动力与捷技术签订战略合作协议

    近日,软通动力信息技术(集团)股份有限公司(以下简称“软通动力”)与宁波捷技术股份有限公司(以下简称“捷技术”)正式签订战略合作
    的头像 发表于 02-03 16:35 1083次阅读

    RZ/G验证的Linux软件包V2.1.20-RT 修补程序应用指南

    电子发烧友网站提供《RZ/G验证的Linux软件包V2.1.20-RT 修补程序应用指南.pdf》资料免费下载
    发表于 01-03 14:12 0次下载
    RZ/G验证的Linux<b class='flag-5'>软件包</b>V2.1.20-RT 修补程序应用指南

    RZ/G验证的Linux软件包V2.1.20-RT组件列表

    电子发烧友网站提供《RZ/G验证的Linux软件包V2.1.20-RT组件列表.pdf》资料免费下载
    发表于 01-03 14:11 0次下载
    RZ/G验证的Linux<b class='flag-5'>软件包</b>V2.1.20-RT组件列表

    RZ/G验证的Linux软件包V2.1.20-RT 发布说明

    电子发烧友网站提供《RZ/G验证的Linux软件包V2.1.20-RT 发布说明.pdf》资料免费下载
    发表于 01-03 10:11 0次下载
    RZ/G验证的Linux<b class='flag-5'>软件包</b>V2.1.20-RT 发布说明

    MODBUS通讯协议有哪几种?

    MODBUS通讯协议是工业自动化领域中广泛使用的一种串行通信协议。它由美国Modicon公司于1979年开发,现在已经成为工业电子设备之间通信的标准。
    的头像 发表于 12-13 10:53 4425次阅读

    Modbus转Profinet网关连接EthernetIP协议的PLC和Modbus协议的仪表

    的Ethernet网络进行通讯。使用设备为PLC、Modbus 转EtherNET/IP网关、Modbus从站为气体探测仪。 项目中通讯配置方法:打开PLC的配置
    发表于 12-07 14:27