`
jarpy
  • 浏览: 22188 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

得到 PID

    博客分类:
  • Java
阅读更多

 

java codes

 

public class StandAloneServer {
	static public final int PORT = 8182;

	private final AutopubStore store = new CassandraAutopubStore();

	private final Component component = new Component();

	/** launch */
	public StandAloneServer() throws Exception {
		AutopubResource.setStorage(store);
		System.out.println("Starting REST server on http://"
				+ InetAddress.getLocalHost().getHostAddress() + ":" + PORT
				+ "/");
		component.getServers().add(Protocol.HTTP, PORT);
		component.getDefaultHost().attach(new OpenAutopub());
		component.getDefaultHost().attach("/resources",new StaticResourceApplication());
		component.getClients().add(Protocol.CLAP);
		component.start();
	}

	public void stop() throws Exception {
		component.stop();
		store.close();
	}

	/** entry point */
	static public void main(String[] args) throws Exception {
		String option="start";
		if (args.length !=0){
			option=args[0];
		}
		if ("start".equals(option)) {
			new StandAloneServer();
			String pid=getCurrentPid();
			System.out.println(pid);
			savePid(pid);
		} else if("stop".equals(option)){
			String pid = getPid();
			killPid(pid);
			savePid(null);
		}
		
	}
	public static String getCurrentPid() throws IOException,InterruptedException {  
	  Vector<String> commands=new Vector<String>();  
	     commands.add("/bin/bash");  
	     commands.add("-c");  
	     commands.add("echo $PPID");  
	     ProcessBuilder pb=new ProcessBuilder(commands);  
	       
	     Process pr=pb.start();  
	     pr.waitFor();  
	     if (pr.exitValue()==0) {  
	       BufferedReader outReader=new BufferedReader(new InputStreamReader(pr.getInputStream()));  
	       return outReader.readLine().trim();  
	     } else {  
	       System.out.println("Error while getting PID");  
	       return "";  
	     }  
	}
	public static void savePid(String pid) throws IOException{
		File f = new File("pid");
		
		if(pid ==null){
			FileWriter fw=new FileWriter(f);
			fw.write("");
			fw.close();
		} else{
			if (f.exists() && f.length()>0) {
				System.out.println("there is exsiting server running");
			}
			FileWriter fw=new FileWriter(f);
			fw.write(pid);
			fw.close();
		}
	}
	
	public static String getPid() throws IOException{
		File f = new File("pid");
		if (!f.exists()) return null;
		BufferedReader br = new BufferedReader(new FileReader(f)); 
		String pid=br.readLine();
		br.close();
		return pid;
	}
	
	public static void killPid(String pid) throws IOException{
		 Vector<String> commands=new Vector<String>();  
	     commands.add("/bin/bash");  
	     commands.add("-c");  
	     commands.add("kill "+pid);  
	     ProcessBuilder pb=new ProcessBuilder(commands);  
	       
	     Process pr=pb.start();  
	}
}

 

ant build.xml

 

	<target name="startup" depends="compile" >
		<java classname="com.hp.hpl.miul.openautopub.app.StandAloneServer" fork="true">
			<arg line="start"/>
			<classpath>
				<path refid="classpath"/>
				<pathelement location="target/ant-classes"/>
				<pathelement location="src/main/resources"/>
				<!--run functional test case -->
				<pathelement location="src/test/resources"/>
			</classpath>
		</java>
	</target>
	
	<target name="shutdown" depends="compile">
		<java classname="com.hp.hpl.miul.openautopub.app.StandAloneServer">
			<arg line="stop"/>
			<classpath>
				<path refid="classpath"/>
				<pathelement location="target/ant-classes"/>
				<pathelement location="src/main/resources"/>
				<!--run functional test case -->
				<pathelement location="src/test/resources"/>
			</classpath>
		</java>
	</target>
 
分享到:
评论

相关推荐

    Codesys V2.3 PID实例st文本编程

    2. **计算PID输出**:根据当前过程值与设定值的偏差,分别计算比例、积分和微分部分,然后将三者相加得到PID输出。 3. **限幅处理**:为了避免控制输出超出设备的允许范围,需要对PID输出进行限幅处理。 4. **延时...

    S7-200自编PID程序(没有使用其自带的PID指令)

    5. **综合计算**:将比例项、积分项相加得到PID控制器的输出U(k) = U(k-1) + Kc * [E(k) - E(k-1)] + Ki * E(k)。 6. **限幅处理**:为了防止输出超出物理设备的承受范围,需要对输出值进行限幅处理,确保其处于设定...

    51单片机PID程序

    - 然后将反馈值传递给`PIDCalc()`函数,得到PID控制器的输出值。 - 输出值可以用来控制外部设备,如电机等。 ### 三、总结 通过以上分析,我们可以看出,51单片机实现的PID控制程序主要包括了PID结构体的定义、PID...

    PID控制算法程序设计

    临界比例法是通过预选择一个足够短的采样周期让系统工作,然后仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期,最后通过公式计算得到 PID 控制器的参数。...

    pid.rar_PID 算法_PID算法_PID算法 实现_pid_pid精髓

    1. 手动整定:通过经验或试错法,逐步调整PID参数以获得期望的系统性能。 2. Ziegler-Nichols法则:一种经典的经验整定方法,基于系统阶跃响应来确定初始参数。 3. PID自动整定:利用自适应算法或模糊逻辑等技术,...

    STM32 测试 - 8 - 副本_速度PID_基于STM32的PID算法_stm32pid_

    4. **PID计算**:根据误差信号计算比例、积分和微分项,并结合增益系数得到PID输出。 5. **限制与输出**:检查PID输出是否超出设备允许范围,进行上下限限制,并将结果送至执行机构(如电机驱动器)。 6. **闭环...

    Fuzzy_PID.rar_fuzzy tuning PID_pid tuning_模糊pid_模糊自适应_自适应模糊PID

    在模糊推理过程中,输入变量被模糊化并匹配到相应的模糊规则,然后通过模糊推理得到PID参数的模糊值。这些模糊值再经过解模糊化处理,转化为具体的PID参数值。自适应过程确保控制器能够根据系统的实际反馈不断优化...

    PID.rar_STM32 PID程序_pid 单片机_stm32 pid_stm32电机pid_电机PID

    4. **PID计算**:根据误差信号计算出比例、积分和微分项,然后将它们相加得到PID输出。 5. **限幅处理**:为防止PID输出过大导致电机过载,需要对PID输出进行限幅。 6. **执行控制**:将PID输出转化为电机控制信号...

    pid 整定 方法 常用口诀

    基于模型的参数整定方法是指根据被控对象的数学模型,通过计算获得 PID 控制器的参数。这种方法需要对被控对象的数学模型进行建立,并且需要对模型的参数进行估计。但是,这种方法需要对被控对象有深入的了解,并且...

    pid算法的参考论文

    PID(比例-积分-微分)控制器是一种在自动化控制...通过深入阅读这篇论文,你可以获得PID算法的深入理解,并学习如何在实际工程问题中应用和优化PID控制器。对于控制系统设计者来说,这是一份非常有价值的参考资料。

    PID.rar_PID 电机_PID电机_电机PID

    3. **PID计算**:将误差分别乘以比例、积分和微分系数,然后将结果相加得到PID输出。 4. **控制输出**:PID输出作为电机驱动器的控制信号,调整电机的工作状态。 5. **反馈循环**:持续监测电机状态,更新误差,并...

    电子设计大赛电源组PID程序

    3. **PID计算**:根据误差,分别计算P、I、D三个部分的输出,然后将它们相加得到PID控制器的总输出。 4. **PWM调制**:PID的输出通常会通过PWM(脉宽调制)信号来控制电源组的功率管,改变其导通时间,从而调节电压...

    pid自动控制原理

    - **响应曲线法**:测量系统对阶跃输入的响应曲线,通过解析得到PID参数。 - **自整定PID控制器**:采用模糊逻辑、神经网络等智能算法自动整定PID参数。 ### 应用案例 PID控制广泛应用于各种控制系统中,如温度控制...

    PID.zip_PID离散处理_pid后向差分_差分PID_差分方程PID_控制算法

    PID(比例-积分-微分)控制器是一种广泛应用的自动控制算法,它在各种控制系统中扮演着核心角色。本文将深入探讨PID控制算法的离散化处理,特别是后向差分方法,以及差分PID和差分方程PID的概念。 首先,PID控制器...

    PID.rar_PID参数电机_site:www.pudn.com_电机PID_转速pid_转速调节,PID

    描述中提到的“通过调节相应的参数值获得pid准确值”,意味着我们需要对PID参数进行整定。整定过程通常包括手动试凑、Ziegler-Nichols法则、自整定算法等方法。每种方法都有其适用场景和优缺点,比如手动试凑适合小...

    PID.rar_PID步进电机_cmsis pid_pid_步进电机PID_电机

    接着,通过调用CMSIS-PID库的函数更新PID参数并得到控制输出,这个输出会直接影响到步进电机的脉冲频率。在整个过程中,PID参数(P、I、D系数)的调整至关重要,它们直接影响着系统的稳定性和响应时间。 总结来说,...

    简单的模糊pid报告文末带simulink仿真程序

    控制器根据输入误差(e)和误差变化率(de/dt)进行模糊化,然后应用模糊规则库,得出模糊输出,最后通过反模糊化得到PID参数的实际值。 ### 4. 刘金琨的先进PID控制MATLAB仿真 刘金琨的先进PID控制MATLAB仿真提供...

    PID_电机转速PID_位置式PID_pid_

    总的来说,电机转速的PID控制是自动化领域的基础技能,位置式PID控制器以其高效和灵活性在众多控制系统中得到广泛应用。通过对“PID_电机转速PID_位置式PID_pid_”主题的学习,我们可以掌握如何设计和实现一个能精确...

    PID 的C源程序 非常简单

    5. **PID输出**:最后将比例项、积分项和微分项相加得到PID控制器的输出,即 `lun = lunp + luni + lund + lun_1` 和 `run = runp + runi + rund + run_1`。 #### 控制信号输出 - 根据PID控制器的输出,更新步进...

Global site tag (gtag.js) - Google Analytics