Obecna wersje plugin umożliwia wykorzystanie tylko dwóch wejść analogowych (dwóch potencjometrów) do sterowania wartości FRO i SRO. Jeśli chciałbyś kontrolować po przez wejście analogowe inną wartość w Mach4, pokażemy ci, jak to zrobić na przykładzie wartości RRO. Obsługę dodatkowego wejścia analogowego najprościej zrealizować poprzez makro, a dokładnie poprzez makro PLC będące częścią ekranu Mach4. Makro to jest wykonywane z częstotliwością 50ms, co zapewnia bardzo szybką reakcje. Jeśli nie wiesz, czym jest skrypt PLC zapoznaj się z działem „3.2.3 PLC Script” instrukcji znajdującej się na tej stronie:
https://www.machsupport.com/wp-content/uploads/2014/05/Mach4%20Scripting%20Manual.pdf
- W głównym oknie programu Mach4 klikamy kolejno na:
- opcje „Operator”
- opcje „Edit Screen”
Po wykonaniu powyższych kroków, program Mach4 przejdzie w tryb edycji ekranu.
2. W oknie edytora ekranu Mach4 klikamy kolejno na:
- opcje „wxRout” (w przypadku tokarki „wxLathe”)
- przycisk „Events” (kartka papieru z błyskawicą)
- pole „PLC Script” (aby podświetlić kolejny przycisk)
- przycisk z trzema kropkami.
Po wykonaniu powyższych kroków ukaże się okno edytora skryptów LUA a w tym oknie będziemy mogli zobaczyć kod skryptu PLC.
3. Przewijamy skrypt PLC do końca i odszukujemy wskazaną poniżej linię.
4. Ustaw kursor nad zaznaczoną linią i naciśnij klika razy „Enter”, aby zrobić nieco więcej miejsca na nasz kod.
Uwaga: Zgodnie z informacją zawartą w zaznaczonej linii, nie wolno nam umieszczać własnego kodu poniżej jej.
5. Następnie umieść w przygotowanym miejscu poniższy kod, zapisz makro i wyjdź z edytora ekranów.
local Analog_In_Reg = mc.mcRegGetHandle(inst, "CSMIO-IP/Analog Input 2") local Analog_In_Val = mc.mcRegGetValue(Analog_In_Reg) local maxval = scr.GetProperty('slideRRO', 'Max Value') local minval = scr.GetProperty('slideRRO', 'Min Value') local RRO = Analog_In_Val / (10 / tonumber(maxval)) if (RRO < tonumber(minval)) then RRO = tonumber(minval); end if (RRO > tonumber(maxval)) then RRO = tonumber(maxval); end scr.SetProperty('slideRRO', 'Value', tostring(RRO));
Powyższy kod odczytuje wartość napięcia analogowego z wejścia numer 2, zamienia ją na wartość procentową i przekazuje do suwaka slideRRO. Zwróć uwagę, że powyższy kod sprawdza, czy wartość RRO nie przekracza minimalnej i maksymalnej wartości suwaka RRO.
Jeśli będziesz chciał odczytać napięcie dowolnego wejścia analogowego wystarczy, że z powyższego kodu użyjesz dwóch pierwszych linii :
local Analog_In_0_Reg = mc.mcRegGetHandle(inst, "CSMIO-IP/Analog Input 0")
local Analog_In_0_Val = mc.mcRegGetValue(Analog_In_0_Reg)
|
-- Analog in 0
|
local Analog_In_1_Reg = mc.mcRegGetHandle(inst, "CSMIO-IP/Analog Input 1") local Analog_In_1_Val = mc.mcRegGetValue(Analog_In_1_Reg) |
-- Analog in 1
|
local Analog_In_2_Reg = mc.mcRegGetHandle(inst, "CSMIO-IP/Analog Input 2") local Analog_In_2_Val = mc.mcRegGetValue(Analog_In_2_Reg) |
-- Analog in 2
|
local Analog_In_3_Reg = mc.mcRegGetHandle(inst, "CSMIO-IP/Analog Input 3") local Analog_In_3_Val = mc.mcRegGetValue(Analog_In_3_Reg) |
-- Analog in 3
|
Po wykonaniu powyższego kodu zmienne Analog_In_0_Val, Analog_In_1_Val, Analog_In_2_Val i Analog_In_3_Val będą przechowywały wartość napięcia wejść analogowych wyrażaną w woltach.
[Źródło:] Opracowane przez Wsparcie Techniczne CS-Lab dla użytkowników kontrolerów CSMIO