Dodatek A - Dodaktowe fukcje języka skryptowego LUA


Poniżej przedstawiono dodatkowe funkcje języka skryptowego LUA, które zostały dodane do programu Simultus.
Stanowią one uzupłenienie standardowych funkcji języka LUA, których opis znajduje sie tutaj (j.ang.) lub w języku polskim tutaj.
Więcej informacji na temat tego jak tworzyć bloki funkcyjne z wykorzystaniem jezyka LUA w Simultusie znajdziesz tutaj.

Obsługa tablic z punktami i orientacjami (od wersji 5.0):

AddPoint(Table_no, X, Y, Z, A, B, C, Point_name)

Dodaje punkt na koniec tabeli. W przypadku sukcesu zwraca true.

Table_no - numer tabeli od 1 do 10
X, Y, Z - współrzędne punktu w [mm]
A, B, C - orientacje punktu w [stopniach]
Point_name - nazwa punktu

przykład:
AddPoint(1, 100, 120, 330, 45, -90, 0, 'Start_Point') 
Dodaje punkt o nazwie Start_Point o współrzędnych 100, 120, 330 i o orientacji 45, -90, 0 stopni na koniec tabeli nr 1.

 

ErasePoint( Table_no, Point_no )
Usuwa wybrany punkt z tabeli.

Table_no - numer tabeli od 1 do 10
Point_no - pozycja (wiersz tabeli) od 1 do wielkości tabeli

przykład:
ErasePoint(1, 5) 
Usuwa dany punkt z tabeli i zmniejsza wielkość tabeli o 1 wiersz.

 

GetPointTblSize(Table_no)
Zwraca rozmiar tabeli.

Table_no - numer tabeli od 1 do 10

przykład:
size = GetPointTblSize(3) 
Ze zapisuje w tabeli zmiennej 'size' wielkośc tabeli nr 3

 

ResizePointTbl(Table_no, new_size).
Zmienia rozmiar tabeli.

Table_no - numer tabeli od 1 do 10
new_size - nowa wielkość tabeli od 1 do 200

przykład:
ResizePointTbl(1, 25)
Zmienia wielkośc tabeli 1 na 25 punktów z orientacjami.

 

ClearPointTbl(Table_no)
Czyści wybraną tablicę.

Table_no - numer tabeli od 1 do 10

przykład:
ClearPointTbl(3) 
Zeruje wartości i kasuje nazwy wszystkich punktów w tabeli nr 3.

EditPoint( Table_no, Point_no, X, Y, Z, A, B, C, Point_name)
Ustawia nowe parametry danego punktu w tabeli.

przykład:
EditPoint( 2, 7, 100, 120, 340, 45, 90, 0, 'Middle_Point')
wstawia nowe wartości do wiersza 7 tabeli punktów nr 2.

ReadPoint( Table_no, Point_no )
Zwraca: X, Y, Z, A, B, C danego punktu lub nil, jeżeli dany punkt nie istnieje.

przykład:
X, Y, Z = ReadPoint(3, 5)
X, Y, Z, A, B, C = ReadPoint(3, 5)


ReadGlobalActivePoint()
Zwraca globalne: x, y, z, a, b, c aktywnego punktu lub nil, jeżeli brak aktywnego punktu lub brak aktualnych danych.

przykład:
X, Y, Z = ReadGlobalActivePoint()
X, Y, Z, A, B, C = ReadGlobalActivePoint()


ReadLocalActivePoint()
Zwraca lokalne: X, Y, Z, A, B, C aktywnego punktu lub nil, jeżeli brak aktywnego punktu.

przykład:
X, Y, Z = ReadLocalActivePoint()
X, Y, Z, A, B, C = ReadLocalActivePoint()


SetActivePoint( Table_no, Point_no )
Ustawia aktywny punkt.

przykład:
SetActivePoint( 3, 5 )
Ustawia punkt nr 5 w tabeli nr 3 jako punkt aktywny.


Obsługa rejestrów VR z symulacji (od wersji 4.0):

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:


SIM_Registers_VR = RnTblHelper.new()
Uruchamianie dostęp do rejestrów VR symulacji.

Przykład:
SIM_Registers_VR = RnTblHelper.new()

 

val = SIM_Registers_VR[numer_rejestru]
Odczyt wartości rejestru VR z symualcji.

numer_rejestru - numer rejestru VRn - zakres liczbowy zalezy od wersji programu.

przykład:
Motion_Speed = SIM_Registers_VR[10]
Zapisanie do zmiennej Motion_Speed wartości rejestru VR10 z symulacji.

 

SIM_Registers_VR[numer_rejestru] = val
Zapis wartości rejestru VR z symualcji.

numer_rejestru - numer rejestru VRn - zakres liczbowy zalezy od wersji programu.

przykład:
SIM_Registers_VR[10] = Motion_Speed
Zapisanie do rejestru VR10 wartości zmiennej Motion_Speed.

