Jump to content
OMRON Forums

christerron

Members
  • Posts

    5
  • Joined

  • Last visited

Posts posted by christerron

  1. Hello,

    I am currently trying to install a newer firmware on my Powerbrick system. I currently have firmware 2.0.0.1-465 installed and it seems to be working alright. I am now attempting to upgrade firmware to 2.0.2.14-465 (in which our configuration projects are compatible with), but I cannot seem to get it to work.

     

    I get the following message when attepmting to do it with via ssh:

     

    192.168.0.200:/opt/ppmac# dpkg -i /var/ftp/usrflash/powerpmac.deb
    Selecting previously unselected package powerpmac465.
    (Reading database ... 16748 files and directories currently installed.)
    Unpacking powerpmac465 (from .../var/ftp/usrflash/powerpmac.deb) ...
    Creating backup package of current system - preinst
    dpkg-deb: building package `powerpmac' in `/tmp/debian.deb'.
    Stopping ethercat subsystem - preinst
    /opt/etherlab/etc/sysconfig/ethercat not existing
    Making disk writable - preinst
    AMP862xxxvB Installation
    dpkg: error processing /var/ftp/usrflash/powerpmac.deb (--install):
    unable to stat `./usr/bin/fw_setenv' (which I was about to install): Input/output error
    postrm...
    Errors were encountered while processing:
    /var/ftp/usrflash/powerpmac.deb
    

     

    I am not entirely sure of how to proceed from here. Anyone else have seen something similar?

     

    Best Regards,

    Christer

  2. Does the analog PMAC output to the piezo driver represent a desired position?...

     

    Yes!

     

    ...does the piezo driver (attempt to) close the loop between the command value from the controller and the feedback value from the sensor?...

     

    Also yes!

     

    Ok thanks for your input, I will try the Sys.PosCtrl configuration instead!

     

    Edit1:

    So I tried the Sys.PosCtrl config, but I still have the same error. The Motor[x].DesPos is still drifting (but now at least the motor isn't attempting to follow the reference trajectory)

     

     

    Edit2:

    So I have included two screenshots of the watch containing the three factors that can change DesPos (Desired.Pos, ActiveMasterPos, CompDesPos), with motor OFF (left) and motor ON (to the right, with drifts). This is a configuration using Sys.ServoCtrl

    As one can see (in the second picture, to the right), when the motor is ON and DesPos is drifting, but NOT Desired.Pos. How come?

    piezo1.PNG.ac6c96a4f1c17acfb0647a1c03e064e3.PNG

    piezo2.PNG.94755880a1f01d69c1fbdcd9d92ab5dd.PNG

  3. When the servo loop is open (amp enabled or disabled), PMAC copies the value of ActPos into DesPos every servo cycle (so there is no jump when the loop is closed again).

     

    If the step move size exceeded your fatal following error limit, it could immediately have tripped the motor opening the loop.

     

    With a piezo actuator, it appears you are trying to output a position command, but still close the position loop inside the PMAC. The dynamics of this are very unusual. Which PMAC servo algorithm are you using (Motor[x].Ctrl)?

     

    I suspect your loop is open, and then you have a strange case of the desired position "chasing" the actual position each servo cycle.

     

    Hi Curt and thanks for your response,

    Yes, it would indeed seem that my 'closed-loop' configuration sometimes doesn't completely apply. The odd thing, is that sometimes it handles the closed-loop control just fine.

    oh, and it seems that 'Motor[2].Ctrl=Sys.ServoCtrl'. I also included my configuration below. I am going to run a few more tests..

     

     

    EncTable[2].pEnc = PowerBrick[0].Chan[2].AdcAmp[2].a;
    EncTable[2].pEnc1 = Sys.pushm;
    EncTable[2].index1 = 16;
    EncTable[2].index2 = 16;
    EncTable[2].index3 = 0;
    EncTable[2].index4 = 0;
    EncTable[2].index5 = 0;
    EncTable[2].index6=0;
    EncTable[2].ScaleFactor = 10000 / EXP2(16) / 32767;
    
    Motor[2].pEnc = EncTable[2].a;
    Motor[2].pEnc2 = EncTable[2].a;
    Motor[2].PosSf = 1;
    Motor[2].Pos2Sf = 1;
    Motor[2].pAbsPos = PowerBrick[0].Chan[2].AdcAmp[2].a;
    Motor[2].AbsPosFormat=$00002000;
    Motor[2].AbsPosSf= 10000 / exp2(16) / 32767;
    Motor[2].PowerOnMode= Motor[2].PowerOnMode | Bit2 | Bit1;
    
    
    PowerBrick[0].DacStrobe = $7FFFE000;
    PowerBrick[0].Chan[0].OutputMode |= 7;
    PowerBrick[0].Chan[1].OutputMode |= 7;
    PowerBrick[0].Chan[2].OutputMode |= 7;
    PowerBrick[0].Chan[3].OutputMode |= 7;
    PowerBrick[0].Chan[1].OutputPol = 0; // True DAC output on PBR CTRL can not be inversed.
    
    Motor[2].Ctrl = Sys.ServoCtrl; 
    Motor[2].ServoCtrl = 1;
    Motor[2].PhaseCtrl = 0;   
    Motor[2].AdcMask = $FFF00000;
    Motor[2].pAdc  =0;    
    Motor[2].pDac = PowerBrick[0].Chan[1].Dac[0].a;
    Motor[2].pLimits = 0;  
    Motor[2].pAmpEnable=PowerBrick[0].Chan[1].OutCtrl.a;  
    Motor[2].pAmpFault=PowerBrick[0].Chan[1].OutCtrl.a;
    Motor[2].AmpFaultLevel = 1;
    Motor[2].PwmSf = 32767;
    Motor[2].MaxDac = 32767 * (6/10);
    Motor[2].DacBias = 32767 * (4/10);
    Motor[2].FaultMode = 0;
    Motor[2].AmpEnableBit = 8;
    Motor[2].AmpFaultBit = 7;
    Motor[2].LimitBits = 9;
    

  4. Hello,

    I am currently attempting to control a piezo-driver using the Powerbrick Controller. Now, since the piezo-driver accepts an analog signal of -2==> +10V, and also outputs an analog feedback signal between 0=> +10V I decided to use the following configuration:

    - Powerbrick output: True DAC (single ended) with modified DacBias and MaxDac to keep within the -2 => +10V voltage range (same config as in page 145 of the Powerbrick Controller Manual)

    - Powerbrick input: ADC (single ended) via X10 connector (same config as in page 76 of the Powerbrick Controller Manual)

     

    After having set the configuration, I can freely output anything open loop (ex. #2out100), of which the ADC input shows a corresponding value holding constant while my command remains unchanged.

     

    Sometimes (roughly 50% of the time) when I close the loop, I will have a drifting Motor[x].DesPos, despite not having commanded a movement. And since the motor is in closed loop, it will follow this 'drifting' trajectory indefinitely. I have included a screenshot of the 'drifting', here during a step move.

    If Motor[x].DesPos is driftin, there could be three possible causes to this:

    - Motor[x].Desired.Pos ==> NOT the source, holds constant

    - Motor[x].ActiveMasterPos ==> NOT the source, holds constant

    - Motor[x].CompDesPos ==> NOT the source, holds constant

     

    Therefore this little problem leaves me abit stumped. Has anyone else encountered a similar problem?

     

     

    Thanks in advance,

    Christer

    Capture.PNG.ec93a5a73eb037da1f2719a1d4d24a75.PNG

  5. Got a similar problem, but was a different filename. Got the following error:

    ---------------

    Error: loading File: "lesspp_enum.txt"

    ---------------

     

    After having gone through the project, it seems that the error came from too long names in the subprogram. In my case I had used the following:

    --------------------

    'open subprog lib_mtrsetup_02_mtr_02_servobrushless';

    ----------------------

     

    after I changed the name to 'lib_mtrsetup_02_mtr_02_brushless', the error went away.

×
×
  • Create New...