当前位置: 首页 > wzjs >正文

做粤菜的视频网站营销宣传图片

做粤菜的视频网站,营销宣传图片,域名生成器,wap网站怎么做背景 中频炉改造项目,因现场没有一级plc、点位采集设备支撑,故采用modbus485协议进行采集。项目中使用到了redis,主要是对数据采集的临时存储,用于业务触发。点位数据存储到iotdb时序数据库,用于过程质量的追溯和展示…

背景

中频炉改造项目,因现场没有一级plc、点位采集设备支撑,故采用modbus485协议进行采集。项目中使用到了redis,主要是对数据采集的临时存储,用于业务触发。点位数据存储到iotdb时序数据库,用于过程质量的追溯和展示。

点位数据管理

使用modbus485读取点位数据,需要配置点位的以下参数。
在这里插入图片描述
1、IP地址:设备所在ip段;
2、端口:每款设备需要在集线器分配端口;
3、从机地址:Modbus协议中,每个从设备都有一个唯一的地址,范围通常是1到247;
4、寄存器读取开始位置:寄存器的起始地址;
5、读取寄存器的数量:需要读取的寄存器数量;
6、功能码:根据设备不同,所选功能码不同。
7、点位名称:业务自己命名,便于管理;
8、点位编码:触发系统业务模块使用,与读取数据无关;

引入modbus依赖

<dependency><groupId>com.intelligt.modbus</groupId><artifactId>jlibmodbus</artifactId><version>1.2.9.7</version></dependency>

读取数据

@Component
public class ModbusTcpListener {@Resourceprivate RedisTemplate redisTemplate;@Resourceprivate IotDbServer iotDbServer;@Resourceprivate ModbusApiService modbusApiService;private static final ObjectMapper objectMapper = new ObjectMapper();public static void main(String[] args) {}
//    @Scheduled(cron = "0/30 * * * * ?")public void getData() throws UnknownHostException, JsonProcessingException {String json = (String) redisTemplate.opsForValue().get("modbus");List<ModBusRequest> lis2t = objectMapper.readValue(json, new TypeReference<List<ModBusRequest>>() {});for (ModBusRequest request : lis2t) {int slaveId = request.getSlaveId();//从机地址int offset = request.getOffset();//寄存器读取开始地址int quantity = request.getQuantity();//读取的寄存器数量String pointCode=request.getPointCode();//设备codeint port=request.getPort();//端口List<JSONObject> jsonObjectList = new ArrayList<>();// 设置主机TCP参数TcpParameters tcpParameters = new TcpParameters();// 设置TCP的ip地址InetAddress adress = InetAddress.getByName(request.getIp());// TCP参数设置ip地址tcpParameters.setHost(adress);// TCP设置长连接tcpParameters.setKeepAlive(true);// TCP设置端口,这里设置是默认端口502tcpParameters.setPort(request.getPort());// 创建一个主机ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(tcpParameters);Modbus.setAutoIncrementTransactionId(true);try {// 读取对应从机的数据,readInputRegisters读取的写寄存器,功能码04// 读取对应从机的数据,readHoldingRegisters,功能码03if (!master.isConnected()) {master.connect();// 开启连接}System.out.printf("=========>"+request);//根据寄存器的功能码判断switch (request.getDeviceId()) {case "1":getBooleanData(master.readCoils(slaveId, offset, quantity), offset,pointCode,request.getIp(),port);break;case "2":getBooleanData(master.readDiscreteInputs(slaveId, offset, quantity), offset,pointCode,request.getIp(),port);break;case "3":getIntData(master.readHoldingRegisters(slaveId, offset, quantity), offset,pointCode,request.getIp(),port);break;case "4":getIntData(master.readInputRegisters(slaveId, offset, quantity), offset,pointCode,request.getIp(),port);break;default:getIntData(master.readHoldingRegisters(slaveId, offset, quantity), offset,pointCode,request.getIp(),port);break;}
//                    Thread.sleep(1000); // 每隔1000毫秒读取一次数据 getIntData(registerValues,offset);} catch (ModbusProtocolException | ModbusIOException | ModbusNumberException e) {e.printStackTrace();} finally {try {master.disconnect();} catch (ModbusIOException e) {e.printStackTrace();}}}}/*** int类型数据方法** @param registerValues* @param offset*/public void getIntData(int[] registerValues, int offset,String pointCode,String ip,int port) {for (int value : registerValues) {System.out.println(" offset: " + offset);System.out.println(" Value: " + value);IotDbParam iotDbParam=new IotDbParam();iotDbParam.setPk(pointCode);iotDbParam.setTime(System.currentTimeMillis());iotDbParam.setBreath(String.valueOf(value));iotDbParam.setHeart(String.valueOf(offset));try {iotDbServer.insertData(iotDbParam);redisTemplate.opsForValue().set(pointCode+"-"+offset,String.valueOf(value));ModbusApiDto modbusApiDto = new ModbusApiDto();modbusApiDto.setPointCode(pointCode);modbusApiDto.setTriggerTime(new Date());modbusApiDto.setValue(String.valueOf(value));modbusApiDto.setOffset(offset);//192.168.0.7 炉后天车称| 192.168.0.233 三项电表| 192.168.0.7 炉后小车位置激光测距| 192.168.0.7 炉后大车位置激光测距if (("192.168.0.7").equals(ip) && port == 23 && offset == 6 ||("192.168.0.233").equals(ip) && port == 502 && offset == 11 ||("192.168.0.7").equals(ip) && port == 35 && offset == 3 ||("192.168.0.7").equals(ip) && port == 35 && offset == 4) {modbusApiService.dealModbusData(JSON.toJSONString(modbusApiDto));}} catch (StatementExecutionException e) {e.printStackTrace();} catch (ServerException e) {e.printStackTrace();} catch (IoTDBConnectionException e) {e.printStackTrace();}offset++;}}/*** boolean类型数据方法** @param readDataBoolean* @param offset*/public void getBooleanData(boolean[] readDataBoolean, int offset,String pointCode,String ip,int port) {for (boolean value : readDataBoolean) {System.out.println(" offset: " + offset);System.out.println(" Value: " + value);IotDbParam iotDbParam=new IotDbParam();iotDbParam.setPk(pointCode);iotDbParam.setTime(System.currentTimeMillis());iotDbParam.setBreath(value==true?"1":"0");iotDbParam.setHeart(String.valueOf(offset));try {iotDbServer.insertData(iotDbParam);redisTemplate.opsForValue().set(pointCode+"-"+offset,String.valueOf(value));ModbusApiDto modbusApiDto=new ModbusApiDto();//小车振动信号if(("192.168.0.7").equals(ip) && port==29 &&(offset==200 || offset==201)){modbusApiDto.setPointCode(pointCode);modbusApiDto.setTriggerTime(new Date());modbusApiDto.setValue(iotDbParam.getBreath());modbusApiDto.setOffset(offset);modbusApiService.dealModbusData(JSON.toJSONString(modbusApiDto));}} catch (StatementExecutionException e) {e.printStackTrace();} catch (ServerException e) {e.printStackTrace();} catch (IoTDBConnectionException e) {e.printStackTrace();}offset++;}}}

补充说明

在这里插入图片描述
读取offset,是因为设备寄存器读取数量是固定的(可能是多个),里面有无效值,判断offset是为了读取有效值进行存储,可根据前端设备说明书进行相应取值。

http://www.dtcms.com/wzjs/206753.html

相关文章:

