/* Automation Studio generated header file */
/* Do not edit ! */
/* PMCPwrlink 1.00.0 */

#ifndef _PMCPWRLINK_
#define _PMCPWRLINK_
#ifdef __cplusplus
extern "C" 
{
#endif
#ifndef _PMCPwrlink_VERSION
#define _PMCPwrlink_VERSION 1.00.0
#endif

#include <bur/plctypes.h>

#ifndef _BUR_PUBLIC
#define _BUR_PUBLIC
#endif
/* Constants */
#ifdef _REPLACE_CONST
 #define H2P_START 0U
 #define H2P_FRMC_OFFSET 4U
 #define H2P_CMDC_OFFSET 5U
 #define H2P_CMDID_OFFSET 6U
 #define H2P_CMDLB_OFFSET 8U
 #define H2P_DATA_OFFSET 10U
 #define H2P_STM_OFFSET 104U
 #define H2P_DO_OFFSET 384U
 #define P2H_START 0U
 #define P2H_FRMC_OFFSET 4U
 #define P2H_CMDC_OFFSET 5U
 #define P2H_CMDID_OFFSET 6U
 #define P2H_CMDLB_OFFSET 8U
 #define P2H_RTN_OFFSET 10U
 #define P2H_DATA_OFFSET 12U
 #define P2H_PMC_STATE_OFFSET 54U
 #define P2H_REGION_STATE_OFFSET 55U
 #define P2H_XBOT_STATE_OFFSET 89U
 #define P2H_MUX_OFFSET 128U
 #define P2H_REAL_TIME_OFFSET 188U
 #define P2H_DI_OFFSET 384U
 #define P2H_PROTOCOL_OFFSET 0U
 #define PMC_TIMEOUT 7500U
#else
 _GLOBAL_CONST unsigned short H2P_START;
 _GLOBAL_CONST unsigned char H2P_FRMC_OFFSET;
 _GLOBAL_CONST unsigned char H2P_CMDC_OFFSET;
 _GLOBAL_CONST unsigned short H2P_CMDID_OFFSET;
 _GLOBAL_CONST unsigned short H2P_CMDLB_OFFSET;
 _GLOBAL_CONST unsigned short H2P_DATA_OFFSET;
 _GLOBAL_CONST unsigned short H2P_STM_OFFSET;
 _GLOBAL_CONST unsigned short H2P_DO_OFFSET;
 _GLOBAL_CONST unsigned short P2H_START;
 _GLOBAL_CONST unsigned short P2H_FRMC_OFFSET;
 _GLOBAL_CONST unsigned short P2H_CMDC_OFFSET;
 _GLOBAL_CONST unsigned short P2H_CMDID_OFFSET;
 _GLOBAL_CONST unsigned short P2H_CMDLB_OFFSET;
 _GLOBAL_CONST unsigned short P2H_RTN_OFFSET;
 _GLOBAL_CONST unsigned short P2H_DATA_OFFSET;
 _GLOBAL_CONST unsigned short P2H_PMC_STATE_OFFSET;
 _GLOBAL_CONST unsigned short P2H_REGION_STATE_OFFSET;
 _GLOBAL_CONST unsigned short P2H_XBOT_STATE_OFFSET;
 _GLOBAL_CONST unsigned short P2H_MUX_OFFSET;
 _GLOBAL_CONST unsigned short P2H_REAL_TIME_OFFSET;
 _GLOBAL_CONST unsigned short P2H_DI_OFFSET;
 _GLOBAL_CONST unsigned short P2H_PROTOCOL_OFFSET;
 _GLOBAL_CONST unsigned short PMC_TIMEOUT;
#endif




/* Datatypes and datatypes of function blocks */
typedef struct PMCDB_struct
{	unsigned char PMCState;
	unsigned char XbotState[255];
	float PosX[255];
	float PosY[255];
	float PosZ[255];
	float PosRx[255];
	float PosRy[255];
	float PosRz[255];
} PMCDB_struct;

typedef struct PMControllerType
{	unsigned long DataFromPMCAddress;
	unsigned long DataToPMCAddress;
	unsigned char ConfiguredFeedbackStreamAxis;
} PMControllerType;

typedef struct StoredPMCReply
{	unsigned short TicketNumber;
	unsigned char FromPMCBuffer[54];
} StoredPMCReply;

typedef struct PMC_ActivateXbots
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ActivateXbots_typ;

typedef struct PMC_XYMotion
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Type_;
	float PosX;
	float PosY;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_XYMotion_typ;

typedef struct PMC_ReadXbotState
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned char State;
	/* VAR (analog) */
	unsigned char ByteOffset;
	unsigned char BitOffset;
	unsigned char uTemp;
	unsigned char MaxXbots;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadXbotState_typ;

typedef struct PMC_ReadDigitalSignalFromPMC
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char DiID;
	/* VAR (analog) */
	signed long ByteOffset;
	signed long BitOffset;
	unsigned char RegVal;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Level;
} PMC_ReadDigitalSignalFromPMC_typ;

