How to read motion operation mode node status ?

Hello rexroth team

I have a question,I want to know how to use "fb DL_ReadNode" to read motion operation mode status?

and  also I want to know how to use "fb DL_WriteNode" to forced motion operation mode to running?

 

 

Best reply by CodeShepherd

First I like to mention that in the CXA_MOTIONINTERFACE there is an easy to use function included:

 

//Reading mode
ImcStatus.Admin._OpModeAck;

//Setting mode
ImcCtrl.Admin._OpMode := MB_IMC_MODE_CONTROL.IMC_MODE_CTRL_RUN;
ImcCtrl.Admin._OpMode := MB_IMC_MODE_CONTROL.IMC_MODE_CTRL_CONF;

 

For your question, as all information can be found in the Data Layer you can read as follows:

Declaration:

 

PROGRAM MotionStatus
VAR	
	fbDL_ReadNode: DL_ReadNode;
	bReadExecute: BOOL;
	bReadDone: BOOL;
	bReadActive: BOOL;
	bReadError: BOOL;
	ReadErrorID: CXA_Datalayer.ERROR_CODE;
	ReadErrorIdent: CXA_Datalayer.ERROR_STRUCT;
	ReadValue: STRING;
	diSize: DINT;
END_VAR

 

Implementation:

 

fbDL_ReadNode(
	Execute:= bReadExecute, 
	Done=> bReadDone, 
	Active=> bReadActive, 
	Error=> bReadError, 
	ErrorID=> ReadErrorID, 
	ErrorIdent=> ReadErrorIdent, 
	ClientId:= , 
	NodeName:= 'motion/state/opstate', //Path to the node at the Data Layer
	Value:= ReadValue, 
	Size=> diSize);

 

Writing with DL_CreateNode because it is a command:

Declaration:

PROGRAM MotionState
VAR
	fbDL_WriteNode: DL_WriteNode;
	bWriteExecute: BOOL;
	bWriteDone: BOOL;
	bWriteActive: BOOL;
	bWriteError: BOOL;
	WriteErrorID: CXA_Datalayer.ERROR_CODE;
	WriteErrorIdent: CXA_Datalayer.ERROR_STRUCT;
	WriteValue: STRING := 'Configuration'; //Use 'Booting' to get to 'Running'
	fbDL_CreateNode: DL_CreateNode;
	WriteReturnValue: UDINT;
END_VAR

 

 

Implementation:

fbDL_CreateNode(
	Execute:= bWriteExecute, 
	Done=> bWriteDone, 
	Active=> bWriteActive, 
	Error=> bWriteError, 
	ErrorID=> WriteErrorID, 
	ErrorIdent=> WriteErrorIdent, 
	ClientId:= , 
	NodeName:= 'motion/cmd/opstate',//Path to the node at the Data Layer 
	ValueIn:= WriteValue, 
	ValueOut:= WriteReturnValue);

 

 

View original
1 reply