搜档网
当前位置:搜档网 › 飞控MWC_v2.2_代码解读

飞控MWC_v2.2_代码解读

飞控MWC_v2.2_代码解读
飞控MWC_v2.2_代码解读

[转载]MWC v2.2 代码解读LOOP()

(2013-04-07 20:01:27)

转载▼

标签:

转载

原文地址:MWC v2.2 代码解读LOOP()作者:问江南

函数很长不用文字了贴个流程图,说明一切:

void loop () {

static uint8_t rcDelayCommand; // this indicates the number of time (multiple of RC measurement at 50Hz) the sticks must be maintained to run or switch off motors

static uint8_t rcSticks; // this hold sticks position for command combos

uint8_t axis,i;

int16_t error,errorAngle;

int16_t PTerm,ITerm,DTerm;

int16_t PTermACC = 0 , ITermACC = 0 , PTermGYRO = 0 , ITermGYRO = 0;

static int16_t lastGyro[3] = {0,0,0};

static int16_t delta1[3],delta2[3];

static int16_t errorGyroI[3] = {0,0,0};

static int16_t errorAngleI[2] = {0,0};

static uint32_t rcTime = 0;

static int16_t initialThrottleHold;

static uint32_t timestamp_fixated = 0;

#if defined(SPEKTRUM)

if (spekFrameFlags == 0x01) readSpektrum(); //支持的一种特殊遥控器读取数据

#endif

#if defined(OPENLRSv2MULTI)

Read_OpenLRS_RC(); //支持的一种特殊的遥控器读取数据

#endif

if (currentTime > rcTime ) // 50Hz 时间过了20ms

{

rcTime = currentTime + 20000;

computeRC(); //对已经接收的遥控接收的信号进行循环滤波,取4组数据,80MS,算平均值,大于平均值的减小2,小于平均值的增大2.

// Failsafe routine - added by MIS

#if defined(FAILSAFE)

if ( failsafeCnt > (5*FAILSAFE_DELAY) && f.ARMED) // 使之稳定, 并设置油门到指定的值

{

for(i=0; i<3; i++) rcData[i] = MIDRC; // 丢失信号(in 0.1sec)后,把所有通道数据设置为 MIDRC=1500

rcData[THROTTLE] = conf.failsafe_throttle; // 把油门设置为conf.failsafe_throttle

if (failsafeCnt > 5*(FAILSAFE_DELAY+FAILSAFE_OFF_DELAY)) // 在特定时间之后关闭电机(in 0.1sec)

{

go_disarm(); // This will prevent the copter to automatically rearm if failsafe shuts it down and prevents

}

failsafeEvents++; //掉落保护事件标志位至1

}

if ( failsafeCnt > (5*FAILSAFE_DELAY) && !f.ARMED)

{ //Turn of "Ok To arm to prevent the motors from spinning after repowering the RX with low throttle and aux to arm

go_disarm(); // This will prevent the copter to automatically rearm if failsafe shuts it down and prevents

f.OK_TO_ARM = 0; //进入锁定状态,之后起飞需要解锁

}

failsafeCnt++; //掉落保护计数+1 每1 代表20ms 大于5倍FAILSAFE_DELAY 则进入保护

#endif

// end of failsafe routine - next change is made with RcOptions setting

// ------------------ STICKS COMMAND HANDLER --------------------

// 检测控制杆位置

uint8_t stTmp = 0;

for(i=0;i<4;i++)

{

stTmp >>= 2; //stTmp除以4

if(rcData[i] > MINCHECK) stTmp |= 0x80; // MINCHECK=1100 1000 0000B

if(rcData[i] < MAXCHECK) stTmp |= 0x40; // MAXCHECK=1900 0100 0000B 通过stTmp判断是否控制杆是否在最大最小之外 }

if(stTmp == rcSticks)

{

if(rcDelayCommand<250) rcDelayCommand++; //若控制杆在最大最小位置外的状态未改变(20ms内),则rcDelayCommand+1 }

else rcDelayCommand = 0; //否则清0

rcSticks = stTmp; //保存stTmp

// 采取行动

if (rcData[THROTTLE] <= MINCHECK) //油门在最低值

{

errorGyroI[ROLL] = 0; errorGyroI[PITCH] = 0; errorGyroI[YAW] = 0; //把roll pitch yaw 误差置0

if (conf.activate[BOXARM] > 0) // Arming/Disarming via ARM BOX

{

if ( rcOptions[BOXARM] && f.OK_TO_ARM ) go_arm(); //解锁

else if (f.ARMED) go_disarm(); //上锁

}

}

if(rcDelayCommand == 20) //若控制杆在最大最小位置外的状态未改变(20*20ms) {

if(f.ARMED) // 当处在解锁时

{

#ifdef ALLOW_ARM_DISARM_VIA_TX_YAW //上锁方式1

if (conf.activate[BOXARM] == 0 && rcSticks == THR_LO + YAW_LO + PIT_CE + ROL_CE) go_disarm(); // Disarm via YAW #endif

#ifdef ALLOW_ARM_DISARM_VIA_TX_ROLL //上锁方式2

if (conf.activate[BOXARM] == 0 && rcSticks == THR_LO + YAW_CE + PIT_CE + ROL_LO) go_disarm(); // Disarm via ROLL #endif

}

else // 当处在未解锁时

{

i=0;

if (rcSticks == THR_LO + YAW_LO + PIT_LO + ROL_CE) // GYRO(陀螺仪)校准

{

calibratingG=512; //校准G 512*20Ms

#if GPS

GPS_reset_home_position(); //GPS 设置HOME

#endif

#if BARO

calibratingB=10; // 气压计设置基准气压(10 * 25 ms = ~250 ms non blocking)

#endif

}

#if defined(INFLIGHT_ACC_CALIBRATION) //使得可以飞行中ACC校准(怎么手在抖。。)

else if (rcSticks == THR_LO + YAW_LO + PIT_HI + ROL_HI) // Inflight ACC calibration START/STOP

if (AccInflightCalibrationMeasurementDone) // trigger saving into eeprom after landing

{

AccInflightCalibrationMeasurementDone = 0;

AccInflightCalibrationSavetoEEProm = 1;

}

else

{

AccInflightCalibrationArmed = !AccInflightCalibrationArmed;

#if defined(BUZZER)

if (AccInflightCalibrationArmed) alarmArray[0]=2; else alarmArray[0]=3;

#endif

}

}

#endif

#ifdef MULTIPLE_CONFIGURATION_PROFILES //多配置文件读取

if (rcSticks == THR_LO + YAW_LO + PIT_CE + ROL_LO) i=1; // ROLL left -> Profile 1 //配置1 else if (rcSticks == THR_LO + YAW_LO + PIT_HI + ROL_CE) i=2; // PITCH up -> Profile 2 //配置2 else if (rcSticks == THR_LO + YAW_LO + PIT_CE + ROL_HI) i=3; // ROLL right -> Profile 3 //配置3 if(i)

{

global_conf.currentSet = i-1;

writeGlobalSet(0);

readEEPROM();

blinkLED(2,40,i);

alarmArray[0] = i;

}

#endif

if (rcSticks == THR_LO + YAW_HI + PIT_HI + ROL_CE) // 进入LCD配置

{

#if defined(LCD_CONF)

configurationLoop(); // beginning LCD configuration

#endif

}

#ifdef ALLOW_ARM_DISARM_VIA_TX_YAW //允许使用YAW进行解锁

else if (conf.activate[BOXARM] == 0 && rcSticks == THR_LO + YAW_HI + PIT_CE + ROL_CE) go_arm(); // Arm via YAW #endif

#ifdef ALLOW_ARM_DISARM_VIA_TX_ROLL

else if (conf.activate[BOXARM] == 0 && rcSticks == THR_LO + YAW_CE + PIT_CE + ROL_HI) go_arm(); // Arm via ROLL #endif

#ifdef LCD_TELEMETRY_AUTO //与LCD有关 telemetry 遥测

else if (rcSticks == THR_LO + YAW_CE + PIT_HI + ROL_LO) // Auto telemetry ON/OFF

{

if (telemetry_auto)

{

telemetry_auto = 0;

telemetry = 0;

}

else

telemetry_auto = 1;

}

#endif

#ifdef LCD_TELEMETRY_STEP

else if (rcSticks == THR_LO + YAW_CE + PIT_HI + ROL_HI) // Telemetry next step

{

telemetry = telemetryStepSequence[++telemetryStepIndex % strlen(telemetryStepSequence)];

#ifdef OLED_I2C_128x64

if (telemetry != 0) i2c_OLED_init();

#endif

LCDclear();

}

#endif

else if (rcSticks == THR_HI + YAW_LO + PIT_LO + ROL_CE) calibratingA=512; //加速度校准

else if (rcSticks == THR_HI + YAW_HI + PIT_LO + ROL_CE) f.CALIBRATE_MAG = 1; //电子罗盘校准

i=0;

else if (rcSticks == THR_HI + YAW_CE + PIT_LO + ROL_CE) {conf.angleTrim[PITCH]-=2; i=1;}

else if (rcSticks == THR_HI + YAW_CE + PIT_CE + ROL_HI) {conf.angleTrim[ROLL] +=2; i=1;}

else if (rcSticks == THR_HI + YAW_CE + PIT_CE + ROL_LO) {conf.angleTrim[ROLL] -=2; i=1;}

if (i)

{

writeParams(1);

rcDelayCommand = 0; // allow autorepetition

#if defined(LED_RING) //调整之后灯闪

blinkLedRing(); //灯闪烁使用IIC接口

#endif

}

}

}

#if defined(LED_FLASHER)

led_flasher_autoselect_sequence(); //仍在20MS循环中,LED闪烁

#endif

#if defined(INFLIGHT_ACC_CALIBRATION) //空中校准ACC

if (AccInflightCalibrationArmed && f.ARMED && rcData[THROTTLE] > MINCHECK && !rcOptions[BOXARM] ){ // Copter is airborne and you are turning it off via boxarm : start measurement

InflightcalibratingA = 50;

AccInflightCalibrationArmed = 0;

}

if (rcOptions[BOXCALIB]) { // 使用Calib来标定 : Calib = TRUE 测试开始, 降落且Calib = 0 测量储存

if (!AccInflightCalibrationActive && !AccInflightCalibrationMeasurementDone){ //若空中校准ACC未运行

InflightcalibratingA = 50; //设定校准时间50

}

}else if(AccInflightCalibrationMeasurementDone && !f.ARMED){ //若结束就保存

AccInflightCalibrationMeasurementDone = 0;

AccInflightCalibrationSavetoEEProm = 1;

}

#endif

uint16_t auxState = 0; //测量辅助通道位置小于1300 1300到1700 大于1700

for(i=0;i<4;i++)

auxState |= (rcData[AUX1+i]<1300)<<(3*i) | (1300

(rcData[AUX1+i]>1700)<<(3*i+2);

for(i=0;i

rcOptions[i] = (auxState & conf.activate[i])>0; //将辅助通道位置与选择的开启方式比较,保存开启的模式

// note: if FAILSAFE is disable, failsafeCnt > 5*FAILSAFE_DELAY is always false

#if ACC

if ( rcOptions[BOXANGLE] || (failsafeCnt > 5*FAILSAFE_DELAY) ) // 开启自稳模式anglemode

{

if (!f.ANGLE_MODE)

{

errorAngleI[ROLL] = 0; errorAngleI[PITCH] = 0;

f.ANGLE_MODE = 1;

}

}

else // failsafe模式时的动作

{

f.ANGLE_MODE = 0;

}

if ( rcOptions[BOXHORIZON] ) //开启 HORIZON模式 rc选择

{

f.ANGLE_MODE = 0; //关闭angle模式

if (!f.HORIZON_MODE) //若horizon模式未开启

{

errorAngleI[ROLL] = 0; errorAngleI[PITCH] = 0;

f.HORIZON_MODE = 1; //开启horizon模式

}

}

else //否则

{

}

#endif

if (rcOptions[BOXARM] == 0) f.OK_TO_ARM = 1;

#if !defined(GPS_LED_INDICATOR)

if (f.ANGLE_MODE || f.HORIZON_MODE) {STABLEPIN_ON;} else {STABLEPIN_OFF;}

#endif

#if BARO

#if (!defined(SUPPRESS_BARO_ALTHOLD)) //若未宏定义SUPPRESS_BARO_ALTHOLD if (rcOptions[BOXBARO]) //rc 若选择baro

{

if (!f.BARO_MODE) //若baro模式未开启

{

f.BARO_MODE = 1; //开启baro模式气压计定高

AltHold = EstAlt;

initialThrottleHold = rcCommand[THROTTLE]; //储存此时rc 油门输出值

errorAltitudeI = 0; //重置PID输出和高度误差

BaroPID=0;

}

} else //若RC未选择BARO模式

{

f.BARO_MODE = 0; //关闭baro模式

}

#endif

#ifdef VARIOMETER //若定义了VARIOMETER

if (rcOptions[BOXVARIO]) //rc 若选择vario模式

{

if (!f.VARIO_MODE)

{

f.VARIO_MODE = 1; //开启vario模式

}

} else //rc未选择VARIO模式

f.VARIO_MODE = 0; //关闭vario模式

}

#endif

#endif

#if MAG //若配置了磁场传感器

if (rcOptions[BOXMAG]) //开启磁场传感器与上面开启各种模式一样 {

if (!f.MAG_MODE)

{

f.MAG_MODE = 1;

magHold = heading;

}

} else

{

f.MAG_MODE = 0;

}

if (rcOptions[BOXHEADFREE]) //开启无头模式与上面开启各种模式一样 {

if (!f.HEADFREE_MODE)

{

f.HEADFREE_MODE = 1;

}

}

else

{

f.HEADFREE_MODE = 0;

}

if (rcOptions[BOXHEADADJ])

{

headFreeModeHold = heading; // acquire new heading

}

#endif

static uint8_t GPSNavReset = 1;

if (f.GPS_FIX && GPS_numSat >= 5 )

{

if (rcOptions[BOXGPSHOME]) //若GPS_HOME 和GPS_HOLD 都被选择了额GPS_HOME 具有优先权

{

if (!f.GPS_HOME_MODE)

{

f.GPS_HOME_MODE = 1;

f.GPS_HOLD_MODE = 0;

GPSNavReset = 0;

#if defined(I2C_GPS)

GPS_I2C_command(I2C_GPS_COMMAND_START_NAV,0); //waypoint zero

#else // 串口

GPS_set_next_wp(&GPS_home[LAT],&GPS_home[LON]);

nav_mode = NAV_MODE_WP;

#endif

}

} else {

f.GPS_HOME_MODE = 0;

if (rcOptions[BOXGPSHOLD] && abs(rcCommand[ROLL])< AP_MODE && abs(rcCommand[PITCH]) < AP_MODE) { if (!f.GPS_HOLD_MODE) {

f.GPS_HOLD_MODE = 1;

GPSNavReset = 0;

#if defined(I2C_GPS)

GPS_I2C_command(I2C_GPS_COMMAND_POSHOLD,0);

#else

GPS_hold[LAT] = GPS_coord[LAT];

GPS_hold[LON] = GPS_coord[LON];

GPS_set_next_wp(&GPS_hold[LAT],&GPS_hold[LON]);

nav_mode = NAV_MODE_POSHOLD;

#endif

f.GPS_HOLD_MODE = 0;

// both boxes are unselected here, nav is reset if not already done

if (GPSNavReset == 0 ) {

GPSNavReset = 1;

GPS_reset_nav();

}

}

}

} else {

f.GPS_HOME_MODE = 0;

f.GPS_HOLD_MODE = 0;

#if !defined(I2C_GPS)

nav_mode = NAV_MODE_NONE;

#endif

}

#endif

#if defined(FIXEDWING) || defined(HELICOPTER) //另外的机型的模式与四轴无关

if (rcOptions[BOXPASSTHRU]) {f.PASSTHRU_MODE = 1;}

else {f.PASSTHRU_MODE = 0;}

#endif

} //RC循环到此为止

else //若未进入RC则依次进行以下5个任务

{

static uint8_t taskOrder=0; // 不把所有的任务放在一个循环中,避免高延迟使得RC循环无法进入。 if(taskOrder>4) taskOrder-=5;

switch (taskOrder) {

case 0:

taskOrder++;

#if MAG //获取MAG数据

case 1:

taskOrder++;

#if BARO //获取BARO数据

if (Baro_update() != 0 ) break;

#endif

case 2:

taskOrder++;

#if BARO //获取BARO数据

if (getEstimatedAltitude() !=0) break;

#endif

case 3:

taskOrder++;

#if GPS //获取GPS数据

if(GPS_Enable) GPS_NewData();

break;

#endif

case 4:

taskOrder++;

#if SONAR //获取SONAR (声呐)数据 Sonar_update();debug[2] = sonarAlt;

#endif

#ifdef LANDING_LIGHTS_DDR

auto_switch_landing_lights();

#endif

#ifdef VARIOMETER

if (f.VARIO_MODE) vario_signaling();

#endif

break;

}

}

// Measure loop rate just afer reading the sensors

currentTime = micros();

cycleTime = currentTime - previousTime;

previousTime = currentTime;

#ifdef CYCLETIME_FIXATED

if (conf.cycletime_fixated) {

if ((micros()-timestamp_fixated)>conf.cycletime_fixated) {

} else {

while((micros()-timestamp_fixated)

}

timestamp_fixated=micros();

}

#endif

//***********************************

//**** Experimental FlightModes ***** 实验的飞行模式

//***********************************

#if defined(ACROTRAINER_MODE) //固定翼训练者模式

if(f.ANGLE_MODE)

{

if (abs(rcCommand[ROLL]) + abs(rcCommand[PITCH]) >= ACROTRAINER_MODE ) //ACROTRAINER_MODE=200 {

f.ANGLE_MODE=0; //取消自稳定向定高GPS回家GPS定点

f.HORIZON_MODE=0;

f.MAG_MODE=0;

f.BARO_MODE=0;

f.GPS_HOME_MODE=0;

f.GPS_HOLD_MODE=0;

}

}

#endif

//***********************************

if (abs(rcCommand[YAW]) <70 && f.MAG_MODE) //开启定高,且yaw控制值在1430-1570之间

{

int16_t dif = heading - magHold;

if (dif <= - 180) dif += 360; //转过头了从另一方向转回去

if (dif >= + 180) dif -= 360; //转过头了从另一方向转回去

if ( f.SMALL_ANGLES_25 ) rcCommand[YAW] -= dif*conf.P8[PIDMAG]>>5; //dif*pidmag/32

}

else magHold = heading;

#endif

#if BARO && (!defined(SUPPRESS_BARO_ALTHOLD)) //气压计定高算法

if (f.BARO_MODE) //若开启了气压定高

{

static uint8_t isAltHoldChanged = 0;

#if defined(ALTHOLD_FAST_THROTTLE_CHANGE) //默认开启的

if (abs(rcCommand[THROTTLE]-initialThrottleHold) > ALT_HOLD_THROTTLE_NEUTRAL_ZONE) //initialThrottleHold=开启气压定高时的油门值 ALT_HOLD_THROTTLE_NEUTRAL_ZONE=40;控制量超过死区则开始执行

{

errorAltitudeI = 0;

isAltHoldChanged = 1; //气压定点改变标志位

rcCommand[THROTTLE] += (rcCommand[THROTTLE] > initialThrottleHold) ? -ALT_HOLD_THROTTLE_NEUTRAL_ZONE : ALT_HOLD_THROTTLE_NEUTRAL_ZONE; //减去或者加上死区

}

else

{

if (isAltHoldChanged)

{

AltHold = EstAlt; //改变定高高度为现在估计高度cm

isAltHoldChanged = 0;

}

rcCommand[THROTTLE] = initialThrottleHold + BaroPID;//油门控制量=initialThrottleHold+PID控制量非增量式PID控制

}

static int16_t AltHoldCorr = 0;

if (abs(rcCommand[THROTTLE]-initialThrottleHold)>ALT_HOLD_THROTTLE_NEUTRAL_ZONE)

{

// 缓慢增加或减少气压定高的高度,其值与操作杆位移有关(+100的油门(与开启定高时相比)使其1s升高50cm(程序循环时间3-4ms)) AltHoldCorr+= rcCommand[THROTTLE] - initialThrottleHold;//每个循环累加

if(abs(AltHoldCorr) > 500) //累加大于500

{

AltHold += AltHoldCorr/500; //改变气压定高高度。单位cm

AltHoldCorr %= 500;

}

errorAltitudeI = 0;

isAltHoldChanged = 1; //高度改变标志位记1

}

else if (isAltHoldChanged)

{

AltHold = EstAlt;

isAltHoldChanged = 0;

}

rcCommand[THROTTLE] = initialThrottleHold + BaroPID;//油门控制量=initialThrottleHold+PID控制量非增量式PID控制

#endif

}

#endif

#if GPS //与GPS有关

if ( (f.GPS_HOME_MODE || f.GPS_HOLD_MODE) && f.GPS_FIX_HOME ) {

float sin_yaw_y = sin(heading*0.0174532925f);

float cos_yaw_x = cos(heading*0.0174532925f);

#if defined(NAV_SLEW_RATE)

nav_rated[LON] += constrain(wrap_18000(nav[LON]-nav_rated[LON]),-NAV_SLEW_RATE,NAV_SLEW_RATE);

nav_rated[LAT] += constrain(wrap_18000(nav[LAT]-nav_rated[LAT]),-NAV_SLEW_RATE,NAV_SLEW_RATE);

GPS_angle[ROLL] = (nav_rated[LON]*cos_yaw_x - nav_rated[LAT]*sin_yaw_y) /10;

GPS_angle[PITCH] = (nav_rated[LON]*sin_yaw_y + nav_rated[LAT]*cos_yaw_x) /10;

#else

GPS_angle[PITCH] = (nav[LON]*sin_yaw_y + nav[LAT]*cos_yaw_x) /10;

#endif

} else {

GPS_angle[ROLL] = 0;

GPS_angle[PITCH] = 0;

}

#endif

//**** PITCH & ROLL & YAW PID ****

int16_t prop;

prop = min(max(abs(rcCommand[PITCH]),abs(rcCommand[ROLL])),500); // range [0;500]prop pitch和roll控制量大的。

for(axis=0;axis<3;axis++)

{

if ((f.ANGLE_MODE || f.HORIZON_MODE) && axis<2 ) // 开启自稳或者HORIZON模式 axis=pitch|roll

//此项为闭环控制,有角度作为反馈,控制信号消失,四轴回中。

{

// 最大倾斜角为50度

errorAngle = constrain((rcCommand[axis]<<1) + GPS_angle[axis],-500,+500) - angle[axis] + conf.angleTrim[axis]; //控制5为1度

//误差角度(要到的角度与现角度之差+角度修正),角度修正即微调ACC

PTermACC = ((int32_t)errorAngle*conf.P8[PIDLEVEL])>>7; //自稳ACC比例部分值。角度误差*P level除以128

//计算需要32位errorAngle*P8[PIDLEVEL] 会超过32768 结果只需要16位数据。

PTermACC = constrain(PTermACC,-conf.D8[PIDLEVEL]*5,+conf.D8[PIDLEVEL]*5); //限定PtermAcc的范围

errorAngleI[axis] = constrain(errorAngleI[axis]+errorAngle,-10000,+10000); // 累加ACC角度积分项误差

ITermACC = ((int32_t)errorAngleI[axis]*conf.I8[PIDLEVEL])>>12; // 自稳ACC积分部分值。/4096

}

if ( !f.ANGLE_MODE || f.HORIZON_MODE || axis == 2 ) //若普通模式或开启了HORIZON或者axis=yaw

//此项为开环控制,即有控制量则一直进行动作,并且由于积分项的存在,动作速度会有加快。当控制信号消失,四轴保持该状态。

{

if (abs(rcCommand[axis])<500) error = (rcCommand[axis]<<6)/conf.P8[axis] ; //误差=rcCommand[axis]*64/P值?

else error = ((int32_t)rcCommand[axis]<<6)/conf.P8[axis] ; // 32 bits is needed for calculation

error -= gyroData[axis];

errorGyroI[axis] = constrain(errorGyroI[axis]+error,-16000,+16000); //累加GYRO角度积分项误差

if (abs(gyroData[axis])>640) errorGyroI[axis] = 0;

ITermGYRO = ((errorGyroI[axis]>>7)*conf.I8[axis])>>6; //GYRO积分部分值。errorGyroI[axis]除以128乘以I8除以64 总共右移13位大于ACC的12位 I8<250;

}

if ( f.HORIZON_MODE && axis<2)

{

PTerm = ((int32_t)PTermACC*(512-prop) + (int32_t)PTermGYRO*prop)>>9; // the real factor should be 500, but 512 is ok ITerm = ((int32_t)ITermACC*(512-prop) + (int32_t)ITermGYRO*prop)>>9; //综合Pacc与Pgyro并用prop进行修正控制量大调小自稳系数,控制量小,以自稳为主。除以512

}

else

{

if ( f.ANGLE_MODE && axis<2) //开启自稳,则使用 PTermACC ITermACC

{

PTerm = PTermACC;

ITerm = ITermACC;

}

else //未开自稳,则使用PTermGYRO ITermGYRO

{

PTerm = PTermGYRO;

ITerm = ITermGYRO;

}

}

PTerm -= ((int32_t)gyroData[axis]*dynP8[axis])>>6;

// dynP8=P8*prop1/100;与当时油门有关与rate大则dyn小用角加速度值对角度P值进行修正。/64

delta = gyroData[axis] - lastGyro[axis]; // 2次连续的gyro 最大不会超过800 角速度变化(角加速度)

lastGyro[axis] = gyroData[axis]; //保存当前角速度值

deltaSum = delta1[axis]+delta2[axis]+delta; //对角速度差(角加速度)值进行累加

delta2[axis] = delta1[axis];

delta1[axis] = delta;

DTerm = ((int32_t)deltaSum*dynD8[axis])>>5; // 与当时油门有关与rate大则dyn小用角加速度值对角度P值进行修正。/32

}

mixTable(); //设置各个电机的输出 writeServos(); //舵机输出

writeMotors(); //电机输出

}

