MotionController Class Reference

The MotionController Class is the software representation of the hardware object. It handles SynqNet controller firmware, SynqNet network, interrupts, controller io, recorders and sequencers. In every application it is used to initialize your controller, axes, and io.
MotionController has access to RapidCodeOS functions by controllerName->OS->osFunctionName. More...

Inherits RapidCodeInterrupt.

List of all members.


Creation and Initialization

static MotionControllerCreate ()
 Initialize a PCI board Motion Controller.
static MotionControllerCreateFromBoard (long boardNumber)
 Initialize a PCI board Motion Controller.
static MotionControllerCreateFromServer (char *server, long serverPort)
 Initialize a SynqNet controller in another computer on a TCP/IP network.
static MotionControllerCreateFromFile (char *fileName)
RSIIMotionControllerInitializationState InitializationStateGet ()
IOIOGet (long nodeNumber)
 IOGet returns a pointer to an IO object using its node number.
AxisAxisGet (long axisNumber)
 AxisGet returns a pointer to an axis using its logical number.
MultiAxisMultiAxisGet (Axis *firstAxis)
 MultiAxisGet returns a pointer to a MultiAxis object.
MultiAxisMultiAxisGet (Axis *firstAxis, long msNumber)

Action

void Reset ()
 Reset (power cycle) the controller.
void Refresh ()

Configuration and Info

RSIControllerType ControllerTypeGet ()
char * ServerNameGet ()
long ServerPortGet ()
long NumberGet ()
RSIProcessorType ProcessorTypeGet ()
 Get the processor type.
double ProcessorUsageGet ()
 Get the processor usage percent.
long SerialNumberGet (void)
 Get the controller's serial number.
long RsiIdGet (long data)
void RsiIdSet (long RsiId, long data)
long MemoryGet (long address)
 Read controller memory.
void MemoryBlockGet (long address, void *data, long size)
 Read controller memory.
void MemorySet (long address, long data)
 Write a value to controller memory.
void MemoryBlockSet (long address, void *data, long size)
 Set controller memory.
long AddressFromStringGet (char *addressName, char *mapFileName)
 Get a controller memory address from string.
char * StringFromAddressGet (long address, char *mapFileName)
long AddressGet (RSIControllerAddressType type)
 Get the an address for some location on the MotionController.
long FirmwareAddressGet (long hostAddress)
 Convert a host controller address to a firmware address.
long HostAddressGet (long firmwareAddress)
 Convert a firmware address to a host controller address.
long SampleCounterGet ()
 Get the current value of the controller's processor's sample counter.
long BackgroundCycleCounterGet ()
 Get the current value of the controller's processor's background cycle counter.
void SampleRateSet (double sampleRate)
 Set the controller's sample rate.
double SampleRateGet ()
 Get the controller's sample rate.
long AxisCountGet ()
 Get the number of axes processing.
void AxisCountSet (long axisCount)
 Set the number of processed axes in the controller.
void AxisCountSet (long axisCount, bool setMotorFilterSupervisor)
long MotionCountGet ()
 Get the number of Motion Supervisors available in the firmware.
void MotionCountSet (long motionCount)
 Set the number of processed Motion Supervisors in the controller.
long SequencerCountGet ()
 Get the number of Sequencer available in the firmware.
void SequencerCountSet (long sequencerCount)
 Set the number of processed Sequencers in the controller.
long RecorderCountGet ()
 Get the number of Recorder available in the firmware.
void RecorderCountSet (long recorderCount)
 Set the number of processed Recorders in the controller.
long UserVersionGet ()
 Get a customer designated Version for the application.
void UserVersionSet (long version)
 Sets a customer designed Version for the application.
long ExternalMemorySizeGet ()

I/O

bool DigitalInGet (long bitNumber)
 Get the state of a digital input bit.
bool DigitalOutGet (long bitNumber)
 Get the state of a digital output.
void DigitalOutSet (long bitNumber, bool value)
 Set a digital output state.

Firmware

