Aktuální vydání

celé číslo

12

2020

Systémy DCS pro kontinuální a dávkové výrobní procesy

Provozní analytická technika

celé číslo

TwinCAT 3 – optimalizace výkonu IPC pomocí práce s jádry procesoru

Moderní pojetí průmyslového softwaru s sebou nese nové požadavky na integraci různých aplikací do jednoho celku. Praxe stále častěji ukazuje, že do popředí zájmu se dostávají tzv. měřicí aplikace (condition monitoring, power monitoring), aplikace pro zpracování obrazu z kamer, aplikace pro práci s databázemi a přenosy dat obecně, aplikace pro řízení polohy a pohybu (motion application) s přesahem do systémů CNC a řízení víceosých mechanismů (robotů) atd. Jde o části aplikací, které nejsou hlavním předmětem řídicí aplikace a mohou od ní být odděleny.

 

Prostředí TwinCAT 3 umožňuje programovat úlohy PLC v reálném čase, bezpečnostní aplikace, aplikace řízení pohybu měřicích aplikací, ale dokáže též integrovat aplikace z prostředí jazyků C/C++ a dovoluje připojení k modelu vytvořenému v prostředí Matlab-Simulink. Nastavení Real-Time umožňuje distribuci jednotlivých úloh mezi jádra procesoru. Díky možnosti izolovat jádro lze zcela oddělit aplikace TwinCAT 3 s požadavkem na práci v reálném čase od aplikací pro operační systém Windows, které v reálném čase nepracují.

 

K přínosům distribuce úloh mezi jednotlivá jádra CPU patří:

  • náhrada několika samostatných fyzických PLC jedním IPC s několika nezávislými aplikacemi logického řízení v reálném čase (jednotlivé aplikace lze přiřadit různým jádrům procesoru),
  • optimalizace vytížení procesoru v komplexních aplikacích (měření, správa dat atd.) pomocí rozložení dílčích úloh mezi jednotlivá jádra CPU (viz dále uvedený příklad),
  • možnost vytvořit úlohu logického řízení v reálném čase s krátkou dobou cyklu (v rozmezí 250 až 50 µs) – nejčastěji využitelná pro zpracování rychlých I/O signálů sběrnice EtherCAT.

 

Obecné informace a základní principy

Vývojové prostředí TwinCAT (The Windows Control Automation Technology) je určeno pro průmyslové počítače. Beckhoff IPC jsou osazována nejnovějšími procesory. Aktuálně je nárůst výpočetního výkonu procesorů založen na zvyšování počtu jader, přičemž se jejich taktovací frekvence výrazně nemění. Jako příklad může posloužit nejvýkonnější procesor Intel Xeon, který může mít až osmnáct jader při srovnatelné taktovací frekvenci s procesory Intel i7, popř. i5. Procesor Xeon s osmnácti jádry není určen pro běžné úlohy, ale distribuci úloh do jednotlivých jader lze použít na všech typech čtyř- i dvoujádrových procesorů, jimiž jsou vybavena IPC, popř. embedded PC od firmy Beckhoff (CX51xx, CX20xx). Práci s jádry procesoru je třeba chápat jako možnost, nikoliv jako nezbytnost, bez které rozsáhlejší aplikace nemohou běžet. Distribuce úloh je podporovaná pouze v prostředí TwinCAT 3, v nižších verzích nikoliv.

 

Nastavení v prostředí TwinCAT 3 – Real-Time

Základní nastavení popisované distribuce výpočetního výkonu se provádí v okně Solution Explorer, položka System, podmenu Real-Time (obr. 1). Nastavení projektu jsou následující:

  • Base Time (default = 1 ms): Používá se k určení časové základny, která je pro řízení v reálném čase základní. Úlohy jsou zpracovávány v celočíselných násobcích časové základny, přičemž nejmenší činitel je jedna.
  • CPU Limit (default = 80 %): Runtime řídicího systému TwinCAT může být zpracováván souběžně s úlohami operačního systému Windows. Nastavení CPU Limit na 80 % znamená, že 80 % výkonu CPU je přiděleno TwinCAT Runtime a zbylých 20 % je pro Windows. Poměr mezi vytížením jádra úlohami TwinCAT a Windows lze změnit. Tento způsob optimalizace ale nenahrazuje práci s jádry a nelze dosáhnout stejných výsledků.

 

Rozdělení jader procesoru v prostředí TwinCAT 3

Podobně jako lze jádrům procesoru přiřazovat jednotlivé úlohy, je možné i operační systém Windows spojit s určitým jádrem. K nastavení je určeno tlačítko Set on Target, které umožňuje nastavit, kolik jader bude určeno pro operační systém Windows. Minimální hodnota nastavení je 1. Zbylá jádra jsou k dispozici výhradně pro TwinCAT a úlohy operačního systému Windows v nich vůbec nejsou zpracovávány, proto je jejich CPU Limit 100 % (obr. 2) Takovým jádrům se říká core isolated.

 

Změna nastavení Set on Target vyžaduje restart operačního systému. Poté je třeba načíst aktuální rozložení jader procesoru. K tomu se používá tlačítko Read from Target. Výsledek nastavení a způsob přiřazení úloh logického řízení jednotlivým jádrům procesoru jsou znázorněny na obr. 3.

 

Ve vývojovém prostředí TwinCAT 3 lze pracovat s 256 úlohami logického řízení. Obdobné omezení platí i pro správu jader. Zde však jde o čistě teoretické omezení, protože procesory s tolika jádry nejsou k dispozici.

 

Příklad využití práce s jádry procesoru

Jeden z možných přístupů k práci s jádry procesoru je znázorněn na obr. 4. Příklad 1 zobrazuje úlohy, které běží na jednom jádru: úloha logického řízení (PLC), dvě úlohy řízení pohybu (SAF a SVB), úloha v C++ požadující práci v reálném čase a operační systém Windows. V příkladu 2 je zmíněný celek z příkladu 1 rozdělen mezi dvě jádra procesoru následovně: pro jádro 0 úloha logického řízení a operační systém; pro jádro 1 obě úlohy řízení pohybu, úloha v C++ a operační systém. Časová základna je v obou příkladech shodná – Base Time je 200 µs. Parametr CPU Limit je nastaven na 90 %. V příkladu 3 byla naplno využita možnost optimalizace výkonu mezi dvě jádra. Doba cyklu Base Time byla zkrácena na 100 µs, jádro 0 má CPU Limit 80 % a pro jádro 1 byla využita možnost core isolated. Kombinací uvedených nastavení byl optimálně využit výpočetní výkon. TwinCAT je řídicí systém určený pro práci v reálném čase, kde je překročení stanoveného času monitorováno.

 

Více informací je možné najít pod odkazy www.beckhoff.com/TwinCAT3 a www.beckhoff.com/many-core-control.

(Beckhoff)

 

Obr. 1. Nastavení alokace úloh do jednotlivých jader – defaultní hodnoty

Obr. 2. Nastavení počtu jader, které může využívat operační systém

Obr. 3. Způsob přiřazení logických úloh jednotlivým jádrům procesoru

Obr. 4. Několik možných přístupů k alokaci úloh do jednotlivých jader