张亨整理 四个常用统计软件SAS,STATA,SPSS,R语言分析比较及其他统计软件概述题库

四个常用统计软件SAS,STATA,SPSS,R语言分析比较及其他统计软件概述 一、SAS,STATA,SPSS,R语言简介 (一)SAS简介 SAS(全称Statistical Analysis System,简称SAS,翻译成汉语是统计分析系统)是全球最大的软件公司之一,是由美国NORTH CAROLINA州立大学1966年开发的统计分析软件。1976年SAS软件研究所(SAS INSTITUTE INC)成立,开始进行SAS系统的维护、开发、销售和培训工作。期间经历了许多版本,并经过多年来的完善和发展,SAS系统在国际上已被誉为统计分析的标准软件,在各个领域得到广泛应用。 其网址是:https://www.sodocs.net/doc/bc6292493.html,/ (二)STSTA简介 STATA统计软件由美国计算机资源中心(Computer Resource Center)1985年研制。STATA 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。 新版本的STATA采用最具亲和力的窗口接口,使用者自行建立程序时,软件能提供具有直接命令式的语法。STATA提供完整的使用手册,包含统计样本建立、解释、模型与语法、文献等超过一万余页的出版品。 除此之外,STATA软件可以透过网络实时更新每天的最新功能,更可以得知世界各地的使用者对于STATA公司提出的问题与解决之道。使用者也可以透过STATA Journal 获得许许多多的相关讯息以及书籍介绍等。另外一个获取庞大资源的管道就是STATAlist,它是一个独立的listserver,每月交替提供使用者超过1000个讯息以及50个程序。 其网址是:https://www.sodocs.net/doc/bc6292493.html,/ (三)SPSS简介 SPSS(Statistical Product and Service Solutions),“统计产品与服务解决方案”软件。最初软件全称为“社会科学统计软件包”(Statistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为“统计产品与服务解决方案”,标志着SPSS 的战略方向正在做出重大调整。为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称SPSS,有Windows和Mac OS X等版本。 1984年SPSS总部首先推出了世界上第一个统计分析软件微机版本SPSS/PC+,开创了SPSS微机系列产品的开发方向,极大地扩充了它的应用范围,并使其能很快地应用于自然科学、技术科学、社会科学的各个领域。世界上许多有影响的报刊杂志纷纷就SPSS的自动统计绘图、数据的深入分析、使用方便、功能齐全等方面给予了高度的评价。 SPSS是世界上最早的统计分析软件,由美国斯坦福大学的三位研究生Norman H. Nie、C. Hadlai (Tex) Hull 和Dale H. Bent于1968年研究开发成功,同时成立了SPSS公司,并于1975年成立法人组织、在芝加哥组建了SPSS总部。

