{"id":50525688,"url":"https://github.com/feelautom/tia-connect-vscode","last_synced_at":"2026-06-03T08:00:27.535Z","repository":{"id":356266371,"uuid":"1231634019","full_name":"feelautom/tia-connect-vscode","owner":"feelautom","description":"VS Code extension for Siemens TIA Portal  edit SCL/STL, compile, export/import, version control, AI assistant, and CI/CD pipelines via the  T-IA Connect REST API","archived":false,"fork":false,"pushed_at":"2026-05-07T10:09:31.000Z","size":7449,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-07T11:13:13.422Z","etag":null,"topics":["iec-61131-3","iec-61131-4","industrial-automation","mcp","mcp-client","mcp-server","plc-programming","s7-1500","scl","siemens","stl","tia-portal","tia-portal-openness","tia-portal-scada-plc-automation-factory-io-opc-ua","tia-portal-unified","tia-portal-v20","tia-portal-v21","vscode-extension"],"latest_commit_sha":null,"homepage":"https://t-ia-connect.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/feelautom.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-07T06:28:31.000Z","updated_at":"2026-05-07T10:09:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/feelautom/tia-connect-vscode","commit_stats":null,"previous_names":["feelautom/tia-connect-vscode"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/feelautom/tia-connect-vscode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feelautom%2Ftia-connect-vscode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feelautom%2Ftia-connect-vscode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feelautom%2Ftia-connect-vscode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feelautom%2Ftia-connect-vscode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/feelautom","download_url":"https://codeload.github.com/feelautom/tia-connect-vscode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feelautom%2Ftia-connect-vscode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33854119,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iec-61131-3","iec-61131-4","industrial-automation","mcp","mcp-client","mcp-server","plc-programming","s7-1500","scl","siemens","stl","tia-portal","tia-portal-openness","tia-portal-scada-plc-automation-factory-io-opc-ua","tia-portal-unified","tia-portal-v20","tia-portal-v21","vscode-extension"],"created_at":"2026-06-03T08:00:19.496Z","updated_at":"2026-06-03T08:00:27.515Z","avatar_url":"https://github.com/feelautom.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# T-IA Connect for VS Code\r\n\r\nExplore, edit, and compile Siemens TIA Portal projects directly from VS Code, Cursor, or Windsurf.\r\n\r\nThis extension connects to a running [T-IA Connect](https://t-ia-connect.com) server and provides a full development workflow for PLC programming: without leaving your editor.\r\n\r\n[![Version](https://img.shields.io/github/v/tag/feelautom/tia-connect-vscode?label=version\u0026sort=semver)](https://github.com/feelautom/tia-connect-vscode/releases)\r\n[![VS Code](https://img.shields.io/badge/VS_Code-1.85+-007ACC?logo=visual-studio-code\u0026logoColor=white)](https://code.visualstudio.com/)\r\n[![License: Elastic-2.0](https://img.shields.io/badge/license-Elastic--2.0-blue)](https://github.com/feelautom/tia-connect-vscode/blob/main/LICENSE)\r\n[![Platform](https://img.shields.io/badge/platform-Windows-0078D6?logo=windows\u0026logoColor=white)](https://github.com/feelautom/tia-connect-vscode)\r\n[![TIA Portal](https://img.shields.io/badge/TIA_Portal-V17--V21-orange)](https://www.siemens.com/tia-portal)\r\n[![Tests](https://img.shields.io/badge/tests-185_passing-brightgreen)](https://github.com/feelautom/tia-connect-vscode)\r\n[![i18n](https://img.shields.io/badge/i18n-EN_%7C_FR-lightgrey)](https://github.com/feelautom/tia-connect-vscode)\r\n[![Author](https://img.shields.io/badge/author-FEELAUTOM-00B4D8)](https://feelautom.com)\r\n\r\n![T-IA Connect Demo](docs/screenshots/demo.gif)\r\n\r\n\u003e **[View all screenshots](https://feelautom.github.io/tia-connect-vscode/screenshots.html)**: 28 screenshots showing the complete workflow.\r\n\r\n---\r\n\r\n## Quick Start\r\n\r\n1. **Install the extension** from the VS Code Marketplace\r\n2. Click the **T-IA Connect** icon in the Activity Bar (left sidebar)\r\n3. **Sign in** with your T-IA Connect account (or create one for free)\r\n4. If T-IA Connect is not installed, follow the download link in the sidebar\r\n5. Click **Launch Headless** or **Launch with GUI** to start the server\r\n6. Open a TIA Portal project: you're ready to code!\r\n\r\n\u003e The API key is configured automatically when the server runs on your machine. No manual setup needed.\r\n\r\n---\r\n\r\n## Features\r\n\r\n### Project Explorer\r\n\r\nBrowse your TIA Portal project structure directly in VS Code.\r\n\r\n- **Device tree**: PLCs, HMIs, and their contents: blocks, tag tables, UDTs, watch tables\r\n- **Block folders**: hierarchical view matching your TIA Portal structure\r\n- **Block icons**: color-coded by type: OB (blue), FB (green), FC (orange), DB (purple)\r\n- **Status indicators**: block language and consistency state at a glance\r\n- **Project Dashboard**: overview panel with device stats, block counts, tag summaries, and UDT counts\r\n\r\n![Project Explorer](docs/screenshots/14-project-tree.png)\r\n\r\n### SCL / STL Editing\r\n\r\nDouble-click any SCL or STL block to open it with full language support. Edit, save (**Ctrl+S**), and it's reimported into TIA Portal automatically.\r\n\r\n- **Syntax highlighting**: TextMate grammars for SCL and STL\r\n- **Autocompletion**: keywords, types, variables, and built-in functions\r\n- **Signature Help**: parameter hints for 30+ SCL functions\r\n- **Hover documentation**: type info, function docs, system block documentation (TON, CTU, R_TRIG...)\r\n- **Go-to-Definition**: Ctrl+click on local variables or block names (cross-file via API)\r\n- **Rename Symbol** (F2): rename a variable across the entire file\r\n- **Diagnostics**: compilation errors mapped to precise source lines (regex + symbol search)\r\n- **Document Outline**: hierarchical view of blocks, sections, and variables\r\n- **15 SCL snippets**: FB, FC, OB, DB, IF, FOR, CASE, TON, R_TRIG...\r\n- **Compilation errors** displayed directly in the editor (red/yellow squiggles at the correct line)\r\n- **Background preloading**: blocks are cached after project load for near-instant opening\r\n\r\n#### Save behavior\r\n\r\n- **Ctrl+S** (manual save) triggers reimport into TIA Portal + optional auto-compile\r\n- **VS Code auto-save** is ignored: no accidental reimports\r\n- **Safety timer** saves to disk every 5/10/15 minutes without reimporting (configurable)\r\n\r\n![SCL Editor](docs/screenshots/16-scl-editor.png)\r\n\r\n### LAD / FBD / GRAPH Viewer\r\n\r\nNon-editable blocks open in a graphical webview with SVG rendering.\r\n\r\n- **Contacts and coils**: NO, NC, positive/negative edge, Set/Reset\r\n- **Function blocks**: 40+ instruction types (TON, TOF, TP, CTU, CTD, CTUD, MOVE, ADD, SUB, MUL, DIV, CMP...) rendered with tinted header, EN/ENO row, and named input/output pins\r\n- **Connected values**: current values (PT, PV, CV, IN1, OUT...) displayed inside each block\r\n- **Parallel branches**: vertical merge connectors and wire routing\r\n- **Interface table**: variable types shown alongside the network\r\n- Read-only: no accidental modifications\r\n\r\n![LAD Viewer](docs/screenshots/15-lad-viewer.png)\r\n\r\n### Create Blocks\r\n\r\nRight-click any device in the Project Explorer and select **Create Block**.\r\n\r\n- Block types: **FB**, **FC**, **OB**, **DB**\r\n- Languages: **SCL**, **STL**, **LAD**, **FBD**, **GRAPH**\r\n- SCL/STL blocks include a ready-to-use code template\r\n- The project tree refreshes automatically\r\n\r\n### Compile\r\n\r\nCompile a single block or an entire device from the context menu or the Command Palette.\r\n\r\n- Progress notification with error/warning count\r\n- Detailed messages in the Output channel\r\n- Compilation errors appear as diagnostics at the correct line in the editor\r\n- Keyboard shortcut: **Ctrl+Shift+B**\r\n\r\n### Export / Import\r\n\r\nFull bidirectional export and import for all project data.\r\n\r\n#### Tags\r\n- Export tag tables as **CSV**, **XLSX**, or **XML**\r\n- Import from **CSV** or **XLSX**\r\n\r\n#### UDTs (User-Defined Types)\r\n- Export/import as **XML**\r\n\r\n#### Watch Tables\r\n- Export/import watch and force tables\r\n\r\n#### HMI\r\n- Export/import individual **HMI screens**\r\n- Bulk export: **screens + tags + connections** in one command\r\n\r\n#### Hardware Configuration\r\n- Export/import hardware config (**AML** format)\r\n\r\n#### Export All\r\n- One-click export of **tags + UDTs + watch tables** for a device\r\n\r\n### Source Control (VCS)\r\n\r\nVersion your TIA Portal project with Git-based source control, directly in the sidebar.\r\n\r\n1. **Export Preview** (eye icon): export the project and detect changes since the last commit\r\n2. **Review**: click any changed file to open a read-only side-by-side diff\r\n3. **Commit** (checkmark icon): save the current state with a message\r\n\r\nAdditional features:\r\n- Push / Pull to remote repositories\r\n- Branch operations: create, switch, delete, merge\r\n- Commit log with diff viewer\r\n- Auto-export every minute (changes appear automatically)\r\n- Auto-refresh status every 30 seconds\r\n- **Smart Comparison**: normalized XML diff (strips IDs, timestamps, whitespace) to detect real changes\r\n- **Dependency Sort**: topological ordering (Kahn's algorithm) for correct import order\r\n- **Orphan Cleanup**: detect blocks deleted in TIA Portal but still in source control\r\n- License check (lock icon if VCS is not included in your edition)\r\n\r\n### AI Integration\r\n\r\nThree complementary AI features for PLC development:\r\n\r\n#### @tia Chat Participant (GitHub Copilot Chat)\r\n\r\nType `@tia` in GitHub Copilot Chat to interact with your TIA Portal project using natural language.\r\n\r\n- **30 Language Model Tools**: project overview, block management, compilation, tags, UDTs, cross-references, PLCSim, VCS, pipelines, hardware\r\n- **Agentic loop**: the AI can chain multiple tool calls (up to 10 rounds) to complete complex tasks\r\n- **License check**: verifies AI license before consuming tokens\r\n\r\n#### T-IA Connect Copilot (Sidebar)\r\n\r\nDedicated AI assistant in the secondary sidebar, independent of GitHub Copilot.\r\n\r\n- Connected to the T-IA Connect server's multi-provider LLM (OpenAI, Anthropic, Google, Mistral, Ollama)\r\n- Chat history, clickable block links, auto-refresh after AI actions\r\n- Connection-aware: shows sign-in or offline state when not connected\r\n- Localized in French\r\n\r\n![Copilot Summary](docs/screenshots/25-copilot-summary.png)\r\n\r\n#### MCP Server (100+ Tools)\r\n\r\nThe T-IA Connect server exposes a **Model Context Protocol** server with 100+ tools. The extension auto-generates `.vscode/mcp.json` so GitHub Copilot Chat can use all MCP tools automatically.\r\n\r\nCompatible with: **Claude Desktop**, **Claude Code**, **Cursor**, **Windsurf**, and any MCP client.\r\n\r\n### PLC Tests\r\n\r\nRun PLC tests against PLCSim Advanced from the sidebar.\r\n\r\n- Automatic license and PLCSim availability checks\r\n- Run individual tests or the entire suite\r\n- Detailed results: pass/fail badges, step cards, assertions table with expected vs actual values\r\n- Duration and timestamps\r\n\r\n### Cross-References\r\n\r\nView cross-references for any block type (SCL, STL, LAD, FBD, GRAPH).\r\n\r\n- Source and target references with type badges\r\n- Read/Write access indicators\r\n- Dedicated webview panel alongside the editor\r\n\r\n### Pipelines (CI/CD)\r\n\r\nDefine and run CI/CD pipelines for your TIA Portal projects.\r\n\r\n- List, run, and monitor pipelines\r\n- Create from built-in templates\r\n- Execution history with step-level details\r\n\r\n### Workspace Scaffolding\r\n\r\nInitialize a TIA-ready workspace with one command:\r\n\r\n- `.gitignore` with TIA Portal patterns (*.ap*, *.zap*, .tia-temp/)\r\n- `.github/copilot-instructions.md` for GitHub Copilot context\r\n- `CLAUDE.md` for Claude Code context\r\n\r\n---\r\n\r\n## Authentication\r\n\r\nThe extension uses two independent layers:\r\n\r\n| Layer | Purpose | How it works |\r\n|-------|---------|--------------|\r\n| **T-IA Connect Account** | Identifies you, checks your license | Sign in via browser: token stored securely in your OS keyring |\r\n| **Server API Key** | Authenticates REST calls to the local server | Auto-configured from the local server (no manual copy-paste) |\r\n\r\nOn first launch:\r\n1. Click **Sign In** in the sidebar → your browser opens the login page\r\n2. After login, the extension picks up your session automatically\r\n3. The API key is retrieved from the local server in the background\r\n\r\n\u003e Your credentials are stored in the OS credential manager (Windows Credential Manager / macOS Keychain / Linux Secret Service). They are never stored in plain text.\r\n\r\n---\r\n\r\n## Opening Projects\r\n\r\nUse **T-IA Connect: Switch Project** (`Ctrl+Shift+P`) to open a project.\r\n\r\n- **Recent projects**: your project history, sorted by last access\r\n- **Browse...**: file dialog to pick any `.ap17` to `.ap21` file\r\n- **Archives**: `.zap17` to `.zap21` files are supported (prompts for extraction folder)\r\n- Default browse location: `Documents/Automation`\r\n\r\n---\r\n\r\n## Server Management\r\n\r\nThe extension can launch and stop the T-IA Connect server for you.\r\n\r\n| Action | Description |\r\n|--------|-------------|\r\n| **Launch Headless** | Runs silently in the background (no window) |\r\n| **Launch with GUI** | Opens the full desktop application |\r\n| **Stop Server** | Shuts down the server (from the Disconnect menu) |\r\n\r\nThe server is automatically detected if installed in the default location. You can configure a custom path in settings.\r\n\r\nIf the server starts on a non-default port (conflict in the 9000–9100 range), the extension reads the instance registry (`%APPDATA%\\FeelAutomCorp\\T-IA-Connect\\instances.json`) and automatically offers to update the server URL: no manual reconfiguration needed.\r\n\r\n---\r\n\r\n## Extension Settings\r\n\r\n| Setting | Default | Description |\r\n|---------|---------|-------------|\r\n| `tiaConnect.serverUrl` | `http://localhost:9000` | T-IA Connect server URL |\r\n| `tiaConnect.apiKey` | *(auto-configured)* | API key (auto-fetched from local server) |\r\n| `tiaConnect.autoReimportOnSave` | `true` | Reimport blocks on Ctrl+S |\r\n| `tiaConnect.autoCompileOnReimport` | `false` | Compile after reimport |\r\n| `tiaConnect.autoSaveInterval` | `5` | Safety auto-save (minutes, 0 = disabled) |\r\n| `tiaConnect.excludeFromReimport` | `[]` | Block names to skip during auto-reimport |\r\n| `tiaConnect.executablePath` | *(auto-detected)* | Path to the T-IA Connect executable |\r\n| `tiaConnect.autoConfigureMcp` | `true` | Auto-generate MCP config for GitHub Copilot |\r\n\r\n---\r\n\r\n## Commands\r\n\r\nAll commands are available via **Ctrl+Shift+P**:\r\n\r\n### Project\r\n| Command | Description |\r\n|---------|-------------|\r\n| Sign In | Sign in with your T-IA Connect account |\r\n| Create Account | Create a new account |\r\n| Sign Out | Sign out |\r\n| Connect to Server | Connect and authenticate |\r\n| Disconnect from Server | Disconnect or stop the server |\r\n| Launch Server (Headless) | Start server in background |\r\n| Launch Server (GUI) | Start server with desktop UI |\r\n| Switch Project | Open a different project |\r\n| Refresh Project Tree | Reload project structure |\r\n| Open Settings | Open extension settings |\r\n\r\n### Blocks\r\n| Command | Description |\r\n|---------|-------------|\r\n| Create Block | Create a new FB/FC/OB/DB |\r\n| Compile Device | Compile all software on a device |\r\n| Compile Block | Compile a single block |\r\n| Export Block to File | Export as SimaticML XML |\r\n| Import SCL/STL File | Import an external source file |\r\n| Show Cross-References | View block references |\r\n\r\n### Export / Import\r\n| Command | Description |\r\n|---------|-------------|\r\n| Export All | Export tags + UDTs + watch tables for a device |\r\n| Export HMI Screen | Export a single HMI screen |\r\n| Export All HMI | Export screens, tags, and connections |\r\n| Import HMI Files | Import HMI screens/tags/connections |\r\n| Export Hardware Config | Export hardware configuration (AML) |\r\n| Import Hardware Config | Import hardware configuration |\r\n| Initialize Workspace | Generate .gitignore, copilot-instructions, CLAUDE.md |\r\n\r\n### Source Control\r\n| Command | Description |\r\n|---------|-------------|\r\n| Initialize VCS | Initialize source control repository |\r\n| Export Preview | Detect changes without committing |\r\n| Commit Changes | Export and commit |\r\n| Push / Pull | Sync with remote |\r\n| Branch Operations | Create, switch, delete, merge |\r\n| Show Commit Log | View history with diffs |\r\n| Detect Orphans | Find blocks deleted from TIA but still in VCS |\r\n\r\n### Pipelines \u0026 Tests\r\n| Command | Description |\r\n|---------|-------------|\r\n| List / Run / History | Manage CI/CD pipelines |\r\n| Create from Template | Create pipeline from template |\r\n| Run All PLC Tests | Run the full test suite |\r\n| Run Test | Run a single test |\r\n\r\n---\r\n\r\n## Requirements\r\n\r\n- **T-IA Connect server** v2.1.620+: [t-ia-connect.com](https://t-ia-connect.com)\r\n- **TIA Portal** V17-V21 installed on the same machine as the server\r\n- Network access to the server (default: `http://localhost:9000`)\r\n\r\n## How It Works\r\n\r\n```\r\nVS Code Extension           T-IA Connect Server          TIA Portal\r\n  TypeScript/REST  ──HTTP──\u003e  C# / .NET 4.8  ──Openness──\u003e  V17-V21\r\n             \u003c──SignalR──  (real-time push notifications)\r\n```\r\n\r\nThe extension is a **lightweight REST + SignalR client**. All TIA Portal operations (Openness API calls, compilation, simulation) happen server-side. This means:\r\n\r\n- **No TIA Portal dependency** in VS Code\r\n- **Multi-project**: switch between projects without restarting\r\n- **Multi-client**: VS Code, Cursor, and scripts can connect simultaneously\r\n- **Remote-capable**: the server can run on a different machine or VM\r\n\r\n## Compatibility\r\n\r\n| Editor | Supported |\r\n|--------|-----------|\r\n| VS Code 1.85+ | Yes |\r\n| Cursor | Yes |\r\n| Windsurf | Yes |\r\n\r\n## Localisation\r\n\r\nThe extension is fully translated in **French**. It displays in French when VS Code is configured with `\"locale\": \"fr\"`. English is the default.\r\n\r\n---\r\n\r\n## Documentation\r\n\r\n- [Architecture](docs/ARCHITECTURE.md): Code structure, components, data flow\r\n- [Roadmap](docs/ROADMAP.md): Development status by phase\r\n- [Changelog](changelog.md): Version history\r\n\r\n## License\r\n\r\n[Elastic License 2.0](LICENSE): [FEELAUTOM](https://feelautom.com)\r\n\r\nThis software is source-available. You may use, copy, distribute, and modify it, subject to the limitations in the license. You may **not** provide it as a hosted/managed service, and you may **not** circumvent the license key functionality.\r\n\r\nThe T-IA Connect server requires a separate license: free trial available at [t-ia-connect.com](https://t-ia-connect.com).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeelautom%2Ftia-connect-vscode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffeelautom%2Ftia-connect-vscode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeelautom%2Ftia-connect-vscode/lists"}