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

modbus通讯协议简介
modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为modbus master,从设备方使用的协议称为modbus slave。典型的主设备包括工控机和工业控制器等;典型的从设备如plc可编程控制器等。modbus通讯物理接口可以选用串口(包括rs232和rs485),也可以选择以太网口。其通信遵循以下的过程:
● 主设备向从设备发送请求
● 从设备分析并处理主设备的请求,然后向主设备发送结果
● 如果出现任何差错,从设备将返回一个异常功能码
英创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通讯协议

什么是 一次锂亚电池(ER10150)?
工业互联网将成为未来最大趋势之一
如何用伏安法测小灯泡电阻?
无“标”变有“标”?自动驾驶标准法规走出重要一步
福禄克电能质量记录仪三步就可完成振动测试
英创信息技术ModBus通讯协议软件包简介
宏发电力电器获TUV莱茵颁发LCA等4张证书,高效推进绿色低碳转型
欧盟制定人工智能白皮书,表示3-5年内禁止使用人脸识别技术
彭蕾将卸任蚂蚁金服董事长 CEO井贤栋将兼任董事长
电子式电表打开新的机遇,从AMR到AMI
中国广电将要建设全国一网的5G和有线交互协同的新网络?
SIMATIC S7-1500 PLC工艺模块及接线简析
谷歌 YouTube Xbox 版已支持 HDR 视频播放
盘点人工智能10大经典应用 原来AI早已渗透生活
大朋VR发布全新高端VR头盔设备,告别VR产品的模糊体验
这一次,告别iphone se还是告别iphone 6s?
三个最流行神经网络
晋华发展DRAM事业遭美国司法部列入限制零组件出口清单
真菌毒素检测仪使用注意事项
苹果将支持哪些5G频段?