Trigger/ TriggInt werden erst bei Fine-Point ausgelöst
Liebe Community,
mein Ziel ist es, dass der Roboter an jedem Punkt seine Position kennt, weswegen ich mehrere Trigger auf einen Punkt setzen will, so wie es auch bei KUKA möglich ist.
Aktuell löse ich das über MoveJSync Befehle mit quasi je einer Unterroutine für jeden Punkt. Das finde ich sehr unschön.
Nun habe ich mir ein Testprogramm mit eigenen TriggJ/ TriggL Befehlen geschrieben und nutze ein TriggArray, um die verschiedenen Bedingungen zu setzen, doch es werden von 4 Punkten immer die letzten 2 Trigger ausgelöst, außer ich setze sie auf den Start punkt (\ Start), was aber ja falsch ist.
Hat jemand eine Idee, wo das Problem liegt?
Hier meine Programme:
<div>MODUL triggtest</div><div>!*************************************************************************************************</div><div>! Punktdaten</div><div>!*************************************************************************************************</div><div _msttexthash="325156" _msthash="1077"> VAR Robtarget P1 := ...;</div><div _msttexthash="325416" _msthash="1089"> VAR Robtarget P2 := ...;</div><div _msttexthash="325676" _msthash="1101"> VAR Robtarget P3 := ...;</div><div _msttexthash="325936" _msthash="1113"> VAR Robtarget P4 := ...;</div><div>!*************************************************************************************************</div><div>PROC testtrigg()</div><div> TMoveJ P1,"SPEED_SLOW",zfine,tGRIP,"V1",\bCheckGripper:=true,\bFirstPoint:=true;</div><div> </div><div> TMoveJ P2,"SPEED_SLOW",zfast,tGRIP,"V2";</div><div> </div><div> TMoveJ P3,"SPEED_SLOW",zfine,tGRIP,"V3"; <i>! Trigger wird an Punkt 4 ausgeführt (getestet mit TPWrite)</i></div><div><i><br></i></div><div> TMoveL P4,"SPEED_SLOW",zfine,\tmpSTOP:=TargetPos,tGRIP,"XX"; <i>! Trigger wird bei Genauhalt ausgeführt</i></div><div> </div><div>ENDPROC</div><div> </div><div>ENDMODUL</div><div><i><br></i></div><div>!********************************************************************************************</div><div>VAR triggdata trigg_array{25};</div><div>VAR intnum irSetRobPos{25};</div><div>!********************************************************************************************</div><div><i><br></i></div><div>!***************************************************</div><div>! MoveJ Bewegung</div><div>!***************************************************</div><div>PROC TMoveJ(robtarget tmpPOS, string tmpSPEED, zonedata tmpZONE, \stoppointdata tmpSTOP, tooldata tmpTOOL, string tmpSubLocation, \bool bCheckGripper, \bool bFirstPoint, \bool bLOCK, \bool bUNLOCK)</div><div> VAR bool tmpCheckGripper;</div><div> VAR bool tmpFirstPoint;</div><div> VAR bool tmpLOCK;</div><div> VAR bool tmpUNLOCK;</div><div> </div><div> tmpCheckGripper := Vorhanden(bCheckGripper);</div><div> tmpFirstPoint := Vorhanden<span>(bFirstPoint);</span></div><div> tmpLOCK := Vorhanden(bLOCK);</div><div> tmpUNLOCK := Vorhanden(bUNLOCK);</div><div> </div><div> GetTrapData tmpSubLocation, \bCheckGripper:=tmpCheckGripper, \bFirstPoint:=tmpFirstPoint, \bLOCK:=tmpLOCK, \bUNLOCK:=tmpUNLOCK;</div><div> </div><div> if Present(tmpSTOP) dann</div><div> TriggJ tmpPOS,VASet(tmpSPEED),trigg_array,tmpZONE,\inpos:=tmpSTOP,tGRIP;</div><div> oder</div><div> TriggJ tmpPOS,VASet(tmpSPEED),trigg_array,tmpZONE,tGRIP;</div><div> endif</div><div> </div><div>ENDPROC</div><div><i><br></i></div><div>!***************************************************</div><div>! Triggervariablen</div><div>!***************************************************</div><div>PROC GetTrapData(string tmpSubLocation, \bool bCheckGripper, \bool bFirstPoint, \bool bLOCK, \bool bUNLOCK)</div><div> f o r i f r o m 1 t o 25 Do </div><div> TriggDataReset trigg_array{i};</div><div> IDelete irSetRobPos{i};</div><div> CONNECT irSetRobPos{i} WITH tSETPOS;</div><div> endfor</div><div> </div><div> if Present(bCheckGripper) and bCheckGripper=true then</div><div> TriggInt trigg_array{1},0,\Start,irSetRobPos{1};</div><div> endif</div><div> </div><div> if Present(bFirstPoint) and bFirstPoint then</div><div> TriggInt trigg_array{10},10,irSetRobPos{10};</div><div> endif</div><div> </div><div> test tmpSubLocation</div><div> case "V1":</div><div> TriggInt trigg_array{11},0,irSetRobPos{11}; </div><div> case "V2":<br><br></div><div> ...<br><br></div><div><span> default: </span> </div><div> endtest</div><div> </div><div> if Present(bLOCK) and bLOCK then</div><div> TriggInt trigg_array{24},0,irSetRobPos{24};</div><div> endif</div><div> </div><div> if Present(bUNLOCK) and bUNLOCK then</div><div> TriggInt trigg_array{25},0,\Next,irSetRobPos{25};</div><div> endif </div><div>ENDPROC</div><div><i><br></i></div><div>!***************************************************</div><div>! Triggerroutine</div><div>!***************************************************</div><div>TRAP tSETPOS</div><div> VAR recLOCATIONS tmpROBOT_LOCATION;</div><div> </div><div> tmpROBOT_LOCATION := ROBOT_LOCATION;</div><div> </div><div> if TriggDataValid(trigg_array{1}) then</div><div> CHECK_GRIPPER "GRIP_OPN";</div><div> endif</div><div> if TriggDataValid(trigg_array{10}) then</div><div> tmpROBOT_LOCATION.actual := ROBOT_LOCATION.destination;</div><div> endif</div><div> if TriggDataValid(trigg_array{11}) then</div><div> tmpROBOT_LOCATION.sub := "V1";</div><div> endif</div><div><br> ...</div><div> </div><div> ROBOT_LOCATION := tmpROBOT_LOCATION;</div><div> </div><div> if TriggDataValid(trigg_array{24}) then</div><div> LOCK_AREA ROBOT_LOCATION.actual;</div><div> endif</div><div> if TriggDataValid(trigg_array{25}) then</div><div> UNLOCK_AREA ROBOT_LOCATION.source;</div><div> endif</div><div> </div><div>ENDTRAP</div><div>ENDMODULE</div><div></div>
0
Categories
- All Categories
- 5.6K RobotStudio
- 401 UpFeed
- 21 Tutorials
- 15 RobotApps
- 303 PowerPacs
- 407 RobotStudio S4
- 1.8K Developer Tools
- 250 ScreenMaker
- 2.8K Robot Controller
- 353 IRC5
- 74 OmniCore
- 8 RCS (Realistic Controller Simulation)
- 850 RAPID Programming
- 25 AppStudio
- 4 RobotStudio AR Viewer
- 19 Wizard Easy Programming
- 110 Collaborative Robots
- 5 Job listings