/* Automation Studio generated header file */
/* Do not edit ! */
/* PMCPwrLink 6.55.0 */

#ifndef _PMCPWRLINK_
#define _PMCPWRLINK_
#ifdef __cplusplus
extern "C" 
{
#endif
#ifndef _PMCPwrLink_VERSION
#define _PMCPwrLink_VERSION 6.55.0
#endif

#include <bur/plctypes.h>

#ifndef _BUR_PUBLIC
#define _BUR_PUBLIC
#endif
/* Datatypes and datatypes of function blocks */
typedef struct PMCConstantsType
{	unsigned short H2P_FRMC_OFFSET;
	unsigned short H2P_CMDC_OFFSET;
	unsigned short H2P_CMDID_OFFSET;
	unsigned short H2P_CMDLB_OFFSET;
	unsigned short H2P_DATA_OFFSET;
	unsigned short H2P_DATA_END_OFFSET;
	unsigned short H2P_EVENTACK_OFFSET;
	unsigned short H2P_EVENTID_OFFSET;
	unsigned short H2P_STM_OFFSET;
	unsigned short H2P_DO_OFFSET;
	unsigned short P2H_FRMC_OFFSET;
	unsigned short P2H_CMDC_OFFSET;
	unsigned short P2H_CMDID_OFFSET;
	unsigned short P2H_CMDLB_OFFSET;
	unsigned short P2H_RTN_OFFSET;
	unsigned short P2H_DATA_OFFSET;
	unsigned short P2H_PMC_STATE_OFFSET;
	unsigned short P2H_REGION_STATE_OFFSET;
	unsigned short P2H_TIMESTAMP_OFFSET;
	unsigned short P2H_FB_FRAME_NUM_OFFSET;
	unsigned short P2H_NUM_ACCIDENT_OFFSET;
	unsigned short P2H_NUM_INCOMING_OFFSET;
	unsigned short P2H_EVENT_OFFSET;
	unsigned short P2H_XBOT_STATE_OFFSET;
	unsigned short P2H_MUX_OFFSET;
	unsigned short P2H_REAL_TIME_OFFSET;
	unsigned short P2H_XBOT_STATE_FRAME_NUM_OFFSET;
	unsigned short P2H_FRMC_OFFSET2;
	unsigned short P2H_DI_OFFSET;
	unsigned short P2H_PROTOCOL_OFFSET;
	unsigned short PMC_TIMEOUT;
	unsigned short TICKET_TIMEOUT;
	unsigned short PMCDB_MAXXBOTS;
} PMCConstantsType;

typedef struct PMCDBType
{	unsigned char XbotStateFieldbusRaw[200];
	unsigned char StereoID[127];
	unsigned char XbotStatus[127];
	plcbit XIDScan[127];
	float PosX[127];
	float PosY[127];
	float PosZ[127];
	float PosRx[127];
	float PosRy[127];
	float PosRz[127];
	float FeedbackX[127];
	float FeedbackY[127];
	float FeedbackZ[127];
	float FeedbackRx[127];
	float FeedbackRy[127];
	float FeedbackRz[127];
	unsigned char FeedbackXID[127];
	float ForceX[127];
	float ForceY[127];
	float ForceZ[127];
	float ForceRx[127];
	float ForceRy[127];
	float ForceRz[127];
} PMCDBType;

typedef struct PMCFuncInfoType
{	unsigned char CmdSta;
	unsigned char TicketNumber;
	unsigned short EventID;
	plcbit SendToPMC;
	plcbit ReadFromPMC;
	signed long MsgPartNStatus;
	signed long LastMsgPartNStatus;
} PMCFuncInfoType;

typedef struct PMCTicketType
{	unsigned char AvailableTicket;
	unsigned char ExecutingTicket;
	plcbit TicketStatus[256];
	plcbit TicketExpired[256];
	unsigned short TicketTimeout;
} PMCTicketType;

typedef struct PMCEventType
{	unsigned short AvailableEventID;
	plcbit ExecutingEventID[5001];
	unsigned char EventCode[5001];
} PMCEventType;

typedef struct PMControllerType
{	unsigned short DataFromPMC[200];
	unsigned short DataToPMC[200];
	signed char ConfiguredFeedbackStreamAxis;
	struct PMCDBType PMCDB;
	struct PMCTicketType TicketMgmt;
	struct PMCEventType EventMgmt;
	struct PMCConstantsType PMC_Constants;
	unsigned short PrevEventID1;
	signed char PrevEventCode1;
	unsigned short PrevEventID2;
	signed char PrevEventCode2;
	unsigned char PrevFrmCountFromPMC;
	unsigned short NumMissedFrames;
} PMControllerType;

typedef struct PMC_6DMotion
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_6DMotion_typ;

typedef struct PMC_6DMotionVelocity
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	float TargetPos[6];
	float LongAxisAccVel[2];
	float ShortAxisVel[4];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_6DMotionVelocity_typ;

typedef struct PMC_6DMotionVelocity_Comp
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	float TargetPos[6];
	float LongAxisAccVel[2];
	float ShortAxisVel[4];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_6DMotionVelocity_Comp_typ;

typedef struct PMC_ActivateTrajectory
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char nXbots;
	unsigned char XbotID[12];
	unsigned char TrajID[12];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char xbotNum;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	signed char maxNXbots;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_ActivateTrajectory_typ;

typedef struct PMC_ActivateXbots
{
	/* VAR_INPUT (analog) */
	unsigned char IDMode;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned char IDModeSent;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_ActivateXbots_typ;

typedef struct PMC_App_AutoDriveToRail
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char XbotID[127];
	float MaxVel;
	float MaxAcc;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned char xIndex;
	unsigned char totalXbotNum;
	unsigned char beginning_index;
	unsigned char numXbotsToSend;
	unsigned short cmdID;
	unsigned char maxNXbotFirstFrame;
	unsigned char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_App_AutoDriveToRail_typ;

typedef struct PMC_App_CanXbotRecoverToRail
{
	/* VAR_INPUT (analog) */
	unsigned short XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char CanRecover;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_CanXbotRecoverToRail_typ;

typedef struct PMC_App_CheckXbotOnRail
{
	/* VAR_INPUT (analog) */
	unsigned short XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char OnRail;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_CheckXbotOnRail_typ;

typedef struct PMC_App_GetAllStationXbots
{
	/* VAR_INPUT (analog) */
	unsigned char StateFilterCount;
	unsigned char XbotStateFilters[16];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned short NumBays;
	unsigned short StationIDs[5000];
	unsigned char BayIDs[5000];
	unsigned char XbotIDs[5000];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long beginning_index;
	signed char numBaysToRead;
	unsigned short cmdID;
	signed char maxNBayPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_GetAllStationXbots_typ;

typedef struct PMC_App_GetAnyStationXbots
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned short NumBays;
	unsigned short StationIDs[5000];
	unsigned char BayIDs[5000];
	unsigned char XbotIDs[5000];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_App_GetAllStationXbots GetAllXbotID;
	unsigned char StateFilterCount;
	unsigned char XbotStateFilters[16];
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_App_GetAnyStationXbots_typ;

typedef struct PMC_App_GetBayXbotID
{
	/* VAR_INPUT (analog) */
	unsigned short StationID;
	unsigned char BayID;
	unsigned char hasRadius;
	float Radius;
	unsigned char StateFilterCount;
	unsigned char XbotStateFilters[16];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char XbotID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed short index;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_GetBayXbotID_typ;

typedef struct PMC_App_GetBayAnyXbot
{
	/* VAR_INPUT (analog) */
	unsigned short StationID;
	unsigned char BayID;
	unsigned char hasRadius;
	float Radius;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char XbotID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_App_GetBayXbotID GetBayXbotID;
	unsigned char StateFilterCount;
	unsigned char XbotStateFilters[16];
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_App_GetBayAnyXbot_typ;

typedef struct PMC_App_GetBayIdleXbot
{
	/* VAR_INPUT (analog) */
	unsigned short StationID;
	unsigned char BayID;
	unsigned char hasRadius;
	float Radius;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char XbotID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_App_GetBayXbotID GetBayXbotID;
	unsigned char StateFilterCount;
	unsigned char XbotStateFilters[16];
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_App_GetBayIdleXbot_typ;

typedef struct PMC_App_GetDesign
{
	/* VAR_INPUT (analog) */
	unsigned char DesignID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	signed long nBytes;
	/* VAR_IN_OUT (analog and digital) */
	signed char (*Bytes)[500000];
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long totalByteNum;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long beginning_index;
	signed char numBytesToRead;
	unsigned short cmdID;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_GetDesign_typ;

typedef struct PMC_App_GetStationXbotIDs
{
	/* VAR_INPUT (analog) */
	unsigned short StationID;
	unsigned char hasRadius;
	float Radius;
	unsigned char StateFilterCount;
	unsigned char XbotStateFilters[16];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char NumBays;
	unsigned char XbotIDs[30];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed short index;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_GetStationXbotIDs_typ;

typedef struct PMC_App_GetStationAnyXbot
{
	/* VAR_INPUT (analog) */
	unsigned short StationID;
	unsigned char hasRadius;
	float Radius;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char NumBays;
	unsigned char XbotIDs[30];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_App_GetStationXbotIDs GetStationXbotID;
	unsigned char StateFilterCount;
	unsigned char XbotStateFilters[16];
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_App_GetStationAnyXbot_typ;

typedef struct PMC_App_GetStationConfig
{
	/* VAR_INPUT (analog) */
	unsigned short StationID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	plcstring StationName[81];
	unsigned char nBays;
	unsigned char BayID[30];
	float BayX[30];
	float BayY[30];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	unsigned char numBaysToRead;
	unsigned char NumReadFramesNeeded;
	signed long beginning_index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char MaxNBays;
	unsigned char MaxNBaysPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_GetStationConfig_typ;

typedef struct PMC_App_GetStationIdleXbot
{
	/* VAR_INPUT (analog) */
	unsigned short StationID;
	unsigned char hasRadius;
	float Radius;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char NumBays;
	unsigned char XbotIDs[30];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_App_GetStationXbotIDs GetStationXbotID;
	unsigned char StateFilterCount;
	unsigned char XbotStateFilters[16];
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_App_GetStationIdleXbot_typ;

typedef struct PMC_App_GetStationIDs
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nStations;
	unsigned short StationID[100];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	unsigned char numStationsToRead;
	unsigned char NumReadFramesNeeded;
	signed long beginning_index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char MaxNStations;
	unsigned char MaxNStationsPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_GetStationIDs_typ;

typedef struct PMC_App_GetStationIDsMultiPMC
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned short nStations;
	unsigned short StationID[10200];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	unsigned char numStationsToRead;
	signed long NumReadFramesNeeded;
	signed long beginning_index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned short MaxNStations;
	unsigned char MaxNStationsPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_GetStationIDsMultiPMC_typ;

typedef struct PMC_App_GetXbotTarget
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned short StationID;
	unsigned char BayID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed short index;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_GetXbotTarget_typ;

typedef struct PMC_App_HoldForStationArrival
{
	/* VAR_INPUT (analog) */
	unsigned short StationID;
	unsigned char BayID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_App_HoldForStationArrival_typ;

typedef struct PMC_App_HoldForBay
{
	/* VAR_INPUT (analog) */
	unsigned short StationID;
	unsigned char BayID;
	unsigned char StateFilterCount;
	unsigned char XbotStateFilters[16];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char XbotID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_App_HoldForStationArrival SetBayArrivalEvent;
	struct PMC_App_GetBayXbotID GetBayXbotID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_App_HoldForBay_typ;

typedef struct PMC_App_RecoverXbotToRail
{
	/* VAR_INPUT (analog) */
	unsigned short XbotID;
	float MaxVel;
	float MaxAcc;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_App_RecoverXbotToRail_typ;

typedef struct PMC_App_SaveDesign
{
	/* VAR_INPUT (analog) */
	signed long nBytes;
	unsigned char DesignID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	signed char (*Bytes)[500000];
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long totalByteNum;
	signed long beginning_index;
	signed char numBytesToSend;
	unsigned short cmdID;
	signed long maxNByte;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_App_SaveDesign_typ;

typedef struct PMC_App_SendXbotToStation
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned short StationID;
	unsigned char BayID;
	unsigned char WaitForFreeBay;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_App_SendXbotToStation_typ;

typedef struct PMC_App_SendXbotToStationSpeed
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned short StationID;
	unsigned char BayID;
	unsigned char WaitForFreeBay;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	unsigned char OverrideRailSpeed;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_App_SendXbotToStationSpeed_typ;

typedef struct PMC_ArcMotionCenter
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char aDef;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_ArcMotionCenter_typ;

typedef struct PMC_ArcMotionTarget
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char aDef;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_ArcMotionTarget_typ;

typedef struct PMC_AutoDrivingMotion
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char RoutingType;
	unsigned char ZoneID;
	unsigned char XbotID[78];
	float PosX[78];
	float PosY[78];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char totalXbotNum;
	signed char xIndex;
	signed char beginning_index;
	signed char numXbotsToSend;
	unsigned char Byte15Temp;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	signed char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	plcbit OverhangAllowed;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_AutoDrivingMotion_typ;

typedef struct PMC_AutoDrivingMotionVelocity
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char RoutingType;
	unsigned char ZoneID;
	unsigned char XbotID[78];
	float PosX[78];
	float PosY[78];
	float MaxVel;
	float MaxAcc;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char xIndex;
	signed char totalXbotNum;
	signed char beginning_index;
	signed char numXbotsToSend;
	unsigned char Byte14Temp;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	signed char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	plcbit OverhangAllowed;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_AutoDrivingMotionVelocity_typ;

typedef struct PMC_AutoLoadingZone_Activate
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	unsigned char NextXbotID;
	unsigned char NextXbotOrientation;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned char Mode;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_AutoLoadingZone_Activate_typ;

typedef struct PMC_AutoLoadingZone_Create
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	unsigned char ZoneMode;
	unsigned char UnloadingMode;
	unsigned char LoadingDirection;
	unsigned char LoadFailResetMode;
	float ZoneCenterX;
	float ZoneCenterY;
	float ZoneLength;
	float ZoneWidth;
	unsigned char MoverType;
	float MaxXbotSizeX;
	float MaxXbotSizeY;
	float MaxVel;
	float MaxAcc;
	float MaxHeight;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned char Mode;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_AutoLoadingZone_Create_typ;

typedef struct PMC_AutoLoadingZone_Deactivate
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned char Mode;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_AutoLoadingZone_Deactivate_typ;

typedef struct PMC_AutoLoadingZone_Delete
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned char Mode;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_AutoLoadingZone_Delete_typ;

typedef struct PMC_AutoLoadingZone_GetAllStatus
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nZones;
	unsigned char ZoneIDs[40];
	unsigned char ZoneStates[40];
	unsigned char EntranceExitStates[40];
	unsigned char XbotIDs[40];
	unsigned char LoadingErrorCode[40];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	unsigned char totalZoneNum;
	signed long index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long beginning_index;
	signed char numZonesToRead;
	unsigned short cmdID;
	signed char maxNZonePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_AutoLoadingZone_GetAllStatus_typ;

typedef struct PMC_AutoLoadingZone_GetStatus
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char ZoneState;
	unsigned char EntranceExitState;
	unsigned char numXbots;
	unsigned char xbotID;
	float ZoneX;
	float ZoneY;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_AutoLoadingZone_GetStatus_typ;

typedef struct PMC_AutoLoadingZone_UnloadXbot
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_AutoLoadingZone_UnloadXbot_typ;

typedef struct PMC_AutoLoadingZon_HoldZoneReady
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char ZoneState;
	unsigned char EntranceExitState;
	unsigned char numXbots;
	unsigned char xbotID;
	float ZoneX;
	float ZoneY;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	signed short CmdSta;
	struct PMC_AutoLoadingZone_GetStatus PMC_GetZoneStatus_db;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit xbot_is_in_zone_or_error;
} PMC_AutoLoadingZon_HoldZoneReady_typ;

typedef struct PMC_AutoLoadZone_LoadZoneClear
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	unsigned char NextXbotID;
	unsigned char NextXbotOrientation;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_AutoLoadZone_LoadZoneClear_typ;

typedef struct PMC_AutoRefresh
{
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned char FrmCount;
	signed short curXID;
	unsigned short EventID1;
	unsigned short EventID2;
	signed char EventAck;
	unsigned char nextTicketIndex;
	signed short tempCounter;
	unsigned char XbotStateFrame;
	unsigned char XbotStateFrameNum;
	signed char Frame_Num;
	signed char Num_xbots_per_frame;
	unsigned char stream_index;
	signed char Num_axis_enabled;
	unsigned char stream_offset;
	unsigned long VersionNum;
	unsigned char P2H_FrmCount1;
	unsigned char P2H_FrmCount2;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	/* VAR (digital) */
	plcbit X_enabled;
	plcbit Y_enabled;
	plcbit Z_enabled;
	plcbit Rx_enabled;
	plcbit Ry_enabled;
	plcbit Rz_enabled;
} PMC_AutoRefresh_typ;

typedef struct PMC_BlockXbotGroup
{
	/* VAR_INPUT (analog) */
	unsigned char GroupID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char Level;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	plcbit IsBlock;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_BlockXbotGroup_typ;

typedef struct PMC_BondXbotGroup
{
	/* VAR_INPUT (analog) */
	unsigned char GroupID;
	unsigned char Mode;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char Level;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	plcbit IsBond;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_BondXbotGroup_typ;

typedef struct PMC_CamModeCtrl
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char axisNum;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_CamModeCtrl_typ;

typedef struct PMC_CamModeCtrlAdvanced
{
	/* VAR_INPUT (analog) */
	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];
	float MasterAOffset[4];
	float SlaveAOffset[4];
	float MasterAScaling[4];
	float SlaveAScaling[4];
	unsigned char CamMode[4];
	unsigned char MasterOffsetMode[4];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	unsigned char MasterDirection[4];
	signed short cmdHB;
	unsigned char axisNum;
	signed char xIndex;
	unsigned char ModeByte;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_CamModeCtrlAdvanced_typ;

typedef struct PMC_CamModeCtrlBufferable
{
	/* VAR_INPUT (analog) */
	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];
	float MasterAScaling[4];
	float SlaveAScaling[4];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	unsigned char cmdHB;
	unsigned char axisNum;
	signed char xIndex;
	signed char dummy_zero;
	unsigned short cmdID;
	signed char maxNAxis;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_CamModeCtrlBufferable_typ;

typedef struct PMC_ClearMacro
{
	/* VAR_INPUT (analog) */
	unsigned char MacroID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_ClearMacro_typ;

typedef struct PMC_ConfigDI2Cam
{
	/* VAR_INPUT (analog) */
	unsigned char DiID;
	unsigned char SlaveXID;
	unsigned char nAxis;
	unsigned char SlaveAID[4];
	unsigned char camID[4];
	unsigned char MasterXID[4];
	unsigned char MasterAID[4];
	float MasterAOffset[4];
	float SlaveAOffset[4];
	float MasterAScaling[4];
	float SlaveAScaling[4];
	unsigned char CamMode[4];
	unsigned char MasterOffsetMode[4];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	unsigned char MasterDirection[4];
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned char axisNum;
	signed char xIndex;
	unsigned char ModeByte;
	unsigned short cmdID;
	signed char maxNAxis;
	unsigned char commandType;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_ConfigDI2Cam_typ;

typedef struct PMC_ConfigDI2QuickStop
{
	/* VAR_INPUT (analog) */
	unsigned char nDI;
	unsigned char DiID[22];
	unsigned char SectorID[22];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	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 DummyDone;
} PMC_ConfigDI2QuickStop_typ;

typedef struct PMC_ConfigDI2Reset
{
	/* VAR_INPUT (analog) */
	unsigned char nDI;
	unsigned char DiID[22];
	unsigned char RstDoID[22];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char diNum;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_ConfigDI2Reset_typ;

typedef struct PMC_ConfigDI2RunMacro
{
	/* VAR_INPUT (analog) */
	unsigned char nDI;
	unsigned char DiID[22];
	unsigned char MacroID[22];
	unsigned char XbotID[22];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char diNum;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_ConfigDI2RunMacro_typ;

typedef struct PMC_ConfigDI2Trigger
{
	/* VAR_INPUT (analog) */
	unsigned char nDI;
	unsigned char DiID[22];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char diNum;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_ConfigDI2Trigger_typ;

typedef struct PMC_ConfigDO2CmdLb
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char doNum;
	signed char xIndex;
	unsigned char eventID;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_ConfigDO2CmdLb_typ;

typedef struct PMC_ConfigDO2Disp
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char doNum;
	signed char xIndex;
	unsigned char eventID;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_ConfigDO2Disp_typ;

typedef struct PMC_ConfigDO2Force
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char doNum;
	signed char xIndex;
	unsigned char eventID;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_ConfigDO2Force_typ;

typedef struct PMC_ConfigDO2Motion
{
	/* VAR_INPUT (analog) */
	unsigned char nDO;
	unsigned char DoID[5];
	unsigned char XbotID[5];
	unsigned char Type_[5];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char doNum;
	signed char xIndex;
	unsigned char eventID;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_ConfigDO2Motion_typ;

typedef struct PMC_ConfigDO2Zone
{
	/* VAR_INPUT (analog) */
	unsigned char nDO;
	unsigned char DoID[5];
	unsigned char ZoneID[5];
	unsigned char Type_[5];
	unsigned char Threshold[5];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	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 DummyDone;
} PMC_ConfigDO2Zone_typ;

typedef struct PMC_ConfigFBStream
{
	/* VAR_INPUT (analog) */
	unsigned char nStm;
	unsigned char StmID[8];
	unsigned char XbotID[8];
	unsigned char FBMode[8];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char stmNum;
	signed char Index;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_ConfigFBStream_typ;

typedef struct PMC_ConfigFBStreamExtended
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char XbotID[150];
	unsigned char FBMode[150];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	unsigned char index;
	signed char dummy_zero;
	signed short cmdHB;
	signed char totalXbotNum;
	signed char xIndex;
	signed char beginning_index;
	signed char numXbotsToSend;
	unsigned short cmdID;
	signed char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_ConfigFBStreamExtended_typ;

typedef struct PMC_Config_GetConfiguration
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	signed long nBytes;
	/* VAR_IN_OUT (analog and digital) */
	signed char (*Bytes)[500000];
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long totalByteNum;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long beginning_index;
	signed char numBytesToRead;
	unsigned short cmdID;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Config_GetConfiguration_typ;

typedef struct PMC_Config_SetConfiguration
{
	/* VAR_INPUT (analog) */
	signed long nBytes;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	signed char (*Bytes)[500000];
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long totalByteNum;
	signed long beginning_index;
	signed char numBytesToSend;
	unsigned short cmdID;
	signed long maxNByte;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Config_SetConfiguration_typ;

typedef struct PMC_ControllerReset
{
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned char NumCycles;
	signed long i;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
} PMC_ControllerReset_typ;

typedef struct PMC_CreateXbotGroup
{
	/* VAR_INPUT (analog) */
	unsigned char GroupID;
	unsigned char nXbots;
	unsigned char XbotID[32];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char xbotNum;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_CreateXbotGroup_typ;

typedef struct PMC_DeactivateXbots
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_DeactivateXbots_typ;

typedef struct PMC_DeleteTrajectory
{
	/* VAR_INPUT (analog) */
	unsigned char TrajID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	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 DummyDone;
} PMC_DeleteTrajectory_typ;

typedef struct PMC_DeleteXbotGroup
{
	/* VAR_INPUT (analog) */
	unsigned char GroupID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_DeleteXbotGroup_typ;

typedef struct PMC_ReadXbotPos
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	float PosX;
	float PosY;
	float PosZ;
	float PosRx;
	float PosRy;
	float PosRz;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned char curXID;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadXbotPos_typ;

typedef struct PMC_ReadXbotState
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned char State;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned char ByteOffset;
	unsigned char BitOffset;
	unsigned char uTemp;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadXbotState_typ;

typedef struct PMC_ReadXbotIDs
{
	/* VAR_OUTPUT (analog) */
	unsigned char NumXbots;
	unsigned char Xbot_IDs[78];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	signed long xbot_array_index;
	signed long xbot_loop_index;
	unsigned char xbot_state;
	struct PMC_ReadXbotState PMC_ReadXbotState_db;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	/* VAR (digital) */
	plcbit done_local;
} PMC_ReadXbotIDs_typ;

typedef struct PMC_FindXbotsInArea
{
	/* VAR_INPUT (analog) */
	float BottomLeftX;
	float BottomLeftY;
	float TopRightX;
	float TopRightY;
	/* VAR_OUTPUT (analog) */
	unsigned char nXbots;
	unsigned char XbotIDs[78];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_ReadXbotPos ReadXbotPos;
	struct PMC_ReadXbotIDs ReadXbotIDs;
	unsigned char AllXbotIDs[78];
	unsigned char AllXbotIndex;
	unsigned char InZoneIndex;
	float Tolerance;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_FindXbotsInArea_typ;

typedef struct PMC_ForceModeCtrl
{
	/* VAR_INPUT (analog) */
	unsigned char Mode;
	unsigned char Level;
	unsigned char Buffer;
	unsigned char XbotID;
	float ForceX;
	float ForceY;
	float ForceZ;
	float TorqueZ;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_ForceModeCtrl_typ;

typedef struct PMC_ForceModeCtrlEx
{
	/* VAR_INPUT (analog) */
	unsigned char Mode;
	unsigned char Level;
	unsigned char Buffer;
	unsigned char XbotID;
	float ForceX;
	float ForceY;
	float ForceZ;
	float TorqueX;
	float TorqueY;
	float TorqueZ;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_ForceModeCtrlEx_typ;

typedef struct PMC_GCode_DeleteGCode
{
	/* VAR_INPUT (analog) */
	unsigned char GCodeID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	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 DummyDone;
} PMC_GCode_DeleteGCode_typ;

typedef struct PMC_GCode_GetGCodeIDs
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nIDs;
	unsigned char GCodeIDs[64];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char totalByteNum;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	signed long beginning_index;
	signed char numBytesToRead;
	unsigned short cmdID;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GCode_GetGCodeIDs_typ;

typedef struct PMC_GCode_ReadGCode
{
	/* VAR_INPUT (analog) */
	unsigned char GCodeID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	signed long nBytes;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	signed char (*Bytes)[200000];
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long totalByteNum;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	signed long beginning_index;
	signed char numBytesToRead;
	unsigned short cmdID;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GCode_ReadGCode_typ;

typedef struct PMC_GCode_RunGCode
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char GCodeID;
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_GCode_RunGCode_typ;

typedef struct PMC_GCode_SaveGCode
{
	/* VAR_INPUT (analog) */
	unsigned char GCodeID;
	signed long nBytes;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	signed char (*Bytes)[200000];
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	signed long totalByteNum;
	signed long beginning_index;
	signed char numBytesToSend;
	unsigned short cmdID;
	signed long maxNByte;
	signed char maxNBytePerFrame;
	signed char mode;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GCode_SaveGCode_typ;

typedef struct PMC_GetAllAccidentLocations
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nAccidents;
	float AccidentBottomLeftX[225];
	float AccidentBottomLeftY[225];
	float AccidentTopRightX[225];
	float AccidentTopRightY[225];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long beginning_index;
	unsigned char numAccidentsToRead;
	unsigned short cmdID;
	unsigned char maxNAccidentPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetAllAccidentLocations_typ;

typedef struct PMC_GetAllAccidentXbots
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nXbots;
	unsigned char XbotIDs[150];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long totalByteNum;
	signed long index;
	signed char dummy_zero;
	signed short cmdHB;
	signed long beginning_index;
	signed char numBytesToRead;
	unsigned short cmdID;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetAllAccidentXbots_typ;

typedef struct PMC_GetAllFailedFlyways
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nFlyways;
	unsigned char FlywayID[200];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	unsigned char numFlywaysToRead;
	unsigned char NumReadFramesNeeded;
	signed long beginning_index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char MaxNFlyways;
	unsigned char MaxNFlywaysPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetAllFailedFlyways_typ;

typedef struct PMC_GetFlywayConnectErrorCounts
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nFlyways;
	unsigned char FlywayStatus[200];
	unsigned long ConnectionErrorCount[200];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	signed char dummy_zero;
	unsigned char StatusTemp;
	unsigned char cmdHB;
	signed long beginning_index;
	unsigned char numFlywaysToRead;
	unsigned short cmdID;
	unsigned char maxNFlywayPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetFlywayConnectErrorCounts_typ;

typedef struct PMC_GetAllFlywayNetErrors
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nFlyways;
	unsigned char FlywayStatus[200];
	unsigned long ConnectionErrorCount[200];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_GetFlywayConnectErrorCounts GetFlywayConnectErrorCounts;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_GetAllFlywayNetErrors_typ;

typedef struct PMC_GetPMNetErrorCounts
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nFlyways;
	unsigned char FlywayNorthConnectionErrorCount[200];
	unsigned char FlywayEastConnectionErrorCount[200];
	unsigned char FlywaySouthConnectionErrorCount[200];
	unsigned char FlywayWestConnectionErrorCount[200];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long beginning_index;
	unsigned char numFlywaysToRead;
	unsigned short cmdID;
	unsigned char maxNFlywayPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetPMNetErrorCounts_typ;

typedef struct PMC_GetAllFlywayNetErrorsEx
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nFlyways;
	unsigned char FlywayNorthConnectionErrorCount[200];
	unsigned char FlywayEastConnectionErrorCount[200];
	unsigned char FlywaySouthConnectionErrorCount[200];
	unsigned char FlywayWestConnectionErrorCount[200];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_GetPMNetErrorCounts GetPMNetErrorCounts;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_GetAllFlywayNetErrorsEx_typ;

typedef struct PMC_GetBorderStatus
{
	/* VAR_INPUT (analog) */
	unsigned char BorderID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char dummy_zero;
	signed short cmdHB;
	signed short index;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetBorderStatus_typ;

typedef struct PMC_GetBufferStatus
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned short nCmds;
	unsigned short nextCmdLb;
	unsigned short newCmdLb;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_GetBufferStatus_typ;

typedef struct PMC_GetErrorLog
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	signed long nBytes;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	signed char (*Bytes)[100000];
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long totalByteNum;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	signed long beginning_index;
	signed char numBytesToRead;
	unsigned short cmdID;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetErrorLog_typ;

typedef struct PMC_GetFlywayError
{
	/* VAR_INPUT (analog) */
	unsigned char FlywayID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned long FlywayErrorCode;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetFlywayError_typ;

typedef struct PMC_GetFlywayPosition
{
	/* VAR_INPUT (analog) */
	unsigned char FlywayID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float PosX;
	float PosY;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetFlywayPosition_typ;

typedef struct PMC_GetFlywaySerialNum
{
	/* VAR_INPUT (analog) */
	unsigned char FlywayID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned long SerialNumHigh;
	unsigned long SerialNumLow;
	unsigned long FirmwareVersion;
	unsigned long AppDataVersion;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetFlywaySerialNum_typ;

typedef struct PMC_GetFlywayTemp
{
	/* VAR_INPUT (analog) */
	unsigned char FlwID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float Power;
	float CPUTemp;
	float PATemp;
	float MTemp;
	float CPUTempFloat;
	float PATempFloat;
	float MTempFloat;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char intTemp;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetFlywayTemp_typ;

typedef struct PMC_GetFlywayStatus
{
	/* VAR_INPUT (analog) */
	unsigned char FlywayID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float Power;
	float CPUTemp;
	float PATemp;
	float MTemp;
	float CPUTempFloat;
	float PATempFloat;
	float MTempFloat;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_GetFlywayTemp GetFlywayTemp;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_GetFlywayStatus_typ;

typedef struct PMC_GetGroupStatus
{
	/* VAR_INPUT (analog) */
	unsigned char GroupID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned char nXbots;
	unsigned char XbotID[32];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char xbotNum;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_GetGroupStatus_typ;

typedef struct PMC_GetIncomingXbots
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nXbots;
	unsigned char XbotIDs[150];
	unsigned char BorderIDs[150];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long totalXbotNum;
	signed long index;
	signed char dummy_zero;
	signed short cmdHB;
	signed long beginning_index;
	signed char numXbotsToRead;
	unsigned short cmdID;
	signed char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetIncomingXbots_typ;

typedef struct PMC_GetIncomingXbotsEx
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nXbots;
	unsigned char XbotIDs[127];
	unsigned char BorderIDs[127];
	unsigned char MoverTypes[127];
	unsigned short MoverLabels[127];
	unsigned char StereotypeIDs[127];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	unsigned long totalXbotNum;
	signed long index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long beginning_index;
	unsigned char numXbotsToRead;
	unsigned short cmdID;
	unsigned char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetIncomingXbotsEx_typ;

typedef struct PMC_GetMacroStatus
{
	/* VAR_INPUT (analog) */
	unsigned char MacroID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned char nCmds;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_GetMacroStatus_typ;

typedef struct PMC_GetPayload
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float Payload;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetPayload_typ;

typedef struct PMC_GetPlanets
{
	/* VAR_INPUT (analog) */
	unsigned char StarXbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char NumPlanets;
	unsigned char PlanetXbotIDs[32];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetPlanets_typ;

typedef struct PMC_GetPMCErrorCode
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char NumErrors;
	signed long ErrorCodes[9];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed short eIndex;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	signed char maxErrors;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetPMCErrorCode_typ;

typedef struct PMC_GetPMCSerialNum
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned long SerialNumHigh;
	unsigned long SerialNumLow;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetPMCSerialNum_typ;

typedef struct PMC_GetPmcStatus
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned short nXbots;
	float Power;
	float MaxCPUTemp;
	float MaxPATemp;
	float MaxMTemp;
	unsigned char FieldbusStatus;
	unsigned char PMNetStatus;
	unsigned char MoverIDScanStatus;
	unsigned long PMCErrorCode;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	plcbyte mTemp;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetPmcStatus_typ;

typedef struct PMC_GetPMCVersion
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned long VersionNumHigh;
	unsigned long VersionNumLow;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetPMCVersion_typ;

typedef struct PMC_GetPMCWarnings
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nWarnings;
	unsigned long Warnings[100];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long totalByteNum;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long beginning_index;
	signed char numBytesToRead;
	unsigned short cmdID;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetPMCWarnings_typ;

typedef struct PMC_GetSpacedXbotPositions
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nXbots;
	unsigned char XbotIDs[150];
	float PosX[150];
	float PosY[150];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long beginning_index;
	signed char numXbotsToRead;
	unsigned short cmdID;
	signed char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetSpacedXbotPositions_typ;

typedef struct PMC_GetStar
{
	/* VAR_INPUT (analog) */
	unsigned char PlanetXbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char StarXbotID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetStar_typ;

typedef struct PMC_GetWarningLog
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	signed long nBytes;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	signed char (*Bytes)[100000];
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long totalByteNum;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	signed long beginning_index;
	signed char numBytesToRead;
	unsigned short cmdID;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetWarningLog_typ;

typedef struct PMC_GetXbotIDs
{
	/* VAR_OUTPUT (analog) */
	unsigned char NumXbots;
	unsigned char Xbot_IDs[100];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned char xbot_array_index;
	unsigned char XbotID;
	struct PMC_ReadXbotState ReadXbotState;
	unsigned char internal_num_xbots;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
} PMC_GetXbotIDs_typ;

typedef struct PMC_GetXbotProperty
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char MoverType;
	float PayloadW;
	float PayloadCG;
	float XDim;
	float YDim;
	float accLimit;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetXbotProperty_typ;

typedef struct PMC_GetXbotStatus
{
	/* VAR_INPUT (analog) */
	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;
	unsigned char MoverType;
	unsigned short StreamID;
	unsigned char PartState;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	plcbyte bTemp;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_GetXbotStatus_typ;

typedef struct PMC_GroupXYMotion
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char XbotID[32];
	unsigned char LeaderXbotID;
	unsigned char Mode;
	unsigned char Type_;
	float PosX;
	float PosY;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	float Radius;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned char xbotNum;
	signed char xIndex;
	unsigned short cmdID;
	unsigned char maxNXbot;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_GroupXYMotion_typ;

typedef struct PMC_ReadPmcState
{
	/* VAR_OUTPUT (analog) */
	unsigned char State;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadPmcState_typ;

typedef struct PMC_HoldForPMCState
{
	/* VAR_INPUT (analog) */
	unsigned char State;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_ReadPmcState PMC_ReadPMCState_db;
	signed short CmdSta;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Error;
} PMC_HoldForPMCState_typ;

typedef struct PMC_HoldForXbotIdle
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_ReadXbotState PMC_ReadXbotState_db;
	signed short CmdSta;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Error;
} PMC_HoldForXbotIdle_typ;

typedef struct PMC_HoldForXbotsIdle
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char XbotID[78];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_ReadXbotState PMC_ReadXbotState_db;
	signed short CmdSta;
	signed short index;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Error;
	/* VAR (digital) */
	plcbit all_xbots_reached_state;
} PMC_HoldForXbotsIdle_typ;

typedef struct PMC_HoldForXbotsState
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char XbotID[78];
	unsigned char States[78];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_ReadXbotState PMC_ReadXbotState_db;
	signed short CmdSta;
	signed short index;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Error;
	/* VAR (digital) */
	plcbit all_xbots_reached_state;
} PMC_HoldForXbotsState_typ;

typedef struct PMC_HoldForXbotState
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char State;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_ReadXbotState PMC_ReadXbotState_db;
	signed short CmdSta;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Error;
} PMC_HoldForXbotState_typ;

typedef struct PMC_InjectNoise
{
	/* VAR_INPUT (analog) */
	unsigned char Mode;
	unsigned char XbotID;
	unsigned char nAxis;
	unsigned char AxisIDs[6];
	float Amplitudes[6];
	float Frequencies[6];
	float Phases[6];
	float Durations[6];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long Index;
	unsigned short FrequencyUint;
	unsigned short PhaseUint;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char maxNAxis;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_InjectNoise_typ;

typedef struct PMC_InjectNoiseDelay
{
	/* VAR_INPUT (analog) */
	unsigned char Mode;
	unsigned char XbotID;
	unsigned char nAxis;
	unsigned char AxisIDs[6];
	float Amplitudes[6];
	float Frequencies[6];
	float Phases[6];
	float Durations[6];
	float Delays[6];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long Index;
	unsigned short FrequencyUint;
	unsigned short PhaseUint;
	unsigned short DelayUint;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char maxNAxis;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_InjectNoiseDelay_typ;

typedef struct PMC_JogShortAxis
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char AxisID;
	float Velocity;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char AxisMode;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_JogShortAxis_typ;

typedef struct PMC_JogVelocity
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	float Direction;
	float Velocity;
	float Acceleration;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_JogVelocity_typ;

typedef struct PMC_LevitationCtrl
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char Level;
	unsigned char Speed;
	float LandedZForce;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_LevitationCtrl_typ;

typedef struct PMC_LevitationCtrlSpeed
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char Level;
	unsigned char Speed;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_LevitationCtrlSpeed_typ;

typedef struct PMC_LinkedMover_Assign
{
	/* VAR_INPUT (analog) */
	unsigned char LinkID;
	unsigned char XbotID[4];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char LinkedXbotID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed char xIndex;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_LinkedMover_Assign_typ;

typedef struct PMC_LinkedMover_CamSlaves
{
	/* VAR_INPUT (analog) */
	unsigned char LinkID;
	unsigned char MasterAxis;
	float MasterAxisOffset;
	unsigned char NumSlaveAxes;
	unsigned char SlaveID[8];
	unsigned char SlaveAxis[8];
	unsigned char SlaveCamID[8];
	float SlaveAxisOffset[8];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed char xIndex;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_LinkedMover_CamSlaves_typ;

typedef struct PMC_LinkedMover_Define
{
	/* VAR_INPUT (analog) */
	unsigned char LinkID;
	unsigned char nSlaves;
	float SlaveX[4];
	float SlaveY[4];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed char xIndex;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_LinkedMover_Define_typ;

typedef struct PMC_MotionBufferCtrl
{
	/* VAR_INPUT (analog) */
	unsigned char Level;
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MotionBufferCtrl_typ;

typedef struct PMC_MoverID_AutoScan
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_MoverID_AutoScan_typ;

typedef struct PMC_MoverID_ChangeAbsoluteIDs
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char CurrentIDs[200];
	unsigned char NewIDs[200];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long totalXbotNum;
	signed long beginning_index;
	signed char numXbotsToSend;
	unsigned short cmdID;
	signed char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverID_ChangeAbsoluteIDs_typ;

typedef struct PMC_MoverID_GetScanLocation
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char Orientation;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float ScanLocationX;
	float ScanLocationY;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverID_GetScanLocation_typ;

typedef struct PMC_MoverID_ManualScan
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char Orientation;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_MoverID_ManualScan_typ;

typedef struct PMC_MoverID_ReadScanStatus
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned char curXID;
	unsigned char State;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit ScanStatus;
} PMC_MoverID_ReadScanStatus_typ;

typedef struct PMC_MoverID_RecoverID
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char Index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverID_RecoverID_typ;

typedef struct PMC_MoverID_RegisterIDs
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char XbotIDs[127];
	unsigned char MoverType[127];
	unsigned long RFIDHigh[127];
	unsigned long RFIDLow[127];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	unsigned char totalXbotNum;
	unsigned char numXbotsToSend;
	signed long beginning_index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char MaxNXbots;
	unsigned char MaxNXbotsPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverID_RegisterIDs_typ;

typedef struct PMC_MoverID_ScanMoverID
{
	/* VAR_INPUT (analog) */
	unsigned char FlywayID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char Status;
	unsigned long XIDHigh;
	unsigned long XIDLow;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverID_ScanMoverID_typ;

typedef struct PMC_MoverID_Set
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char XbotID[150];
	unsigned long RFIDHigh[150];
	unsigned long RFIDLow[150];
	unsigned char Orientation[150];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned char totalXbotNum;
	unsigned char xIndex;
	unsigned char beginning_index;
	unsigned char numXbotsToSend;
	unsigned short cmdID;
	unsigned char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverID_Set_typ;

typedef struct PMC_MoverLabel_GetLabel
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned short MoverLabel;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverLabel_GetLabel_typ;

typedef struct PMC_MoverLabel_GetXbotID
{
	/* VAR_INPUT (analog) */
	unsigned short MoverLabel;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char XbotID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverLabel_GetXbotID_typ;

typedef struct PMC_MoverLabel_SetLabel
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned short MoverLabel;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverLabel_SetLabel_typ;

typedef struct PMC_MoverStereotype_Assign
{
	/* VAR_INPUT (analog) */
	unsigned char StereotypeID;
	unsigned char XbotID;
	unsigned char BufferAssign;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverStereotype_Assign_typ;

typedef struct PMC_MoverStereotype_Define
{
	/* VAR_INPUT (analog) */
	unsigned char MoverType;
	unsigned char StereotypeID;
	unsigned char PerformanceLevel;
	float Cg[3];
	float PayloadWeight;
	float PayloadSize[4];
	float EmergencyStopDecel;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverStereotype_Define_typ;

typedef struct PMC_MoverStereotype_ReadDef
{
	/* VAR_INPUT (analog) */
	unsigned char MoverType;
	unsigned char StereotypeID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char PerformanceLevel;
	float Cg[3];
	float PayloadWeight;
	float PayloadSize[4];
	float EmergencyStopDecel;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_MoverStereotype_ReadDef_typ;

typedef struct PMC_PauseXbots
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char Level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_PauseXbots_typ;

typedef struct PMC_PlanetMotionCtrl
{
	/* VAR_INPUT (analog) */
	unsigned char Level;
	unsigned char StarXID;
	unsigned char nXbots;
	unsigned char PlanetXID[32];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char xbotNum;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_PlanetMotionCtrl_typ;

typedef struct PMC_ReadDigitalSignalFromPMC
{
	/* VAR_INPUT (analog) */
	unsigned char DiID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* 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_ReadNumAccidentXbots
{
	/* VAR_OUTPUT (analog) */
	unsigned char nXbots;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadNumAccidentXbots_typ;

typedef struct PMC_ReadNumIncomingXbots
{
	/* VAR_OUTPUT (analog) */
	unsigned char nXbots;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadNumIncomingXbots_typ;

typedef struct PMC_ReadStreamFeedback
{
	/* VAR_INPUT (analog) */
	unsigned char StreamChannelID;
	unsigned char XBotAxisID;
	/* VAR_OUTPUT (analog) */
	float FeedbackValue;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned char AxisCount;
	unsigned short ByteOffset;
	unsigned char tempFBAxis;
	signed char index;
	unsigned char CurrentAxisOffset;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadStreamFeedback_typ;

typedef struct PMC_ReadStreamFeedbackExtended
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char XBotAxisID;
	/* VAR_OUTPUT (analog) */
	float FeedbackValue;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadStreamFeedbackExtended_typ;

typedef struct PMC_ReadTimeStamp
{
	/* VAR_OUTPUT (analog) */
	double TimeStamp_ns;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned long TimeStamp_High;
	unsigned long TimeStamp_Low;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadTimeStamp_typ;

typedef struct PMC_ReadTrajectoryHash
{
	/* VAR_INPUT (analog) */
	unsigned char TrajID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char Axises;
	float TimeInterval;
	unsigned char TrajHash[16];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_ReadTrajectoryHash_typ;

typedef struct PMC_ReadXbotForce
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	float Fx;
	float Fy;
	float Fz;
	float Tx;
	float Ty;
	float Tz;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned char curXID;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadXbotForce_typ;

typedef struct PMC_ReadXbotSpeed
{
	/* VAR_INPUT (analog) */
	unsigned char FeedbackType;
	unsigned char ID;
	/* VAR_OUTPUT (analog) */
	float SpeedX;
	float SpeedY;
	float SpeedRz;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_ReadStreamFeedback ReadFeedback;
	struct PMC_ReadStreamFeedbackExtended ReadFeedbackEx;
	struct PMC_ReadTimeStamp ReadTimeStamp;
	float PastX;
	float PastY;
	float PastRz;
	double PastTime_ns;
	unsigned char PastID;
	float PresentX;
	float PresentY;
	float PresentRz;
	double PresentTime_ns;
	unsigned char PresentID;
	signed char Frame_Num;
	signed char Num_axis_enabled;
	signed char Num_xbots_per_frame;
	unsigned char stream_index;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadXbotSpeed_typ;

typedef struct PMC_ReadXbotStateEx
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned char State;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_ReadXbotState ReadXbotState;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadXbotStateEx_typ;

typedef struct PMC_ReadXbotStatus
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned char ControlMode;
	unsigned char MotionStatus;
	unsigned char BufferStatus;
	unsigned char GroupStatus;
	unsigned char PlanetStatus;
	unsigned char LockStatus;
	unsigned char StereotypeID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned char curXID;
	unsigned char StatusByte;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_ReadXbotStatus_typ;

typedef struct PMC_Reboot
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_Reboot_typ;

typedef struct PMC_RecoverAccidentXbot
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char RecoveryMode;
	unsigned char ShortAxis;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_RecoverAccidentXbot_typ;

typedef struct PMC_RecoverFailedFlyway
{
	/* VAR_INPUT (analog) */
	unsigned char FlywayID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_RecoverFailedFlyway_typ;

typedef struct PMC_ResumeXbots
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char Level;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_ResumeXbots_typ;

typedef struct PMC_RFID_GetXbotRFIDs
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char NumRFIDs;
	unsigned long RFIDHighs[150];
	unsigned long RFIDLows[150];
	unsigned char XbotIDs[150];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long beginning_index;
	signed char numXbotsToRead;
	unsigned short cmdID;
	signed char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_RFID_GetXbotRFIDs_typ;

typedef struct PMC_RFID_ResetIDs
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_RFID_ResetIDs_typ;

typedef struct PMC_RotaryMotion
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	signed char BoundaryMode;
	signed char MotionMode;
	signed char WrapMode;
	float Angle;
	float MaxVel;
	float MaxAcc;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned char mode;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_RotaryMotion_typ;

typedef struct PMC_RotaryMotionSpin
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	signed char BoundaryMode;
	float Angle;
	float MaxVel;
	float MaxAcc;
	float Duration;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_RotaryMotionSpin_typ;

typedef struct PMC_RunMacro
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char MacroID;
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_RunMacro_typ;

typedef struct PMC_SaveMacro
{
	/* VAR_INPUT (analog) */
	unsigned char MacroID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	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 DummyDone;
} PMC_SaveMacro_typ;

typedef struct PMC_SaveTrajectory
{
	/* VAR_INPUT (analog) */
	unsigned char TrajID;
	signed long nBytes;
	unsigned char Axises;
	float TimeInterval;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	signed char (*Bytes)[500000];
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed long totalByteNum;
	signed long beginning_index;
	signed char numBytesToSend;
	unsigned short cmdID;
	signed long maxNByte;
	signed char maxNBytePerFrame;
	signed char mode;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_SaveTrajectory_typ;

typedef struct PMC_ScanXID
{
	/* VAR_INPUT (analog) */
	unsigned char FlywayID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char Status;
	unsigned long XIDHigh;
	unsigned long XIDLow;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_ScanXID_typ;

typedef struct PMC_Sector_Activate
{
	/* VAR_INPUT (analog) */
	unsigned char SectorID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	unsigned char mode;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_Sector_Activate_typ;

typedef struct PMC_Sector_Deactivate
{
	/* VAR_INPUT (analog) */
	unsigned char SectorID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	unsigned char mode;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_Sector_Deactivate_typ;

typedef struct PMC_Sector_GetStatus
{
	/* VAR_INPUT (analog) */
	unsigned char SectorID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned char NumXbots;
	unsigned char XbotIDs[32];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Sector_GetStatus_typ;

typedef struct PMC_Sector_Recover
{
	/* VAR_INPUT (analog) */
	unsigned char SectorID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Sector_Recover_typ;

typedef struct PMC_SendDigitalSignalToPMC
{
	/* VAR_INPUT (analog) */
	unsigned char DoID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	signed long ByteOffset;
	signed long BitOffset;
	unsigned char step1;
	unsigned char step2;
	unsigned char step3;
	unsigned char RegVal;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	plcbit Level;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_SendDigitalSignalToPMC_typ;

typedef struct PMC_ServiceModeCtrl
{
	/* VAR_INPUT (analog) */
	unsigned char Level;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_ServiceModeCtrl_typ;

typedef struct PMC_SetConfiguration
{
	/* VAR_INPUT (analog) */
	signed long nBytes;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	signed char (*Bytes)[500000];
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	signed long totalByteNum;
	signed long beginning_index;
	signed char numBytesToSend;
	unsigned short cmdID;
	signed long maxNByte;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_SetConfiguration_typ;

typedef struct PMC_SetDateAndTime
{
	/* VAR_INPUT (analog) */
	unsigned short Year;
	unsigned short Month;
	unsigned short Day;
	unsigned short Hour;
	unsigned short Minute;
	unsigned short Second;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed short index;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_SetDateAndTime_typ;

typedef struct PMC_SetJerkLimit
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char AxisID;
	float JerkLimit;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_SetJerkLimit_typ;

typedef struct PMC_SetXbotOrientation
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char Orientation;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_SetXbotOrientation_typ;

typedef struct PMC_SetXbotProperty
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char XbotID[14];
	unsigned char PropertyID[14];
	float Value[14];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned char xbotNum;
	signed char xIndex;
	unsigned short cmdID;
	unsigned char maxNXbots;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_SetXbotProperty_typ;

typedef struct PMC_ShortAxisMotion
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_ShortAxisMotion_typ;

typedef struct PMC_SingleAxisMotion
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Priority;
	unsigned char AxisID;
	float Pos;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_SingleAxisMotion_typ;

typedef struct PMC_StartUpPlanarMotorSystem
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char NumXbots;
	unsigned char Xbot_IDs[100];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_ActivateXbots PMC_ActivateXbots_db;
	signed long xbot_array_index;
	struct PMC_GetXbotIDs GetXbotIDs;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_StartUpPlanarMotorSystem_typ;

typedef struct PMC_Star_CreateStar
{
	/* VAR_INPUT (analog) */
	unsigned char WheelID;
	unsigned char Direction;
	unsigned char MasterXID;
	float DiscRadius;
	float MaxDiscSpeed;
	float MaxXbotAcc;
	float DiscCenterX;
	float DiscCenterY;
	float StartX;
	float StartY;
	float EndX;
	float EndY;
	float SyncStart;
	float SyncEnd;
	unsigned char NumVials;
	float VialLocations[100];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	signed long totalVialNum;
	signed long beginning_index;
	signed char numVialsToSend;
	signed char Mode;
	unsigned short cmdID;
	signed long maxNByte;
	signed char maxNBytePerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Star_CreateStar_typ;

typedef struct PMC_Star_DeleteStar
{
	/* VAR_INPUT (analog) */
	unsigned char WheelID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned char Mode;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Star_DeleteStar_typ;

typedef struct PMC_Star_GetStarStatus
{
	/* VAR_INPUT (analog) */
	unsigned char WheelID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char WheelState;
	unsigned char EntranceState;
	unsigned char ExitState;
	unsigned char ExitXID;
	float StartX;
	float StartY;
	float EndX;
	float EndY;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Star_GetStarStatus_typ;

typedef struct PMC_Star_SendXbotToStar
{
	/* VAR_INPUT (analog) */
	unsigned char WheelID;
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Star_SendXbotToStar_typ;

typedef struct PMC_Star_StarExitClear
{
	/* VAR_INPUT (analog) */
	unsigned char WheelID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Star_StarExitClear_typ;

typedef struct PMC_StopXbots
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_StopXbots_typ;

typedef struct PMC_StreamModeCtrl
{
	/* VAR_INPUT (analog) */
	unsigned char Level;
	unsigned char nXbots;
	unsigned char Buffer;
	unsigned char XbotID[9];
	unsigned char StmID[9];
	unsigned char StmAxis[9];
	float offsetX[9];
	float offsetY[9];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float StreamStartPosX[9];
	float StreamStartPosY[9];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long numFrames;
	signed char index;
	signed char dummy_zero;
	unsigned char totalXbotNum;
	unsigned char cmdHB;
	unsigned char xIndex;
	signed long beginning_index;
	unsigned char numXbotsToSend;
	signed char numXbotsToRead;
	unsigned short cmdID;
	unsigned char maxNXbotPerFrameSend;
	unsigned char maxNXbot;
	unsigned char maxNXbotPerFrameReply;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_StreamModeCtrl_typ;

typedef struct PMC_SyncMotion
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	unsigned char xbotNum;
	signed char xIndex;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	signed char maxNXbot;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_SyncMotion_typ;

typedef struct PMC_TareXbot
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_TareXbot_typ;

typedef struct PMC_ThroughputTest
{
	/* VAR_OUTPUT (analog) */
	signed long Throughput1ms;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	signed long i;
	signed char InputByte;
	signed char OutputByte;
	struct RTCtime_typ StartRTCTime;
	struct RTCtime_typ EndRTCTime;
	unsigned short StartError;
	unsigned short EndError;
	signed long CopyTime_ms;
	signed long NumCopies;
	signed long NumPerCycle;
	signed long SendTime_ms;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
} PMC_ThroughputTest_typ;

typedef struct PMC_VirtualXbotReadPosCtrl
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	unsigned char Mode;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned char ctrlmode;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_VirtualXbotReadPosCtrl_typ;

typedef struct PMC_VirtualXbotTeleport
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	float PosX;
	float PosY;
	float PosZ;
	float PosRx;
	float PosRy;
	float PosRz;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	unsigned char mode;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_VirtualXbotTeleport_typ;

typedef struct PMC_WaitUntilCmdLb
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char type_;
	unsigned char count;
	unsigned char option;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_WaitUntilCmdLb_typ;

typedef struct PMC_WaitUntilDisp
{
	/* VAR_INPUT (analog) */
	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_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char type_;
	unsigned char count;
	unsigned char option;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_WaitUntilDisp_typ;

typedef struct PMC_WaitUntilFBDI
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char TriggerDI;
	unsigned char TriggerType;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char type_;
	unsigned char count;
	unsigned char option;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_WaitUntilFBDI_typ;

typedef struct PMC_WaitUntilTimeDelay
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	float Delay;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char type_;
	unsigned char count;
	unsigned char option;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_WaitUntilTimeDelay_typ;

typedef struct PMC_WaitUntilZone
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char TriggerZoneID;
	unsigned char TriggerType;
	unsigned char Threshold;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	unsigned char type_;
	unsigned char count;
	unsigned char option;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_WaitUntilZone_typ;

typedef struct PMC_WeighXbot
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	float Duration;
	unsigned char ReturnType;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float Weight;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_WeighXbot_typ;

typedef struct PMC_WeighXbotAsync
{
	/* VAR_INPUT (analog) */
	unsigned char XbotID;
	float Duration;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float Weight;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMC_WeighXbot WeighXbotStart;
	struct PMC_WeighXbot WeighXbotRead;
	signed short ResendDelay;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
} PMC_WeighXbotAsync_typ;

typedef struct PMC_WriteStream
{
	/* VAR_INPUT (analog) */
	unsigned char StmID;
	unsigned char AxisID;
	float Pos;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	unsigned long ByteOffset;
	/* VAR_INPUT (digital) */
	plcbit Enable;
	/* VAR_OUTPUT (digital) */
	plcbit Valid;
} PMC_WriteStream_typ;

typedef struct PMC_XbotPartCtrl
{
	/* VAR_INPUT (analog) */
	unsigned char nXbots;
	unsigned char XbotID[150];
	unsigned char PartState[150];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	signed char totalXbotNum;
	signed char xIndex;
	signed char beginning_index;
	signed char numXbotsToSend;
	unsigned short cmdID;
	signed char maxNXbotPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_XbotPartCtrl_typ;

typedef struct PMC_XYMotion
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Type_;
	float PosX;
	float PosY;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	float Radius;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed short cmdHB;
	signed char index;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_XYMotion_typ;

typedef struct PMC_Zone_CollisionControl
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	unsigned char DisableRzCheck;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Zone_CollisionControl_typ;

typedef struct PMC_Zone_DefineZone
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	unsigned char Mode;
	float BottomLeftX;
	float BottomLeftY;
	float TopRightX;
	float TopRightY;
	unsigned char EnableZLimit;
	float ZLimit;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Zone_DefineZone_typ;

typedef struct PMC_Zone_Fencing
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	unsigned char Level;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Zone_Fencing_typ;

typedef struct PMC_Zone_GetStatus
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned char NumXbots;
	unsigned char XbotIDs[39];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char dummy_zero;
	signed short cmdHB;
	signed short index;
	unsigned short cmdID;
	unsigned char mode;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Zone_GetStatus_typ;

typedef struct PMC_Zone_GetStatusEx
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char State;
	unsigned char NumXbotsInZone;
	unsigned char XbotIDsInZone[32];
	unsigned char NumXbotsOnBoundary;
	unsigned char XbotIDsOnBoundary[32];
	unsigned char OverrideType;
	float SpeedOverrideFactor;
	float AccOverrideFactor;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char dummy_zero;
	signed short cmdHB;
	signed short index;
	unsigned char ReadingBoundary;
	unsigned short cmdID;
	unsigned char mode;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Zone_GetStatusEx_typ;

typedef struct PMC_Zone_OverrideZone
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	unsigned char OverrideType;
	float SpeedOverrideFactor;
	float AccOverrideFactor;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Zone_OverrideZone_typ;

typedef struct PMC_Zone_PlaceXbotsEmulation
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	unsigned char NumXbots;
	unsigned char MoverType[9];
	float PosX[9];
	float PosY[9];
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char xIndex;
	unsigned char cmdHB;
	unsigned char mode;
	unsigned short cmdID;
	unsigned char maxNXbot;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Zone_PlaceXbotsEmulation_typ;

typedef struct PMC_Zone_RemoveXbotsEmulation
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	unsigned char cmdHB;
	unsigned char mode;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_Zone_RemoveXbotsEmulation_typ;

typedef struct PMC_Zone_ZoneCtrl
{
	/* VAR_INPUT (analog) */
	unsigned char ZoneID;
	unsigned char Level;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed char index;
	signed char dummy_zero;
	signed short cmdHB;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_Zone_ZoneCtrl_typ;

typedef struct PMC_BorderControl
{
	/* VAR_INPUT (analog) */
	unsigned char BorderID;
	unsigned char Control;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_BorderControl_typ;

typedef struct PMC_GetAllBoundariesInfo
{
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned short nBoundaries;
	unsigned char RegionTypes[500];
	unsigned char OverrideStatuses[500];
	unsigned short ZoneIDs[500];
	unsigned char ZoneDefinitions[500];
	float BottomLeftXs[500];
	float BottomLeftYs[500];
	float TopRightXs[500];
	float TopRightYs[500];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed long numOutputsToRead;
	signed long NumReadFramesNeeded;
	signed long beginning_index;
	signed char dummy_zero;
	unsigned short cmdID;
	signed long MaxNOutputs;
	signed long MaxNOutputsPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetAllBoundariesInfo_typ;

typedef struct PMC_GetAllXbotPos
{
	/* VAR_INPUT (analog) */
	unsigned char PositionMode;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	unsigned char nXbots;
	unsigned short XbotIDs[127];
	unsigned short MoverLabels[127];
	unsigned char XbotStates[127];
	float PosXs[127];
	float PosYs[127];
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	unsigned char numOutputsToRead;
	unsigned char NumReadFramesNeeded;
	signed long beginning_index;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char MaxNOutputs;
	unsigned char MaxNOutputsPerFrame;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit DummyDone;
} PMC_GetAllXbotPos_typ;

typedef struct PMC_MoveUntilCmdLb
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Priority;
	unsigned char AxisID;
	float Pos;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	unsigned char TriggerXID;
	unsigned char TriggerType;
	unsigned short TriggerCmdLb;
	unsigned char LabelType;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char WaitType;
	unsigned char count;
	unsigned char XbotIDType;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_MoveUntilCmdLb_typ;

typedef struct PMC_MoveUntilControlError
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Priority;
	unsigned char AxisID;
	float Pos;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	unsigned char TriggerAxisID;
	float Threshold;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char WaitType;
	unsigned char count;
	unsigned char XbotIDType;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_MoveUntilControlError_typ;

typedef struct PMC_MoveUntilDisp
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Priority;
	unsigned char AxisID;
	float Pos;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	unsigned char TriggerXID;
	unsigned char dispMode;
	unsigned char dispType;
	float Threshold;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char WaitType;
	unsigned char count;
	unsigned char XbotIDType;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_MoveUntilDisp_typ;

typedef struct PMC_MoveUntilFBDI
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Priority;
	unsigned char AxisID;
	float Pos;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	unsigned char TriggerDI;
	unsigned char TriggerType;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char WaitType;
	unsigned char count;
	unsigned char XbotIDType;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_MoveUntilFBDI_typ;

typedef struct PMC_MoveUntilTimeDelay
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Priority;
	unsigned char AxisID;
	float Pos;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	float Delay;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char WaitType;
	unsigned char count;
	unsigned char XbotIDType;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_MoveUntilTimeDelay_typ;

typedef struct PMC_MoveUntilZone
{
	/* VAR_INPUT (analog) */
	unsigned short cmdLB;
	unsigned char XbotID;
	unsigned char Mode;
	unsigned char Priority;
	unsigned char AxisID;
	float Pos;
	float EndVel;
	float MaxVel;
	float MaxAcc;
	unsigned char TriggerZoneID;
	unsigned char TriggerType;
	unsigned char Threshold;
	/* VAR_OUTPUT (analog) */
	unsigned short ErrorID;
	float TravelTime;
	/* VAR_IN_OUT (analog and digital) */
	struct PMControllerType* PM_Controller;
	/* VAR (analog) */
	struct PMCFuncInfoType PMCFuncInfo;
	unsigned short timeout;
	signed long index;
	unsigned char cmdHB;
	signed char dummy_zero;
	unsigned short cmdID;
	unsigned char WaitType;
	unsigned char count;
	unsigned char XbotIDType;
	/* VAR_INPUT (digital) */
	plcbit Execute;
	/* VAR_OUTPUT (digital) */
	plcbit Ack;
	plcbit Done;
	plcbit Busy;
	plcbit Aborted;
	plcbit Error;
	/* VAR (digital) */
	plcbit requestEventID;
} PMC_MoveUntilZone_typ;



/* Prototyping of functions and function blocks */
_BUR_PUBLIC void PMC_6DMotion(struct PMC_6DMotion* inst);
_BUR_PUBLIC void PMC_6DMotionVelocity(struct PMC_6DMotionVelocity* inst);
_BUR_PUBLIC void PMC_6DMotionVelocity_Comp(struct PMC_6DMotionVelocity_Comp* inst);
_BUR_PUBLIC void PMC_ActivateTrajectory(struct PMC_ActivateTrajectory* inst);
_BUR_PUBLIC void PMC_ActivateXbots(struct PMC_ActivateXbots* inst);
_BUR_PUBLIC void PMC_App_AutoDriveToRail(struct PMC_App_AutoDriveToRail* inst);
_BUR_PUBLIC void PMC_App_CanXbotRecoverToRail(struct PMC_App_CanXbotRecoverToRail* inst);
_BUR_PUBLIC void PMC_App_CheckXbotOnRail(struct PMC_App_CheckXbotOnRail* inst);
_BUR_PUBLIC void PMC_App_GetAllStationXbots(struct PMC_App_GetAllStationXbots* inst);
_BUR_PUBLIC void PMC_App_GetAnyStationXbots(struct PMC_App_GetAnyStationXbots* inst);
_BUR_PUBLIC void PMC_App_GetBayAnyXbot(struct PMC_App_GetBayAnyXbot* inst);
_BUR_PUBLIC void PMC_App_GetBayIdleXbot(struct PMC_App_GetBayIdleXbot* inst);
_BUR_PUBLIC void PMC_App_GetBayXbotID(struct PMC_App_GetBayXbotID* inst);
_BUR_PUBLIC void PMC_App_GetDesign(struct PMC_App_GetDesign* inst);
_BUR_PUBLIC void PMC_App_GetStationAnyXbot(struct PMC_App_GetStationAnyXbot* inst);
_BUR_PUBLIC void PMC_App_GetStationConfig(struct PMC_App_GetStationConfig* inst);
_BUR_PUBLIC void PMC_App_GetStationIdleXbot(struct PMC_App_GetStationIdleXbot* inst);
_BUR_PUBLIC void PMC_App_GetStationIDs(struct PMC_App_GetStationIDs* inst);
_BUR_PUBLIC void PMC_App_GetStationIDsMultiPMC(struct PMC_App_GetStationIDsMultiPMC* inst);
_BUR_PUBLIC void PMC_App_GetStationXbotIDs(struct PMC_App_GetStationXbotIDs* inst);
_BUR_PUBLIC void PMC_App_GetXbotTarget(struct PMC_App_GetXbotTarget* inst);
_BUR_PUBLIC void PMC_App_HoldForBay(struct PMC_App_HoldForBay* inst);
_BUR_PUBLIC void PMC_App_HoldForStationArrival(struct PMC_App_HoldForStationArrival* inst);
_BUR_PUBLIC void PMC_App_RecoverXbotToRail(struct PMC_App_RecoverXbotToRail* inst);
_BUR_PUBLIC void PMC_App_SaveDesign(struct PMC_App_SaveDesign* inst);
_BUR_PUBLIC void PMC_App_SendXbotToStation(struct PMC_App_SendXbotToStation* inst);
_BUR_PUBLIC void PMC_App_SendXbotToStationSpeed(struct PMC_App_SendXbotToStationSpeed* 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_AutoDrivingMotionVelocity(struct PMC_AutoDrivingMotionVelocity* inst);
_BUR_PUBLIC void PMC_AutoLoadingZone_Activate(struct PMC_AutoLoadingZone_Activate* inst);
_BUR_PUBLIC void PMC_AutoLoadingZone_Create(struct PMC_AutoLoadingZone_Create* inst);
_BUR_PUBLIC void PMC_AutoLoadingZone_Deactivate(struct PMC_AutoLoadingZone_Deactivate* inst);
_BUR_PUBLIC void PMC_AutoLoadingZone_Delete(struct PMC_AutoLoadingZone_Delete* inst);
_BUR_PUBLIC void PMC_AutoLoadingZone_GetAllStatus(struct PMC_AutoLoadingZone_GetAllStatus* inst);
_BUR_PUBLIC void PMC_AutoLoadingZone_GetStatus(struct PMC_AutoLoadingZone_GetStatus* inst);
_BUR_PUBLIC void PMC_AutoLoadingZone_UnloadXbot(struct PMC_AutoLoadingZone_UnloadXbot* inst);
_BUR_PUBLIC void PMC_AutoLoadingZon_HoldZoneReady(struct PMC_AutoLoadingZon_HoldZoneReady* inst);
_BUR_PUBLIC void PMC_AutoLoadZone_LoadZoneClear(struct PMC_AutoLoadZone_LoadZoneClear* inst);
_BUR_PUBLIC void PMC_AutoRefresh(struct PMC_AutoRefresh* inst);
_BUR_PUBLIC void PMC_BlockXbotGroup(struct PMC_BlockXbotGroup* inst);
_BUR_PUBLIC void PMC_BondXbotGroup(struct PMC_BondXbotGroup* inst);
_BUR_PUBLIC void PMC_CamModeCtrl(struct PMC_CamModeCtrl* inst);
_BUR_PUBLIC void PMC_CamModeCtrlAdvanced(struct PMC_CamModeCtrlAdvanced* inst);
_BUR_PUBLIC void PMC_CamModeCtrlBufferable(struct PMC_CamModeCtrlBufferable* inst);
_BUR_PUBLIC void PMC_ClearMacro(struct PMC_ClearMacro* inst);
_BUR_PUBLIC void PMC_ConfigDI2Cam(struct PMC_ConfigDI2Cam* inst);
_BUR_PUBLIC void PMC_ConfigDI2QuickStop(struct PMC_ConfigDI2QuickStop* 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_ConfigDO2Zone(struct PMC_ConfigDO2Zone* inst);
_BUR_PUBLIC void PMC_ConfigFBStream(struct PMC_ConfigFBStream* inst);
_BUR_PUBLIC void PMC_ConfigFBStreamExtended(struct PMC_ConfigFBStreamExtended* inst);
_BUR_PUBLIC void PMC_Config_GetConfiguration(struct PMC_Config_GetConfiguration* inst);
_BUR_PUBLIC void PMC_Config_SetConfiguration(struct PMC_Config_SetConfiguration* inst);
_BUR_PUBLIC void PMC_ControllerReset(struct PMC_ControllerReset* inst);
_BUR_PUBLIC void PMC_CreateXbotGroup(struct PMC_CreateXbotGroup* inst);
_BUR_PUBLIC void PMC_DeactivateXbots(struct PMC_DeactivateXbots* inst);
_BUR_PUBLIC void PMC_DeleteTrajectory(struct PMC_DeleteTrajectory* inst);
_BUR_PUBLIC void PMC_DeleteXbotGroup(struct PMC_DeleteXbotGroup* inst);
_BUR_PUBLIC void PMC_FindXbotsInArea(struct PMC_FindXbotsInArea* inst);
_BUR_PUBLIC void PMC_ForceModeCtrl(struct PMC_ForceModeCtrl* inst);
_BUR_PUBLIC void PMC_ForceModeCtrlEx(struct PMC_ForceModeCtrlEx* inst);
_BUR_PUBLIC void PMC_GCode_DeleteGCode(struct PMC_GCode_DeleteGCode* inst);
_BUR_PUBLIC void PMC_GCode_GetGCodeIDs(struct PMC_GCode_GetGCodeIDs* inst);
_BUR_PUBLIC void PMC_GCode_ReadGCode(struct PMC_GCode_ReadGCode* inst);
_BUR_PUBLIC void PMC_GCode_RunGCode(struct PMC_GCode_RunGCode* inst);
_BUR_PUBLIC void PMC_GCode_SaveGCode(struct PMC_GCode_SaveGCode* inst);
_BUR_PUBLIC void PMC_GetAllAccidentLocations(struct PMC_GetAllAccidentLocations* inst);
_BUR_PUBLIC void PMC_GetAllAccidentXbots(struct PMC_GetAllAccidentXbots* inst);
_BUR_PUBLIC void PMC_GetAllFailedFlyways(struct PMC_GetAllFailedFlyways* inst);
_BUR_PUBLIC void PMC_GetAllFlywayNetErrors(struct PMC_GetAllFlywayNetErrors* inst);
_BUR_PUBLIC void PMC_GetAllFlywayNetErrorsEx(struct PMC_GetAllFlywayNetErrorsEx* inst);
_BUR_PUBLIC void PMC_GetBorderStatus(struct PMC_GetBorderStatus* inst);
_BUR_PUBLIC void PMC_GetBufferStatus(struct PMC_GetBufferStatus* inst);
_BUR_PUBLIC void PMC_GetErrorLog(struct PMC_GetErrorLog* inst);
_BUR_PUBLIC void PMC_GetFlywayConnectErrorCounts(struct PMC_GetFlywayConnectErrorCounts* inst);
_BUR_PUBLIC void PMC_GetFlywayError(struct PMC_GetFlywayError* inst);
_BUR_PUBLIC void PMC_GetFlywayPosition(struct PMC_GetFlywayPosition* inst);
_BUR_PUBLIC void PMC_GetFlywaySerialNum(struct PMC_GetFlywaySerialNum* inst);
_BUR_PUBLIC void PMC_GetFlywayStatus(struct PMC_GetFlywayStatus* inst);
_BUR_PUBLIC void PMC_GetFlywayTemp(struct PMC_GetFlywayTemp* inst);
_BUR_PUBLIC void PMC_GetGroupStatus(struct PMC_GetGroupStatus* inst);
_BUR_PUBLIC void PMC_GetIncomingXbots(struct PMC_GetIncomingXbots* inst);
_BUR_PUBLIC void PMC_GetIncomingXbotsEx(struct PMC_GetIncomingXbotsEx* inst);
_BUR_PUBLIC void PMC_GetMacroStatus(struct PMC_GetMacroStatus* inst);
_BUR_PUBLIC void PMC_GetPayload(struct PMC_GetPayload* inst);
_BUR_PUBLIC void PMC_GetPlanets(struct PMC_GetPlanets* inst);
_BUR_PUBLIC void PMC_GetPMCErrorCode(struct PMC_GetPMCErrorCode* inst);
_BUR_PUBLIC void PMC_GetPMCSerialNum(struct PMC_GetPMCSerialNum* inst);
_BUR_PUBLIC void PMC_GetPmcStatus(struct PMC_GetPmcStatus* inst);
_BUR_PUBLIC void PMC_GetPMCVersion(struct PMC_GetPMCVersion* inst);
_BUR_PUBLIC void PMC_GetPMCWarnings(struct PMC_GetPMCWarnings* inst);
_BUR_PUBLIC void PMC_GetPMNetErrorCounts(struct PMC_GetPMNetErrorCounts* inst);
_BUR_PUBLIC void PMC_GetSpacedXbotPositions(struct PMC_GetSpacedXbotPositions* inst);
_BUR_PUBLIC void PMC_GetStar(struct PMC_GetStar* inst);
_BUR_PUBLIC void PMC_GetWarningLog(struct PMC_GetWarningLog* inst);
_BUR_PUBLIC void PMC_GetXbotIDs(struct PMC_GetXbotIDs* inst);
_BUR_PUBLIC void PMC_GetXbotProperty(struct PMC_GetXbotProperty* inst);
_BUR_PUBLIC void PMC_GetXbotStatus(struct PMC_GetXbotStatus* inst);
_BUR_PUBLIC void PMC_GroupXYMotion(struct PMC_GroupXYMotion* inst);
_BUR_PUBLIC void PMC_HoldForPMCState(struct PMC_HoldForPMCState* inst);
_BUR_PUBLIC void PMC_HoldForXbotIdle(struct PMC_HoldForXbotIdle* inst);
_BUR_PUBLIC void PMC_HoldForXbotsIdle(struct PMC_HoldForXbotsIdle* inst);
_BUR_PUBLIC void PMC_HoldForXbotsState(struct PMC_HoldForXbotsState* inst);
_BUR_PUBLIC void PMC_HoldForXbotState(struct PMC_HoldForXbotState* inst);
_BUR_PUBLIC void PMC_InjectNoise(struct PMC_InjectNoise* inst);
_BUR_PUBLIC void PMC_InjectNoiseDelay(struct PMC_InjectNoiseDelay* inst);
_BUR_PUBLIC void PMC_JogShortAxis(struct PMC_JogShortAxis* inst);
_BUR_PUBLIC void PMC_JogVelocity(struct PMC_JogVelocity* inst);
_BUR_PUBLIC void PMC_LevitationCtrl(struct PMC_LevitationCtrl* inst);
_BUR_PUBLIC void PMC_LevitationCtrlSpeed(struct PMC_LevitationCtrlSpeed* inst);
_BUR_PUBLIC void PMC_LinkedMover_Assign(struct PMC_LinkedMover_Assign* inst);
_BUR_PUBLIC void PMC_LinkedMover_CamSlaves(struct PMC_LinkedMover_CamSlaves* inst);
_BUR_PUBLIC void PMC_LinkedMover_Define(struct PMC_LinkedMover_Define* inst);
_BUR_PUBLIC void PMC_MotionBufferCtrl(struct PMC_MotionBufferCtrl* inst);
_BUR_PUBLIC void PMC_MoverID_AutoScan(struct PMC_MoverID_AutoScan* inst);
_BUR_PUBLIC void PMC_MoverID_ChangeAbsoluteIDs(struct PMC_MoverID_ChangeAbsoluteIDs* inst);
_BUR_PUBLIC void PMC_MoverID_GetScanLocation(struct PMC_MoverID_GetScanLocation* inst);
_BUR_PUBLIC void PMC_MoverID_ManualScan(struct PMC_MoverID_ManualScan* inst);
_BUR_PUBLIC void PMC_MoverID_ReadScanStatus(struct PMC_MoverID_ReadScanStatus* inst);
_BUR_PUBLIC void PMC_MoverID_RecoverID(struct PMC_MoverID_RecoverID* inst);
_BUR_PUBLIC void PMC_MoverID_RegisterIDs(struct PMC_MoverID_RegisterIDs* inst);
_BUR_PUBLIC void PMC_MoverID_ScanMoverID(struct PMC_MoverID_ScanMoverID* inst);
_BUR_PUBLIC void PMC_MoverID_Set(struct PMC_MoverID_Set* inst);
_BUR_PUBLIC void PMC_MoverLabel_GetLabel(struct PMC_MoverLabel_GetLabel* inst);
_BUR_PUBLIC void PMC_MoverLabel_GetXbotID(struct PMC_MoverLabel_GetXbotID* inst);
_BUR_PUBLIC void PMC_MoverLabel_SetLabel(struct PMC_MoverLabel_SetLabel* inst);
_BUR_PUBLIC void PMC_MoverStereotype_Assign(struct PMC_MoverStereotype_Assign* inst);
_BUR_PUBLIC void PMC_MoverStereotype_Define(struct PMC_MoverStereotype_Define* inst);
_BUR_PUBLIC void PMC_MoverStereotype_ReadDef(struct PMC_MoverStereotype_ReadDef* inst);
_BUR_PUBLIC void PMC_PauseXbots(struct PMC_PauseXbots* inst);
_BUR_PUBLIC void PMC_PlanetMotionCtrl(struct PMC_PlanetMotionCtrl* inst);
_BUR_PUBLIC void PMC_ReadDigitalSignalFromPMC(struct PMC_ReadDigitalSignalFromPMC* inst);
_BUR_PUBLIC void PMC_ReadNumAccidentXbots(struct PMC_ReadNumAccidentXbots* inst);
_BUR_PUBLIC void PMC_ReadNumIncomingXbots(struct PMC_ReadNumIncomingXbots* inst);
_BUR_PUBLIC void PMC_ReadPmcState(struct PMC_ReadPmcState* inst);
_BUR_PUBLIC void PMC_ReadStreamFeedback(struct PMC_ReadStreamFeedback* inst);
_BUR_PUBLIC void PMC_ReadStreamFeedbackExtended(struct PMC_ReadStreamFeedbackExtended* inst);
_BUR_PUBLIC void PMC_ReadTimeStamp(struct PMC_ReadTimeStamp* inst);
_BUR_PUBLIC void PMC_ReadTrajectoryHash(struct PMC_ReadTrajectoryHash* inst);
_BUR_PUBLIC void PMC_ReadXbotForce(struct PMC_ReadXbotForce* inst);
_BUR_PUBLIC void PMC_ReadXbotIDs(struct PMC_ReadXbotIDs* inst);
_BUR_PUBLIC void PMC_ReadXbotPos(struct PMC_ReadXbotPos* inst);
_BUR_PUBLIC void PMC_ReadXbotSpeed(struct PMC_ReadXbotSpeed* inst);
_BUR_PUBLIC void PMC_ReadXbotState(struct PMC_ReadXbotState* inst);
_BUR_PUBLIC void PMC_ReadXbotStateEx(struct PMC_ReadXbotStateEx* inst);
_BUR_PUBLIC void PMC_ReadXbotStatus(struct PMC_ReadXbotStatus* inst);
_BUR_PUBLIC void PMC_Reboot(struct PMC_Reboot* inst);
_BUR_PUBLIC void PMC_RecoverAccidentXbot(struct PMC_RecoverAccidentXbot* inst);
_BUR_PUBLIC void PMC_RecoverFailedFlyway(struct PMC_RecoverFailedFlyway* inst);
_BUR_PUBLIC void PMC_ResumeXbots(struct PMC_ResumeXbots* inst);
_BUR_PUBLIC void PMC_RFID_GetXbotRFIDs(struct PMC_RFID_GetXbotRFIDs* inst);
_BUR_PUBLIC void PMC_RFID_ResetIDs(struct PMC_RFID_ResetIDs* inst);
_BUR_PUBLIC void PMC_RotaryMotion(struct PMC_RotaryMotion* inst);
_BUR_PUBLIC void PMC_RotaryMotionSpin(struct PMC_RotaryMotionSpin* inst);
_BUR_PUBLIC void PMC_RunMacro(struct PMC_RunMacro* inst);
_BUR_PUBLIC void PMC_SaveMacro(struct PMC_SaveMacro* inst);
_BUR_PUBLIC void PMC_SaveTrajectory(struct PMC_SaveTrajectory* inst);
_BUR_PUBLIC void PMC_ScanXID(struct PMC_ScanXID* inst);
_BUR_PUBLIC void PMC_Sector_Activate(struct PMC_Sector_Activate* inst);
_BUR_PUBLIC void PMC_Sector_Deactivate(struct PMC_Sector_Deactivate* inst);
_BUR_PUBLIC void PMC_Sector_GetStatus(struct PMC_Sector_GetStatus* inst);
_BUR_PUBLIC void PMC_Sector_Recover(struct PMC_Sector_Recover* inst);
_BUR_PUBLIC void PMC_SendDigitalSignalToPMC(struct PMC_SendDigitalSignalToPMC* inst);
_BUR_PUBLIC void PMC_ServiceModeCtrl(struct PMC_ServiceModeCtrl* inst);
_BUR_PUBLIC void PMC_SetConfiguration(struct PMC_SetConfiguration* inst);
_BUR_PUBLIC void PMC_SetDateAndTime(struct PMC_SetDateAndTime* inst);
_BUR_PUBLIC void PMC_SetJerkLimit(struct PMC_SetJerkLimit* inst);
_BUR_PUBLIC void PMC_SetXbotOrientation(struct PMC_SetXbotOrientation* inst);
_BUR_PUBLIC void PMC_SetXbotProperty(struct PMC_SetXbotProperty* inst);
_BUR_PUBLIC void PMC_ShortAxisMotion(struct PMC_ShortAxisMotion* inst);
_BUR_PUBLIC void PMC_SingleAxisMotion(struct PMC_SingleAxisMotion* inst);
_BUR_PUBLIC void PMC_StartUpPlanarMotorSystem(struct PMC_StartUpPlanarMotorSystem* inst);
_BUR_PUBLIC void PMC_Star_CreateStar(struct PMC_Star_CreateStar* inst);
_BUR_PUBLIC void PMC_Star_DeleteStar(struct PMC_Star_DeleteStar* inst);
_BUR_PUBLIC void PMC_Star_GetStarStatus(struct PMC_Star_GetStarStatus* inst);
_BUR_PUBLIC void PMC_Star_SendXbotToStar(struct PMC_Star_SendXbotToStar* inst);
_BUR_PUBLIC void PMC_Star_StarExitClear(struct PMC_Star_StarExitClear* 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_TareXbot(struct PMC_TareXbot* inst);
_BUR_PUBLIC void PMC_ThroughputTest(struct PMC_ThroughputTest* inst);
_BUR_PUBLIC void PMC_VirtualXbotReadPosCtrl(struct PMC_VirtualXbotReadPosCtrl* inst);
_BUR_PUBLIC void PMC_VirtualXbotTeleport(struct PMC_VirtualXbotTeleport* 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_WaitUntilZone(struct PMC_WaitUntilZone* inst);
_BUR_PUBLIC void PMC_WeighXbot(struct PMC_WeighXbot* inst);
_BUR_PUBLIC void PMC_WeighXbotAsync(struct PMC_WeighXbotAsync* inst);
_BUR_PUBLIC void PMC_WriteStream(struct PMC_WriteStream* inst);
_BUR_PUBLIC void PMC_XbotPartCtrl(struct PMC_XbotPartCtrl* inst);
_BUR_PUBLIC void PMC_XYMotion(struct PMC_XYMotion* inst);
_BUR_PUBLIC void PMC_Zone_CollisionControl(struct PMC_Zone_CollisionControl* inst);
_BUR_PUBLIC void PMC_Zone_DefineZone(struct PMC_Zone_DefineZone* inst);
_BUR_PUBLIC void PMC_Zone_Fencing(struct PMC_Zone_Fencing* inst);
_BUR_PUBLIC void PMC_Zone_GetStatus(struct PMC_Zone_GetStatus* inst);
_BUR_PUBLIC void PMC_Zone_GetStatusEx(struct PMC_Zone_GetStatusEx* inst);
_BUR_PUBLIC void PMC_Zone_OverrideZone(struct PMC_Zone_OverrideZone* inst);
_BUR_PUBLIC void PMC_Zone_PlaceXbotsEmulation(struct PMC_Zone_PlaceXbotsEmulation* inst);
_BUR_PUBLIC void PMC_Zone_RemoveXbotsEmulation(struct PMC_Zone_RemoveXbotsEmulation* inst);
_BUR_PUBLIC void PMC_Zone_ZoneCtrl(struct PMC_Zone_ZoneCtrl* inst);
_BUR_PUBLIC void PMC_BorderControl(struct PMC_BorderControl* inst);
_BUR_PUBLIC void PMC_GetAllBoundariesInfo(struct PMC_GetAllBoundariesInfo* inst);
_BUR_PUBLIC void PMC_GetAllXbotPos(struct PMC_GetAllXbotPos* inst);
_BUR_PUBLIC void PMC_MoveUntilCmdLb(struct PMC_MoveUntilCmdLb* inst);
_BUR_PUBLIC void PMC_MoveUntilControlError(struct PMC_MoveUntilControlError* inst);
_BUR_PUBLIC void PMC_MoveUntilDisp(struct PMC_MoveUntilDisp* inst);
_BUR_PUBLIC void PMC_MoveUntilFBDI(struct PMC_MoveUntilFBDI* inst);
_BUR_PUBLIC void PMC_MoveUntilTimeDelay(struct PMC_MoveUntilTimeDelay* inst);
_BUR_PUBLIC void PMC_MoveUntilZone(struct PMC_MoveUntilZone* inst);
_BUR_PUBLIC plcbit PMC_CmdProcessor(plcbit Execute, unsigned char ExecutionLocation, plcbit EventCommand, struct PMControllerType* PM_Controller, struct PMCFuncInfoType* PMCFuncInfo, plcbit* Ack, plcbit* Done, plcbit* Busy, plcbit* Error, unsigned short* ErrorID, plcbit* Aborted);


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

