Mach4 – Odczyt wejść analogowych CSMIO/IP. Kontrola wartości RRO.

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

  1. 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

30 maja 2019