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