Matematyka zmiennoprzecinkowa na Micro PLC: PID, skalowanie analogowe i kiedy naprawdę tego potrzebujesz

Zacznę od liczby: 214-219. To zakres stron w podręczniku V6.2.2, gdzie znajdują się bloki zmiennoprzecinkowe. Można by pomyśleć, że dostawca ukrył je tam, ponieważ nikt ich nie używa. Błąd. Ukryli je tam, ponieważ matematyka całkowita jest wystarczająca dla dziewięćdziesięciu procent zadań — a ostatnie dziesięć procent to miejsce, gdzie znajdują się prawdziwe maszyny.

Mikro-PLC wykonujący SIN, COS, TAN, LN, EXP, SQRT, porównania liczb rzeczywistych i ruchy liczb rzeczywistych. Dziesięć lat temu to zdanie byłoby żartem. Dziś jest dostarczane w module na szynę DIN 35mm, który kosztuje mniej niż porządna sonda oscyloskopowa.

Kiedy matematyka całkowita cię okłamuje

Oto pułapka. Skalowanie analogowego wejścia 0-10V za pomocą matematyki całkowitej działa — aż do momentu podziału. 6V w zakresie 0-1000: dzielenie całkowite pomija resztę, a nagle twoje odczyty poziomu dryfują o jednostkę przy każdym skanowaniu. W ciągu zmiany dryf się kumuluje. W ciągu tygodnia twój zbiornik przelewa się, ponieważ PLC myślał, że poziom jest w porządku.

Zmiennoprzecinkowe to naprawia. Jeden blok skalowania, liczby rzeczywiste od końca do końca, a szum zaokrąglający znika. To nie jest luksus. To jest to, co utrzymuje twoje pompy suche i twoich klientów spokojnych.

Konkretna sprawa: kontrola temperatury PID z rzeczywistą matematyką

Skonfiguruj pętlę PID na PR-18: analogowe wejście odczytuje PT100 przez nadajnik 0-10V, blok PID oblicza z rzeczywistymi zyskami, a wyjście napędza kanał PWM dla grzałki. Silnik zmiennoprzecinkowy utrzymuje stabilność terminu całkowego. Na sprzęcie tylko całkowitym ta sama pętla wymaga ręcznego harmonogramowania zysku i nadal oscyluje przy niskim błędzie.

Obserwowałem inżyniera uruchamiającego, który przez dwa dni gonił oscylację 0,4 stopnia na całkowitym PID. Wymienił CPU na model zmiennoprzecinkowy, dostroił go w godzinę. Różnica w kosztach sprzętu była śmieszna. Różnica w czasie inżynieryjnym już nie.

Bloki, które naprawdę będziesz używać

Bądź szczery: będziesz używać ADD-R, SUB-R, MUL-R, DIV-R i SQRT. Może ROUND i TRUNC przy przekazywaniu wartości do HMI. Funkcje trygonometryczne są tam dla naprawdę dziwnych projektów — obliczenia przepływu, objętość zbiornika z poziomu, kompensacja kąta taśmy. Kiedy ta dziwna prośba się pojawi, nie chcesz tłumaczyć, że twój PLC nie potrafi obliczać cosinusa.

A konwersje ciągów mają większe znaczenie, niż się wydaje. Rzeczywisty-na-ciąg, całkowity-na-ASCII — tak budujesz czytelne komunikaty alarmowe i dzienniki danych bez języka skryptowego HMI.

Ile to kosztuje

Nic dodatkowego, gdy wybierzesz odpowiedni CPU. Bloki zmiennoprzecinkowe są częścią standardowej biblioteki w bieżącej wersji podręcznika, a oprogramowanie jest darmowe. Jedynym prawdziwym kosztem jest zmiana nawyków: przestań myśleć w liczbach całkowitych, zacznij myśleć w jednostkach inżynieryjnych.

Skalowanie zrobione dobrze

Skalowanie to miejsce, gdzie zmiennoprzecinkowe zarabia na swoje utrzymanie, a także tam, gdzie żyje większość błędów skalowania. Klasyczny błąd: skalowanie surowej wartości za pomocą matematyki całkowitej i utrata reszty przy każdym dzieleniu. Klasyczna poprawka: wykonaj obliczenia w liczbach rzeczywistych i przekształć raz, na granicy, gdzie HMI lub SCADA oczekuje liczby całkowitej. Jeden blok skalowania, liczby rzeczywiste od końca do końca, a szum zaokrąglający znika.

Zapisz stałe skalowania tam, gdzie następny inżynier może je znaleźć. Nadajnik 4-20mA odczytujący 0-10 bar: wzór, surowy zakres, zakres inżynieryjny — wszystko to należy umieścić w komentarzu na bloku skalowania. Wartość "wygląda poprawnie" przez miesiące, aż przestanie, a osoba debugująca to będzie potrzebować stałych, a nie pamięci osoby, która je wybrała.

Testuj granice podczas uruchamiania: minimum, maksimum i punkt środkowy. Blok skalowania, który jest poprawny przy 50%, ale błędny przy 0%, przejdzie pobieżne spojrzenie i zawiedzie w rzeczywistym procesie. Trzy punkty testowe, pięć minut, a skalowanie jest gotowe.

Mit tylko całkowitych liczb

Istnieje szkoła myślenia, która mówi, żeMicro PLCpowinno pozostać tylko całkowite, ponieważ tak działają małe kontrolery. To jest obrona z punktu widzenia kosztów i nie do obrony z punktu widzenia inżynieryjnego w momencie, gdy twój proces obejmuje dzielenie, proporcje lub cokolwiek przypominającego jednostki rzeczywiste. Sprzęt zmiennoprzecinkowy nie kosztuje nic dodatkowego na tej platformie; ta zdolność znajduje się w bibliotece bloków, a nie w premium.

Prawdziwy koszt myślenia tylko w liczbach całkowitych ujawnia się w utrzymaniu: obejścia — skalowane liczby całkowite, przesunięte dziesiętne, ręcznie pisana matematyka stałopunktowa — to dokładnie ten kod, którego nikt nie rozumie sześć miesięcy później. Zmiennoprzecinkowe czyta się jak proces: temperatura w stopniach, poziom w metrach, przepływ w litrach na minutę. Czytelny kod to kod, który można utrzymać, a kod, który można utrzymać, to to, co utrzymuje umowę serwisową zyskowną.

Używaj liczb całkowitych tam, gdzie są odpowiednim narzędziem — liczniki, flagi, wartości indeksów. Używaj zmiennoprzecinkowych tam, gdzie żyje proces. Platforma daje ci oba; dyscyplina polega na wyborze per sygnał, a nie per religię.

Liczby rzeczywiste w HMI

Ekrany HMI i SCADA powinny pokazywać jednostki inżynieryjne, a nie surowe liczby całkowite — a skalowanie żyje po stronie PLC. Wykonaj konwersję raz, w jednym bloku skalowania, a wyświetlacze będą odczytywać stopnie, bary i litry na minutę wszędzie. Alternatywa — skalowanie na każdym ekranie, każdej etykiecie, każdym raporcie — to błąd w formule czekający na zdarzenie. Jeden punkt konwersji na sygnał, udokumentowany w komentarzu bloku, a cały system mówi językiem operatora.

To jest zmiana. Sprzęt już to zrobił. Twój styl programowania to ostatni element aktualizacji.