PARTNERZY

www.sick.pl
tel: +48 22 539 41 00
oferty@sick.pl
PRODUKTY I SKLEP POZNAJ SICK

Od automatyzacji produkcji i logistyki, aż po automatyzację procesów technologicznych — SICK należy do ścisłej czołówki wśród producentów czujników. Jako lider rynku w dziedzinie technologii, firma SICK ze swoimi czujnikami i rozwiązaniami aplikacyjnymi tworzy doskonałe podstawy dla bezpiecznego i efektywnego sterowania procesami, ochrony ludzi przed wypadkami oraz ochrony środowiska naturalnego.

pl.mitsubishielectric.com
tel: +48 12 347 65 00
mpl@mpl.mee.com
NEWSY / BLOG POZNAJ MITSUBISHI ELECTRIC ODDZIAŁ POLSKA

Korporacja Mitsubishi Electric, posiadająca 90 lat doświadczenia w zakresie dostarczania niezawodnych, wysokiej jakości innowacyjnych produktów w dziedzinie automatyki przemysłowej, produkcji, marketingu i sprzedaży urządzeń elektrycznych i elektronicznych. Programowalne sterowniki PLC, rozwiązania napędowe, roboty przemysłowe, panele dotykowe, wycinarki laserowe i sterownie CNC firmy Mitsubishi Electric zaliczają się do produktów najwydajniejszych na rynku i gwarantują sukcesy firmy już od ponad 30 lat.

www.findernet.com
tel: +48 61 865 94 07
finder.pl@findernet.com
KATALOG PRODUKTÓW POZNAJ FINDER

Od 1954 Finder pracował wyłącznie w zakresie przekaźników i timerów. Nasz wysoki stopień specjalizacji zaowocował ponad 10.000 różnych produktów w jednej z najszerszych dostępnych ofert. Firma szeroko się rozwija i inwestuje w przyszłość uzupełniając gamę swojego asortymentu. Prócz przekaźników oferuje rozwiązania przemysłu elektrycznego do zastosowań domowych jak i komercyjnych poprzez przekaźniki, urządzenia przeciwprzepięciowe, termostaty panelowe, zasilacze i liczniki energii. Gama asortymentu obejmuje ponad 12 tysięcy produktów.

www.wago.pl
tel: +48 71 360 29 70
wago.elwag@wago.com
BLOG WAGO POZNAJ WAGO

Rozwiązania dostarczane przez WAGO. już od wielu lat wspierają naszych klientów w dążeniu do sukcesu. Poczynając od prostych instalacji elektrycznych, a kończąc na skomplikowanej infrastrukturze zarządzającej procesami przemysłowymi czy automatyką budynkową. Sprawdźcie jak rozwiązania WAGO, mogą wesprzeć Was w drodze do Waszego sukcesu.

panasonic-electric-works.com
tel: +48 42 230 96 33
info.pewpl@eu.panasonic.com
KATALOG ONLINE POZNAJ PANASONIC

Panasonic Electric Works Europe zajmuje się produkcją oraz dystrybucją komponentów automatyki, takich jak: czujniki przemysłowe, sterowniki programowalne, napędy przemysłowe i systemy znakowania laserowego. W ścisłej kooperacji z europejskimi klientami, oferują rozwiązania dla różnych obszarów biznesu, takich jak przemysł motoryzacyjny, pojazdy elektryczne, automatyzacja procesów technologicznych oraz budynków, odnawialnych źródeł energii czy zarządzania środowiskowego.

www.eaton.com
tel: +48 58 554 79 00
oferty@staport.pl
Poznaj easyE4 POZNAJ EATON

Eaton Electric jest producentem najwyższej jakości automatyki przemysłowej, aparatury sygnalizacyjnej, łączeniowej, zabezpieczającej i instalacyjnej oraz systemów rozdziału energii niskiego napięcia. Międzynarodowe nagrody oraz certyfikaty są dowodem, iż produkty Eaton Electric odpowiadają najnowszym standardom bezpieczeństwa i wymaganiom jakości. Wszystkie nasze wyroby gwarantują długoletnie działanie.

pepperl-fuchs.com
tel: +48 22 256 97 70
info@pl.pepperl-fuchs.com
PRODUKTY POZNAJ PEPPERL+FUCHS

Automatyzacja to nasz świat. Perfekcyjne rozwiązania - nasz cel.