霍兰德职业代码

霍兰德职业代码 一、得分第一代码对应职业 将你测验得分居第一位的职业类型找出来,对照下表,判断一下自己适合的职业类型。 R(现实型、技能型);木匠、农民、操作X光的技师、工程师、飞机机械师、鱼类和野生动物专家、自动化技师、机械工(车工、钳工等)、电工、无线电报务员、火车司机、长途公共汽车司机、机械制图员、修理机器、电器师。 I(调查型、研究型):气象学者、生物学者、天文学家、药剂师、动物学者、化学家、科学报刊编辑、地质学者、植物学者、物理学者、数学家、实验员、科研人员、科技作者。 A(艺术型):室内装饰专家、图书管理专家、摄影师、音乐教师、作家、演员、记者、诗人、作曲家、编剧、雕刻家、漫画家。 S(社会型):社会学者、导游、福利机构工作者、咨询人员、社会工作者、社会科学教师、学校领导、精神病工作者、公共保健护士。 E(企业型):推销员、进货员、商品批发员、旅馆经理、饭店经理、广告宣传员、调度员、律师、政治家、零售商。 c(常规型、传统型):记帐员、会计、银行出纳、法庭速记员、成本估算员、税务员、核算员、打字员、办公室职员、统计员、计算机操作员、秘书。 二、得分前三代码对应职业 将你测验得分居前三位的职业类型找出来,对照下表,判断一下

