利用 Groovy 生成输入数据:
def f = new File("input.txt") int pos = 0 int floor = 0 int open = 0 int direction = 1 for(i=0; i<=80; i++){ pos = i if(i>=0 && i<= 19) floor = 1 if(i>=20 && i<=39) floor = 2 if(i>=40 && i<=59) floor = 3 if(i>=60 && i<=79) floor = 4 if(i == 80) floor = 5 if(i==0 || i==20 || i==40 || i==60 ||i==80) open = 1 else open = 0 f.append(String.format("%d,%d,%d,%d",pos,floor,open,direction) + "\n") }
主程序:
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.TimerTask; public class PLC { public PLC(String filename) { this.filename = filename; } private int lineno = 0; private String filename = null; public int getLineno() { return lineno; } public void setLineno(int lineno) { this.lineno = lineno; } public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } /** * 以行为单位读取文件,常用于读面向行的格式化文件 */ public String readLine(int lineno) { File file = new File(filename); BufferedReader reader = null; String result = ""; try { reader = new BufferedReader(new FileReader(file)); String tempString = null; int line = 1; // 一次读入一行,直到读入null为文件结束 while ((tempString = reader.readLine()) != null) { if (line == lineno) { result = tempString; break; } line++; } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } return result; } boolean validate(String line) { boolean result = true; String[] tokens = line.split(","); int pos = Integer.valueOf(tokens[0]); int floor = Integer.valueOf(tokens[1]); int open = Integer.valueOf(tokens[2]); int direction = Integer.valueOf(tokens[3]); if (pos < 0 || pos > 80) result = false; if (pos >= 0 && pos <= 19 && floor != 1) result = false; if (pos >= 20 && pos <= 39 && floor != 2) result = false; if (pos >= 40 && pos <= 59 && floor != 3) result = false; if (pos >= 60 && pos <= 79 && floor != 4) result = false; if (pos == 80 && floor != 5) result = false; if ((pos == 0 || pos == 20 || pos == 40 || pos == 60 || pos == 80) && open != 1) result = false; if (pos != 0 && pos != 20 && pos != 40 && pos != 60 && pos != 80 && open != 0) result = false; if (direction != 1) result = false; return result; } public static void main(String[] args) { PLC plc = new PLC("input.txt"); java.util.Timer timer = new java.util.Timer(false); TimerTask task = new TimerTask() { public void run() { plc.setLineno(plc.getLineno() + 1); int lineno = plc.getLineno(); String line = plc.readLine(lineno); if (null == line || "".equals(line)) { System.exit(0); } boolean normal = plc.validate(line); System.out.println(line + ": " + normal); if (!normal) { System.exit(1); } } }; timer.scheduleAtFixedRate(task, 0, 1000); } }
相关推荐
针对主运煤流线协同控制系统存在维护困难的问题,开发了一种主运煤流线协同控制系统故障诊断模块,从设备级诊断、系统级诊断、远程诊断3个方面介绍了系统故障诊断原理:设备级诊断记录相关传感器、本安电源等重要事件并...
从电液控制系统基本工作原理入手,以电液控制系统各部件行使的基本职能为依据,提出故障辨识的判别准则,完成了电液控制系统故障诊断系统的方案设计,进行了支架控制器及其配套传感器和执行单元的故障分析,并提出了相应...
以火电厂输煤控制系统的故障结构为例。为了描述简单,这里作了一定的简化。 系统故障结构的层次性为故障诊断提供了一个合理的层次模型。在进行系统的PLC梯形图程序设计时,应充分考虑到故障结构的层次,合理安排逻辑...
(4)撰写毕业设计成果报告书 1.2.2设计任务的调研 可编程控制器是专为在工业环境下应用而设计的工业计算机,其出现后就受到普遍 重视,发展也十分迅速,在工业自动控制系统中占有极其重要的地位。它与现有的各种 ...
这是一篇有关数控制造业的远程诊断与控制的论文
PLC控制系统设计与故障诊断.ppt
行业文档-设计装置-汽车发动机控制系统在线检测诊断教学实训台
备煤控制系统故障诊断就是在备煤控制系统不拆卸的情况下,根据有限的信息,鉴别备煤控制系统运行的工作状态,当备煤控制系统...文章以基于CAN总线的备煤控制系统为对象,探讨了基于计算机的备煤控制系统及故障诊断的设计。
智能故障诊断与专家系统,详细介绍了故障诊断的过程及算法步骤
PLC控制系统的设计及故障诊断.pptx
第十章 计算机控制系统设计原则与步骤 第一节 计算机控制系统设计原则 第二节 计算机控制系统设计步骤 第三节 计算机控制系统的工程设计与实现 四、控制系统的调试与运行 计算机控制系统第十章-计算机控制系统...
第四章PLC控制系统的设计与故障诊断.ppt
介绍了一套煤矿主排水泵自动控制系统的设计构思。应用西门子S7-300型PLC对水泵进行自动控制,实现水位监测、自动启停水泵、故障自诊断等功能。并能与上位机通讯,实现远程控制和在线监测,提高了煤矿自动化水平和安全性...
PLC控制系统的设计及故障诊断PPT教案.pptx
PLC控制系统的设计与故障诊断PPT教案.pptx
PLC控制系统的设计与故障诊断PPT课件.pptx
第四章PLC控制系统的设计与故障诊断.pdf
LC控制系统的设计及故障诊断PPT教案学习.pptx