@kuriousdesign/machine-sdk 1.0.65 → 1.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish.yml +28 -0
- package/README.md +28 -51
- package/dist/custom-types/BaseDevice/Device.d.ts +1 -1
- package/dist/custom-types/BaseDevice/Device.js +1 -1
- package/dist/custom-types/BaseDevice/index.d.ts +1 -0
- package/dist/custom-types/BaseDevice/index.js +1 -0
- package/dist/custom-types/Devices/Conductor.js +0 -1
- package/dist/custom-types/Devices/index.d.ts +0 -2
- package/dist/custom-types/Devices/index.js +0 -2
- package/dist/custom-types/Recipe.d.ts +1 -0
- package/dist/custom-types/Recipe.js +2 -0
- package/package.json +1 -1
- package/src/abb/enums/GCs.mod +44 -44
- package/src/abb/enums/PartLocationIds.mod +13 -13
- package/src/abb/enums/RobTasks.mod +18 -18
- package/src/abb/enums/States.mod +20 -20
- package/src/abb/procs/MainModule.mod +188 -188
- package/src/abb/records/DeviceDataTypes.mod +35 -35
- package/src/custom-types/AppState.ts +115 -115
- package/src/custom-types/BaseDevice/Actions.ts +45 -45
- package/src/custom-types/BaseDevice/ApiOpcua.ts +71 -71
- package/src/custom-types/BaseDevice/Device.ts +224 -224
- package/src/custom-types/BaseDevice/DeviceCmds.ts +45 -45
- package/src/custom-types/BaseDevice/DeviceConstants.ts +9 -9
- package/src/custom-types/{Devices → BaseDevice}/DeviceTypes.ts +60 -60
- package/src/custom-types/BaseDevice/Processes.ts +38 -38
- package/src/custom-types/BaseDevice/index.ts +7 -6
- package/src/custom-types/Bridge.ts +8 -8
- package/src/custom-types/Com.ts +19 -19
- package/src/custom-types/Devices/Axis.ts +222 -222
- package/src/custom-types/Devices/Conductor.ts +14 -14
- package/src/custom-types/Devices/Pot.ts +24 -24
- package/src/custom-types/Devices/Robot.ts +208 -208
- package/src/custom-types/Devices/index.ts +3 -4
- package/src/custom-types/GlobalConstants.ts +98 -98
- package/src/custom-types/HMI.ts +52 -52
- package/src/custom-types/Machine.ts +130 -130
- package/src/custom-types/Part.ts +238 -238
- package/src/custom-types/RackData.ts +22 -22
- package/src/custom-types/Recipe.ts +250 -247
- package/src/custom-types/RecipeManagerFB.ts +10 -10
- package/src/custom-types/TaskQueue.ts +86 -86
- package/src/custom-types/UserManagerFB.ts +7 -7
- package/src/custom-types/index.ts +14 -14
- package/src/enums/Colors.ts +79 -79
- package/src/enums/DeviceId.ts +116 -116
- package/src/enums/ExtrusionType.ts +5 -5
- package/src/enums/OpcuaDatatype.ts +27 -27
- package/src/enums/Pages.ts +21 -21
- package/src/enums/States.ts +173 -173
- package/src/enums/TaskId.ts +37 -37
- package/src/enums/index.ts +9 -9
- package/src/functions/colorMapping.ts +43 -43
- package/src/functions/index.ts +2 -2
- package/src/functions/mqtt-helpers.ts +20 -20
- package/src/functions/topicMapping.ts +6 -6
- package/src/index.ts +3 -3
- package/src/plc-tags/index.ts +38 -38
- package/src/plc-tags/mqtt.ts +9 -9
- package/src/plc-tags/opcua.ts +3 -3
- package/src/styles/animations.css +15 -15
- package/tsconfig.json +13 -13
- package/dist/custom-types/Devices/Device.d.ts +0 -111
- package/dist/custom-types/Devices/Device.js +0 -108
- package/dist/custom-types/PartData.d.ts +0 -11
- package/dist/custom-types/PartData.js +0 -2
- package/dist/custom-types/RecipeData.d.ts +0 -7
- package/dist/custom-types/RecipeData.js +0 -2
- package/dist/enums/Errors.d.ts +0 -6
- package/dist/enums/Errors.js +0 -28
- package/dist/enums/Priorities.d.ts +0 -18
- package/dist/enums/Priorities.js +0 -24
- package/dist/enums/RobPositions.d.ts +0 -12
- package/dist/enums/RobPositions.js +0 -16
- package/dist/enums/Warnings.d.ts +0 -6
- package/dist/enums/Warnings.js +0 -18
- /package/dist/custom-types/{Devices → BaseDevice}/DeviceTypes.d.ts +0 -0
- /package/dist/custom-types/{Devices → BaseDevice}/DeviceTypes.js +0 -0
|
@@ -1,222 +1,222 @@
|
|
|
1
|
-
export enum AxisDriveTypes {
|
|
2
|
-
STINGRAY = 0,
|
|
3
|
-
BOSCH_FSOE = 1
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
//ignored-
|
|
7
|
-
export interface AxisCfg {
|
|
8
|
-
DriveType: AxisDriveTypes;
|
|
9
|
-
DriveId: number; // use either the BoschDrives enum or the Nautilus Drives enum
|
|
10
|
-
Unit: string;
|
|
11
|
-
AtPosTol: number; // note: this may already be defined in the drive (if using bosch fsoe) difference between data.actualPosition and data.targetPosition below threshold and used during validation to determine if checked position matches the stored mastering position
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
IgnoreSoftwareLimits: boolean;
|
|
15
|
-
IgnoreLimitSwitches: boolean;
|
|
16
|
-
|
|
17
|
-
Ignores: boolean[]; // use AxisPermissives ENUM
|
|
18
|
-
|
|
19
|
-
SoftwareLimitPositive: number; // this is the limit that will produce an error if exceeded
|
|
20
|
-
SoftwareLimitNegative: number;
|
|
21
|
-
OperationalPositionMin: number; // this is the nominal operation minimum
|
|
22
|
-
OperationalPositionMax: number;
|
|
23
|
-
HardStopPositive: number;
|
|
24
|
-
HardStopNegative: number;
|
|
25
|
-
SensorPositions: number[];
|
|
26
|
-
//ignored-MotionProfiles: AxisMotionProfileData[]; // normal use case motion profiles, not e-stopping or error related
|
|
27
|
-
AxisType: number;
|
|
28
|
-
|
|
29
|
-
//ignored-ValidationSensor: AxisSensors; // used for homing or position verification
|
|
30
|
-
//ignored-PositionReferencingMethod: PositionReferencingMethods; // homing or position verification
|
|
31
|
-
VerificationSensorOffsetFromZero: number;
|
|
32
|
-
SearchDistance: number; // allowed distance to search beyond operation limit to find the validation sensor
|
|
33
|
-
hasRailBrakes: boolean;
|
|
34
|
-
AutoPositionVerifyDuringReset: boolean; // set to true if you want the axis to automatically try to position verify during reset
|
|
35
|
-
hasDynamicPositiveLimit: boolean;
|
|
36
|
-
hasDynamicNegativeLimit: boolean;
|
|
37
|
-
|
|
38
|
-
HomingToHardstopDir: number; // use -1.0 for negative and 1.0 for positive
|
|
39
|
-
MaxCurrentWhileHomingToHardstop: number; // if homing in neg direction, then use a negative value only used if using home_to_hardstop_<dir> as the position verification method.
|
|
40
|
-
MaxCurrentNormalOperation: number; // max current allowed during normal operation, ignore unless using homing to hardstop
|
|
41
|
-
|
|
42
|
-
updateScalingIsNeeded: boolean; // set this to TRUE to enforce scaling changes
|
|
43
|
-
//ignored-SoftMotionScalingParams: SoftMotionScalingParams;
|
|
44
|
-
|
|
45
|
-
// DUAL AXIS ONLY
|
|
46
|
-
GearingPositionTolerance: number; // mm, (dual Axis only) used for checking differences between geared axes while synced
|
|
47
|
-
AxesPositionToleranceForSkew: number; // mm, (dual Axis only) used for checking if axes have gone beyond their mechanical limit for position differences before ruining the machine
|
|
48
|
-
|
|
49
|
-
ShippingPosition: number; // mm, this should be something that is between the hardstop positions
|
|
50
|
-
KeepMasteredStatusAtStartup: boolean; // if TRUE, this will maintain the mastered status/homed status of the axis after a power cycle
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export interface AxisMotionProfileData {
|
|
54
|
-
speed: number; // this must be greater than zero
|
|
55
|
-
acceleration: number; // used for accel and decel
|
|
56
|
-
jerk: number;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
export interface AxisSts {
|
|
62
|
-
Cfg: AxisCfg; // read-only
|
|
63
|
-
|
|
64
|
-
actualPosition: number;
|
|
65
|
-
// actualSetpoint: number; // use the enum associated with setpoints
|
|
66
|
-
actualVelocity: number;
|
|
67
|
-
actualAcceleration: number;
|
|
68
|
-
ActualTorque: number;
|
|
69
|
-
ActualCurrent: number;
|
|
70
|
-
//ignored-ActualControllerMode: SMC_CONTROLLER_MODE;
|
|
71
|
-
|
|
72
|
-
ActiveStreamType: number;
|
|
73
|
-
|
|
74
|
-
AxisRefState: number; // uses SMC_AXIS_STATE;
|
|
75
|
-
|
|
76
|
-
targetPosition: number; // used for MoveAbs or MoveRel, change value before issuing your mc cmd, result should be echoed in setPosition after corresponding MC Cmd
|
|
77
|
-
targetSetpoint: number;
|
|
78
|
-
targetVelocity: number; // used for jogging, change value before issuing your mc cmd, result should be echoed in setVelocity after corresponding MC Cmd
|
|
79
|
-
|
|
80
|
-
targetDir: number; // used for jogging and moving, 1.0 for fwd and -1.0 for bckwd
|
|
81
|
-
// targetAccel: number;
|
|
82
|
-
targetMaxCurrent: number; // only used for homing to hardstop of swing arms
|
|
83
|
-
targetTorque: number; // not used
|
|
84
|
-
targetMotionProfileId: number;
|
|
85
|
-
targetMotionProfileData: AxisMotionProfileData; // used for moving and jogging, change value before issuing your mc cmd, result should be echoed in setVelocity/setAcceleration after corresponding MC Cmd
|
|
86
|
-
TargetControllerMode: number; // uses SMC_CONTROLLER_MODE;
|
|
87
|
-
|
|
88
|
-
setPosition: number; // this value is updated by the drive
|
|
89
|
-
setVelocity: number; // this value is updated by the drive
|
|
90
|
-
setAccel: number; // this value is updated by the drive
|
|
91
|
-
setTorque: number; // this value is updated by the drive
|
|
92
|
-
setJerk: number; // this value is updated by the drive
|
|
93
|
-
|
|
94
|
-
// STATUS BITS
|
|
95
|
-
isEnabled: boolean;
|
|
96
|
-
isHoming: boolean; // used to indicate that axis in the process of homing or used to indicate that axis is in the process of verifying its position
|
|
97
|
-
isHomed: boolean; // used to indicate that axis has homed to a sensor and updated its position accordingly or used to indicate that position has been verified, useful when using absolute encoders that don't require homing (overwriting of known zero position)
|
|
98
|
-
isMastered: boolean; // used to indicate that axis has been mastered, useful for axes that require position verification as their position referencing method
|
|
99
|
-
|
|
100
|
-
mutingSwAndHwLimitsWhileHoming: boolean;
|
|
101
|
-
//ignored-DriveHwLimitsEnforcement: AxisLimitEnforcements; // this status is set after calling the set software limits
|
|
102
|
-
//ignored-DriveSwLimitsEnforcement: AxisLimitEnforcements;
|
|
103
|
-
|
|
104
|
-
// MOTION STATES - these are all mutually exclusive
|
|
105
|
-
isStandstill: boolean; // axis is not moving (within zero velocity threshold)
|
|
106
|
-
isAtPosAndStandstill: boolean; // axis is at the target position and at standstill
|
|
107
|
-
isJogging: boolean; // axis is rotating with velocity cmd
|
|
108
|
-
isMoving: boolean; // axis is moving to a position
|
|
109
|
-
isGeared: boolean; // axis is moving synchronously with another axis
|
|
110
|
-
isTorquing: boolean; // axis is in torque mode and actively applying torque
|
|
111
|
-
|
|
112
|
-
// DRIVE RELATED
|
|
113
|
-
DriveStatusMsg: string;
|
|
114
|
-
DriveHasError: boolean;
|
|
115
|
-
DriveIsStoppingMotor: boolean; // is True when motor faults and starts stopping itself
|
|
116
|
-
DriveStoppedMotor: boolean; // True after motor finishes stopping itself. clears when you reset the motor
|
|
117
|
-
|
|
118
|
-
SoftMotionHasError: boolean;
|
|
119
|
-
SoftMotionErrorId: number; // uses SMC_ERROR;
|
|
120
|
-
|
|
121
|
-
ConfiguredSoftLimitTravelRange: number; // determined by the sw limits;
|
|
122
|
-
HomeOffsetFromZero: number; // units, this is a read-only value, the retain var HomeOffsetFromZero is used (this might be deprecated)
|
|
123
|
-
|
|
124
|
-
CalculatedStoppingPosition: number;
|
|
125
|
-
TravelLimitNegative: number;
|
|
126
|
-
TravelLimitPositive: number;
|
|
127
|
-
|
|
128
|
-
//ignored-Permissives: AxisPermissiveStsData[]; // Array of NUM_PERMISSIVES length
|
|
129
|
-
RestrictedToSlow: boolean; // (TODO: replace this with NOT Permissives.FullSpeed_OK) used to speed limit the axis when it is not homed or has software and hardware limits disabled
|
|
130
|
-
|
|
131
|
-
//ignored-RailBrakes: RailBrakeInputs;
|
|
132
|
-
Sensors: boolean[]; // Array of MAX_NUM_SENSORS length
|
|
133
|
-
|
|
134
|
-
targetEncoderSetpoint: number;
|
|
135
|
-
|
|
136
|
-
targetMasterAxisDevId: number;
|
|
137
|
-
targetMasterAxisRefPointer: any; // TypeScript doesn't have direct pointer equivalents
|
|
138
|
-
actualMasterAxisDevId: number;
|
|
139
|
-
actualMasterAxisRefPointer: any; // TypeScript doesn't have direct pointer equivalents
|
|
140
|
-
|
|
141
|
-
RecordedPosition: number; // use this to save position information, useful for mastering and position verification processes
|
|
142
|
-
//ignored-Interlocks: AxisInterlocks;
|
|
143
|
-
|
|
144
|
-
ignoringRailBrakes: boolean;
|
|
145
|
-
EtherCatComms_OK: boolean;
|
|
146
|
-
|
|
147
|
-
// ROBOT CONTROLLER STATE
|
|
148
|
-
RcHomingState: number; // uses enumRcAxisHomingState;
|
|
149
|
-
RcControlMode: number; // uses enumRcAxisMode;
|
|
150
|
-
|
|
151
|
-
isStreaming: boolean;
|
|
152
|
-
|
|
153
|
-
// DUAL AXIS ONLY
|
|
154
|
-
PositionDifference: number; // (Dual Axis Only) difference between the axes: axis1 - axis2
|
|
155
|
-
AxesPositionDifference_OK: boolean; // (Dual Axis Only)status stating difference in position between two axes while moving or idle is acceptable, based on cfg.GearingPositionTolerance
|
|
156
|
-
AxesPositionDifference_CORRECTABLE: boolean; // (Dual Axis Only)status stating difference in position between two axes able to be automatically corrected, based on cfg.AxesPositionToleranceForSkew
|
|
157
|
-
SkippingPositionCorrectionBeforeGearing: boolean; // (Dual Axis Only)this is usually TRUE if the axes are first being setup
|
|
158
|
-
DualAxisStopType: number; // uses DualAxisStopTypes; // (Dual Axis Only)
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
export enum AxisMethods {
|
|
163
|
-
NONE = 0,
|
|
164
|
-
JOG_CMD = 1,
|
|
165
|
-
MOVE_ABS_CMD = 2,
|
|
166
|
-
MOVE_OP_MIN_MAX = 3,
|
|
167
|
-
ENFORCE_RAIL_BRAKES = 4,
|
|
168
|
-
START_STREAM = 5,
|
|
169
|
-
STOP = 6
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
export function axisMethodIdToString(method: AxisMethods): string {
|
|
173
|
-
switch (method) {
|
|
174
|
-
case AxisMethods.NONE:
|
|
175
|
-
return "None";
|
|
176
|
-
case AxisMethods.JOG_CMD:
|
|
177
|
-
return "Jog Command";
|
|
178
|
-
case AxisMethods.MOVE_ABS_CMD:
|
|
179
|
-
return "Move Absolute Command";
|
|
180
|
-
case AxisMethods.MOVE_OP_MIN_MAX:
|
|
181
|
-
return "Move Operational Min/Max";
|
|
182
|
-
case AxisMethods.ENFORCE_RAIL_BRAKES:
|
|
183
|
-
return "Enforce Rail Brakes";
|
|
184
|
-
case AxisMethods.START_STREAM:
|
|
185
|
-
return "Start Stream";
|
|
186
|
-
case AxisMethods.STOP:
|
|
187
|
-
return "Stop";
|
|
188
|
-
default:
|
|
189
|
-
return "Unknown";
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
export enum AxisProcesses {
|
|
194
|
-
NONE = 0,
|
|
195
|
-
VERIFY_POSITION = 1,
|
|
196
|
-
PERFORM_MASTERING = 2,
|
|
197
|
-
BACK_AND_FORTH = 3,
|
|
198
|
-
HOME_TO_HARDSTOP = 4,
|
|
199
|
-
ALIGNMENT_ANALYSIS_MOVE = 5,
|
|
200
|
-
MOVE_TO_SHIPPING_POSITION = 6
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
export function axisProcessIdToString(process: AxisProcesses): string {
|
|
204
|
-
switch (process) {
|
|
205
|
-
case AxisProcesses.NONE:
|
|
206
|
-
return "None";
|
|
207
|
-
case AxisProcesses.VERIFY_POSITION:
|
|
208
|
-
return "Verify Position";
|
|
209
|
-
case AxisProcesses.PERFORM_MASTERING:
|
|
210
|
-
return "Perform Mastering";
|
|
211
|
-
case AxisProcesses.BACK_AND_FORTH:
|
|
212
|
-
return "Back and Forth";
|
|
213
|
-
case AxisProcesses.HOME_TO_HARDSTOP:
|
|
214
|
-
return "Home to Hardstop";
|
|
215
|
-
case AxisProcesses.ALIGNMENT_ANALYSIS_MOVE:
|
|
216
|
-
return "Alignment Analysis Move";
|
|
217
|
-
case AxisProcesses.MOVE_TO_SHIPPING_POSITION:
|
|
218
|
-
return "Move to Shipping Position";
|
|
219
|
-
default:
|
|
220
|
-
return "Unknown";
|
|
221
|
-
}
|
|
222
|
-
}
|
|
1
|
+
export enum AxisDriveTypes {
|
|
2
|
+
STINGRAY = 0,
|
|
3
|
+
BOSCH_FSOE = 1
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//ignored-
|
|
7
|
+
export interface AxisCfg {
|
|
8
|
+
DriveType: AxisDriveTypes;
|
|
9
|
+
DriveId: number; // use either the BoschDrives enum or the Nautilus Drives enum
|
|
10
|
+
Unit: string;
|
|
11
|
+
AtPosTol: number; // note: this may already be defined in the drive (if using bosch fsoe) difference between data.actualPosition and data.targetPosition below threshold and used during validation to determine if checked position matches the stored mastering position
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
IgnoreSoftwareLimits: boolean;
|
|
15
|
+
IgnoreLimitSwitches: boolean;
|
|
16
|
+
|
|
17
|
+
Ignores: boolean[]; // use AxisPermissives ENUM
|
|
18
|
+
|
|
19
|
+
SoftwareLimitPositive: number; // this is the limit that will produce an error if exceeded
|
|
20
|
+
SoftwareLimitNegative: number;
|
|
21
|
+
OperationalPositionMin: number; // this is the nominal operation minimum
|
|
22
|
+
OperationalPositionMax: number;
|
|
23
|
+
HardStopPositive: number;
|
|
24
|
+
HardStopNegative: number;
|
|
25
|
+
SensorPositions: number[];
|
|
26
|
+
//ignored-MotionProfiles: AxisMotionProfileData[]; // normal use case motion profiles, not e-stopping or error related
|
|
27
|
+
AxisType: number;
|
|
28
|
+
|
|
29
|
+
//ignored-ValidationSensor: AxisSensors; // used for homing or position verification
|
|
30
|
+
//ignored-PositionReferencingMethod: PositionReferencingMethods; // homing or position verification
|
|
31
|
+
VerificationSensorOffsetFromZero: number;
|
|
32
|
+
SearchDistance: number; // allowed distance to search beyond operation limit to find the validation sensor
|
|
33
|
+
hasRailBrakes: boolean;
|
|
34
|
+
AutoPositionVerifyDuringReset: boolean; // set to true if you want the axis to automatically try to position verify during reset
|
|
35
|
+
hasDynamicPositiveLimit: boolean;
|
|
36
|
+
hasDynamicNegativeLimit: boolean;
|
|
37
|
+
|
|
38
|
+
HomingToHardstopDir: number; // use -1.0 for negative and 1.0 for positive
|
|
39
|
+
MaxCurrentWhileHomingToHardstop: number; // if homing in neg direction, then use a negative value only used if using home_to_hardstop_<dir> as the position verification method.
|
|
40
|
+
MaxCurrentNormalOperation: number; // max current allowed during normal operation, ignore unless using homing to hardstop
|
|
41
|
+
|
|
42
|
+
updateScalingIsNeeded: boolean; // set this to TRUE to enforce scaling changes
|
|
43
|
+
//ignored-SoftMotionScalingParams: SoftMotionScalingParams;
|
|
44
|
+
|
|
45
|
+
// DUAL AXIS ONLY
|
|
46
|
+
GearingPositionTolerance: number; // mm, (dual Axis only) used for checking differences between geared axes while synced
|
|
47
|
+
AxesPositionToleranceForSkew: number; // mm, (dual Axis only) used for checking if axes have gone beyond their mechanical limit for position differences before ruining the machine
|
|
48
|
+
|
|
49
|
+
ShippingPosition: number; // mm, this should be something that is between the hardstop positions
|
|
50
|
+
KeepMasteredStatusAtStartup: boolean; // if TRUE, this will maintain the mastered status/homed status of the axis after a power cycle
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export interface AxisMotionProfileData {
|
|
54
|
+
speed: number; // this must be greater than zero
|
|
55
|
+
acceleration: number; // used for accel and decel
|
|
56
|
+
jerk: number;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
export interface AxisSts {
|
|
62
|
+
Cfg: AxisCfg; // read-only
|
|
63
|
+
|
|
64
|
+
actualPosition: number;
|
|
65
|
+
// actualSetpoint: number; // use the enum associated with setpoints
|
|
66
|
+
actualVelocity: number;
|
|
67
|
+
actualAcceleration: number;
|
|
68
|
+
ActualTorque: number;
|
|
69
|
+
ActualCurrent: number;
|
|
70
|
+
//ignored-ActualControllerMode: SMC_CONTROLLER_MODE;
|
|
71
|
+
|
|
72
|
+
ActiveStreamType: number;
|
|
73
|
+
|
|
74
|
+
AxisRefState: number; // uses SMC_AXIS_STATE;
|
|
75
|
+
|
|
76
|
+
targetPosition: number; // used for MoveAbs or MoveRel, change value before issuing your mc cmd, result should be echoed in setPosition after corresponding MC Cmd
|
|
77
|
+
targetSetpoint: number;
|
|
78
|
+
targetVelocity: number; // used for jogging, change value before issuing your mc cmd, result should be echoed in setVelocity after corresponding MC Cmd
|
|
79
|
+
|
|
80
|
+
targetDir: number; // used for jogging and moving, 1.0 for fwd and -1.0 for bckwd
|
|
81
|
+
// targetAccel: number;
|
|
82
|
+
targetMaxCurrent: number; // only used for homing to hardstop of swing arms
|
|
83
|
+
targetTorque: number; // not used
|
|
84
|
+
targetMotionProfileId: number;
|
|
85
|
+
targetMotionProfileData: AxisMotionProfileData; // used for moving and jogging, change value before issuing your mc cmd, result should be echoed in setVelocity/setAcceleration after corresponding MC Cmd
|
|
86
|
+
TargetControllerMode: number; // uses SMC_CONTROLLER_MODE;
|
|
87
|
+
|
|
88
|
+
setPosition: number; // this value is updated by the drive
|
|
89
|
+
setVelocity: number; // this value is updated by the drive
|
|
90
|
+
setAccel: number; // this value is updated by the drive
|
|
91
|
+
setTorque: number; // this value is updated by the drive
|
|
92
|
+
setJerk: number; // this value is updated by the drive
|
|
93
|
+
|
|
94
|
+
// STATUS BITS
|
|
95
|
+
isEnabled: boolean;
|
|
96
|
+
isHoming: boolean; // used to indicate that axis in the process of homing or used to indicate that axis is in the process of verifying its position
|
|
97
|
+
isHomed: boolean; // used to indicate that axis has homed to a sensor and updated its position accordingly or used to indicate that position has been verified, useful when using absolute encoders that don't require homing (overwriting of known zero position)
|
|
98
|
+
isMastered: boolean; // used to indicate that axis has been mastered, useful for axes that require position verification as their position referencing method
|
|
99
|
+
|
|
100
|
+
mutingSwAndHwLimitsWhileHoming: boolean;
|
|
101
|
+
//ignored-DriveHwLimitsEnforcement: AxisLimitEnforcements; // this status is set after calling the set software limits
|
|
102
|
+
//ignored-DriveSwLimitsEnforcement: AxisLimitEnforcements;
|
|
103
|
+
|
|
104
|
+
// MOTION STATES - these are all mutually exclusive
|
|
105
|
+
isStandstill: boolean; // axis is not moving (within zero velocity threshold)
|
|
106
|
+
isAtPosAndStandstill: boolean; // axis is at the target position and at standstill
|
|
107
|
+
isJogging: boolean; // axis is rotating with velocity cmd
|
|
108
|
+
isMoving: boolean; // axis is moving to a position
|
|
109
|
+
isGeared: boolean; // axis is moving synchronously with another axis
|
|
110
|
+
isTorquing: boolean; // axis is in torque mode and actively applying torque
|
|
111
|
+
|
|
112
|
+
// DRIVE RELATED
|
|
113
|
+
DriveStatusMsg: string;
|
|
114
|
+
DriveHasError: boolean;
|
|
115
|
+
DriveIsStoppingMotor: boolean; // is True when motor faults and starts stopping itself
|
|
116
|
+
DriveStoppedMotor: boolean; // True after motor finishes stopping itself. clears when you reset the motor
|
|
117
|
+
|
|
118
|
+
SoftMotionHasError: boolean;
|
|
119
|
+
SoftMotionErrorId: number; // uses SMC_ERROR;
|
|
120
|
+
|
|
121
|
+
ConfiguredSoftLimitTravelRange: number; // determined by the sw limits;
|
|
122
|
+
HomeOffsetFromZero: number; // units, this is a read-only value, the retain var HomeOffsetFromZero is used (this might be deprecated)
|
|
123
|
+
|
|
124
|
+
CalculatedStoppingPosition: number;
|
|
125
|
+
TravelLimitNegative: number;
|
|
126
|
+
TravelLimitPositive: number;
|
|
127
|
+
|
|
128
|
+
//ignored-Permissives: AxisPermissiveStsData[]; // Array of NUM_PERMISSIVES length
|
|
129
|
+
RestrictedToSlow: boolean; // (TODO: replace this with NOT Permissives.FullSpeed_OK) used to speed limit the axis when it is not homed or has software and hardware limits disabled
|
|
130
|
+
|
|
131
|
+
//ignored-RailBrakes: RailBrakeInputs;
|
|
132
|
+
Sensors: boolean[]; // Array of MAX_NUM_SENSORS length
|
|
133
|
+
|
|
134
|
+
targetEncoderSetpoint: number;
|
|
135
|
+
|
|
136
|
+
targetMasterAxisDevId: number;
|
|
137
|
+
targetMasterAxisRefPointer: any; // TypeScript doesn't have direct pointer equivalents
|
|
138
|
+
actualMasterAxisDevId: number;
|
|
139
|
+
actualMasterAxisRefPointer: any; // TypeScript doesn't have direct pointer equivalents
|
|
140
|
+
|
|
141
|
+
RecordedPosition: number; // use this to save position information, useful for mastering and position verification processes
|
|
142
|
+
//ignored-Interlocks: AxisInterlocks;
|
|
143
|
+
|
|
144
|
+
ignoringRailBrakes: boolean;
|
|
145
|
+
EtherCatComms_OK: boolean;
|
|
146
|
+
|
|
147
|
+
// ROBOT CONTROLLER STATE
|
|
148
|
+
RcHomingState: number; // uses enumRcAxisHomingState;
|
|
149
|
+
RcControlMode: number; // uses enumRcAxisMode;
|
|
150
|
+
|
|
151
|
+
isStreaming: boolean;
|
|
152
|
+
|
|
153
|
+
// DUAL AXIS ONLY
|
|
154
|
+
PositionDifference: number; // (Dual Axis Only) difference between the axes: axis1 - axis2
|
|
155
|
+
AxesPositionDifference_OK: boolean; // (Dual Axis Only)status stating difference in position between two axes while moving or idle is acceptable, based on cfg.GearingPositionTolerance
|
|
156
|
+
AxesPositionDifference_CORRECTABLE: boolean; // (Dual Axis Only)status stating difference in position between two axes able to be automatically corrected, based on cfg.AxesPositionToleranceForSkew
|
|
157
|
+
SkippingPositionCorrectionBeforeGearing: boolean; // (Dual Axis Only)this is usually TRUE if the axes are first being setup
|
|
158
|
+
DualAxisStopType: number; // uses DualAxisStopTypes; // (Dual Axis Only)
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
export enum AxisMethods {
|
|
163
|
+
NONE = 0,
|
|
164
|
+
JOG_CMD = 1,
|
|
165
|
+
MOVE_ABS_CMD = 2,
|
|
166
|
+
MOVE_OP_MIN_MAX = 3,
|
|
167
|
+
ENFORCE_RAIL_BRAKES = 4,
|
|
168
|
+
START_STREAM = 5,
|
|
169
|
+
STOP = 6
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export function axisMethodIdToString(method: AxisMethods): string {
|
|
173
|
+
switch (method) {
|
|
174
|
+
case AxisMethods.NONE:
|
|
175
|
+
return "None";
|
|
176
|
+
case AxisMethods.JOG_CMD:
|
|
177
|
+
return "Jog Command";
|
|
178
|
+
case AxisMethods.MOVE_ABS_CMD:
|
|
179
|
+
return "Move Absolute Command";
|
|
180
|
+
case AxisMethods.MOVE_OP_MIN_MAX:
|
|
181
|
+
return "Move Operational Min/Max";
|
|
182
|
+
case AxisMethods.ENFORCE_RAIL_BRAKES:
|
|
183
|
+
return "Enforce Rail Brakes";
|
|
184
|
+
case AxisMethods.START_STREAM:
|
|
185
|
+
return "Start Stream";
|
|
186
|
+
case AxisMethods.STOP:
|
|
187
|
+
return "Stop";
|
|
188
|
+
default:
|
|
189
|
+
return "Unknown";
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export enum AxisProcesses {
|
|
194
|
+
NONE = 0,
|
|
195
|
+
VERIFY_POSITION = 1,
|
|
196
|
+
PERFORM_MASTERING = 2,
|
|
197
|
+
BACK_AND_FORTH = 3,
|
|
198
|
+
HOME_TO_HARDSTOP = 4,
|
|
199
|
+
ALIGNMENT_ANALYSIS_MOVE = 5,
|
|
200
|
+
MOVE_TO_SHIPPING_POSITION = 6
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export function axisProcessIdToString(process: AxisProcesses): string {
|
|
204
|
+
switch (process) {
|
|
205
|
+
case AxisProcesses.NONE:
|
|
206
|
+
return "None";
|
|
207
|
+
case AxisProcesses.VERIFY_POSITION:
|
|
208
|
+
return "Verify Position";
|
|
209
|
+
case AxisProcesses.PERFORM_MASTERING:
|
|
210
|
+
return "Perform Mastering";
|
|
211
|
+
case AxisProcesses.BACK_AND_FORTH:
|
|
212
|
+
return "Back and Forth";
|
|
213
|
+
case AxisProcesses.HOME_TO_HARDSTOP:
|
|
214
|
+
return "Home to Hardstop";
|
|
215
|
+
case AxisProcesses.ALIGNMENT_ANALYSIS_MOVE:
|
|
216
|
+
return "Alignment Analysis Move";
|
|
217
|
+
case AxisProcesses.MOVE_TO_SHIPPING_POSITION:
|
|
218
|
+
return "Move to Shipping Position";
|
|
219
|
+
default:
|
|
220
|
+
return "Unknown";
|
|
221
|
+
}
|
|
222
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
// {attribute 'qualified_only'}
|
|
2
|
-
// {attribute 'strict'}
|
|
3
|
-
// TYPE ConMethods :
|
|
4
|
-
// (
|
|
5
|
-
// NONE := 0, //do not remove or change this
|
|
6
|
-
// UDPATE_PART := 1, //param0: partLocationId, param1: newPartState
|
|
7
|
-
// TRANSFER_PART := 2, //param0: currentLocationId, param1: newLocationId
|
|
8
|
-
// CONFIRM_PARTS_LOADED :=3, //no params
|
|
9
|
-
// CONFIRM_PARTS_UNLOADED :=4, //no params
|
|
10
|
-
// CLEAR_ALL_FIXTURE_PARTS :=5,
|
|
11
|
-
// LOAD_ALL_FIXTURE_PARTS_RAW :=6
|
|
12
|
-
// );
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
// {attribute 'qualified_only'}
|
|
2
|
+
// {attribute 'strict'}
|
|
3
|
+
// TYPE ConMethods :
|
|
4
|
+
// (
|
|
5
|
+
// NONE := 0, //do not remove or change this
|
|
6
|
+
// UDPATE_PART := 1, //param0: partLocationId, param1: newPartState
|
|
7
|
+
// TRANSFER_PART := 2, //param0: currentLocationId, param1: newLocationId
|
|
8
|
+
// CONFIRM_PARTS_LOADED :=3, //no params
|
|
9
|
+
// CONFIRM_PARTS_UNLOADED :=4, //no params
|
|
10
|
+
// CLEAR_ALL_FIXTURE_PARTS :=5,
|
|
11
|
+
// LOAD_ALL_FIXTURE_PARTS_RAW :=6
|
|
12
|
+
// );
|
|
13
|
+
|
|
14
|
+
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
// TYPE PotSts :
|
|
2
|
-
// STRUCT
|
|
3
|
-
// isPressurizing:BOOL;
|
|
4
|
-
// AtTargetPressure:BOOL;
|
|
5
|
-
// isDepressurized:BOOL;
|
|
6
|
-
// ActualPressure:LREAL;
|
|
7
|
-
// TargetPressure:LREAL;
|
|
8
|
-
// LinerIsFlowing:BOOL;
|
|
9
|
-
// State:INT;
|
|
10
|
-
// BallValve_OPEN:BOOL;
|
|
11
|
-
// BallValve_CLOSED:BOOL;
|
|
12
|
-
// END_STRUCT
|
|
13
|
-
// END_TYPE
|
|
14
|
-
|
|
15
|
-
export interface PotSts {
|
|
16
|
-
isPressurizing: boolean;
|
|
17
|
-
atTargetPressure: boolean;
|
|
18
|
-
isDepressurized: boolean;
|
|
19
|
-
actualPressure: number;
|
|
20
|
-
targetPressure: number;
|
|
21
|
-
linerIsFlowing: boolean;
|
|
22
|
-
state: number;
|
|
23
|
-
ballValve_OPEN: boolean;
|
|
24
|
-
ballValve_CLOSED: boolean;
|
|
1
|
+
// TYPE PotSts :
|
|
2
|
+
// STRUCT
|
|
3
|
+
// isPressurizing:BOOL;
|
|
4
|
+
// AtTargetPressure:BOOL;
|
|
5
|
+
// isDepressurized:BOOL;
|
|
6
|
+
// ActualPressure:LREAL;
|
|
7
|
+
// TargetPressure:LREAL;
|
|
8
|
+
// LinerIsFlowing:BOOL;
|
|
9
|
+
// State:INT;
|
|
10
|
+
// BallValve_OPEN:BOOL;
|
|
11
|
+
// BallValve_CLOSED:BOOL;
|
|
12
|
+
// END_STRUCT
|
|
13
|
+
// END_TYPE
|
|
14
|
+
|
|
15
|
+
export interface PotSts {
|
|
16
|
+
isPressurizing: boolean;
|
|
17
|
+
atTargetPressure: boolean;
|
|
18
|
+
isDepressurized: boolean;
|
|
19
|
+
actualPressure: number;
|
|
20
|
+
targetPressure: number;
|
|
21
|
+
linerIsFlowing: boolean;
|
|
22
|
+
state: number;
|
|
23
|
+
ballValve_OPEN: boolean;
|
|
24
|
+
ballValve_CLOSED: boolean;
|
|
25
25
|
}
|