自己适合的职业类型。 RIA:牙科技术员、陶工、建筑设计员、模型工、细木工、链条制作人员。 RIS:厨师、林务员、跳水员、潜水员、染色员、电器修理工、眼镜制作工、电工、纺织机器装配工、服务员、装玻璃工人、发电厂工人、焊接工。 RIE:建筑和桥梁工程人员、环境工程人员、航空工程人员、公路工程人员电力工程人员、信号工程人员、电话工程人员、一般机械工程人员、自动工程人员、矿业工程人员、海洋工程人员、交通工程技术人员、制图员、家政经济人、计量员、农民、农场机械操作、清洁工、无线修理、汽车修理、手表修理、管工、线路装配工、工具仓库管理员。 RIC:船上工作人员、接待员、杂志保管员、牙医助理、制帽工、磨坊工、石匠、机器制造工、机车(火车头)制造工、农业机器装配工、汽车装配工、缝纫机装配工、钟表装配和检验工、电动器具装配工、鞋匠、锁匠、货物检验员、电梯机修工、托儿所所长、钢琴调音师、装配工、印刷工、建筑钢铁工作人员、卡车司机。 RAI:手工雕刻人员、玻璃雕刻人员、模型制作人员、家具木工、皮革品制作人员、手工绣花人员、手工钩针纺织人员、印刷工作人员、图画雕刻人员、装订工。 RSI:纺织工、编织工、农业学校教师、某些职业课程教师(如艺术、商业、技术、工艺课程)、雨衣上胶工。

职业生涯规划常用测试工具

职业生涯规划常用测试工具 职业生涯规划,简称职业规划,是对职业生涯乃至人生进行持续的计划的过程,它包括职业定位、目标设定、通道设计三部分内容。 职业规划,常常需要搜集大量有关自我素质和态度的信息,有了这些信息才能够作出职业规划方面的决策。这些素质包括你的价值观、兴趣、个性因素、天赋或才能、生活方式或偏好以及任何弱点或缺点。你如果想找到适合自己的职业,并确立有意义的职业生涯规划目标,最基本的是要了解,下面是几个测试价值观、兴趣、个性、才能的主要工具。 一、职业价值观测试工具 1、埃德加?施恩(Edgar Schein)职业锚测试 施恩引入职业锚概念,是为了认清各种不同的工作倾向。人们自我感知的才能、动机和价值观等构成了人们对自身的职业定位,职业锚又是人们自己的职业观念的核心。此外,职业锚也可为选择职业提供一种基础;因为人们在选择工作或组织时所作的决定,往往与对自己的看法相一致。但是,人们又只有通过若干年的工作经验及实际考验,才能完全清楚、懂得他或她自己的职业锚到底应该在哪里。施恩根据自己对斯隆管理学院男性毕业生长期研究的结果,发现了8种类型的职业锚分。

2、WVI工作价值观问卷 WVI工作价值观量表,是美国心理学家舒伯于1970年编制的,用来衡量价值观——工作中和工作以外的——以及激励人们工作的 目标。量表将职业价值分为3个维度:一是内在价值观,即与职业本身性质有关的因素;二是外在价值观,即与职业性质有关的外部因素;三是外在报酬,共计15个因素。 工作价值观问卷是用来测量和工作满意状况有关的价值观。其实在一般价值观中已经包含工作价值观,只是不够具体细化。工作价值观是人生目标和人生态度在职业选择方面的具体体现。它对一个人的职业目标和择业动机起着决定性的作用。对工作价值的研究是职业生涯规划的基础。 3、罗克基价值观调查表 包括两种价值观序列(每个序列有18种价值观)。人们按照各种价值观在个人生活中作为指导原则的重要性对它们进行排序。第一序列包括“目的”价值观,或者说是与人们希望从生活中获得什么有关的价值观;而第二序列则由“工具”价值观组成,即与其为人处世方式有关的价值观。该调查表的一个重要方面是按价值观的相对重要性排序,这表明人们必须依照他们自身内部的价值观体系来指导他们做出选择。

静态代码检查工具Sonar的安装和使用

静态代码检查工具Sonar的安装和使用 目录 静态代码检查工具Sonar的安装和使用 (1) 第一章、Sonar简介 (2) 第二章、Sonar原理 (3) 第三章、Sonarqube安装 (5) 3.1、下载安装包 (5) 3.2、数据库连接方式 (5) 3.3、启动 (7) 3.4、插件引用 (8) 第四章、SonarQube Scanner安装 (10) 4.1、下载安装 (10) 4.2、数据库连接方式 (12) 4.3、启动并执行代码检查 (13) 4.4、查看执行结果 (16) 4.5、启动失败原因 (18)

第一章、Sonar简介 Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。 开源中国代码质量管理系统->https://www.sodocs.net/doc/bc6292493.html,/ 主要特点: ?代码覆盖:通过单元测试,将会显示哪行代码被选中 ?改善编码规则 ?搜寻编码规则:按照名字,插件,激活级别和类别进行查询 ?项目搜寻:按照项目的名字进行查询 ?对比数据:比较同一张表中的任何测量的趋势

第二章、Sonar原理 SonarQube 并不是简单地将各种质量检测工具的结果(例如FindBugs,PMD 等)直接展现给客户,而是通过不同的插件算法来对这些结果进行再加工,最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理。 SonarQube 在进行代码质量管理时,会从图1 所示的七个纬度来分析项目的质量。

霍兰德职业兴趣测验及职业代码

