pid

改进初学者的PID-正反作用

匿名 (未验证) 提交于 2019-12-03 00:06:01
最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助。作者Brett Beauregard的原文网址: http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-direction/ 1 、问题所在 将PID连接过程分为两组:直接作用和反向作用。到目前为止,我所展示的所有例子都是直接行动。也就是说,输出的增加会导致输入的增加。对于反向作用过程,情况正好相反。例如,在冰箱中,冷却水的增加会导致温度下降。要使初学者 PID 使用反向过程,kp、ki 和 kp 的符号都必须为负数。 这本身不是问题,但用户必须选择正确的符号,并确保所有参数都具有相同的符号。 2 、解决方案 为了让这个过程简单一点,我要求 kp、ki 和 kp 都是大于等于0的。如果用户连接到反向进程,则使用SetControllerDirection函数指定反向进程。这可以确保所有参数都具有相同的符号,并使事情操作起来更直观。 3 、代码 /*working variables*/ unsigned long lastTime ; double Input , Output , Setpoint ; double ITerm ,

1756-OF8

匿名 (未验证) 提交于 2019-12-03 00:03:02
DI880 3BSE028586R1 18/100 发布文章 ZXDzm 选择文件 啥是PID? PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。 算法是不可以吃的。 PID已经有107年的历史了。 它并不是什么很神圣的东西,大家一定都见过PID的实际应用。 比如四轴飞行器,再比如平衡小车…还有汽车的定速巡航、3D打印机上的温度控制器… 就是类似于这种:需要将某一个物理量“保持稳定”的场合(比如维持平衡,稳定温度、转速等),PID都会派上大用场。 那么问题来了: 比如,我想控制一个“热得快”,让一锅水的温度保持在50℃ 这么简单的任务,为啥要用到微积分的理论呢。 你一定在想: 这不是soeasy嘛~小于50度就让它加热,大于50度就断电,不就行了?几行代码用Arduino分分钟写出来。 没错 在要求不高的情况下,确实可以这么干 But!如果换一种说法,你就知道问题出在哪里了: 如果我的控制对象是一辆汽车呢? 要是希望汽车的车速保持在50km/h不动,你还敢这样干么。 设想一下,假如汽车的定速巡航电脑在某一时间测到车速是45km/h

设置程序崩溃时产生 core 文件的配置

匿名 (未验证) 提交于 2019-12-02 23:57:01
1 /* 不限制 core 文件的大小 */ 2 ulimit -c unlimited 3 4 /* 使用 pid 进行命名 */ 5 echo "1" > /proc/sys/kernel/core_uses_pid 6 7 /* 配置 core 文件存储路径,及名称的格式 */ 8 echo "~/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern 来源:博客园 作者: Lanceؼؼ 链接:https://www.cnblogs.com/GyForever1004/p/11456401.html

springboot 启动脚本获取pid问题

匿名 (未验证) 提交于 2019-12-02 23:57:01
#! /bin/bash APP = 'eureka-1.0.0.jar' active = 'slave' pid = $ ( pgrep - f $APP ) export JAVA_OPTS = "-server -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC" start () { if [ - n "$pid" ]; then echo "[$APP] already start, pid:&pid" kill - 9 $pid #return 0 fi #nohup java -jar $APP --spring.profiles.active=$active | /usr/sbin/cronolog eureka-$active-%Y-%m-%d.out >> /dev/null 2>&1 & ##日志切割 nohup java - jar $APP -- spring . profiles . active = $active >> /dev/ null & ##不保存启动日志 echo "[$APP] start, ok!" } stop () { if

