Jump to content
OMRON Forums

fipm

Members
  • Posts

    2
  • Joined

  • Last visited

Everything posted by fipm

  1. Hi, we are experiencing problems performing motion programs. We have implemented the kinematics of a SCARA robot. We have checked both forward and inverse kinematics in order to know they match. The 4 motors are configurated as phantom motors the same way this thread http://forums.deltatau.com/showthread.php?tid=193&highlight=phantom+motor Jogging motors works ok but motion programs disable InPos for a second and then return true without moving then and of course not being in the desired position. Here is the code: Forward Kinematics open forward (1) // Put Coordinate System number inside "(cs)" // --------------------User Code Goes Here------------------------ paramZ(0) = 2,0,0,2,0 paramX(0) = 0,3,2,0,0 angleHome(0)= KinPosMotor1,KinPosMotor2,KinPosMotor3,KinPosMotor4; DH(0)= 0,paramZ(0),0,0,angleHome(0),0,paramX(1),0,angleHome(1),0,paramX(2),0,0,-paramZ(3),0,0,angleHome(2),angleHome(3),0,0; fT01(0) = cosd(DH(0)), -cosd(DH(3))*sind(DH(0)), sind(DH(3))*sind(DH(0)), DH(2)*cosd(DH(0)), sind(DH(0)), cosd(DH(3))*cosd(DH(0)), -sind(DH(3))*cosd(DH(0)), DH(2)*sind(DH(0)), 0, sind(DH(3)), cosd(DH(3)), DH(1), 0, 0, 0, 1; fT12(0) = cosd(DH(4)), -cosd(DH(7))*sind(DH(4)), sind(DH(7))*sind(DH(4)), DH(6)*cosd(DH(4)), sind(DH(4)), cosd(DH(7))*cosd(DH(4)), -sind(DH(7))*cosd(DH(4)), DH(6)*sind(DH(4)), 0, sind(DH(7)), cosd(DH(7)), DH(5), 0, 0, 0, 1; fT23(0) = cosd(DH(8)), -cosd(DH(11))*sind(DH(8)), sind(DH(11))*sind(DH(8)), DH(10)*cosd(DH(8)), sind(DH(8)), cosd(DH(11))*cosd(DH(8)), -sind(DH(11))*cosd(DH(8)), DH(10)*sind(DH(8)), 0, sind(DH(11)), cosd(DH(11)), DH(9), 0, 0, 0, 1; fT34(0) = cosd(DH(12)), -cosd(DH(15))*sind(DH(12)), sind(DH(15))*sind(DH(12)), DH(14)*cosd(DH(12)), sind(DH(12)), cosd(DH(15))*cosd(DH(12)), -sind(DH(15))*cosd(DH(12)), DH(14)*sind(DH(12)), 0, sind(DH(15)), cosd(DH(15)), DH(13), 0, 0, 0, 1; fT45(0) = cosd(DH(16)), -cosd(DH(19))*sind(DH(16)), sind(DH(19))*sind(DH(16)), DH(18)*cosd(DH(16)), sind(DH(16)), cosd(DH(19))*cosd(DH(16)), -sind(DH(19))*cosd(DH(16)), DH(18)*sind(DH(16)), 0, sind(DH(19)), cosd(DH(19)), DH(17), 0, 0, 0, 1; MxMult = mmul(&fT02(0),&fT01(0),&fT12(0),4,4,4) MxMult = mmul(&fT03(0),&fT02(0),&fT23(0),4,4,4) MxMult = mmul(&fT04(0),&fT03(0),&fT34(0),4,4,4) MxMult = mmul(&fT05(0),&fT04(0),&fT45(0),4,4,4) KinPosAxisX = fT05(3); KinPosAxisY = fT05(7); KinPosAxisZ = fT05(11); KinAxisUsed=$1C0 close Inverse Kinematics open inverse (1) // Put Coordinate System number inside "(cs)" // --------------------User Code Goes Here------------------------ sA1 = (fT02(0) * fT01(1)) + (fT02(4) * fT01(5)) + (fT02(8) * fT01(9)); cA1 = (fT02(1) * fT01(1)) + (fT02(5) * fT01(5)) + (fT02(9) * fT01(9)); qA1 = atan2d(sA1,cA1); KinPosMotor1 = qA1; sA2 = (fT03(0) * fT02(1)) + (fT03(4) * fT02(5)) + (fT03(8) * fT02(9)); cA2 = (fT03(1) * fT02(1)) + (fT03(5) * fT02(5)) + (fT03(9) * fT02(9)); qA2 = atan2d(sA2,cA2); KinPosMotor2 = qA2; sA3 = (fT05(0) * fT04(1)) + (fT05(4) * fT04(5)) + (fT05(8) * fT04(9)); cA3 = (fT05(1) * fT04(1)) + (fT05(5) * fT04(5)) + (fT05(9) * fT04(9)); qA3 = atan2d(sA3,cA3); KinPosMotor3 = qA3; qA4 = fT05(11) - fT04(11); KinPosMotor4 = qA4; close Motion Program open prog 1 // --------------------User Code Goes Here------------------------ pmatch; inc; rapid; Coord[1].SegMoveTime = 5; // Segmentation time of 5 msec X2.63 Y4.05 Z-2 //A-90 B-87 C-90 close /****************************************/ Any suggestions? Thanks
  2. fipm

    Modbus refnum

    Hi, I am trying to establish Modbus communication between Power PMAC and a HMI. The HMI has an offset in the address of some of the variable types. For example, the float variables start in the 300000 register. Inputting Modbus Client On-Line Commands to the PMAC related with float variables returns me an error regarding the 'refnum' parameter. As I have checked in the documentation, the refnum range is 0 – 8191, so clearly does not match with HMI's. How could I solve this? Is it possible to add an offset? Thanks in advance
×
×
  • Create New...