Optymalizacja aplikacji
Każde obliczenie wymaga pewnego czasu obliczeń. Może to prowadzić do problemów, gdy realizowane są bardzo duże projekty lub większe operacje. Całkowity czas cyklu można wyświetlić przez przełączanie monitora systemowego w prawym górnym rogu.
Zauważcie kolejkę nośników danych. Kolejka jest używana tylko wtedy, gdy dane nie mogą być jednocześnie odczytywane i zapisywane. Jest to szczególnie widoczne w dużych projektach lub niewłaściwym sprzęcie. Kolejka nie powinna nigdy przekraczać 1% w normalnym trybie pracy.
Działanie aplikacji
Aby zrozumieć test wydajności, należy najpierw wyjaśnić działanie aplikacji. Oprócz podstaw dotyczących czasu cyklu, istnieją również zaawansowane metody, które zostały wdrożone tylko w przypadku SPS firmy Antcas:
- Jeśli nie wykryto zmian w elemencie, cały element jest parkowany i nie jest dalej obliczany.
- W przypadku zmiany wartości globalnych wykonuje się podwójny cykl. SPS czeka wówczas tylko milisekundę.
- Dla obliczeń wartości krytycznych czasu ustawia się limity czasu.
- Komunikacja wychodząca (wysyłanie lub zapisywanie wartości) odbywa się asynchronicznie i nie po zakończeniu obliczeń.
- Każda zmienna jest trwała i jest zapisywana przed parkowaniem lub najpóźniej po dwóch sekundach.
Analiza projektu
Aby określić, które elementy aplikacji wymagają bardzo dużej mocy obliczeniowej, można użyć testu wydajności.
Porady dotyczące optymalizacji
- Nie używaj wyjścia ET timerów TON, TOF, TP. Zamiast tego można pracować z UPTIME.
- Wejście SET VISUSET i VISUDTSET nie powinno być aktywne jednocześnie na wielu blokach funkcji.
- Większe lub bardziej skomplikowane obliczenia, jeśli to możliwe, należy wykonać w oddzielnym elemencie.
- Obliczaj operacje matematyczne za pomocą CALCULATE.
- Używaj loggerów z jak największym przedziałem czasu. Dziesięć minut dla temperatury jest całkowicie wystarczające. Przedział czasowy można również ustawić dynamicznie.
- Używaj większych przedziałów PT w blokach funkcji CTRL_PID, SHUTTER, DIMMER itp.
- Uwaga przy zmianie dynamicznych danych czasu, aby te nie zmieniały się ciągle. Może to być np. przypadkiem z sekwencjami RGB i bloku funkcji FADE.
- Uproszczaj bardziej skomplikowane zadania. Szczególnie wyszukiwanie w ciągach znaków jest bardzo obliczeniowo intensywne. Zamiast FIND i SUBSTR używaj bloku funkcji EXPLODE lub PREG_SPLIT. Wartości są odpowiednio przechowywane tymczasowo.
- Przetwarzanie żądań HTTP może zużywać dużo pamięci.
- Zmniejszaj otrzymywane telegramy. Na przykład przy regulacji jasności wartości w zależności od systemu szyny informacja zwrotna może być opóźniona.
- Zwiększaj czasy cyklu SPS.