typedef struct PMC_ReadPmcState
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	/* VAR_OUTPUT (analog) */
	unsigned char State;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadPmcState_typ;

typedef struct PMC_ReadXbotForce
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	float Fx;
	float Fy;
	float Fz;
	float Tx;
	float Ty;
	float Tz;
	/* VAR (analog) */
	unsigned long RegVal;
	unsigned char curXID;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadXbotForce_typ;

typedef struct PMC_ReadXbotPos
{
	/* VAR_INPUT (analog) */
	struct PMCDB_struct* PMCDB_pointer;
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	float PosX;
	float PosY;
	float PosZ;
	float PosRx;
	float PosRy;
	float PosRz;
	/* VAR (analog) */
	unsigned long RegVal;
	unsigned char curXID;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadXbotPos_typ;

typedef struct PMC_SendDigitalSignalToPMC
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char DoID;
	/* VAR (analog) */
	signed long ByteOffset;
	signed long BitOffset;
	signed long step1;
	signed long step2;
	signed long step3;
	unsigned char RegVal;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	plcbit Level;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_SendDigitalSignalToPMC_typ;

typedef struct PMC_WriteStream
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char StmID;
	unsigned char AxisID;
	float Pos;
	/* VAR (analog) */
	unsigned short ByteOffset;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_WriteStream_typ;

typedef struct PMC_6DMotion
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char XbotID;
	float PosX;
	float PosY;
	float PosZ;
	float PosRx;
	float PosRy;
	float PosRz;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_6DMotion_typ;

typedef struct PMC_6DMotionVelocity
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char XbotID;
	float TargetPos[6];
	float LongAxisAccVel[2];
	float ShortAxisVel[4];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_6DMotionVelocity_typ;

typedef struct PMC_ActivateTrajectory
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char nXbots;
	unsigned char XbotID[12];
	unsigned char TrajID[12];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	unsigned char xbotNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNXbots;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ActivateTrajectory_typ;

typedef struct PMC_ArcMotionCenter
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Dir;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	float CenterX;
	float CenterY;
	float Angle;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	unsigned short cmdID;
	unsigned char aDef;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ArcMotionCenter_typ;

typedef struct PMC_ArcMotionTarget
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char AType;
	unsigned char Dir;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	float PosX;
	float PosY;
	float Radius;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	unsigned short cmdID;
	unsigned char aDef;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ArcMotionTarget_typ;

typedef struct PMC_AutoDrivingMotion
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nXbots;
	unsigned char XbotID[9];
	float PosX[9];
	float PosY[9];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	unsigned char xbotNum;
	signed char xIndex;
	signed short dd;
	unsigned short cmdID;
	signed char maxNXbot;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_AutoDrivingMotion_typ;

typedef struct PMC_BlockXbotGroup
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char GroupID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char Level;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	plcbit IsBlock;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_BlockXbotGroup_typ;

typedef struct PMC_BondXbotGroup
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char GroupID;
	unsigned char Mode;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char Level;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	plcbit IsBond;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_BondXbotGroup_typ;

typedef struct PMC_CamMotion
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char Level;
	unsigned char SlaveXID;
	unsigned char nAxis;
	unsigned char SlaveAID[7];
	unsigned char camID[7];
	unsigned char MasterXID[7];
	unsigned char MasterAID[7];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char axisNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNAxis;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_CamMotion_typ;

typedef struct PMC_CamMotionAdvanced
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char Level;
	unsigned char SlaveXID;
	unsigned char nAxis;
	unsigned char SlaveAID[4];
	unsigned char camID[4];
	unsigned char MasterXID[4];
	unsigned char MasterAID[4];
	unsigned char CamMode[4];
	float MasterAxisScaling[4];
	float SlaveAxisScaling[4];
	float MasterAxisOffset[4];
	unsigned char MasterOffsetMode[4];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char axisNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNAxis;
	unsigned char tempVar;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_CamMotionAdvanced_typ;

typedef struct PMC_ClearMacro
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char MacroID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char Level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ClearMacro_typ;

typedef struct PMC_ConfigDI2Reset
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nDI;
	unsigned char DiID[22];
	unsigned char RstDoID[22];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char diNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNDi;
	unsigned char Type_;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ConfigDI2Reset_typ;

typedef struct PMC_ConfigDI2RunMacro
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nDI;
	unsigned char DiID[22];
	unsigned char MacroID[22];
	unsigned char XbotID[22];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char diNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNDi;
	unsigned char Type_;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ConfigDI2RunMacro_typ;

typedef struct PMC_ConfigDI2Trigger
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nDI;
	unsigned char DiID[22];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char diNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNDi;
	unsigned char Type_;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ConfigDI2Trigger_typ;

typedef struct PMC_ConfigDO2CmdLb
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nDO;
	unsigned char DoID[5];
	unsigned char XbotID[5];
	unsigned short CmdLb[5];
	unsigned char Type_[5];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char doNum;
	signed char xIndex;
	unsigned char eventID;
	unsigned short cmdID;
	signed char maxNDo;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ConfigDO2CmdLb_typ;

typedef struct PMC_ConfigDO2Disp
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nDO;
	unsigned char DoID[5];
	unsigned char XbotID[5];
	unsigned char Type_[5];
	unsigned char Mode[5];
	float Threshold[5];
	float XFactor[5];
	float YFactor[5];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char doNum;
	signed char xIndex;
	unsigned char eventID;
	unsigned short cmdID;
	signed char maxNDo;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ConfigDO2Disp_typ;

typedef struct PMC_ConfigDO2Force
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nDO;
	unsigned char DoID[5];
	unsigned char XbotID[5];
	unsigned char Type_[5];
	unsigned char AxisID[5];
	float Threshold[5];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char doNum;
	signed char xIndex;
	unsigned char eventID;
	unsigned short cmdID;
	signed char maxNDo;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ConfigDO2Force_typ;

typedef struct PMC_ConfigDO2Motion
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nDO;
	unsigned char DoID[5];
	unsigned char XbotID[5];
	unsigned char Type_[5];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char doNum;
	signed char xIndex;
	unsigned char eventID;
	unsigned short cmdID;
	signed char maxNDo;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ConfigDO2Motion_typ;

typedef struct PMC_ConfigFBStream
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nStm;
	unsigned char StmID[8];
	unsigned char XbotID[8];
	unsigned char FBMode[8];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char stmNum;
	signed char Index;
	unsigned short cmdID;
	signed char maxNStm;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ConfigFBStream_typ;

typedef struct PMC_CreateXbotGroup
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char GroupID;
	unsigned char nXbots;
	unsigned char XbotID[32];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char xbotNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNXbot;
	unsigned char Level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_CreateXbotGroup_typ;

typedef struct PMC_DeactivateXbots
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_DeactivateXbots_typ;

typedef struct PMC_DeleteXbotGroup
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char GroupID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char Level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_DeleteXbotGroup_typ;

typedef struct PMC_ForceModeCtrl
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char Level;
	unsigned char XbotID;
	float ForceX;
	float ForceY;
	float ForceZ;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ForceModeCtrl_typ;

typedef struct PMC_GetBufferStatus
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned short nCmds;
	unsigned short nextCmdLb;
	unsigned short newCmdLb;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_GetBufferStatus_typ;

typedef struct PMC_GetFlywayTemp
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char FlwID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float Power;
	float CPUTemp;
	float PATemp;
	float MTemp;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_GetFlywayTemp_typ;

typedef struct PMC_GetGroupStatus
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char GroupID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned char nXbots;
	unsigned char XbotID[32];
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char xbotNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNXbot;
	unsigned char Level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_GetGroupStatus_typ;

typedef struct PMC_GetMacroStatus
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char MacroID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned char nCmds;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char Level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_GetMacroStatus_typ;

typedef struct PMC_GetPayload
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float Payload;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_GetPayload_typ;

typedef struct PMC_GetPmcStatus
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned short nXbots;
	float Power;
	float MaxCPUTemp;
	float MaxPATemp;
	float MaxMTemp;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	plcbyte mTemp;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_GetPmcStatus_typ;

typedef struct PMC_GetXbotProperty
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	unsigned char PropertyID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char MoverType;
	float PayloadW;
	float PayloadCG;
	float XDim;
	float YDim;
	float accLimit;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_GetXbotProperty_typ;

typedef struct PMC_GetXbotStatus
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	unsigned char FeedbackType;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned short CmdLb;
	unsigned char FMState;
	unsigned char StarXID;
	unsigned char GroupID;
	unsigned short nCmds;
	float PosX;
	float PosY;
	float PosZ;
	float PosRx;
	float PosRy;
	float PosRz;
	unsigned char StereotypeID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	plcbyte bTemp;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	plcbit IsBlocked;
	plcbit IsPaused;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_GetXbotStatus_typ;

typedef struct PMC_JogVelocity
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	float Direction;
	float Velocity;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_JogVelocity_typ;

typedef struct PMC_LevitationCtrl
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	unsigned char Level;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_LevitationCtrl_typ;

typedef struct PMC_MotionBufferCtrl
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char Level;
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_MotionBufferCtrl_typ;

typedef struct PMC_PauseXbots
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char Level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_PauseXbots_typ;

typedef struct PMC_PlanetMotionCtrl
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char Level;
	unsigned char StarXID;
	unsigned char nXbots;
	unsigned char PlanetXID[32];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char xbotNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNXbot;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_PlanetMotionCtrl_typ;

typedef struct PMC_Reboot
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_Reboot_typ;

typedef struct PMC_ResumeXbots
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char Level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ResumeXbots_typ;

typedef struct PMC_RunMacro
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char MacroID;
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_RunMacro_typ;

typedef struct PMC_SaveMacro
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char MacroID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char Level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_SaveMacro_typ;

typedef struct PMC_SetXbotProperty
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nXbots;
	unsigned char XbotID[14];
	unsigned char PropertyID[14];
	float Value[14];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char xbotNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNXbots;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_SetXbotProperty_typ;

typedef struct PMC_ShortAxisMotion
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Type_;
	float PosZ;
	float PosRx;
	float PosRy;
	float PosRz;
	float VelZ;
	float VelRx;
	float VelRy;
	float VelRz;
	float Cx;
	float Cy;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	plcdword nTemp;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_ShortAxisMotion_typ;

typedef struct PMC_StopXbots
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_StopXbots_typ;

typedef struct PMC_StreamModeCtrl
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char Level;
	unsigned char nXbots;
	unsigned char XbotID[8];
	unsigned char StmID[8];
	unsigned char StmAxis[8];
	float offsetX[8];
	float offsetY[8];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned char xbotNum;
	signed char xIndex;
	unsigned short cmdID;
	signed char maxNXbot;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_StreamModeCtrl_typ;

typedef struct PMC_SyncMotion
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned char nXbots;
	unsigned char XbotID[4];
	float PosX[4];
	float PosY[4];
	float EndVel[4];
	float MaxVel[4];
	float MaxAcc[4];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	unsigned char xbotNum;
	signed char xIndex;
	signed short dd;
	unsigned short cmdID;
	signed char maxNXbot;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_SyncMotion_typ;

typedef struct PMC_WaitUntilCmdLb
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char TriggerXID;
	unsigned char TriggerType;
	unsigned short TriggerCmdLb;
	unsigned char LabelType;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char type_;
	unsigned char count;
	unsigned char option;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_WaitUntilCmdLb_typ;

typedef struct PMC_WaitUntilDisp
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char TriggerXID;
	unsigned char dispMode;
	unsigned char dispType;
	float Threshold;
	float posXFactor;
	float posYFactor;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char type_;
	unsigned char count;
	unsigned char option;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_WaitUntilDisp_typ;

typedef struct PMC_WaitUntilFBDI
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char TriggerDI;
	unsigned char TriggerType;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char type_;
	unsigned char count;
	unsigned char option;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_WaitUntilFBDI_typ;

typedef struct PMC_WaitUntilTimeDelay
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short cmdLB;
	unsigned char XbotID;
	float Delay;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR (analog) */
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned char type_;
	unsigned char count;
	unsigned char option;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit PreExecute;
} PMC_WaitUntilTimeDelay_typ;

typedef struct PMC_AutoRefresh
{
	/* VAR_INPUT (analog) */
	struct PMCDB_struct* PMCDB_pointer;
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	/* VAR (analog) */
	unsigned char FrmCount;
	unsigned long RegVal;
	unsigned long curXID;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_AutoRefresh_typ;

typedef struct PMC_StartUpPlanarMotorSystem
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	signed long timeout_limit;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char NumXbots;
	unsigned char Xbot_IDs[78];
	/* VAR (analog) */
	signed short CmdSta;
	unsigned short errorID_local;
	signed long ideal_loop_counter;
	struct PMC_ActivateXbots PMC_ActivateXbots_db;
	struct PMC_LevitationCtrl PMC_LevitationCtrl_db;
	struct PMC_ReadXbotState PMC_ReadXbotState_db;
	struct PMC_ReadPmcState PMC_ReadPmcState_db;
	unsigned char pmc_state;
	signed long prestep;
	signed long step;
	signed long timeout_counter;
	signed long xbot_array_index;
	signed long xbot_loop_index;
	unsigned char xbot_state;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit aborted_local;
	plcbit busy_local;
	plcbit done_local;
	plcbit error_local;
	plcbit execute_local;
	plcbit PreExecute_local;
} PMC_StartUpPlanarMotorSystem_typ;

