Jump to content
OMRON Forums

Ether Ultralite to Geo Macro Drive driving BLDC Motor. No Commutation


Recommended Posts

I have followed all the manual information and information i could find online before posting here. I am trying to setup a Geo Macro Drive from an Ethernet Ultralite Control. I have the initial MACRO configuration up and working but cannot seem to drive the motor correctly.


I am able to see my encoder counts (1000 pulse per revolution). I also have my hall effect inputs wired in (I am not sure these are in the correct order as they are not labeled but i do see them change when manually moving the motor). I figured once i was able to have the motor running I could plot the hall inputs and figure out which is which.


The motors are only 24 volt 3 phase BLDC Nema 24 type motors. I have the drive hooked up to 120 volt and used Ixx66 to limit the voltage. According to the I6800* MotorVoltage/BusVoltage calculation.


I have tuned the current loop per another post i found and gotten an acceptable result based on the graphic in the Brick LV manual.


These are my current I variables that should matter for this post.


I201 = 3; commutation enabled at macro

;The following have been played with quite a bit and it still does not work.

I270 = 5; I counted the poles based on shaft rotation at it feels like 5 pairs.

I271 = 100; 100 pulses per N at 1000 pulses per commutation.

I272 = 1365 ; If i set it to 683 it faults the drive with over current. I can re-tune my current gains but it still doesn't work.

I282 = $78426

I283 = $3504 ; Encoder Channel for Macro #2

I284 = $FFF000


If i try to open loop the motor it just vibrates the shaft back and forth. I can modify the number of poles vs commutaion counts per N and get different vibrations even one that roughly steps through a rotation.


I wrote a manual PLC to step through the commutation by disabling the motor and commutation and pushing values into the 3 PWM registers and I can get the motor to rotate although it looks more like a rough stepper motor when rotating through the phases.


I know my amplifier is able to output the PWM signal to the drive as i checked for output with an oscilloscope on each leg to ground.


As i understand the operation of this amplifier it should be outputting a holding voltage and then a sinusoidal wave on top of that to move the motor when the loop is closed.


Any additional advice as to what i am doing wrong would be appreciated. I am wondering if there is some MACRO variables inside the drive that need to be set that i am missing?

Link to comment
Share on other sites

  • Replies 6
  • Created
  • Last Reply

Top Posters In This Topic



I connected the drive to 240 Volts Single Phase AC as specified in the manual. I assumed since i was driving such a small motor that rectifying 120 Volts would be sufficient on the DC bus to drive the motor.


I also found a post that stated the Geo Drive had a fixed value for computing Ixx66 so I recalculated the value based on my motors and attempted to do an open loop move. I still only get a slight movement in the rotor that is reflected on the position screen but instead of vibrating now the motor locks into position and does not vibrate but still does not rotate.


I also changed the Commutation position back to the default counts memory location. I better understand why the commutation counts need to be multiplied up because it is looking at the raw counts and not the encoder conversion table.


I just wanted to update the Voltage and Settings for anyone that might have an idea what i am doing wrong.

Link to comment
Share on other sites



Thank you for your reply.


The GEO MACRO DRIVE manual is the one I was using and I did the original setup based on the brushless motor portion of the manual. After that did not work I started reading the commutation section of the Turbo PMAC User guide and then after many hours of unsuccessful commutation attempts I went on to look through the forum and other manuals and settings to see if there was anything I could gleam useful.


Again I tried the manual example below and the motor steps through once revolution when this is run 5 times. As I understand from the manual that if 1 step of this = 1/2 Turn that is a 4 pole motor. So if 1 step of this = 1/5 Turn Then I must have a 10 pole motor and i270 should be set = 5. Also my encoder is equal to 1000 counts per revolution *32 for the Macro drive and that should be i271=32,000. My phase angle i272 is set to 1365. My comutation i201=3 so it will look at the Y register of i283 which is set to the macro node $78424 and I am monitoring that with M variable 201 and it represents 32000 counts per rotation when manually moved or if the program below is cycled 5 times.


m202=0 m204=i6800/10 m207=-i6800/10 ; Step 1: A0, B+, C-: 0oelec.

m202=i6800/10 m204=0 m207=-i6800/10 ; Step 2: A+, B0, C-: 60oelec.

m202=i6800/10 m204=-i6800/10 m207=0 ; Step 3: A+, B-, C0: 120oelec.

m202=0 m204=-i6800/10 m207=i6800/10 ; Step 4: A0, B-, C+: +180oelec.

m202=-i6800/10 m204=0 m207=i6800/10 ; Step 5: A-, B0, C+: -120oelec.

m202=-i6800/10 m204=i6800/10 m207=0 ; Step 6: A-, B+, C0: -60oelec.

m202=0 m204=i6800/10 m207=-i6800/10 ; Step 1: A0, B+, C-: 0oelec.


On thing I don't understand is how the M-Vars m204,m205 and 207,m206 are set the same based on the Example in the manual?

Once I apply the M-Var Definitions below.


M201->Y:$078424,0,24,S ; Channel 2 Encoder position register (read only)

M202->Y:$078424,8,16,S ; Channel 2 PWM Phase A command value (write only)

M204->Y:$078425,8,16,S ; Channel 2 PWM Phase B command value (write only)

M207->Y:$078426,8,16,S ; Channel 2 PWM Phase C command value (write only)

M205->Y:$078425,8,16,S ; Channel 2 Phase A ADC input value (read only)

M206->Y:$078426,8,16,S ; Channel 2 Phase B ADC input value (read only)

M214->X:$003441,14 ; Channel 2 Amp Enable command bit


m202 is always at -8,

m204,m205 bounces between -16/-48 all the time,

m206,207 bounces between +16,48


Even when the motor and commutation variables are set to 0. They still bounce and unlike the manual when I write 0 values into them the motor rests but those values are never displayed in my M-Variables. I'm assuming the processor is handling some type of read write function over MACRO where a read to that location returns the ADC value and a write to it sends a PWM command value. That is just my assumption.


When running the code above the M-Vars reports feedback values from the ADC that I push into the variables but never truly represent the value i write into the m202,m204,m207 but i know that is working because the motor rotates based on the PLC i wrote that adds 1 second delay at each electrical cycle and a 3 second delay before running it again.


If everything is enabled and i issue a #2o5 command. The variables seem to lock in but i would expect them to shift in order to commutate the motor?


M202= -4

M204 =800 to 864 (bouncing)

m206 =-1360 to -1408 (bouncing)


again m204,m205 and m206,207 read the same in the watch window.


Again. I'm sure I am missing some small setting somewhere but am not sure what that is. Is there a frequency setting for the commutation? Is it possible the commutation is running so fast it locks in or is not even stepping through the commutation cycle?


I appreciate your time.


Link to comment
Share on other sites



Just thought I would post that I figured out my issue. It turned out the the phase leads on the motor I was using where not labeled correctly. I swapped two of the phases and open loop worked right away.


All my commutation settings where correct I just didn't have the motor connected correctly. I was trusting that the wire labels on the motor leads where correct.


I tuned my current loop and then figured out the hall effect sensors. I used HallsUVW to setup my power on phase positioning. Then ran the Auto tune and fine tuned the gains that motor is working perfect.


Thank You,

John Beasley


Link to comment
Share on other sites

This topic is now closed to further replies.

  • Create New...