From d6740ab749ec20e4fe2e08bb6de5b3978e5757bf Mon Sep 17 00:00:00 2001 From: giles knap Date: Thu, 5 Feb 2026 14:00:54 +0000 Subject: [PATCH 1/6] add troubleshooting re simulator port in use --- AGENTS.md | 2 + docs/how-to/troubleshooting.md | 98 ++++++++++++++++++++++++++++++++++ tests/test_system.py | 10 +--- 3 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 docs/how-to/troubleshooting.md diff --git a/AGENTS.md b/AGENTS.md index 8645f6d..4b3b1df 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -199,6 +199,8 @@ This project interfaces with Beckhoff EtherCAT I/O terminals via the ADS protoco - **Testing with Hardware**: **NEVER** run `fastcs-catio ioc` commands yourself. Let the user run the IOC and report any errors back to you. The IOC requires network access to real hardware that may not be available or may have specific configuration requirements. +- **Testing Troubleshooting**: If `test_system.py` reports that simulator port 48898 is already in use, check if VS Code has auto-forwarded the port. In VS Code's "Ports" panel (View → Ports), delete any forwarding for port 48898. VS Code's auto port-forwarding can prevent the test simulator from binding to the port. + - **Terminal Definitions**: YAML files describing Beckhoff terminal types, their symbols, and CoE objects. See [docs/explanations/terminal-yaml-definitions.md](docs/explanations/terminal-yaml-definitions.md) for: - How to generate terminal YAML files using `catio-terminals` - Understanding ADS symbol nodes and index groups diff --git a/docs/how-to/troubleshooting.md b/docs/how-to/troubleshooting.md new file mode 100644 index 0000000..402a2fa --- /dev/null +++ b/docs/how-to/troubleshooting.md @@ -0,0 +1,98 @@ +# Troubleshooting + +Common issues and their solutions when working with fastcs-catio. + +## Test System Issues + +### Port 48898 Already in Use + +**Problem:** When running `pytest tests/test_system.py`, you get an error: +``` +Port 48898 is already in use. A simulator may already be running. +``` + +But you're certain no simulator is running. + +**Cause:** VS Code's auto port-forwarding feature may have automatically forwarded port 48898, which prevents the test simulator from binding to it. + +**Solution:** +1. Open VS Code's Ports panel: **View → Ports** (or press `Ctrl+Shift+P` and search for "Ports: Focus on Ports View") +2. Look for port 48898 in the list +3. Right-click on it and select **Stop Forwarding Port** or **Remove Port** +4. Re-run the tests + +**Prevention:** You can disable auto port-forwarding in VS Code settings: +- Open Settings (`Ctrl+,`) +- Search for `remote.autoForwardPorts` +- Set it to `false` or configure `remote.autoForwardPortsSource` to exclude port 48898 + +### Alternative: Using an External Simulator + +If you have a simulator already running intentionally, you can tell the tests to use it instead of launching their own: + +```bash +pytest tests/test_system.py --external-simulator +``` + +This skips the port check and internal simulator launch, assuming a simulator is already listening on port 48898. + +## VS Code Dev Container Issues + +### Terminal Commands Not Showing + +**Problem:** Commands executed in the terminal don't display output or appear to hang. + +**Solution:** Rebuild the dev container: +1. Press `Ctrl+Shift+P` (or `Cmd+Shift+P` on Mac) +2. Select **Dev Containers: Rebuild Container** +3. Choose **Rebuild Container Without Cache** for a clean rebuild + +### Container Port Binding Issues + +**Problem:** After a container restart or rebuild, ports show as already in use even though nothing is running. + +**Solution:** +1. Stop all containers: `docker stop $(docker ps -aq)` +2. Remove the specific container: `docker ps -a | grep fastcs-catio` then `docker rm ` +3. Optionally, prune Docker resources: `docker system prune` (careful - removes unused containers/networks/images) +4. Reopen the folder in the container + +## Hardware Connection Issues + +### Cannot Connect to PLC/Controller + +**Problem:** `fastcs-catio ioc` fails with connection errors. + +**Common causes:** +- Network connectivity issues +- Incorrect AMS Net ID or IP address in configuration +- Firewall blocking ADS protocol (port 48898) +- TwinCAT runtime not running on the target + +**Solutions:** +- Verify network connectivity: `ping ` +- Check AMS Net ID matches the controller configuration +- Ensure TwinCAT is in Run mode on the controller +- Check firewall settings allow ADS traffic +- Verify the correct configuration file is being used + +## Build and Installation Issues + +### Package Installation Fails + +**Problem:** `uv pip install` or package installation fails. + +**Solution:** +- Ensure you're in the dev container or have the correct Python environment active +- Try: `uv sync --reinstall` to force reinstall all packages +- Check `pyproject.toml` for any conflicting version constraints + +### Type Checking Failures + +**Problem:** `pyright` or `mypy` reports type errors that seem incorrect. + +**Solution:** +- Ensure all dependencies are installed: `uv sync` +- Clear type checker cache: `rm -rf .mypy_cache` or `rm -rf .pyright` +- Restart your editor/language server +- Check if you're using the correct Python interpreter from the venv diff --git a/tests/test_system.py b/tests/test_system.py index dbd1c19..97cfc41 100644 --- a/tests/test_system.py +++ b/tests/test_system.py @@ -82,16 +82,8 @@ def simulator_process(request, config_file: str): # No cleanup needed return - # Check if simulator port is already in use - simulator_port = 48898 # ADS_TCP_PORT - if _is_port_in_use(simulator_port): - pytest.fail( - f"Port {simulator_port} is already in use. " - "A simulator may already be running. " - "Stop it before running tests or use --external-simulator flag." - ) - # Get the config file path + simulator_port = 48898 # ADS_TCP_PORT config_path = Path(__file__).parent / "ads_sim" / config_file # Launch the simulator subprocess with verbose logging From bf0fb19353ebf0d701b21bb5d5b0ddbed4f618cc Mon Sep 17 00:00:00 2001 From: giles knap Date: Thu, 5 Feb 2026 14:40:01 +0000 Subject: [PATCH 2/6] add first tutorial --- docs/tutorials.md | 2 + .../getting-started-with-simulator.md | 232 ++++++++++++++++++ 2 files changed, 234 insertions(+) create mode 100644 docs/tutorials/getting-started-with-simulator.md diff --git a/docs/tutorials.md b/docs/tutorials.md index 1fe66c5..454eb5c 100644 --- a/docs/tutorials.md +++ b/docs/tutorials.md @@ -6,5 +6,7 @@ Tutorials for installation and typical usage. New users start here. :maxdepth: 1 :glob: +tutorials/installation.md +tutorials/getting-started-with-simulator.md tutorials/* ``` diff --git a/docs/tutorials/getting-started-with-simulator.md b/docs/tutorials/getting-started-with-simulator.md new file mode 100644 index 0000000..ef94166 --- /dev/null +++ b/docs/tutorials/getting-started-with-simulator.md @@ -0,0 +1,232 @@ +# Getting Started with the Simulator + +This tutorial walks you through running fastcs-catio with the ADS simulator, +allowing you to explore the system without real Beckhoff hardware. + +## Prerequisites + +- fastcs-catio installed (see [Installation](installation.md)) +- Podman or Docker installed (for running Phoebus) + +## Overview + +fastcs-catio uses two types of YAML configuration files: + +1. **Terminal Type Definitions** (`terminal_types.yaml`) - Describes the + capabilities of each Beckhoff terminal type (e.g., EL2024, EL3104). This + includes: + - Product identity (vendor ID, product code, revision) + - Symbol definitions (inputs, outputs, their data types) + - CoE (CANopen over EtherCAT) objects for configuration + +2. **Server Configuration** (`server_config_*.yaml`) - Describes the physical + EtherCAT chain topology: + - Which terminals are connected + - Their positions in the chain + - Device groupings + +In this tutorial, we copy these files to `/tmp` so you can experiment with +modifying them without affecting the source repository. + +## Step 1: Copy Configuration Files + +First, copy the configuration files to a working directory: + +```bash +# Copy terminal type definitions +cp src/catio_terminals/terminals/terminal_types.yaml /tmp/ + +# Copy server configurations (we'll use the CX7000_cs2 config) +cp tests/ads_sim/server_config_*.yaml /tmp/ +``` + +You now have editable copies of: + +| File | Purpose | +|------|---------| +| `/tmp/terminal_types.yaml` | Defines all supported terminal types and their symbols | +| `/tmp/server_config_CX7000_cs2.yaml` | Simulates a CX7000 with 107 I/O terminals | +| `/tmp/server_config_CX7000_cs1.yaml` | Alternative smaller configuration | +| `/tmp/server_config_CX8290_cs1.yaml` | CX8290 configuration | + +## Step 2: Start the ADS Simulator + +Open a terminal and start the simulator: + +```bash +python -m tests.ads_sim \ + --terminal-defs /tmp/terminal_types.yaml \ + --config /tmp/server_config_CX7000_cs2.yaml \ + --log-level INFO +``` + +You should see output indicating the server has started: + +``` +2026-02-05 14:30:00 - ads_sim.server - INFO - ADS Simulation Server starting... +2026-02-05 14:30:00 - ads_sim.server - INFO - Listening on 127.0.0.1:48898 (TCP) +2026-02-05 14:30:00 - ads_sim.server - INFO - Loaded 107 slaves with 461 symbols +``` + +:::{tip} +Add `--disable-notifications` to reduce log verbosity once you've confirmed +the server is working. +::: + +Leave this terminal running and open a new terminal for the next step. + +## Step 3: Start the fastcs-catio IOC + +In a new terminal, start the IOC connecting to the simulator: + +```bash +fastcs-catio ioc TUTORIAL \ + --terminal-defs /tmp/terminal_types.yaml \ + --screens-dir /tmp/screens +``` + +The command arguments: +- `TUTORIAL` - The PV prefix for all EPICS records (e.g., `TUTORIAL:ETH1:...`) +- `--terminal-defs` - Points to our editable terminal definitions +- `--screens-dir` - Where to write the generated Phoebus `.bob` screen files + +You should see the IOC start and begin polling the simulator: + +``` +INFO - Connecting to ADS server at 127.0.0.1:48898 +INFO - Connected to I/O Server (version 3.1, build 2103) +INFO - Discovered 1 device with 107 slaves +INFO - Created 461 EPICS PVs +``` + +The IOC is now running and exposing the simulated I/O as EPICS PVs. + +## Step 4: Launch Phoebus + +This step uses podman. Therefore you need to have podman installed and configured on your system. **IMPORTANT**: this means that you cannot launch from inside the devcontainer if that is where you are running the simulator and IOC. Use a native terminal on your host machine for this step. + +With both the simulator and IOC running, launch Phoebus to view the GUI: + +```bash +./opi/phoebus-launch.sh +``` + +This starts Phoebus in a container with access to the generated screens. + +:::{note} +The first launch may take a moment as it pulls the container image. +::: + +## Step 5: Exploring the GUI + +Once Phoebus opens, you'll see the main CATio screen showing the EtherCAT +device tree. + +### Main Screen + +The main screen (`catio.bob`) displays: + +- **Device overview** - Shows the connected EtherCAT master device +- **Slave tree** - Hierarchical view of all terminals in the chain + +Click on "ETH1" to see the first EtherCAT device, then click through the +hierarchy to explore individual terminals. + +### Terminal Screens + +Each terminal type has its own screen showing relevant I/O: + +**Digital Output (EL2024)** + +Navigate to any EL2024 terminal (e.g., Term 4) to see: +- 4 output channels with toggle buttons +- Working counter status +- State indicators + +Try clicking the output toggles - they will update in the simulator. + +**Digital Input (EL1004/EL1014)** + +Digital input terminals show: +- 4 input channel states +- Working counter indicator + +**Analog Input (EL3104/EL3204)** + +Analog input terminals display: +- Multiple input channels with current values +- Status and diagnostic information + +**Counter Terminals (EL1502)** + +Counter terminals show: +- Counter values +- Control bits for counter operation +- Status indicators + + +## Step 6: Experiment + +Now that everything is running, try these experiments: + +### View EPICS PVs + +In another terminal, use `caget` or `camonitor` to see the PVs: + +```bash +# List all PVs with the TUTORIAL prefix +caget TUTORIAL:ETH1:RIO1:MOD1:CH1:OUTPUT + +# Monitor a digital output +camonitor TUTORIAL:ETH1:RIO1:MOD1:CH1:OUTPUT +``` + +### Modify the Chain Topology + +Edit `/tmp/server_config_CX7000_cs2.yaml` to: +- Remove terminals from the chain +- Change terminal positions + +Restart both the simulator and IOC to see the new topology. + +## Cleanup + +When finished, stop the processes with `Ctrl+C`: + +1. Stop Phoebus (close the window or `Ctrl+C`) +2. Stop the IOC (`Ctrl+C` in its terminal) +3. Stop the simulator (`Ctrl+C` in its terminal) + +## Next Steps + +- Learn about [terminal YAML definitions](../explanations/terminal-yaml-definitions.md) +- Explore the [architecture overview](../explanations/architecture-overview.md) + +## Troubleshooting + +### Port already in use + +If you see "Address already in use" when starting the simulator: + +The first thing to try is deleting the port forwarding in VS Code, which is likely the cause. Then restart the simulator and IOC. + +```bash +# Check what's using port 48898 +lsof -i :48898 + +# Kill the process or use a different port +python -m tests.ads_sim --port 48899 +``` + +### No PVs visible in Phoebus + +Ensure the IOC is running and check the PV prefix matches. The default +configuration uses `TUTORIAL` as the prefix. + +### Container permission errors + +If Phoebus fails to start, ensure your user can run containers: + +```bash +podman ps # Should work without sudo +``` From 165fd316983d285135879104c3c69a28bf35fb8b Mon Sep 17 00:00:00 2001 From: giles knap Date: Thu, 5 Feb 2026 14:49:15 +0000 Subject: [PATCH 3/6] more troubleshooting for tutorial 1 --- docs/tutorials/getting-started-with-simulator.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/tutorials/getting-started-with-simulator.md b/docs/tutorials/getting-started-with-simulator.md index ef94166..975bb62 100644 --- a/docs/tutorials/getting-started-with-simulator.md +++ b/docs/tutorials/getting-started-with-simulator.md @@ -204,6 +204,16 @@ When finished, stop the processes with `Ctrl+C`: ## Troubleshooting +### Phoebus Fails to Start + +This WILL be an issue if your workstation is using Wayland. The fix below should work in this instance. + +If you see `Authorization required, but no authorization protocol specified` or similar issue with X11 permissions when load phoebus. Try giving your own account permission to access the X server: + +```bash +xhost +SI:localuser:$(id -un) +``` + ### Port already in use If you see "Address already in use" when starting the simulator: From 9e530adf7c73daddc72a82fd36fb09fecb49f320 Mon Sep 17 00:00:00 2001 From: giles knap Date: Thu, 5 Feb 2026 14:55:23 +0000 Subject: [PATCH 4/6] fix long PV names issue --- src/catio_terminals/utils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/catio_terminals/utils.py b/src/catio_terminals/utils.py index d17e4ea..69d9d62 100644 --- a/src/catio_terminals/utils.py +++ b/src/catio_terminals/utils.py @@ -152,6 +152,8 @@ def final_result(): else: return f"{result}_{suffix}" + max_length = max_length - len(suffix) - 1 if suffix else max_length + result = to_snake_case(name) if len(result) <= max_length: return final_result() From d8c1aab35bfbc1ba7af0af1b8366e7bf6b6b2b19 Mon Sep 17 00:00:00 2001 From: giles knap Date: Thu, 5 Feb 2026 15:27:16 +0000 Subject: [PATCH 5/6] add 2nd tutorial --- .../customizing-terminal-definitions.md | 265 ++++++++++++++++++ .../getting-started-with-simulator.md | 19 +- 2 files changed, 275 insertions(+), 9 deletions(-) create mode 100644 docs/tutorials/customizing-terminal-definitions.md diff --git a/docs/tutorials/customizing-terminal-definitions.md b/docs/tutorials/customizing-terminal-definitions.md new file mode 100644 index 0000000..3da9ca6 --- /dev/null +++ b/docs/tutorials/customizing-terminal-definitions.md @@ -0,0 +1,265 @@ +# Customizing Terminal Definitions + +This tutorial shows how to customize which symbols and CoE objects are exposed +by the IOC using the `catio-terminals` GUI editor. + +## Prerequisites + +- Completed [Getting Started with the Simulator](getting-started-with-simulator.md) +- Configuration files copied to `/tmp` + +## Overview + +The terminal definitions YAML file controls which data points the IOC exposes +as EPICS Process Variables (PVs). Each Beckhoff terminal type has many +potential symbols and CoE (CANopen over EtherCAT) configuration objects, but +you typically only need a subset of them. + +In this tutorial, you will: +1. View an EL1502 counter terminal's current PVs +2. Use the catio-terminals GUI to add more CoE objects +3. See the new PVs appear after restarting the IOC + +## Step 1: Start the Simulator + +If the simulator from the first tutorial is still running, you can skip this +step. Otherwise, start it: + +```bash +python -m tests.ads_sim \ + --terminal-defs /tmp/terminal_types.yaml \ + --config /tmp/server_config_CX7000_cs2.yaml \ + --disable-notifications +``` + +## Step 2: Start the IOC and Observe Current State + +In a new terminal, start the IOC: + +```bash +fastcs-catio ioc IOC \ + --terminal-defs /tmp/terminal_types.yaml +``` + +Use Phoebus to navigate to **ETH1 > RIO2 > MOD13**. You'll see the current +symbols and CoE objects exposed for the EL1502 terminal: + +You can identify the CoEs by the fact that they are grouped into their own group boxes, the symbols all appear in the first group box. + +## Step 3: Fetch the Beckhoff Terminal Database + +Before editing terminal definitions, you need to download Beckhoff's ESI +(EtherCAT Slave Information) database. This XML catalog describes all terminal +types and their available symbols. + +Run the cache update command: + +```bash +catio-terminals update-cache +``` + +This downloads XML files from Beckhoff's website to `~/.cache/catio_terminals/`. +You only need to do this once (or when new terminal types are released). + +:::{note} +The download may take a minute. You'll see progress messages as it parses +each XML file. +::: + +## Step 4: Launch the Terminal Editor + +Now launch the catio-terminals GUI to edit the terminal definitions: + +```bash +catio-terminals edit /tmp/terminal_types.yaml +``` + +A browser window will open with the terminal editor interface. + +:::{tip} +If a browser doesn't open automatically, look in the terminal output for a +URL like `http://localhost:8080` and open it manually. +::: + +## Step 5: Find the EL1502 Terminal + +The editor shows a list of all terminal types defined in the YAML file. + +1. **Use the filter** - Type `EL1502` in the filter/search box at the top +2. **Click on EL1502** - This opens the terminal details panel + +You'll see two main sections: +- **Symbol Nodes (PDO)** - Process data (counter values, control bits) +- **CoE Objects** - Configuration parameters accessible via SDO + +## Step 6: Add CoE Objects + +The EL1502 has several CoE objects available for configuration. Let's add +some useful ones. + +### Available CoE Objects + +The EL1502 supports the following CoE configuration objects and by default these are already selected in the YAML file. The 0x8000 range of Coe addresses represents the operational configuration parameters for all terminals that have CoE. + +There are many more CoE objects available for the EL1502. In this exercise you can add a few more to see the result in the IOC and Phoebus. + +| Index | Name | Purpose | +|-------|------|---------| +| 0x8000 | CNT Settings Ch.1 | Channel 1 counter configuration | +| 0x8010 | CNT Settings Ch.2 | Channel 2 counter configuration | +| 0x8020 | CNT Settings | Combined counter settings | + +### Select CoE Objects + +1. Scroll down to the **CoE Objects** section +2. Click the checkbox next to these objects to select them: + - **CNT Settings Ch.1** (index 0x8000) + - **CNT Settings Ch.2** (index 0x8010) + - **CNT Settings** (index 0x8020) + +3. Expand a CoE object to see its sub-indices: + - Each sub-index is a configurable parameter + - For example, CNT Settings Ch.1 has: + - Enable function to set output + - Enable function to reset output + - Enable reload + - Count down + - Switch on threshold value + - Switch off threshold value + - Counter reload value + +4. Select individual sub-indices you want to expose as PVs + +:::{tip} +The counter threshold values are particularly useful - they let you configure +at what count values the terminal sets or resets its digital output. +::: + +## Step 7: Save the Configuration + +Click the **Save** button in the editor toolbar. + +The YAML file is updated with your selections. You can verify by examining +the file: + +```bash +# Check the EL1502 section in the YAML +grep -A 100 "EL1502:" /tmp/terminal_types.yaml | head -120 +``` + +Look for `selected: true` on the CoE object subindices you enabled. + +## Step 8: Restart the IOC + +The IOC reads terminal definitions at startup, so you need to restart it to +pick up the changes. + +1. Stop the running IOC with `Ctrl+C` +2. Restart it: + +```bash +fastcs-catio ioc IOC \ + --terminal-defs /tmp/terminal_types.yaml +``` + +:::{note} +The simulator can stay running - you only need to restart the IOC. +::: + +## Step 9: View the New PVs + +Navigate back to the EL1502 terminal in Phoebus (ETH1 > RIO2 > MOD13). + +You should now see additional PVs for the CoE objects you selected: +- Counter configuration parameters +- Threshold values +- Enable flags + +These parameters are now readable and writable through EPICS! + +### Example: Configure Counter Threshold + +Try setting a counter threshold: + +```bash +# Set the "switch on" threshold for channel 1 to 100 +caput IOC:ETH1:RIO2:MOD13:CNT_SETTINGS_CH_1:SWITCH_ON_THRESHOLD_VALUE 100 + +# Read it back +caget IOC:ETH1:RIO2:MOD13:CNT_SETTINGS_CH_1:SWITCH_ON_THRESHOLD_VALUE +``` + +## Understanding CoE vs PDO + +| Type | What It Is | Access Speed | Use Case | +|------|------------|--------------|----------| +| **PDO (Symbol)** | Process data | Fast (cyclic) | Real-time I/O values | +| **CoE (SDO)** | Configuration | Slower (acyclic) | Setup parameters | + +- **PDO symbols** (counter value, status bits) update every EtherCAT cycle +- **CoE objects** (thresholds, enable flags) are configuration parameters read/written on demand + +Most applications need PDO symbols for monitoring. CoE objects are useful when +you need to configure terminal behavior at runtime. + +## Experiment Further + +### Add More Terminal Types + +TODO: this experiment needs to be expanded into a separate tutorial in which we add terminals to the chain and then see that we need to update the terminal definitions to get those new terminals working. + +Try adding CoE objects to other terminal types: +- **EL3104** - Analog input scaling and filter settings +- **EL2024** - Digital output diagnostics + +### Remove Unused Symbols + +If your IOC has too many PVs, use the editor to deselect symbols you don't +need. This reduces memory usage and simplifies the Phoebus screens. + +### Create Custom YAML Files + +For production deployments, you might maintain separate YAML files for +different beamlines or experiments: + +```bash +# Copy the base definitions +cp /tmp/terminal_types.yaml /tmp/beamline_i22.yaml + +# Edit for I22-specific terminals +catio-terminals edit /tmp/beamline_i22.yaml + +# Start IOC with custom definitions +fastcs-catio ioc BL22I-EA-CATIO-01 \ + --terminal-defs /tmp/beamline_i22.yaml +``` + +## Next Steps + +- Learn about [Terminal YAML Definitions](../explanations/terminal-yaml-definitions.md) + in depth +- Explore [CoE Parameters](../explanations/coe-parameters.md) available for + different terminal types +- See [Architecture Overview](../explanations/architecture-overview.md) for how + the system works + +## Troubleshooting + +### CoE Objects Not Appearing + +- Ensure you saved the YAML file in the editor +- Verify the IOC was restarted (not just the simulator) +- Check for YAML syntax errors: `python -c "import yaml; yaml.safe_load(open('/tmp/terminal_types.yaml'))"` + +### Editor Won't Start + +- Ensure the terminals optional dependency is installed: `uv pip install -e ".[terminals]"` +- Check no other process is using port 8080 + +### PV Names Changed + +CoE object PV names are derived from their names in the Beckhoff XML. If names +look different after editing, the XML database may have been updated. This is +normal - the names are canonical from Beckhoff. + +Because the screens are autogenerated, you need only refresh them with `right-click > Re-load display` to see the new PVs after editing terminal definitions and restarting the IOC. diff --git a/docs/tutorials/getting-started-with-simulator.md b/docs/tutorials/getting-started-with-simulator.md index 975bb62..1d8aaf1 100644 --- a/docs/tutorials/getting-started-with-simulator.md +++ b/docs/tutorials/getting-started-with-simulator.md @@ -80,13 +80,12 @@ Leave this terminal running and open a new terminal for the next step. In a new terminal, start the IOC connecting to the simulator: ```bash -fastcs-catio ioc TUTORIAL \ - --terminal-defs /tmp/terminal_types.yaml \ - --screens-dir /tmp/screens +fastcs-catio ioc IOC \ + --terminal-defs /tmp/terminal_types.yaml ``` The command arguments: -- `TUTORIAL` - The PV prefix for all EPICS records (e.g., `TUTORIAL:ETH1:...`) +- `IOC` - The PV prefix for all EPICS records (e.g., `IOC:ETH1:...`) - `--terminal-defs` - Points to our editable terminal definitions - `--screens-dir` - Where to write the generated Phoebus `.bob` screen files @@ -143,7 +142,7 @@ Navigate to any EL2024 terminal (e.g., Term 4) to see: - Working counter status - State indicators -Try clicking the output toggles - they will update in the simulator. +Note that the simulator is a basic at present and none of the symbols will update if you attempt to change them. CoE parameters will appear to update (but are not really changing any behaviour in the simulator) **Digital Input (EL1004/EL1014)** @@ -174,11 +173,11 @@ Now that everything is running, try these experiments: In another terminal, use `caget` or `camonitor` to see the PVs: ```bash -# List all PVs with the TUTORIAL prefix -caget TUTORIAL:ETH1:RIO1:MOD1:CH1:OUTPUT +# List all PVs with the IOC prefix +caget IOC:ETH1:RIO1:MOD1:CH1:OUTPUT # Monitor a digital output -camonitor TUTORIAL:ETH1:RIO1:MOD1:CH1:OUTPUT +camonitor IOC:ETH1:RIO1:MOD1:CH1:OUTPUT ``` ### Modify the Chain Topology @@ -199,6 +198,8 @@ When finished, stop the processes with `Ctrl+C`: ## Next Steps +- [Customizing Terminal Definitions](customizing-terminal-definitions.md) - Add CoE + objects and symbols using the GUI editor - Learn about [terminal YAML definitions](../explanations/terminal-yaml-definitions.md) - Explore the [architecture overview](../explanations/architecture-overview.md) @@ -231,7 +232,7 @@ python -m tests.ads_sim --port 48899 ### No PVs visible in Phoebus Ensure the IOC is running and check the PV prefix matches. The default -configuration uses `TUTORIAL` as the prefix. +configuration uses `IOC` as the prefix. ### Container permission errors From 55caf1571061f6bc5066828502b76d00c575de0d Mon Sep 17 00:00:00 2001 From: giles knap Date: Thu, 5 Feb 2026 15:36:04 +0000 Subject: [PATCH 6/6] commit to re-try github actions --- docs/tutorials/getting-started-with-simulator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/getting-started-with-simulator.md b/docs/tutorials/getting-started-with-simulator.md index 1d8aaf1..415379f 100644 --- a/docs/tutorials/getting-started-with-simulator.md +++ b/docs/tutorials/getting-started-with-simulator.md @@ -142,7 +142,7 @@ Navigate to any EL2024 terminal (e.g., Term 4) to see: - Working counter status - State indicators -Note that the simulator is a basic at present and none of the symbols will update if you attempt to change them. CoE parameters will appear to update (but are not really changing any behaviour in the simulator) +Note that the simulator is a basic at present and none of the symbols will update if you attempt to change them. CoE parameters will appear to update (but are not really changing any behaviour in the simulator). **Digital Input (EL1004/EL1014)**