package com.mes.service;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.github.xingshuangs.iot.common.enums.EDataType;
|
import com.github.xingshuangs.iot.protocol.s7.serializer.S7Parameter;
|
import com.mes.device.entity.DeviceConfig;
|
import com.mes.s7.enhanced.EnhancedS7Serializer;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* PLC动态数据读写服务
|
* 根据DeviceConfig配置动态构建参数,支持任意字段组合的PLC数据交互
|
*
|
* @author huang
|
* @date 2025/11/05
|
*/
|
public interface PlcDynamicDataService {
|
|
/**
|
* 根据DeviceConfig配置和字段名称读取PLC数据
|
*
|
* @param device 设备配置
|
* @param fieldNames 要读取的字段名称列表
|
* @param s7Serializer S7序列化器
|
* @return 字段名->值 的Map
|
*/
|
Map<String, Object> readPlcData(DeviceConfig device, List<String> fieldNames, EnhancedS7Serializer s7Serializer);
|
|
/**
|
* 根据DeviceConfig配置和数据Map写入PLC
|
*
|
* @param device 设备配置
|
* @param dataMap 字段名->值 的Map
|
* @param s7Serializer S7序列化器
|
*/
|
void writePlcData(DeviceConfig device, Map<String, Object> dataMap, EnhancedS7Serializer s7Serializer);
|
|
/**
|
* 读取PLC所有字段(基于DeviceConfig)
|
*
|
* @param device 设备配置
|
* @param s7Serializer S7序列化器
|
* @return 所有字段的值
|
*/
|
Map<String, Object> readAllPlcData(DeviceConfig device, EnhancedS7Serializer s7Serializer);
|
|
/**
|
* 读取单个字段(基于DeviceConfig)
|
*
|
* @param device 设备配置
|
* @param fieldName 字段名
|
* @param s7Serializer S7序列化器
|
* @return 字段值
|
*/
|
Object readPlcField(DeviceConfig device, String fieldName, EnhancedS7Serializer s7Serializer);
|
|
/**
|
* 写入单个字段(基于DeviceConfig)
|
*
|
* @param device 设备配置
|
* @param fieldName 字段名
|
* @param value 字段值
|
* @param s7Serializer S7序列化器
|
*/
|
void writePlcField(DeviceConfig device, String fieldName, Object value, EnhancedS7Serializer s7Serializer);
|
|
/**
|
* 根据实体类和DeviceConfig配置写入PLC数据
|
* 实体类字段使用@S7Variable注解,address字段为字段名(对应configJson中的paramKey)
|
* 偏移量从configJson中的paramValue获取
|
*
|
* @param <T> 实体类型
|
* @param device 设备配置
|
* @param entity 实体对象
|
* @param s7Serializer S7序列化器
|
*/
|
<T> void writePlcDataByEntity(DeviceConfig device, T entity, EnhancedS7Serializer s7Serializer);
|
}
|