When an Extended IO card is present in ATV71 and when IMC card (v4.0ie13 and below) is supplied separately by its +24V connector, implicit exchanges (DRIVE_PIx/POx) do not start when the following sequence is applied:
- Switch off ATV71 AC power
- Wait for the communication between the drive and the card to be lost
- Switch on ATV71 AC power -> implicit exchanges between ATV and IMC do not start (DRIVE_PIx = 0)
A workaround is to copy-paste in Drive_Start POU the following code to configure implicit exchanges:
In declaration part :
wRetry: WORD:=0 ;
In code part :
CASE wStateInitialization OF
1:
(* Initializing Cyclic data exchange Read*)
DriveParameterCyclicReadSet(
addrDRIVE_PI1:= 3207, (* for example to read line voltage (ULN) *)
addrDRIVE_PI2:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI2*)
addrDRIVE_PI3:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI3*)
addrDRIVE_PI4:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI4*)
addrDRIVE_PI5:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI5*)
addrDRIVE_PI6:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI6*)
addrDRIVE_PI7:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI7*)
addrDRIVE_PI8:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI8*)
bExecute:= TRUE);
(* on some configuration, the request is taken into account by the drive after more than 1 second,
for example with an IoExtended board. So we need to manage 500 retry *)
IF DriveParameterCyclicReadSet.bError AND wRetry < 500 THEN
wRetry := wRetry + 1;
ELSIF DriveParameterCyclicReadSet.bDone THEN
wStateInitialization:=2;
wRetry := 0;
END_IF
2:
(* Initializing Cyclic data exchange Write*)
DriveParameterCyclicWriteSet(
addrDRIVE_PO1:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PO1*)
addrDRIVE_PO2:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PO2*)
addrDRIVE_PO3:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PO3*)
addrDRIVE_PO4:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PO4*)
(*addrDRIVE_PO5:= ,*) (*Uncomment the line to map a Drive parameter to DRIVE_PO5*)
(*addrDRIVE_PO6:= ,*) (*Uncomment the line to map a Drive parameter to DRIVE_PO6*)
(*addrDRIVE_PO7:= ,*) (*Uncomment the line to map a Drive parameter to DRIVE_PO7*)
(*addrDRIVE_PO8:= ,*) (*Uncomment the line to map a Drive parameter to DRIVE_PO8*)
bExecute:=TRUE );
IF DriveParameterCyclicWriteSet.bError AND wRetry < 500 THEN
wRetry := wRetry + 1;
ELSIF DriveParameterCyclicWriteSet.bDone THEN
wStateInitialization:=3;
wRetry := 0;
END_IF
3: Display_RestoreSavedParameters();
- Switch off ATV71 AC power
- Wait for the communication between the drive and the card to be lost
- Switch on ATV71 AC power -> implicit exchanges between ATV and IMC do not start (DRIVE_PIx = 0)
A workaround is to copy-paste in Drive_Start POU the following code to configure implicit exchanges:
In declaration part :
wRetry: WORD:=0 ;
In code part :
CASE wStateInitialization OF
1:
(* Initializing Cyclic data exchange Read*)
DriveParameterCyclicReadSet(
addrDRIVE_PI1:= 3207, (* for example to read line voltage (ULN) *)
addrDRIVE_PI2:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI2*)
addrDRIVE_PI3:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI3*)
addrDRIVE_PI4:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI4*)
addrDRIVE_PI5:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI5*)
addrDRIVE_PI6:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI6*)
addrDRIVE_PI7:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI7*)
addrDRIVE_PI8:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PI8*)
bExecute:= TRUE);
(* on some configuration, the request is taken into account by the drive after more than 1 second,
for example with an IoExtended board. So we need to manage 500 retry *)
IF DriveParameterCyclicReadSet.bError AND wRetry < 500 THEN
wRetry := wRetry + 1;
ELSIF DriveParameterCyclicReadSet.bDone THEN
wStateInitialization:=2;
wRetry := 0;
END_IF
2:
(* Initializing Cyclic data exchange Write*)
DriveParameterCyclicWriteSet(
addrDRIVE_PO1:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PO1*)
addrDRIVE_PO2:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PO2*)
addrDRIVE_PO3:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PO3*)
addrDRIVE_PO4:= xxx, (*Uncomment the line to map a Drive parameter to DRIVE_PO4*)
(*addrDRIVE_PO5:= ,*) (*Uncomment the line to map a Drive parameter to DRIVE_PO5*)
(*addrDRIVE_PO6:= ,*) (*Uncomment the line to map a Drive parameter to DRIVE_PO6*)
(*addrDRIVE_PO7:= ,*) (*Uncomment the line to map a Drive parameter to DRIVE_PO7*)
(*addrDRIVE_PO8:= ,*) (*Uncomment the line to map a Drive parameter to DRIVE_PO8*)
bExecute:=TRUE );
IF DriveParameterCyclicWriteSet.bError AND wRetry < 500 THEN
wRetry := wRetry + 1;
ELSIF DriveParameterCyclicWriteSet.bDone THEN
wStateInitialization:=3;
wRetry := 0;
END_IF
3: Display_RestoreSavedParameters();
Released for: Schneider Electric Hong Kong


Need help?
Product Selector
Quickly and easily find the right products and accessories for your applications.
Get a Quote
Start your sales enquiry online and an expert will connect with you.
Where to buy?
Easily find the nearest Schneider Electric distributor in your location.
Help Centre
Find support resources for all your needs, in one place.