| | |
| | | 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.entity.PlcAddress; |
| | | import com.mes.s7.enhanced.EnhancedS7Serializer; |
| | | |
| | | import java.util.ArrayList; |
| | |
| | | |
| | | /** |
| | | * PLC动态数据读写服务 |
| | | * 根据PlcAddress配置动态构建参数,支持任意字段组合的PLC数据交互 |
| | | * 根据DeviceConfig配置动态构建参数,支持任意字段组合的PLC数据交互 |
| | | * |
| | | * @author huang |
| | | * @date 2025/11/05 |
| | | */ |
| | | public interface PlcDynamicDataService { |
| | | |
| | | /** |
| | | * 根据PlcAddress配置和字段名称读取PLC数据 |
| | | * |
| | | * @param config PLC地址映射配置 |
| | | * @param fieldNames 要读取的字段名称列表 |
| | | * @param s7Serializer S7序列化器 |
| | | * @return 字段名->值 的Map |
| | | */ |
| | | Map<String, Object> readPlcData(PlcAddress config, List<String> fieldNames, EnhancedS7Serializer s7Serializer); |
| | | |
| | | /** |
| | | * 根据PlcAddress配置和数据Map写入PLC |
| | | * |
| | | * @param config PLC地址映射配置 |
| | | * @param dataMap 字段名->值 的Map |
| | | * @param s7Serializer S7序列化器 |
| | | */ |
| | | void writePlcData(PlcAddress config, Map<String, Object> dataMap, EnhancedS7Serializer s7Serializer); |
| | | |
| | | /** |
| | | * 读取PLC所有字段 |
| | | * |
| | | * @param config PLC地址映射配置 |
| | | * @param s7Serializer S7序列化器 |
| | | * @return 所有字段的值 |
| | | */ |
| | | Map<String, Object> readAllPlcData(PlcAddress config, EnhancedS7Serializer s7Serializer); |
| | | |
| | | /** |
| | | * 读取单个字段 |
| | | * |
| | | * @param config PLC地址映射配置 |
| | | * @param fieldName 字段名 |
| | | * @param s7Serializer S7序列化器 |
| | | * @return 字段值 |
| | | */ |
| | | Object readPlcField(PlcAddress config, String fieldName, EnhancedS7Serializer s7Serializer); |
| | | |
| | | /** |
| | | * 写入单个字段 |
| | | * |
| | | * @param config PLC地址映射配置 |
| | | * @param fieldName 字段名 |
| | | * @param value 字段值 |
| | | * @param s7Serializer S7序列化器 |
| | | */ |
| | | void writePlcField(PlcAddress config, String fieldName, Object value, EnhancedS7Serializer s7Serializer); |
| | | |
| | | /** |
| | | * 根据DeviceConfig配置和字段名称读取PLC数据 |
| | |
| | | * @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); |
| | | } |