//**************************************************************************//
//**************************************************************************//
                // autochanger
//**************************************************************************//
//**************************************************************************//
                 autochanger(AutoChangerModule,
                    argMap(
                        a("plutoGatewayName",acPlutoGatewayName),
                        ref("loaderConnectedSensor0"),
                        ref("loaderConnectedSensor1"),
                        ref("autochangerTrucks"),   
                        ref("latches"),
                        ref("onlineClamps"),
                 ))
                 {//begin description of autochanger children
                        "loaderConnectedSensor0" ( CanOpenNumericSensor ,
                            argMap(
                                a("dioName",acPlutoGatewayName),
                                a("inputNumero", 4),
                                a("byteNumero", 2),
                            ))
                        "loaderConnectedSensor1" ( CanOpenNumericSensor ,
                            argMap(
                                a("dioName",acPlutoGatewayName),
                                a("inputNumero", 5),
                                a("byteNumero", 2),
                            ))  
//**************************************************************************//
                        // autochanger trucks description
//**************************************************************************//
                        autochangerTrucks (AutoChangerTwoTrucksModule, 
                            argMap(
                                ref("acTruckXminus"),
                                ref("acTruckXplus"),
                            ))

                {//begin description of autochanger trucks children

                        acTruckXminus (AutochangerTruckModule, 
                            argMap(
                                ref("handoffPositionSensorXminus"),
                                ref("handoffPositionSensorBXminus"),
                                ref("onlinePositionSensorXminus"),
                                ref("onlinePositionSensorBXminus"),
                                ref("standbyPositionSensorXminus"),
                                ref("standbyPositionSensorBXminus"),
                            ))

               
                        {//begin description of autochanger truckXminus children

                                "handoffPositionSensorXminus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 0),
                                        a("byteNumero", 1),
                                    ))
                                "handoffPositionSensorBXminus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 1),
                                        a("byteNumero", 1),
                                    ))
                                "onlinePositionSensorXminus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 2),
                                        a("byteNumero", 1),
                                    ))
                                "onlinePositionSensorBXminus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 3),
                                        a("byteNumero", 1),
                                    ))
                                "standbyPositionSensorXminus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 6),
                                        a("byteNumero", 0),
                                    ))
                                "standbyPositionSensorBXminus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 7),
                                        a("byteNumero", 0),
                                    ))                                       
                        }//end description of autochanger acTruckXminus children

                        acTruckXplus (AutochangerTruckModule, 
                            argMap(
                                ref("handoffPositionSensorXplus"),
                                ref("handoffPositionSensorBXplus"),
                                ref("onlinePositionSensorXplus"),
                                ref("onlinePositionSensorBXplus"),
                                ref("standbyPositionSensorXplus"),
                                ref("standbyPositionSensorBXplus"),
                            ))

               
                        {//begin description of autochanger truckXplus children

                                "handoffPositionSensorXplus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 0),
                                        a("byteNumero", 9),
                                    ))
                                "handoffPositionSensorBXplus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 1),
                                        a("byteNumero", 9),
                                    ))
                                "onlinePositionSensorXplus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 2),
                                        a("byteNumero", 9),
                                    ))
                                "onlinePositionSensorBXplus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 3),
                                        a("byteNumero", 9),
                                    ))
                                "standbyPositionSensorXplus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 6),
                                        a("byteNumero", 8),
                                    ))
                                "standbyPositionSensorBXplus" ( CanOpenNumericSensor ,
                                    argMap(
                                        a("dioName",acPlutoGatewayName),
                                        a("inputNumero", 7),
                                        a("byteNumero", 8),
                                    ))                                       
                        }//end description of autochanger acTruckXplus children

                }//end description of autochanger trucks children            
//**************************************************************************//
                 // end of autochanger trucks description
//**************************************************************************//

//**************************************************************************//
                            // autochanger latches description
