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.entity.PlcAddress;
|
import com.mes.s7.enhanced.EnhancedS7Serializer;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* PLC动态数据读写服务
|
* 根据PlcAddress配置动态构建参数,支持任意字段组合的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);
|
}
|