Operacije Premikanja
Prenos & Upravljanje Podatkov
Prenos podatkov je krvni obtok vašega PLC programa. Učinkovito upravljajte kopije spremenljivk, serializacijo struktur in manipulacije pomnilniških blokov.
Kaj so operacije premikanja v TIA Portalu?
Operacije premikanja omogočajo kopiranje podatkov z ene pomnilniške lokacije na drugo. Segajo od preprostega kopiranja spremenljivke (MOVE) do kompleksne manipulacije celotnih struktur za komunikacijo (Serialize/Deserialize) ali upravljanja sosednjih podatkovnih območij (MOVE_BLK).
TIA Portal ponuja sodobna navodila za simbolni dostop, dinamično upravljanje preko tipov Variant in optimizirane funkcije za Array DB, hkrati pa ohranja navodila Legacy za združljivost s starejšimi sistemi S7-300.
Osnovni Prenos
Temeljna navodila za kopiranje in formatiranje
MOVE — Kopiraj vrednost
MOVEKaj počne
Kopira vsebino vhoda IN na izhod OUT. Če se podatkovni tip razlikuje, lahko pride do implicitne pretvorbe, če je ta varna.
Kdaj uporabiti
Inicializacija spremenljivk, kopiranje nastavljenih vrednosti HMI ali prenos rezultatov izračunov.
Pro Nasveti
Dodate lahko več izhodov (OUT1, OUT2...), da kopirate vrednost na več ciljev hkrati.
V SCL preprosto uporabite dodelitev: destination := source;
Deluje s skoraj vsemi podatkovnimi tipi (Bool, Int, Real, Struct, String).
Serialize / Deserialize
SERKaj počneta
Serialize pretvori kompleksno strukturo v zaporedni tok bajtov (Array of Byte). Deserialize naredi nasprotno.
Kdaj uporabiti
Priprava podatkov za pošiljanje preko komunikacijskih protokolov (TCP/IP, UDP) ali kompaktno shranjevanje.
Pro Nasveti
Uporabite parameter POS za sledenje indeksu polnjenja v ciljnem medpomnilniku.
Bistveno za izmenjavo s sistemi tretjih oseb, ki ne razumejo Siemensovih struktur UDT.
Zagotovite, da je velikost medpomnilnika zadostna, da preprečite napake pri izvajanju.
SWAP — Zamenjaj
SWAPKaj počne
Obrne vrstni red bajtov (Endianness) v operandu IN.
Kdaj uporabiti
Komunikacija z napravami, ki uporabljajo format 'Little-Endian', medtem ko PLC uporablja 'Big-Endian'.
Pro Nasveti
Običajno se uporablja na tipih Word ali DWord.
Uporabno za obdelavo podatkov iz določenih senzorjev Modbus.
Lahko se uporabi za reorganizacijo ASCII kod, prejetih v obratnem vrstnem redu.
Premikanje Blokov
Manipulacija masovnih in sosednjih pomnilniških območij
MOVE_BLK / UMOVE_BLK
MOVE_BLKKaj počne
Kopira določeno število elementov iz izvornega polja v ciljno polje. UMOVE_BLK je neprekinjena (atomska) različica.
Kdaj uporabiti
Upravljanje medpomnilnikov, arhiviranje zgodovinskih podatkov ali podvajanje proizvodnih receptur.
Pro Nasveti
Začetni indeks (COUNT) določa število elementov za kopiranje.
UMOVE_BLK zagotavlja, da podatkov med kopiranjem ne spremeni alarmni OB.
Izvorni in ciljni podatkovni tipi morajo biti identični.
MOVE_BLK_VARIANT
Kaj počne
Napredna različica MOVE_BLK, ki podpira podatkovne tipe Variant za prilagodljivo naslavljanje.
Kdaj uporabiti
Razvoj večkrat uporabnih knjižničnih blokov, ki delujejo na poljih različnih velikosti ali tipov.
Pro Nasveti
Omogoča kopiranje med polji, katerih tipi se določijo ob izvajanju.
Uporabite CountOfElements za avtomatizacijo parametra COUNT.
Zelo močno v S7-1500 za generično programiranje.
Polnjenje Območja
Hitra inicializacija pomnilniških območij
FILL_BLK / UFILL_BLK
FILLKaj počne
Napolni pomnilniško območje (polje) z eno samo vrednostjo, določeno na vhodu IN.
Kdaj uporabiti
Ponastavitev polja meritev na nič ali inicializacija medpomnilnika s privzeto vrednostjo.
Pro Nasveti
UFILL_BLK je boljši za kritična območja, ki se delijo s prekinitvami.
Veliko bolj zmogljivo kot zanka FOR za inicializacijo velikega polja.
COUNT določa število elementov, ki se napolnijo od določenega kazalca naprej.
Scatter / Gather
Razstavljanje in sestavljanje bitov
SCATTER / GATHER
Kaj počneta
SCATTER razstavi besedo (Word, DWord...) na posamezne bite v strukturo ali polje. GATHER naredi nasprotno.
Kdaj uporabiti
Ekstrakcija statusnih bitov iz diagnostične besede ali sestavljanje ukazne besede iz kontrolnih bitov.
Pro Nasveti
Učinkovito nadomesti množico bitnih dostopov (npr. %X0).
Na voljo na S7-1200 in S7-1500.
Zagotavlja čistejšo kodo, ki jo je lažje vzdrževati.
Dostop do Array DB
Branje in pisanje v podatkovne bloke tipa polje
ReadFromArrayDB / WriteToArrayDB
Kaj počneta
Omogočata branje ali pisanje specifičnega elementa v podatkovnem bloku, konfiguriranem kot 'Array DB'.
Kdaj uporabiti
Upravljanje velikih seznamov podatkov, kjer mora biti indeksiranje dinamično in hitro.
Pro Nasveti
Različice 'L' (npr. ReadFromArrayDBL) dostopajo do pomnilnika za nalaganje (Load Memory) za manj pogoste podatke.
Uporaba Array DB je pogosto bolj zmogljiva od klasičnega indeksiranega dostopa.
Preverite, ali je indeks znotraj meja, da preprečite napako pri dostopu.
Manipulacija Variant
Orodja za dinamično programiranje
VariantGet / VariantPut
Kaj počneta
VariantGet izvleče vrednost spremenljivke Variant v tipizirano spremenljivko. VariantPut zapiše tipizirano vrednost v spremenljivko Variant.
Kdaj uporabiti
Obdelava podatkov, katerih natančen tip je znan šele ob klicu bloka.
Pro Nasveti
Uporabite EQ_Type za preverjanje tipa pred ekstrakcijo vrednosti.
Temeljno za ustvarjanje generičnih komunikacijskih funkcij.
CountOfElements vrne število elementov, če Variant kaže na polje (Array).
Meje Polj
Dinamično določanje mej
LOWER_BOUND / UPPER_BOUND
Kaj počne
Vrne spodnjo (LOWER) ali zgornjo (UPPER) mejo polja, podanega kot parameter Variant.
Kdaj uporabiti
Zanka čez polje neznane velikosti (npr. Array[*] of MyUDT).
Pro Nasveti
Nujno za pisanje robustnih zank FOR: FOR i := LOWER_BOUND(...) TO UPPER_BOUND(...) DO
Deluje tako na eno- kot večdimenzionalnih poljih.
Parameter DIM določa želeno dimenzijo (privzeto 1).
Legacy Navodila
Združljivost s starejšimi sistemi S7-300/400
Navodila, kot so BLKMOV, FILL in FieldRead/FieldWrite, so ohranjena zaradi združljivosti. Za nove projekte S7-1200/1500 raje uporabite MOVE_BLK, FILL_BLK in neposredne simbolne dostope.
Primerjava metod kopiranja
Izbira pravega navodila za prenos
| Morate... | Priporočeno navodilo | Primer |
|---|---|---|
| Kopirati enostavno spremenljivko | MOVE | Nastavljena -> Trenutna |
| Kopirati pomnilniško območje | MOVE_BLK | FIFO medpomnilnik |
| Inicializirati polje | FILL_BLK | Ponastavitev napak |
| Pripraviti sporočilo TCP | Serialize | Struktura -> Tok bajtov |
| Razbiti besedo na bite | SCATTER | Diagnostika beseda -> struktura |
| Dinamični dostop | VARIANT | Univerzalni knjižnični blok |
Pogosta Vprašanja
Kakšna je razlika med MOVE in MOVE_BLK?
MOVE je namenjen kopiranju ene same vrednosti ali celotne strukture naenkrat. MOVE_BLK je optimiziran za kopiranje dela polja (določenega števila zaporednih elementov).
Zakaj uporabiti UMOVE_BLK namesto MOVE_BLK?
'U' pomeni Uninterruptible (neprekinjeno). To navodilo zagotavlja, da operacije kopiranja ne bo prekinil alarmni cikel (prednostni OB), kar zagotavlja popolno konsistenco kopiranih podatkov.
Kdaj uporabiti Serialize in Deserialize?
Ta navodila so ključna, ko morate poslati strukturirane podatke preko 'surovih' protokolov, kot sta TSEND/TRCV, ali napravam tretjih oseb. Upravljajo poravnavo bajtov na standardiziran način.
Ali MOVE_BLK deluje z absolutnimi naslovi?
Da, vendar TIA Portal spodbuja uporabo simbolnih dostopov. Za kompleksno absolutno naslavljanje se še vedno uporablja BLKMOV (Legacy), čeprav je MOVE_BLK_VARIANT priporočena sodobna rešitev.