typedef struct PMC_CommandManager
{
	/* VAR_INPUT (analog) */
	unsigned short (*FBin_pointer)[200];
	unsigned short (*FBout_pointer)[200];
	unsigned short CompletedTicketNumber;
	unsigned short FindTicketNumberResult;
	/* VAR_OUTPUT (analog) */
	unsigned long FromPMCBufferAddress;
	unsigned long ToPMCBufferAddress;
	unsigned short NewTicket;
	unsigned short ExecutingTicket;
	unsigned long TicketResultAddress;
	/* VAR (analog) */
	unsigned short AvailableTicketNumber;
	signed short CurrentFrameNumber;
	signed short PMCResponseFrameNumber;
	unsigned char CmdCounterToPMC;
	unsigned char CmdCounterFromPMC;
	struct StoredPMCReply StoredPMCReplies[20];
	unsigned char NewStoredPMCReplyIndex;
	signed short Var1;
	/* VAR_INPUT (digital) */
	plcbit IsSetup;
	plcbit GetTicket;
	plcbit SentNewCommand;
	/* VAR (digital) */
	plcbit PMCRespondedCurrentTicket;
} PMC_CommandManager_typ;

typedef struct PMC_XYMotion_2
{
	/* VAR_INPUT (analog) */
	struct PMC_CommandManager* AsyncCmdManager;
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Type_;
	float PosX;
	float PosY;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR (analog) */
	unsigned short TicketNumber;
	signed short CmdSta;
	signed short cmdHB;
	unsigned short timeout;
	signed short cmdHBRtn;
	unsigned short cmdIDRtn;
	signed short dd;
	unsigned short cmdID;
	unsigned long TicketResultAddress;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit SendToPMC;
	plcbit ReadFromPMC;
	plcbit TicketCompleted;
} PMC_XYMotion_2_typ;

