.

Dedicated Motor I/O

These dedicated I/O bits have specific motion related functions. Many of the dedicated I/O signals are directly connected to pins on external connectors (Home, HW Limit+) but some are connected to internal functions on the node (Amp Active, Feedback Fault Primary) and do not have direct external connections.

The dedicated input bits are

Input Bit
Description
IN0
Amp Fault
IN1
Brake Applied
IN2
Home
IN3
HW Limit +
IN4
HW Limit –
IN5
Index Primary
IN6
Feedback Fault
IN7
Captured
IN8
Hall A
IN9
Hall B
IN10
Hall C
IN11
Amp Active
IN12
Index Secondary
IN13
Amp Warning
IN14
Autonomous Drive Action
(Drive Status Bit 9)
IN15
Drive Specific
(Drive Status Bit 10)
IN16

Primary position feedback fault

IN17

Secondary position feedback fault

There are two dedicated output bits. Because the function of these bits are dedicated the state of the output can only be monitored and not directly set. These bits are autonomously being controlled by the motion controller.

Output Bit
Description
OUT0
Amp Enable
OUT1
Brake Release

Each type of SynqNet node does not support all these dedicated I/O bits. For example the RMB-10V2 node from MEI supports the following set of dedicated I/O.

Input Bit
Description
Supported
Motor 0 External Pins on J0_1
IN0
Amp Enable
Y
12 & 46
IN1
Brake Applied
Y
Internal*
IN2
Home
Y
7 & 43
IN3
HW Limit +
Y
8& 43
IN4
HW Limit –
Y
9& 43
IN5
Index Primary
Y
Internal
IN6
Feedback Fault
Y
Internal
IN7
Captured
N
IN8
Hall A
N
IN9
Hall B
N
IN10
Hall C
N
IN11
Amp Active
N
IN12
Index Secondary
Y
IN13
Warning
N
IN14
Autonomous Drive Action
(Drive Status Bit 9)
N
IN15
Drive Specific
(Drive Status Bit 10)
N
OUT0
Amp Enable
Y
13 & 47
OUT1
Brake Release
Y
Internal*

* On the RMB nodes from MEI, both the Brake Applied and Brake Release signals do not have a dedicated I/O pins available, but some of the general purpose I/O pins can be configured to input / output signals. See the next section on general purpose I/O.

What Dedicated I/O is Supported?

The MPIMotorInfo structure returned from the mpiMotorInfo function can be used to report which of the dedicated I/O bits are supported by the current nodes connected to the system

typedef struct MPIMotorInfoDedicatedIn {
long supported;
} MPIMotorInfoDedicatedIn;

typedef struct MPIMotorInfoDedicatedOut {
long supported;
} MPIMotorInfoDedicatedOut;

typedef struct MPIMotorInfo {
...
MPIMotorInfoDedicatedIn dedicatedIn[MPIMotorDedicatedInLAST];
MPIMotorInfoDedicatedOut dedicatedOut[MPIMotorDedicatedOutLAST];
} MPIMotorInfo;

The following two enumerations are provided to give descriptive names when accessing this structure.

typedef enum {
MPIMotorDedicatedInINVALID = -1,

MPIMotorDedicatedInAMP_FAULT = 0,
MPIMotorDedicatedInBRAKE_APPLIED = 1,
MPIMotorDedicatedInHOME = 2,
MPIMotorDedicatedInLIMIT_HW_POS = 3,
MPIMotorDedicatedInLIMIT_HW_NEG = 4,
MPIMotorDedicatedInINDEX_PRIMARY = 5,
MPIMotorDedicatedInFEEDBACK_FAULT = 6,
MPIMotorDedicatedInCAPTURED = 7,
MPIMotorDedicatedInHALL_A = 8,
MPIMotorDedicatedInHALL_B = 9,
MPIMotorDedicatedInHALL_C = 10,
MPIMotorDedicatedInAMP_ACTIVE = 11,
MPIMotorDedicatedInINDEX_SECONDARY = 12,
MPIMotorDedicatedInWARNING = 13,
MPIMotorDedicatedInDRIVE_STATUS_9 = 14,
MPIMotorDedicatedInDRIVE_STATUS_10 = 15,

MPIMotorDedicatedInLAST,
MPIMotorDedicatedInFIRST = MPIMotorDedicatedInINVALID + 1,
} MPIMotorDedicatedIn;


typedef enum {
MPIMotorDedicatedOutINVALID = -1,

MPIMotorDedicatedOutAMP_ENABLE = 0,
MPIMotorDedicatedOutBRAKE_RELEASE = 1,

MPIMotorDedicatedOutLAST,
MPIMotorDedicatedOutFIRST = MPIMotorDedicatedOutINVALID + 1,
} MPIMotorDedicatedOut;

The following code shows how to read the motor information can be used to check if a node supports the positive hardware limit input.

MPIMotorInfo motorInfo;
mpiMotorInfo( motor0, &motorInfo );

long supported = motorInfo.dedicatedIn[MPIMotorDedicatedInLIMIT_HW_POS].supported;

The following table shows what would be returned if motor 0 were connected to a standard RMB-10V.

Input/Output Bit
Return
motorInfo.dedicatedIn[0].supported
1
motorInfo.dedicatedIn[1].supported
1
motorInfo.dedicatedIn[2].supported
1
motorInfo.dedicatedIn[3].supported
1
motorInfo.dedicatedIn[4].supported
1
motorInfo.dedicatedIn[5].supported
1
motorInfo.dedicatedIn[6].supported
1
motorInfo.dedicatedIn[7].supported
0
motorInfo.dedicatedIn[8].supported
0
motorInfo.dedicatedIn[09].supported
0
motorInfo.dedicatedIn[10].supported
0
motorInfo.dedicatedIn[11].supported
0
motorInfo.dedicatedIn[12].supported
1
motorInfo.dedicatedIn[13].supported
0
motorInfo.dedicatedIn[14].supported
0
motorInfo.dedicatedIn[15].supported
0
motorInfo.dedicatedOut[0].supported
1
motorInfo.dedicatedOut[1].supported
1

Accessing Dedicated I/O

The dedicated I/O bits can be accessed using the following two MPI functions:
- mpiMotorDedicatedIn
- mpiMotorDedicatedOutGet

There is no MPI function to directly control the dedicated outputs: these dedicated outputs are being automomously controlled by the controller. The amp enable and brake dedicated outputs are both indirectly controlled by the mpiMotorAmpEnableGet / mpiMotorAmpEnableSet functions.

The MPIMotorDedicatedIn and MPIMotorDedicatedOut enumeration can also be used with these functions to provide help the readability of the code.

These functions take two arguments, bitStart and bitCount, which allow either a single bit to be accessed (when bitCount equals one) or multiple adjacent bits to be accessed (bitCount greater than one).

The following code shows how to get the state of the positive hardware limit input.

unsigned long x;
mpiMotorDedicatedIn( motor0, MPIMotorDedicatedInLIMIT_HW_POS, 1, &x );

The next piece of code shows how to get the state of all the dedicated inputs:

unsigned long x;
mpiMotorDedicatedIn( motor0, 0, MPIMotorDedicatedInLAST, &x );

       Legal Notice  |  Tech Email  |  Feedback
      
Copyright ©
2001-2021 Motion Engineering