I've implemented PID control logic in ABAQUS/Standard, but not in
Explicit. In Standard the problem is getting the degree-of-freedom
values you need as input to the control logic. One trick is to define a
dummy user-defined MPC that involves all of the input DOFs. Within the
MPC subroutine you can then retrieve the current DOF values and store
them in a COMMON block that is shared with the subroutine you are using
to define the response (DISP, DLOAD, DFLUX, etc.). Within the MPC
subroutine you simply set LMPC=0 to avoid actually enforcing any sort of
constraint.
Within Explicit it appears the problem may be easier. The VUAMP
subroutine provides access to a set of sensor values (history output
variables) that can be used as inputs to the control logic. You then
directly modify the amplitude definition associated with your load.
In either case, use of user-defined subroutines should be much more
efficient than any method the requires interrupting the solution process.
Regards,
Dave
-------------------------
Dave Lindeman
Lead Research Specialist
3M Company
3M Center 235-3F-08
St. Paul, MN 55144
651-733-6383
Clary, Chadd W wrote:
>
>
>
> Hello all-
>
> I was curious if anyone has experience/references for implementation of
> PID control systems into an Abaqus Explicit model. In my application,
> I'm controlling muscle activation signals to generate a desired motion
> of the lower limb. I'm currently using an external program (Matlab) to
> implement the controller, update amplitude cards, call abaqus using the
> RESTART command to evaluate the next step in the model, calculate error,
> then repeat on the next step. However, it seems like there should be a
> more efficient way using user-subroutines (like VDLOAD) to accomplish
> the same goal within Abaqus. Suggestions on implementation and
> efficiency from anyone with such experience would be greatly appreciated.
>
> Thanks in advance,
> Chadd Clary
>
> Post-Doctoral Research Associate
> University of Denver
>
>