diff --git a/2_Motor_Master/Motor_Master/Motor_Master/main.c b/2_Motor_Master/Motor_Master/Motor_Master/main.c index 606f240..3e886c9 100644 --- a/2_Motor_Master/Motor_Master/Motor_Master/main.c +++ b/2_Motor_Master/Motor_Master/Motor_Master/main.c @@ -176,10 +176,9 @@ int main(void) One_ms_timer_init(); custom_logic_enable(); - angle_sensor_init(); + //angle_sensor_init(); //initialize_ads(); /* External IRQ Config */ - __enable_irq(); enable_NVIC_IRQ(); //ext_irq_register(GPIO_PIN(ADS_DATA_RDY), ADS1299_dataReadyISR); @@ -188,20 +187,21 @@ int main(void) /* Replace with your application code */ while (1) { if (Motor1.timerflags.adc_readings_ready_tic) {process_currents();} + if (Motor1.timerflags.motor_telemetry_flag) { Motor1.timerflags.motor_telemetry_flag = false; update_telemetry(); update_setpoints(); - PORT->Group[1].OUTCLR.reg = (1<Channel[0].CHCTRLA.reg |= DMAC_CHCTRLA_ENABLE; - DMAC->Channel[1].CHCTRLA.reg |= DMAC_CHCTRLA_ENABLE; + //PORT->Group[1].OUTCLR.reg = (1<Channel[0].CHCTRLA.reg |= DMAC_CHCTRLA_ENABLE; + //DMAC->Channel[1].CHCTRLA.reg |= DMAC_CHCTRLA_ENABLE; //_dma_enable_transaction(DMAC_CHANNEL_CONF_SERCOM_1_RECEIVE, false); //_dma_enable_transaction(DMAC_CHANNEL_CONF_SERCOM_1_TRANSMIT, false); int16_t* angles; - angles = read_angle(); - Motor1.motor_status.abs_position = degrees(angles[0]); - Motor2.motor_status.abs_position = degrees(angles[1]); + //angles = read_angle(); + //Motor1.motor_status.abs_position = degrees(angles[0]); + //Motor2.motor_status.abs_position = degrees(angles[1]); ////field = ang_sense_read(AS_CMD_MAGNITUDE); //*Spare1_tx = (field[0] & AS_MASK); @@ -214,9 +214,9 @@ int main(void) if (Motor1.timerflags.current_loop_tic) { Motor1.timerflags.current_loop_tic = false; - //APPLICATION_StateMachine(); - //exec_commutation(&Motor1); - //exec_commutation(&Motor2); + APPLICATION_StateMachine(); + exec_commutation(&Motor1); + exec_commutation(&Motor2); } if (ADS1299.data_ReadyFlag){ diff --git a/2_Motor_Master/Motor_Master/Motor_Master/motorparameters.h b/2_Motor_Master/Motor_Master/Motor_Master/motorparameters.h index 7eb31f4..8491f2d 100644 --- a/2_Motor_Master/Motor_Master/Motor_Master/motorparameters.h +++ b/2_Motor_Master/Motor_Master/Motor_Master/motorparameters.h @@ -153,7 +153,8 @@ const static BLDCMotor_param_t FH_22mm24BXTR = { .motor_Max_Spd_RPM = 3000, .motor_MeasureRange_RPM = 3000 * 1.2, //(1.2f * MOTOR_MAX_SPD_RPM)f // give 20% headroom .motor_Max_Spd_ELEC = (3000/60)*7.0, //(MOTOR_MAX_SPD_RPM/60)*MOTOR_POLEPAIRS - .motor_Max_Current_IDC_A = 0.368, + //.motor_Max_Current_IDC_A = 0.368, + .motor_Max_Current_IDC_A = 0.180, .controller_param.Pid_Speed.Kp = 0.00008f, .controller_param.Pid_Speed.Ki = 0.0000001f, //.controller_param.Pid_Speed.Ki = 0.0000001f, @@ -174,10 +175,10 @@ const static BLDCMotor_param_t FH_32mm12BXTR = { .motor_LD_H = 0.000331, .motor_LQ_H = 0.000331, .motor_Flux_WB = 0.0063879968, - .motor_Max_Spd_RPM = 3000, + .motor_Max_Spd_RPM = 1000, .motor_MeasureRange_RPM = 3200, //(1.2f * MOTOR_MAX_SPD_RPM)f // give 20% headroom .motor_Max_Spd_ELEC = 12000, //(MOTOR_MAX_SPD_RPM/60)*MOTOR_POLEPAIRS - .motor_Max_Current_IDC_A = (1.6), + .motor_Max_Current_IDC_A = (1.2), .controller_param.Pid_Speed.Kp = 0.0004f, .controller_param.Pid_Speed.Ki = 0.0000001f, .controller_param.Pi_Pos.Kp = 50.0f, @@ -186,7 +187,7 @@ const static BLDCMotor_param_t FH_32mm12BXTR = { //.controller_param.Pid_Speed.Ki = 0.0f, //.controller_param.Pi_Pos.Kp = 4.0f, //.controller_param.Pi_Pos.Ki = 0.0f, - .motor_MaxPWM = 300.0, + .motor_MaxPWM = 250.0, }; /* Big Motor - 3216W024BXTR */ diff --git a/2_Motor_Slave/Motor_Slave/Motor_Slave/.atmelstart/atmel_start_config.atstart b/2_Motor_Slave/Motor_Slave/Motor_Slave/.atmelstart/atmel_start_config.atstart index 92e7d2b..9cd0c5c 100644 --- a/2_Motor_Slave/Motor_Slave/Motor_Slave/.atmelstart/atmel_start_config.atstart +++ b/2_Motor_Slave/Motor_Slave/Motor_Slave/.atmelstart/atmel_start_config.atstart @@ -597,8 +597,8 @@ drivers: dmac_evosel_7: Event generation disabled dmac_evosel_8: Event generation disabled dmac_evosel_9: Event generation disabled - dmac_lvl_0: Channel priority 3 - dmac_lvl_1: Channel priority 2 + dmac_lvl_0: Channel priority 0 + dmac_lvl_1: Channel priority 0 dmac_lvl_10: Channel priority 0 dmac_lvl_11: Channel priority 0 dmac_lvl_12: Channel priority 0 @@ -882,8 +882,8 @@ drivers: eic_arch_enable_irq_setting11: false eic_arch_enable_irq_setting12: false eic_arch_enable_irq_setting13: false - eic_arch_enable_irq_setting14: true - eic_arch_enable_irq_setting15: true + eic_arch_enable_irq_setting14: false + eic_arch_enable_irq_setting15: false eic_arch_enable_irq_setting2: false eic_arch_enable_irq_setting3: false eic_arch_enable_irq_setting4: false @@ -1755,16 +1755,16 @@ drivers: functionality: I2C api: HAL:Driver:I2C_Master_Sync configuration: - i2c_master_advanced: false + i2c_master_advanced: true i2c_master_arch_dbgstop: Keep running - i2c_master_arch_inactout: Disabled + i2c_master_arch_inactout: 5-6 SCL cycle time-out(50-60us) i2c_master_arch_lowtout: false i2c_master_arch_mexttoen: false i2c_master_arch_runstdby: false - i2c_master_arch_sdahold: 300-600ns hold time + i2c_master_arch_sdahold: 50-100ns hold time i2c_master_arch_sexttoen: false i2c_master_arch_trise: 215 - i2c_master_baud_rate: 400000 + i2c_master_baud_rate: 100000 optional_signals: [] variant: specification: SDA=0, SCL=1 @@ -2430,9 +2430,10 @@ pads: SPI2_SS: name: PA14 definition: Atmel:SAME51_Drivers:0.0.1::SAME51J19A-MF::pad::PA14 - mode: Peripheral IO + mode: Digital output user_label: SPI2_SS - configuration: null + configuration: + pad_initial_level: High SPI2_MISO: name: PA15 definition: Atmel:SAME51_Drivers:0.0.1::SAME51J19A-MF::pad::PA15 diff --git a/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_dmac_config.h b/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_dmac_config.h index b3a477a..a181af5 100644 --- a/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_dmac_config.h +++ b/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_dmac_config.h @@ -225,7 +225,7 @@ // Defines the arbitration level for this channel // dmac_lvl_0 #ifndef CONF_DMAC_LVL_0 -#define CONF_DMAC_LVL_0 3 +#define CONF_DMAC_LVL_0 0 #endif // Channel Event Output @@ -449,7 +449,7 @@ // Defines the arbitration level for this channel // dmac_lvl_1 #ifndef CONF_DMAC_LVL_1 -#define CONF_DMAC_LVL_1 2 +#define CONF_DMAC_LVL_1 0 #endif // Channel Event Output diff --git a/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_eic_config.h b/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_eic_config.h index 059b167..b6cc2e9 100644 --- a/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_eic_config.h +++ b/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_eic_config.h @@ -749,7 +749,7 @@ // Interrupt 14 Settings // eic_arch_enable_irq_setting14 #ifndef CONF_EIC_ENABLE_IRQ_SETTING14 -#define CONF_EIC_ENABLE_IRQ_SETTING14 1 +#define CONF_EIC_ENABLE_IRQ_SETTING14 0 #endif // External Interrupt 14 Filter Enable @@ -798,7 +798,7 @@ // Interrupt 15 Settings // eic_arch_enable_irq_setting15 #ifndef CONF_EIC_ENABLE_IRQ_SETTING15 -#define CONF_EIC_ENABLE_IRQ_SETTING15 1 +#define CONF_EIC_ENABLE_IRQ_SETTING15 0 #endif // External Interrupt 15 Filter Enable diff --git a/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_sercom_config.h b/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_sercom_config.h index 45870e1..130d40d 100644 --- a/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_sercom_config.h +++ b/2_Motor_Slave/Motor_Slave/Motor_Slave/Config/hpl_sercom_config.h @@ -20,7 +20,7 @@ // I2C Bus clock (SCL) speed measured in Hz // i2c_master_baud_rate #ifndef CONF_SERCOM_0_I2CM_BAUD -#define CONF_SERCOM_0_I2CM_BAUD 400000 +#define CONF_SERCOM_0_I2CM_BAUD 100000 #endif // @@ -28,7 +28,7 @@ // Advanced // i2c_master_advanced #ifndef CONF_SERCOM_0_I2CM_ADVANCED_CONFIG -#define CONF_SERCOM_0_I2CM_ADVANCED_CONFIG 0 +#define CONF_SERCOM_0_I2CM_ADVANCED_CONFIG 1 #endif // TRise (ns) <0-300> @@ -71,7 +71,7 @@ // Defines if inactivity time-out should be enabled, and how long the time-out should be // i2c_master_arch_inactout #ifndef CONF_SERCOM_0_I2CM_INACTOUT -#define CONF_SERCOM_0_I2CM_INACTOUT 0x0 +#define CONF_SERCOM_0_I2CM_INACTOUT 0x1 #endif // SDA Hold Time (SDAHOLD) @@ -82,7 +82,7 @@ // Defines the SDA hold time with respect to the negative edge of SCL // i2c_master_arch_sdahold #ifndef CONF_SERCOM_0_I2CM_SDAHOLD -#define CONF_SERCOM_0_I2CM_SDAHOLD 0x2 +#define CONF_SERCOM_0_I2CM_SDAHOLD 0x1 #endif // Run in stand-by diff --git a/2_Motor_Slave/Motor_Slave/Motor_Slave/Motor_Slave.cproj b/2_Motor_Slave/Motor_Slave/Motor_Slave/Motor_Slave.cproj index 0f4dd27..f7b8646 100644 --- a/2_Motor_Slave/Motor_Slave/Motor_Slave/Motor_Slave.cproj +++ b/2_Motor_Slave/Motor_Slave/Motor_Slave/Motor_Slave.cproj @@ -150,7 +150,7 @@ - + @@ -212,15 +212,15 @@ - - + + - + @@ -389,6 +389,7 @@ %24(PackRepoDir)\arm\CMSIS\5.4.0\CMSIS\Core\Include\ + %24(PackRepoDir)\atmel\SAME51_DFP\1.1.139\include ../Config ../ ../examples @@ -413,7 +414,6 @@ ../hpl/tcc ../hri ../bosch_sensor - %24(PackRepoDir)\atmel\SAME51_DFP\1.1.139\include True @@ -440,6 +440,7 @@ %24(PackRepoDir)\arm\CMSIS\5.4.0\CMSIS\Core\Include\ + %24(PackRepoDir)\atmel\SAME51_DFP\1.1.139\include ../Config ../ ../examples @@ -464,13 +465,13 @@ ../hpl/tcc ../hri ../bosch_sensor - %24(PackRepoDir)\atmel\SAME51_DFP\1.1.139\include Default (-g) %24(PackRepoDir)\arm\CMSIS\5.4.0\CMSIS\Core\Include\ + %24(PackRepoDir)\atmel\SAME51_DFP\1.1.139\include ../Config ../ ../examples @@ -495,7 +496,6 @@ ../hpl/tcc ../hri ../bosch_sensor - %24(PackRepoDir)\atmel\SAME51_DFP\1.1.139\include Default (-Wa,-g) diff --git a/2_Motor_Slave/Motor_Slave/Motor_Slave/driver_init.c b/2_Motor_Slave/Motor_Slave/Motor_Slave/driver_init.c index a9781fa..82e4115 100644 --- a/2_Motor_Slave/Motor_Slave/Motor_Slave/driver_init.c +++ b/2_Motor_Slave/Motor_Slave/Motor_Slave/driver_init.c @@ -509,6 +509,16 @@ void system_init(void) // GPIO on PA14 + gpio_set_pin_level(SPI2_SS, + // Initial level + // pad_initial_level + // Low + // High + true); + + // Set pin direction to output + gpio_set_pin_direction(SPI2_SS, GPIO_DIRECTION_OUT); + gpio_set_pin_function(SPI2_SS, GPIO_PIN_FUNCTION_OFF); // GPIO on PA25 diff --git a/2_Motor_Slave/Motor_Slave/Motor_Slave/main.c b/2_Motor_Slave/Motor_Slave/Motor_Slave/main.c index 079e31f..99a1c4f 100644 --- a/2_Motor_Slave/Motor_Slave/Motor_Slave/main.c +++ b/2_Motor_Slave/Motor_Slave/Motor_Slave/main.c @@ -109,8 +109,8 @@ void SERCOM1_3_Handler() //tx_buffer[31] += 1; - DMAC->Channel[0].CHCTRLA.reg |= DMAC_CHCTRLA_ENABLE; - DMAC->Channel[1].CHCTRLA.reg |= DMAC_CHCTRLA_ENABLE; + //DMAC->Channel[0].CHCTRLA.reg |= DMAC_CHCTRLA_ENABLE; + //DMAC->Channel[1].CHCTRLA.reg |= DMAC_CHCTRLA_ENABLE; //_dma_enable_transaction(CONF_SERCOM_1_RECEIVE_DMA_CHANNEL, false); //_dma_enable_transaction(CONF_SERCOM_1_TRANSMIT_DMA_CHANNEL, false); @@ -234,6 +234,7 @@ int main(void) DMAC->Channel[0].CHCTRLA.reg |= DMAC_CHCTRLA_ENABLE; DMAC->Channel[1].CHCTRLA.reg |= DMAC_CHCTRLA_ENABLE; + //_dma_enable_transaction(CONF_SERCOM_1_RECEIVE_DMA_CHANNEL, false); //_dma_enable_transaction(CONF_SERCOM_1_TRANSMIT_DMA_CHANNEL, false); @@ -241,7 +242,7 @@ int main(void) //ORIENTATION_SENSOR_0_init(); - angle_sensor_init(); + //angle_sensor_init(); /* Replace with your application code */ @@ -267,10 +268,10 @@ int main(void) //*M3_Joint_abs_position = angles[0]; //*M4_Joint_abs_position = angles[1]; - int16_t* angles; - angles = read_angle(); - *M3_Joint_abs_position = degrees(angles[0]); - *M4_Joint_abs_position = degrees(angles[1]); + //int16_t* angles; + //angles = read_angle(); + //*M3_Joint_abs_position = degrees(angles[0]); + //*M4_Joint_abs_position = degrees(angles[1]); volatile int y = 0; diff --git a/Twincat/MotorData/.vs/MotorData/v15/.suo b/Twincat/MotorData/.vs/MotorData/v15/.suo index 9598978..b8c8bf1 100644 Binary files a/Twincat/MotorData/.vs/MotorData/v15/.suo and b/Twincat/MotorData/.vs/MotorData/v15/.suo differ diff --git a/Twincat/MotorData/MotorData/Motordata_PLC/POUs/POU_Position_Seq.TcPOU b/Twincat/MotorData/MotorData/Motordata_PLC/POUs/POU_Position_Seq.TcPOU index e3bf6e0..2d4df4b 100644 --- a/Twincat/MotorData/MotorData/Motordata_PLC/POUs/POU_Position_Seq.TcPOU +++ b/Twincat/MotorData/MotorData/Motordata_PLC/POUs/POU_Position_Seq.TcPOU @@ -321,7 +321,7 @@ END_VAR {38391c6d-6d4a-42f8-8ee7-9f45e5adafa8} - "POS_1.t > T#3s" + "POS_1.t > T#5s" "" 80L @@ -504,7 +504,7 @@ END_VAR {38391c6d-6d4a-42f8-8ee7-9f45e5adafa8} - "POS_2.t > T#3s" + "POS_2.t > T#5s" "" 125L @@ -687,7 +687,7 @@ END_VAR {38391c6d-6d4a-42f8-8ee7-9f45e5adafa8} - "POS_3.t > T#3s" + "POS_3.t > T#5s" "" 49L diff --git a/Twincat/MotorData/Scope Project1.svdx b/Twincat/MotorData/Scope Project1.svdx index eb98517..5d82329 100644 Binary files a/Twincat/MotorData/Scope Project1.svdx and b/Twincat/MotorData/Scope Project1.svdx differ diff --git a/Twincat/MotorData/TwinCAT Measurement Project1/Scope Project1.tcscopex b/Twincat/MotorData/TwinCAT Measurement Project1/Scope Project1.tcscopex index 0739907..bd3a210 100644 --- a/Twincat/MotorData/TwinCAT Measurement Project1/Scope Project1.tcscopex +++ b/Twincat/MotorData/TwinCAT Measurement Project1/Scope Project1.tcscopex @@ -15,11 +15,11 @@ false <?xml version="1.0" encoding="utf-16"?> <Layout> - <Window Guid="8766837b-106b-4ca8-84ce-2fbbc3ef10f3" LastFocused="132742840704085058" DockedSize="200" PopupSize="0" FloatingLocation="-1, -1" FloatingSize="550, 400" LastOpenDockSituation="Document" LastFixedDockSituation="Document" LastFixedDockLocation="Right" LastFloatingWindowGuid="00000000-0000-0000-0000-000000000000" LastDockContainerCount="0" LastDockContainerIndex="0" DockedWorkingSize="250, 400" DockedWindowGroupGuid="00000000-0000-0000-0000-000000000000" DockedIndexInWindowGroup="0" DockedSplitPath="0" DocumentWorkingSize="250, 400" DocumentWindowGroupGuid="a5d32a52-1886-4ce8-9970-731db69737a6" DocumentIndexInWindowGroup="0" DocumentSplitPath="0" FloatingWorkingSize="250, 400" FloatingWindowGroupGuid="00000000-0000-0000-0000-000000000000" FloatingIndexInWindowGroup="0" FloatingSplitPath="0" /> - <Window Guid="17812b7c-7d18-4668-ae12-d2633798b279" LastFocused="132742810664328077" DockedSize="200" PopupSize="0" FloatingLocation="-1, -1" FloatingSize="550, 400" LastOpenDockSituation="Document" LastFixedDockSituation="Document" LastFixedDockLocation="Right" LastFloatingWindowGuid="00000000-0000-0000-0000-000000000000" LastDockContainerCount="0" LastDockContainerIndex="0" DockedWorkingSize="250, 400" DockedWindowGroupGuid="00000000-0000-0000-0000-000000000000" DockedIndexInWindowGroup="0" DockedSplitPath="0" DocumentWorkingSize="250, 400" DocumentWindowGroupGuid="a5d32a52-1886-4ce8-9970-731db69737a6" DocumentIndexInWindowGroup="1" DocumentSplitPath="0" FloatingWorkingSize="250, 400" FloatingWindowGroupGuid="00000000-0000-0000-0000-000000000000" FloatingIndexInWindowGroup="0" FloatingSplitPath="0" /> + <Window Guid="8766837b-106b-4ca8-84ce-2fbbc3ef10f3" LastFocused="132743661535497732" DockedSize="200" PopupSize="0" FloatingLocation="-1, -1" FloatingSize="550, 400" LastOpenDockSituation="Document" LastFixedDockSituation="Document" LastFixedDockLocation="Right" LastFloatingWindowGuid="00000000-0000-0000-0000-000000000000" LastDockContainerCount="0" LastDockContainerIndex="0" DockedWorkingSize="250, 400" DockedWindowGroupGuid="00000000-0000-0000-0000-000000000000" DockedIndexInWindowGroup="0" DockedSplitPath="0" DocumentWorkingSize="250, 400" DocumentWindowGroupGuid="a5d32a52-1886-4ce8-9970-731db69737a6" DocumentIndexInWindowGroup="0" DocumentSplitPath="0" FloatingWorkingSize="250, 400" FloatingWindowGroupGuid="00000000-0000-0000-0000-000000000000" FloatingIndexInWindowGroup="0" FloatingSplitPath="0" /> + <Window Guid="17812b7c-7d18-4668-ae12-d2633798b279" LastFocused="132743697189178461" DockedSize="200" PopupSize="0" FloatingLocation="-1, -1" FloatingSize="550, 400" LastOpenDockSituation="Document" LastFixedDockSituation="Document" LastFixedDockLocation="Right" LastFloatingWindowGuid="00000000-0000-0000-0000-000000000000" LastDockContainerCount="0" LastDockContainerIndex="0" DockedWorkingSize="250, 400" DockedWindowGroupGuid="00000000-0000-0000-0000-000000000000" DockedIndexInWindowGroup="0" DockedSplitPath="0" DocumentWorkingSize="250, 400" DocumentWindowGroupGuid="a5d32a52-1886-4ce8-9970-731db69737a6" DocumentIndexInWindowGroup="1" DocumentSplitPath="0" FloatingWorkingSize="250, 400" FloatingWindowGroupGuid="00000000-0000-0000-0000-000000000000" FloatingIndexInWindowGroup="0" FloatingSplitPath="0" /> <DocumentContainer Dock="5"> <SplitLayoutSystem WorkingSize="250, 400" SplitMode="0"> - <ControlLayoutSystem WorkingSize="250, 400" Guid="a5d32a52-1886-4ce8-9970-731db69737a6" Collapsed="0" SelectedControl="8766837b-106b-4ca8-84ce-2fbbc3ef10f3"> + <ControlLayoutSystem WorkingSize="250, 400" Guid="a5d32a52-1886-4ce8-9970-731db69737a6" Collapsed="0" SelectedControl="17812b7c-7d18-4668-ae12-d2633798b279"> <Controls> <Control Guid="8766837b-106b-4ca8-84ce-2fbbc3ef10f3" /> <Control Guid="17812b7c-7d18-4668-ae12-d2633798b279" /> @@ -80,15 +80,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -99,10 +99,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -161,15 +161,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -180,10 +180,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -242,15 +242,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -261,10 +261,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -323,15 +323,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -342,10 +342,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -404,15 +404,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -423,10 +423,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -485,15 +485,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -504,10 +504,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -566,15 +566,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -585,10 +585,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -647,15 +647,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -666,10 +666,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -728,15 +728,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -747,10 +747,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -809,15 +809,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -828,10 +828,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -890,15 +890,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -909,10 +909,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -971,15 +971,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -990,10 +990,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -1052,15 +1052,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -1071,10 +1071,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -1133,15 +1133,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -1152,10 +1152,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -1387,15 +1387,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -1406,10 +1406,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -1569,15 +1569,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -1588,10 +1588,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -1751,15 +1751,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -1770,10 +1770,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -1933,15 +1933,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -1952,10 +1952,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -2232,15 +2232,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -2251,10 +2251,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -2351,15 +2351,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -2370,10 +2370,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -2470,15 +2470,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -2489,10 +2489,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -2652,15 +2652,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -2671,10 +2671,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -2771,15 +2771,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -2790,10 +2790,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -2890,15 +2890,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -2909,10 +2909,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -3072,15 +3072,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -3091,10 +3091,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -3191,15 +3191,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -3210,10 +3210,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -3373,15 +3373,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -3392,10 +3392,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1 @@ -3492,15 +3492,15 @@ None 1 none - + 1 - + 0 - + 0 - + 0 none (None) @@ -3511,10 +3511,10 @@ 1 UnitOfOne - + 0 None - + 0 none 1