char * MpiVersionGet ()
 Get the MPI version.
bool SynqNetOlderThan (char *evalVersion)
long MpiFirmwareVersionGet ()
 Get firwmare version required by this MPI version.
long FirmwareVersionGet ()
 Get the firmware version.
char FirmwareRevisionGet ()
 Get the firmware revision.
long FirmwareSubRevisionGet ()
 Get the subrevision number of the firmware.
long FirmwareDevelopmentIDGet ()
 Get the development ID of the firmware.
long FirmwareOptionGet ()
 Get the firmware option number.
void FirmwareUpload (char *fileName)
 Upload a firmware file (*.bin) from the controller.
void FirmwareDownload (char *fileName)
 Download a firmware file to the controller.
bool HasMechaWare ()

SynqNet

void SynqNetInit ()
 Initialize the SynqNet network.
void SynqNetShutdown ()
 Shutdown the SynqNet network.
void SynqNetTopologySave ()
 Save the SynqNet network topology to flash memory.
void SynqNetTopologyClear ()
 Clear the SynqNet topology.
RSISynqNetState SynqNetStateGet ()
 Get the SynqNet state.
bool SynqNetTopologySavedGet ()
 Determine if the SynqNet topology is saved in flash memory.
bool SynqNetRecoveryEventGet ()
 Determine if the SynqNet network performed a recovery.
bool SynqNetDeadEventGet ()
 Determine if a SynqNet dead event occured.
bool SynqNetRxFailureEventGet ()
 Determine if a receive failure event occured.
bool SynqNetTxFailureEventGet ()
 Determine if a SynqNet transmit failure occured.
bool SynqNetNodeFailureEventGet ()
 Determine if a SynqNet node failed.
long SynqNetCRCErrorOutGet ()
 Get the CRC Error Out count.
long SynqNetCRCErrorInGet ()
 Get the CRC Error In count.
long SynqNetFailedNodeMaskGet ()
 Gets the Failed Node mask.
RSINetworkType SynqNetNetworkTypeGet ()
 Get the network topology type.
long SynqNetNodeCountGet ()
 Get the number of total nodes (Axis and I/O) on the SynqNet network.
long SynqNetIONodeCountGet ()
 Get the number of I/O nodes on the SynqNet network.
long SynqNetNodeOffsetGet ()
 Get the starting node offset for this SynqNet network.
RSISynqNetRecoveryMode SynqNetRecoveryModeGet ()
 Get the recovery mode type of the SynqNet network.
void SynqNetRecoveryModeSet (long RSISynqNetRecoveryMode)
 Set the recovery mode the SynqNet network.
RSISynqNetCableStatus SynqNetIdleCableStatusGet ()
 Gets the status of idle cable.
long SynqNetIdleCableNumberGet ()
 Gets the number of the idle cable or failed cable if in recovery.
void SynqNetHotReplaceRestart ()

Gantry Configuration

void GantryConfigSet (long firstMotorNumber, long secondMotorNumber)

Interrupts

void InterruptEnableSet (bool enable)
 Control interrupts for this class.
void InterruptWake ()
 Wake all threads waiting for a controller interrupt.
void ServiceThreadEnableSet (bool enable)
bool ServiceThreadStateGet ()
RSIEventType InterruptWait (long milliseconds)
 Suspend the current thread until an interrupt arrives from the controller.
char * InterruptNameGet ()
 Get the text name of an interrupt type.
long InterruptSampleTimeGet ()
 Get the sample timer value when the last interrupt was generated.
long InterruptSourceNumberGet ()
 Get the number (or index) of the object (Axis, Motor, etc) that generated the interrupt.
long InterruptMotionIdGet ()
void InterruptMaskClear ()
void InterruptMaskAllSet ()
void InterruptMaskOnSet (RSIEventType eventType)
void InterruptMaskOffSet (RSIEventType eventType)
bool InterruptMaskOnGet (RSIEventType eventType)
virtual void InterruptMaskSet ()

SyncInterrupt Real Time Operating System required

