Mach4 – Auslesen der analogen CSMIO / IP-Eingänge. RRO-Wert-Check

Die aktuelle Plugin-Version ermöglicht es, nur zwei analoge Eingänge (zwei Potentiometer) zu verwenden, um die FRO- und SRO-Werte zu steuern. Wenn Sie in Mach4 einen anderen Wert über den analogen Eingang ansteuern möchten, zeigen wir Ihnen am Beispiel des RRO-Werts, wie das geht. Der einfachste Weg, den zusätzlichen analogen Eingang zu unterstützen, ist über ein Makro, genauer gesagt über das SPS-Makro, das Teil des Mach4-Bildschirms ist. Dieses Makro wird mit einer Frequenz von 50 ms ausgeführt, was eine sehr schnelle Reaktion gewährleistet. Wenn Sie nicht wissen, was ein SPS-Skript ist, siehe Abschnitt „3.2.3 PLC Script“ auf dieser Seite:
 https://www.machsupport.com/wp-content/uploads/2014/05/Mach4%20Scripting%20Manual.pdf

  1. Klicken Sie im Hauptfenster des Mach4-Programms wiederum auf:
  • Option „Operator“
  • Option „Edit Screen“

Nach Abschluss der obigen Schritte wechselt das Mach4-Programm in den Bildschirmbearbeitungsmodus.

 

  1. Klicken Sie im Mach4-Bildschirmeditorfenster nacheinander auf:
  • „wxRout“-Optionen (bei einer „wxLathe“-Drehmaschine)
  • die Schaltfläche „Events“ (ein Blatt Papier mit einem Blitz)
  • das Feld „SPS Script“ (um die nächste Schaltfläche hervorzuheben)
  • die Schaltfläche mit drei Punkten.

Nachdem Sie die obigen Schritte ausgeführt haben, erscheint das LUA-Skripteditorfenster und in diesem Fenster können Sie den SPS-Skriptcode sehen.

 

  1. Scrollen Sie das SPS-Skript bis zum Ende und suchen Sie nach der unten gezeigten Zeile.

 

  1. Positionieren Sie den Cursor über der ausgewählten Zeile und drücken Sie einige Male „Enter“, um etwas mehr Platz für unseren Code zu schaffen.

 

Achtung: Nach den Angaben in der markierten Zeile dürfen wir keinen eigenen Code darunter setzen.

 

  1. Fügen Sie dann den folgenden Code an der vorbereiteten Stelle ein, speichern Sie das Makro und beenden Sie den Bildschirmeditor.
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));

Der obige Code liest den Wert der analogen Spannung vom Eingang Nummer 2, wandelt ihn in einen Prozentwert um und übergibt ihn an den SlideRRO-Schieberegler. Beachten Sie, dass der obige Code überprüft, ob der RRO-Wert den minimalen und maximalen Wert des RRO-Schiebereglers nicht überschreitet.

Wenn Sie die Spannung eines beliebigen Analogeingangs lesen möchten, verwenden Sie einfach die ersten beiden Zeilen aus dem obigen Code:

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

Nach der Ausführung des obigen Codes halten die Variablen Analog_In_0_Val, Analog_In_1_Val, Analog_In_2_Val und Analog_In_3_Val den Spannungswert der analogen Eingänge in Volt.

 

[Source:] The articles were created by CS-Lab’s Technical Support Team for CSMIO/IP users. 

30 Mai 2019