115 lines
4.1 KiB
Markdown
115 lines
4.1 KiB
Markdown
# Resumen de Cambios: Adaptación para Mapeo de Tags a Direcciones Absolutas
|
|
|
|
## ✅ Cambios Implementados
|
|
|
|
### 1. Nueva Función de Mapeo
|
|
- **Archivo**: `PLCViewModel.cs`
|
|
- **Función**: `MapTagToAddress(string tag)`
|
|
- **Propósito**: Mapear tags a direcciones absolutas
|
|
- **Estado actual**: Retorna el mismo string (asume direcciones absolutas)
|
|
- **Futuro**: Permitirá tabla de mapeo de tags simbólicos a direcciones absolutas
|
|
|
|
### 2. Funciones Modificadas para Usar Mapeo
|
|
|
|
#### Funciones Principales de Lectura/Escritura:
|
|
- `LeerBool(string sTag)` ✅
|
|
- `EscribirBool(string sTag, bool Value)` ✅
|
|
- `LeerNumber(string sTag, bool Signed = false)` ✅
|
|
- **NUEVA**: `EscribirNumber(string sTag, object value)` ✅
|
|
|
|
#### Funciones de Tags (AdvCoSimulator):
|
|
- `EscribirTag(string pTag, SDataValue Value)` ✅
|
|
- `LeerTag(string pTag)` ✅
|
|
- `EscribirTagBool(string pTag, bool pValue)` ✅
|
|
- `LeerTagBool(string pTag)` ✅
|
|
- `EscribirTagInt16(string pTag, int pValue)` ✅
|
|
- `LeerTagInt16(string pTag)` ✅
|
|
- `LeerTagDInt(string pTag)` ✅
|
|
- `EscribirTagDInt(string pTag, int pValue)` ✅
|
|
|
|
### 3. Mensajes de Error Mejorados
|
|
Los métodos de tags ahora muestran mensajes más informativos para Sharp7:
|
|
- Antes: "Tag operations not supported in Snap7 mode"
|
|
- Ahora: "Tag operations not supported in Sharp7 mode. Use LeerBool, EscribirBool, LeerNumber instead with absolute addresses."
|
|
|
|
### 4. Documentación Mejorada
|
|
- **README.md**: Actualizado con información sobre mapeo automático
|
|
- **ExampleAbsoluteAddresses.cs**: Nuevo archivo con ejemplos de uso
|
|
- **Documentación inline**: Comentarios detallados sobre el uso futuro
|
|
|
|
### 5. Compatibilidad Preservada
|
|
- ✅ **AdvCoSimulator**: Funcionamiento sin cambios (mapeo transparente)
|
|
- ✅ **Sharp7**: Mejora en la gestión de direcciones absolutas
|
|
- ✅ **Interfaz existente**: Sin cambios breaking
|
|
|
|
## 🔄 Comportamiento Actual vs Futuro
|
|
|
|
### Estado Actual
|
|
```csharp
|
|
// Todas las llamadas usan direcciones absolutas directamente
|
|
bool result = plc.LeerBool("DB1.DBX0.0"); // Input: "DB1.DBX0.0" -> Output: "DB1.DBX0.0"
|
|
```
|
|
|
|
### Implementación Futura
|
|
```csharp
|
|
// MapTagToAddress() podrá hacer conversiones:
|
|
bool result = plc.LeerBool("MotorRunning"); // Input: "MotorRunning" -> Output: "DB1.DBX0.0"
|
|
|
|
// Ejemplo de tabla de mapeo futura:
|
|
private Dictionary<string, string> _tagMappingTable = new Dictionary<string, string>
|
|
{
|
|
{ "MotorRunning", "DB1.DBX0.0" },
|
|
{ "MotorSpeed", "DB1.DBW2" },
|
|
{ "Temperature", "DB2.DBD4" },
|
|
{ "AlarmOutput", "Q0.1" }
|
|
};
|
|
```
|
|
|
|
## 🎯 Ventajas de la Implementación
|
|
|
|
### Para Sharp7:
|
|
1. **Direcciones absolutas garantizadas**: Todas las llamadas pasan por el mapeo
|
|
2. **Preparado para futuro**: Cuando se implemente la tabla de mapeo, funcionará automáticamente
|
|
3. **Sin cambios en el uso actual**: Los usuarios pueden seguir usando direcciones absolutas
|
|
|
|
### Para AdvCoSimulator:
|
|
1. **Compatibilidad completa**: Sin cambios en el comportamiento
|
|
2. **Unificación de interfaz**: Misma lógica de mapeo que Sharp7
|
|
3. **Preparado para mapeo**: Podrá usar la misma tabla de mapeo que Sharp7
|
|
|
|
### Para Desarrolladores:
|
|
1. **Interfaz unificada**: Una sola forma de manejar tags/direcciones
|
|
2. **Extensibilidad**: Fácil agregar tabla de mapeo en el futuro
|
|
3. **Mantenimiento**: Lógica centralizada en `MapTagToAddress()`
|
|
|
|
## 🚀 Próximos Pasos para Implementar Tabla de Mapeo
|
|
|
|
1. **Agregar propiedad de configuración**:
|
|
```csharp
|
|
private Dictionary<string, string>? _tagMappingTable;
|
|
```
|
|
|
|
2. **Cargar tabla desde archivo/configuración**:
|
|
```csharp
|
|
public void LoadTagMappingTable(string configFile) { }
|
|
```
|
|
|
|
3. **Modificar MapTagToAddress()**:
|
|
```csharp
|
|
private string MapTagToAddress(string tag)
|
|
{
|
|
if (_tagMappingTable?.ContainsKey(tag) == true)
|
|
return _tagMappingTable[tag];
|
|
return tag; // Fallback para direcciones absolutas
|
|
}
|
|
```
|
|
|
|
## ✅ Verificación
|
|
|
|
- [x] Proyecto compila correctamente
|
|
- [x] Todas las funciones principales usan el mapeo
|
|
- [x] Compatibilidad con ambos drivers preservada
|
|
- [x] Documentación actualizada
|
|
- [x] Ejemplos de uso creados
|
|
- [x] Sin cambios breaking en la API existente
|