//**************************************************************************//
/** **/
                    latches (AutochangerTwoLatches, 
                                argMap(
                                    ref("latchXminus"),
                                    ref("latchXplus"),
                                    ))

                    {//begin description of autochanger latches children
/** **/
                            //*************************************//
                            // autochanger latchXminus description
                            //*************************************//
                            latchXminus (AutochangerLatchModule,
                                argMap(
                                    ref("latchXminusController"),
                                    ref("lockSensorLatchXminus"),
                                    ref("lockSensorBLatchXminus"),
                                    ref("unlockSensorLatchXminus"),
                                    ref("unlockSensorBLatchXminus"),
                                    ref("filterEngagedSensorLatchXminus"),
                                    ref("filterEngagedSensorBLatchXminus"),
                                    ))
                            {//begin description of autochanger latchXminus children
                            "lockSensorLatchXminus" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 2),
                                    a("byteNumero", 0),
                                ))

                            "lockSensorBLatchXminus" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 3),
                                    a("byteNumero", 0),
                                ))
                                    
                            "unlockSensorLatchXminus" ( CanOpenNumericSensor,
                                argMap( 
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 0),
                                    a("byteNumero", 0),
                                ))

                            "unlockSensorBLatchXminus" ( CanOpenNumericSensor,
                                argMap( 
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 1),
                                    a("byteNumero", 0),
                                ))

                            "filterEngagedSensorLatchXminus" ( CanOpenNumericSensor,
                                argMap( 
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 4),
                                    a("byteNumero", 0),
                                ))

                            "filterEngagedSensorBLatchXminus" ( CanOpenNumericSensor,
                                argMap( 
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 5),
                                    a("byteNumero", 0),
                                ))
                            }//end description of autochanger latchXminus children
                            //**********************************************//
                            // end of autochanger latchXminus description   //
                            //**********************************************//
/** **/
                            //*************************************//
                            // autochanger latchXplus description
                            //*************************************//
                            latchXplus (AutochangerLatchModule,
                                argMap(
                                    ref("latchXplusController"),
                                    ref("lockSensorLatchXplus"),
                                    ref("lockSensorBLatchXplus"),
                                    ref("unlockSensorLatchXplus"),
                                    ref("unlockSensorBLatchXplus"),
                                    ref("filterEngagedSensorLatchXplus"),
                                    ref("filterEngagedSensorBLatchXplus"),
                                    ))
                            {//begin description of autochanger latchXplus children
                            //latchCloseXp
                            "lockSensorLatchXplus" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 2),
                                    a("byteNumero", 8),
                                ))

                            //latchCloseXp_b
                            "lockSensorBLatchXplus" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 3),
                                    a("byteNumero", 8),
                                ))    
                            
                            //latchOpenXp
                            "unlockSensorLatchXplus" ( CanOpenNumericSensor,
                                argMap( 
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 0),
                                    a("byteNumero", 8), 
                                ))

                            //latchOpenXp_b
                            "unlockSensorBLatchXplus" ( CanOpenNumericSensor,
                                argMap( 
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 1),
                                    a("byteNumero", 8), 
                                ))

                            "filterEngagedSensorLatchXplus" ( CanOpenNumericSensor,
                                argMap( 
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 4),
                                    a("byteNumero", 8),
                                ))

                            "filterEngagedSensorBLatchXplus" ( CanOpenNumericSensor,
                                argMap( 
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 5),
                                    a("byteNumero", 8),
                                ))
                            }//end description of autochanger latchXplus children
                            //**********************************************//
                            // end of autochanger latchXplus description   //
                            //**********************************************//
                    }//end description of autochanger latches children
/** **/
//*****************************************************************************//
                            // end of autochanger latches description
//*****************************************************************************//

//**************************************************************************//
//**************************************************************************//
                            // autochanger onlineClamps description
