spring boot 嵌入modbus,读取modbus中的数据
spring boot 嵌入modbus,读取modbus中的数据
·
1、maven依赖
<dependency>
<groupId>com.intelligt.modbus</groupId>
<artifactId>jlibmodbus</artifactId>
<version>1.2.9.11</version>
</dependency>
2、定义配置文件
modbus:
tcp:
ip: 127.0.0.1
port: 502
3、定义IModbusService接口
public interface IModbusService {
int readInputRegister(int slaveId, int offset,int quantity);
}
4、接口实现类
package com.example.modbus_test.service.impl;
import com.example.modbus_test.service.IModbusService;
import com.intelligt.modbus.jlibmodbus.master.ModbusMaster;
import com.intelligt.modbus.jlibmodbus.master.ModbusMasterFactory;
import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters;
import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.net.InetAddress;
import java.net.UnknownHostException;
@Service
@Slf4j
public class ModbusServiceImpl implements IModbusService {
private ModbusMaster master;
@Value("${modbus.tcp.ip}")
private String ip;
@Value("${modbus.tcp.port}")
private int port;
@PostConstruct
public void init() {
try {
TcpParameters tcpParameters=new TcpParameters();
tcpParameters.setHost(InetAddress.getByName(ip));
tcpParameters.setPort(port);
this.master=ModbusMasterFactory.createModbusMasterTCP(tcpParameters);
}catch (Exception ex){
ex.printStackTrace();
}
}
@Override
public int readInputRegister(int slaveId, int offset,int quantity) {
try {
if (!master.isConnected()) {
master.connect();// 开启连接
}
int[] result=master.readInputRegisters(slaveId, 0, quantity);
return result[offset];
}catch (Exception ex){
ex.printStackTrace();
}
return 0;
}
}
5、控制器测试代码
package com.example.modbus_test.controller;
import com.example.modbus_test.service.IModbusService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("/modbus")
public class ModbusController {
@Resource
private IModbusService modbusService;
@PostMapping("/readInputRegister")
public int readInputRegister(@RequestBody Map<String,Integer> params){
return modbusService.readInputRegister(params.get("slaveId"),params.get("offset"),params.get("quantity"));
}
}

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)