nutze das öfter. signal veränderung geht durch.
ist wie PROC Move_Irgenwas(pers tooldata ActTool)
die Variable die Pers Eigenschaften vom Parameter in innere der Funktion durchreicht
nutze das öfter. signal veränderung geht durch.
ist wie PROC Move_Irgenwas(pers tooldata ActTool)
die Variable die Pers Eigenschaften vom Parameter in innere der Funktion durchreicht
LOCAL PROC SucheTray_X1(VAR signaldi Suchsensor)
so gehts auch
ich hab mal bei kuka expert geschaut.
Da wirds erwähnt im zusammenhang von lokal deklarierten interrupts und programm wechsel
"If a local interrupt loses its validity due to a subprogram call, approximate positioning is not normally carried out.
Approximate positioning can be forced in this case by programming a CONTINUE statement directly before the END of the program concerned."
Hab aber ein gefühl das es auch bei mir wan anders passiert ist
ini folds gibts bei mir nicht. ist alles abgefangen und nur bei direkter anwahl ausgeführt.
ich hab schon END mit $PRO_IP Zeilen genau als VL stop identifiziert und auch mit Continue vor genau dieser weg bekommen. und ich weiß das es keinen sinn macht aber ich habs halt gefunden an der stelle.
ich bin extrem akribisch was die suche nach VL stop angeht und wollte es nicht glauben das es geholfen hat wenn ich es nicht selber schon gefunden hätte
und mir ist auch klar das continue nur auf die nächste zeile wirkt (ausser in verbindung mit ON_ERROR_PROCEED natürlich)
und es war nicht das ende von programm. rücksprung ins hauptprogramm mit dem nächsten programm direkt im anschluß (kein VL stop in diesem)
es war das END obwohl es keinen Sinn gemacht hat
ich hab mit $Pro_IP so einige gefunden die eigentlich nicht sein dürften und hab auch unter anderem die Zeile vorm end schon mehrfach aufgefallen. continue hat auch in dem Fall geholfen.
also ich kann bestätigen
ja es kommt vor das ein VL stop am end ist
ja es macht kein sinn
ja ein continue hat schon geholfen auch wenn es keinen Sinn macht
was willst du den genau wissen?
Hi dann aber mehr als 12 punkte berechen sonst hast ein Dodekagon spirale
Gruß Loipe
du könntest ein signal (pro Greifer/zentrierung) virtuell machen die du über die Taste umschaltest.
dann cross connection mit dem einem signal auf die zwei die zum greifer/zentrierung geht.
das eine invertieren das andere nicht.
hieße aber im programm kannst du auch nur die virtuellen signale nutzen.
in der konfiguration kannst du ja auswählen ob es in automatik geht oder nicht (standard ist nicht) geht auch nur wenn du das signal entsprechend konfigurierst
oder wenn du multitasking hättest noch was anderes
Hallo
ich selber setze kein Wago/Beckhoff ein hab aber mal geschaut...
der IO Link master 750-657 kann v1,0 bis 1.1 solltest somit keine kompatibilitäts probleme bekommen sollen.
übers einrichten dieses systems kann ich leider nicht viel sagen da ich es noch nicht gemacht aber erfahrungs gemäß steht immer noch die Aussage vom meinem vorhergehenden post.
Gruß Loipe
vom programm aus
If $cycflag[50] then
Dastimmt was nicht
Endif
du weist dem cycflag eine logische bedingung zu. dann kannst das Cycflag als boolsche ergebnis dieser bedingung nutzen.
dies passiert wie der name sagt zyklisch
wenn du wissen willst welche benutzt werden must du wohl in deinem programm mal suchen.
ich schreib gerne im kopf vom hauptprogramm nen kommentar welche prios von interrupts und welche cycflags ich für was verwende um es anderen leichter zu machen
ich würde vorm einschalten des interrupts noch schauen ob die bedingung evtl schon gegeben ist dann musst du noch was machen weil der interrupt dann nicht mehr auslösen wird
$CYCFLAG[50]=($SEN_PREA[1]>tiefe)
INTERRUPT DECL 11 WHEN $CYCFLAG[50] DO STOPFTSEARCH()
coilbreaksub(); Start der Spiralbahn
DEF coilbreaksub(MAXCOUNT: IN, RAD_MIN:IN, RotQuad:IN)
REAL RAD,RAD_MIN
INT COUNT,MAXCOUNT,SIGN,RotQuad,RotdirX,RotDirY
FRAME PS,PH,PT
; Initialisierung
PS=$POS_ACT
INTERRUPT ON 11
FOR COUNT = 1 TO MAXCOUNT
PH=$NULLFRAME
PT=$NULLFRAME
IF (MODOLO(COUNT, 2) == 0) THEN
;Richtung der Halbkreise festlegen
SIGN=1
ELSE
SIGN=-1
ENDIF
SWITCH RotQuad
CASE 1
RotdirX=1
RotDirY=1
CASE 2
RotdirX=1
RotDirY=-1
CASE 3
RotdirX=-1
RotDirY=-1
CASE 4
RotdirX=-1
RotDirY=1
ENDSWITCH
RAD=(COUNT + 1) * 0.5 * RAD_MIN
PH.X=RAD * SIGN * RotdirX
PH.Y=PH.X * RotDirY
PT.X=2 * RAD * SIGN * RotdirX
PT.Y=0
CIRC PS : PH, PS : PT C_Vel
PS=PS : PT
ENDFOR
INTERRUPT OFF 11
WAIT SEC 1
END
Alles anzeigen
die zahl hängt davon ab welcher bei dir nicht benutzt wird.. das kann ich von hier nicht wissen. daher xy
wenn der interrupt ausgelöst wird wenn er nicht in der suche ist dann gibt es einen unzulässige struktur für resume fehler.... dann bist du wieder hier ausserdem siehts schöner aus
xy musst mit einer zahl zwischen 1 und 256 austauschen
und schalt die interrupts aus und ein in collsubsearch
und in dem collsubsearch schreib hinterm interrupt off noch wait sec 1
danach kannst du eine fehlerbehandlung schreiben da er wenn er was findet ja da nie hin kommt
$CYCFLAG[XY]=($SEN_PREA[1]>tiefe) OR (Kraft<=0)
oder $cycflag dann musst du dich nicht auf den sub verlassen
ja war nicht alles schlecht
Mich würde mal ein Signal ob der schreibzugriff auf Seiten robotstudio liegt oder nicht. Hier hilft der systemausgang writeaccess leider nicht weiter…
geht schon nur leider nur wenn die SPS über den systemeingang schreibzugriff anforderst gibt dir der Ausgang zurück ob die SPS erfolgreich angefordert hat oder Robotstudio etc blockiert.
bissel ungünstig gelöst aber könnte man vorm anstarten mal reinmachen
wenn die sps pp main macht schon mal ein indikator das was passiert ist.