ConfigureIo

Configures the settings of a simulated I/O module.

Syntax

KsError ConfigureIo(
     int Index,
     SlaveStatus Details
);

Parameters

Index: the index of a simulated I/O module. Indexes are zero based. Aliases affect this parameter.

Details: detailed information about the module. Before using this function, InputLength and OutputLength in the SlaveStatus structure must be filled in. The default value is zero if no value is set.

Return value

If the function succeeds, it returns errNoError, otherwise an error code. For more information about the error code, see the KsError list.

Remarks

This function is only available for use with simulated I/O modules. Simulated I/O modules must be created using SetConfiguredIoCount before they can be configured with ConfigureIo. This function must be called before Start, once the link is established simulated I/O modules cannot be modified.

Usable EtherCAT states

ecatOffline

Example

BOOL StartKingstar() {
   //Launch or connect to the KINGSTAR Subsystem process
   KsError nRet = errNoError;
   nRet = Create(INSTANCE, 0);

   SubsystemStatus Subsystem = { ecatOffline, ecatOffline, 0, 0, 0, 
	{ecatOffline}, {ecatOffline}, {axisOffline} };
   GetStatus(&Subsystem, NULL);
   if (Subsystem.State == ecatOP) {
      RtPrintf("Subsystem already started: %x\n", nRet);
      return TRUE;
   }
   else if (Subsystem.State != ecatOffline) {
      RtPrintf("Subsystem in unexpected state: %d\n", Subsystem.State);
      return FALSE;
   }

   //Configure the Subsystem settings
   nRet = SetCycleTime(cycle500);
   nRet = SetAxisAccessMode(accessPos);
   nRet = EnableServerLog(FALSE);
   nRet = EnableAxisInput(TRUE);
   nRet = EnableAxisOutput(FALSE);
   nRet = EnableSecondEncoder(FALSE);
   nRet = EnableActualVelocity(TRUE);
   nRet = EnableActualTorque(TRUE);
   nRet = EnableActualCurrent(TRUE);
   nRet = EnableFollowingError(TRUE);
   nRet = EnableMaxTorque(TRUE);
   nRet = EnableMaxCurrent(TRUE);
   nRet = EnableTorqueOffset(FALSE);
   nRet = EnableProfilePosition(FALSE);
   nRet = EnableSynchronizedControlMode(TRUE);
   nRet = EnableAutoRestart(TRUE);
   nRet = EnableAutoRepair(TRUE);
   nRet = EnableAutoConfig(TRUE);
   nRet = ConfigureDc(TRUE, TRUE, FALSE, 0);
   nRet = EnableHotConnect(TRUE);
   nRet = EnableRedundancy(TRUE);
   nRet = SetConfiguredAxesCount(1);
   nRet = SetConfiguredIoCount(3);
   SlaveStatus simulatedIo = { 0 };
   simulatedIo.InputLength = 16;
   simulatedIo.OutputLength = 16;
   for (int i = 0; i < IO_COUNT; i++) {
      nRet = ConfigureIo(i, simulatedIo);
   }

   SlaveStatus axisDefinition = { "Simulated Axis", 0 };
   ConfigureAxis(0, axisDefinition, 131072);

   //Start the EtherCAT network
   //This function is asynchronous so the network is not started yet when it returns
   KsCommandStatus status = WaitForCommand(30, TRUE, Start());

   return TRUE;
}

Requirements

  RT Win32
Minimum supported version 4.0 4.0
Header ksapi.h ksapi.h
Library KsApi_Rtss.lib KsApi.lib

See also

SetConfiguredIoCount