S7-1200 jak zapisać aktualną wartość wejścia analogowego do DB po odpowiednim sygnale

Witam, potrzebuje porady jak w TIA Portal v13 na sterowniku S7-1200 w języku LAD zrobić następujący fragment kodu:

Wartość na wejściu analogowym jest zmienna (sygnał z wagi na którą ciągle jest nasypywany materiał) i chciałbym aby po zadziałaniu czujnika/przycisku zapisana została aktualna wartość z wagi i umieszczona w jakimś DB aby później ją wykorzystać.

Próbowałem z funkcją MOVE wstawiając przed EN zestyk NO z sygnałem z czujnika lecz po wyłączeniu czujnika za czym idzie wyłączenie funkcji MOVE to OUT1 wracał do wartości 0. Poza tym jak funkcja MOVE była aktywna a input zmieniał swoją wartość to output także.

Mam nadzieje, że wyraziłem się w miarę jasno i ktoś może ma na to jakieś rozwiązanie.
Pozdrawiam :smiley:

Użyj zbocza dla sygnału z czujnika .

Pozdrawiam

1lajk

Dzięki Ryba8383 za szybką odpowiedź jednak problem nie tkwi w stanie czujnika tylko w tym, że wartość dla mnie istotna nie pozostaje zapisana w pamięci.

Kolega Ryba8383 daje dobrą radę.
Informacja czujnik/przycisk nie jest pełna - nie wiemy kiedy czujnik =1, a kiedy wygnał analogowy > 0. Z tego co napisałeś wynika, że przy zmianie stanu czujnika 1->0 stan wejścia analogowego wynosi 0.
Ciężko dobrze doradzić nie znając dokładnie układu ale ja proponowałbym Ci network:
TON (opóźnienie z czasem dobranym doświadczalnie) AND P_TRIG (zbocze narastające) -> Move.
Czyli po czasie potrzebnym na ustabilizowanie wyniku sprawdzasz zbocze, więc jednokrotnie wykonujesz przepisanie do DB.
Jeśli znasz tolerancję wagi - rozsądne wartości które mogą się pojawić na wejściu analogowym to możesz też dołożyć do logiki kontrolę wartości które pojawiają się na wejściu analogowym w momencie pomiaru i gdy wartość jest poza zakresem zwracać błąd na wizualizację.
Tą sytuację z przepisywaniem 0 którą opisałeś mógłbyś fajnie zdiagnozować za pomocą traces w nowszym TIA Portalu.

Być może gdzieś w dalszej części kodu ta zmienna w DB jest nawpisywana ??

Chyba to ja źle wytłumaczyłem więc wklejam screena

Pomińmy zmienną “sygnał startu” chciałbym żeby wartość “test AI w kg” była zapisana w “wartosc do zapisu w DB” podejrzewam, że funkcja MOVE nie spełni tego zadania ponieważ ona tylko przenosi aktualną wartość. Chodzi mi o to abym mógł gdzieś zapisać tą wartość (1.6 kg) w pamięci sterownika aby później do niej wrócić i ją wykorzystać do pewnych obliczeń. Jaka funkcja jest w stanie na moje żądanie w określonym momencie zapisać wartość wejścia analogowego do jakiegoś miejsca w pamięci?

Mam nadzieje, że teraz trochę lepiej to wytłumaczyłem :smiley:

Funkcja Move właśnie do tego służy. W Twojej sytuacji problem tkwi w tym, że użyłeś złego rodzaju zmiennej. Funkcja jest odpowiednia.
Zmienna #“wartosc do zapisu w DB” została utworzona w funkcji - funkcja ma zmienne typu Input, Output, InOut oraz Temp. Twoja zmienna najprawdopodobniej jest typu Temp - to znaczy, że nie pamięta wartości pomiędzy kolejnymi cyklami PLC.
Żeby wartość była zapamiętana pomiędzy kolejnymi cyklami PLC masz kilka opcji:

  • zamiast funkcji FC używać FB i zmiennej utworzonej w pamięci static,
  • używać markerów (tagów utworzonych w “PLC tags”),
  • wpisywać wartość bezpośrednio do DB.