Legacy STL in.Verified SCL out.

Operandi converts Siemens S7-300/400 STL into readable SCL for TIA Portal. Every network is checked. Nothing is guessed.

The code still runs. The people who wrote it have retired.

Most S7-300 programs from 1995 to 2005 have no comments, no documentation and no one left to explain them. Spare parts are running out, so the modernization has to happen anyway.

Manual rewrites take months and every typo can stop a line.
  • 3-9months

    to rewrite the logic of one production line by hand

  • €50-150kper line

    in integrator hours for a manual rewrite

  • €20kper minute

    what a stopped line can cost in automotive

How it works

From accumulator code to structured SCL in four passes

  1. Reads the AWL source exported from SIMATIC Manager, in English or German mnemonics, and splits it into blocks and networks.

  2. Tracks ACCU 1, ACCU 2 and the status word symbolically, so every L and T chain becomes a plain, typed assignment.

  3. Jumps become IF, CASE and REPEAT. No GOTO, no helper flags. Jumps that cannot be structured go to manual review.

  4. An independent STL simulator runs against the generated SCL. Up to 16 inputs every state is tested, above that 65,536 sampled states, and the report says which.

STLFC30.awl
AI 1.0
JCHIGH
L100
TMW 10
JUDONE
HIGH:L250
TMW 10
DONE:NOP0
SCLFC30.sclEquivalent in 65,536 sampled states
REGION Network 1: Select a setpoint
//Operandi: equivalent to the STL reference model in 65536 sampled input states (not exhaustive)
IF NOT %I1.0 THEN   //STL lines 9-10
%MW10 := WORD#16#0064;   //STL lines 11-12
ELSE
%MW10 := WORD#16#00FA;   //STL lines 14-15
END_IF;
END_REGION

Hover a line of SCL to see the STL it came from.

Real input and output of the Operandi engine, test fixture control_flow_en.

SCLFC80.sclManual review
REGION Network 4: Extended pulse timer stays manual (MANUAL REVIEW REQUIRED)
   (*
   OPERANDI: MANUAL REVIEW REQUIRED. This network was not converted automatically.
   Reason:
     line 32: T 3 is an extended pulse timer (SE); the IEC pulse timer TP
     does not restart while it runs; convert this timer by hand
   Original STL (lines 30-34):
     A     I      0.3;
     L     S5T#500MS;
     SE    T      3;
     A     T      3;
     =     Q      4.2;
   *)
OPERANDI_MANUAL_REVIEW_REQUIRED;
END_REGION
Real output for an extended pulse timer (SE), which has no IEC equivalent with the same behaviour.

When Operandi is not sure, it stops

A network is converted only when every instruction in it is supported and the equivalence check passes. Otherwise you get the original STL, the reason and a marker that deliberately blocks compilation in TIA Portal.

  • No silent fallbacks

    Indirect addressing, MCR, status-bit jumps and S5 timers without an exact IEC twin are flagged, never approximated.

  • Safety blocks are refused

    F-FBs and F-FCs from Distributed Safety are out of scope for good. Safety logic stays with your safety engineer.

  • Same file, same output

    Conversion is deterministic. The same source gives the same SCL byte for byte, so every review and diff stays valid.

Offline

Built for plants where nothing leaves the network

Runs on the service laptop, offline

One Windows executable. No installer, no admin rights, no internet connection. Your code, recipes and I/O addresses stay inside the plant.

  • Air-gapped by design
  • Windows 10 and 11, 64-bit
  • Report and SCL saved next to the source

Whole project archives in one run

Point Operandi at a folder of .awl files and it converts every block in one pass, with one symbol table and a report next to each file. Handy before you quote a modernization.

Licence file, verified offline

Ed25519-signed licence file. You activate the key once on any computer with internet access, then the file works offline until the end of the paid period.

No LLM in the conversion path

A deterministic compiler, not a chatbot. Your code is never used to train any model.

You stay in control of the green light

  1. 01

    Every line is traceable

    Each SCL statement carries the STL lines it came from, so review is a comparison, not an investigation.

  2. 02

    You simulate and test

    Import the SCL into TIA Portal, run PLCSIM and your FAT and SAT exactly as you would after a manual rewrite.

  3. 03

    Your engineers sign off

    Operandi is an engineering assistant. The final validation of the machine stays with the people who commission it.

Automotive production line with welding robots and an amber stack light

How long would your project take by hand?

Move the sliders to match your project. The estimate uses about 36 lines of STL rewritten and tested per engineer hour.

15,000
80 € per hour
Manual rewrite
417hours52 working days
Engineering cost
€33,300

With Operandi

Conversion runs in minutes. Your engineers review the flagged networks and run the usual tests.

Pro from €249 per month

Estimate only. Real effort depends on the code base and the share of networks flagged for manual review.

Pricing

Two plans. Pay monthly or yearly.

Net prices in EUR per seat. VAT is added at checkout according to the buyer's country. Every plan includes an offline licence, updates and bug fixes. You buy a tool, not a service: no implementation, consulting or code review.

Billing period

Audit

Review a legacy program before you quote or change a machine

€39

per seat per month

€390

per seat per year

  • Map of used addresses: M, DB, I and Q
  • Overlapping addresses detected, for example MD10 and MW12
  • Call tree of FB and FC blocks
  • HTML report ready to print or save as PDF
SubscribeSubscribe

Our payment partner issues the invoice automatically. Need several seats? Write to [email protected]

Questions engineers ask first

Is this AI?

No. Operandi is a deterministic compiler written in Rust. There is no language model anywhere in the conversion path, so the same input always produces the same output and nothing is invented.

What do I need to export?

The STL source of your blocks from SIMATIC Manager (Generate Source, .awl files). LAD and FBD blocks work too, because Generate Source writes them as STL. A symbol table (.sdf or .asc) is optional and gives the SCL your real names. STEP 5 and memory dumps are not supported yet.

Which target platforms are supported?

Today: external SCL source for TIA Portal and S7-1500, with symbols, data blocks, UDTs, FB and FC calls, S5 timers and counters. A generic IEC 61131-3 backend for CODESYS, TwinCAT and PLCopen XML is planned.

What happens to code Operandi cannot convert?

The network stays in the SCL as a commented copy of the original STL with the exact reason, followed by OPERANDI_MANUAL_REVIEW_REQUIRED. That marker breaks compilation on purpose, so unchecked code can never reach a PLC.

Does our code ever leave the plant?

No. Operandi runs offline on your own laptop, the trial included, and the licence is checked locally. We never receive your code unless you choose to attach an example to a bug report.

Do you help with the migration?

No. We sell the tool, not a service. Your team or your integrator runs the conversion, reviews the flagged networks, tests and commissions the machine. Support covers bugs in the tool itself: if Operandi translates a network wrongly, email us an example without sensitive data and the fix ships in an update.

How does the subscription work?

You buy Audit or Pro per seat, monthly or yearly, through our payment partner, which also issues the invoice. The licence key and the download link arrive by email. You activate the key once on any computer with internet access and get a licence file that works offline until the end of the paid period. You can cancel at any time in the customer portal.

Who is responsible for the modernized machine?

The company that modernizes and commissions it, as the EU Machinery Regulation 2023/1230 requires. Operandi produces a code proposal with a full audit trail. FAT, SAT and safety validation stay with your team.

Try Operandi on your own code, on your own laptop.

Ask for a trial and we send you the tool with a trial key. The conversion runs offline on your machine, so your code never leaves the plant. Free and without obligation.