Conveyor tracking without hardware trigger
Hi everyone,
I need to set up a conveyor tracking application in which I cannot directly wire a sensor to the switch input of CMT, as my trigger is actually a logic condition, and its expression may change at runtime.
Is there any way to provide a soft trigger switch via RAPID? I am aware that I will introduce time uncertainty but my conveyor moves slowly and I need no extreme positioning accuracy.
Or, even better, is there a way to issue a Rapid instruction which cause a WObj to be continuously offset in a defined direction based on encoder measured distance? This is actually they way this application was made in the past with Kawasaki robots.
Any smarter idea than wiring a general purpose digital output to the trigger input of CMT?
Many thanks,
Gabriel
I need to set up a conveyor tracking application in which I cannot directly wire a sensor to the switch input of CMT, as my trigger is actually a logic condition, and its expression may change at runtime.
Is there any way to provide a soft trigger switch via RAPID? I am aware that I will introduce time uncertainty but my conveyor moves slowly and I need no extreme positioning accuracy.
Or, even better, is there a way to issue a Rapid instruction which cause a WObj to be continuously offset in a defined direction based on encoder measured distance? This is actually they way this application was made in the past with Kawasaki robots.
Any smarter idea than wiring a general purpose digital output to the trigger input of CMT?
Many thanks,
Gabriel
0
Comments
-
Hi gea_gfantechi,
Yes there is a signal to simulate the Trigger.
You can type:
PulseDO\High\PLength:=0.2,c1SoftSync;
If you want to manage a sequential trigger and you need to measure the distance between a trigger and other, you can use this code i've developed. (You need Multitasking)
EXAMPLE: Trig Foto and syncTrigger every 250mmCONST dnum k_Maxc1Counts:=4294967295; !Max counts of encoder, youi can find in config dataCONST dnum k_CountsPerMeter:=48579; !Same of Process parameter
CONST num k_PhotoRatio:=250; !Distance between a trig and next
PERS num act_c1Counts_Vis;
PERS num memo_c1Counts_Vis;PROC TrigCmd()IF ((getDistance_Vis()>NumToDnum(k_PhotoRatio) AND c1NullSpeed=0 ) THEN! Cmd Trigger to CTMPulseDO\High\PLength:=0.2,c1SoftSync;ENDIFENDPROCFUNC dnum getDistance_Vis()VAR dnum l_n;act_c1Counts_Vis:=GInputDnum(c1Counts);memo_c1Counts_Vis:=GInputDnum(c1CntFromEnc);!Recalculate position if pass over 0 axis CNV1IF act_c1Counts_Vis<memo_c1Counts_Vis THENmemo_c1Counts_Vis:=(-1)*(k_Maxc1Counts-memo_c1Counts_Vis);ENDIFl_n:=((act_c1Counts_Vis-memo_c1Counts_Vis)*1000)/k_CountsPerMeter;RETURN l_n;ENDFUNC
IF you want to store pulsencoder and take an ID of the trigger to use conveyor advanced tracking you can use GInputDnum(c1CntFromEnc).
0
Categories
- All Categories
- 5.5K RobotStudio
- 394 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 249 ScreenMaker
- 2.7K Robot Controller
- 309 IRC5
- 59 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 785 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 4 Job listings