Obecnie firma Pepperl+Fuchs jest znana klientom na całym świecie jako przedsiębiorstwo pionierskie i innowacyjne w dziedzinach takich, jak ochrona przeciwwybuchowa instalacji elektrycznych czy technologie czujników. Zawsze koncentrujemy się na wymaganiach klientów. Pasja, z jaką poświęcamy się automatyce, oraz przełomowe technologie, jakimi dysponujemy, pozwalają nam owocnie współpracować z klientami — tak dziś, jak i w przyszłości.

MENU PROFIL

Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka

Adresowanie pośrednie w sterownikach S7 – tips and tricks

1523 wyświetleń, autor: mateczek.

Adresowanie pośrednie w ogólności polega na tym, że nie podaje się adresu na sztywno a ten adres jest wyliczany i przechowany w jakieś zmiennej. Zmienną, która przechowuje adres nazywamy wskaźnikiem. Wyobraźmy sobie, iż mamy kilkanaście struktur danych w bloku DB i chcemy się dostać do przepisu X pola Y. To jest jedna z tych sytuacji, gdzie samo narzuca się by skorzystać z adresowania pośredniego.  W tym artykule chciałbym przedstawić sposoby realizacji adresowania pośredniego w sterownikach Siemens.

A gdzie w ogóle mamy do czynienia z adresowaniem pośrednim? Są to:

  • pętle (indeksowanie elementów),
  • rzutowanie typów,
  • wskaźniki i arytmetyka na nich.

Artykuł będzie w formie kursu więc więc zaczynamy.

Przykład na rozgrzewkę

W tym przykładzie pokarzę jak uzyskać w metodzie adresowania pośredniego dostęp do n-tego bitu w przestrzeni wejść. Posłużmy się dwulinijkowym programem napisanym w STL:

A     I [MD 0]   //to, o który bit chodzi jest zapisane właśnie w MD0 
=     Q 0.0

No i to już cały program (długością nie poraża🙂). Choć program krótki, to myślę że wart pokazania i wart tego by zaprezentować efekt jego działania. 

  1. Jeśli do MD0 jest wpisane 0 to następuje przepisanie z I0.0 do Q0.0.
  2. A jeśli do MD0 jest wpisana 5 to na Q0.0 jest przepisywany 5 bit (czyli „I0.5”).

Ten przykład miał na celu pokazanie, że w adresowaniu pośrednim po prostu można podawać nr bitu do którego chcemy się odwołać (tą właściwość wykorzystam dalej w tym mini kursie).

Reklama


Podróż po Bloku Danych – wstęp

Przejdźmy do kolejnego przykładu zastosowania adresowania pośredniego. Niech przykładowy blok danych wygląda jak na rysunku.

Mamy więc takie zestawy parametrów dla poszczególnych przepisów. Napiszmy program, który przy pomocy numeru przepisu wyciągnie nam odpowiednie dane i zapamięta jako parametry aktualne.

L     "Prg_nr"         //będzie przechowywało żądany numer przepisu 
SLD   5                //nr programu mnożenie przez 32. Bo przepis ma właśnie 32 bity   
T     #adrZmienna1     //wskaźnik na "zmienna1" z przepisu określonego w zmiennej "Prg_nr" 
L     16               //tyle bitów ma słowo   
+D   
T     #adrZmienna2    //wskaźnik na  "zmienna2" z przepisu określonego w zmiennej "Prg_nr"

Ten network służył do policzenia ustawienia adresów na aktualną recepturę. Wyjaśniam, że rotacja bitów o jeden w lewo „SLD 1” to inaczej mnożenie przez 2. A ponieważ przepis ma 2 słowa, a słowo ma 2 bajty, a bajt ma 8 bitów to w sumie wychodzi 2*2*8=32 i odpowiada przesunięciu o pięć pól w lewo – „SLD 5”. Przypominam, że adresowanie pośrednie w gruncie rzeczy opiera się na wskazaniu numeru bitu.

W kolejnym networku, korzystając z wyliczonych adresów, po prostu sięgnijmy po nasze parametry aktualne.

