LSKI is a ready-to-use PLC project plus WinCC Unified HMI that lets an operator create, edit and run kinematics programs on the panel — no engineering system in the machine. One LSKI_Core instance interprets one program in one channel; plugins bolt on programming, teaching, commissioning, diagnostics, palletising, G‑code and more. This console walks the library from first principles to the demo project, and lets you drive a simulated interpreter.
Personal study notes — not a Siemens publication. The manuals on Siemens Industry Online Support are authoritative.
One LSKI_Core instance interprets one program table into motion. Everything else in this section is the vocabulary that program is built from — slots, transitions, pointers and sequences — before any HMI ever gets involved.
A program is built by filling a table with commands, executed one after another. The table has two axes: program slots as columns, sized by LSKI_NO_OF_PROGRAM_SLOTS, and commands as rows, sized by LSKI_NO_OF_COMMANDS. Slots exist purely to keep a large program visually organised — you could write an entire automatic program in a single slot with no loss of functionality.
Execution runs sequentially with ascending command number, in whichever slot it is currently in, until it hits a program end. To move to a different slot, a command uses a jump, a loop or a subprogram call, targeting a label command placed in that slot.
Columns run to LSKI_NO_OF_PROGRAM_SLOTS, rows to LSKI_NO_OF_COMMANDS. A jump references a label by name — the label's slot is incidental.
A valid program needs a fixed skeleton around whatever automatic logic sits in the middle. The Add starting sequence feature in the Programming plugin builds this skeleton for you in an empty program.
Every command in the table carries a transition that decides when the interpreter moves to the next one. Each command exposes only two of the three; some have a fixed transition you cannot change.
| Transition | Behaviour |
|---|---|
| When command done | Wait until the command finishes before starting the next one. |
| Next cycle | Continue with the next command on the following PLC cycle. |
| Immediately | Continue with the next command in the same PLC cycle. |
Kinematics commands do not execute immediately — they drop into a separate motion queue so the next motion can be prepared while the current one is still blending. That is what makes Next cycle work for kinematics: the interpreter keeps reading ahead and queuing without waiting on each move to finish.
This creates two positions that can differ: the interpreter pointer (the command being read) and the motion pointer (the kinematics command actually moving). The motion pointer can never overtake the interpreter pointer — a move must be read and queued before it can run.
In the Programming plugin these are drawn as a black arrow (interpreter) and a green arrow (motion) in front of the active lines.
Execution always starts in the Main sequence. To parallelise tasks, a Start parallel sequence command occupies a slot in the parallel sequences and always starts at a label — the new sequence takes that label's name. Stop sequence ends one sequence; Stop all sequences ends every sequence, main included, and runs the stop routine.
One LSKI_Core instance runs one program controlling one kinematics. To add a second kinematics on the same S7‑1500T, raise LSKI_NO_OF_CHANNELS and call the LSKI modules again with dedicated instances for that channel. On the HMI, switching channel is a single write to LSKI_ChannelNavigation_ActiveChannel — the HMIInterface is multiplexed, so no extra HMI tags or screens are needed per channel. Each channel can run its own, independent set of plugins.
Select a block to see its interface. LSKI_Core is the only mandatory piece; everything above and below it is optional, but once you add one HMI plugin, LSKI_Core_HMI stops being optional too.
A real 19‑command LSKI program, driving a simulated Cartesian portal 3D+A. The black arrow is the interpreter pointer, the green arrow is the motion pointer — watch them separate whenever a move is queued with Next cycle, and snap back together the moment a command holds for When command done. The corner the gantry actually draws follows the same rule.
Single step active Every transition is forced to “When command done”. Blending is off, so the kinematics path changes from the automatic one and collisions can occur — only single‑step with the workspace clear.
Empty
No entries
actualSequenceData, the command being interpretedactiveSequenceData, the command the kinematics is executingCommands 12–14 and 15–16 show the interpreter consuming several Immediately commands in a single PLC cycle — capped, as in the real interpreter, at 10 commands per sequence per cycle.
Pick a mode and toggle motion enable to see which of the four core capabilities open up. Teaching always needs motion enable, whatever mode you're in.
The path from an empty TIA Portal project to a downloaded, running kinematics program. Steps 1–4 are prerequisites the library assumes are already in place; open any step for what it actually involves.
A STEP 7 V20 Update 4 project with SINAMICS Startdrive and WinCC Unified Engineering V20 Update 4 installed. LSKI is imported as a global library into this project, not the other way round.
PLC hardware configured (S7‑1511T or higher, firmware 4.0; an S7‑1518T or 1507D plus the KinPlus option for 5–6 axes), and communication established to the drives and to the WinCC Unified panel that will host the HMI.
Parameterise and optimise whichever Siemens drives the machine uses — SINAMICS V90, S210 or S120 — using functions such as one-button tuning. LSKI itself is drive-agnostic: it only ever talks to the technology objects sitting on top of the drives.
Configure and test TO_Kinematics, TO_PositioningAxis, TO_SynchronousAxis and TO_SpeedAxis fully in TIA Portal first — drive/encoder connection, mechanics, leading-value interconnections, homing, control loop and hardware limit switches are all TIA-only settings with no HMI equivalent.
Commission with the kinematics control panel until jogging to target positions works correctly. Only after that should further configuration or extension move to the HMI's Configuration plugin.
From the global library: Master copies → PLC. Drag LSKI_Tags_V4_1_0 and LSKI_Types_V4_1_0 into your PLC's (or software unit's) tag and data-type folders, then LSKI_Blocks_V4_1_0 → LSKI_Core_Blocks into Program blocks.
Call LSKI_Core once, in any OB, and wire its three mandatory in/outs — projectData, projectConfiguration, dataExchange — to the matching channel blocks from LSKI_ExampleBlocks_V4_1_0.
Size the installation through the constants in LSKI_ProjectConfiguration — LSKI_NO_OF_CHANNELS, program slots, commands, parallel sequences and the rest. Each one is retain memory committed up front, per channel.
Call LSKI_RegisterKinematics (it also registers the axes attached to that kinematics), LSKI_RegisterAdditionalAxis for any extra axis, and LSKI_RegisterTrackingTO plus LSKI_UpdateConveyorOrigin / LSKI_UpdateTrackingPosition for conveyor tracking — each function called exactly once, only in a Startup OB. A worked example ships under LSKI_ExampleBlocks_V4_1_0.
PLC side: drag each plugin's folder from LSKI_Blocks_V4_1_0 → LSKI_Plugin_Blocks → HMI or Technology into Program blocks. Any plugin from the HMI folder brings LSKI_Core_HMI with it as a requirement.
HMI side: LSKI_HMI_Tags_V4_1_0 into HMI tags, screens LSKI_Start and LSKI_Core_HMI into Screens, then the chosen plugin's own tag and screen folders. Re-establish any HMI connection the import broke and resynchronise the tags; for more than one channel, multiplex the HMI tags on LSKI_ChannelNavigation_ActiveChannel so the tag count stays flat. Using software units — publish the LSKI blocks and types first.
Screens are built for a resolution of 1920×1080.
In Security settings → Users and roles, assign each user one or more of the four LSKI roles — LSKI_Teach, LSKI_Programming, LSKI_Commissioning, LSKI_ProgramControl. Nothing is enforced until LSKI_UserAuthorization_Active is switched to true — it defaults to false.
Download both the PLC and the HMI. If HMI configuration changes were made to any technology object since the last download, upload the technology objects first — otherwise a plain download discards them.
LSKI is modular. LSKI_Core is the only mandatory block — every other row here is optional and, per the manual, should be deleted from the Program blocks folder, the PLC tags and the PLC data types when unused, purely to save code‑work memory on smaller CPUs.
| Plugin | Function block(s) | What it does & the trap | Config node | Memory (code / data / load, kB) |
|---|
Bars are scaled per column against the highest value in that column across all 14 rows (code‑work max 384 kB, data‑work max 863 kB, load max 10555 kB) — so Core, GCode, ProductRegister and Programming stand out on code‑work while AxisCoupling, AxisSafeBrakeTest and GenericExternalDevice barely register.
Every command a program can call, in the three groups the manual defines: axis control, kinematics control and interpreter commands. A command written directly in the PLC behaves exactly as it would if programmed from the HMI.
| Command | Group | Description (manual wording) |
|---|
Two separate code spaces. 16#7xxx are status words for no call / first call / subsequent call / invalid operation mode. 16#8xxx are errors — Table 20‑1 covers the Core and its plugins, Table 20‑2 covers the PLC programming functions of chapter 19.4. A handful of names repeat across the two tables with a different value — e.g. ERR_UNDEFINED_STATE is 16#8700 in Table 20‑1 but 16#8600 in Table 20‑2 — so always read the code together with which block raised it.
| Name | Value | Comment |
|---|
| Name | Value | Comment |
|---|
Every quantity-structure constant maps straight onto retain memory. Table 4‑1 shows one channel's default configuration on three CPU classes — the smaller the CPU, the tighter the headroom.
| Table 4‑1 | 1511T | 1515T | 1518T |
|---|
| Constant | Governs |
|---|
| Setting | Description |
|---|
Two example sections ship in the demo project, growing from one channel on a small CPU to four channels driven through an OMAC state manager.
| Component | Article no. | Note |
|---|---|---|
| CPU 1515T‑2 PN | 6ES7 515‑2TN03‑0AB0 | FW 4.0 |
| MTP1200 Unified Comfort PRO | 6AV2 128‑3MB27‑0AX0 | — |
A Cartesian portal 4D (kinematics CartesianPortal3DA, axis TOs A1_CartesianPortal3DA…A4_CartesianPortal3DA) runs a pick‑and‑place. Scenario 1 places at a static position; scenario 2 places according to the current product counter, using LSKI_CmdMovePickAndPlace with a point and a variable reference.
| Component | Article no. / setting | Note |
|---|---|---|
| SIMATIC S7‑1517T‑3 PN | 6ES7 517‑3TQ10‑0AB0 | FW 4.0, four channels |
| MTP2200 Unified Comfort PRO | 6AV2 128‑3XB27‑1BX0 | — |
| PLCSIM Advanced V7.0 | instance LSKI_Demo | 192.168.0.1 / 255.255.255.0, TCP/IP single adapter |
| Drives | SINAMICS S210 on PROFINET | GSDML files ship in the project; plus a Siemens MC encoder |
| NX MCD (optional) | digital twin | see version note below |
| OMAC mode | SKI operation mode |
|---|---|
| Production | Automatic |
| Manual | Manual (only while in Execute) |
| Maintenance | Test run (only while in Execute) |
Twelve things that catch new integrators, each as one line of symptom and one line of fix.