RnTblHelper.size(SIM_Registers_VR)
Odczytanie liczby dostępnych rejestrów VR.

przykład:
Available_Registers_Number = RnTblHelper.size(SIM_Registers_VR)
Zapisanie do zmiennej Available_Registers_Number liczby dostępnych rejestrów.

Obsługa markerów VM z symulacji:

SIM_Markers_VM = MnTblHelper.new()
Uruchamia dostep w danycm skrypcie do markerów VM z symulacji.

przykład:
SIM_Markers_VM = MnTblHelper.new()
Uruchamia dostep w danych skrypcie do markerów VM z symulacji.

 

val = SIM_Markers_VM[numer_markera]
Odczyt wartości markerów VM z symulacji.

numer_markera - numer markera VM

przykład:
Switch_State = SIM_Markers_VM[12]
kopiuje do zmiennej Switch_State wartość z markera VM12

 

SIM_Markers_VM[numer_markera] = val
Zapis wartości do markerów VM z symulacji.

numer_markera - numer markera VM

przykład:
SIM_Markers_VM[12] = Switch_State
Kopiuje do markera VM12 stan zmiennej Switch_State

MnTblHelper.size(SIM_Markers_VM)
Odczytaie liczby marekrów VM w symulacji.


Przykład:
Markers_Number = MnTblHelper.size(SIM_Markers_VM)
Zapisuje do zmiennej Markers_Number liczbę markerów VM dostępnych w symulacji.


Obsługa wejść bloku funkcyjnego LUA_SCRIPT:

Function_Block_Inputs = FBInTblHelper.new()
Uruchomienie dostępu do wejść bloku funkcyjnego w danycm skrypcie LUA.

przykład:
Function_Block_Inputs = FBInTblHelper.new()
Uruchamia dostęp do wejść bloku funkcyjnego w danym skrypcie LUA.

val = Function_Block_Inputs[numer_wejscia]
Odczytuje wartość wejścia bloku funkcyjnego.

numer_wejscia - numer wejścia bloku funkcyjnego od 1 do liczby wejść danego bloku

przykład:
Speed = Function_Block_Inputs[1]
zapisuje do zmiennej Speed wartość wejścia nr 1 bloku funkcyjnego.

 

FBInTblHelper.size(Function_Block_Inputs)
Odczytuje liczbę wejść danego bloku funkcyjnego.

Przykład:
Inputs_Number = FBInTblHelper.size(Function_Block_Inputs)
Zapisuje do zmiennej Inputs_Number liczbe wejść bloku danego funkcyjnego.


Obsługa wyjść bloku funkcyjnego LUA_SCRIPT:

Function_Block_Outputs = FBOutTblHelper.new()
Uruchamia dostęp do wyjść danego bloku funkcyjnego.

przykład:
Function_Block_Outputs = FBOutTblHelper.new()
Uruchamia dostęp do wyjść danego bloku funkcyjnego.

 

Function_Block_Outputs[numer_wyjscia] = val
Zapiuje wartości do wybranego wyjścia danego bloku funkcyjnego.

numer_wyjscia - numer wyjścia bloku funkcyjnego


przykład:
Function_Block_Outputs[3] = Temperature
zapisuje wartość zmiennej Temperature do wyjścia nr 3 danego bloku funkcyjnego w którym użyto tę funkcję.

 

FBOutTblHelper.size(Function_Block_Outputs)
Podaje ilość wyjść danego bloku funkcyjnego.

przykład:
Outputs_Number = FBOutTblHelper.size(Function_Block_Outputs)
Zapisuje liczbe wyjść danego bloku funkcyjnego do zmiennej Outputs_Number.

R sterownika:

Device_Registers_R = RnTblHelper.new()
Dostęp do R sterownika.

val = Device_Registers_R[numer_rejestru]
Odczyt wartości.

Device_Registers_R[numer_rejestru] = val
Zapis wartości.

RnTblHelper.size(Device_Registers_R)
Ilość rejestrów.


M sterownika:

Device_Markers_M = MnTblHelper.new()
Dostęp do M sterownika.

val = Device_Markers_M[numer_markera]
Odczyt wartości.

Device_Markers_M[numer_markera] = val
Zapis wartości.

MnTblHelper.size(Device_Markers_M)
Ilość markerów.


X sterownika:

Device_Inputs_X = XnTblHelper.new()
Dostęp do X sterownika.

val = Device_Inputs_X[numer_wejscia]
Odczyt wartości.

XnTblHelper.size(Device_Inputs_X)
Ilość wejść.


Y sterownika:

Device_Outputs_Y = YnTblHelper.new()
Dostęp do Y sterownika.

Device_Outputs_Y[numer_wyjscia] = val
Zapis wartości.

YnTblHelper.size(Device_Outputs_Y)
Ilość wyjść.