首页 > 其他分享 >记录学习modbus 的资料

记录学习modbus 的资料

时间:2023-12-19 09:25:35浏览次数:27  
标签:onFailed String 记录 void modbus 资料 public Log

modbus是一种串行通信协议,通过modbus从而达到控制plc的目的,现在的主流 也俨然成为了工业领域的通信标准。

modbus是一对一:一主一从 主发从回     一对多也可以但是也是一对一的模式 同时不能多个;如果支持广播 那么就是一对多  主发送 从不响应那种了 这种情况通信查询国标GBT 19582-2

一主多从通信,主机通过从机ID号来区分要通信的从机设备。从机ID范围为1~247,0为广播地址,248~255为用户自定义地址

modbus分为有线和无线,我大概是需要用到无线 

现在的4种通信形式分别为:RTU、ASCII、TCP、Plus

我学习tcp形式

TCP是一种网络协议,而Modbus/TCP就是基于网络协议上的一种应用层协议。其报文格式是十六进制的,由报头(2字节的帧序号+2字节的协议类型+2字节的数据长度+1字节的Slave ID)+数据两部分组成。由于该通信方式是基于TCP/IP这种可靠协议上,所以通信不需要有额外的校验机制。

安卓使用modbus tcp 简单通过网络查询到的使用方法

注意:PLC端需要开启Modbus TCP Server

具体内容:https://github.com/zgkxzx/Modbus4Android

引入

创建连接

/**
     * 初始化plc链接
     * @param modbusIp
     * @param modbusPort
     */
    public static void initModubusTCP(String modbusIp,Integer modbusPort){
        ModbusReq.getInstance().setParam(new ModbusParam()
                .setHost("192.168.124.189")
                .setPort(502)
                .setEncapsulated(false)
                .setKeepAlive(true)
                .setTimeout(2000)
                .setRetries(0))
                .init(new OnRequestBack<String>() {
                    @Override
                    public void onSuccess(String s) {
                        Log.d("modbus", "onSuccess " + s);
                    }
 
                    @Override
                    public void onFailed(String msg) {
                        Log.d("modbus", "onFailed " + msg);
                    }
                });
    }

 

读取线圈数据:读取slaveId = 1;数据地址为VB10001开始,向后5位的数据;


ModbusReq.getInstance().readDiscreteInput(new OnRequestBack<boolean[]>() { @Override public void onSuccess(boolean[] booleen) { Log.d("modbus", "readDiscreteInput onSuccess " + Arrays.toString(booleen)); } @Override public void onFailed(String msg) { Log.e("modbus", "readDiscreteInput onFailed " + msg); } },1,1,5);

 

写数据:向slaveId = 1,PLC地址为VB10001,中写入开关量:false(0)

ModbusReq.getInstance().writeCoil(new OnRequestBack<String>() {
                @Override
                public void onSuccess(String s) {
                    Log.e("modbus", "writeCoil onSuccess " + s);
                }
 
                @Override
                public void onFailed(String msg) {
                    Log.e("modus", "writeCoil onFailed " + msg);
                }
            },1,1,false);

其它读写类型可参考modbus4android中的readme文件

返回值代表的情况

 

 

modbus 可以添加物理设备去实现无线替换有线的情况

具体内容:https://it.sohu.com/a/662678507_120409421

 

测试工具MThings

具体内容:https://blog.51cto.com/u_12935/7851883

更多内容:https://blog.csdn.net/shi_xiaobin/article/details/127443774

 

标签:onFailed,String,记录,void,modbus,资料,public,Log
From: https://www.cnblogs.com/zhangxuetao/p/17912861.html

相关文章

  • 自动化查找并记录含图片文件夹的Python脚本
    功能介绍此Python脚本用于遍历指定的父目录,自动识别并记录所有包含图片文件(如PNG、JPG、GIF等格式)的子文件夹。脚本运行后,将在父目录下生成一个名为“文件夹名统计”的Excel表格,其中列出了所有含有图片的文件夹名称。这对于整理大量分散在不同子文件夹中的图片文件特别有用,尤其是......
  • 记录--没有await,如何处理“回调地狱”
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助太长不看不要嵌套使用函数。给每个函数命名并把他们放在你代码的顶层利用函数提升。先使用后声明。处理每一个异常编写可以复用的函数,并把他们封装成一个模块什么是“回调地狱”?异步Javascript代码,或者说使......
  • 2023最新中级难度C++面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-中级难度C++面试题合集问:什么是虚函数和纯虚函数?它们有什么区别?虚函数是一种在基类中声明的函数,它可以在派生类中被覆盖以实现多态性。纯虚函数是一种特殊的虚函数,它没有定义任何具体的行为,只声明了一个接口。纯虚函数的目的是为了让......
  • 2023最新高级难度C++面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-高级难度C++面试题合集问:详细解释一下C++中的虚继承(virtualinheritance)的概念及其应用场景。虚继承是一种特殊的继承方式,用于解决多重继承中可能出现的菱形继承问题。菱形继承会导致基类被复制多次,占用额外的内存,并可能导致数据混乱......
  • 安全漏洞修复记录
    1. 敏感信息泄露1.1. 6443/10251/10252敏感信息泄露上图中提示6443、10251、10252三个端口分别对应了K8S的kubelet API、kube-scheduler、kube-controller三个服务的通讯端口。访问URL显示这三个端口的指标、版本页面会显示敏感信息。所以我们需要做的是禁止三个端口外......
  • 使用docker编译OpenHarmony e2000记录
    使用docker编译OpenHarmonye2000记录目录使用docker编译OpenHarmonye2000记录0、环境准备1、安装docker2、编译docker镜像3、创建docker容器4、docker编译系统5、镜像推送6、镜像拉取0、环境准备参考device_board_phytium/e2000/README.md·Phytium嵌入式软件/Phytium-Ope......
  • 自由撰稿人如何快速记录灵感?随手记录灵感素材的电子记事本
    随着互联网的发展,催生了很多新的职业,其中“自由撰稿人”就是很多年轻人正在做的工作。而对于自由撰稿人来说,灵感是创作的源泉。然而,灵感往往稍纵即逝,如何快速记录下来,成为了我们面临的一大挑战。那么自由撰稿人如何快速记录灵感呢?其实想要快速记录灵感,我们可以在手机上使用一款便......
  • 2023最新高级难度MS SqlServer面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自[面试宝典-高级难度MSSqlServer面试题合集](https://offer.houxu6.top/tag/MSSqlServer)问:请简述SqlServer中的分布式查询的功能和用法。分布式查询是Microsoft®SQLServer支持的一项功能,它可以将来自多个数据库服务器的数据整合在一起,以......
  • 2023最新初级难度C++面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-初级难度C++面试题合集问:C++支持哪些基本数据类型?C++支持以下基本数据类型:布尔型、字符型、整型(包括短整型、长整型、无符号整型)、浮点型(包括单精度浮点型和双精度浮点型)、复数型以及枚举型等。此外,C++还提供了一些复合类型,如数组、结......
  • 上海法院起诉自如租房价格欺诈全程记录分享 All In One
    上海法院起诉自如租房价格欺诈全程记录分享AllInOne收集证据,打12348法律援助电话咨询,和解不成,正式起诉(起诉书、自诉、缴费、开庭、答辩状...)demos(......