typedef struct PMC_ReadStreamFeedback
{
	/* VAR_INPUT (analog) */
	struct PMControllerType* PMController;
	unsigned char Enable;
	unsigned char StreamChannelID;
	unsigned char XBotAxisID;
	/* VAR_OUTPUT (analog) */
	unsigned char Valid;
	float FeedbackPosition;
	/* VAR (analog) */
	unsigned char AxisCount;
	unsigned short ByteOffset;
	unsigned char tempFBAxis;
	unsigned char index;
	unsigned char CurrentAxisOffset;
} PMC_ReadStreamFeedback_typ;



/* Prototyping of functions and function blocks */
_BUR_PUBLIC void PMC_ActivateXbots(struct PMC_ActivateXbots* inst);
_BUR_PUBLIC void PMC_XYMotion(struct PMC_XYMotion* inst);
_BUR_PUBLIC void PMC_ReadXbotState(struct PMC_ReadXbotState* inst);
_BUR_PUBLIC void PMC_ReadDigitalSignalFromPMC(struct PMC_ReadDigitalSignalFromPMC* inst);
_BUR_PUBLIC void PMC_ReadPmcState(struct PMC_ReadPmcState* inst);
_BUR_PUBLIC void PMC_ReadXbotForce(struct PMC_ReadXbotForce* inst);
_BUR_PUBLIC void PMC_ReadXbotPos(struct PMC_ReadXbotPos* inst);
_BUR_PUBLIC void PMC_SendDigitalSignalToPMC(struct PMC_SendDigitalSignalToPMC* inst);
_BUR_PUBLIC void PMC_WriteStream(struct PMC_WriteStream* inst);
_BUR_PUBLIC void PMC_6DMotion(struct PMC_6DMotion* inst);
_BUR_PUBLIC void PMC_6DMotionVelocity(struct PMC_6DMotionVelocity* inst);
_BUR_PUBLIC void PMC_ActivateTrajectory(struct PMC_ActivateTrajectory* inst);
_BUR_PUBLIC void PMC_ArcMotionCenter(struct PMC_ArcMotionCenter* inst);
_BUR_PUBLIC void PMC_ArcMotionTarget(struct PMC_ArcMotionTarget* inst);
_BUR_PUBLIC void PMC_AutoDrivingMotion(struct PMC_AutoDrivingMotion* inst);
_BUR_PUBLIC void PMC_BlockXbotGroup(struct PMC_BlockXbotGroup* inst);
_BUR_PUBLIC void PMC_BondXbotGroup(struct PMC_BondXbotGroup* inst);
_BUR_PUBLIC void PMC_CamMotion(struct PMC_CamMotion* inst);
_BUR_PUBLIC void PMC_CamMotionAdvanced(struct PMC_CamMotionAdvanced* inst);
_BUR_PUBLIC void PMC_ClearMacro(struct PMC_ClearMacro* inst);
_BUR_PUBLIC void PMC_ConfigDI2Reset(struct PMC_ConfigDI2Reset* inst);
_BUR_PUBLIC void PMC_ConfigDI2RunMacro(struct PMC_ConfigDI2RunMacro* inst);
_BUR_PUBLIC void PMC_ConfigDI2Trigger(struct PMC_ConfigDI2Trigger* inst);
_BUR_PUBLIC void PMC_ConfigDO2CmdLb(struct PMC_ConfigDO2CmdLb* inst);
_BUR_PUBLIC void PMC_ConfigDO2Disp(struct PMC_ConfigDO2Disp* inst);
_BUR_PUBLIC void PMC_ConfigDO2Force(struct PMC_ConfigDO2Force* inst);
_BUR_PUBLIC void PMC_ConfigDO2Motion(struct PMC_ConfigDO2Motion* inst);
_BUR_PUBLIC void PMC_ConfigFBStream(struct PMC_ConfigFBStream* inst);
_BUR_PUBLIC void PMC_CreateXbotGroup(struct PMC_CreateXbotGroup* inst);
_BUR_PUBLIC void PMC_DeactivateXbots(struct PMC_DeactivateXbots* inst);
_BUR_PUBLIC void PMC_DeleteXbotGroup(struct PMC_DeleteXbotGroup* inst);
_BUR_PUBLIC void PMC_ForceModeCtrl(struct PMC_ForceModeCtrl* inst);
_BUR_PUBLIC void PMC_GetBufferStatus(struct PMC_GetBufferStatus* inst);
_BUR_PUBLIC void PMC_GetFlywayTemp(struct PMC_GetFlywayTemp* inst);
_BUR_PUBLIC void PMC_GetGroupStatus(struct PMC_GetGroupStatus* inst);
_BUR_PUBLIC void PMC_GetMacroStatus(struct PMC_GetMacroStatus* inst);
_BUR_PUBLIC void PMC_GetPayload(struct PMC_GetPayload* inst);
_BUR_PUBLIC void PMC_GetPmcStatus(struct PMC_GetPmcStatus* inst);
_BUR_PUBLIC void PMC_GetXbotProperty(struct PMC_GetXbotProperty* inst);
_BUR_PUBLIC void PMC_GetXbotStatus(struct PMC_GetXbotStatus* inst);
_BUR_PUBLIC void PMC_JogVelocity(struct PMC_JogVelocity* inst);
_BUR_PUBLIC void PMC_LevitationCtrl(struct PMC_LevitationCtrl* inst);
_BUR_PUBLIC void PMC_MotionBufferCtrl(struct PMC_MotionBufferCtrl* inst);
_BUR_PUBLIC void PMC_PauseXbots(struct PMC_PauseXbots* inst);
_BUR_PUBLIC void PMC_PlanetMotionCtrl(struct PMC_PlanetMotionCtrl* inst);
_BUR_PUBLIC void PMC_Reboot(struct PMC_Reboot* inst);
_BUR_PUBLIC void PMC_ResumeXbots(struct PMC_ResumeXbots* inst);
_BUR_PUBLIC void PMC_RunMacro(struct PMC_RunMacro* inst);
_BUR_PUBLIC void PMC_SaveMacro(struct PMC_SaveMacro* inst);
_BUR_PUBLIC void PMC_SetXbotProperty(struct PMC_SetXbotProperty* inst);
_BUR_PUBLIC void PMC_ShortAxisMotion(struct PMC_ShortAxisMotion* inst);
_BUR_PUBLIC void PMC_StopXbots(struct PMC_StopXbots* inst);
_BUR_PUBLIC void PMC_StreamModeCtrl(struct PMC_StreamModeCtrl* inst);
_BUR_PUBLIC void PMC_SyncMotion(struct PMC_SyncMotion* inst);
_BUR_PUBLIC void PMC_WaitUntilCmdLb(struct PMC_WaitUntilCmdLb* inst);
_BUR_PUBLIC void PMC_WaitUntilDisp(struct PMC_WaitUntilDisp* inst);
_BUR_PUBLIC void PMC_WaitUntilFBDI(struct PMC_WaitUntilFBDI* inst);
_BUR_PUBLIC void PMC_WaitUntilTimeDelay(struct PMC_WaitUntilTimeDelay* inst);
_BUR_PUBLIC void PMC_AutoRefresh(struct PMC_AutoRefresh* inst);
_BUR_PUBLIC void PMC_StartUpPlanarMotorSystem(struct PMC_StartUpPlanarMotorSystem* inst);
_BUR_PUBLIC void PMC_CommandManager(struct PMC_CommandManager* inst);
_BUR_PUBLIC void PMC_XYMotion_2(struct PMC_XYMotion_2* inst);
_BUR_PUBLIC void PMC_ReadStreamFeedback(struct PMC_ReadStreamFeedback* inst);


#ifdef __cplusplus
};
#endif
#endif /* _PMCPWRLINK_ */