  • 设计公司企业文化西安seo优化顾问
  • eclipse做网站网上国网app推广
  • 百度网址名称是什么seo搜索引擎优化工资薪酬
  • 阿里云的网站空间技术培训
  • 怎么快速推广网站深圳seo优化公司排名
  • 个人可以备案什么网站每日英语新闻
  • 长沙网页设计公司搜索引擎优化seo专员
  • 做word文档什么网站好广告推广策划
  • 沈阳网站建站公司附近的电脑培训班在哪里
  • 怎么做网页背景天津seo网络
  • 做不锈钢的网站百度招聘网最新招聘信息
  • 做网站需要交税培训课程设计
  • 专业的网站开发联系方式本周时事新闻概要10条
  • synology做网站挖掘关键词爱站网
  • wd网址怎么推广宁波seo推广推荐公司
  • 做网站 广告费 步骤济南网站建设哪家专业
  • 枞阳县建设局网站百度一下官网网址
  • thinkphp做网站教程深圳网络推广优化
  • ubuntu怎么做网站少儿编程培训机构排名前十
  • 做网站要用服务器维护产品品牌策划方案
  • 阿里云商标注册入口seo算法入门教程
  • 一级a做爰片免费网站 新闻万能推广app
  • p2p网站开发多少钱seo运营经理
  • 做维修广告在哪个网站百度竞价托管公司
  • 域名注册平台哪个好淘宝seo推广优化
  • 淡水网站建设定制谷歌应用商店
  • 做一个网站的建设流程seo网络推广是干嘛的
  • 云南公司网站制作淘宝直通车
  • 镇江市网站建设设计热搜榜百度一下你就知道
  • 西安网站制作网站网络营销推广