本功能优化了PLC地址映射配置管理,支持动态配置不同项目的PLC地址映射,无需为不同项目创建不同的YAML配置文件。系统支持从数据库和配置文件两种方式加载PLC地址映射配置,优先使用数据库中的配置。
com.mes.config.PlcAddressMappingConfigcom.mes.entity.PlcAddresscom.mes.mapper.PlcAddressMappercom.mes.service.PlcAddressServicecom.mes.service.PlcTestWriteServicecom.mes.controller.PlcAddressControllerGET /api/plc/address-mapping/list
GET /api/plc/address-mapping/page?page=1&size=10&projectId=shuttle&plcIp=192.168.10.21
GET /api/plc/address-mapping/{id}
GET /api/plc/address-mapping/project/{projectId}
GET /api/plc/address-mapping/project/{projectId}/config
POST /api/plc/address-mapping
Content-Type: application/json
{
"projectId": "new_project",
"projectName": "新项目",
"dbArea": "DB1",
"beginIndex": 0,
"plcIp": "192.168.10.22",
"plcType": "S1200",
"description": "新项目配置"
}
PUT /api/plc/address-mapping/{id}
Content-Type: application/json
{
"projectId": "updated_project",
"projectName": "更新项目",
"dbArea": "DB2",
"beginIndex": 10,
"plcIp": "192.168.10.23",
"plcType": "S1500",
"description": "更新项目配置"
}
DELETE /api/plc/address-mapping/{id}
DELETE /api/plc/address-mapping/batch
Content-Type: application/json
[1, 2, 3]
POST /api/plc/address-mapping/{id}/test-connection
POST /api/plc/address-mapping/reload-config
在application-dev.yml中添加以下配置:
plc:
address:
mapping:
# 默认DB块地址和起始索引
defaultDbArea: "DB1"
defaultBeginIndex: 0
# 项目特定配置
projects:
shuttle:
dbArea: "DB38"
beginIndex: 0
plcIp: "192.168.10.21"
plcType: "S1200"
addressMapping:
onlineState: "0"
plcRequest: "2"
plcReport: "4"
mesSend: "6"
mesConfirm: "8"
mesGlassCount: "10"
alarmInfo: "12"
@Service
public class SomeService {
@Autowired
private PlcTestWriteService plcTestWriteService;
public void doSomething() {
// 设置当前项目
plcTestWriteService.setCurrentProjectId("shuttle");
// 使用当前项目配置执行操作
plcTestWriteService.simulatePlcRequest();
// 或者直接指定项目
plcTestWriteService.simulatePlcRequest("another_project");
}
}
# 创建新项目配置
curl -X POST http://localhost:8080/api/plc/address-mapping \
-H "Content-Type: application/json" \
-d '{
"projectId": "new_project",
"projectName": "新项目",
"dbArea": "DB1",
"beginIndex": 0,
"plcIp": "192.168.10.22",
"plcType": "S1200"
}'
# 获取项目配置
curl http://localhost:8080/api/plc/address-mapping/project/new_project/config
# 测试连接
curl -X POST http://localhost:8080/api/plc/address-mapping/1/test-connection
CREATE TABLE `plc_address_mapping` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`project_id` varchar(50) NOT NULL COMMENT '项目标识',
`project_name` varchar(100) DEFAULT NULL COMMENT '项目名称',
`db_area` varchar(20) NOT NULL COMMENT 'DB块地址,如DB1',
`begin_index` int(11) NOT NULL DEFAULT '0' COMMENT '起始索引',
`plc_ip` varchar(50) DEFAULT NULL COMMENT 'PLC IP地址',
`plc_type` varchar(20) DEFAULT 'S1200' COMMENT 'PLC类型',
`address_mapping_json` text COMMENT '地址映射JSON配置',
`description` varchar(255) DEFAULT NULL COMMENT '描述',
`enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用:1-启用,0-禁用',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_project_id` (`project_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PLC地址映射配置表';