霍兰德职业兴趣测验 第一部分??你心目中的理想职业(专业) 对于未来的理想职业生涯,你也许早有考虑,它可能很抽象、很朦胧,也可能很具体、很清晰。不论是哪种情况,现在请你把自己最想做的三种工作按顺序写下来。 1. ___________________________ 2. ___________________________ 3. ___________________________ 第二部分你所感兴趣的活动 下面列举了若干种活动,请就这些活动判断你的好恶。喜欢的,请在“是”栏里打V;不喜欢的, 请在“否”里打V。请务必按顺序回答全部问题,然后统计“是”一栏次数。 R:现实型活动?? 1. 装配、修理电器或玩具是口否口 2. 修理自行车是口否口 3. 用木头做东西是口否口 4. 开汽车或摩托车是口否口 5. 用机器做东西是口否口 6. 参加木工技术学习班是口否口 7. 参加制图、描图学习班是口否口 8. 驾驶卡车或拖拉机是口否口 9. 参加机械和电气学习班是口否口 10 .装配修理机器是口否口 统计“是”一栏次数 _____________ I :研究型活动 1 .读科技图书和杂志是口否口 2.在实验室工作是口否口 3.改良水果品种,培育新的水果是口否口 4.调查了解土和金属等物质的成分是口否口 5.研究自己选择的特殊问题是口否口 6.解算式或玩数学游戏是口否口 7.物理课是口否口 &化学课是口否口 9.几何课是口否口 10.生物课是口否口 统计“是”一栏次数 A:艺术型活动 1.素描、制图或绘画是口否口 2.参加话剧、戏剧是口否口 3.设计豕具、布置室内是口否口 4.练习乐器、参加乐队是口否口 5.欣赏音乐或戏剧是口否口 6.看小说、读剧本是口否口

霍兰德职业兴趣测量表完整版及解释

R(实际型):木匠、农民、操作X光的技师、工程师、飞机机械师、鱼类和野生动物专家、自动化技师、机械工(车工、钳工等)、电工、无线电报务员、火车司机、长途公共汽车司机、机械制图员、修理机器、电器师。 I(调查型):气象学者、生物学者、天文学家、药剂师、动物学者、化学家、科学报刊编辑、地质学者、植物学者、物理学者、数学家、实验员、科研人员、科技作者。 A(艺术型):室内装饰专家、图书管理专家、摄影师、音乐教师、作家、演员、记者、诗人、作曲家、编剧、雕刻家、漫画家。 S(社会型):社会学者、导游、福利机构工作者、咨询人员、社会工作者、社会科学教师、学校领导、精神病工作者、公共保健护士。 E(事业型):推销员、进货员、商品批发员、旅馆经理、饭店经理、广告宣传员、调度员、律师、政治家、零售商。 C(常规型):记账员、会计、银行出纳、法庭速记员、成本估算员、税务员、核算员、打字员、办公室职员、统计员、计算机操作员、秘书。 下面介绍与你3个代号的职业兴趣类型一致的职业表,对照的方法如下:首先根据你的职业兴趣代号,在下表中找出相应的职业,例如你的职业兴趣代号是RIA,那么牙科技术人员、陶工等是适合你兴趣的职业。然后寻找与你职业兴趣代号相近的职业,如你的职业兴趣代号是RIA,那么,其他由这三个字母组合成的编号(入IRA、IAR、ARI等)对应的职业,也较适合你的兴趣。 RIA:牙科技术员、陶工、建筑设计员、模型工、细木工、制作链条人员。 RIS:厨师、林务员、跳水员、潜水员、染色员、电器修理、眼镜制作、电工、纺织机器装配工、服务员、装玻璃工人、发电厂工人、焊接工。 RIE;建筑和桥梁工程、环境工程、航空工程、公路工程、电力工程、信号工程、电话工程、一般机械工程、自动工程、矿业工程、海洋工程、交通工程技术人员、制图员、家政经济人员、计量员、农民、农场工人、农业机械操作、清洁工、无线电修理、汽车修理、手表修理、管工、线路装配工、工具仓库管理员。RIC:船上工作人员、接待员、杂志保管员、牙医助手、制帽工、磨坊工、石匠、机器制造、机车(火车头)制造、农业机器装配、汽车装配工、缝纫机装配工、钟表装配和检验、电动器具装配、鞋匠、锁匠、货物检验员、电梯机修工、托儿所所长、钢琴调音员、装配工、印刷工、建筑钢铁工作、卡车司机。 RAI:手工雕刻、玻璃雕刻、制作模型人员、家具木工、制作皮革品、手工绣花、手工钩针纺织、排字工作、印刷工作、图画雕刻、装订工。 RSE:消防员、交通巡警、警察、门卫、理发师、房间清洁工、屠夫、锻工、开凿工人、管道安装工、出租汽车驾驶员、货物搬运工、送报员、勘探员、娱乐场所的服务员、起卸机操作工、灭害虫者、电梯操作工、厨房助手。 RSI:纺织工、编织工、农业学校教师、某些职业课程教师(诸如艺术、商业、技术、工艺课程)、雨衣上胶工。 REC:抄水表员、保姆、实验室动物饲养员、动物管理员。 REI:轮船船长、航海领航员、大副、试管实验员。RES:旅馆服务员、家畜饲养员、渔民、渔网修补工、水手长、收割机操作工、搬运行李工人、公园服务员、救生员、登山导游、火车工程技术员、建筑工作、铺轨工人。 RCI:测量员、勘测员、仪表操作者、农业工程技术、化学工程技师、民用工程技师、石油工程技师、资料

Java静态检测工具的简单介绍 - Sonar、Findbugs

Java静态检测工具的简单介绍- Sonar、Findbugs 2010-11-04 13:55:54 标签:sonar休闲职场 Java静态检测工具的简单介绍 from: https://www.sodocs.net/doc/bc6292493.html,/?p=9015静态检查:静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人 工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。 代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和 设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代 码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、 不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题, 包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构 检查等内容。”。看了一系列的静态代码扫描或者叫静态代码分析工具后, 总结对工具的看法:静态代码扫描工具,和编译器的某些功能其实是很相似的, 他们也需要词法分析,语法分析,语意分析...但和编译器不一样的是他们可 以自定义各种各样的复杂的规则去对代码进行分析。 静态检测工具: 1.PMD 1)PMD是一个代码检查工具,它用于分析 Java 源代码,找出潜在的问题: 1)潜在的bug:空的try/catch/finally/switch语句 2)未使用的代码:未使用的局部变量、参数、私有方法等 3)可选的代码:String/StringBuffer的滥用

4)复杂的表达式:不必须的if语句、可以使用while循环完成的for循环 5)重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs 2)PMD特点: 1)与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在 不运行Java程序的情况下报告错误。 2)PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许 多问题 3)用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。 3)同时,PMD已经与JDeveloper、Eclipse、jEdit、JBuilder、BlueJ、 CodeGuide、NetBeans、Sun JavaStudio Enterprise/Creator、 IntelliJ IDEA、TextPad、Maven、Ant、Gel、JCreator以及Emacs 集成在一起。 4)PMD规则是可以定制的: 可用的规则并不仅限于内置规则。您可以添加新规则: 可以通过编写 Java 代码并重新编译 PDM,或者更简单些,编写 XPath 表 达式,它会针对每个 Java 类的抽象语法树进行处理。 5)只使用PDM内置规则,PMD 也可以找到你代码中的一些真正问题。某些问题可能 很小,但有些问题则可能很大。PMD 不可能找到每个 bug,你仍然需要做单元测 试和接受测试,在查找已知 bug 时,即使是 PMD 也无法替代一个好的调试器。

霍兰德职业代码

霍兰德职业索引—职业兴趣代码与其相应的职业对照表 R(实际型):木匠 、农民 、操作X光的技师 、飞机机械师、鱼类、和野生动物专家、自动化技师、机械工(车工、钳工等)、电工、无线电报务员、火车司机、长途公共汽车司机、机械制图员、修理机器、电器师。 I(调查型):气象学者、生物学者、天文学家、药剂师、动物学者、化学家、科学报刊编辑、地质学者、植物学者、物理学者、数学家、实验员、科研人员、科技作者。 A(艺术型):室内装饰专家、图书管理专家、摄影师、音乐教师、作家、演员、记者、诗人、作曲家、编剧、雕刻家、漫画家。 S(社会型):社会学者、导游、福利机构工作者、咨询人员、社会工作者、社会教师、学校领导、精神病工作者、公共保健护士。 E(事业型):推销员、进货员、商品批发员、旅游经理、饭店经理、广告宣传员、调度员、律师、政治家、零售商、 C(常规型):记帐员、会计、银行出纳、法庭速记员、成本估算员、税务员、核算员、打字员、办公室职员、计算机操作员、秘书。 下面介绍与你3个代号的职业兴趣类型一致的职业表,对照的方法如下: 首先根据你的职业兴趣代号,在下表中找出相对应的职业,例如你的职业兴趣代号是RIA,那么牙科技术人员、陶工等是适合你的兴趣的职业。然后寻找与你的职业兴趣代号相近的职业,如你的职业兴趣代号是RIA,那么,其他由这三个字母组合成的编号(入IRA、IAR、ARI等)对应的职业,也适合你的兴趣。 霍兰德职业代码 RIA 牙科技术员、陶工、建筑设计员、模型工、细木工、制作链条人员。 RIS厨师、林务员、跳水员、潜水员、染色工、电器修理、眼镜制作、电工、纺织机械装配工、报务员、装玻璃工人、发电厂操作工人、焊接工。 RIE 建筑和桥梁工程、环境工程、航空工程、公路工程、电力工程、信号工程、电话工程、一般机械工程、自动工程、矿业工程、海洋工程、交通工程技术人员、制图员、家政经济人员、打捞员、计量员、农民、农场工人、农业机器操作、清洁工、无线电修理、汽车修理、手表修理、管子工、线路维修、盖(修)房工、电子技术员、代木工、机械师、锻压操作工、造船装配工、工具仓库管理员。 RIC 船上工作人员。接待员、杂志保管员、牙科医生的助手、制帽工、磨坊工、石匠、机器制造、机车(火车头)制造、农业机器装配、汽车装配工、缝纫机装配工、钟表装配和检验、电动器具装配、鞋匠、锁匠、货物检验员、电梯机修工、托儿所所长、钢琴调音工、装配工、印刷工、建筑钢铁工人、卡车司机。 RAI 手工雕刻、玻璃雕刻、制作模型人员、家具木工、制作皮革品、手工绣花、手工钩针纺织、排字工人、印刷拼板工人、图画雕刻、装订工。 RSE 消防员、交通巡警、门卫、理发师、房间清洁工、屠夫、锻工、开凿人、管道安装工、出租汽车驾驶员、仓库管理员。 RSC 汽车驾驶员、货物搬运工、送报员、勘探员、娱乐场所的服务员、起卸机操作工、灭害虫者、电梯操作工、厨房助手。 RSI 纺织工、纺织工、农业学校的教师、某些职业课程教师(诸如艺术、商业、技术、工艺课程)、雨衣上胶工人。