void SyncInterruptEnableSet (bool enable)
 Configure Sync (periodic) interrupts for the controller.
void SyncInterruptPeriodSet (long samples)
 Configure the period for the Sync Interrupt on the controller.
long SyncInterruptWait ()
 Suspend the current thread until an interrupt arrives from the controller.
long SyncInterruptHostProcessTimeGet ()
 Get the total number of microseconds availble for host processing.
long SyncInterruptHostProcessFlagGet ()
void SyncInterruptHostProcessFlagSet (bool value)
 Set the Host Process flag.
bool SyncInterruptHostProcessStatusBitGet ()
 See if the host was processing too long on previous Sync Interrupt.
void SyncInterruptHostProcessStatusClear ()
 Clear the Host Process status bit.

Recorder

void RecorderPeriodSet (long samples)
 Set the number of samples between records.
void RecorderPeriodSet (long recorderNumber, long samples)
void RecorderCircularBufferSet (bool enable)
 Configure recorder as circular buffer (or not).
void RecorderCircularBufferSet (long recorderNumber, bool enable)
void RecorderDataCountSet (long count)
 Set the number of data values to be recorded.
void RecorderDataCountSet (long recorderNumber, long count)
void RecorderDataAddressSet (long index, long address)
 Setup the addresses to be recorded.
void RecorderDataAddressSet (long recorderNumber, long index, long address)
void RecorderConfigureToTriggerOnMotion (Axis *axis, bool triggerOnMotion)
 Setup the recorder to trigger on motion.
void RecorderConfigureToTriggerOnMotion (long recorderNumber, Axis *axis, bool triggerOnMotion)
void RecorderConfigureToTriggerOnMotion (MultiAxis *multiAxis, bool triggerOnMotion)
void RecorderConfigureToTriggerOnMotion (long recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion)
bool RecorderEnabledGet ()
 Determine if the recorder is recording.
bool RecorderEnabledGet (long recorderNumber)
long RecorderRecordCountGet ()
 Get the number of records that are stored and ready for reading.
long RecorderRecordCountGet (long recorderNumber)
long RecorderRecordMaxCountGet ()
 Get the maximum number of records the recorder can store.
long RecorderRecordMaxCountGet (long recorderNumber)
void RecorderStart ()
 Start recording data.
void RecorderStart (long recorderNumber)
void RecorderStop ()
 Stop recording data.
void RecorderStop (long recorderNumber)
long * RecorderRecordDataGet ()
 Get one record of recorded data.
long * RecorderRecordDataGet (long recorderNumber)
void RecorderRecordDataRetrieve ()
 Retrieve one record of recorded data.
void RecorderRecordDataRetrieve (long recorderNumber)
long RecorderRecordDataValueGet (long index)
 Get one value from a retrieved record.
long RecorderRecordDataValueGet (long recorderNumber, long index)
void RecorderBufferHighCountSet (long bufferHighCount)
 Set the high count for the recording buffer.
void RecorderBufferHighCountSet (long recorderNumber, long bufferHighCount)
void RecorderReset ()
 Reset the recorder.
void RecorderReset (long recorderNumber)
long RecorderBufferSizeGet (long recorderNumber)
 Get Frame buffer size for the Recorder.
void RecorderBufferSizeSet (long recorderNumber, long bufferSize)
 Set buffer size for the Recorder.

Sequencer

void SequencerEnableSet (long sequencerNumber, bool state)
 Enable or Disable a Sequencer.
long SequencerStart (long sequencerNumber)
 Start a Sequencer.
long SequencerStop (long sequencerNumber)
 Stop a Sequencer.
RSISequenceState SequencerStateGet (long sequencerNumber)
 Get the state of a Sequencer.
long CommandWaitLong (long sequencerNumber, RSICommandOperator commandOperator, long address, long value)
 Append a command which will wait on a 32-bit long value.
long CommandComputeLong (long sequencerNumber, RSICommandOperator commandOperator, long inputAddress, long outputAddress, long value)
 Append a command which will perform a computation on a 32-bit long value.
