亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pid.c

?? CNC 的開放碼,EMC2 V2.2.8版
?? C
?? 第 1 頁 / 共 2 頁
字號:
	    tmp1 = pid->maxerror;	} else if (tmp1 < -pid->maxerror) {	    tmp1 = -pid->maxerror;	}    }    /* apply the deadband */    if (tmp1 > pid->deadband) {	tmp1 -= pid->deadband;    } else if (tmp1 < -pid->deadband) {	tmp1 += pid->deadband;    } else {	tmp1 = 0;    }    /* do integrator calcs only if enabled */    if (enable != 0) {	/* if output is in limit, don't let integrator wind up */	if ( ( tmp1 * pid->limit_state ) <= 0.0 ) {	    /* compute integral term */	    pid->error_i += tmp1 * periodfp;	}	/* apply integrator limits */	if (pid->maxerror_i != 0.0) {	    if (pid->error_i > pid->maxerror_i) {		pid->error_i = pid->maxerror_i;	    } else if (pid->error_i < -pid->maxerror_i) {		pid->error_i = -pid->maxerror_i;	    }	}    } else {	/* not enabled, reset integrator */	pid->error_i = 0;    }    /* calculate derivative term */    pid->error_d = (tmp1 - pid->prev_error) * periodrecip;    pid->prev_error = tmp1;    /* apply derivative limits */    if (pid->maxerror_d != 0.0) {	if (pid->error_d > pid->maxerror_d) {	    pid->error_d = pid->maxerror_d;	} else if (pid->error_d < -pid->maxerror_d) {	    pid->error_d = -pid->maxerror_d;	}    }    /* calculate derivative of command */    /* save old value for 2nd derivative calc later */    tmp2 = pid->cmd_d;    pid->cmd_d = (*(pid->command) - pid->prev_cmd) * periodrecip;    pid->prev_cmd = *(pid->command);    /* apply derivative limits */    if (pid->maxcmd_d != 0.0) {	if (pid->cmd_d > pid->maxcmd_d) {	    pid->cmd_d = pid->maxcmd_d;	} else if (pid->cmd_d < -pid->maxcmd_d) {	    pid->cmd_d = -pid->maxcmd_d;	}    }    /* calculate 2nd derivative of command */    pid->cmd_dd = (pid->cmd_d - tmp2) * periodrecip;    /* apply 2nd derivative limits */    if (pid->maxcmd_dd != 0.0) {	if (pid->cmd_dd > pid->maxcmd_dd) {	    pid->cmd_dd = pid->maxcmd_dd;	} else if (pid->cmd_dd < -pid->maxcmd_dd) {	    pid->cmd_dd = -pid->maxcmd_dd;	}    }    /* do output calcs only if enabled */    if (enable != 0) {	/* calculate the output value */	tmp1 =	    pid->bias + pid->pgain * tmp1 + pid->igain * pid->error_i +	    pid->dgain * pid->error_d;	tmp1 += *(pid->command) * pid->ff0gain + pid->cmd_d * pid->ff1gain +	    pid->cmd_dd * pid->ff2gain;	/* apply output limits */	if (pid->maxoutput != 0.0) {	    if (tmp1 > pid->maxoutput) {		tmp1 = pid->maxoutput;		pid->limit_state = 1.0;	    } else if (tmp1 < -pid->maxoutput) {		tmp1 = -pid->maxoutput;		pid->limit_state = -1.0;	    } else {		pid->limit_state = 0.0;	    }	}    } else {	/* not enabled, force output to zero */	tmp1 = 0.0;	pid->limit_state = 0.0;    }    /* write final output value to output pin */    *(pid->output) = tmp1;    /* done */}/************************************************************************                   LOCAL FUNCTION DEFINITIONS                         *************************************************************************/static int export_pid(int num, hal_pid_t * addr){    int retval, msg;    char buf[HAL_NAME_LEN + 2];    /* This function exports a lot of stuff, which results in a lot of       logging if msg_level is at INFO or ALL. So we save the current value       of msg_level and restore it later.  If you actually need to log this       function's actions, change the second line below */    msg = rtapi_get_msg_level();    rtapi_set_msg_level(RTAPI_MSG_WARN);    /* export pins */    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.enable", num);    retval = hal_pin_bit_new(buf, HAL_IN, &(addr->enable), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.command", num);    retval = hal_pin_float_new(buf, HAL_IN, &(addr->command), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.feedback", num);    retval = hal_pin_float_new(buf, HAL_IN, &(addr->feedback), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.error", num);    retval = hal_pin_float_new(buf, HAL_OUT, &(addr->error), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.output", num);    retval = hal_pin_float_new(buf, HAL_OUT, &(addr->output), comp_id);    if (retval != 0) {	return retval;    }    /* export parameters */    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.deadband", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->deadband), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.maxerror", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->maxerror), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.maxerrorI", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->maxerror_i), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.maxerrorD", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->maxerror_d), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.maxcmdD", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->maxcmd_d), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.maxcmdDD", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->maxcmd_dd), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.bias", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->bias), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.Pgain", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->pgain), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.Igain", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->igain), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.Dgain", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->dgain), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.FF0", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->ff0gain), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.FF1", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->ff1gain), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.FF2", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->ff2gain), comp_id);    if (retval != 0) {	return retval;    }    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.maxoutput", num);    retval = hal_param_float_new(buf, HAL_RW, &(addr->maxoutput), comp_id);    if (retval != 0) {	return retval;    }    /* export optional parameters */    if (debug > 0) {	rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.errorI", num);	retval = hal_param_float_new(buf, HAL_RO, &(addr->error_i), comp_id);	if (retval != 0) {	    return retval;	}	rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.errorD", num);	retval = hal_param_float_new(buf, HAL_RO, &(addr->error_d), comp_id);	if (retval != 0) {	    return retval;	}	rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.commandD", num);	retval = hal_param_float_new(buf, HAL_RO, &(addr->cmd_d), comp_id);	if (retval != 0) {	    return retval;	}	rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.commandDD", num);	retval = hal_param_float_new(buf, HAL_RO, &(addr->cmd_dd), comp_id);	if (retval != 0) {	    return retval;	}    }    /* init all structure members */    *(addr->enable) = 0;    *(addr->command) = 0;    *(addr->feedback) = 0;    *(addr->error) = 0;    *(addr->output) = 0;    addr->deadband = 0.0;    addr->maxerror = 0.0;    addr->maxerror_i = 0.0;    addr->maxerror_d = 0.0;    addr->maxcmd_d = 0.0;    addr->maxcmd_dd = 0.0;    addr->error_i = 0.0;    addr->prev_error = 0.0;    addr->error_d = 0.0;    addr->prev_cmd = 0.0;    addr->limit_state = 0.0;    addr->cmd_d = 0.0;    addr->cmd_dd = 0.0;    addr->bias = 0.0;    addr->pgain = 1.0;    addr->igain = 0.0;    addr->dgain = 0.0;    addr->ff0gain = 0.0;    addr->ff1gain = 0.0;    addr->ff2gain = 0.0;    addr->maxoutput = 0.0;    /* export function for this loop */    rtapi_snprintf(buf, HAL_NAME_LEN, "pid.%d.do-pid-calcs", num);    retval =	hal_export_funct(buf, calc_pid, &(pid_array[num]), 1, 0, comp_id);    if (retval != 0) {	rtapi_print_msg(RTAPI_MSG_ERR,	    "PID: ERROR: do_pid_calcs funct export failed\n");	hal_exit(comp_id);	return -1;    }    /* restore saved message level */    rtapi_set_msg_level(msg);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费毛片片v| 色欲综合视频天天天| 成人一区在线看| 欧美视频中文字幕| 久久久蜜桃精品| 亚洲电影视频在线| 99久久精品一区二区| 精品国产免费一区二区三区四区 | 欧美成人性战久久| 一区二区在线观看免费| 成人一级片网址| 日韩免费福利电影在线观看| 亚洲一区在线视频观看| www..com久久爱| 国产亚洲欧美中文| 经典三级一区二区| 日韩一区二区三区三四区视频在线观看| 国产精品国产自产拍高清av王其| 久久国产尿小便嘘嘘| 717成人午夜免费福利电影| 最新中文字幕一区二区三区| 粉嫩av一区二区三区粉嫩| 日韩一区二区精品葵司在线 | 国产精品国产三级国产aⅴ入口 | 亚洲一区二区三区四区不卡| eeuss国产一区二区三区| 久久精品人人做| 国产91色综合久久免费分享| 中文字幕免费不卡| 成人av综合一区| 日韩码欧中文字| 色噜噜狠狠成人网p站| 亚洲欧美日本韩国| 色综合久久久网| 亚洲韩国一区二区三区| 91行情网站电视在线观看高清版| 国产精品久久久久影院老司| 99视频有精品| 亚洲欧美色一区| 欧美日韩国产色站一区二区三区| 亚洲成人动漫一区| 日韩欧美精品在线| 国产综合久久久久影院| 日本一区二区三区视频视频| 成人一级黄色片| 亚洲精品v日韩精品| 欧美日韩一区二区在线视频| 丝袜脚交一区二区| 久久综合九色综合97婷婷 | 美国十次综合导航| 日韩精品一区二区三区在线观看| 国产麻豆精品在线| 国产精品久久久久久亚洲毛片 | 亚洲视频一区在线| 99精品桃花视频在线观看| 亚洲男帅同性gay1069| 欧美中文字幕不卡| 久久狠狠亚洲综合| 国产色综合久久| 色噜噜狠狠色综合欧洲selulu| 五月激情六月综合| 久久精品欧美一区二区三区不卡| av动漫一区二区| 日本一不卡视频| 国产清纯白嫩初高生在线观看91| 色婷婷av一区二区三区大白胸| 日韩高清不卡一区二区三区| 欧美国产禁国产网站cc| 欧美日韩精品欧美日韩精品一综合| 久久av老司机精品网站导航| 一色桃子久久精品亚洲| 日韩午夜激情视频| 成人app下载| 蜜桃视频一区二区三区| 最新不卡av在线| 精品日韩欧美在线| 色偷偷成人一区二区三区91| 韩国女主播一区| 三级不卡在线观看| 国产精品久久久久一区二区三区共| 欧美日韩一区二区三区免费看| 国产成人av电影在线观看| 五月婷婷综合激情| 中文字幕亚洲综合久久菠萝蜜| 欧美一级生活片| 91麻豆精品视频| 国产99久久久国产精品免费看 | 欧美另类z0zxhd电影| 成人午夜视频免费看| 日韩激情一区二区| 亚洲精品成人悠悠色影视| 国产午夜精品一区二区| 日韩精品在线网站| 欧美伦理电影网| 一本一本久久a久久精品综合麻豆| 国产精品自拍三区| 日本成人在线电影网| 亚洲18影院在线观看| 一区二区高清在线| 亚洲精品视频免费看| 亚洲天堂免费看| 国产精品乱码一区二三区小蝌蚪| 久久久久一区二区三区四区| 欧美一区二区在线免费播放| 欧美日韩午夜在线| 欧美日高清视频| 久久综合色一综合色88| 欧美一区二区视频免费观看| 欧美日韩一区高清| 欧美福利一区二区| 欧美一区二区免费| 欧美va天堂va视频va在线| 欧美一区二区三区在线观看| 欧美一级一区二区| 日韩女优毛片在线| 日韩精品中文字幕在线不卡尤物| 日韩一区二区影院| 2欧美一区二区三区在线观看视频| 日韩三级.com| 久久久精品2019中文字幕之3| 精品电影一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 久久亚洲一级片| 国产欧美精品区一区二区三区 | 26uuu色噜噜精品一区二区| 欧美精品一区视频| 国产欧美一区二区精品秋霞影院| 国产精品亲子伦对白| 亚洲日本丝袜连裤袜办公室| 亚洲va国产va欧美va观看| 日韩国产精品91| 国产在线视频精品一区| 99国产精品久| 欧美日韩一区二区三区在线看| 91精品国产综合久久久久久久久久| 欧美一级免费大片| 久久久精品一品道一区| 亚洲同性同志一二三专区| 亚洲成人av资源| 国产精品一区不卡| 91丨九色porny丨蝌蚪| 欧美精品一卡二卡| 欧美精品一区二区三区四区| 国产精品高潮呻吟| 婷婷成人激情在线网| 国产精品中文字幕日韩精品| 91偷拍与自偷拍精品| 在线综合视频播放| 中文一区二区在线观看| 亚洲一区二区三区自拍| 韩国三级电影一区二区| 91视频在线观看| 精品久久久久久久久久久院品网 | 日韩女优制服丝袜电影| 中文字幕一区视频| 国产在线精品一区二区| 日本高清视频一区二区| 精品精品国产高清一毛片一天堂| 亚洲色图一区二区| 久久99国内精品| 欧美调教femdomvk| 国产日韩av一区| 日韩精品一区第一页| 99国产精品视频免费观看| 欧美成人一区二区三区在线观看 | 91久久精品一区二区二区| 久久综合网色—综合色88| 亚洲一区二区三区激情| 成人国产精品免费| 亚洲精品一区二区三区在线观看 | 国产综合一区二区| 欧美老肥妇做.爰bbww视频| 一区在线播放视频| 国产激情一区二区三区桃花岛亚洲| 666欧美在线视频| 亚洲成人精品影院| 91蜜桃在线免费视频| 久久精品亚洲乱码伦伦中文| 爽爽淫人综合网网站| 日本精品一区二区三区高清 | 国产欧美一区二区在线| 日韩精品视频网| 精品视频999| 一区二区欧美视频| 99久久久久免费精品国产| 国产精品久久久久天堂| 国产成人av一区二区三区在线 | 日韩精品一区二区三区在线| 激情综合网av| 日韩视频在线观看一区二区| 亚洲不卡av一区二区三区| 在线观看一区二区视频| 综合久久久久久| 成人白浆超碰人人人人| 国产精品久久一级| 成人av集中营| 亚洲精品免费看| 欧美色偷偷大香| 日韩二区三区四区| 91精品国产综合久久小美女|