I have robot with camera attached to robot endeffector. Camera can accept 24v external triggers to grab images. Cameras line input is connected one of the terminals of Beckhoff EL2809 module, this output is linked to robot output signal. A task requires robot to move from point to point with LIN movement (~3210mm long path) triggering camera output every 30mm. During program robot makes 3 movements by 3210 mm so total impulse count must be 321. Triggering logic is located in sps.sub and works in a following way:
LOOP
X_CURRENT = $POS_ACT_MES.X
IF SCAN THEN
CHECK_X = Start_Pos.X + (Scan_Index*Scan_Offset);scan offset=30
IF (X_CURRENT >= CHECK_X)THEN
PULSE (TAKE_PHOTO, TRUE, 0.005)
Scan_Index = Scan_Index + 1
ENDIF
ENDIF
ENDLOOP
Everything works perfectly until robot's speed is set to higher then 1m/s. The higher is speed the more triggers are missed (interesting effect - at 1.9m/s robot generated less impulses then at 2m/s):
Robot speed | 0.3 | 0.5 | 0.7 | 0.9 | 1 | 1.1 | 1.3 | 1.5 | 1.7 | 1.9 | 2 |
Impulses received | 321 | 321 | 321 | 321 | 321 | 306 | 223 | 160 | 126 | 87 | 93 |
Required impulse frequency Hz (calculated) | 10 | 16.6 | 23.3 | 30 | 33.3 | 36.6 | 43.3 | 50 | 56.6 | 63.3 | 66.6 |
1) What can be a cause for this effect? SPS.sub cycle time? EL2809 D-Ouput module operation speed (datasheet states that module switching time: typ. TON: 60 µs, typ. TOFF: 300 µs)?
2) Are there better way to do the task without adding additional software packages to kuka?
3) What additional package can help to overcome the "speed" problem? KUKA RSI may be?