常用统计软件介绍

常用统计软件介绍

常用统计软件介绍 《概率论与数理统计》是一门实践性很强的课程。但是,目前在国内,大多侧重基本方法的介绍,而忽视了统计实验的教学。这样既不利于提高学生创新精神和实践能力,也使得这门课程的教学显得枯燥无味。为此,我们介绍一些常用的统计软件,以使学生对统计软件有初步的认识,为以后应用统计方法解决实际问题奠定初步的基础。 一、统计软件的种类 1.SAS 是目前国际上最为流行的一种大型统计分析系统,被誉为统计分析的标准软件。尽管价格不菲,SAS已被广泛应用于政府行政管理,科研,教育,生产和金融等不同领域,并且发挥着愈来愈重要的作用。目前SAS已在全球100多个国家和地区拥有29000多个客户群,直接用户超过300万人。在我国,国家信息中心,国家统计局,卫生部,中国科学院等都是SAS系统的大用户。尽管现在已经尽量“傻瓜化”,但是仍然需要一定的训练才可以使用。因此,该统计软件主要适合于统计工作者和科研工作者使用。 2.SPSS SPSS作为仅次于SAS的统计软件工具包,在社会科学领域有着广泛的应用。SPSS是世界上最早的统计分析软件,由美国斯坦福大学的三位研究生于20世纪60年代末研制。由于SPSS容易操作,输出漂亮,功能齐全,价格合理,所以很快地应用于自然科学、技术科学、社会科学的各个领域,世界上许多有影响的报刊杂志纷纷就SPSS 的自动统计绘图、数据的深入分析、使用方便、功能齐全等方面给予了高度的评价与称赞。迄今SPSS软件已有30余年的成长历史。全球

约有25万家产品用户,它们分布于通讯、医疗、银行、证券、保险、制造、商业、市场研究、科研教育等多个领域和行业,是世界上应用最广泛的专业统计软件。在国际学术界有条不成文的规定,即在国际学术交流中,凡是用SPSS软件完成的计算和统计分析,可以不必说明算法,由此可见其影响之大和信誉之高。因此,对于非统计工作者是很好的选择。 3.Excel 它严格说来并不是统计软件,但作为数据表格软件,必然有一定统计计算功能。而且凡是有Microsoft Office的计算机,基本上都装有Excel。但要注意,有时在装 Office时没有装数据分析的功能,那就必须装了才行。当然,画图功能是都具备的。对于简单分析,Excel 还算方便,但随着问题的深入,Excel就不那么“傻瓜”,需要使用函数,甚至根本没有相应的方法了。多数专门一些的统计推断问题还需要其他专门的统计软件来处理。 4.S-plus 这是统计学家喜爱的软件。不仅由于其功能齐全,而且由于其强大的编程功能,使得研究人员可以编制自己的程序来实现自己的理论和方法。它也在进行“傻瓜化”,以争取顾客。但仍然以编程方便为顾客所青睐。 5.Minitab 这个软件是很方便的功能强大而又齐全的软件,也已经“傻瓜化”,在我国用的不如SPSS与SAS那么普遍。

四款优秀的源代码扫描工具简介

