利用 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); } }
相关推荐
全书共分为七章,不仅详细论述了控制系统故障的模型化、统计窗测原理,还深入探讨了基于数学模型和人工智能的故障诊断、系统重构、完整性控制器设计、基于自适应控制和人工智能的容错控制器设计,以及容错控制系统的...
- **硬件与软件集成**:探讨了控制系统中硬件与软件的集成问题,包括传感器的选择、执行器的配置以及软件平台的搭建等。 - **调试与测试**:这一章节重点在于如何进行有效的系统调试与测试,确保整个控制系统的性能...
本文详细介绍了控制系统故障诊断的相关知识点,涵盖了故障诊断的基本概念、重要性、方法概述以及依赖于模型的故障诊断方法。通过对这些知识点的深入理解,可以更好地把握故障诊断技术的核心思想和应用实践,对于从事...
控制系统主要由位置传感器、伺服驱动、伺服电机、控制开关、上位机控制器、焊接机器人手臂、焊接平台、变频器、报警执行器以及焊枪等组成。文中提到了西门子S7-200 PLC控制器,它是用来提升系统工作的稳定性和可靠性...
由于提供的文件信息重复标题和描述内容,以及多次提及相同的标准分享网网址,而未提供实际的工业过程控制系统设计范例内容,无法直接生成对应的知识点。但根据标题和标签,我们可以推断以下内容: 1. 工业过程控制...
综上所述,基于PLC的玻璃直线四边磨边机控制系统设计涉及的多个知识点,包括了对控制系统总体设计的分析、硬件电路的构成、系统程序的设计流程、人机交互的方式以及伺服驱动的应用等。设计者在充分考虑玻璃磨边加工...
6. **优化与调试**:除了基本的控制设计,书中的内容可能还包括如何优化控制性能,以及如何调试和诊断控制系统的潜在问题。 通过《机器人控制系统设计与MATLAB仿真程序》,初学者不仅能学习到机器人控制的基本概念...
综上所述,三菱PLC物料运输车控制系统的设计涉及了PLC的基础知识、控制系统设计原理、运动控制策略、系统框图设计、成本控制以及系统的安全性和可靠性等多个方面。这一设计不仅能够提升物料运输的自动化程度,而且...
液位控制系统课程设计 液位控制系统课程设计是根据课程设计要求,系统至少能够实现三种控制算法,本设计采用了常规PID算法、带死区PID算法和积分分离PID算法。该系统采用双层网络结构,上层为管理监控层,系统程序...
控制系统在现代工业、航空航天、汽车制造、自动化生产、机器人技术以及日常生活中的各种设备中扮演着至关重要的角色。它们确保过程稳定、提高效率、减少浪费并增强安全性。控制系统设计的目标是通过反馈机制来调整和...
本系统设计主要介绍了基于 PLC 的四节传送带控制系统的设计和实现方法,并对 PLC 在控制系统中的应用和优点进行了详细的描述。同时,本设计还对 PLC 与单片机的区别进行了比较,帮助学生更好地理解 PLC 控制系统的...
该文档旨在帮助学习者掌握PLC控制系统的各个环节,包括设计原则、硬件配置、程序设计以及故障诊断。 首先,了解PLC控制系统设计的基本要求和步骤至关重要。设计时必须满足被控对象的需求,制定出既经济又实用的控制...
标题中的“基于CAN总线的步进电机多机控制系统的设计”揭示了本文档将深入探讨一种利用CAN(Controller Area Network)总线技术实现步进电机的多机控制系统的架构和设计方法。CAN总线是一种广泛应用在汽车、工业自动...
首先,机器人控制系统的设计是机器人技术中的核心部分,它包括了路径规划、运动控制、传感器融合以及故障诊断等多个子系统。这些子系统相互协作,确保机器人能够准确、高效地完成预定任务。设计一个机器人控制系统,...
电梯控制系统的设计需要考虑多方面的因素,包括电梯的机械结构、电气控制、安全性、可靠性等。同时,电梯控制系统也需要考虑到人机界面、舒适性、美学等问题。 在本设计中,我们使用 PLC 作为控制核心,对四层电梯...
这本书主要探讨了在网络化控制系统中如何进行有效的故障诊断以及实施容错控制,以确保系统的稳定性和可靠性。 网络化控制系统(Networked Control Systems, NCSs)是指通过通信网络连接传感器、控制器和执行器的...