long CommandDelay (long sequencerNumber, double seconds)
 Append a command which will delay execution of the next command.
void CommandMoveVelocity (long sequencerNumber, Axis *axis, double velocity, double acceleration, double jerkPercent)
 Append a command which starts a Velocity move.
void CommandMoveSCurve (long sequencerNumber, Axis *axis, double position, double velocity, double acceleration, double jerkPercent)
 Append a command which starts an abosolute position move.
void CommandAction (long sequencerNumber, Axis *axis, RSICommandMotion action)
 Append a command which generates an event on an axis.
void CommandAction (long sequencerNumber, MultiAxis *MultiAxis, RSICommandMotion action)

Flash

void SaveToFlash ()
 Save controller configurations to flash memory.

Custom 97 Firmware

long Custom97VersionGet ()
 Get the Custom 97 feature version.
void Custom97WaitTimeSet (long cycles)
 Set the number of cycles to strecth the HostProcessTime.
void Custom97ReadCountSet (long count)
 Set the number of values to read from the SynqNet buffer.
void Custom97ReadPtrSet (long index, long firmwareAddress)
 Specify the firmware address to read.
void Custom97WriteCountSet (long count)
 Set the number of values to write to the SynqNet buffer.
void Custom97WritePtrSet (long index, long firmwareAddress)
 Specify the firmware address where the data will be written.
void Custom97ReadDataGet (void *values, long byteCount)
 A super-fast method to read a block of data from Custom97 read buffer.
void Custom97WriteDataSet (void *values, long byteCount)
 A super-fast method to copy data from the Host PC to the Custom97 Write buffer.

Errors and Exceptions

long ErrorLogCountGet ()
 Get the number of software errors in the error log.
RsiErrorErrorLogGet ()
 Get the next RsiError in the log.
void ErrorLogClear ()
 Clear the error log.
char * RsiErrorMessageGet (RSIErrorMessage msg)
char * ErrorMessageGet (RSIErrorMessage msg)
void ErrorMsgCheck (RapidCodeObject *object, RSIErrorMessage msg, const char *function, long line)
void ErrorMsgCheck (RapidCodeObject *object, RSIErrorMessage msg, const char *text, const char *function, long line)

Exceptions Enabled

void ThrowExceptions (bool state)
 Configure a class to throw exceptions.

RapidCode Version

char * VersionGet ()
 Get the RSI RapidCode version.

Detailed Description

To initalize your controller:
///  controllerName = MotionController::CreateFromBoard(RSI_PCI_BOARD_NUMBER); 
The following shows RapidSetup Controller usage. You can easily do most of the following using RapidCode.
controller.jpg

MotionController as seen in the RapidSetup utility

Examples:

absoluteMotion.cpp, AxisSwitchID.cs, Camming.cs, Capture.cpp, configAmpFault.cpp, controllerInterrupts.cpp, custom97.cpp, customHome.cpp, driveMonitor.cpp, errorLog.cpp, Gantry.cs, gear.cpp, hardwareLimits.cpp, home.cpp, IOPoint.cs, IOPointInterrupts.cs, loadFirmware.cpp, memory.cpp, MotionFinalVelocity.cs, MotionHoldMultiAxisHomeSwitch.cs, motorfeedback.cpp, multiaxisMotion.cpp, multipleControllers.cpp, pathMotion.cpp, pvtMotion.cpp, recorder.cpp, RecorderInterrupts.cs, RecordOnMotion.cs, relativeMotion.cpp, sequencerDigitalOutput.cpp, settleCriteria.cpp, SliceCounter.cs, SliceIO.cs, stoprate.cpp, syncInterrupt.cpp, SynqNetOk.cpp, template.cpp, userLimit.cpp, userLimitDigitalInputAction.cpp, userLimitGainChangeBasedOnPosition.cpp, userLimitStateAction.cpp, verifyApp.cpp, and watchdog.cpp.


The documentation for this class was generated from the following files: