Nowości wersji 5.0
Już wkrótce planujemy ukończenie prac nad nową wersją programu Simultus DIGITAL TWIN 5.0.
- wykrywanie błędów w skryptach LUA podczas edycji,
- automatyczne podświetlenie błędu w skrypcie LUA wykrytego podczas symulacji,
- możliwość zatrzymania symulacji na błąd skryptu LUA,
- wykrywanie błędów podczas edycji.
Błędy będą podkreślane na czerwono, a dymek przy myszce podpowie, gdzie i jaki błąd wystąpił:

Jeżeli będziemy próbowali uruchomić źle napisany skrypt to zostanie zgłoszony błąd:

a linia z błędem zostanie podświetlona na czerwono:

Dodatkowo odpowiedni komunikat zostanie wyświetlony w oknie komend:

Nie wszystkie błędy pojawiają się przed lub w trakcie kompilacji. Niektóre mogą wystąpić w trakcie działania symulacji. Tak się np. stanie, gdy wystąpi błąd dzielenia przez zero. W takim przypadku symulacja wyłączy się a odpowiedni komunikat będzie widoczny w linii komend. Źle wykonany skrypt zostanie podświetlony na czerwono:

Do tej pory błąd był sygnalizowany aktywnym wyjściem ‘error’ na bloku LUA_SCRIPT. Teraz symulacja może zostać automatycznie wyłączona po pojawieniu się błędu, w którymkolwiek skrypcie.
Dodamy limity czasu na wykonywanie się skryptów LUA podczas symulacji (skrypt globalny: 5s, skrypty bloków: 3s) z możliwością zmiany ustawień w okienku 'Ustawienia symulacji'. Pamiętajmy, że nasz skrypt LUA może zawierać np. pętle, które błędnie zrobione mogą się nigdy nie kończyć.
Jeżeli nie chcemy, aby symulacja zatrzymała się po wykryciu błędu w skrypcie to należy odznaczyć poniższe pole dostępne w menu górnym (Ustawienia -> Symulacja). W oknie tym można również określić czasy zatrzymania się symulacji przy przekroczeniu limitu trwania skryptu. To w przypadku, gdy np. wstawimy do skryptu zbyt długa pętlę.

Przy zaznaczeniu tej opcji błąd skryptu w trakcie działania symulacji można wykryć sprawdzając stan wyjścia 'error' bloku LUA_SCRIPT:

(czytaj więcej ...)
- możliwość automatycznego wstawianie kodu skryptu LUA ułatwiającego dostęp do rejestrów i znaczników sterownika (Rn, Mn, VRn, VMn) oraz we/wy bloku LUA_SCRIPT. To ułatwi przypisywanie wejść i wyjść bloku do zmiennych używanych w LUA. Do tej pory wymaganą część kodu trzeba było kopiować z instrukcji.
- nowy pasek narzędziowy w edytorze skryptów LUA (przyciski dla akcji wstawiania kodu i wyszukiwanie tekstu).
UWAGA: od wersji 5.0 obsługa funkcji SIM_Registers_VR = RnTblHelper.new(), SIM_Markers_VM = MnTblHelper.new(), Function_Block_Inputs = FBInTblHelper.new(), Function_Block_Outputs = FBOutTblHelper.new() jest wstawiana automatycznie do skryptu po naciśnięciu odpowiednich przycisków w menu górnym edytora skryptów w miejscu gdzie znajduje się kursor:
(czytaj więcej...)
- Powyższe zmiany ułatwią korygowanie błędów składni w trakcie pisania programu. Przy okazji przypominamy, że AI (np.. Chat GPT, Bing) wspiera język LUA. Warto sprawdzić jak sobie radzi.
- Poprawimy tryb ‘tylko do odczytu’ edytora skryptów LUA podczas symulacji, dając możliwość przewijania, zaznaczania i kopiowania tekstu.
- Obsługa karty pomiarowej NUMATO dołączanej na USB (blok funkcyjny: NUMATO_USBGPIO8).
- Usunęliśmy wyświetlanie okienka z informacją o błędzie z biblioteki matematycznej ‘Math’ (np. błąd dziedziny) podczas symulacji blokującego działanie aplikacji poprzez dopuszczenie wyników operacji matematycznych jako NAN.
- Zmiana położenia i wyglądu przycisku symulacji. Przycisk powiększamy i przestawiamy w wygodniejsze miejsce – lewy górny narożnik okna programu:
- wydzielenie osobnej grupy w przyborniku dla akcji debugowania
więcej o debugowaniu...
- zmiany organizacji zakładek z blokami funkcyjnymi.
Bloków funkcyjnych jest coraz więcej, dlatego postanowiliśmy podzilić je na więcej grup. Poniżej większość z nich:
- Nowy blok AXIS do odczytu globalnej pozycji dowolnego układu z wizualizacji 3D. Po powiązaniu ze sobą układów współrzędnych mogą się one znaleźć w mało intuicyjnym miejscu przestrzeni. Teraz będziemy mogli pobrać współrzędne globalne dowolnego układu. Układ współrzędnych reprezentowany przez ten blok (powiązany z nim we właściwości bloku) może być również programowo dołączony do dowolnego istniejącego układu współrzędnych poprzez podanie ID układu bazowego oraz aktywowanie wejścia 'join'. Uzyskujemy w ten sposób możliwość przenoszenia układu elementów między innymi układami, z którymi mogą się poruszać. Umożliwi to np symulację montażu. Kilka elementów może być przenoszonych np. przez różne roboty w jedno miejsce gniazda montażowego a następnie po złożeniu przyczepionych do oddzielnego układu współrzędnych połączonego np. z przenośnikiem. Wyjścia bloku określają jego globalną pozycję oraz ID układu, do którego jest aktualnie podłączony. Ten blok funkcyjny da nam naprawdę dużo możliwości manipulowania przedmiotami w przestrzeni:
- Tablice punktów 6D (czyli współrzędne X, Y, Z oraz orientacje A, B, C). Funkcje w Skryptach LUA oraz nowe bloki funkcyjne do ich obsługi. Wyświetlanie punktów w widoku 3D.
Lista tablic jest widoczna w drzewku projektu:
Tablice można edytować określając ich rozmiar, kolejność punktów, zmieniając ich współrzędne. Każdy punkt może mieć swoją nazwę.
Lista punktów może być importowana i eksportowana z i do plików CSV (pracujemy nad innymi formatami plików) ale co ważne, plik CSV jest plikiem tekstowym a więc można go wygenerować przy pomocy własnego skryptu LUA. Oznacza to, że możemy samodzielnie napisać generator punktów. Np. rozkładając je w matrycy, po okręgu, itp. W przyszłości planujemy również połączenie tablic z importem G-kodów oraz plików CAD.
Dodatkową funkcjonalność zwiększą funkcje języka skryptowego LUA, które słóżą do operacjach na punktach w tabelach (czytaj więcej...)
Aktywny punkt z tablicy jest oznaczony kolorem zielonym oraz wyróżniony w widoku 3D.
Jego współrzędne możemy pobrać korzystając z bloku funkcyjnego:
Możemy również odczytać współrzędne dowolnego punktu z dowolnej tablicy korzystając z poniższego bloku funkcyjnego:
Planujemy również dorobić komunikację z symulatorem jednego z Cobotów. Może uda się nam dołączyć tą funkcjonalność do wersji 5.0. Zobaczymy jak pójdą testy.