macropump

Alle vragen die betrekking hebben over Mach cnc controllers

Moderator: Moderators

Plaats reactie
Gebruikersavatar
zeeschuim
Donateur
Berichten: 846
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

macropump

Bericht door zeeschuim »

Nog een keer de macropump.

Code: Selecteer alles

	Sub Main
	
		If  GetOEMLED(1000) Then ' is run
		If IsActive(INPUT1)And (GetLed(116) = true) Then
 		DoOemButton(1004)      ' 1004 DoOemButton stop
		End If
		
		End If
		
	End Sub  
Wat doe ik fout?
Wij van cncfrees adviseren cncfrees.
skillalot
Donateur
Berichten: 3251
Lid geworden op: 19 apr 2007 19:04
Locatie: Nijmegen
Contacteer:

Re: macropump

Bericht door skillalot »

Haal die = true eens weg
Gebruikersavatar
zeeschuim
Donateur
Berichten: 846
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

Re: macropump

Bericht door zeeschuim »

maakt niks uit
Wij van cncfrees adviseren cncfrees.
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: macropump

Bericht door Kjelt »

Ik ken deze taal niet maar wat je nu doet is hetzelfde als

If ( GetOEMLED(1000) And IsActive(INPUT1) And (GetLed(116) )
Then DoOemButton(1004)
End If

Oftewel alleen als aan alle drie de voorwaardes is voldaan voert hij de Dobutton uit.
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 11995
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: macropump

Bericht door hugo stoutjesdijk »

Kjelt schreef: 02 mei 2020 13:58 Ik ken deze taal niet maar wat je nu doet is hetzelfde als

If ( GetOEMLED(1000) And IsActive(INPUT1) And (GetLed(116) )
Then DoOemButton(1004)
End If

Oftewel alleen als aan alle drie de voorwaardes is voldaan voert hij de Dobutton uit.
En jij zet het geheel tussen haakjes.... misschien zit daar de clou?
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
zeeschuim
Donateur
Berichten: 846
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

Re: macropump

Bericht door zeeschuim »

Kjelt schreef: 02 mei 2020 13:58 Oftewel alleen als aan alle drie de voorwaardes is voldaan voert hij de Dobutton uit.
Ja , dat klopt.
Als de machine een programma uitvoerd en input 1 wordt geactiveerd ( dat is een input uit een infrarood scherm)
Dan stopt de machine.
Wij van cncfrees adviseren cncfrees.
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: macropump

Bericht door Kjelt »

Zoals gezegd ken ik de taal niet, dus haakjes kun je proberen maar ook jouw statement

(GetLed(116) = true)

Bij Ansi C (andere taal) heb je bv een statement:
if ( Variabele = true)
Maar dat is fout want een enkele = is een toekenning, en dus ken je de waarde true toe aan de Variabele.
Het gevolg, de if conditie is dan altijd waar (veel voorkomende beginnersfout waar de compiler tegenwoordig gelukkig voor waarschuwt).

Bij Ansi C is de correcte statemen
if ( Variabele == true) of beter om fouten zoals hierboven te voorkomen if (true == Variabele) mocht je dan een = per ongeluk vergeten krijg je altijd een error.

de == is dus in Ansi C een logische vergelijking en een enkele = is een toewijzing.

Maar hoe dat bij MACH3 macro's zit, geen idee, ik ken geen MACH3 maar misschien helpt het je verder, zo niet vergeet het dan maar weer snel :lol:
Gebruikersavatar
zeeschuim
Donateur
Berichten: 846
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

Re: macropump

Bericht door zeeschuim »

:roll:
Wij van cncfrees adviseren cncfrees.
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: macropump

Bericht door Kjelt »

zeeschuim schreef: 02 mei 2020 15:33:roll:
Je wilt even naar de programmers manual kijken waar je voor programmeert dat verschilt per taal en toepassing.
Bv hier
https://www.machsupport.com/wp-content/ ... pdf#page47

Gebruiken ze niet if(inputX=true)
Maar gebruiken ze een boolean functie genaamd IsActive die true of false retourneerd.

Je moet dan bv
If IsActive(inputX) Then
gebruiken.




IsActive
Function IsActive(Signal As Integer) As Boolean
This function returns a Boolean True if the current state of the specified input signal is its active state. Note that in terms of actual signal level, the term “active” depends on how the signal is defined. If the signal is defined in Config->Ports&Pins->InputSignals as ActiveLow, then IsActive() will return True when that signal is being driven to a logic low. If the signal is defined in Config->Ports&Pins->InputSignals as ActiveHigh, then IsActive() will return True when that signal is being driven to a logic high.
Arguments:
Signal is an integer value corresponding to one of pre-defined input signal constants.
Return Value:
False indicates the signal is currently in its inactive state True indicates the signal is currently in its active state
Example:
‘ Show the user the state of the INPUT #1 input
If IsActive(INPUT1) Then
Message “INPUT #1 input is active” Else
Message “INPUT #1 input is inactive”
Gebruikersavatar
zeeschuim
Donateur
Berichten: 846
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

Re: macropump

Bericht door zeeschuim »

En hoe komt het er dan uit te zien volgens jouw?
Wij van cncfrees adviseren cncfrees.
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: macropump

Bericht door Kjelt »

Ik heb geen tijd om me op dit compleet nieuwe ding te storten, kan het ook niet testen maar ik lees oa dit
The use of GetLED is no longer recommended practice and this function exists only to support preexisting legacy scripts. This function is deprecated, and its use is strongly discouraged.
Maar als ik jou was zou ik eerst alle drie de logische delen eerst testen met een "debug" message.

Dus zoiets als dit

If GetOEMLED(1000) Then
Message "OEL(1000) is aktief"
If IsActive(INPUT1) Then
Message "Input1 is aktief"
If GetLed(116) Then
Message "Led16 is aktief"

End If
End If
End If

Als je alledrie de messages ziet weet je dat het goed gaat en anders weet je waar je het moet zoeken om een alternatief commando te vinden.
Gebruikersavatar
zeeschuim
Donateur
Berichten: 846
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

Re: macropump

Bericht door zeeschuim »

ok ik ga het testen
Wij van cncfrees adviseren cncfrees.
Gebruikersavatar
zeeschuim
Donateur
Berichten: 846
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

Re: macropump

Bericht door zeeschuim »

Hij doetut! ;-) Met een brain weliswaar, maar wat doeterhettoet.
Wij van cncfrees adviseren cncfrees.
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: macropump

Bericht door Kjelt »

Mooi zo!
Plaats reactie