OPN   DB     1                        //otwarcie bloku db1 
L     DBW [#adrZmienna1]              //dorwanie się do zmiennej 1 za pomocą adresowania Pośredniego 
T     MW     0                        //parametr aktualny zapamiętanie 
L     DBW [#adrZmienna2]              //dorwanie się do zmiennej 2 za pomocą adresowania Pośredniego 
T     MW     2                       //parametr aktualny zapamiętanie

Wynik działania naszego programu przedstawiam na rysunku poniżej.

I jak widać na rysunku zestaw parametrów „2” ląduje w zmiennych dla parametrów aktualnych.

Podróż po Bloku Danych – Rejestr AR1

Skoro wyliczanie adresów „na krótko” mamy już opanowane, rozwiążmy ten sam problem co wyżej w troszkę inny sposób.

L     "Prg_nr" SLD   5                        //nr programu *8*4=32 bity na przepis 
LAR1                           //adres Struktury ładujemy do rejestru adresowego 
OPN   DB     1                 //otwarcie bloku danych 
L     DBW [AR1,P#0.0]         //adresowanie pośrednie typu Baza+Offset 
T     MW     0                //parametr aktualny 
L     DBW [AR1,P#2.0]         //adresowanie pośrednie typu Baza+Offset 
T     MW     2                //parametr aktualny

Przy pomocy rejestru adresowego „AR1” możemy dorwać się do szukanej zmiennej korzystając z dwóch parametrów: adresu początku struktury, oraz przesunięcia w tej strukturze (offsetu).

Oczywiście ten program będzie działał tak samo jak program z rozdziału wyżej. Więc z tego powodu  zdjęć nie będę dublował. Zapis wykorzystujący rejestr „AR1” jest chyba trochę czytelniejszy, bo jawnie liczymy tylko początek przepisu. A wzór na policzenie początku struktury poniżej.

adresStruktury = nr_przepisu * rozmiar przepisu (w bitach).

Dekodowanie sekwencji – wskaźniki w FB

W tym rozdziale chciałbym przedstawić taką metodę pisania sekwencji, którą ja nazywam licznikową. Jest sobie pewna zmienna, która liczy kolejne kroki programu. Chciałbym przedstawić jak wykorzystać adresowanie pośrednie do zdekodowania licznika sekwencji na tablice kroków programu, lub strukturę z opisem kroków programu.

Instrukcja DECO(FC97) właściwie sama dekoduje „nrLicznika” na numer bitu w podwójnym słowie. Ale jest to niezbyt wygodne w użyciu. Celem programu będzie rzucenie zdekodowanego „nrLicznika” na tablicę (opcjonalnie strukturę). To, na co chciałbym zwrócić uwagę to network drugi. A co tam się dzieję wyjaśniam w punktach poniżej:

  1. Załaduj do akumulatora wskaźnik na tablicę „kroki” (to może być również struktura).
  2. Ten wskaźnik na tablicę (strukturę) „kroki” ląduje w rejestrze adresowym „AR1”.
  3. Załaduj zdekodowany, za pomocą „fc97”, licznik programu do akumulatora.
  4. Odwrócenie bajtów.
  5. Transfer akumulatora na tablicę „kroki”.
    • Transferuj do bloku danych, który jest instancją (DID[] – odwołanie do instancji jako DWord) pod adres, który jest w rejestrze adresowym „AR1” (przypominam, że siedzi tam wskaźnik na tablice „kroki”).
  6.  W ramach ciekawostki i do przeanalizowania.
    • DIX[ar1,p#0.1] Odwołanie się do instancji (jako BIT) gdzie bazę wskazuje rejestr „AR1” (tablica „kroki”) ale dodatkowo plus jeden bit offsetu (czyli po prostu zmienna „kroki[1]” inaczej).

W networku nr. 3 to już tylko prezentacja w LADzie jak „nrLicznika” odwzorowany jest w tablicy „kroki”. A jeśli piszemy program w języku LAD to korzystanie z takiej tablicy czy struktury jest o wiele bardziej przejrzyste.

Uwaga!!!

W dotychczasowych rozdziałach wystąpiły takie odwołania jak DBW[] i DID[]

  • DBW[] stosujemy gdy chcemy się dorwać do otwartego bloku danych (instrukcja OPN ). Zaś DIW[] gdy chcemy się dorwać do bloku danych, który jest instancją FB.  Analogicznie Będzie DIX[] vs DBX[] itp.

Reklama


Rzutowanie w SCL

SCL jest językiem podobnym składnią do mocno ograniczonego Turbo-Pascala. Umożliwia przy tym w prostszy sposób zrobienie takiego rzucenia słowa na strukturę. W języku tym można  zrobić coś podobnego jak w rozdziale wyżej za pomocą instrukcji „AT” (dodam że, „AT” dostępna w S-1500 nawet w ladzie, ale trzeba doczytać od której wersji TIA i jaki minimalny Firmware sterownika).

Dla przykładu napiszmy program, który wyciągnie nam aktualną minutę i sekundę z czasu pobranego ze sterownika PLC.

Dla zrozumienia programu kluczowe są dwie deklaracje

czas_dt :DT;

Tutaj deklarujemy zmienną „czas_td” jako typ danych „DataAndTime” właśnie tego typu zmiennej wymaga funkcja systemowa „sfc1”. Funkcja „sfc1” pobiera datę i czas z zegara RTC sterownika PLC. Ale mnie w tym przykładzie nie interesuje cała ta zmienna, lecz tylko ta malutka jej część jaką jest aktualna minuta. Należy więc zdekodować czas rzucając zmienną „czas_dt” na przygotowaną wcześniej strukturę

czas AT czas_dt: STRUCT

END_STRUCT;

Tak więc nowa zmienna „czas” będzie strukturą do interpretacji zmiennej „czas_dt”. Zmienne te zajmują dokładnie to samo miejsce. Pisząc do jednej, modyfikujemy drugą. Cały trik polega na tym, że jeden i ten sam adres jest interpretujemy różnie w zależności od sytuacji.

Na dowód tego co pisze, wrzucam wygenerowany blok danych db20. Jak „nie widać” zmiennej „czas” brak w bloku danych.

Struktura „czas” to nie nowa zmienna, ale sposób na interpretację. Podobnie działają unie w C++. W unii kilka typów zmiennych dziedziczy dokładnie tą samą przestrzeń i umożliwia nam różną interpretacje tego samego obszaru pamięci.

Podsumowanie

W tym mini-kursie przedstawiłem zagadnienia związane z adresowaniem pośrednim. To nie są ścisłe podstawy, więc materiał raczej dla osób, które pierwsze starcie z Step7 mają już za sobą. Mam nadzieję, że osobom początkującym przybliży możliwości jakie daje tego typu dostęp do zmiennych. A może komuś mój artykuł posłuży jako ściągawka odnośnie składni. Ja sam tak mam, że jeśli czegoś używam rzadziej to lukam na ściągawki aby sobie składnie jakiegoś wywołania przypomnieć.

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Wrzesień 2019

Nagrodę Stripax + zestaw gadżetów dostarcza ambasador konkursu, firma Weidmüller

Reklama

5 września 2019 / Kategoria: , , ,

NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

>KLIKNIJ<

Relacja z targów Warsaw Industry Week 2019 okiem iAutomatyka.pl

Relacja z targów Warsaw Industry Week 2019 okiem iAutomatyka.pl

>KLIKNIJ<

Finał Ligi Mistrzów Automatyki WAGO – zobacz najlepsze zgłoszenia

Finał Ligi Mistrzów Automatyki WAGO – zobacz najlepsze zgłoszenia

>KLIKNIJ<

Zdalny dostęp do PLC z IXON Cloud

Zdalny dostęp do PLC z IXON Cloud

>KLIKNIJ<

Co warto zobaczyć na targach SPS IPC Drives? Pierwsze w pełni zintegrowane rozwiązanie ABB i B&R

Co warto zobaczyć na targach SPS IPC Drives? Pierwsze w pełni zintegrowane rozwiązanie ABB i B&R

>KLIKNIJ<

Autoidentyfikacja na wszystkich poziomach. Kody 1D, 2D i RFID od SICK

Autoidentyfikacja na wszystkich poziomach. Kody 1D, 2D i RFID od SICK

>KLIKNIJ<

Bezpłatne szkolenie ‚Przemysł 4.0 dla menadżerów przedsiębiorstw’

Bezpłatne szkolenie ‚Przemysł 4.0 dla menadżerów przedsiębiorstw’

>KLIKNIJ<

Jak dobrać komputer przemysłowy pod system SCADA?

Jak dobrać komputer przemysłowy pod system SCADA?

>KLIKNIJ<

Jak zapewnić bezpieczeństwo Twojej maszynie? Odc. 1. Sterownik bezpieczeństwa – co to jest?

Jak zapewnić bezpieczeństwo Twojej maszynie? Odc. 1. Sterownik bezpieczeństwa – co to jest?

>KLIKNIJ<

Ruch pod kontrolą – poznaj zaawansowane funkcje Trio Motion, Estun, Sesame

Ruch pod kontrolą – poznaj zaawansowane funkcje Trio Motion, Estun, Sesame

>KLIKNIJ<

7 praktycznych zastosowań IIoT w automatyce przemysłowej

7 praktycznych zastosowań IIoT w automatyce przemysłowej

>KLIKNIJ<

Zgrupowanie Kadry Polski w Lutowaniu na targach Warsaw Industry Week

Zgrupowanie Kadry Polski w Lutowaniu na targach Warsaw Industry Week

>KLIKNIJ<

Darmowe szkolenia z projektowania systemów HMI/SCADA od Schneider Electric

Darmowe szkolenia z projektowania systemów HMI/SCADA od Schneider Electric

>KLIKNIJ<

Webinaria ze Schneider Electric – Serwonapędy, PLC, HMI, UR.

Webinaria ze Schneider Electric – Serwonapędy, PLC, HMI, UR.

>KLIKNIJ<

Poznaj CPL410 – część 3: Konfiguracja OPC UA pomiędzy PAC oraz IPC cz. I

Poznaj CPL410 – część 3: Konfiguracja OPC UA pomiędzy PAC oraz IPC cz. I

>KLIKNIJ<

KONKURS IAUTOMATYKA LISTOPAD 2019

KONKURS IAUTOMATYKA LISTOPAD 2019

>KLIKNIJ<

Poznaj możliwości i korzyści płynące z platformy IIoT

Poznaj możliwości i korzyści płynące z platformy IIoT

>KLIKNIJ<

Mapowanie adresów fizycznych IO na zmienne globalne na przykładzie środowiska Codesys

Mapowanie adresów fizycznych IO na zmienne globalne na przykładzie środowiska Codesys

>KLIKNIJ<

Czy jesteś zdecydowany na robotyzację?

Czy jesteś zdecydowany na robotyzację?

>KLIKNIJ<

Praktyczne zastosowania Przemysłu 4.0 – wywiad z Mitsubishi Electric

Praktyczne zastosowania Przemysłu 4.0 – wywiad z Mitsubishi Electric

>KLIKNIJ<

Automatyczny Podcast #17: PROFINET

Automatyczny Podcast #17: PROFINET





MOŻESZ SIĘ TYM ZAINTERESOWAĆ

  • 799 PLN
    Szkolenie jest wprowadzeniem do systemu sterowania PSS4000 i środowiska programowania PAS4000. W jego trakcie omówiona zostanie zarówno struktura sprzętowa, jak i programowanie, a także diagnostyka kompletnego systemu sterowania. Poruszane ...
    Czas trwania: 8h
    Link: Terminy
  • W dobie ciągłego dążenia do poprawy jakości oraz zwiększenia efektywności, automatyzacja procesów produkcji staje się często jedyną możliwością uzyskania przewagi nad konkurencją. TARRA ROBOTICS to lata naszych doświadczeń w projektowaniu i...
  • Zapraszamy do składania zapytań ofertowych o wszystkie produkty EATON w tym sterowniki easyE4 przez portal allektro.pl (Kliknij tutaj) lub przez kontakt e-mail oferty@staport.p...
  • Szybki i bezpieczny dostęp do maszyn i fabryk Usługa u-link gwarantuje szybki i bezpieczny dostęp do maszyn i fabryk, co ułatwia zdalne utrzymanie ruchu, jednocześnie pozwalając na wydajne zarządzanie zakładami produkcyjnymi i stacjami klie...
  • Seria EX-Z Czujniki z serii EX-Z to jedne z najmniejszych urządzeń tego typu na świecie. Najcieńszy model posiada grubość jedynie 3 mm co zostało osiągnięte przez zastosowanie nowych półprzewodników i dzięki temu wyeliminowanie przewodów. B...
  • Urządzenia firmy FATEK istnieją na rynku polskim od 2004 roku i stały się alternatywą dla już istniejących rozwiązań i urządzeń. Niezawodność, korzystna cena i możliwości sterowników PLC sprawiły, że zyskały one ogromne zainteresowanie prog...



Wszystko stanie się prostsze po zalogowaniu :)

Przypomnij hasło

Nie masz konta? Zarejestruj się

Forgot your password?

Enter your account data and we will send you a link to reset your password.

Your password reset link appears to be invalid or expired.

Close
z

Przetwarzamy pliki... jeszcze chwilka…