//**************************************************************************//
//**************************************************************************//
                    onlineClamps (AutochangerThreeOnlineClamps, 
                                argMap(
                                    ref("onlineClampXminus"),
                                    ref("onlineClampXplus"),
                                    ref("onlineClampYminus"),
                                    ))
                    {//begin description of autochanger onlineClamps children
                        //***************//
                     onlineClampXminus(AutochangerOnlineClampModule ,
                        argMap(
                            ref("onlineClampXminusController"),
                            ref("onlineClampXminusLockSensor"),
                            ref("onlineClampXminusCLockSensor"),
                            ref("onlineClampXminusUnlockSensor"),
                            ref("onlineClampXminusCUnlockSensor"),
                            aMap("paramsForCurrentToLock", [ContinuousCurrentLimit:5000,OutputCurrentLimit:10000,MaxSpeedInCurrentMode:6930],[description:"list of parameters for CURRENT mode to clamp the clamp."]),
                            aMap("paramsForCurrentToUnlock", [ContinuousCurrentLimit:5000,OutputCurrentLimit:10000,MaxSpeedInCurrentMode:6930],[description:"list of parameters for CURRENT mode to open the clamp in the initialisation phase."]),  
                    ))
                    {//begin description of autochanger onlineClampXminus children

                            "onlineClampXminusLockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 6),
                                    a("byteNumero", 1),
                                ))

                            "onlineClampXminusCLockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 7),
                                    a("byteNumero", 1),
                                ))
                            "onlineClampXminusUnlockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 4),
                                    a("byteNumero", 1),
                                ))

                            "onlineClampXminusCUnlockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 5),
                                    a("byteNumero", 1),
                                ))

                    }//end of  description of autochanger onlineClampXminus children

                    //***************//
                    onlineClampXplus(AutochangerOnlineClampModule ,
                        argMap(
                            ref("onlineClampXplusController"),
                            ref("onlineClampXplusLockSensor"),
                            ref("onlineClampXplusCLockSensor"),
                            ref("onlineClampXplusUnlockSensor"),
                            ref("onlineClampXplusCUnlockSensor"),
                            aMap("paramsForCurrentToLock", [ContinuousCurrentLimit:5000,OutputCurrentLimit:10000,MaxSpeedInCurrentMode:6930],[description:"list of parameters for CURRENT mode to clamp the clamp."]),
                            aMap("paramsForCurrentToUnlock", [ContinuousCurrentLimit:5000,OutputCurrentLimit:10000,MaxSpeedInCurrentMode:6930],[description:"list of parameters for CURRENT mode to open the clamp in the initialisation phase."]),  
                    ))
                    {//begin description of autochanger onlineClampXplus children

                            "onlineClampXplusLockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 4),
                                    a("byteNumero", 3),
                                ))

                            "onlineClampXplusCLockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 5),
                                    a("byteNumero", 3),
                                ))
                            "onlineClampXplusUnlockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 6),
                                    a("byteNumero", 3),
                                ))

                            "onlineClampXplusCUnlockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 7),
                                    a("byteNumero", 3),
                                ))

                    }//end of  description of autochanger onlineClampXplus children

                    //***************//
                    onlineClampYminus(AutochangerOnlineClampModule ,
                        argMap(
                            ref("onlineClampYminusController"),
                            ref("onlineClampYminusLockSensor"),
                            ref("onlineClampYminusCLockSensor"),
                            ref("onlineClampYminusUnlockSensor"),
                            ref("onlineClampYminusCUnlockSensor"),
                            aMap("paramsForCurrentToLock", [ContinuousCurrentLimit:5000,OutputCurrentLimit:10000,MaxSpeedInCurrentMode:6930],[description:"list of parameters for CURRENT mode to clamp the clamp."]),
                            aMap("paramsForCurrentToUnlock", [ContinuousCurrentLimit:5000,OutputCurrentLimit:10000,MaxSpeedInCurrentMode:6930],[description:"list of parameters for CURRENT mode to open the clamp in the initialisation phase."]),  
                    ))
                    {//begin description of autochanger onlineClampYminus children

                            "onlineClampYminusLockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 2),
                                    a("byteNumero", 2),
                                ))

                            "onlineClampYminusCLockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 3),
                                    a("byteNumero", 2),
                                ))
                            "onlineClampYminusUnlockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 0),
                                    a("byteNumero", 2),
                                ))

                            "onlineClampYminusCUnlockSensor" ( CanOpenNumericSensor,
                                argMap(
                                    a("dioName",acPlutoGatewayName),
                                    a("inputNumero", 1),
                                    a("byteNumero", 2),
                                ))

                    }//end of  description of autochanger onlineClampYminus children
                 }//end of  description of autochanger onlineClamps children
//**************************************************************************//
                            // end of autochanger onlineClamps description
//**************************************************************************//

                 }//end description of autochanger children
 //*****************************************************************************//
 //*****************************************************************************//
                // end of autochanger description
 //*****************************************************************************//
 //*****************************************************************************//

