Dear Community User! We are updating our platform to a new system.
Read more: Important information on the platform change.

cancel
Showing results for 
Search instead for 
Did you mean: 
SOLVED

How to automatically restart a slave

How to automatically restart a slave

JHU1XI1
Long-established Member

Codesys can set up automatic restart of slave function in the main site, how core should be implemented?

2024-07-16_11h48_19.png

2 REPLIES 2

EngJay
Long-established Member

One common method is to use the PLC app and the library CXA_EtherCATMaster.  This gives you access to a number of function blocks for getting or setting the state of master or slave devices.  

Below, I'll post some basic sample code to get you started.  There are more examples posted in the library example folders in PLC Engineering.  

PROGRAM ECAT_State
VAR
strMasterName : STRING := 'ethercatmaster'; // Instance name of the fieldbus master
fbIL_ECATRemoteSlaveState : IL_ECATRemoteSlaveState;
uiSlaveAdr : UINT := 1001;
fbECATMasterSetBusState: IL_ECATMasterSetBusState;

END_VAR

fbIL_ECATRemoteSlaveState.Execute := NOT fbIL_ECATRemoteSlaveState.Done ;
fbIL_ECATRemoteSlaveState.MasterName := ADR(strMasterName);
fbIL_ECATRemoteSlaveState.SlaveAddress := uiSlaveAdr;
fbIL_ECATRemoteSlaveState();

IF TRUE = fbIL_ECATRemoteSlaveState.Error THEN
; // Error handling
END_IF

fbECATMasterSetBusState.MasterName := ADR(strMasterName);
fbECATMasterSetBusState.NewBusState := IL_ECAT_STATE.ECAT_STATE_OP;
fbECATMasterSetBusState();
IF TRUE = fbECATMasterSetBusState.Done THEN
; // master reached operational state.
END_IF
IF TRUE = fbECATMasterSetBusState.Error THEN
; // error handling
END_IF


IF fbIL_ECATRemoteSlaveState.State = 18 THEN // 18 = 'init'
fbECATMasterSetBusState.Execute := TRUE;
ELSE
fbECATMasterSetBusState.Execute := FALSE;
END_IF

//check that the drive is in OP
IF fbIL_ECATRemoteSlaveState.State = 0 THEN
bDriveinOp := TRUE;
ELSE
bDriveinOp := FALSE;
END_IF

JHU1XI1
Long-established Member

Thank you for your reply.

The customer has resolved their issue in your way.

Will we provide a convenient way like codesys?

Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist