Funkcja SCALE – wejście analogowe

TIA-SCALE

W poprzednim wpisie zostały omówione funkcje NORM_X oraz SCALE_X. Czas na przygotowanie uniwersalnej funkcji dla S7-1200 czyli połączenie wyżej wymienionych funkcji co finalnie da nam  SCALE. Jest ona dostępna domyślnie dostępna w TIA Portal dla sterowników rodziny S7-300 oraz S7-1500.

Funkcja SCALE

Po dodaniu do projektu w TIA Portal dowolnego sterownika z rodziny S7-1500, wówczas funkcja znajduje się w zakładce Basic instruction -> Conversion operation -> Legacy. Po wywołaniu wygląda jak na poniższym rysunku

Funkcja-SCALEOmówmy krótka parametry jakie może przyjmować ta funkcja

- Wejściowe

IN – Wartość analogowa podawana z przetwornika odczyta bezpośrednio z modułu

HI_LIM – Górny zakres fizycznej wielkości mierzonej

LO_LIM – dolny zakres fizycznej wielkości mierzonej

BIPOLAR – Określa czy fizyczna wielkość mierzona przyjmuje tylko wartości dodatnie (wówczas do tego parametry przypisujemy logiczne 0) czy również ujemne (wówczas do tego parametry przypisujemy logiczne 1)

- Wyjściowe

RET_VAL – wartość liczbowa określająca kod błędu

OUT – Liczba typu Real, która już jest wyskalowana

Przygotowanie kodu

Wywołanie

Teraz samodzielnie napiszemy funkcję FC, która będzie realizowała służyła do skalowania wartości analogowej prosto z modułu na mierzoną wartość fizyczną. Poniżaj przedstawiam przygotowaną funkcję, która została wywołana w bloku OB1 sterownika SIMATIC S7-1200

wywolanie-funkcji-scale

Do projektu została dodana nowa funkcja FC o nazwie SCALE której nadano ręcznie numer 50000 (odległa wartość aby nie pokrywała się z numerami funkcje które możemy mieć już w projekcie). Dodatkowo utworzono nowy blok danych o nazwie db_Scale gdzie będą przechowywane wyniki zwracane przez funkcje SCALE.

Do parametru IN została przekazana wartość (nazwa tagu to ai_Channel0)pochodząca z pierwszego kanału przetwornika analogowego wbudowanego w sterownik S7-1200. Podobnie jak w poprzednim wpisie będziemy mierzyć wagę, która może być w granicach 0-500 kg. Z tego powodu do parametru BIPOLAR jest przekazywane logiczne 0.

Przez parametr RET_VAL jest zwracany kod błędu. W tym przypadku jest wartość zero, czyli nie ma błędu. Natomiast parametr OUT zwraca nam wagę mierzonego przedmiotu.

Testy zostały wykonane na symulatorze PLCSIM.

Kod

W pierwszej kolejności należy przygotować sekcję interfejsu czyli stworzyć parametry. Zostały one przedstawione poniżej

sekcja-interfejsu

sekcja-interfejsu

Należy dodać, że mamy dwie zmienne tymczasowe o nazwach:

t_MIN – służy do przechowywania minimalnej wartości zakresu pomiarowego przetwornika analogowo-cyfrowego

t_NormScale – zmienna służąca do przekazania wartości z funkcji NORM_X do funkcji SCALE_X

Utworzone też trzy stałe. Pierwsza i druga (CONST_MAX_ADC i CONST_MIN_ADC) określa graniczne wartości zakresu pomiarowego przetwornika  analogowo-cyfrowego. Ostatnia stała czyli CONST_ERROR_ID0008 określa kod błędu który można odczytać w dokumentacji (gdy wartość na wejściu jest większa lub mniejsza niż graniczne zakresy pomiarowe przetwornika ADC). Kod błędu jest zwracany przez parametr z części Return (nazwa zawsze taka sama jak nazwa funkcji).

Na początku trzeba określić dolną granicę przetwornika. Zostało to zrealizowane w dwóch pierwszych networkach co widzimy poniżej

bipolar

bipolar

W zależności o stanu parametry BIPOLAR jest przypisywana odpowiednia wartość do zmiennej tymczasowej t_MIN.

Kolejny krok to skalowanie, czyli analogicznie jak w poprzednim wpisie.

norm_X-Scale_X

norm_X-Scale_X

Różnica jest w funkcji SCALE_X gdzie do parametrów MINMAX zostały przypisane parametry z sekcji interfejsu tworzonej przez nas funkcji SCALE.

Ostatnia czynność to obsługa błędów. Przedstawiają to poniższe networki

obsługa-błędów

obsługa-błędów

W networku 5 następuje sprawdzenie, czy wartość z przetwornika nie znajduje się poza zakresem przetwornika. Można to zrobić na porównaniach. Jednak prościej wykorzystać funkcje OUT_RANGE. Jeżeli taka sytuacja się powtórzy to wówczas do parametru wyjściowego SCALE jest przypisywana wartość kodu błędu oraz do parametru wyjściowego OUT jest przypisywana wartość 0.0.

W networku 6 funkcja IN_RANGE służy do sprawdzenie, czy z przetwornika znajduje się w zakresie przetwornika ADC. Jeżeli tak, to do do parametru wyjściowego SCALE jest przypisywana wartość 0.

Teraz można potestować sobie tą funkcję. Proszę sprawdzić parametr BIPOLAR.

Link do projektu: www.mistrzplc.pl/materialy/blog/01_ScaleAnalogValue.zip

//—————-

kurs-wideo

Więcej w kursie wideo: Chcę zostać programistą PLC – poziom podstawowy

Podziel się tym wpisem na:
  • Facebook
  • Google Bookmarks
  • Twitter
  • Wykop

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>