6.4 KiB
6.4 KiB
CtrEditor MCP Server - LLM Usage Guide
🤖 Quick Start for Language Models
This guide provides step-by-step instructions for LLMs to interact with CtrEditor simulations programmatically. The MCP server allows complete control over simulation objects, execution, and monitoring.
🚀 Basic Workflow
1. Initial Assessment
Start by getting the current state of the simulation:
🔍 list_objects - See what's currently in the simulation
🎮 get_simulation_status - Check if simulation is running
🔌 get_plc_status - Check PLC connection state
2. Object Analysis
For each object found, examine its properties to understand:
- Position:
Left
,Top
coordinates in meters - Dimensions:
Ancho
(width),Alto
(height) in meters - Type-Specific Properties: Flow rates, pressures, speeds, etc.
- Connection States: Which components are connected
- Simulation Parameters: Physics and hydraulic settings
3. Simulation Control
Control the simulation lifecycle:
start_simulation
- Begin physics calculationsstop_simulation
- Halt simulation- Monitor changes with repeated
list_objects
calls
📊 Object Property Deep Dive
Hydraulic Components
osHydTank (Hydraulic Tank)
Key Properties to Monitor:
TankType
: Type of tank (1=standard)CrossSectionalArea
: Tank cross-section in m²MaxLevel
,MinLevel
: Level limits in metersTankPressure
: Pressure in PascalIsFixedPressure
: Whether pressure is constant
osHydPump (Hydraulic Pump)
Key Properties to Monitor:
PumpHead
: Pump head in metersMaxFlow
: Maximum flow rate in m³/sSpeedRatio
: Speed ratio (0.0-1.0)IsRunning
: Pump operational statePumpDirection
: Flow direction (1=forward, -1=reverse)
osHydPipe (Hydraulic Pipe)
Key Properties to Monitor:
Length
: Pipe length in metersDiameter
: Internal diameter in metersRoughness
: Surface roughnessCurrentFlow
: Current flow rate in m³/sPressureDrop
: Pressure loss across pipeId_ComponenteA
,Id_ComponenteB
: Connected components
Dynamic Properties
During simulation, monitor these changing values:
- Flow rates in pipes (
CurrentFlow
) - Pressure drops (
PressureDrop
) - Tank levels (if applicable)
- Pump performance metrics
🖼️ Visual Documentation
Full Canvas Screenshots
take_screenshot()
- Captures entire simulation at 2x resolution
- Saves to
/screenshots/
subdirectory - Returns detailed file information
Targeted Screenshots
take_screenshot({
"x": 39.0, // Start X in meters
"y": 19.0, // Start Y in meters
"width": 7.0, // Width in meters
"height": 3.0 // Height in meters
})
- Captures specific region at 3x resolution (high detail)
- Perfect for component close-ups
- Use object positions to determine coordinates
Screenshot Use Cases
- Component Documentation: Capture individual components
- System Overview: Full canvas for complete system view
- Before/After Comparison: Screenshots before and after simulation
- Issue Investigation: High-resolution captures of problem areas
🔧 Property Modification
Updating Object Properties
update_object({
"id": "307211",
"properties": {
"PumpHead": 75.0,
"MaxFlow": 0.015,
"IsRunning": true
}
})
Safe Property Modification
- Always check current properties first with
list_objects
- Modify only relevant properties for the object type
- Use appropriate units (meters, Pascal, m³/s, etc.)
- Verify changes by calling
list_objects
again
🎯 Common Debugging Workflows
1. Pre-Simulation Analysis
1. list_objects - Document initial state
2. take_screenshot() - Visual documentation
3. Analyze object configurations and connections
4. Verify proper component setup
2. Simulation Monitoring
1. start_simulation - Begin simulation
2. get_simulation_status - Confirm running
3. list_objects - Monitor dynamic properties
4. take_screenshot(area) - Capture specific components
5. stop_simulation - End when needed
3. Performance Investigation
1. list_objects - Get baseline measurements
2. start_simulation - Run simulation
3. Wait 5-10 seconds for stabilization
4. list_objects - Compare with baseline
5. take_screenshot() - Document final state
4. Component Analysis
1. take_screenshot(component_area) - High-res component view
2. list_objects - Get detailed properties
3. update_object - Modify parameters if needed
4. start_simulation - Test changes
5. take_screenshot(component_area) - Compare results
📈 Simulation Data Interpretation
Flow Analysis
- Positive Flow: Normal direction flow
- Negative Flow: Reverse flow direction
- Zero Flow: No flow (blockage or equilibrium)
Pressure Analysis
- High Pressure Drop: Potential flow restriction
- Low Pressure Drop: Free-flowing condition
- Pressure Patterns: Indicate system behavior
Pump Performance
- SpeedRatio: Pump operation intensity
- IsRunning: Operational state
- PumpDirection: Flow direction control
🚨 Troubleshooting Guide
Connection Issues
If MCP commands fail:
- Check CtrEditor is running
- Verify MCP server is active on port 5006
- Use
get_simulation_status
to test connectivity
Simulation Issues
If simulation behaves unexpectedly:
- Stop simulation with
stop_simulation
- Check object properties with
list_objects
- Verify component connections
- Take screenshots for visual verification
- Restart simulation with
start_simulation
Data Inconsistencies
If properties seem wrong:
- Get fresh data with
list_objects
- Compare with visual evidence via
take_screenshot
- Check if simulation is running vs stopped
- Verify meter-based coordinates
💡 Best Practices
Efficient Monitoring
- Use
get_simulation_status
for quick status checks - Call
list_objects
only when detailed data is needed - Take targeted screenshots instead of full canvas when possible
Data Analysis
- Always compare before/after simulation states
- Monitor key performance indicators for each component type
- Use screenshots to validate data interpretations
Documentation
- Screenshot key configurations and results
- Document property changes with timestamps
- Maintain clear before/after comparisons
Safety
- Always stop simulation before making major changes
- Verify property updates with
list_objects
- Use appropriate units for all parameters