jmap -histo pid 输出的[C [B [I [S methodKlass constantPoolKlass含义

匿名 (未验证) 提交于 2019-12-02 23:56:01
JMAP 输出 [hadoop@DEV logs]$ jmap -histo 24527 | head -30 num #instances #bytes class name ---------------------------------------------- 1: 31939 98883072 [C 2: 8594 9461992 [B 3: 30326 4256232 <constMethodKlass> 4: 30326 3892592 <methodKlass> 5: 2719 3226344 <constantPoolKlass> 6: 2450 1948704 <constantPoolCacheKlass> 7: 2719 1869200 <instanceKlassKlass> 8: 27599 662376 java.lang.String 9: 836 442968 <methodDataKlass> 10: 8215 394320 org.apache.tomcat.util.buf.ByteChunk 11: 3012 366720 java.lang.Class 12: 11257 360224 java.util.HashMap$Entry 13: 3417 273360 java.lang.reflect.Method 14: 6763

僵尸进程和孤儿进程

匿名 (未验证) 提交于 2019-12-02 23:51:01
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 等待父进程正常结束后会调用wait/waitpid去回收僵尸进程 但如果父进程是一个死循环,永远不会结束,那么该僵尸进程就会一直存在,僵尸进程过多,就是有害的 解决方法一:杀死父进程 解决方法二:对开启的子进程应该记得使用join,join会回收僵尸进程 创建完子进程后,主进程所在的这个脚本就退出了,当父进程先于子进程结束时,子进程会被init收养,成为孤儿进程,而非僵尸进程 import os import sys import time pid = os.getpid() ppid = os.getppid() print 'im father', 'pid', pid, 'ppid', ppid pid = os.fork() #执行pid=os.fork()则会生成一个子进程 #返回值pid有两种值: # 如果返回的pid值为0,表示在子进程当中 # 如果返回的pid值>0,表示在父进程当中 if pid > 0:

ps 筛选列以及筛选行

匿名 (未验证) 提交于 2019-12-02 23:49:02
Unix 操作系统上的 ps 命令用于查看系统进程相关的信息。 除了用 ps -ef | grep xxx 的方式外,利用一些 ps 内置的选项也能完成同样的功能,并且避免了无关的信息。 -o 参数用于筛选列。 ps -e -o pid,command -p 参数用于根据pid 筛选进程 ps -p 12345

jdk自带监控程序jvisualvm的使用

匿名 (未验证) 提交于 2019-12-02 23:47:01
编辑应用所在的tomcat服务器下的bin目录下的catalina.sh文件,修改如下: 配置如下内容: 红字内容需要进行添加,黄色背景的需要根据具体的主机情况配置。 进入到本地的jdk安装目录下,找到jvisualvm.exe,双击打开 建立远程连接 图一 添加远程 图二 建立远程主机ip 图三 添加jmx连接 图四 双击建立好的连接可以实时查看当前程序的运行状况和堆栈信息等 图一 概述:显示当前tomcat服务器的整体运行状况 图二:可事实动态显示cpu、堆栈、类、线程的相关信息 图三:线程:可实时动态的显示进程的使用状况 点击线程Dump按钮可以显示具体的进程的内容,可从此页面查看到进程的具体信息以及报错信息 (4)通过此工具的使用,当ITSM系统僵死时,可看到明显的进程变化 a.所有的请求进程都进入了监控状态,所有请求都无法访问 通过上述分析,查看连接池配置,对连接池的活动连接数和空闲连接数做了调账,如下图: 同时找到对应的sql语句进行优化,之前的sql存在笛卡尔积,同时数据量大,没有建立索引,通过dba的分析修改了sql语句,并对timeouttime字段建立索引,截图如下(包含原有sql【被注释了】) Jdk自带的监控小工具可用来对java程序进行调优和问题分析。 应用僵死后是否有dump或javacore文件生成?拿到后用MemoryAnalyzer 等工具分析一下

PID应用详解

匿名 (未验证) 提交于 2019-12-02 23:46:01
阅读目录 1. PID介绍及原理 2. 常用四轴的两种PID算法讲解(单环PID、串级PID) 3. 常用PID算法的C语言实现 5. 常用的四轴飞行器PID算法 PID介绍及原理 PID介绍   在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,也是最经典的算法。   现在已经演变出很多智能的算法,如蚁群,神经网络等,感兴趣可以看一下刘金琨老师的《先进pid控制》 PID算法的一般形式: 通过误差信号控制被控量,而控制器本身就是比例、积分、微分三个环节的加和。这里我们规定(在t时刻): 偏差控制被控制量 偏差的控制过程 ; 伪代码: 串级PID 上述角度单环PID控制算法仅仅考虑了飞行器的角度信息,如果想增加飞行器的稳定性(增加阻尼)并提高它的控制品质,我们可以进一步的控制它的角速度,于是角度/角速度-串级PID控制算法应运而生。在这里,相信大多数朋友已经初步了解了角度单环PID的原理,但是依旧无法理解串级PID究竟有什么不同。其实很简单:它就是两个PID控制算法,只不过把他们串起来了(更精确的说是套起来)。那这么做有什么用?答案是,它增强了系统的抗干扰性(也就是增强稳定性),因为有两个控制器控制飞行器,它会比单个控制器控制更多的变量,使得飞行器的适应能力更强。为了更为清晰的讲解串级PID,这里笔者依旧画出串级PID的原理框图,如图所示: 伪代码:

hdu2104

匿名 (未验证) 提交于 2019-12-02 23:42:01
为什么80%的码农都做不了架构师?>>> 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2104 思路分析:m和n互质即可。与hdu1222相同 http://acm.hdu.edu.cn/showproblem.php?pid=1222 转载于:https://my.oschina.net/garyun/blog/602924 文章来源: https://blog.csdn.net/weixin_34082789/article/details/91774443