一、DMSCA-企业级静态源代码扫描分析服务平台 端玛企业级静态源代码扫描分析服务平台(英文简称:DMSCA)是一个独特的源代码安 全漏洞、质量缺陷和逻辑缺陷扫描分析服务平台。该平台可用于识别、跟踪和修复在源代码 中的技术和逻辑上的缺陷,让软件开发团队及测试团队快速、准确定位源代码中的安全漏洞、质量和业务逻辑缺陷等问题,并依据提供的专业中肯的修复建议,快速修复。提高软件产品 的可靠性、安全性。同时兼容并达到国际、国内相关行业的合规要求。 DMSCA是端玛科技在多年静态分析技术的积累及研发努力的基础上,联合多所国内及国 际知名大学、专家共同分析全球静态分析技术的优缺点后、结合当前开发语言的技术现状、 源代码缺陷的发展势态和市场后,研发出的新一代源代码企业级分析方案旨在从根源上识别、跟踪和修复源代码技术和逻辑上的缺陷。该方案克服了传统静态分析工具误报率(False Positive)高和漏报(False Negative)的缺陷。打断了国外产品在高端静态分析产品方面的垄断,形成中国自主可控的高端源代码安全和质量扫描产品,并支持中国自己的源代码检测方 面的国家标准(GB/T34944-2017 Java、GB/T34943-2017 C/C++、GB/T34946-2017 C#),致 力于为在中国的企业提供更直接,更个性化的平台定制和本地化服务。 DMSCA支持主流编程语言安全漏洞及质量缺陷扫描和分析,支持客户化平台界面、报告、规则自定义,以满足客户特定安全策略、安全标准和研发运营环境集成的需要。产品从面世,就获得了中国国内众多客户的青睐,这些客户包括但不限于银行、在线支付、保险、电力、 能源、电信、汽车、媒体娱乐、软件、服务和军事等行业的财富1000企业。 1、系统架构 2、系统组件

霍兰德职业兴趣测验 附职业代码字典

霍兰德职业兴趣测验附职业代码字典 目录 第一部分您愿意从事下列活动吗?(是?否?) (1) 第二部分您具有擅长或胜任下列活动的能力吗?(是?否?) (2) 评分提示: (2) 霍兰德职业代码字典 (3) 第一部分您愿意从事下列活动吗?(是?否?) 1.装配修理电器或玩具。 2.修理自行车。 3.用木头做东西。 4.开汽车或摩托车。 5.用机器做东西。 6.参加木工技术学习班。 7.参加制图描图学习班。 8.驾驶卡车或拖拉机。 9.参加机械和电气学习。 10.装配修理电器。 11.素描/制图或绘画。 12.参加话剧戏曲。 13.设计家具布置室内。 14.练习乐器/参加乐队。 15.欣赏音乐或戏剧。 16.看小说/读剧本。 17.从事摄影创作。 18.写诗或吟诗。 19.进艺术(美/音)培训班。 20.练习书法。 21.读科技图书和杂志。 22.在试验室工作。 23.改良品种,培育新水果 24.分析土和金属等的成分. 25.研究自己选择的问题. 26.解算式或数学游戏。 27.学物理课。 28.学化学课。 29.学几何课。 30.学生物课。31.学校或单位的正式活动. 32.参加社会团体或俱乐部 33.帮助别人解决困难。 34.照顾儿童。 35.晚会、联欢会、茶话会。 36.和大家一起出去郊游。 37.获得心理方面的知识。 38.参加讲座会或辩论会。 39.观看或参加体育比赛。 40.结交新朋友。 41.说服鼓动他人。 42.卖东西。 43.谈论政治。 44.制定计划、参加会议。 45影响别人的行为。 46.在社会团体中任职。 47.检查与评价别人的工作 48.结识名流。 49.指导项目小组。 50.参与政治活动。 51.整理好桌面和房间。 52.抄写文件和信件。 53.为领导写报告或公函。 54.查收个人收支情况。 55.参加打字培训班。 56.参加算盘,文秘等培训。 57.参加商业会计培训班。 58.参加情报处理培训班。 59.整理信件、报告、记录等。 60.写商业贸易信。

最新霍兰德代码

霍兰德代码 个人的职业兴趣往往是多方面的,因此,通常用3个字母(代表3种兴趣类型)的代码来表示一个人的职业兴趣,这个代码就称为“霍兰德代码”(Holland Code)。这三个字母之间的顺序表示了不同类型兴趣的强弱程度的不同。 R(现实型或实际型): 共同特点:愿意使用工具从事操作性工作,动手能力强,做事手脚灵活,动作协调。偏好于具体任务,不善言辞,做事保守,较为谦虚。缺乏社交能力,通常喜欢独立做事。 典型职业:喜欢使用工具、机器,需要基本操作技能的工作。对要求具备机械方面才能、体力或从事与物件、机器、工具、运动器材、植物、动物相关的职业有兴趣,并具备相应能力。 木匠、农民、操作X光的技师、工程师、飞机机械师、鱼类和野生动物专家、自动化技师、机械工(车工、钳工等)、电工、无线电报务员、火车司机、长途公共汽车司机、机械制图员、修理机器、电器师等。 I(研究型或调研型): 共同特点:思想家而非实干家,抽象思维能力强,求知欲强,肯动脑,善思考,不愿动手。喜欢独立的和富有创造性的工作。知识渊博,有学识才能,不善于领导他人。考虑问题理性,做事喜欢精确,喜欢逻辑分析和推理,不断探讨未知的领域。 典型职业:喜欢智力的、抽象的、分析的、独立的定向任务,要求具备智力或分析才能,并将其用于观察、估测、衡量、形成理论、最终解决问题的工作,并具备相应的能力。气象学者、生物学者、天文学家、药剂师、动物学者、化学家、科学报刊编辑、地质学者、植物学者、物理学者、数学家、实验员、科研人员、科技作者等。 A(艺术型): 共同特点:有创造力,乐于创造新颖、与众不同的成果,渴望表现自己的个性,实现自身的价值。做事理想化,追求完美,不重实际。具有一定的艺术才能和个性。善于表达、怀旧、心态较为复杂。 典型职业:喜欢的工作要求具备艺术修养、创造力、表达能力和直觉,并将其用于语言、行为、声音、颜色和形式的审美、思索和感受,具备相应的能力。不善于事务性工作。 如:室内装饰专家、图书管理专家、摄影师、音乐教师、作家、演员、记者、诗人、作曲家、编剧、雕刻家、漫画家等。 S(社会型):

霍兰德职业兴趣测验(含职业代码)

霍兰德职业兴趣测验(HLD) 第一部分您愿意从事下列活动吗?(是?否?) 1.装配修理电器或玩具。 2.修理自行车。 3.用木头做东西。 4.开汽车或摩托车。 5.用机器做东西。 6.参加木工技术学习班。 7.参加制图描图学习班。 8.驾驶卡车或拖拉机。 9.参加机械和电气学习。 10.装配修理电器。 11.素描/制图或绘画。 12.参加话剧戏曲。 13.设计家具布置室内。 14.练习乐器/参加乐队。 15.欣赏音乐或戏剧。 16.看小说/读剧本。 17.从事摄影创作。 18.写诗或吟诗。 19.进艺术(美/音)培训班。 20.练习书法。 21.读科技图书和杂志。 22.在试验室工作。 23.改良品种,培育新水果 24.分析土和金属等的成分. 25.研究自己选择的问题. 26.解算式或数学游戏。 27.学物理课。 28.学化学课。 29.学几何课。 30.学生物课。31.学校或单位的正式活动. 32.参加社会团体或俱乐部 33.帮助别人解决困难。 34.照顾儿童。 35.晚会、联欢会、茶话会。 36.和大家一起出去郊游。 37.获得心理方面的知识。 38.参加讲座会或辩论会。 39.观看或参加体育比赛。 40.结交新朋友。 41.说服鼓动他人。 42.卖东西。 43.谈论政治。 44.制定计划、参加会议。45影响别人的行为。 46.在社会团体中任职。 47.检查与评价别人的工作 48.结识名流。 49.指导项目小组。 50.参与政治活动。 51.整理好桌面和房间。 52.抄写文件和信件。 53.为领导写报告或公函。 54.查收个人收支情况。 55.参加打字培训班。 56.参加算盘,文秘等培训。 57.参加商业会计培训班。 58.参加情报处理培训班。 59.整理信件、报告、记录等。 60.写商业贸易信。 第二部分您具有擅长或胜任下列活动的能力吗?(是?否?) 61.能使用电锯、电钻和锉刀等木工工具。 62.知道万用表的使用方法。 63.能够修理自行车或其他机械。 64.能够使用电钻床、磨床或缝纫机。 65.能给家具和木制品刷漆。 66.能看建筑等设计图。 67.能够修理简单的电气用品。 68.能够修理家具。 69.能修收录机。 70.能简单地修理水管。 71.能演奏乐器。 72.能参加二部或四部合唱。 73.独唱或独奏。 74.扮演剧中角色。 75.能创作简单的乐曲。 76.会跳舞。 77.能绘画、素描或书法。78.能雕该刻、剪纸或泥塑。 79.能设计海报、服装或家具。 80.写得一手好文章。 81.懂得真空管或晶体管的作用。 82.能够举例三种含蛋白质多的食品。 83.理解铀的裂变。 84.能用计算尺、计算器、对数表。 85.会使用显微镜。 86.能找到三个星座。 87.能独立进行调查研究。 88.能解释简单的化学式。 89.理解人造卫星为什么不落地。 90.经常参加学术的会议。 91.有向各种人说明解释的能力。 92.常参加社会福利活动。 93.能和大家一起友好相处地工作。 94.善于与年长者相处。

霍兰德代码及其相近职业

霍兰德职业码及与之相近的部分职位 一、现实型为主的职业: RIA:牙科技术员、陶工、建筑设计员、模型工、细木工、制作链条人员 RIS:厨师、林务员、跳水员、潜水员、染色员、电器修理、眼镜制作、电工、纺织机器装配工、服务员、装玻璃工人、发电厂工人、焊接工 RIE:建筑和桥梁工程、环境工程、航空工程、公路工程、电力工程、信号工程、电话工程、一般机械工程、自动工程、矿业工程、海洋工程、交通工程技术人员、制图员、家政经济人员、打捞员、计量员、清洁员、无线电修理、汽车修理、手表修理、管子工、线路修理、电子技术员、伐木工、机械师、锻压操作工、造船装配工、工具仓库管理员 RIC:船上工作人员、接待员、杂志保管员、牙科医生的助手、制帽工、磨坊工、石匠、缝纫机装配工、钟表装配和检验、电动器具装配、鞋匠、锁匠、货物检验员、电梯机修工、托儿所所长、钢琴调音师、装配工、印刷工、建筑钢铁工人、卡车司机 RAI:手工雕刻、玻璃雕刻、制作模型员、家具木工、制作皮革品、手工绣花、手工钩针纺织、排字工、印刷工人、图画雕刻、装订工 RSE:消防员、交通巡警、警官、门卫、理发师、房间清洁工、屠夫、煅工、开挖工人、管道安装工、出租车驾驶员、货物搬运工、送报员、邮递员、勘探员、娱乐场所服务员、起卸机操作员RSI:纺织工、农业血型教师、某些职业课程教师(如艺术、商业、技术、工艺)、雨衣上胶工人REC:抄水表员、管道工、保姆、实验室动物饲养员、动物管理员 REI:轮船船长、航海领航员、大副、试管实验员 RES:旅馆服务员、家蓄饲养员、渔民、鱼网修补工、水手长、收割机操作工、行李搬运工、公园服务员、救生员、登山导游、火车工程技术员、建筑工人、铺轨工人 RCI:测量员、勘测员、仪器操作者、农业工程技术、化学工程技师、民用工程技师、石油工程技师、资料管理员、探矿工、锻烧工、烧窑工、矿工、保养工、磨床工、取样工、样品检验员、纺纱工、炮手、漂洗工、电焊工、锯木工、创床工、制帽工、手工缝纫工、油漆工、染色工、按摩工、木匠、农民建筑工人、电影放映员、勘测员助手 RCS:公共汽车驾驶员、一等水手、电话修理工、爆炸手、邮递员、打井工、吊车驾驶员、游泳池服务员、裁缝、石匠、烟囱修建工、混泥土工、建筑工人、矿工、表糊工人、纺纱工人RCE:打井工、吊车驾驶员、农场工人、邮件分类员、铲车司机、拖拉机司机 二、研究型为主的职业: IAS:普通经济学家、农业经济学家、财政经济学家、国际贸易经济专家、实验心理学家、工程心理专家、心理学家、哲学家、内科医生、数学家 IAR:人类学家、天文学家、化学家、物理学家、医学病理学家、动物标本剥制者、化石修复者、艺术品管理员 ISE:营养学家、饮食顾问、饮料顾问、火灾检查员、邮政服务检查员 ISC:侦察员、电视播音室管理及修理员、电视修理服务员、验尸室人员、编目录的人员、医学实验技、调查研究者 ISR:水生生物学者、昆虫学家、微生物学家、配镜师、矫正视力者、细菌学家、牙科医生、骨科医生 ISA:实验心理学家、普通心理学家、发展心理学家、教育心理学家、社会心理学家、临床心理学家、目录分类学家、皮肤病学家、精神病学家、妇产科医生、眼科医生、五官科医生、医学实验室技术专家、民航医务人员、护士 IES:细菌学家、生理学家、化学专家、地质专家、地理物理学专家、纺织技术专家、医院药剂

霍兰德职业倾向测验量表(完整版)

霍兰德职业倾向测验量表 本测验量表将帮助您发现和确定自己的职业兴趣和能力特长,从而更好地做出求职择业的决策。如果您已经考虑好或选择好了自己的职业,本测验将使您的这种考虑或选择具有理论基础,或向您展示其他合适的职业;如果您至今尚未确定职业方向,本测验将帮助您根据自己的情况选择一个恰当的职业目标。 本测验共有七个部分,每部分测验都没有时间限制,但请您尽快按要求完成。 第一部分您心目中的理想职业(专业) 对于未来的职业(或升学进修的专业),您得早有考虑,它可能很抽象、很朦胧,也可能很具体、很清晰。不论是哪种情况,现在都请您把自己最想干的3种工作或最想读的3种专业,按顺序写下来。 第二部分您所感兴趣的活动 下面列举了若干种活动,请就这些活动判断你的好恶。喜欢的,请在“是”栏里打√;不喜欢的在“否”栏里打×。请按顺序回答全部问题 R:实际型活动是否 1.装配修理电器或玩具2.修理自行车3.用木头做东西4.开汽车或摩托车 5.用机器做东西6.参加木工技术学习班7.参加制图描图学习班8.驾驶卡车或拖拉机9.参加机械和电气学习班10.装配修理机器 统计“是”一栏得分计 A:艺术型活动是否 1.素描/制图或绘画2.参加话剧/戏剧3.设计家具/布置室内4.练习乐器/参加乐队5.欣赏音乐或戏剧6.看小说/读剧本7.从事摄影创作8.写诗或吟诗9.进艺术(美术/音乐)培训班10.练习书法 统计“是”一栏得分计 I:调查型活动是否 1.读科技图书和杂志2.在实验室工作3.改良水果品种,培育新的水果4,调查了解土和金属等物质的成分5,研究自己选择的特殊问题6.解算术或玩数学游戏7.物理课 8,化学课9.几何课10.生物课 统计“是”一栏得分计 S:社会型活动是否 1.学校或单位组织的正式活动2.参加某个社会团体或俱乐部活动3.帮助别人解决困难 4.照顾儿童5,出席晚会、联欢会、茶话会6.和大家一起出去郊游7.想获得关于心理方面的知识8.参加讲座会或辩论会9.观看或参加体育比赛和运动会10.结交新朋友 统计“是”一栏得分计 E:事业型活动是否 1.说服鼓动他人2.卖东西3.谈论政治4.制定计划、参加会议5.以自己的意志影响别人的行为6.在社会团体中担任职务7.检查与评价别人的工作8.结交名流 9.指导有某种目标的团体10.参与政治活动 统计“是”一栏得分计 C:常规型(传统型)活动是否 1.整理好桌面和房间2.抄写文件和信3.为领导写报告或公务信函4.检查个人收支情况5.打字培训班6.参加算盘、文秘等实务培训7.参加商业会计培训班8.参加情报处理培训班9.整理信件、报告、记录等10.写商业贸易信 统计“是”一栏得分计 第三部分您所擅长获胜的活动

世界三大统计分析软件比较

世界三大统计分析软件的比较: 2007-04-10 SAS(多变量数据分析技术与统计软件) SAS是美国SAS(赛仕)软件研究所研制的一套大型集成应用软件系统,具有比较完备的数据存取、数据管理、数据分析和数据展现的系列功能。尤其是它的创业产品—统计分析系统部分,由于具有强大的数据分析能力,一直是业界中比较著名的应用软件,在数据处理方法和统计分析领域,被誉为国际上的标准软件和最具权威的优秀统计软件包,SAS系统中提供的主要分析功能包括统计分析、经济计量分析、时间序列分析、决策分析、财务分析和全面质量管理工具等。 SAS系统是一个组合的软件系统,它由多个功能模块配合而成,其基本部分是BASE SAS模块。BASE SAS模块是SAS系统的核心,承担着主要的数据管理任务,并管理着用户使用环境,进行用户语言的处理,调用其他SAS模块和产品。也就是说,SAS系统的运行,首先必须启动BASE SAS模块,它除了本身所具有数据管理、程序设计及描述统计计算功能以外,还是SAS系统的中央调度室。它除了可单独存在外,也可与其他产品或模块共同构成一个完整的系统。各模块的安装及更新都可通过其安装程序比较方便地进行。 SAS系统具有比较灵活的功能扩展接口和强大的功能模块,在BASE SAS的基础上,还可以增加如下不同的模块而增加不同的功能:SAS/STAT(统计分析模块)、SAS/GRAPH (绘图模块)、SAS/QC(质量控制模块)、SAS/ETS(经济计量学和时间序列分析模块)、SAS/OR(运筹学模块)、SAS/IML(交互式矩阵程序设计语言模块)、SAS/FSP

(快速数据处理的交互式菜单系统模块)、SAS/AF(交互式全屏幕软件应用系统模块)等等。 SAS提供的绘图系统,不仅能绘各种统计图,还能绘出地图。SAS提供多个统计过程,每个过程均含有极丰富的任选项。用户还可以通过对数据集的一连串加工,实现更为复杂的统计分析。此外,SAS还提供了各类概率分析函数、分位数函数、样本统计函数和随机数生成函数,使用户能方便地实现特殊统计要求。 目前SAS软件对Windows和Unix两种平台都提供支持,最新版本分别为8.X和6.X。与以往的版本比较,6.X版的SAS系统除了在功能和性能方面得到增加和提高外,GUI界面也进一步加强。在6.12版中,SAS系统增加了一个PC平台和三个新的UNIX平台,使SAS 系统这一支持多硬件厂商,跨平台的大家族又增加了新成员。SAS 6.12的另一个显著特征是通过对ODBC、OLE和MailAPIs等业界标准的支持,大大加强了SAS系统和其它软件厂商的应用系统之间相互操作的能力,为各应用系统之间的信息共享和交流奠定了坚实的基础。 虽然在我国SAS的逐步应用还是近几年的事,但是随着计算机应用的普及和信息事业的不断发展,越来越多的单位采用了SAS软件。尤其在教育、科研领域等大型机构,SAS软件已成为专业研究人员实用的进行统计分析的标准软件。 然而,由于SAS系统是从大型机上的系统发展而来,其操作至今仍以编程为主,人机对话界面不太友好,系统地学习和掌握SAS,需要花费一定的精力。而对大多数实际部门工作者而言,需要掌握的仅是如何利用统计分析软件来解决自己的实际问题,因此往往会与大型SAS软件系统失之交臂。但不管怎样,SAS作为专业统计分析软件中的巨无霸,现在鲜有软件在规模系列上与之抗衡。

产品质量控制常用的七种统计分析工具

产品质量控制常用的七种统计分析工具chinawoodmen,2010-04-18 14:51:35 品管七大手法是常用的统计管理方法,又称为初级统计管理方法。它主要包括控制图、因果图、相关图、排列图、统计分析表、数据分层法、散布图等所谓的QC七工具。运用这些工具,可以从经常变化的生产过程中,系统地收集与产品质量有关的各种数据,并用统计方法对数据进行整理,加工和分析,进而画出各种图表,计算某些数据指标,从中找出质量变化的规律,实现对质量的控制。日本著名的质量管理专家石川馨曾说过,企业内95%的质量管理问题,可通过企业上上下下全体人员活用这QC七工具而得到解决。全面质量管理的推行,也离不开企业各级、各部门人员对这些工具的掌握与灵活应用。 1、 统计分析表 统计分析表是利用统计表对数据进行整理和初步分析原因的一种工具,其格式可多种多样,这种方法虽然较单,但实用有效。 2、 数据分层法 数据分层法就是性质相同的,在同一条件下收集的数据归纳在一起,以便进行比较分析。因为在实际生产中,影响质量变动的因素很多如果不把这些困素区别开来,难以得出变化的规律。数据分层可根据实际情况按多种方式进行。例如,按不同时间,不同班次进行分层,按使用设备的种类进行分层,按原材料的进料时间,原材料成分进行分层,按检查手段,使用条件进行分层,按不同缺陷项目进行分层,等等。数据分层法经常与上述的统计分析表结合使用。 数据分层法的应用,主要是一种系统概念,即在于要想把相当复杂的资料进行处理,就得懂得如何把这些资料加以有系统有目的加以分门别类的归纳及统计。 科学管理强调的是以管理的技法来弥补以往靠经验靠视觉判断的管理的不足。而此管理技法,除了建立正确的理念外,更需要有数据的运用,才有办法进行工作解析及采取正确的措施。 如何建立原始的数据及将这些数据依据所需要的目的进行集计,也是诸多品管手法的最基础工作。 举个例子:我国航空市场近几年随着开放而竞争日趋激烈,航空公司为了争取市场除了加强各种措施外,也在服务品质方面下功夫。我们也可以经常在航机上看到客户满意度的调查。此调查是通过调查表来进行的。调查表的设计通常分为地面的服务品质及航机上的服务品质。地面

相关主题