UBC Theses and Dissertations

UBC Theses Logo

UBC Theses and Dissertations

Expert system control of a flotation circuit Edwards, Robert Paul 1990

Your browser doesn't seem to have a PDF viewer, please download the PDF to view this item.

Item Metadata

Download

Media
831-UBC_1990_A7 E38.pdf [ 14.09MB ]
Metadata
JSON: 831-1.0081136.json
JSON-LD: 831-1.0081136-ld.json
RDF/XML (Pretty): 831-1.0081136-rdf.xml
RDF/JSON: 831-1.0081136-rdf.json
Turtle: 831-1.0081136-turtle.txt
N-Triples: 831-1.0081136-rdf-ntriples.txt
Original Record: 831-1.0081136-source.json
Full Text
831-1.0081136-fulltext.txt
Citation
831-1.0081136.ris

Full Text

THE UNIVERSITY OF BRITISH COLUMBIA EXPERT SYSTEM CONTROL OF A FLOTATION CIRCUIT by ROBERT PAUL EDWARDS B.A.Sc. honours, The University of British Columbia, 1983 A THESIS SUBMITTED IN PARTIAL FULFILMENT OF THE REQUIREMENTS FOR THE DEGREE OF MASTER OF APPLIED SCIENCE in THE FACULTY OF APPLIED SCIENCE (DEPARTMENT OF MINING AND MINERAL PROCESS ENGINEERING) We accept this thesis as conforming to the required standard THE UNIVERSITY OF BRITISH COLUMBIA SEPTEMBER 1990 copyright ROBERT PAUL EDWARDS, 1990 In presenting this thesis in partial fulfilment of the requirements for an advanced degree at the University of British Columbia, I agree that the Library shall make it freely available for reference and study. I further agree that permission for extensive copying of this thesis for scholarly purposes may be granted by the head of my department or by his or her representatives. It is understood that copying or publication of this thesis for financial gain shall not be allowed without my written permission. Department of M i n i n g and M i n e r a l P r o c e s s E n g i n e e r i n g The University of British Columbia Vancouver, Canada Date A u g u s t 2 1 , 19 90 DE-6 (2/88) ABSTRACT Expert systems technology is a discipline of artificial intelligence that has recently emerged from the research environment and is currently making significant inroads into business and industry. The proponents of expert systems make many attractive claims. Two of the claims are that expert systems can capture the knowledge of the experts and can be programmed by non-programmers. To date, most uses of this technology in the process industry are in off-line applications, that is, applications that are not directly tied to operating environments. Moreover, those that are used in on-line environments are used as advisors and only suggest changes, human operators are required to close-the-loop to the process. This technology should be applicable to operating environments and should the claims of its proponents be valid, then it should also be better than existing tools currently in use. In an operating environment it could use the knowledge of experienced operators as an intelligent controller and apply it directly to a process without the intervention of human operators. In this thesis the prospect of using an expert system as an intelligent controller is investigated. The thesis offers background to expert systems, how expert systems are related to artificial intell igence and what the generic components of an expert system are. As a test of the technology an expert system was developed as an intelligent controller in a mineral processing application. The prototype expert system was developed as a supervisory controller in the copper flotation circuit in the concentrator at Brenda Mines Ltd.. The expert system operated on-line and controlled the process in real-time. It read sensor data and using the operating experience of Brenda's flotation operators, manipulated regulatory controller setpoints as deemed necessary. The expert system was able to manipulate directly reagent flowrates and process air flowrates. Also, it suggested changes to other process variables not directly under its control. The manipulated variables were collector and frother reagent flowrates, the air flowrate to a bank of scavenger flotation cells and the air flowrate to four flotation columns. The operators were allowed to, and sometimes required to, intervene in instances of large process upsets. Results of a month long trial period in the flotation circuit indicated the success of the application. The expert system was indeed able to maintain metallurgical performance at a level approximating that of the operating experts, however, no direct comparison between the performance of the circuit under expert system control, versus performance under operator control, was possible. A rudimentary comparison was made between the circuit's performance under expert system control and its historic performance. The results were favourable. A less tangible measure, though as important, were the attitudes of the operators toward the system. Almost unanimously, the operators felt the system eased the task of circuit operation and was responsible for better circuit performance. iv T A B L E O F C O N T E N T S I. Introduction 1 II. Artificial Intelligence and Expert Systems 3 A. An Introduction to Artificial Intelligence 3 1. A Definition of Al 5 2. A Brief History of Al 7 a. Early Attempts 7 b. The Beginning of Modern Al 8 3. Current Research in Al 9 4. Al Disciplines 10 5. Symbolic Processing 13 6. Knowledge Representation and Search 14 a. Knowledge Representation 15 i. State Space 15 ii. Logic 17 iii. Semantic Networks 18 iv. Scripts 19 v. Frames 21 vi. Production Systems 22 b. Search Techniques 26 i. Backward & Forward Chaining 26 ii. Blind Search Methods 27 iii. Breadth First &Depth First Search 28 iv. Heuristic State Space & Pruning 29 B. An Introduction to Expert Systems 31 1. A Description 33 2. Comparison to Conventional Programming 35 3. The Knowledge Base 38 4. The Inference Engine 40 5. Domain Selection 42 6. Dealing With Uncertainty 43 7. Knowledge Engineering 47 a. The Knowledge Engineer 48 b. Knowledge Acquisition 48 c. Knowledge Base Development 52 8. Limitations of ES 53 9. Integrating E S For Process Control 55 C. Expert Systems Applications 57 1. The Real-Time Difference 58 2. On-Line E S For Industrial Applications 61 a. On-Line Advice, Fault Diagnosis and Alarm Filtering...63 b. On-Line Loop Tuning 68 c. Direct On-Line Control 69 3. On-Line E S For Mineral Processing 71 a. In Crushing and Grinding Control 72 b. In Flotation Control 78 III. Experimental Design and Methodology 84 A. Purpose and Objectives 84 B. Domain Selection 84 C. The Copper Flotation Circuit 86 1. The Flowsheet 86 2. Operating Scenarios 88 3. Regulatory Control 89 4. Process Disturbances 90 5. Observing Circuit Performance 91 D. Control Equipment - Hardware and Software 92 1. The Hardware 92 2. The Software 94 a. Assay Transfer Routines 95 i. Sending the Assays 95 ii. Receiving the Assays 96 iii. Coordinating the Assay Transfer 96 iv. Manipulating the Assays 97 b. O N S P E C 97 i. User Interface 100 ii. Regulatory Control 103 iii. The Expert System Shell 104 E. Knowledge Engineering 108 F. Expert System Validation 111 1. Test Duration 111 2. Performance Assessment 111 3. Direct Comparison 112 4. Dealing with Disturbances 114 IV. Knowledge Base and Experimental Results 115 A. Knowledge Base Description 115 1. Structure of the Knowledge Base 115 2. Overall Execution Control 117 a. Order of Execution 117 b. Setpoint Changes and Limits 120 3. Circuit Conditions 121 a. Acceptable Assays 121 b. Favoured Control 121 c. Circuit Loading Conditions 121 4. Xanthate Control Logic 124 5. Tail Control Logic 126 a. Scavenger Air Setpoint Control 126 b. MIBC Setpoint Control 126 6. Circuit Loading Control Logic 127 a. Column Air Setpoint Control 127 b. Column Level Control Logic 127 7. Pumpbox Watchdog Logic 128 8. Setpoint and Limit Checking 129 vi B. Operator Assessment 130 C. Detailed Control Behaviour 131 D. Averaged Control Performance 135 E. Historical Data 139 V. Discussion 143 A. Knowledge Engineering 143 1. Knowledge Solicitation 144 2. Knowledge Encoding 144 B. Experimental Difficulties 147 1. Process Problems 147 2. Software Problems 148 3. Control Problems 150 C. Quantitative Assessment of Results 152 1. Detailed Control Action 152 2. Circuit Performance 154 3. Historical Comparison 156 D. Qualitative Experimental Assessment 158 1. Operator Assessment 159 2. Additional Features 161 VI. Summary and Conclusions 162 VII. Suggestions For Future Work 165 R E F E R E N C E LIST 166 A P P E N D I C E S 173 Appendix 1 - Simplified Hardware Schematics 174 Appendix 2 - Material Balance Calculations 178 Appendix 3 - Estimation of Sample Size 186 Appendix 4 - Operating Questionnaire 188 Appendix 5 - F O R T R A N , BASIC and Batch Source Code 191 Appendix 6 - Knowledge Base Documentation 214 Appendix 7 - Preliminary Operating Guidelines 239 Appendix 8 - Summary of Shift Average Data 242 Appendix 9 - Details of Control Action 245 Appendix 10 - Extracts From 1989 Month End Reports 264 LIST OF TABLES Table I - Typically Encountered Assay Combinations Table II - Software Routines and Functions Table III - Graphic Display List Table IV - Regulatory Control Loops Table V - Operator Assessment Responses Table VI - Data Acquisition Schedule Table VII - Detailed Control Behavior, Feb 5,1990 Table Vll l - Feed Stream Comparison 1 Table IX - Performance Synopsis viii LIST OF F IGURES page Figure 1 - Elements of Al 14 Figure 2 - Structure of an Expert System 41 Figure 3 - The Fuzzy Membership Function for OLD 44 Figure 4 - Expert Systems in Control Applications 56 Figure 5 - Copper Circuit Flowsheet 87 Figure 6 - Software Organization 99 Figure 7 - Grid Structure of the Expert System Shell 105 Figure 8 - Operator Assessment Questionnaire 130 Figure 9 - Operator Assessment Commentary 131 Figure 10 - Cu Concentrate and Tails Assays, Feb. 5th 134 Figure 11 - Xanthate Trajectory, Feb. 5th 134 Figure 12a - Time Plot of Circuit Performance - Concentrate Assays 136 Figure 12b - Time Plot of Circuit Performance - Tails Assays 136 Figure 13a - Concentrate Deviations from the Lower Limit 137 Figure 13b - Tails Absolute Deviations from the Upper Limit 137 Figure 14 - Circuit Feed 138 Figure 15 - Frequency Distribution of Concentrate Copper Assays 138 Figure 16 - Frequency Distribution of Tails Copper Assays 139 Figure 17 -1988 Copper Concentrate Assay Trajectory 140 Figure 1 8 - 1988 Copper Tails Assay Trajectory 140 Figure 19 -1988 Copper Concentrate Frequency Distribution 141 Figure 20 - 1988 Copper Tails Frequency Distribution 141 A C K N O W L E D G E M E N T S The production of this document would not have been possible without the support of a number of people. I would like to thank the Brenda Business Development Group, namely Dr. B. Flintoff and Mr. R. Bradburn, for allowing me the time to devote to this study. I would like to thank Prof. A Mular for his enthusiastic support and encouragement in this endeavor. The implementation of the plant controls would also not have been possible without the efforts of a number of people. Mr. Ed Bramble and Mr. John Beaumont of Brenda's instrumentation department are thanked for their efforts in hardware installation. I would also like to thank Arnold Voth for his technical assistance with Brenda's control computer. I also especially thank Brenda's operating staff for their patience and cooperation in the testing of this control system, and for their constructive criticism in its development. My wife Lois and my girls, Chelsea and Samantha, deserve honourable mention because of their patience. I. INTRODUCTION This research project was aimed at addressing the potential of expert systems technology in the control of mineral processing plants. In particular, this thesis details the implementation of an expert system for supervisory control of a flotation circuit. The thesis is arranged into seven chapters, the first is allocated to the introduction and the last two to the summary and conclusions and direction of future work, respectively. The remaining four chapters introduce the technology and describe its application to a flotation circuit. Chapter two presents a review of general background material in the theory and implementation of expert systems. The first section of this chapter introduces the parent science of artificial intelligence; its history, its various disciplines, and its central components, knowledge representation and search. The second section introduces the discipline of expert systems; its generic components and some of its more salient features. The third section presents considerations required for implementing an expert system for real-time control along with industrial examples from both within mineral processing, and without. The third, fourth, and fifth chapters detail the development and application of a prototype expert system for control of the copper flotation circuit at Brenda Mines Ltd.. Chapter three details the selection criterion, the flowsheet of the plant, the control hardware, the control software, the knowledge engineering process, and the validation efforts. Chapter four presents both the quantitative and qualitative results of the validation trial. Chapter five presents a discussion of the experiment, detailing the knowledge base that was developed, the obstacles that had to be surmounted, and an assessment of the findings. The specific objective of the expert system experiment was the supervisory control of the flotation circuit. The controller would be designed to mimic the behaviour of the operators. Their knowledge was to be solicited and captured in the knowledge base of the expert system and applied, in real-time, for direct control of the flotation circuit. The role of the expert system was to manipulate the setpoints of regulatory control loops in an effort to maintain, or improve, the circuit's metallurgical performance. The benefits of control were not only to be measured by the metallurgical performance of the circuit, but also by its effects on circuit operation. The control routine is expected to at least match the circuit's performance while simplifying its operation by minimizing the required amount of operator vigilance and the degree of operator intervention. \ 3 II. ARTIF IC IAL INTELL IGENCE AND E X P E R T S Y S T E M S A. A N INTRODUCTION TO ARTIFICIAL INTELL IGENCE The field of artificial intelligence covers a broad spectrum of disciplines. Barr and Feigenbaum [1981] explain Al as a new science, "Scientific fields emerge as the concerns of scientists congeal around various phenomena. Sciences are not defined, they are recognized." And, so it is with A l . Scientists from a variety of disciplines, including computer scientists, cognitive researchers, and mathematicians, have come together to recognize this science of artificial intelligence. The intent of this section is to briefly present the spectrum of Al disciplines as background to the discussion of expert systems technology. Artificial intelligence has drawn considerable attention from business, industry and the general public in the past few years. It is only in this recent past that A l has emerged from the research laboratories with something that is more than an academic curiosity [Davis, 1986]. In the mid to late 1950's, the early days of A l , it was expected that this technology would lead to computers that performed intelligent tasks. Unfortunately, the expectations of the researchers and of their sponsors exceeded the computing ability of the day. "The relative youth of the computer field as a whole and the seemingly boundless potential of A l combined to create an air of heady confidence during the discipline's early years"[Harris and Davis, 1987]. Computers at that time were by no means powerful enough to handle the information manipulation required. In addition to the lack of computing power there was a general lack of understanding of the nature of human intelligence. These two points combined to lead to the demise of early Al work. The failures of the early Al research caused work in Al to be dropped by all but a few universities and industrial research laboratories. The widespread use of computers has again fuelled the interest in A l . A number of factors contribute. Radkewycz [1987] says that computers themselves are more than a thousand times more powerful than the early machines. Harris and Davis [1987] offer three suggestions. Firstly, with the "... proliferation of computers in business and homes ... they are in the hands of people who (are not) skilled in their operation." The need for user friendly interfaces and "smart" programs has never been greater. Secondly, the number of computers in use has "... helped create markets large enough to justify the substantial costs usually associated with the development of artificial intelligence products." Thirdly, the use of programmable robots in industry has spurred the desire for robotics that can act intelligently. Unlike early research, current efforts in A l are directed more towards practical uses. Though there is still activity in areas as fundamental as describing human thinking (eg. cognitive research) "... the goal of Al has become much more focussed on making computers more productive"[Davis, 1986]. Natural language processing and expert systems are two disciplines of Al that are making significant inroads into business and industry. Two reasons being offered are that they make computers easier to use and that they make computers applicable to a wider variety of problems. Through A l , computers are being transformed from data processors to information processors that have a broader field of potential applications[Mishkoff, 1985]. As in any emerging technology there are the cynics and there are the zealots. At one end of the spectrum is Martins [1987]. In his article "Smoke and Mirrors?" he focuses on the early failures and costs of Al projects. He plays down the significance of successful expert system applications and advances in natural language processing. His sentiment is clearly summarized in his statement: "Whether they ever 'work' in some sense or not, A l and expert systems projects seem to drag on for many years, cost conspicuous fortunes, and wind up embalmed as randomly designed, amateurishly coded, buggy and unmaintainable, badly documented, non-portable, resource-eating kludges. It's an unbroken tradition, stretching back to the early days of A l . " At the other end of the spectrum is Hans Moravec, an affirmed optimist, quoted by Radkewycz [1987]. Moravec believes the science fiction image of Al will be a reality within forty years. His belief is that if the power of computers grows for the next forty years at the same pace that it has grown in the past twenty years, computers will have enough power to simulate all human knowledge. One science fiction scenario he presents is the preservation of a person's mind when his physical body fails. In this scenario the persons mind, his personality and all his characteristics, not associated, with his physical body would be transferred to a computer within a robot. The person would go on living, only now contained in a machine. By today's standards this A l scenario had best be left to the science fiction writer. 1. A DEFINITION OF A l Definitions of A l are presented in many introductory texts and articles on Al and vary depending on the interests of the specific researcher. Mishkoff [1985] quotes a number of Al researchers, each of whom present definitions that are subtly different. Their definitions are presented below. Elaine Rich is quoted as stating that: 6 "Artificial intelligence is the study of how to make computers do things at which, at present, people do better." Barr and Feigenbaum are quoted as defining it as: "...the part of computer science concerned with designing intelligent computer systems, that is, systems that exhibit the characteristics we associate with intelligent human behaviour." Rajaram [1987a] defines Al as: "A discipline devoted to the study and formalization of human reasoning, particularly to finding formalisms for human problem solving and decision making capabilities." There is obviously no clear and concise definition of Al that is universally accepted. However, the thought that consistently pervades all the definitions is the concept of simulated INTELLIGENCE. Some debate exists as to the meaning of intelligence. The Concise Oxford Dictionary [1979] defines intelligent as, "Having or showing (usually a high degree of) understanding; clever, quick of mind..." Roget's Thesaurus [1977] associates intelligent behaviour with processes such as comprehens ion, reasoning, assessment and conclusions. To qualify intelligence as it refers to A l , Mishkoff [1985] quotes Douglas Hofstadter by listing his essential abilities for intelligence. For A l , intelligent behaviour is characterized by the ability to: - respond to situations very flexibly. - make sense out of ambiguous or contradictory messages. - recognize the relative importance of different elements of a situation. - find similarities between situations despite differences which may separate them. - draw distinctions between situations despite similarities which may link them. Hofstadter's claim is that these five attributes distinguish human thinking from machine behaviour. Mishkoff further states that these five attributes "...all come very easily to people. In fact, we often group these abilities under the heading of common sense." It turns out that Al researchers are having the greatest difficulty with these common sense tasks. It is far more difficult to program a machine to understand information, than it is to program it to process numbers. 2. A BRIEF HISTORY OF A l Mishkoff [1985] has an informative chapter on the history, and prehistory, of A l . It will be briefly summarized here for background. a. E A R L Y A T T E M P T S Modern A l became a legitimate scientific pursuit at the first Al conference, held at Dartmouth Col lege in New Hampshire, in 1956. Long before this conference however, man has had an interest in intelligence outside the body. The earliest record of such attempts dates back to Greek mythology, and Hephaestus, who forged a bronze man, Talos, that guarded the island of Crete. Pygmalion, also of Greek mythology, could not find a woman to his liking and so carved the perfect woman out of ivory. Aphrodite brought this ivory woman to life. Daedalus, better known for his work in human flight, created artificial people. However, the search for artificial intelligence is not restricted to Greek mythology. Dating back to medieval times a European Pope, Sylvester II, is said to have created a talking head capable of giving yes or no answers about events in the future. Arab astrologers and a Christian missionary are said to have built thinking machines. Parace lsus, a 16th century physician, claimed to have invented Homunculus, a little man. And Juda ben Loew, a rabbi, was reported to have sculpted Joseph Golum, a living man of clay. In this century, authors and film makers have combined to create their own artificial intel l igence. The author Mary Shelly wrote about the fictitious Frankenstein monster, a human like creature made up of dead human organs. Arthur Clark, in the motion picture 2001 Space Odyssey, created HAL, a computer that possessed traits often associated with modern Al applications: self learning and natural language recognition and generation. Similarly, the motion picture S T A R W A R S (copyrighted title) incorporated two intelligent robots as central characters. Many more examples of science fiction applications of artificial intelligence in robotics and computers exist. b. THE BEGINNING OF M O D E R N Al The earliest work in computing and A l was performed in 1950. A mathematician named Alan Turing wrote a milestone paper entitled "Computing Machinery and Intelligence" (1950) that basically started the research efforts in A l . Turing is also noted for developing the Turing Test as a means of determining the ability of a machine to think. Because of his pioneering efforts in Al research, Alan Turing is commonly regarded as the father of modern A l . A conference was held at the Dartmouth College, in New Hampshire, in 1956 that brought together scientists from such diverse fields as mathematics, neurology, psychology, and electrical engineering. It was at this conference that "a new branch of computer science crystallized ... combining elements of several different avenues of research into a unified field" [Mishkoff, 1985] and is recognized as the official starting point of modern artificial intelligence research. It was organized by some of the biggest names in Al research of the day: John McCarthy (Dartmouth College), Marvin Minsky (Harvard), Nathaniel Rochester (IBM), and Claude Shannon (Bell Laboratories). It drew other high profile attendees such as Alan Newell and Herbert Simon (Carnegie Institute of Technology and the Rand Corporation), Arthur Samuel and Alex Bernstein (IBM), and Oliver Selfridge (Massachusetts Institute of Technology). According to Mishkoff, the conference is not noteworthy because of what took place at the meetings, but because of the learned participants that attended. The "leadership of the American artificial intelligence community is composed largely of the conference participants, their students, and their students' students." 3. C U R R E N T R E S E A R C H IN A l In A l research both business and academia have played, and continue to play, important roles. The North American academic centers with the biggest names in Al research are Carnegie Mellon University, Massachusetts Institute of Technology, and Stanford University. To date, many other institutions have joined these pioneers in researching A l . Industrial research laboratories, such as Digital Equipment Corporation, Schlumberger, Texas Instruments, and Xerox, are also major contributors to Al research. On the international scene there are at least three other major Al research programs. The Japanese have the much touted 5th Generation Project, which some believe is the current driving force behind the American effort [Martins, 1987]. The British have the Alvey Project. The Europeans have the Esprit Project. "All are broad-based efforts looking optimistically toward the future" of computer applications [Hall, 1987]. Canada is not a major player in the Al research game. Hall claims it is due to lack of capital as compared to the U S efforts (funded by some of that country's multinational companies). Research in Canada does continue, but on a smaller scale, and is producing some interesting work on expert systems, machine vision, and speech recognition [Hall, 1987]. 4. A l D ISCIPL INES The science of Al covers many disciplines and many, varied applications. Expert systems are programs that behave like experts in their areas of specialty. Other programs communicate audibly, being able to understand and synthesize speech. Yet others use vision to intelligently guide robots. Flexible teaching packages exist that tailor the lessons to the student. Intelligent planning and decision support programs are other areas that A l programming is used. Barr and Feigenbaum [1981] classify the branches of A l into eight categories: problem solving, logical reasoning, natural language processing, intelligent programming, learning, expertise, robotics and vision, and systems and languages. The first category includes routines especial ly designed for solving problems. This is the area of Al 's first big success. The A l techniques of search and problem reduction allowed programs to exhibit intelligent behaviour in game playing and problem solving. Game playing programs are now at the point where they can learn from experience and improve their own ability. The second category is that of logical reasoning. Logical reasoning involves the manipulation of facts within a database, focusing on the relevant sections. With large databases the ability to focus greatly enhances the speed with which conclusions are reached. Natural language processing is the third category. The study of natural language processing began with some of the earliest Al research. Progress is currently to the point where programs can use the vocabulary of a four year old child to answer simple questions. Current emphasis is on what Barr calls world knowledge, or common sense, and conversational situations. Problems have arisen however in understanding some of English's grammatical nuances. To date, there has been little success in correlating actual human language processing to the research in A l . Al language processing works, though it does not mimic the actual human process. The fourth category is in intelligent programming, that is programs capable of generating other programs. Work is currently being done on fully automatic programming, semi-automatic program development systems, and on self-modifying programs. A degree of success has been achieved in self-modifying programs. Programs that are written in LISP (LISt Programming language) are able to modify their own code. Data and program statements are stored in identical data structures; program code can be changed or manipulated as easily as data [Mishkoff, 1985]. Machine learning is the fifth category in which work is being performed. Learning, however, is a very poorly understood process and there has been little achievement from Al research to date. The sixth category is machine expertise. This field involves the technology of expert systems and the technique of knowledge engineering. The initial application of expert systems was in the consultation field with reported successes in chemistry, geological analysis, computer systems configuration, structural engineering, and medical analysis. These early efforts spurred the drive toward better explanatory facilities in expert systems. Robotics and vision is the seventh category discussed. Intelligent robotics refers to robots that process visual images, recognizing objects, shadows, and differences in pictures. The visual information is used to determine the robot's next action. Conventional robotics are classified as non-intelligent, dumb applications since they simply repeatedly perform a preprogrammed sequence. The eighth category is that of computer systems and languages. This incorporates language and other systems developments used in A l applications. Languages have been developed specifically for knowledge representation (LISP and P R O L O G to name but two). As spin-off contributions, time sharing operating systems, list processing, and interactive debugging have emerged. Of the eight categories robotics and expert systems are receiving by far the most support from industry and business [Flintoff et al. 1988, and Laguitton 1987]. Within the minerals industry expert systems are being used, or tested, in flotation [Harris 1988, Hales 1989, Burrows 1989], zinc refining [Laguitton 1988, 1989], cement milling [Laguitton 1988, 1989], crushing [Fahrenkrog 1989], and grinding [Hales 1987, 1988, Herbst 1989, Spring 1989]. 5. S Y M B O L I C P R O C E S S I N G Laguitton [1987] presents a discussion on symbolic processing. He uses a circular diagram to depict the interaction between the various Al disciplines and Al 's primary components. The diagram is reproduced in figure 1. At the centre of the diagram, as at the centre of A l , is symbolic processing. All branches of A l extend from there. Symbols refers to words, word combinations, drawings, diagrams, and virtually any form of medium people use to communicate. They "...may represent objects, concepts, properties, or relationships"[Laguitton, 1987]. As an example, a ball mill is an object, size reduction is a concept, and particle size is a property. All three of which may be represented using symbols. Numbers may be symbols, or included in symbols. Laguitton points out that the computational manipulation of numbers is not, however, included under the topic of symbolic processing. The branches from symbolic processing get successively more specific. In the first ring are those processes of inferencing, pattern matching, searching, and knowledge representation. Symbol manipulation schemes are required by them all. Communication used in A l is the next more specific refinement. The natural language interface and the knowledge acquisition schemes are the bridge that connect the inner workings of A l (eg. the symbol manipulations) to the specific disciplines of A l . The upper half of the diagram illustrates the connection between vis ion, intelligent computer aided instruction, robotics and planning and scheduling, to natural language interfacing, to inferencing, pattern matching and searching, and finally to symbolic processing. The lower hemisphere illustrates the connection between speech understanding, expert systems, and computer aided software engineering, to knowledge acquisition, to knowledge representation, inferencing and search, and finally to symbolic processing. Laguitton summarizes symbolic processing "...as the representation and manipulation of knowledge and information encoded as symbols, in a way that simulates human reasoning." Figure 1 - Elements of Al 6. K N O W L E D G E R E P R E S E N T A T I O N AND S E A R C H Two major focuses of Al research have been in the fields of knowledge representation and search routines. Knowledge representation relates to various forms of knowledge storage. Search deals with its retrieval. Numerous methods for representing knowledge and searching knowledge have been found. Barr and Feigenbaum [1981], Waterman [1985], and Mishkoff [1985] each present a survey of a number of knowledge representation and search schemes. In this chapter brief descriptions of the knowledge representation schemes of state space, logic, semantic networking, scripts, frames, and production systems will be presented. Also presented are the search schemes of forward and backward chaining, breadth and depth first, and heuristic reasoning. Not all of the knowledge representation methods are suited to expert systems. Expert system applications lend themselves to knowledge representation via production systems and semantic networks most readily. The other schemes are presented for completeness. a. K N O W L E D G E REPRESENTATION The actual method by which humans store knowledge is still very poorly understood. But despite their lack of understanding A l researchers have developed a number of schemes to store knowledge, in data bases or programs, that at least appear to emulate human processes to a certain degree. i. STATE S P A C E State space representations are the earliest forms of knowledge representation used in A l . Their original application was in game playing and problem solving, to which this representation scheme was well suited. State space does not actually represent knowledge, but rather represents all possible "next moves" (all possible states) in the game to which it is being applied. Barr and Feigenbaum [1981] use the game of tic-tac-toe as an example of state space representation. At the start of the game, the first state is a clear game board. The first move in the game is an "X" or an "O" in one of nine possible positions (one of nine possible states). The board with one "X" or "O" represents the second state in the game. The second move will be an "X" , or "O" , into one of the eight remaining positions. The third move will be an "X" or an "O" in any of the remaining seven positions. All possible states resulting from the combination of all possible moves is called its state space. Using a small set of rules called legal move generators, or transition operators, all possible next moves can be computed, and analyzed, given only the current state. After each move the best next move can be computed from the remaining states. The game of tic-tac-toe also illustrates the concept of combinatorial explosion. Combinatorial explosion is the condition where the number of possible states progressively increases with each step in the game. In tic-tac-toe there are nine initial moves, eight secondary moves for each of the nine first moves, seven tertiary moves for each of the eight secondary moves, etc.. As the game progresses the total number of possible combinations increases rapidly, this is combinatorial explosion. The purpose of the game playing program is obviously to beat the opponent. Each move must be the best possible move. Without using A l techniques the most direct, albeit laborious, route is to determine all the possibilities from the current state, all the possible responses from the opposition, all the responses from the new state, all the responses from the opposition, etc., until the game is won, then select the "best" next move. The process would be repeated for each move. This type of game playing is obviously suited to simple games, such as tic-tac-toe, and not to more complicated games such as chess. Tic-tac-toe has less than four hundred thousand states. Chess has of the order of ten to the 120th. The A l solution to combinatorial explosion is intelligent game playing. For these types of game playing scenarios intelligence is limited to a reasoning process that minimizes a penalty function. The Al solution makes the program behave as if it actually knew something about the game. ii. LOGIC The representation of knowledge as logical formulations is one of the classic approaches to knowledge representation. Logic entails representing knowledge about the particular domain in terms of well defined facts. Mathematicians and philosophers have developed a formal method of representation using logical formulas. The formulas are ".. a calculus of the process of making inferences from the facts" [Barr and Feigenbaum, 1981]. In A l literature the terms predicate calculus and first order logic are often used. Predicate calculus is simply the statements enabling facts to be written expressing either true or false conditions, relationships between objects or relationships between groups of objects. A predicate is simply a statement about something, or about relationships between these things. Research has found that using only predicate calculus can be very clumsy in A l applications, hence the refinement to first-order-logic. First-order-logic allows the inclusion of functions about the facts, as well as the facts themselves. Barr and Feigenbaum [1981] state an example of a function "uncle-of". The function "uncle-of" is applied to a person named Mary. A function returns a value. In the example, "uncle-of" Mary would return "John" (ie. U N C L E -O F (Mary) is JOHN). Formal logic representations have an advantage over other representation schemes because they have a finite set of rules governing their application to facts. These rules of inference allow new facts to be drawn implicitly from the given facts. Consider the facts: ALL MINES MAKE A PROFIT and B R E N D A IS A MINE The rules of inference then draw the conclusion that B R E N D A makes a profit because it is a mine and all mines make a profit. If the two explicitly stated facts are true, then the derived fact is mathematically guaranteed to be true. This ability to guarantee relationships is a feature of logic representation that no other knowledge representation scheme has. It is also one of the reasons that A l researchers continue to use logic representation. As in the example, new facts can be generated from old facts by mechanically applying the rules of inference. Using automated theorem proving techniques, computers can be used to generate new knowledge from old. Automated theorem proving methods have been applied to small data bases with some success, but encounter combinatorial explosion problems when applied to larger data bases. Research is being done to limit the domain of the theorem proving methods by including more knowledge about applicable facts. iii. SEMANTIC N E T W O R K S Semantic networks are representations that were originally developed by psychologists to model human memory. In a semantic network information such as objects, concepts, and events are stored as nodes. The nodes are joined together by links, or arcs, that describe the interrelationships between the nodes. Semantic networks are good for graphically depicting information and are especially good for depicting complex relationships. Nodes are grouped according to their relationships with each other. Nodes that contain more general information are linked to other nodes that contain more specifics. Specifics inherit properties from the generalities. The links have specific meanings also. Two common links are the "IS-A" link and the " H A S - P A R T " link. Waterman [1985] gives simple examples using these common links: The (QUEEN MARY) is-a (OCEAN LINER) is-a (SHIP), also a (SHIP) has-part (ENGINE) has-part (BOILER). The above representation states that the Queen Mary is an Ocean Liner, which is a ship, and that part of it is an engine, that also has a part called a boiler. Other links could be IS-BIGGER-THAN (eg. a cat IS-BIGGER-THAN a mouse) or IS-OWNED-BY (eg. the car IS-OWNED-BY the neighbor). Links would be predefined within the specific system as necessary. & To date, semantic networks have found applications in natural language analysis systems and expert systems ( P R O S P E C T O R , an expert system for finding mineral deposits, uses semantic networks to represent geological knowledge). iv. S C R I P T S Scripts are knowledge representation schemes developed for use in natural language understanding systems. A script is a method to represent sequences of events that occur in common situations. They are made up of slots that contain detailed sequences about specific scenes within the event. To illustrate the use of a script in an event, Mishkoff [1985] uses an example of going to a restaurant to eat. The event is broken down into four scenes; entering the restaurant, ordering food, eating food, and leaving the restaurant. Each scene has its own script that contains the details about the scene. The specific details about a scene would include the objects expected to be encountered and the actions that make up the scene. The entering scene might be described by the main events of: going into the restaurant looking at the tables deciding where to sit going to the table sitting Each main event would contain even more detail about the action, typical objects encountered, etc.. Knowledge contained in scripts helps make sense out of conversations that contain incomplete information. Again, following Mishkoff's example, in a conversation one might say that a person went to a restaurant, ordered dinner, then left. Taking the statement literally, the deduction would be made that the person forgot to eat the food. However, if people had the conversation, the fact that the person ate the food would be taken for granted. The script representation allows the missing information to be filled in by the computer so that the sentence can be understood more clearly. v. F R A M E S Frames are one of the most recently developed knowledge representation schemes used in A l . They were developed by Marvin Minsky in 1975 and were designed to store and use both declarative knowledge and procedural knowledge. Declarative knowledge is a statement about something. Procedural knowledge is about how to do something. In the frame scheme knowledge about objects are grouped as its attributes. The attributes are classified and stored into slots. The slots of an attribute contain the value of the attribute and may also contain the procedures required to find the value. Frames are a class of semantic network and are organized by the node and link scheme. Frames also have the property of inheritance. Generalities are at the top of the network. Detailed specifics are found at the lower levels. The simplest form of a frame is one that contains only declarative knowledge about an object. A frame that represented an object would have slots containing specific facts about the object. Such slots for a chair, as an example, might include the facts that most chairs have four legs, may have two arms, will have a back and a seat, and are typically big enough for one person to sit in. Typical values that may be within the arms slot would be a 0 or a 2 (ie. the chair has no arms or two arms). In natural language understanding, should the object chair be used in the conversation, the computer would know the generalities of what a chair is (arms, legs, back, etc.) Procedural knowledge is contained in frames and is associated with individual slots. Specific procedures are executed when the information, or value, within a slot is changed. Two notable features of frames are that they have the ability to determine, by themselves, whether they are suitable for an application, and they have the ability to transfer control to another, more suitable, frame if new information suits the other frame better. To increase their flexibility, and usefulness, frames have been combined with rules. Hodouin and Flament [1989] state that "frames and inheritance strategies are not always convenient to represent all the possible forms knowledge can take." In combination, "...rules reason upon facts stored inside frames and draw conclusions to be stored in frames." Frames excel in representing knowledge about objects and their relationships, and rules excel in reasoning using facts. Used in combination ". . .a very rich environment for knowledge representation is provided to the knowledge engineer". vi. PRODUCTION S Y S T E M S Production systems were originally designed as a model of human thinking. Currently, they are by far the most popular knowledge representation scheme used in expert systems and seem to be "...appropriate for implementing empirical solutions developed from experience"[Waterman, 1985]. Whereas the knowledge representation schemes of logic and semantic networks were designed to use declarative knowledge, production systems have been designed to use procedural knowledge as well. Barr and Feigenbaum [1981] suggest three areas, or domains in Al jargon, where production systems may be appropriate. Firstly, they may be appropriate in "...domains in which the knowledge is diffuse, consisting of many facts (eg. clinical medicine), as opposed to domains in which there is concise, unified theory (physics)." Secondly, they may be appropriate in "...domains in which processes can be represented as a set of independent actions (a medical patient monitoring system), as opposed to domains with dependent subprocesses (as payroll programs)". And thirdly, production systems may be appropriate in "...domains in which knowledge can be easily separated from the manner in which it is to be used (a classificatory taxonomy, like those used in biology), as opposed to c a s e s in which representations and control merge (a recipe)". There have been a number of high profile production systems in the past. MYCIN is a production system that performs medical diagnoses. P R O S P E C T O R is a production (and frame based) system used for finding mineral deposits. D E N D R A L is a production system used in chemistry to help identify chemical components. And, X C O N (also called R1) is a production system developed to configure computer components for custom computer applications. Procedural knowledge is represented in production systems as production-rules. Production systems based on production rules are known as "production-rule-based" systems, or simply "rule-based" systems. A production rule follows the form: IF (condition clause) THEN (action clause) In their simplest form the condition clause is a fact (eg. is the rod mill feed rate greater than its high limit?) or the outcome of another rule (eg. is the rule T O N N A G E L E S S THAN LIMIT true?, where the rule T O N N A G E L E S S THAN LIMIT would be defined elsewhere in the knowledge base). These rules are also referred to as "causal" rules. By using causal rules knowledge may be stored in a simple, easy to understand form. However, poor searching performance is often attributable to causal rules that have been complicated by too much sophistication and attempts at "extended inferences". Complicated causal rules make the knowledge used in the decision less obvious and disguises the lines of reasoning employed [Kohler, et al., 1986]. The action clause is the procedural action that is to be performed on the outcome of the rule. Typically, there is an action associated with the rule if true, if false, and if unknown. As research into production systems continues, the complexity of the condition clause is increasing. The simple case of a single rule, or a single fact, is very limiting. To increase flexibility the condition clause has been expanded and may consist of complex logical statements incorporating many facts and rules that are ANDed and O R e d together. META R U L E S represent the more complex additions to the condition clause. META R U L E S are rules that call other rules (knowledge about knowledge). However, the increase in flexibility has complicated the representation by increasing the interaction among the individual rules, thereby decreasing its modularity and its understandability. Modularity, understandability, and uniformity, are among the advantages of the production system according to Barr and Feigenbaum [1981], Waterman [1985], and Mishkoff [1985]. The modularity of rules implies that they can be added, deleted, or modified independently, as there are no interaction problems to be dealt with (that is of course not taking into account complexities caused by META-R U L E S ) . Production rules are understandable. They are generally written as english language statements making them relatively easy to follow, even by one other than the programmer. The understandability of the rules allow them to be used as a self documenting explanation facility. Uniformity aids in the understandability of production systems, and also makes it easier for production systems to be examined and modified by themselves [Barr and Feigenbaum, 1981]. The production system is not the ideal repository of knowledge to the exclusion of all other types of representation. The production system does have its disadvantages. Modularity, though making systems easier to modify, is difficult to maintain and causes computational inefficiencies when the production system gets too large. Modularity and uniformity cause high overhead computing, and system inefficiencies. Martins [1987] goes as far as to claim that production systems are simply excuses for "amateur programming". The problem of inefficient computing, however, can be hidden through the use of more powerful computers. A more serious drawback inherent in production systems is that they suffer from what Barr and Feigenbaum [1981] term "opacity". It is hard to follow the flow of control in the execution of the rules. "Algorithms (in production systems) are less apparent than they would be if they were expressed in a programming language". As a consequence, algorithmic programming is much more difficult to achieve with a production system than with conventional programming languages. The use of M E T A - R U L E S makes algorithmic programming easier, but M E T A - R U L E S also tend to complicate the knowledge base. Hodouin and Flament find a drawback in the use of rule-based systems in that "...the number of rules is often very large even for simple problems; the main consequence is the impossibility... (of translating)... single pieces of knowledge in stand alone rules. This may result in a lack of coherency between rules." They add that "...depending on the inference engine available, the writing of some rules can be surprisingly difficult." 26 b. S E A R C H T E C H N I Q U E S A search is a method of information retrieval that takes the program from its initial state through to its goal state. The complete space containing all possible solutions is called the S E A R C H S P A C E . It has been the goal of much Al research to find the most efficient and fastest search technique. The focus has been on finding the fastest route through the search space and on reducing the size of the space. The result of the effort has been a number of search, and pruning, techniques (a pruning technique is one that shortens the search tree by effectively removing branches from the search path). The most efficient search technique to employ is dictated by the nature of the problem. Mishkoff [1985] and Barr and Feigenbaum [1981] present a number of the more prominent techniques. i. B A C K W A R D & F O R W A R D CHAINING Probably the most common forms of knowledge search (especially in expert systems) are forward or backward chaining. Forward and backward chaining are popular because they allow search spaces to have multiple starting and end points. Backward chaining, also called data-driven search, is considered better to use than forward chaining if there are few goal states, but many initial states. Forward chaining, or goal-driven search, is considered better if there are few initial states but many goal states. Some applications use combinations of forward and backward search. This "bidirectional" search technique is a search that starts at both ends and works into the middle. A forward chaining search starts at the initial state and, using available data to guide it, progresses to one of the possible goal states. "It allows an expert 27 system to reason from known data to a conclusion"[Baur, 1987b]. If there are too many goal states, a forward chained search may slow down because of combinatorial explosion. A backward chaining search starts at the goal state and, using available data, proceeds backwards to one of the initial states. "Backward chaining rules allow an expert system to assume a solution and reason back to the data that support (or refute) the assumption"[Baur, 1987b]. Backward chaining may, however, also slow down because of combinatorial explosion if there are too many initial states. As an example, consider a supervisory process control program that changes reagent addition rates based on the state of the process (eg. assays of important process streams). In forward chaining, the state of the process is first analyzed and reagent changes are made to improve the process accordingly. In backward chaining, the search would first assume a reagent change was necessary and then would analyze the circuit to see if the particular change is warranted. If not, it would make another assumption and see if the data supports this second assumption. Forward chaining would be more appropriate in this case as it is a more direct path to the solution. ii. BLIND S E A R C H M E T H O D S In BLIND search methods the order with which the paths are checked is not governed by knowledge about the state space. As the search proceeds all alternate paths are checked and the best route is chosen. Blind searches require tree-graph type representations of knowledge. There has to be only one start node, there has to be unique paths to all other nodes, and there has to be methods to retrace the path by which the node is attained. These criteria restrict the applicability of blind search techniques. As a further restriction, a blind search 28 requires substantial computational effort and is thereby restricted primarily to small search spaces. In situations where knowledge bases have more than one starting condition, or are relatively large, other search techniques have to be employed. The most common blind search methods are B R E A D T H FIRST and D E P T H FIRST; the difference between the two is the order in which the paths are tested. iii. BREADTH FIRST & DEPTH FIRST S E A R C H A breadth first search will guarantee that the path it finds is the shortest one between the starting state and the goal state. As a breadth first search progresses, each node at "equal arc lengths" to the current node are tested (eg. all nodes at the current level of the tree-graph are tested) before progressing down to the next level. The disadvantages to this method are that it takes too much time to test all the nodes at each level and it is prone to "combinatorial explosions". Mishkoff [1985] uses the game of tic-tac-toe as an example. From the single starting condition (blank game board) there are nine nodes to evaluate. From each of the nine nodes there are eight other nodes, etc.. If the game goes to a deadlock, with no winner, the game board will be completely full. There will be hundreds of thousands of nodes to evaluate at this last level. Chess, with i o 1 2 0 t n possible states obviously requires a large amount of computing time. The advantage of breadth first searching is that it is guaranteed to find the shortest path (though it may take a long time to find it). A depth first search is more likely to find the solution sooner than a breadth first search, especially in applications where the search space is many levels deep. A depth first search will descend, from the start node, until either a solution is found or the bottom of the tree is reached. Obviously, when a solution is found the search is over. When the bottom of the tree, or a dead end, is encountered the path will be retraced to the previous level and the search will recommence down an alternate route. In larger tree-graphs a search can go off on a tangent and go down the wrong branch. The search may then continue descending too far. Often, depth limits are put on the search to minimize the amount of time the search spends in these tangents. It is a concept similar to limiting the number of iterations of a recursive type calculation. A disadvantage to the depth first search is that the shortest path to the solution is not guaranteed, though the solution may be attained faster. iv. HEURISTIC STATE S P A C E & PRUNING A heuristic state space is one that uses HEURISTICS to focus the search on the current area of interest. Information that is of no use in the given situation is ignored; that is, it is P R U N E D from the search tree. In blind searches the generate-and-test technique is used to evaluate every node in the search space. For small search spaces a blind search is a reasonable alternative. For larger search spaces, however, the search needs to be more concentrated. Early A l programs focussed the search with heuristics that were intermixed with the data in the program. Current A l programs allow heuristics to be externally declared; the heuristics are separate from the data. Mishkoff [1985] states that "...the concept of heuristic search is one of the foundations of A l . . . " , because of its usefulness in reducing the search space to a "manageable" size. Barr and Feigenbaum [1981] restate a definition of "heuristic" offered by Minsky in 1963. "The adjective 'heuristic', as used here and widely in literature, means related to improving problem solving performance; as a noun it is also used in regard to any method or trick used to improve the efficiency of a problem-solving program...". A second definition is also offered: "A heuristic (heuristic rule, heuristic method) is a rule-of-thumb, strategy, trick, simplification, or any other kind of device which drastically limits search solutions in large problem spaces . Heuristics do not guarantee optimal solutions; in fact, they do not guarantee any solution at all; all that can be said for a heuristic is that it offers solutions which are good enough most of the time." Heuristics are used in conjunction with search techniques such as breadth first and depth first search. The heuristic may determine which of the alternate nodes are to be tested next, eliminating those that are unsuitable and thereby, effectively narrowing the width in a breadth first search. This ordered, or best-first, search technique causes the most promising node to be tested and those less promising to be ignored. Partially-developed searches are searches that use heuristics to limit the number of possible successors from the current node. Means-end-analysis use heuristics to choose a successor based on "that which is most likely to advance the search" [Mishkoff, 1985] and not necessarily the best one at the time. Heuristics may be used in other ways to prune search trees. Barr and Feigenbaum [1981] and Mishkoff [1985] present other heuristic search strategies that have seen some acceptance. HILL CLIMBING is a method that calculates the difference between the current node and the goal node (using some kind of objective function) and selects the successor nodes as those that maximize, or minimize, this function. MIN-MAX is a technique that is primarily setup for use with game playing scenarios. The search proceeds along the path that maximizes the benefit to one player while minimizing the benefit to the other. A L P H A - B E T A P R U N I N G and STATIC EVOLUTION are techniques that assigns some sort of an objective function value to each node and take the path that either maximizes, or minimizes the cumulative sum. The difference between static evolution and alpha-beta pruning is that if static evolution assigns a node a value less than some minimum the node is ignored; the remaining nodes are then searched by either a blind breadth first, or forward chaining technique. Barr and Feigenbaum [1981] and Mishkoff [1985] both make it clear that heuristic searches are not fool proof, nor do they guarantee the best solution. They are simply a more intelligent way of problem solving. B. A N INTRODUCTION TO E X P E R T S Y S T E M S Expert systems are emerging as one of the most practical applications of Al research. Baur [1987b] estimates that it was as recently as 1986 that expert systems "...made a surprising and rapid transition from the laboratory to the field." It appears, however, that expert systems are not well understood and that there is much mystique and hype surrounding the topic. The purpose of this introduction is to help unveil some of the mystique and to put expert systems into perspective. By describing what they are, what their components are, and what some of the limitations are, it is hoped that expert systems will be seen for what they really are; simply an alternative, higher level, computer programming tool. The enthusiasm towards expert systems is partly due to the concept of capturing expertise in a computer and partly due to the claims of the supposed benefits over traditional programming. Expert systems capture the knowledge of the experts and make it available to those of less experience. They can then be used as training tools, advisors, or on-line supervisors. By capturing the 32 knowledge of the experts this knowledge is then more easily disseminated throughout an organization. The knowledge is preserved and is available, even if the expert is not. Solutions to problems are available more quickly than having to wait for an expert, or an expert's solution, to arrive. The costs of having experts around is decreased, as fewer are needed when their expertise exists in a computer. And, since computers do not have "bad days", the quality of the solution is higher than that of an expert. It is the concept of having computerized experts that warrants these claims; expert systems are but the tool to this end. Program developers also supposedly benefit from using expert systems. Because they are written in natural language, they lend themselves to self documentation. The use of natural language enables program development and prototyping to be done more quickly and makes it is easier for one developer to follow the lines of reasoning of another. Certainly one of the most attractive claims is that expert systems allow non-programmers to program computers. Through the use of natural language, and the abolition of the awkward programming syntax of conventional programming languages ( P A S C A L , F O R T R A N , C , BASIC, etc.), expert system programs can be developed by virtually anyone. The hype surrounding expert systems leads people to believe that getting an expert system will solve all of their problems. The truth is that expert systems are not a panacea, they cannot solve all software related problems. In fact, Kohler et al.[1986], state that " . . . E S should be the tool of last resort. That is if (a) mathematical solution is impossible, and a clever algorithmic formulation will not work, then E S should be examined for suitability." Dr. G . Fisher, of the University of Alberta, Alberta, Canada, has been quoted as saying "An equation is worth a thousand rules". It is prudent at this point to describe an expert system, its components, and some of its limitations. The descriptions will be generic, that is, they will describe concepts germane to all expert systems, independent of the development techniques. 1. A DESCRIPT ION Expert systems have been described by many as computer programs that embody the knowledge of experts in fairly narrowly defined domains. Efstathiou's [1986] definition is typical: "Expert systems are computer programs that help novices emulate the problem solving behaviour of experts within limited domains of expertise." Expert system computer programs, however, differ from traditional computer programs because they use concepts taken from the field of A l . They contain three key ideas from A l theory: expert systems "are new ways to represent knowledge"; they implement heuristic search techniques; and "they separate knowledge from inference and control"[Harmon, et al. 1989]. Knowledge is represented in the knowledge base of an expert system. Heuristic search is implemented in its inference engine. The structure of an expert system is such that the knowledge and inference mechanisms are kept separate, "...the separation of knowledge from inference and control is probably the most important concept to come out of Al research"[Harmon, et al. 1989]. Forsyth [1984] differentiates between traditional programs and expert systems by simplistically depicting the difference between their architectures. Traditional software architecture is depicted as being comprised of data and an algorithm: DATA + ALGORITHM = P R O G R A M while an expert system is depicted as being comprised of knowledge and an inference engine: K N O W L E D G E +. INFERENCE = S Y S T E M In traditional programming the data are combined with the algorithm to form the program, while in an expert system the knowledge is combined with the inference mechanism. A key point of note is that conventional programs mix the data with the algorithm, one is inseparable from the other. Expert systems, on the other hand, keep the knowledge separate from the inferencing. Parallels may be drawn here between electronic spread sheets and word processors. In spread sheets data that are inserted by the user are kept separate from the program that manipulates it. Similarly, word processors keep the users' text separate from the processor that manipulate it. The separation of knowledge from inference is not the only distinguishing feature of expert systems. Often included in definitions of expert systems are features the system should contain. The most frequently stated features, aside from the separation of knowledge from inference, are the ability to deal with uncertainty, to explain actions or advice, to be readily modified, and to be developed incrementally. These abilities will be described in more detail in further sections dealing with the knowledge base, the inference engine, and the user interface. Prior to launching into details about expert systems, some comments about the differences from conventional programming may be enlightening. 2. C O M P A R I S O N TO CONVENT IONAL P R O G R A M M I N G Expert systems offer an alternative to computer programming applications. When deciding on how to approach a problem (ie. whether to use conventional languages or expert systems) an understanding of their differences will definitely be an asset. Flintoff et al.[1988] offer a summary of a comparison between expert systems and conventional programming languages (such as F O R T R A N , BASIC, C , P A S C A L , etc.) Expert systems: - are primarily a symbolic process (non-procedural) - they use heuristic search techniques - their control structure is usually separate from the domain knowledge - they are often easily modified, updated and expanded - they occasionally offer incorrect answers - satisfactory answers are presented but not necessarily the best, or optimal, answers While conventional programming: - is often largely a numeric process - is algorithmic (procedural) - control structure and data are integrated - typically difficult to modify - because of the numeric orientation, correct answers are required by the program - programs often seek the best answers, not only satisfactory ones The strengths of an expert system are also summarized by Flintoff et al.[1988]. The strengths include its ability to contain expertise, its use as a good training facility, its ability to give solutions and advice in a timely fashion, the ease of program modification, its explanation facility, and its use of natural language statements. The ability to capture the knowledge of experts is a claim that may be made by both expert systems and conventional programming. Both techniques can incorporate the heuristic knowledge of the operators. To say that expert systems can capture the knowledge of the experts and make it available to those less expert is true, but the point that is often overlooked is that this capability has always existed using the more conventional programming languages. Expert systems make good training tools because of the knowledge they contain and because of their typically good user interfaces. Again, because both expert systems and conventional languages can contain the same information both can be used as a training tool. Expert systems are perhaps better suited to the task of training because many of the systems have well developed programming environments. The ease of use makes the system ideal as a learning environment. The user does not necessarily have to know a lot about computers before he can use the expert system to learn about the process (for example). In the mineral 37 processing industry this is important as the expert system could be used as a training aid for new operators who are typically not computer literate. The third claim of expert systems is their ability to offer advice and solutions in a timely fashion. This capability is closely tied to the capture of knowledge. Once the knowledge is captured it can be retrieved and used more quickly than consulting an expert. The capture and use of knowledge can be implemented in both the expert systems and in conventional programming. The ability to incrementally expand the knowledge base is a feature that in conventional languages is called "modular programming". Modular programming is a technique by which the program is subdivided into clear, understandable modules. Program modification involves adding, deleting, or editing the necessary modules. Much like rule modification, modification of modules is independent of the rest of the program and focuses solely on the specific module. Incremental expansion, or modification, is a feature of expert systems and is a feature of the modular programming style in conventional languages as well. The facility of an expert system to explain its line of reasoning is typically available on off-line applications, but seldom in real-time applications. Where inferencing is not required quickly (perhaps every few minutes or so) the system may have sufficient time to provide an explanation. Though this facility is often used in the description of expert systems it is a facility that has not been implemented in real-time systems. Where expert systems differ greatly from conventional programming is in the use of more natural language structures to represent and manipulate knowledge. Conventional programs are renown for their cryptic program structures, syntax, and variable names. The more recent versions of programming languages have dealt with the variable name problem by permitting more characters to be used in the name, thus allowing more meaningful names to be assigned. The structure and syntax remain. Expert systems address the problem of legibility by allowing the use of much more natural statements in the defining of the knowledge and its manipulation. This characteristic is by far the most notable, and useful, difference from conventional programming. With the use of more and more computer controls in mineral processing applications (Flintoff et al.[1987]) people with more general backgrounds (not engineering or computer sciences) have to modify and expand programs. The use of natural language for programming will certainly help understanding and development for the less experienced. 3. T H E K N O W L E D G E B A S E The knowledge base is that part of the expert system that contains the knowledge about the area of interest (the domain). The contained knowledge is both procedural and declarative. Both types of knowledge are represented using natural language structures. It is the type of knowledge, and its representation that differentiates knowledge in a knowledge base from information stored in other kinds of programs. Conventional programs and expert systems concern themselves with different aspects of knowledge. Conventional programs primarily concern themselves with the mathematical aspects of knowledge. Expert systems concern themselves with the symbolic aspects of knowledge. The use of symbolic knowledge, and the manipulation of linguistic expressions, increases the types of problems that can be solved by computer[Harmon,et al. 1989]. Laguitton [1987] states that: "It is usually accepted that among the symbols used to represent human knowledge, ie. words, numbers, images, etc., numbers represent only 10% of the total knowledge. The remaining 90% of the knowledge is represented by other symbols, especially by natural language." Thus, to make computer applications more intelligent it is obvious that knowledge represented by natural language must be used. Expert systems provide such a vehicle. Declarative, or factual, knowledge is knowledge about objects, events, or situations. The use of factual knowledge had already been addressed through data base programs. Data base programs can store, retrieve and manipulate vast quantities of factual knowledge, but are not designed to treat any type of procedural knowledge. Early versions of frame type representation schemes could also only treat declarative knowledge. Newer versions of frames, however, are especially designed for use in expert systems and have the added capacity of storing procedural knowledge. Procedural knowledge is knowledge about the execution of tasks or knowledge about actions that should be taken when certain events occur. Through production systems, and now frames, expert systems can use procedural knowledge to evaluate the inputs and draw conclusions. The majority of commercial expert systems use production rules in their knowledge bases. The application of expert systems to mineral and chemical processing environments lends itself to the inclusion of "deep" knowledge. Deep knowledge complements the declarative and procedural knowledge already available by including knowledge about the process itself. Robert Moore [date unknown] states that "...deep knowledge (material balance models) as well as heuristics..." are "...vital in process control applications..." such as in alarm handling advisors. Thus, for processing applications, the knowledge base of an expert system should be built from natural language statements and should include declarative, procedural, and deep process knowledge. 4. T H E I N F E R E N C E ENGINE The inference engine is that part of an expert system that directs the use of the knowledge in the knowledge base. As Mishkoff [1985] points out, "...simply having access to a great deal of knowledge does not make you an expert; you also must know how and when to apply the appropriate knowledge." It is the manipulation and implementation of the knowledge base that makes a system "smart". It is the inference engine that directs the use of the captured knowledge. Many of the commercial expert systems have multiple search techniques available to the inference engine. The more sophisticated of these inference engines combine forward and backward search, with breadth first and depth first to allow a very flexible inferencing mechanism [Moore]. The majority of "moderate s ized" expert systems only allow backward or forward chaining as inferencing methods. A s applied to production systems the inference engine is responsible for selecting the appropriate rules, executing them, and determining the solution. The inference engine has to couple the production rules with some kind of data before a conclusion can be reached. The inference engine has to be able to communicate with the knowledge base and with interface modules as sources of data. Data may be in the form of answers users give to prompts. It may be linguistic or numeric data extracted from data bases. Or, as in process plant applications, the data may be that reported 41 from field sensors or other measurement devices. Inference engines must also be able to communicate the solutions to the user, data base, or field equipment. Figure 2, adapted from Flintoff, et. al.[1988] (who adapted it from another), depicts the structure of an expert system in a processing environment. The knowledge engineer and expert communicate to the knowledge base. The knowledge base is in two way communicat ion with the inference engine, which in turn is in communication with the user and the data base. The data base communicates to the input/output system and thereby, to the process. Figure 2 - Structure of an Expert System data base direct access and/or, distributed control, system I/O interface control outputs sensor readings,etc. OPERATOR I I requests advice and for advice explanations Z t t inference engine 7 process knowledge base i r models heuristics I I E N G I N E E R / E X P E R T 5. DOMAIN S E L E C T I O N The success of an expert system application lies in-part in the selection of an appropriate domain. As Kohler [1986] states, "It is inappropriate to force fit the problem to the tool." It is important to select the correct tool for the task. Using an expert system should be considered if the task domain is sufficiently narrow, if there is an identifiable benefit, if it cannot be addressed using conventional programming, and if the solution requires expertise. Gevarter [1983] argues that if the domain is too large, the knowledge base becomes too unwieldy and that the building and the maintaining of such a knowledge base becomes very difficult. Barr and Feigenbaum [1981] mention that the performance of the system may be too slow if knowledge bases get too large. In describing domain specif ic knowledge Cooper, et al.[1989] say that "often it appears deceptively simple, particularly when it is easy to state." What compounds the problem is knowledge that experts take as "common". Common knowledge has turned out to be difficult to capture [Barr and Feigenbaum, 1981] and its inclusion increases the size, and complexity, of the domain immensely. The expert system has to have some identifiable benefit. The benefit may be in automated operator training or advising, in problem solving, in supervisory control, etc.. The expert system has to be developed to solve a specific problem, otherwise it is likely that the knowledge base will lack focussed growth and become unwieldy. The knowledge required to solve the problem has to be mostly heuristic. Of rule-based expert systems, Gevarter [1983] states that they "... are particularly attractive when much of the expert knowledge in the field comes from empirical associations acquired as a result of experience". If the problem is algorithmic, or requires much numerical computation, then traditional programming should be the chosen tool. Probably the most obvious criterion for selecting an expert system is the need for expertise. If the problem does not require expertise to solve, then a computer solution is not necessary. If the problem does require expertise, the expert has to be available for interviewing for knowledge engineering. If there is an abundance of expertise there is probably little need for a computer solution, it is just as easy to get an expert to solve the problem. There has to be the need for more, accessible, expertise than is currently available. 6. DEAL ING WITH UNCERTA INTY In the more sophist icated inference eng ines, not only is there communication to sources of data, but mechanisms are built in that deal with uncertainty in the information received. Imitating the human thought process requires that imprecise linguistic expressions be dealt with. Humans use terms like "too high", "too low", "almost", etc. to describe the states of processes, objects and concepts. The problem is to quantify these imprecise measurements so that they may be used numerically. Basta [1988] states that "a true expert system is one that can deal with uncertainty or incomplete information." Three techniques have been proposed to deal with uncertainty as it pertains to expert systems; fuzzy logic, certainty factors, and Bayesian probability theory. Fuzzy logic is a technique proposed by Zadeh in the mid-1960's to deal with uncertainty in knowledge representation. It is a method that assigns a value, known as a grade of membership, to a piece of knowledge. It allows a gradual transition from the object being a full member to the object being a non-member. Zadeh [1984] points out that the grade of membership is not to be confused with a probability. "Basically, it is a measure of the compatibility of an object with the concept represented by a fuzzy set." Zadeh likens fuzziness to elasticity; a concept that has to be "stretched" a lot is typical of a low grade of membership, one that does not require much "stretching" typifies a high grade of membership. An oft cited example is the definition of "old". "Old" is subjective, and relative in the eyes of the observer. To a small child, a person who is 35 years old is "old". To a person 65 years old, 35 represents youth. In fuzzy theory, the term "old" is given a membership function that describes the rank of the application of "old". The function returns a range of membership from 0 to 1; 0 indicates no membership, 1 indicates full membership. Figure 3 depicts a typical membership function for old, middle aged, and young showing the value of membership for each of them against a person's age. Figure 3 - The Fuzzy Membership Function for OLD Young Middle Aged Old Age (yrs) 45 When an age is specified its membership to any given category name may be determined. For example, 15 years old has a membership in young of 0.9, a membership in middle aged of less than 0.1, and a membership in old of 0. Similarily, 50 years old has 0 membership in young, 0.9 in middle aged, and 0.25 in old. Through this technique then fuzzy terms like young, middle aged and old may be quantified. A second technique to quantify imprecision is through the use of certainty factors. A certainty factor is a value indicating the degree of certainly placed on the particular piece of information. The range of certainty typically varies from -1 to 1, 0 to 100, -10 to 10, etc.. The low end of the scale (-1,0,-10, etc.) represents complete certainty that the information is incorrect, the high end (1,100,10, etc.) represents complete certainty that the information is true. A certainty factor symbolizes "a net degree of truth"[Meech, 1989]. Individual certainty factors are combined mathematically when information is used together to reach a conclusion. Meech [1989] uses the example of identifying a mineral: if the specific gravity of the mineral is light, with a degree of certainty of 0.8, and if the mineral colour is black, with a degree of certainty of 0.9, then, the mineral name is GRAPHITE (CF = 0.8), with a degree of certainty of 0.8 * 0.8 = 0.64. Note that when ANDing information together the conclusion has a certainty factor equivalent to its own certainty (0.8) multiplied by the lowest of its supporting facts (0.8). Expert systems can use certainty factors to decide if a rule is truthful enough to be included in the inference. If the certainty factor for a rule is below a threshold level then the rule is determined to be untrue enough to not be included in the inferencing. Forsyth [1984] introduces a more theoretical probability approach to quantifying imprecis ion using Bayes ' Rule. Bayes ' Rule is based on probabil i t ies(P), or odds(O), and a factor cal led the likelihood ratio (LR). Probabilities and odds are related as 0 = P / (1 -P) or P = 0 / (1+0) The likelihood ratio is defined as LR(H:E) = P(E:H) /P(E:H ' ) where LR(H:E) is the likelihood of hypothesis H given the evidence E, P(E:H) is the probability of the evidence given the hypothesis H, and P(E:H') is the probability of the evidence given the falsity of the hypothesis H'. For an example, Forsyth says that the probability that a child has chicken pox, given that he has spots, is the ratio of the probability of spots from chicken pox, divided by the probability of spots not from chicken pox. The likelihood ratio is always positive. Numbers between 0 and 1 indicate the hypothesis is improbable; equal to one indicates the likelihood of the hypothesis is neutral; greater than one indicates the hypothesis is probable. Forsyth's explanation is discussed in terms of odds and its Bayesian scheme is given by 0'(H) = 0 (H ) *LR(H :E ) which reads, the resulting odds of hypothesis H (the POSTERIOR odds, O'(H)), are given by the product of the prior odds of H, given evidence E, and the likelihood ratio of H given E. Each piece of information in a knowledge base has a probability, given by its supporting evidence. The posterior probability of a conclusion drawn by the expert system being true is then given by the product of its prior probabilities and its likelihood ratio. 7. K N O W L E D G E ENG INEER ING The discipl ine of knowledge engineering combines the processes of knowledge acquisit ion and of knowledge base development. Knowledge acquisition is the process of finding sources of knowledge and the art of extracting pertinent information from them. Knowledge base development is the design, encoding, and verification of the knowledge base. In current expert systems applications all knowledge engineering is performed by an individual, or individuals, called the knowledge engineers. It is generally accepted that the process of knowledge engineering is the bottleneck in expert systems applications [Shaw 1988, Harris et al. 1989]. Firstly, the ideal person for the knowledge engineering position is not readily available, and secondly, no matter who performs the task it is always very time consuming. Kaemmerer [1987] claims that between thirty and thirty-five percent of the total labour put into an expert system project is in the knowledge acquisition stage. a. THE K N O W L E D G E ENGINEER The task of knowledge engineering has a broad scope. But, "unlike other engineering disciplines, there are no generally accepted criteria to determine exactly who is a knowledge engineer...", "...perhaps a computer scientist or programmer, who is skilled in the art of developing expert systems"[Mishkoff, 1985]. Not only does the knowledge engineer have to be skilled in developing expert systems, he has to be adept at soliciting information from the experts too. He has to have "...good communication skills, tact and diplomacy, analytical capabilities, and versatility and inventiveness"[Harris, et al. 1989]. "The knowledge acquisition process is largely an interpersonal one", and the "...effort to develop a specific expert system is as much a matter of acquiring knowledge for the knowledge base, as it is a matter of software development." [Kaemmerer, 1987] Technical and interpersonal skills make the knowledge engineer a valuable, and rare, asset. The need for a knowledge engineer is often sighted as a drawback of expert systems. Emrich [1985] quotes Wyle as complaining that a problem with expert systems is "... that if you need this knowledge engineer taking the knowledge from the experts and somehow making it acceptable to the machine, a lot can be lost in the translation." Shaw [1988] also questions the effectiveness, and the costs, associated with such an individual. An alternative is to have the experts develop the knowledge base by themselves. However, an expert is a busy person, so that having him enter his own knowledge base requires that the expert system have a very user friendly interface; quick and easy to use. b. K N O W L E D G E ACQUISITION There are a number of methods that may be used to solicit information from experts. The experts may be questioned in writing, or orally, they may be 49 observed, and they may be made to make presentations to the knowledge engineer about their expertise. Most methods have drawbacks that outweigh their advantages, the exception is the verbal interview. Observing experts as they go about their tasks is useful for familiarization, but not for detailed descriptions. By observing, a knowledge engineer can get a better idea of what is required of the expert system, but typically the expert is performing too many tasks, too quickly, for the knowledge engineer to record them all accurately. Having the experts make presentations, or written descriptions, about their expertise can be misleading. "All people, by nature, have an unwitting tendency to construct logical explanations that have little relationship to the way conclusions are actually obtained, even when we believe we are being completely truthful" [Kaemmerer, 1987]. To add to this problem, the actual act of preparing and delivering the presentation, or report, can cause knowledge loss. The expert may not be particularly good at presentations, or at organizing and presenting his thoughts on paper. Knowledge that is acquired by relying on presentations or written descriptions is probably incomplete or incorrect. The generally accepted, and well proven, technique is the oral interview. In preparation for the interview, the knowledge engineer should be familiar with the domain and with typical problems the expert system is to be designed to solve. Familiarization could be through literature, through observations, through an expert's presentation, or through preliminary discussions with the experts. The knowledge engineer has to go into the interview with a clear goal of the problems to recognize, to diagnosis, and to solve [Kaemmerer, 1987]. The goal of the interview is to extract as much knowledge about the domain from the expert as possible. To do this the knowledge engineer has to be able to recreate cues and information that the operator uses to diagnose and solve the problem; he has to be able to slow down the expert enough that every step can be adequately recorded; and he has to be able to understand and reproduce the approach used [Kaemmerer, 1987]. The best method is for the knowledge engineers to work in pairs; the two-on-one interviewing technique. The interview is conducted by one knowledge engineer, while the other records the information. In this manner, the interviewer can concentrate on guiding and extracting the knowledge without having the bother of recording it. The knowledge engineers alternate roles throughout the duration of the interview to change tact and get the information presented in a different way. To ensure that knowledge is recorded accurately the second knowledge engineer re-iterates the portion of knowledge just acquired before proceeding with the next line of reasoning. Also, a second knowledge engineer can help reconstruct and organize the acquired information, lending a different understanding to the acquired knowledge should subsequent questions arise. The interview can take two directions, goal analysis or problem discussion [Harris, et al. 1989]. Goal analysis is directed at solving a generic problem. The knowledge engineer guides the expert step-by-step through his solution, as it is presented, to find out his reasoning, the importance of the data used, etc.. Problem discussion is aimed at reviewing some case studies, to discover the actual solutions that were used. Knowledge gained from the case studies approach is then generalized for use in the knowledge base. 51 Other variants on the oral interview exist. The most basic approach is the one-on-one interview when only one knowledge engineer is available. There is also the one-on-two variant where the knowledge engineer, and one expert, interview another expert. The advantage of this method is that the second expert, knowing the domain intimately, can help present scenarios and pose problems. Kaemmerer [1987] warns, however, that this technique can lead to intense competition between the experts, and may also lead to fears that the interview is a competency test of some kind. To accelerate the knowledge acquisit ion process some knowledge acquisition aids have been developed. A knowledge acquisition aid is a computer program that helps the knowledge engineering process by somehow prompting for knowledge, and once acquired, automatically developing the knowledge base from it. Shaw [1988], Harris, et al. [1989], Sugawara [1988] and Slocombe and Moore [1986] discuss these in various levels of detail. Sugawara discusses the extraction of rules from numeric data, going into detail about the detection and exclusion of exceptions. Harris, et.al., Shaw and Slocombe d iscuss methods by which knowledge engineers and experts enter the knowledge into a knowledge engineering aid and the aid induces the rules and the organization of the knowledge base. Typically, characteristics and values are entered along with specific cases involving the problems to be solved. Slocombe claims that these aids can either be used to help the knowledge engineer, or be used to completely remove him from the loop. They do, however, have their limitations. There have to be very specific constraints, within very specific domains for them to be useful. "The fundamental problem with automated knowledge acquisition is that attempts are being made to automate a process for which very little is understood."[Harris et al., 1989] c. K N O W L E D G E B A S E D E V E L O P M E N T The concept of expert systems has been around for many years. The earlier expert systems were conventional programs written in languages such as F O R T R A N and BASIC. These early systems used the IF-THEN constructs of the conventional languages to generate production systems. More recently, expert systems have been developed using symbolic programming languages, such as LISP and P R O L O G , and through expert system "shells" or "tool kits". Developing an expert system using LISP or P R O L O G requires that a program be written in the language chosen. Development using expert system shells, however, does not require programming with a language per se, but rather the knowledge base is developed to fit into the structure of the shell. The disadvantage of the conventional programming method is that the data, the knowledge, and the structure of the program are blended. Similarly, programming in a symbolic programming language typically entwines the data, the knowledge and the structure. Symbolic programming languages, however, have an advantage over the traditional languages because they are especially designed to handle knowledge represented by symbols. More recently, symbolic languages have been used to develop more generic forms. A high profile example is the medical diagnosis program MYCIN. MYCIN was generalized and developed into a shell, EMYCIN to be used in other medical applications. The expert system shell has the advantage over any programming method in that the structure of the programming is kept completely separate from the knowledge and the data. Expert system shells are generic and need no knowledge of the final application. Many shells are commercially available. They range from the basic, inexpensive systems, capable of only a single search method, a single knowledge representation scheme, and running off-line in a non-real-time environment, to the very expensive multi-representation, multi-search, on-line, real-time development environments. The selection of the tool is dependent on the size and nature of the problem that is to be solved. For example, non-real-time systems are unsuitable for process control applications. Expert system shells are often available in development "environments". Development environments can offer the state-of-the-art in user friendly interfaces. The knowledge base can be written using multiple windowing, using a "mouse" instead of the standard keyboard, incorporating the latest in high resolution graphics and using built-in word processing. A s Davis [1986] states "...the widespread dissemination of powerful programming environments will be one of Al 's lasting legacies." In fact, 85 percent of all fielded expert systems have been developed using shells and development environments. [Baur, 1987b] Though expert systems applications can be programmed using conventional languages, it is the ease with which programs can be developed in these new environments that is one of the attractions of expert systems over the conventional techniques. 8. LIMITATIONS of ES Rule-based expert systems are not a panacea for all software solvable problems, they have their limitations. Limitations arise not only from representing knowledge as rules, but also from capturing the domain expertise and in developing a truly user friendly interface (limitations associated with representing knowledge using rules are d iscussed in the previous sect ion detail ing P R O D U C T I O N S Y S T E M knowledge representation). Some of the limitations 54 associated with the user interface and with capturing and using the expert's knowledge will be discussed here. The user interface is a key component in gaining user acceptance of an on-line expert system[Cooper, et al., 1989]. According to Rajaram [1987a], forty to fifty percent of development resources are expended on the user interface and yet "one of the principle reasons few expert systems are utilized ... is that often they are hard to use." Gevarter [1983] complains that many expert systems can only be operated by the knowledge engineer because operator questions have to be asked properly for the system to understand, and that responses have to be properly "decoded" to understand them, de Wael [1987] claims that one of the disadvantages of expert systems is that the explanation facility is limited; users often doubt "black box" answers. Under some situations, especially near the boundary of its knowledge, the response of an expert system should be doubted. The response of an expert system is only as good as the knowledge captured in its knowledge base. A criticism of expert systems is that the domains to which they may be applied are quite restricted. Compounding the problem is that they are ignorant about their boundaries of expertise and attempt solutions in areas where their knowledge is weak. Waterman [1985] also emphasizes that, even within their domains of expertise, expert systems make mistakes. "While conventional programs are designed to produce the correct answer every time, expert systems are designed to behave like experts, usually producing correct answers but sometimes producing incorrect ones." Lastly, it is often difficult to interface an expert system with conventional or application programs. At times, during development, the knowledge engineer may discover something that was originally overlooked. Cooper , et a l . , [1989] mention, as an example, the interfacing of expert systems to spreadsheet programs may "... suddenly become 55 important" and may be a draw back to using an expert system. Flintoff et al.[1988] summarize some of the weaknesses of expert systems as: - some knowledge is hard to represent in IF-THEN rules, - knowledge engineering (knowledge base construction) can be laborious, - they exhibit "fragile behaviour at the limits of the knowledge", and - there is a "lack of proven easy to implement real-time E S shells with a friendly interface and full functional capability". 9. INTEGRATING ES FOR P R O C E S S C O N T R O L In any process control application there could be as many as four levels of control; shell, regulatory, supervisory and optimizing. The shell level (also termed "jacket" software by Flintoff et al.[1988]) is software that monitors the process and manipulates the control strategy under various operating conditions to maintain stable control (for example intelligent alarm or problem handling). Regulatory control is best left to conventional controllers. Expert systems are non-procedural and generally do not allow timed actions to occur. Precise control action is difficult if the controller does not execute at predictable time intervals. Expert systems cannot, generally, guarantee such precision. Supervisory and optimizing control offer potential applications for expert systems. Supervisory control, in terms of cascade and ratio control, however, does not lend itself well to expert system control they are algorithmic and not well suited 5 6 to non-procedural programming. Supervisory and optimization routines not tied to procedural algorithms can be addressed by expert systems. Figure 4 shows how an expert system can be viewed as being at the core of a control system [adapted from C O M D A L E Technologies, 1988]. It illustrates how process input and output (I/O), programmable logic controllers (PLC's), databases, spreadsheets, software applications, and a distributed control system (DCS) can be built around an expert system, which can be built onto computer platforms (personal computers, workstations, and mainframes). Figure 4 - Expert Systems in Control Applications software applications personal computers workstations mainframes In the following sections the application of expert systems to industrial control problems will be explored in more detail. C. E X P E R T S Y S T E M APPL ICAT IONS In the past much effort has been expended capturing the knowledge of experts in static environments. More recently, effort has been directed to capturing the expert's knowledge in a dynamic real-time environment. The earlier, high profile expert systems were designed to be off-line advisors. Such well known systems as M Y C I N , P R O S P E C T O R , R1 and DRILLING A D V I S O R are off-line systems designed to run interactively with a user and not with the time dependent processes employed in the processing industries. Bowerman [1988] and Baur [1987b] present lists of available expert system shells that indicate, among other things, whether they are real-time or not; not many are. Expert systems designed for real-time have distinctly different requirements from those for off-line systems. Definitions of what constitutes a real-time system vary. One definition is that it runs fast (from a few computer cycles to a few seconds). Another definition is that it is able to keep up with incoming data.[Laffey et al.,1989] One that is perhaps more applicable is also proposed by Laffey [1988]: ".. .a system exhibits real time behaviour if it is predictably fast enough for use by the process being serviced". This statement indicates that real-time varies between applications. Systems designed to assist fighter pilots in aerial combat [Laffey, 1989] have much stricter requirements than systems designed to monitor processes with tens of minutes to react. The discussion that follows will consider real-time systems as they pertain to process plants. 1. T H E REAL-T IME D I F FERENCE Real- t ime appl icat ions, and hence the real-t ime sys tems, have characteristics that are not normally associated with off-line expert systems. Real-time systems are designed to address the needs of real-time applications that are by definition time dependent. Laffey, et al . [1988,1989] suggests some characteristics that have to be addressed by real-time systems: a. They have to be able to make many decisions in a timely fashion. During steady plant operations not many immediate, expert decisions have to be made. During process upsets however, an expert's immediate advice, and action, is essential. Compounding this requirement is that many process applications are large and complex [Moore, 1985], meaning that many decis ions may be necessary in many areas of the plant at approximately the same time. The problem is more obvious with human operators, they can suffer from "cognitive overload" which results in inconsistent or unreliable solutions; the expert system supposedly cures this human operator shortcoming [Laffey.et al.,1989]. b. Facts are sensor based and have a limited life. Because sensor data, and their derived facts, come from a dynamic environment their validity is not ensured for the duration of the inference cycle. Fisher et al.[1985] expands on this stating that not only is a measurement time varying, but it may also be noisy, non-deterministic, subject to errors, not necessarily available on demand, and may be only inferred from indirect measurement. c. Guaranteed response times. Response times of the system have to be consistent when controlling the process. It is also important that "the system be able to respond by the time the response is needed"[Laffey, 1989]. If inconsistent or late, control of the process and safety of the operations may be jeopardized[Laffey,et.al.1989; Fisher,et.al.,1985]. d. Processes generate a lot of data. The system should have the ability to store a certain amount of data in memory for fast retrieval and it should be able to archive past data for user retrieval and analysis. e. Control decisions are based on current and historic data. Real-time applications not only have to be concerned with the current value of a variable, but also it's historic time trend as well. The system has to be able to address and act on historic, current, and forecasted data [Laffey.et.al.,1989; Fisher, et.al., 1985; Ricketts, 1988]. f. Control monitoring may be necessary on a regular basis. Some control actions or process checks have to be done at specific times or at specific time intervals. Not only is this type of task mundane for a human operator but it may also not be done by the operator at the correct time if he is busy doing something else deemed more important. g. Only a small portion of the knowledge base is applied at any one time [Laffey,et.al.1989; Ricketts, 1988; Moore, 1985b]. It is more common in continuously running processes that only one or two sections of the plant are having troubles at any given time. The rest of the plant is running steadily and not requiring expert intervention. The knowledge base contains knowledge about the whole process, including those sections that are okay. The real-time system has to be able to focus on the areas requiring expert assistance while still maintaining a monitoring status for the rest of the process. 60 h. Many asynchronous, concurrent operations may occur. Timing of concurrent operations is important. It is unreasonable to suspend the real-time system while waiting for sensor data, operator input, or data log printing. i. The knowledge stored in the knowledge base should include not only heuristics about operating the process, but also "deep" knowledge about the process itself [Moore, 1985a,b; Kane, 1986]. Deep knowledge is knowledge about the process flowsheet, unit models, simulators, etc. that allows a real-time system to infer situations, or values, and check if sensor readings are valid. j . Interface to the external environment is through process actuators and not only VDU's and printers. k. The system is in continuous operation despite the state of the process. Various parts of the process may be shutdown or sensors may be reading incorrectly. A real-time system has to be able to deal with incomplete or missing data; attention has to be paid to garbage collection. The most significant difference between off-line systems and real-time systems, however, is the inference engine. "The inference engine decides how to best search and use the knowledge base (meta knowledge), and is really what separates an on-line system from an off-line one."[Kane, 1986]. The on-line inference engine must function quickly. Not only does this require powerful computational resources but it also requires that the inference engine search the data efficiently. Since the state of a process is dynamic, changing from one state to another at any given time, the search method too should be dynamic, able to change as the process requires. "At the very least, the inference engine must be capable of forward and backward chaining inference." [Moore, 1985b] By using flexible inference techniques an expert system is capable of keeping up with the data and hence being truly real-time. In summary, real-time expert systems to be used for control have some specifications that are not required by off-line systems. They have to be fast, they have to be able to read and write process data, their responses have to be timely, and they have to be able to access external routines. 2. ON-L INE ES FOR INDUSTRIAL APPL ICAT IONS Expert systems are finding their way into the process industry in a variety of forms. The most prevalent of these systems are for advice, for fault diagnosis, for alarm handling, and for process control [Kane, 1986; Goff, 1985]. For the future, "most observers look at a plant wide E S control program as the ultimate application of E S technology..." [Basta, 1988]. Mallory, of A R A M C O , however qualifies this futuristic application: the role of an expert system "...can never replace properly trained operators, but (it) can greatly enhance the ability of operators to perform their job"[Baur, 1987a]. Laffey [1988] conducted a survey of real-time expert system users. He categorizes the users as aerospace, communications, financial, medical, process control and robotics. Of interest to this study is the process control area. He cites twelve applications as follows: - The Automated Load Forecasting Assistant (ALFA). A L F A provides a New York utility company with hourly predictions of electric load as far ahead as 48 hours. - The Computerized Emergency Action Level Monitor (CEALMON) and The Reactor Emergency Level Monitor (REALM). C E A L M O N , and the newer version R E A L M , do real-time monitoring of a nuclear power plant. It informs the operators as to the change in status of levels of emergency action, with explanations. - C O O K E R is a real-time system designed for process monitoring and operator advice in the batch manufacturing industry. - The Diagnostic Expert System is used to perform an hourly diagnosis, with recommendations, of seven steam turbines at the Texas Utility Generating Company. - The Expert System for Complex Operations in Real Time (ESCORT). E S C O R T is designed as an aid to control room operators who have to deal with large quantities of data. It presents advice on plant crisis to reduce the "cognitive overload" of operators. - The Fault Analysis Consultant (Falcon). Falcon is an alarm signal analyzer designed to serve the chemical processing industry. - The Logic Machine Architecture (LMA). LMA has been used as a control system to maintain the reactor-inlet temperature constant in an experimental B R E E D E R reactor. - The Materials Composition Management (MCM) System. M C M uses both heuristic and analytic techniques to address the needs of process control in chemical manufacturing. - R E A C T O R is designed to assist operators of nuclear power plants in the diagnosis and treatment of accidents. It monitors plant variables and detects significant changes. Advice is then given to the operators. - Rotary Kiln Expert System Supervisor is designed to provide process control in the manufacture of cement. It can control the process directly or through an existing control system. - S T O C H A S M is designed for fault detection and diagnosis in a lubrication system for a gas turbine subsystem aboard a navy ship. - The Yorktown Expert System/Multiple Virtual Storage Manager (YES/MVS) is a computer operator's aid for M V S systems. a. ON-LINE ADVICE. FAULT DIAGNOSIS AND A L A R M FILTERING There have been a number of expert systems applied for on-line diagnostics, alarm filtering and process advisors. The applications cited in the following section vary in the extent to which Al techniques are used, but all rely on rule based knowledge representation at the very least. Bascur [1989] sites the application of an expert system as an operator advisor in the sulphur mining industry. The system uses qualitative modeling, concepts derived from statistical process control, and heuristics learned from years of operating experience to produce on-line classification of the sulphur wells, process advice and expert alarm handling. The wells are classified as to their condition. The condition of the well determines how it should be operated. The classification is new, good, old, weak, and in-trouble. The process advisor informs the operator of communication status, process measurement malfunctions, and process operational status. Communications are checked between the 60 to 70 well heads and the expert system. If a problem is detected the operator is informed. Detecting measurement malfunctions involves monitoring equipment and diagnosing problems. The operational status checks each well and prompts the operator for manual intervention where necessary. Some actions are on-line corrects while others are off-line. The expert alarm handler indicates to the operators where the problems are and where more information about the problem may be found. The system also suggests remedial action to accommodate the alarm. Bascur reports that the expert system has helped improve the efficiency of the operation by providing more data and advice to the operators. Guengerich sites an application of an expert system as an operator adviser in the refining industry[1987]. The expert system is connected to an existing process control system and is designed to cut utility costs and improve environmental controls. The system gives concise messages, advising him of remedial action, via the operations log and detailed explanations via an expert system bulletin board. It monitors 900 process variables continuously and informs the operator when a situation arises. The system also monitors sensors in an effort to detect a failure. It is expected that the expert system would reduce the downtime in the plant associated with failed sensors. Corsberg [1987] gives an introduction to alarm filtering. He cites poor engineering as the cause for the unnecessary complexity of many plant alarm systems. "While our capacity to gather and display process information has increased substantially, we have done little to aid operators in better understanding the overall process state." Operators have to have a good understanding of the process to be able to prioritize and sort the large number of alarms that they are often confronted with. An alarm system manager (in this instance it is the Alarm Filtering System (AFS) of the Idaho National Engineering Laboratory) has to be able to filter and rank alarms to allow operators to focus their attention on the most critical ones and ignore the superfluous ones. Three methods for relating alarms are mentioned, namely level precursors, direct precursors, and blocking conditions. The level precursor relationship exists if their are two levels of alarms on the same parameter (eg. a level setpoint with a high and high high alarm states). Alarm A (high level) always goes off before alarm B (high high level). If alarm B is triggered suppress alarm A because it obviously has to be true. The direct precursor relationship is based on the relationship between two alarms. If there is a causal (cause and effect) relationship between alarms this relationship may be used to determine the more important of the alarms and suppress the less important. If alarm C detects a condition that also causes alarm D to trigger, then focussing on alarm C will direct the operator to the cause of the problem faster than by going through alarm D and then alarm C. Blocking conditions for alarms helps reduce the nuisance alarms. Nuisance alarms are those that are expected to go off and do not relate any new information to the operator and so should not be triggered. As an example, consider shutting down a bank of flotation cells. The operator knows the bank is being shutdown so he does not need to be warned that the cell levels are low and that the flows of concentrates are also low. By suppressing these types of alarms operators do not get jaded by alarm messages and are likely to take each alarm they get more seriously. Often alarm filtering systems also contain on-line advice. Since alarm filters, such as A F S , contain knowledge about the process, such knowledge can be used by the system to advise the operators of remedial action necessary to correct the problem. Coupling alarm filtering with on-line advice gives operators a useful tool for process monitoring and understanding. Shirley [1987] and Rowan [1987] discuss the application of an on-line fault diagnostic system, F A L C O N , to an industrial process for manufacturing adipic acid. F A L C O N (an acronym for Fault Analysis Consultant) is described as a hybrid program combining both "deep" process knowledge and heuristic knowledge. It calculates mass and energy balances around the process unit and performs a data reconciliation calculation between the actual and calculated measurements. Sensors, controllers and valve outputs are checked for fault conditions. If sensor readings differ greatly from expected values then it is suggested that the sensor is in error. If the controller valve output is significantly different from one predicted from a control algorithm (as a function of input, control equation and tuning constants), then the controller is suspect. If the estimated flow from a control valve is significantly different from the actual flow then the valve is suspect. The knowledge base is 650 rules and has been found to detect 95 percent of all known faults in this process. They conclude that the expert system will generally handle all the lower level problems, allowing the operator to concentrate on problems of greater complexity. It is expected that the system will improve safety and protect equipment, and improve process availability and product quality. In the future they foresee detecting 100 percent of all possible faults, improving on the operators performance by not overlooking details and by not getting fatigued, bored or stressed. Zadeh [1984], in his discourse on fuzzy logic, cites an application of an on-line advisor in the control of a cement kiln. The operators use four measurements and four outputs to control the kiln as efficiently as they can. They monitor the oxygen percentage, the torque on the drive rotating the kiln, the free lime content of the product and the carbon monoxide in the kiln exhaust gases. To obtain satisfactory performance they adjust the kiln speed, the feed rate, the fuel rate and the flow of gas through the kiln by applying a total of forty to fifty heuristic rules. The control problem is that in any given state a number of the heuristics apply, to some extent, with some possibly giving conflicting advise. By using fuzzy sets to put a degree of truth to each rule the controller is able to come to a "consensus" on the action that should be applied. By using this on-line advisor, operators are applying more consistent operating techniques and the cement company claims it benefitted from fuel savings and more stable product quality. 68 b. ON-LINE L O O P TUNING Expert systems have been used to supplement conventional PID controllers by providing on-line tuning capabilities. Astrom, et al. [1986] proposed a system for blending heuristic techniques with numeric methods that "...leads to simplification of conventional systems and makes it possible to obtain control systems with new capabilities." Porter, et al. [1987] proposed a system the would tune a PI controller that has non-linear actuator characteristics. Astrom suggests that though the PID controller is a numeric control equation, it requires substantial heuristic knowledge to implement. The control system does not only have to execute the PID equation, it also has to consider input signal conditioning or filtering, limit checking and alarming, output limiting and rate of change limiting, anti-windup logic, and other operational concerns such as smooth switching from manual control and logic for abnormal operational conditions. Many of these considerations are readily handled using heuristics provided by a rule based expert system. Another use of an expert system, Astrom suggests, would be to coordinate the execution of control algorithms. He uses an example of an adaptive regulator that employs minimum variance control, with a backup PID controller, an estimator, a self-tuner, some learning capabilit ies, and a stability supervisor whose execution is coordinated by an expert system. He has developed a prototype controller that automatically tunes a PID controller, with gain scheduling, using the Ziegler-Nichols method for tuning [see Stephanopoulos, pp 352, for more detail]. Porter, et al. [1987], contend that despite the Ziegler-Nichols method of loop tuning "...almost all existing PI controllers are tuned manually using pattern-recognition techniques" that are based on expertise and experience of the control engineers. They propose an adaptive technique that does not require a precise mathematic model of the process, but instead relies on the recognition of a pattern in the response of the process to a given disturbance. The method they propose also contends with integral windup. The impetus for their work was the controlling of processes with non-linearities in their actuators. They employ deep knowledge, as meta rules, to differentiate between responses that superficially look similar, but that are actually different, and shallow knowledge to modify controller gains. The tuner first performs open loop steps to the process at different amplitudes to determine process and actuator characteristics. Secondly, it executes its' anti-windup agenda to setup the anti-windup protection. Thirdly, the open loop step responses are used to determine an initial set of controller parameters. The process is left to attain steady state. Once at steady state, the fourth action of the expert tuner is to perform a closed loop test to check the controller constants and adjust as necessary. The results presented from a test performed on a non-linear laboratory plant indicate a significant improvement in controller behaviour compared to a manually tuned (using the Ziegler-Nichols method) controller. c. DIRECT ON-LINE C O N T R O L The applications of expert systems mentioned thus far have been restricted to use as aids to conventional PID controllers. There have however, been reports of direct process control by supervisory control of PID setpoints and by using expert system techniques to directly adjust actuators. Applications range from a proposed system by Darius and Vion [1987], to an educational system by Sr ipada, et al.,[1987], to an industrial application sited by Tong, et al.[1980]. 70 Darius and Vion [1987] propose a system by which general rule based control knowledge can be combined with more specific process knowledge. The reason for their work is to show that processes can be controlled by rule based systems. The advantage over the conventional numeric methods is "...that simple knowledge about the dynamics of the system..." can be captured in rules that can be understood and modified by process engineers and operators alike. They find that rules have to be structured into groups so that more consistent inferencing times may be obtained, an obvious necessity for real time control. They conclude that the technique is feasible and should lead to easier implementation of "higher quality control". Sripada, et al.[1987], describe the use of rules and fuzzy logic for bang-bang control of a non-linear temperature control problem in a university research laboratory. Two experiments were performed using rules and fuzzy logic techniques; one for servo control, the other for regulatory control. The division of control into servo and regulatory portions was necessary because of speed limitations of their computer. The expert controller succeeded in performing better than a well tuned PID controller in both applications. In the servo control application the controller was able to adjust the error limit and the duration of the control actions on-line, thereby attaining a faster response with less overshoot than a fast acting PID controller. In regulatory control the expert controller exhibited good response and good behaviour, even near constraint boundaries, with a minimum of control action. PID control exhibited good response but had to sacrifice smooth controller output to get it. The high gains used by the PID controller caused excessive variation of the controller output. They conclude that the use of these A l techniques "...opens up significant new application areas in the process industry." 71 An early application of fuzzy logic for industrial control has been cited by Tong, et al. [1980]. The application of fuzzy logic (though not necessarily linked to expert systems except in cases where it is used as a method to handle uncertainty) is interesting in its own rite. Their work involved showing that fuzzy logic could be used to control an activated sludge waste water treatment plant. The process was characterized by poor instrumentation, poor fundamental understanding of the biodegradation process, but a good amount of heuristic knowledge learned from years of experience. The fuzzy logic controller was used to control the setpoints to three important control loops; the recycle ratio loop (which determines the amount of activated sludge to recycle), the dissolved oxygen loop (to control air addition to an aeration tank) and the waste sludge removal loop. The reported results of the controller are from a primitive model of the process. They conclude that it appears possible to control such a process using practical experience and fuzzy logic, but qualify their findings by down playing the accuracy and reliability of the process models they used in their simulations. 3. ON-L INE E S FOR M INERAL P R O C E S S I N G Expert systems have been used successfully in the mineral processing industry in applications ranging from off-line advisors to on-line supervisory controllers. Laguitton [1987, 1988], Harris and Woo[1988], and Hales [1987] provide good introductory material on expert systems in the mineral processing industry. Laguitton [1989] and Flintoff et al. [1988] provide brief summaries of expert system applications to date. The examples cited include off-line applications in cement clinker grinding, zinc leaching and refining, iron ore sinter plant operation, control support for a zinc plant, x-ray analyzer troubleshooting and shaking table operation. On-line examples that are cited include expert systems in grinding control (for conventional rod and ball mill circuits and for semi-autogenous circuits), in flotation control and in on-stream analyzer data validation. In the following section the application of expert system technology to crushing and grinding circuits and flotation circuits will be described in more detail. a. IN C R U S H I N G AND GRINDING CONTROL A review of the literature revealed a number of papers on expert system control of crushing and grinding circuits. Papers on crushing control include descriptions by Farhenkrog, et al. [1989] and Flintoff, et al. [1987]. Grinding control was described in papers by Herbst, et al. [1989], Hales and Wardell [1987], Hales, et al.[1988] and Spring and Edwards [1989]. Flintoff et al. [1988] reviews the state of controls in the crushing plant and grinding circuits at Brenda Mines Ltd.. The detailed description of the controls in the secondary and tertiary crushing plant, however, focuses on a special problem in feedback control and not in the expert systems aspect. What he does say is that "the process control system is rather extensive and provides for multilevel functions including alarm checks/responses (watchdog software), feed forward and feedback control and supervisory control. The latter, in the form of a rudimentary rule based Expert System, addresses both operating constraints and processing objectives." The control in the grinding circuit, like that in the crushing plant, contains a "rudimentary rule based Expert System" that addresses both operating constraints and processing objectives. The majority of the development work was done in-house starting in 1974. No mention of software or hardware is made, but based on the information provided one would assume the rudimentary rule based expert system is one programmed in a more conventional, high level, programming language, such as F O R T R A N or BASIC. Fahrenkrog describes the application of a prototype expert system to a simulated secondary and tertiary crushing plant. The control system couples qualitative knowledge and numeric controllers to provide supervision for plant startup and plant operation within crusher power constraints. It was written in P R O L O G and F O R T R A N and ran on a V A X 780. The control objective is to operate the tertiary crushers at maximum capacity by either choke feeding the units or running them near their maximum power limits. The control system reads the tertiary power draft, the holdup in the tertiary cavity, the mass flow of the feed belts, and the mass flow of the feeders. Feeder and conveyor speeds are used to control the flow of material to the crushers. The disturbances to the circuit are changes in mineral hardness and feed size distribution. Process and operating knowledge have been assigned to what is termed the knowledge base and the rule base. The knowledge base contains information characterization, static knowledge, and dynamic knowledge. The information characterizat ion performs the assignment of numeric values to linguistic expressions, a form of fuzzy sets. The static knowledge represents the "human operator model" of the process. The dynamic knowledge contains the current information about the process. The rule base contains the heuristics used by an experienced operator in the form of IF-THEN rules. The consequence of the rules (the T H E N part) can be either calls to new rules or calls for action (controller setpoint changes). The performance of the expert supervisor was tested by comparing two simulations, one with only regulatory control, the other with supervisory setpoint control. During plant startup the expert system was able to bring the circuit to maximum capacity faster than simple regulatory control. During operations, the expert system was able to attain faster response to power and tonnage changes. The expert system performed better than strictly regulatory control in their test environment. The papers by Herbst et al.[1989] and Hales et al. [1988] describe similar approaches to the control of a semi autogenous grinding circuit. Herbst presents a general discussion of the approach, while Hales describes a specific application at the Chino Mines concentrator. The approach is to use heuristic and model based knowledge in supervisory control. The control objective is to find the optimum feed rate within the filling and power constraints of the mill. The structure of the control strategy is divided into five sections; the models, an estimator, an optimizer, an expert system, and regulatory controllers. The strategy uses numerous models. The models are for outflow of rock from the mill, the outflow of water from the mill, the wear rate of the liners, the wear rate of the balls, trunnion bearing pressure and mill motor power draft. The models allow unmeasurable variables to be used to control the circuit, such as mill filling and ore grindability. A comment Herbst makes about the models is that they have to be realistic and yet have to be simple enough to execute quickly. The models have to be updated to the current state of the circuit. Updating of the models is done by the estimator using a Kalman Filter. The Kalman filter provides "...real-time estimates of model values and parameters based upon real-time measurements". The optimizer and expert system are used in combination to provide the highest possible feed rate within the circuit constraints. The optimizer uses the results from the model to calculate controller setpoints. The expert system uses heuristics and the state of the circuit to determine the constraints and limit the controller setpoints where applicable. The regulatory controllers take the setpoints set by the optimizer and expert system and actuate the field devices. The Chino expert system is built from less than thirty rules. The system runs on a microcomputer using O N S P E C ' s S U P E R I N T E N D E N T . The objective is to maximize the tonnage throughput maintaining the bearing pressure and power near their upper limits. Hales cites three scenarios: "The bearing pressure is at it's high limit. Want to decrease the bearing pressure without decreasing feedrate. The control hierarchy is 1) increase the mill speed, 2) increase S A G water, and finally 3) decrease feedrate." "The bearing pressure is at it's low limit, want to increase the bearing pressure. The control hierarchy is to 1) increase the feedrate, 2) decrease the mill speed, and finally 3) decrease the S A G mill water." "The bearing pressure is within it's limits but the power is too high, want to decrease the power without decreasing the feedrate. The control hierarchy is to 1)decrease the mill speed, 2) decrease the mill water, and finally, 3) decrease the feedrate." Herbst concludes saying, "The use of real-time expert systems and on-line models of S A G and A G mills has been shown to be a cost-effective way of increasing the production rates of these mills." Hales and Wardell describe a comparison between regulatory control and expert supervisory control of a simulated ball mill circuit. The circuit was a single 76 ball mill in closed circuit with a cyclone that was driven by grindability disturbances. The base case control is described as regulatory loops to maintain a constant particle size. Particle size is maintained by varying the sump water addition rate while the sump level is maintained by varying the solids feedrate. The expert system was designed to adjust the controller setpoints to not only maintain a particle size setpoint, but to minimize the particle size while maintaining circuit throughput above a minimum tonnage limit. The supervisory control system not only included an expert system but also included a ball mill model. The model was updated by a Kalman filter and was used to estimate the percent solids inside the mill. The feed water was manipulated to maintain a fixed percent solids setpoint within the mill. The knowledge base contained twenty-four rules, most of which were for limit checking. The heart of the system was two main rules that checked the solids feed rate and particle size setpoint against current operating conditions. The solids feed rate, and hence the feed water addition rate, and size setpoint were adjusted as necessary. The findings showed that the supervisory routine attained a finer average particle size and higher throughput rate than did the base regulatory control. The improvements, however, were not attributed to the expert system alone, in fact they state that "the improvement in the performance of the expert system over the stabilizing control loops was enhanced considerably by incorporating the Kalman Filter model system..." . Unfortunately, they do not attempt to estimate the improvement in circuit performance using only the expert system without the model. One can only assume that control using an expert system to supervise regulatory control loops would yield better performance than regulatory loops alone. Spring and Edwards [1989] used an expert system to duplicate an existing control strategy on a rod mill and ball mill circuit. The existing strategy used models of the process to control the circuit, the expert system used heuristics to replicate the resulting control action. The objective of both strategies was to maximize tonnage within the constraints of the circuit. Tonnage was increased until either the rod mill started to overload, the ball mill started to overload, or the cyclone feed density setpoint was exceeded. Water addition to the sump was kept constant, while water to the feed end of the rod mill was ratioed to the feed solids. The measured variables included the power draft of both mills, the end trunnion vibration of the rod mill, and the cyclone feed density. Bradburn, Flintoff, and Walker [1977] describe the existing strategy in detail. The expert system used only heuristics to emulate an operator's approach to operat ing the circuit. It ran on a micro computer, using O N S P E C ' s S U P E R I N T E N D E N T . The tonnage to the circuit was ramped up incrementally until either the rod mill, the ball mill, or the cyclone feed density constraint was reached. Once a constraint was reached, the tonnage would be reduced for a wait period but would be ramped up again once the period ended. A pending rod mill overload, the constraint, was detected by a sharp increase in either the vibration signal or the power draft. A pending ball mill overload was detected by a sharp decrease in the ball mill's power draft. The comparison was run over a sixty hour period, with the control strategies being alternated every five hours. The results indicated that the expert system performed the same as the preexisting control strategy but with slightly higher variation in feed rates. It was claimed that the ramping rate and wait periods of the expert system controller were critical and that given more experience they could be fine tuned to get higher throughputs with less variation. The conclusion was that the expert system performed as well as the existing control strategy. The fact that the knowledge base was developed in only two months and still performed well was thought to indicate the enormous potential of expert systems in process control. b. IN FLOTATION C O N T R O L Traditionally, the operation of flotation circuits has been thought to be more of an art than a science. However, with the advent of on-stream analyzers, reliable reagent metering devices, level controllers and air controllers flotation is now more than ever amenable to operation through supervisory control. But as Harris and Kosick [1988] point out, despite the recent advances "...deficiencies in sensor technology have contributed to making flotation one of the most difficult unit operations to control." A major obstacle still stands in the way of implementing traditional supervisory control schemes: there are very few models of flotation circuits, and none that are generic enough to be used on most circuits. Without models supervisory control is limited to cascade, or ratio control only. Despite the absence of valid models many plants are operated quite well by human operators. Expert systems have paved the way for the knowledge that the operators use to be captured on computer and used to control flotation circuits. Work in the field of flotation control using expert systems has been reported by Hales [1989], Burrows, et al. [1989], Harris and Kosick [1988], and the US Bureau of Mines [1989]. The U S Bureau of Mines is researching many aspects of expert systems including production systems, fuzzy logic, and self learning systems. They report an expert adviser for phosphate flotation that is being used as an adviser for inexperienced operators. The system runs on a micro computer and bases its advice on real-time sensor data. Circuit feedrates, reagent addition rates, and pH's are read from the plant. There are also facilities for the operators to enter their own information. Based on the plant data, and additional data supplied by the operator the adviser suggests some solutions to operating problems. The adviser can be used to operate the circuit without operator intervention but this facility is not being used. No explanation for this is given. Harris and Kosick [1988] report on their work in the application of expert system control of the flotation circuits at the Polaris Mine. Their's was an ambitious goal: to provide expert system support in the lead and zinc flotation circuits. Their objective was to standardize operating procedures, stabilize circuit operation and provide on-line operator support and training. Their system is microcomputer-based and interfaces to an on-stream analyzer, and to the process. The software that was used was Comdale/C, which provided operator and process interfacing as well as a knowledge base development and implementation environment. The inference engine allows both forward and backward chaining and depth first and breadth first searching. It is also capable of fuzzy reasoning, dealing with certainty factors and explaining its line of reasoning. The knowledge base contained 400 rules and executed in two minutes to five minutes. Despite the apparently long execution times this system may still be considered real-time as the assays were only available every six minutes, thus conclusions could be drawn before the data was updated. The report is only interim and does not provide any evidence of the success or failure to reach the projects goals. The state of the system was that all rules had been validated with the experts, the system had been debugged, and the magnitude of the direct control actions was being established. The system had been run on-line, but no direct control actions had been taken. The next step in the project is to run the system on-line, with direct control actions being taken. Kidd Creek Mines and C A N M E T were involved in developing an expert system to "...improve the reliability of assay information in a flotation plant." [Burrows, et al., 1989] The objective of the expert system was to detect and replace inaccurate data reported by the plant's on-stream analyzer. Kidd Creek's existing control system took the assays from the on-stream analyzer (OSA) and balanced them, on-line, making them self consistent using C A N M E T ' s M A T B A L program. The balanced assays and flowrates were then used as the basis for recovery calculations, economic indicator calculations and setpoint determinations for what they called their automatic control strategy. The expert system shell that was used was N E X P E R T . It was developed on a Macintosh II computer but transferred to a D E C MicroVax for real-time implementation. The knowledge base is structured into four sections each performing specific tasks. The sections are the main, the verification, the substitution, and the diagnosis. The main section is used to coordinate the execution of the other three sections. It focuses the inference engine to areas requiring attention. Knowledge contained in the main is represented by fourteen rules. The verification section checks the validity of the results from the O S A , including assays and pulp densities. This section forms the bulk of the knowledge base, being comprised of 128 rules. The substitution section invokes an external routine that determines a replacement piece of data and verifies that it is now valid. It contains twenty-one rules. The diagnostic section checks the sampling and flotation processes for problems and issues messages where applicable. It contains thirty five rules. 81 The data verification process looks at the results from the O S A one stream at a time. If the density, or any of the assays, for that stream are considered to be invalid all assays for the stream are then also considered invalid and the substitution section is activated. Data point validity is based on a comparison of the data to upper and lower limits, to the previous value (to detect abnormal fluctuations), and to trends with elements in the stream and trends between the streams. When verifications and substitution are complete the data are transferred to Kidd Creek's control computer to calculate new setpoints. In the initial version of the expert system, the knowledge base was subdivided into four separate knowledge bases. One of N E X P E R T ' s features was the ability of a knowledge base to call another knowledge base, and in so doing keep all relevant knowledge grouped together and separate from the rest. They report that this was not feasible for real-time applications because loading the knowledge base took two minutes by itself. Total execution time was in the order of three and one half minutes (including knowledge base loading). By combining all four knowledge bases into one, execution time was reduced to twenty-five seconds. Though speed was gained the new knowledge base was unwieldy and overly complex. "Additions to the system often led to unforeseen inferencing patterns due to the complexity of the knowledge base." The effort at Kidd Creek was reported to be past the knowledge base development stage and into the on-line testing stage. A case study of an expert system used to directly control a flotation process is reported by Hales [1989]. He reports success in applying an expert system as a supervisor in both a rougher section and a cleaner section of a flotation plant. Knowledge engineering for these studies involved not only questioning the experts but performing a factorial designed experiment to determine first hand the cause and effect relationships of the flotation circuits. The strategy is designed to maximize the recovery, while maintaining the grade above a minimum value. Rules to resolve conflicting conditions had to be added to determine whether grade control or recovery control took precedence. The knowledge base for the rougher circuit experiment and the cleaner circuit experiment were the same. The expert system manipulated controller setpoints for collector, frother and rougher pulp level. It checked to see if the recovery was increasing or decreasing. If increasing, the expert system would conserve reagents by incrementally cutting back on collector, until a minimum was reached; then frother, until a minimum was reached; then pulp level, until a minimum was reached. If all setpoints were at the minimum, no action would be taken. If the recovery was determined to be decreasing, the expert system incrementally increased collector, until a maximum was reached, then frother, until a maximum was reached, and then pulp level, until a maximum was reached. If all were at their maximums, no action was taken. In side by side comparisons between the expert system and manually controlled circuits the expert system attained recoveries higher than for manual control. In the rougher circuit the average recovery was 1.4% (83.3% compared to 81.9%) better than manual control, with a grade that was 6.0% (23.7% compared to 15.7%) better than with manual control. In the cleaner circuit the average recovery was only 0.3% better than manual control and no comment was made regarding the grade. Hales concludes that expert systems are an effective way of improving metallurgical performance of flotation circuits. In summary expert systems have been used in control of mineral processing plants for crushing, grinding and flotation. Work in crushing and grinding was reported by Farhenkrog, et al. [1988] and Flintoff, et al. [1987]. Work in grinding has been reported by Herbst, et al. [1989], Hales and Wardell [1987], Hales, et al . [1988], and Spring and Edwards [1988]. Flotation control through expert systems has been reported by Hales [1987], Burrows, et al. [1989], Harris and Kosick [1988], and the U S Bureau of Mines [1989]. 111. E X P E R I M E N T A L DES IGN and M E T H O D O L O G Y A. P U R P O S E and O B J E C T I V E S The purpose of this study was to assess the merits of real-time expert system control by developing a supervisory control system for an industrial flotation circuit. The objective of the expert system was to provide on-line, real-time, supervisory control of the copper circuit. The expert system was to operate the circuit at the level of the best flotation operator by using operator knowledge to manipulate the setpoints of the regulatory controllers. The site for the experimental work was chosen to be the copper flotation circuit in the Brenda Mines Ltd. concentrator. Operating objectives of the copper flotation circuit were to maximize the copper grade in the concentrate stream while simultaneously maintaining acceptable copper losses in the tailings stream. The supervisory control routine was expected to simplify circuit operation and maintain consistent circuit performance. B. DOMAIN S ELECT ION The copper flotation circuit at Brenda Mines was chosen for the application of the expert system because it satisfied the suggested criteria for a suitable domain. The knowledge required for supervisory control appeared to be sufficiently narrow. Supervisory control of the circuit had an identifiable benefit. Moreover, the operation of the circuit required expertise. The knowledge required to operate the flotation circuit was considered to be of a manageable size. There are however, no clear guidelines to dictate whether a domain will produce a manageable knowledge base or not. Manageability is a function of the experience of the knowledge engineer(s) and the capability of the selected expert system shell. The somewhat limited experience of the author, and his colleagues, indicated that supervisory control of the circuit constituted a domain of manageable proportions. The second criterion required by a suitable domain is that experts must exist. The flotation operators at Brenda are the most experienced operators in the mill and are experts at running the copper flotation circuit. Through years of hands-on experience they have developed many heuristics, what does, and what does not work. This expertise is available to the knowledge engineer through formal, and informal interviews throughout their working day. The benefit to be gained from supervisory control of the copper circuit potentially included both better circuit performance and easier circuit operation. Better circuit operation was expected because the expert system would be ever vigilant, never tiring, and never be distracted by other operating problems. Easier circuit operation was expected because the expert system would monitor the state of the process and make the necessary adjustments without operator intervention. The operator would be freed from this task enabling him to concentrate on other duties. Based on the above criteria, the copper circuit in the Brenda concentrator was considered a suitable domain for the expert system application. Firstly, the domain was considered to be of a manageable size. Secondly, experts existed that applied heuristic knowledge to operate the circuit. And thirdly, better and easier circuit operation were the expected benefits of expert system control. C. T H E C O P P E R FLOTAT ION CIRCUIT 1. T H E F L O W S H E E T The copper flotation circuit is physically divided into two sections; the regrind section and the cleaning section. The regrind section consists of a flotation column and a regrind mill in closed circuit with classifying cyclones. The cleaner section consists of a conditioning tank, three flotation columns, a second and third cleaning stage, and a scavenger flotation stage. Figure 5 schematically illustrates the flotation circuit. Feed to the copper circuit is the tail stream from a copper/molybdenum separation process, via the underflow from a dewatering thickener. The tailings stream from the copper flotation circuit reports to final tailings, while the concentrate stream reports to final concentrate dewatering and storage circuits. Circuit feed reports directly to the flotation column, ahead of the regrind mill (the column is called either the #4 Copper Column or the Regrind Column). Column concentrate reports to final copper concentrate while the column tail combines with the underflow from the regrind cyclones. Overflow from the cyclones is pumped to the conditioning tank ahead of the copper cleaner section. Collector (potassium amyl xanthate, PAX) and frother (MIBC) are added to the conditioning tank. Conditioned pulp is pumped to the first cleaning stage of flotation (#1 Cleaning Column). The tail stream from the #1 column feeds the second column (#2 Cleaning Column). The tail stream from the second column feeds the third column (#3 Cleaning Column). The tail stream from the third column feeds the scavenger flotation bank. Concentrate from the three cleaning columns reports to final copper concentrate. Concentrate from the scavenger feeds the second c leaner of the Second and Third Cleaner bank. Second cleaner concentrate advances to the third cleaner, while second cleaner tails feeds the 87 scavenger section of the Scavenger bank. Concentrate from the third cleaner of the second and third cleaning bank can be split with portions of it being recirculating back to the head end of the scavenger bank and the rest reporting to final copper concentrate. Tails from the scavenger bank is final copper tails and is discharged to the tailings pond. Figure 5 - Copper Circuit Flowsheet 2. O P E R A T I N G S C E N A R I O S The majority of operating decisions made by the operators are based on the copper assays in the concentrate and the tailings streams. Other decisions are based around circuit constraints, such as overflowing pumpboxes. The assays in each stream are considered to be either HIGH, or LOW, or O K A Y . The complete state space of the circuit conditions (given the assays) consists of all combinations of HIGH, O K A Y , and LOW copper assays, for the tail and concentrate streams. As a fine tuning adjustment the operators also consider the iron assay of the concentrate stream. A summary of conditions that are encountered is given by table I. The table also indicates whether action is, or is not, required. Table I - Typically Encountered Assay Combinations C O N C E N T R A T E Cu TAILS C u ACTION REQUIRED high low no okay low no low low yes high okay no okay okay no low okay yes high high yes okay high yes low high yes 89 3. R E G U L A T O R Y C O N T R O L Regulatory control of the copper circuit is through a standard PI algorithm. Regulatory control is applied to level control of the flotation columns, to process air control in the flotation columns, to process air control in the scavenger flotation bank, to flow control of the xanthate, and to flow control of the MIBC. In addition to the regulatory control loops there are a number of manipulate variables not on computer control, but none-the-less available to the operator. Variables frequently manipulated are under regulatory control. Those not frequently adjusted include the column wash water (used to clean the froth) and the amount of "pan" on the third cleaner (the "pan" is used to recirculate concentrate from the third cleaner back into the circuit). There is no control or measurement of the water flow rates or the amount of "pan" used. They are completely under manual control. A third level of variable is available to the operators. These variables are used infrequently and were held constant for the duration of the on-line testing of the expert system. These variables included the distribution of the xanthate and MIBC between the scavenger and the conditioner (only a small portion of either of the reagent streams was being added to the head of the scavenger section of the scavenger, with the majority going into the conditioner), the amount of xanthate and MIBC added to the regrind column feed (none was added), and the height of the weir, and hence the level, of the scavenger bank. 90 4. P R O C E S S D I S T U R B A N C E S The copper flotation circuit is the last circuit in the copper processing flowsheet. Consequently, it is as susceptible to disturbances from upstream units as it is from within itself. Sources of the largest disturbances are fluctuations in ore characteristics from the mining operation, large tonnage fluctuations from the grinding circuit, and copper liberation problems from the copper regrind mill. The disturbances from the copper flotation circuit itself include mechanical problems and sporadic use of cleanup water (entering the circuit v ia the sumps). All disturbances introduced to the circuit upset performance one way or another. Changes in the ore type from the mining operation cause disturbances because of the secondary mineralization associated with the copper bearing mineral, chalcopyrite. Brenda ore typically contains minor amounts of galena , and pyrite. When ore is encountered that is higher in lead, and pyrite, than usual both the copper assays of the concentrate and tailings streams (of the cleaner circuit) are adversely affected. Typically the tailings assay becomes higher in copper and the concentrate lower. Large changes in the tonnage feeding the grinding circuit also affects the copper circuit. There is a long time lag between the grinding circuit and the copper flotation circuit, but eventually changes made in the grinding circuit affect the solids flow rates in the copper cleaner circuit. Reductions in the grinding circuit feed rates inevitably lead to reductions in the amount of copper in the flotation circuit and thereby, to reductions in the amounts of reagents required. Decreases in the recirculating loads can cause feed pumps to surge. This causes disruptions in the flows to the c leaner columns, which leads to production of poor quality concentrates. Problems in the regrind mill affect the liberation of the locked chalcopyrite particles and are often not readily recognized. The power draw of the motor on the copper regrind mill is used as an indication of the grind. If the power draw is maintained at a specified level the mill is assumed to be grinding adequately. Monitoring the power draw is often sufficient, but is occasionally misleading. Only laboratory test work could determine whether or not the target grind was actually being attained (size analysis of samples taken from the circuit). Increases in the proportion of unliberated particles has negative effects on the concentrate and tailings assays. In the copper flotation circuit itself mechanical wear in the flotation columns and sporadic use of large amounts of cleanup water in the sumps have negative effects on the quality of the concentrate and tailings products. Both disturbances can cause fluctuations in column levels, which in turn can lead to poorer quality concentrates. Too much water can cause the columns to surge while also reducing the retention time in the circuit. Too much wear on the column's level control valve will not allow the column to maintain the appropriate level which, in the extreme case, prevents concentrate from overflowing. 5. O B S E R V I N G CIRCUIT P E R F O R M A N C E The performance of the copper flotation circuit is determined through both observation and measurement. By observing the circuit (the froth quality and the concentrate flowrates) the operator is able to estimate the state of the process. Generally, the operator can tell whether the circuit is performing well. As a more quantitative guide, the feed, the final concentrate and final tailings streams are analyzed for various elements; the important ones being copper, iron and lead. An estimate of the pyrite content in each of the streams is also reported with the analysis. The analysis is performed approximately every twenty-five minutes and is used by the operator to fine-tune the performance of the flotation circuit. The circuit observations the operators make are primarily related to the state of the recirculating load in the circuit. By noting the characteristics of the froth on the scavenger and the second and third cleaners the operators can tell whether the recirculating load is greatly increasing or decreasing. A recirculating load that is too large, or too small, has adverse effects on both the concentrate and tail assays. D. C O N T R O L EQUIPMENT - H A R D W A R E AND S O F T W A R E 1. THE H A R D W A R E The expert system requires both computing and communication hardware. It runs on a microcomputer and communicates directly to the process through an input/output subsystem, and to Brenda's existing control computer (a Fisher Controls CP250) . The microcomputer is an A S T P R E M I U M 286, running at ten megahertz, and with three megabytes of zero wait state R A M (random access memory) configured as expanded memory. Storage capacity includes a high density floppy disk drive and a forty megabyte hard drive. The user interface includes a high resolution (EGA standard) colour monitor, a standard microcomputer keyboard and a dot matrix printer. Communication with the process is through the input/output subsystem. Process signals are received by the AST, controller calculations made, and output signals sent back to the process. The A S T is connected to the subsystem by an RS-422 serial link. The input/output system is made up of OPTO-22 components, mounted in an existing junction box in Brenda's computer room. The OPTO-22 analog, and discrete, modules communicate through their respective "Brain Boards". The OPTO-22 Brain Boards are devices used to "packet" and synchronize the sending and receiving of information from each of the OPTO-22 modules. Each OPTO-22 mounting rack contains slots for sixteen modules. Two mounting racks are required for the analog signals and one for the discrete signals. The installation includes analog input, analog output, discrete input, and discrete output modules and three mounting racks (with their respective Brain Boards). The OPTO-22 modules perform signal conversion from the 4-20 milliamp field signal to the voltages required by the Brain Boards to generate hexidecimal data for transmission. Contained in the input/output subsystem are selector switches and transfer relays to toggle the analog output signals between the CP250 and the AST . Also on the analog output signal paths are optical isolators that eliminate ground loops between the CP250 and the AST . Appendix 1 contains diagrams and tables showing in more detail the wiring of the system. The figures include the layout of the junction box depicting the relevant devices (detailed wiring is not shown for clarity), the communication link between the computer and field devices and a complete list of analog inputs and outputs, and their respective OPTO-22 locations. It should be noted that the toggle switches and transfer relays in the figures perform virtually the same function. The toggle switches allow individual analog outputs to be switched between the CP250 and the AST, while the transfer relays are wired to allow all the analog outputs to be switched simultaneously from a single selector switch. The transfer relays were never used however, as it was more convenient to switch the loops individually. The A S T computer communicates to the CP250 to obtain current process assays. Brenda's on-stream analyzer sends its raw voltage signals to the CP250. The CP250 then converts them to meaningful assays through a complicated series of regression, standardization, and correction equations. Perkins describes Brenda's on-stream analyzer in great detail [Perkins, 1989]. The assays are transferred to the A S T through the CP250's general purpose serial interface (GPSI) and over an RS-232 serial link. 2 . THE S O F T W A R E The software used for this project consists of both commercial and custom software routines. The custom routines are used for integrating the assay data into databases on the AST , for calculating self-consistent copper and iron assays, for generating hourly data logs, for saving regulatory controller setpoints on the hour, and for fail-safing the software for recovery from power interruptions. The custom routines consist of a batch file (running off the operating system), a BASIC program and a number of F O R T R A N programs. The commercial software is used for an operator interface, for the regulatory control calculations, and for the expert system shell. The software is the O N S P E C product line developed by Heuristics Inc., of Sacramento, California. The O N S P E C package is conceptually viewed as three functional sections; the operator interface, the regulatory controllers, and the supervisory expert controller. The three sections run simultaneously, in foreground and background, through the use of a multitasking operating system ( C O N C U R R E N T D O S , version 6.0, also from Heuristics Inc.). 95 a. A S S A Y T R A N S F E R ROUTINES The majority of the custom programs were developed to send valid, consistent process assays to O N S P E C . A batch file (running off the operating system) is used to orchestrate the execution of the various programs on the AST. A compiled BASIC program polls the serial communication link from the CP250 and stores the assays in data files on the microcomputer. F O R T R A N programs check the data for validity, perform a material balance calculation, and forward the corrected assays to O N S P E C . BORLAND'S T U R B O BASIC was used to develop the BASIC program. DIGITAL RESEARCH'S F O R T R A N 77 (available through Heuristics Inc.) was used to develop the F O R T R A N programs. C O N C U R R E N T DOS's batch file language was used to develop the batch routine. i. SENDING T H E A S S A Y S The assays are transferred from the CP250 to the A S T once a new set of assays have been completed. The CP250 indicates to the A S T that assays are ready by setting a discrete input on the OPTO-22. O N S P E C detects the signal and prepares to receive the assays. The CP250 then waits ten seconds after setting the flag, sends the assays, and resets the discrete input. The assays are sent when a new set of feed, concentrate and tailings assays are available and are sent one stream at a time; first the concentrate, then the tails, and lastly the feed. Due to an intermittent handshaking problem that existed between the CP250 and the AST the assays for each stream were sent seven times, ensuring that the A S T received a complete set. ii. RECEIVING THE A S S A Y S Two programs are used to receive the assays from the CP250, a F O R T R A N program named L O G N F L G , and a BASIC program called G E T A S S A Y . The L O G N F L G (acronym for L O G and FLAG) program serves the dual purpose of detecting the high signal on the discrete input from the CP250 (FLAG) and printing hourly data reports (LOGs). When the discrete input is detected, L O G N F L G stops itself and the program G E T A S S A Y runs. G E T A S S A Y (acronym for G E T A S S A Y S ) is a compiled BASIC program used to retrieve the assays from the RS-232 link and store them to data files on the AST. G E T A S S A Y continuously reads the port and stores valid characters to a literal string as received. When all the characters (including labels and assay data) for one process stream are received, they are saved to the appropriate data file. The program stops itself once the assays are saved. iii. COORDINATING THE A S S A Y T R A N S F E R The batch file (RECEIVE.BAT) is designed to execute the BASIC program, and the various F O R T R A N programs, as required. When the micro is started the batch file executes a F O R T R A N program (SEND) that transfers the most recently saved controller setpoints to O N S P E C . S E N D then clears the data files that stored the assays, and starts the F O R T R A N program L O G N F L G . L O G N F L G stops itself when it detects a new set of assays. The batch file executes the BASIC program and continuously restarts it until assays have been stored in each of the data files associated with the concentrate, tails, and feed streams. When the assays are stored the batch file executes a F O R T R A N program to check the validity of the assays, perform a material balance if the data is valid, and send them to O N S P E C when done. 9 7 iv. MANIPULATING THE A S S A Y S Prior to being sent to O N S P E C the assays are checked for validity and, if possib le, balanced with each other using a rudimentary material balance algorithm. The F O R T R A N program B A L A N C E performed these functions. The program first reads the assays from their respective data files, and then checks the copper, iron and pyrite assays to ensure they are within the valid ranges of the on-stream analyzer. If valid, the program checks whether the assays were taken less than twenty-five minutes apart from each other (indicating they were all part of the same set and the most recent). If the assays are determined to be valid, and the most recently available, then the material balance algorithm is run ensuring all assays are consistent with one another (see A P P E N D I X 2 for the material balance theory and algorithm). An exception to the above procedure occurs when the feed assay is determined to be invalid, or not part of the same set, but the concentrate and tail assays were still satisfactory. The concentrate and tails assays are forwarded to O N S P E C without going through the balancing algorithm. If either the concentrate, or tails, assays are determined to be invalid, or not from the most recent set, a message is issued to the printer and the assays are not forwarded to O N S P E C . b. O N S P E C A s used in this project the O N S P E C package consists of O N S P E C , C O N T R O L S , O N C A L C 2 , ONVIEWS (with S U P E R T R E N D S ) , the I/O T E M P L A T E , the W O R L D INTERFACE and SUPERINTENDENT. 98 The central routine is O N S P E C itself, which performs the handling of the alarms, the interfacing to the operator, the queueing of the I/O, the tagging and organizing of data, and the general system organization functions. O N S P E C handles data through tables that readily allow data transfers to and from O N S P E C ' s various "add-on" programs (CONTROLS, O N C A L C 2 , etc). The C O N T R O L S package contains a library of algorithms that can be used to perform the controller calculations. The standard, position form, PI control algorithm was used for this project. The O N C A L C 2 package is a spreadsheet that allows on-line calculations. The calculations can be performed on O N S P E C table values, such as the most recent process measurements. Results are either sent directly to the input/output subsystem or to the O N S P E C data tables. A runtime version of O N C A L C 2 , called A U T O C A L C , is specif ical ly designed to run spreadsheets in background. O N C A L C 2 has to be used to develop and edit the spreadsheet, but once completed A U T O C A L C can be used to run the sheet in background, thereby not occupying one of the four available user windows. A spreadsheet in A U T O C A L C calculate the recovery of copper for the circuit based on the most recent copper assays for the feed, tail, and concentrate streams. It performs exponential filtering on all of the analog input signals. The O N V I E W S package is a data trending package useful for observing trends on process data. It could be used to trend the data in real-time, or it could be used to trend historical data saved automatically through O N S P E C . The I/O T E M P L A T E is an interfacing program between O N S P E C and the OPTO-22 subsystem. The I/O T E M P L A T E runs a program called O P T O M A N 99 (acronym for O P T O MANager) that configures O N S P E C to the specific inputs and outputs of the OPTO-22 system. O P T O M A N decodes data received from the Brain Boards, performs the conversion from hexidecimal to engineering units, signal inversion, square root extraction, and any custom signal conditioning required. The converted data is then transferred to the O N S P E C tables. Figure 6 - Software Organization Source Files Knowledge Base Compiler Knowledge Base Files SUPERINTENDENT : BASIC communciation \ FORTRAN material balance FORTRAN datalogging toaBpLS jONVIEWS IONCALC2 WORLD INTERFACE ONSPEC The S U P E R I N T E N D E N T program is the expert system shell used to interface to O N S P E C . Through S U P E R I N T E N D E N T and O N S P E C supervisory control of the regulatory control system is made possible. S U P E R I N T E N D E N T reads and writes to O N S P E C table locations allowing manipulation of data, variables, and controller setpoints. Figure 6 diagrammatically illustrates the program structure of O N S P E C and the necessary custom routines. Table II summarizes the O N S P E C programs required to run simultaneously (not including some system routines). Table II - Software Routines and Functions O N S P E C - displays, operator interface, PID templates - alarms and alarm handling ONVIEWS - real time trending of O N S P E C data O N C A L C 2 - on-line spreadsheet A U T O C A L C - on-line spreadsheet run in background and used for data filtering O P T O M A N - O P T O I/O template to interface hardware with O N S P E C tables C O N T R O L S - contains a selection of control algorithms, performs control calculations DREDIX - editor used from the operating system for quick text editing C O N C U R R E N T - multitasking operating system, 4 user windows and foreground and background S U P E R I N T E N D E N T - BRAIN - off-line development and debugging - S U P E R - on-line shell to run knowledge base i. U S E R INTERFACE O N S P E C is used to handle the interface to the operator. The interface consists of high resolution graphic displays, alarm handling, and function key macros. Building the user interface consisted of designing and building graphics, configuring alarm messages, and configuring the function key macros to suit this application. User friendliness was essential for the acceptance of the experimental control system. The expert system had to operate 24 hours a day during its validation period and so had to be available at all times to Brenda's control room and copper flotation operators. It had to be simple to use, had to clearly show relevant data, and had to be robust enough that the operators could not accidentally corrupt the system or other programs. Through the use of designated function keys and colour graphic displays the interface was made user friendly and fairly robust. The graphic displays were designed to serve a number of functions. They were created to help visualize the circuit, to summarize the observed field measurements, to show the performance of the regulatory controllers, to show the latest assays, and to allow the operator to modify the various parameters and limits required by the expert system. Table III summarizes the displays available to the operators. Display 21 is the overview display that shows all available process variables in a tabulated form. Display 30 shows the latest assays and the status of some system flags. Display 28 is a summary display showing the current controller setpoints and current size of setpoint changes that would be made by the expert system. Display 29 is the Parameter Update display that allows changes to be made to the upper, and lower, limits of the allowable setpoints ranges. Display 29 also allows changes to be made to the range of acceptable assays for the concentrate and tailings streams. Displays 21, 22, and 23 are graphics of the circuit indicating major process streams and process data. Displays 32, 33, and 34 are the faceplates for the column level controllers, the column process air controllers, and the reagent flow controllers and scavenger air controller. 102 Table III - Graphic Display List Display Contents number 21 Summary of all Analog Inputs 22 Regrind Circuit Graphic 23 Cleaner Circuit Graphic 25 A l List, O P T O Board Locations.Table Locations 28 Control Loop Setpoints 29 S U P E R I N T E N D E N T Parameters 30 Assay Updates 32 Level PI Controllers 33 Air PI Controllers 36 Reagent and Scavenger Air PI controllers The function key assignments were designed to allow the system to be used by the operators without them having to learn any O N S P E C commands. The function keys are organized into a hierarchy, with the more general key assignments on top and the more detailed assignments below. The top most level of key assignments allow the user to move between the various displays. At each display the F8 function key can be used to get more detailed access to the particulars of the display. With each use of the F8 key the user is advanced to greater detail, until ultimately the function keys allow him to change some of the parameters on the display. Operators have access to the setpoints of the regulatory controllers, to the limits used by the expert system, and to the process indicator flags that allow him to tell the system that something unmeasurable is occurring in the circuit. The numeric key pad can then be used to make the desired change. 103 Through the use of designated function keys and graphic displays the user interface is friendly and robust. Minimizing the amount of knowledge the user has to have to use the system minimizes the risk of him making mistakes and damaging the integrity of the control package. A concise operating manual is available to the operators detailing the graphic displays, the function keys, and the use of the expert system for on-line control. ii. R E G U L A T O R Y C O N T R O L Regulatory control is implemented through a standard PI control algorithm. PI control required the configuration of PID C O N T R O L B L O C K S from O N S P E C . Configuration is a fill-in-the-blanks technique that allows the allocation of setpoint, process, output, and tracking variables to O N S P E C table locations. The control loops used include the level control loops to the four columns, the airflow control loops to the four columns, the airflow control loop to the scavenger bank, and the frother (MIBC) and collector (PAX) control loops to the conditioning tank. Table IV summarizes the control loops employed and the display numbers associated with their graphics. The controller setpoints can be changed by the operator or by the expert system. The expert system increases or decreases the controller setpoints as it deems necessary. There are occasions, however, where it is essential that the operator intervene. To manually change the controller setpoints the operator uses the appropriate function keys to get to the correct controller display; uses the function keys to highlight the appropriate setpoint; then enters the new setpoint. The expert system then continues to manipulate the controller setpoint from this new operator entered value. 104 Table IV - Regulatory Control Loops L O O P LABEL Display number L E V E L - #1 column 32 L E V E L - #2 column 32 L E V E L - #3 column 32 L E V E L - regrind column 32 AIR - #1 column 33 AIR - #2 column 33 AIR - #3 column 33 AIR - regrind column 33 AIR - scavenger 36 P A X - cleaners 36 MIBC - cleaners 36 iii. T H E E X P E R T S Y S T E M SHELL The S U P E R I N T E N D E N T expert system shell may be classified as a rule based "production system". The rules contained in its knowledge base are built using the IF-THEN structure. The outcome of the rules, or combinations of rules, may lead to some specific action. The shell is organized into a grid structure that has the appearance of a multi-level spreadsheet. The concept is graphically illustrate in figure 7. 105 Figure 7 - Grid Structure of the Expert System Shell The upper sheet of this spreadsheet package contains 100 cells and is called the OVERVIEW level. Each of the cells could have been used to represent one S U B J E C T . A S U B J E C T is a set of rules, actions, etc. grouped together to form a stand alone knowledge base (ie.all rules and actions that fit a particular domain). Rules in one S U B J E C T are unique to that S U B J E C T and do not affect other subjects. Data, however, could be passed between S U B J E C T S through variables. The supporting rules for each subject form the second level, S U B J E C T , level. The S U B J E C T level contains the rules and actions that comprise the SUBJECT'S knowledge base. The details of the R U L E S , and actions, are specified at the third, and final level. Within S U P E R I N T E N D E N T , at the final level, the rule structure is that of a rigid LOGIC matrix. The matrix allows only certain 106 combinations of ANDs , O R s , and NOTs. The rigidity of the matrix ensures the rules are short and concise. The matrix is an eight by eight, two dimensional array arranged as follows: or or or etc. and or or or etc. and or or or etc. etc. where either other rules or facts could be entered into the slots. It allows eight OR'ed statements to be AND'ed to eight more OR'ed statements, for a total of 64 entries. The matrix is read row by row, top to bottom, and left to right. OR 's by themselves are combined up to a maximum of eight. AND's by themselves are combined up to a maximum of eight. Using ANDs to combine OR statements is a single step process and directly written into the matrix as ( A o r B ) a n d ( C o r D ) Combining A N D statements with O R s is a minimum two step procedure. The combination (A and B) or (C and D) does not fit directly into the matrix. To follow the above example, two new rules " E " and "F " have to be defined. " E " is described by (A and B) and "F" by (C and D) The equivalent logic to (A and B) or (C and D) is then (E or F) In the above manner all combinations of "ANDed" or "ORed" statements can be created. Various courses of action may be taken, depending on the state of the accompanying rule. A rule can either be true, false, or unknown with a specific action is taken on any of the states. An ACTION is a cell that may cause "something" to happen. Actions can issue messages to the screen, issue reports to report files, perform numerical operations on variables and, most importantly, can manipulate values from the O N S P E C tables (such as regulatory controller setpoints). Within the A C T I O N cell is a primitive language, the A C T I O N L A N G U A G E , that gives the flexibility of incorporating programming logic, in the form of looping and boolean decision making, within the framework of the expert system. Through the action language data can be passed between S U B J E C T S , thereby allowing a large knowledge base to be divided into smaller semi-independent S U B J E C T S . 108 E. K N O W L E D G E ENGINEER ING Knowledge engineering is the process of soliciting knowledge from the experts and compiling their knowledge into the knowledge base. The experts for this experiment were the copper flotation operators. Knowledge engineering involved capturing their expertise and emulating it within the knowledge base. Four techniques to solicit this information were applied; circuit observations, informal interviews, hands-on operation, and a written questionnaire and preliminary operating procedure. Knowledge engineering through observation served a dual purpose. Firstly it served as a good introduction to the domain by allowing first-hand familiarization with the circuit and with the experts. Secondly, as a knowledge solicitation tool it provided an opportunity to watch the tasks the experts performed; what they considered as indicative signals and what remedial actions they took. A benefit of this type of approach was that it allowed first hand observation of the circuit; not only could the computer monitor the process, but the knowledge engineer could see the conditions the computer was unable to detect but none-the-less important. The biggest drawback to this method of knowledge solicitation was that the experts attention was never given one hundred percent to the task of knowledge engineering; there were always distractions caused by other duties required by operations. The second method attempted was knowledge engineering through informal operator interviews. At Brenda both the operator in the control room and the operator on the flotation floor are qualified to operate the copper flotation circuit. In fact, the flotation operator switches with the control room operator, and vice verse, every month or so, keeping each operator refreshed in both duties. Interviewing the 109 operator on the flotation floor proved to be a difficult task. If the interview was conducted in a room away from the circuit, the operator would always be distracted thinking about other tasks that required attention (the copper flotation operator was also responsible for the molybdenum flotation circuit and also for regrind circuits for each). Because he could not physically see the circuit it was difficult for him to detail everything he did to correct operating problems. Performing interviews while he was on the plant floor, actually operating, also proved to be difficult; not only were there distractions of the type previously mentioned, but it was also a noisy environment, too much so to talk comfortably. Interviewing the flotation operator on the plant floor and removed from the circuit proved to be unsuccessful. Interviewing the control room operator, instead of the flotation operator, was far more effective. Depending on conditions in the concentrator, the control room was an ideal environment to conduct an interview. During periods where there were only minor operating problems and little plant maintenance requiring his help, an interview could be conducted with little interruption. Interviewing in the control room was ideal for three reasons; firstly, as mentioned, the environment was quiet with very few interruptions (when the timing was right); secondly, from the control room he could see the flotation circuit and so see the "triggers" he needed to help him remember how he solved operating problems; and thirdly, it was in an environment in which he felt comfortable, and not threatened. Interviewing the control room operator proved to be much more successful than interviewing the flotation operator. Hands-on circuit operation was performed as the third method of knowledge engineering. It was a more direct approach to knowledge engineering and also a dual purpose of allowing the validation of the knowledge previously collected. Hands-on operation involved running the circuit, under an experts' guidance, 110 testing and modifying operating rules as conditions required. Obviously, one could not be expected to become an expert over a short period, but it did allow intimate familiarization with the circuit. The fourth knowledge solicitation technique attempted was that of a written questionnaire and preliminary operating procedure. The questions were worded as open ended questions allowing room for the operator to say as much as he felt the question required (a copy of the questionnaire may be found in appendix 4). The questionnaires were given to the operators on a night shift, thereby allowing them ample time to formulate, and record, their responses. The original plan was to give them a series of questionnaires, each building on the details of the previous one. However, the written responses to the first questionnaire was of such poor quality that this method of knowledge solicitation was stopped. The spoken english of the operators was much better than their written english. Knowledge solicitation in the form of a preliminary operations guidelines involved asking the operators to comment on the validity of guidelines presented to them. This method had two shortcomings; firstly, as was found by the questionnaire, the operators supplied only very terse comments. Their comments were not of sufficient quality to add any information to the knowledge already collected, most operators chose not to comment, while those that did supplied only "yes/no" remarks. The second flaw with this type of knowledge solicitation was that it was very leading. The operators read the contents of the synopsis and most agreed that they operated the circuit the way it was written in the guideline. However, while observing the operators in action it was obvious that each operator performed quite differently. As an example, when "pulling" the circuit all operators agreed something had to be done to the columns, some used air while the others used level, and others used wash water; three different solutions to the same problem. The synopsis indicated a single solution, to which most agreed. F. E X P E R T S Y S T E M VAL IDATION The ability of the expert system to control the copper flotation circuit was tested by running the system on-line, controlling loop setpoints in real-time, for a given test period. The purpose of this validation period was to show that the expert system could indeed make controller setpoint changes that would maintain, or improve, the metallurgical performance of the circuit. The system's actions would be checked on a microscopic level, to ensure its moves were correct, and on a macroscopic level, to check its overall performance and operator acceptance. The test was long enough that the operators had to learn to use the expert system to control the circuit. To that end operators had to be trained to operate the system, how to manually change setpoints, how to switch back and forth between the CP250 and the AST, etc.. 1. TE ST DURAT ION The duration of the experimental period had to be sufficiently long that a statistically significant data sample could be gathered. Using statistical theory, and some simplifying assumptions, a sample size of approximately fifty data points was derived. Appendix 3 shows the details of the sample size estimation. 2. P E R F O R M A N C E A S S E S S M E N T The performance of the expert control system was assessed by the metallurgical performance of the circuit, and by the acceptance, or rejection, of the 112 system by the operators. Individual control actions were observed by watching the system directly and by studying the hourly data logs after the fact. The long term metallurgical performance of the circuit was determined by studying the results of data averaged over an operating shift. Its performance was assessed by its ability to maintain the given target assays in the concentrate, and tailings streams. Assay and process data were to be collected over the duration of the test period from the event, and hourly, reports generated by the expert system. Average shift assays were collected from the CP250 shift summaries over the test period also. The acceptance, or rejection, of the expert system was strictly a qualitative measure and was assessed by soliciting the operator's feeling. If the operators did not think the system was doing the task it was designed for it would not be used. If it saved them work, it would be. If it caused extra work, or extra vigilance, it would not be used, an excuse would be found to turn it off. 3. D IRECT C O M P A R I S O N Certainly the most conclusive way to determine the performance of the expert system would have been a direct comparison between the circuit's metallurgical performance before, and after, implementation of the expert system. Using some type of long term on/off testing would have highlighted the strengths, and weaknesses, of the controller performance. If the expert system was controlling the circuit better than the simple regulatory control one would expect the average assays from expert system control to be closer to the target, and with less variation, than without. A comparison of this nature would definitively conclude whether the expert system was at least as good as regulatory control only. 1 1 3 Regrettably, however, a comparative test of this nature was not possible. There had been a significant change in the ore's metallurgy that coincided with the expert system research effort. The ore from Brenda's open pit historically contained only small amounts of lead, and pyrite, allowing predictably good flotation performance. Generally, up until early 1989, the mill only occasionally had to treat ore containing "high" levels of lead and pyrite. However, as the levels of lead and pyrite increased in the mill feed, the performance of the copper circuit deteriorated. Low concentrate and high tailings assays were the acceptable norm for these rare occurrences. In late 1988, the ore containing high lead, and pyrite, became more consistent in the concentrator feed; overal l copper circuit performance deteriorated. The experts were unable to attain the levels of performance associated with historical copper circuit operation. Comparison of the supervisory control system's performance to plant data prior to early 1989 would not be a sound comparison; the old ore allowed much higher performance levels (typically 30% copper in the concentrate stream and only 2% copper in the tailings stream) than the new ore (typically 26% and 2.5% copper respectively). See Appendix 10 for excerpts taken from selected internal month end reports from the Brenda concentrator indicating the ore problems. There was no way to tell whether the circuit feed was "good" or "bad", except by the performance of the circuit itself. Because of this, it was not possible to select comparable periods where the ore types were guaranteed to be the same. Observed improvements in metallurgical performance due to the expert system could not be distinguished from metallurgical improvements caused by periods of "good" ore. A direct comparison between circuit performance before supervisory control and performance after supervisory control is not possible. What is possible, however, is the comparison to general circuit operation over a long period. By considering the concentrate and tailings assays from 1988, and making the gross assumption that the average ore type for the year was the same as the average ore type over the expert system's validation period, a comparison can be made between the circuit performance before and after expert system control. By compiling the concentrate and tails assays from the twelve hour shift and daily production reports a comparison could be achieved. Though not conclusive, the results should indicate whether the system is either much better, somewhat the same, or much worse, than circuit operation under regulatory control only. 4. DEALING WITH DISTURBANCES Validating the expert system required continuous, on-line operation in an industrial environment, complete with disturbances associated with real-time industrial operations. The process ran 24 hours a day, seven days a week. Process and mechanical disturbances were to be expected. The expert system is expected to be able to deal readily with disturbances caused by the process (varying flows, varying copper contents, varying degrees of copper liberation, etc.). The system is not, however, designed to control around disturbances associated with mechanical failures, equipment shut downs, etc.. When large tonnage changes occur, as associated with the aforementioned shutdowns, it is expected that the operator will have to intervene and assist the expert system by manually readjusting the controller setpoints. The expert system will resume control from the new setpoint levels. 115 IV. K N O W L E D G E B A S E AND E X P E R I M E N T A L R E S U L T S In this section the data and the results obtained from the experimentation are presented. The results include a description of the knowledge base, and a synopsis of the feedback received from the operators. The data include an example of the detailed assay by assay record of the process performance and control behaviour during the experimental period, and the averaged process performance over each of the twelve hour experimental sampling periods (refer to Appendix 9 for complete detailed results). A. K N O W L E D G E B A S E DESCR IPT ION In this section the development of the knowledge base is described. The description includes the structure of the knowledge base, its overall order of execution, and the various conditions causing actions to occur. 1. S T R U C T U R E OF THE K N O W L E D G E B A S E The complete knowledge base is divided into a number of smaller knowledge bases (called subjects in S U P E R I N T E N D E N T terminology). Each subject performs a specific function that differs significantly from the others. The knowledge base breaks down as follows: a. Assays and Overhead. This subject retrieves the assays from the O N S P E C table locations and determines the state of the circuit. In this subject the decision is made to "pull the circuit harder", or "hold the circuit back", or fine tune the concentrate using xanthate control. This subject is also used to clear and reset flags used in ordering the execution of the other subjects. b. P A X Control. This subject contains the heuristics for manipulating the xanthate controller setpoint. c. Column Control. This subject contains the heuristics for manipulating the process air and pulp level setpoints. d. Scavenger Air and MIBC control. This subject contains the heuristics to manipulate the process air setpoint to the scavenger bank and the flow rate setpoint of the MIBC. e. S U P E R I N T E N D E N T Limit Checks. This subject performs checks on the current setpoints of all the controllers and the limits of all the setpoints. Setpoint checks are made to ensure they are within the specified limits. Limit checks are performed to ensure that the low limit is less than or equal to the high limit. Setpoint checks are also performed in the respective subjects that manipulate the setpoints, but these however, are not able to check manual setpoint changes made by the operators. This subject checks all setpoints, independent of who made the change. f. Pump High Level Flags. This subject monitors the high pump box level flags on the O N S P E C display. When a flag is set it manipulates the necessary setpoints to help correct the problem. g. Scavenger Control F lags. This subject monitors the "scavenger condition" flags. When any are set, this subject manipulates the necessary setpoints to help correct the problem. h. Column Control Flags. This subject checks the column " S L O W " and "FAST" flags and takes corrective action when one has been set. i. S U P E R I N T E N D E N T Running Reset. When new assays have been detected, this subject resets the required flags to ensure correct execution of the other subjects. j . End Subject. This subject runs last and is responsible for issuing messages to the log printer. The action language is responsible for reporting, step size determination and subject execution flagging. The action language uses a R E P O R T statement to send messages to an ASCII file. Once inferencing is complete for the current set of assays, the reports are sent from the file to the printer using operating system calls from within S U P E R I N T E N D E N T . The use of flags ensured the reports are printed after all inferencing is done. The size of the step is determined from the O N S P E C display but modified if the current setpoint is near its limit. The modified setpoint is restricted to its specified range. 2. O V E R A L L EXECUT ION C O N T R O L a. O R D E R O F EXECUTION The expert system takes control action only when valid copper assays are received by O N S P E C , from the CP250. The assays, once received, are subjected to a material balance before being forwarded to O N S P E C . The balance is only performed if the set of valid assays include the feed, the tail ings, and the concentrate streams. If the concentrate and tailings streams are the only two assays valid a balance is not performed but the two valid assays will still be forwarded to O N S P E C . If either of the assays for the concentrate or tailings streams are considered invalid the assays are neither balanced, nor forwarded to O N S P E C . The primary control variable is the xanthate (PAX) addition rate. The circuit has well known short term responses to changes in the addition rate of P A X . MIBC, scavenger air, column level and column air flow control are used for longer term control responses. The scavenger air, then the MIBC are used for longer term control of the assay in the tailings stream. The column air, then levels are used for longer term control of the circuit loading. The time constants of the circuit made it necessary to ensure that there was a built in wait period that took affect after any control action. The experts typically waited one, if not two, complete sets of assays before adjusting the parameters again (assays were available approximately every 25 minutes). The wait period in the expert system is set to the least of either, the time it takes to obtain two sets of assays, or 40 minutes. That is, no control action is performed on the next valid set of assays unless the next set is more than 40 minutes after the original action. The operators seldom repeat changes to the same variable unless the initial changes are seen to have a positive effect. The control routine mimicks this behaviour by cycling between the available control variables. The routine's first control action is always with the P A X . P A X control is then followed by a wait period, then either the control of the assay in the tailings stream, or the control of the circuit loading, again followed by a wait period. P A X control is executed again, then a wait period, then the other of the tailings assay control or circuit loading control. In this way the P A X control is executed, in general, once an hour. An exception to the control sequence presented above occurs when the circuit has shown a positive response to a change in the P A X setpoint. When a P A X setpoint change causes an increase in the concentrate assay, or a decrease in the tail assay, (ie. an improvement) the P A X control logic is executed again, after a wait period. The change to the assays has to be greater than a preset deadband to be considered significant. The P A X control continues to be executed on successive valid assays as long as the assays in the concentrate, or tailings, streams show improvement. When no further improvement is detected the regular control sequence commences. In summary, the rules used for overall control execution are: IF no new valid assays T H E N do not execute the knowledge base. IF the feed, tail and concentrate assays are new and valid T H E N perform the material balance and continue with control. IF the tail and concentrate assays are the only two valid T H E N by-pass the material balance and continue with control. The rules for organizing control are: IF 40 minutes has elapsed since the last control action, OR IF no control action was taken on last valid assays T H E N continue with control OTHERWISE wait one set of assays. IF control action is allowed THEN check circuit conditions and perform control actions as required. IF P A X control was executed at last control action, AND IF the assays improved THEN execute P A X control once more (only) O T H E R W I S E execute Scavenger Air/MIBC or Column Air/Level control, which ever was not the most recently executed. b. SETPOINT C H A N G E S AND LIMITS Changes to setpoints are made based on the expert system knowledge and constrained to be within acceptable limits. The expert system adjusts the setpoints by adding or subtracting a specified S T E P size from the current controller setpoint. When approaching a limit the step size is reduced to keep the new setpoint within the boundary condition. As an example consider a case where the xanthate is already at its low limit and the knowledge attempts to decrease it further. The current process variable is compared to the limit and the interim step size is set to the difference. If the difference is zero, then zero is added, or subtracted, from the current setpoint. Various limits and step sizes are adjusted by the operator from O N S P E C displays. The upper and lower boundaries on the setpoint changes are set for all control loops. The step sizes for each loop are adjusted individually, that is, not all four column air flows have to be adjusted by the same amount, nor all four levels. Typically, the P A X is adjusted by 25 millilitres per minute, the scavenger air by 10 cfm, the MIBC by 1 millilitre per minute, the column airflows by 1 cfm, and the column levels by 0.2 feet. In summary, the rules for checking the setpoints and limits are: IF the setpoint is increased and the new setpoint is above the upper allowable limit THEN set the new setpoint equal to the upper limit. IF the setpoint is decreased and the new setpoint is below the lower allowable limit THEN set the new setpoint equal to the lower limit. 3. C IRCUIT CONDIT IONS a. A C C E P T A B L E A S S A Y S The acceptable range for the assays of the concentrate and tailings streams are set in an O N S P E C display. The engineering staff may set, or adjust, the high and low limits for the assays in the concentrate, and tailings, streams. The assays are considered acceptable if they are within these bounds. Typically the concentrate assays are considered acceptable if they are within 2 7 % to 30% copper. Acceptable tail assays are typically between 2% and 2.4% copper. The tail limits were adjusted during the experimental period. b. F A V O U R E D C O N T R O L To determine which condition is worse (between a high tail assay and a low concentrate assay) a calculation is performed to determine the percentage the respective assays are away from their high or low limits. The assay determined to be the furthest away from its appropriate limit, on a percentage basis, is considered the worst. This procedure resolves conflicts that arise from tail or grade control of the P A X and other control variables. c. CIRCUIT LOADING CONDITIONS The loading of the circuit may be in either of three states; either it is acceptable, or it is too heavy, or it is too light. The determination of the loading of the circuit is subjective. In general terms, an acceptable load in the circuit is the 122 state at which there is not too much, nor too little, copper in the circuit. A heavy load, on the other hand, means there is too much copper, while a light load means there is too little. A circuit that is too heavy is characterized by small , tightly packed, and heavily laden bubbles in the flotation froth and indicates that the recirculating load within the circuit is too high. The problems with a circuit that is too heavy is that there is excessive retension time in the cells (ie. inefficient cell usage) and a saturation effect whereby the amount of copper in the cells inhibits some from reporting to the concentrate and so is lost to the tails. The concentrate grade is often high, as is the tailings grade. The corrective action for a circuit that is too heavy is to increase the amount of concentrate produced, that is, the circuit has to be pulled harder to relieve the load. A circuit that is too light is characterized by conditions precisely the opposite of those associated with a circuit that is too heavy and is indicative of circuit operation where the recirculating load is too small. A light load means a much reduced retention time in the cells, the copper that is in the circuit is readily floated, but so are gangue materials. The froth is characterized by large, sparsely laden bubbles (as indicated by windows in the froth). The concentrate and tailings grades may be both low. A light load may be corrected by decreasing the flow of final concentrate by slowing down, or holding, the circuit; thereby, pulling less copper to the concentrate stream and increasing the circuit's load. One of three conditions has to be met before the expert system will "pull" the circuit harder. Firstly, there is an operator flag that may be set if he observes a load building up. Secondly, if the on-stream analyzer results indicate that the assay in the concentrate stream is high and the assay in the tailings stream is also high. 123 Thirdly, if the assay of the concentrate stream is low and that of the tailings is high. If either of these conditions is met the expert system attempts to "pull the circuit harder". One of two conditions has to be met before the circuit will be considered too light circuit. Firstly, like the heavy circuit condition, there is a flag that the operator may set if he observes the circuit getting light. Secondly, if the assays of both the concentrate and tailings streams are low then the expert system will conclude also that the circuit is getting light. A summary of the rules governing the circuit's condition is as follows: IF the concentrate or tails assay are between their upper and lower limits AND the iron assay in the concentrate is less than the copper assay THEN the circuit is okay. IF the tail assay is above its upper limit THEN the tail assay is high. IF the concentrate assay is below its lower limit THEN the concentrate assay is low. IF the concentrate assay is in greater error than the tails assay (ie. the percentage error of the concentrate below its lower limit compared to the percentage error of the tails above its upper limit) THEN the concentrate assay is worse than the tails assay. IF the tails assay is in greater error than the concentrate assay (ie. the percentage error of the concentrate below its lower limit compared to the percentage error of the tails above its upper limit) THEN the tails assay is worse than the concentrate assay. IF the appropriate operator flag is set, OR IF the concentrate and tails assays are high, OR IF the concentrate assay is low and the tail assay high THEN the circuit is heavy and pull the circuit harder. IF the appropriate flag is set, OR IF the concentrate and tails assays are low THEN the circuit is light and hold the circuit back. 4. X A N T H A T E C O N T R O L LOGIC The control of the xanthate is the primary control variable for maintaining circuit performance. The circuit exhibits consistent short term responses, most of the time, to changes in the addition rate of xanthate. Occasionally, the circuit does not respond to xanthate control and other control action is necessary. The xanthate step is set to twenty-five millilitres per minute and was not changed for the duration of the testing. The P A X setpoint is increased if one of three conditions are met. The first condition is that the assay of the tailings stream has to be high. The second condition is that the lead assay in the concentrate stream has to be high. And lastly, the third condition is that the tailings stream assay is high and the concentrate assay is low, but the tail assay error is considered worse than the concentrate assay. If either of these conditions are met the P A X setpoint will be increased. The P A X setpoint is decreased if all three of the following conditions are met. The first condition is that the concentrate assay has to be low and the tail assay has to be high, but the concentrate assay error has to be considered worse than that for the tail assay error, or that the operator set the flag indicating the flotation circuit looked FLAT. The second condition is that the assay of the concentrate stream has to be low, or the iron in the concentrate stream has to be high while the assay of the tailings stream is low. Thirdly, the circuit conditions, or the operator (through the available flag), determine that the circuit needs to be "pulled" harder (ie. the concentrate grade is high and the tail grade is high). The size of the step is altered by the system depending on the state of the circuit. If a very large change is detected in either the concentrate or tails copper 125 assay, the change to the addition rate of P A X is doubled. The concentrate has to change by two percent copper, and the tails by one percent copper. Decreasing the P A X due to high iron in the concentrate is a fine tuning change and requires a smaller change than a full step change, the change is only half the current step size. If the change to the P A X is due to the concentrate or tails assays, but the worst assay is within a deadband region, the change in the P A X is also only half the current step size. The deadband on the concentrate is 0.5% copper, and on the tail is 0.25% copper. A summary of the P A X rules is as follows: IF the tails assay is high, OR IF the lead assay is high, OR IF the tail assay is high AND the concentrate assay is low, but the tail assay is worse T H E N increase the P A X setpoint. IF the appropriate operator flag is set OR the concentrate assay is low AND the tails assay is high but the concentrate is worse A N D the concentrate assay is low OR the iron assay in the concentrate is high A N D the tails assay is low AND the circuit is heavy (and has to be pulled harder) T H E N decrease the P A X setpoint. IF there is a very large change (up or down) in the concentrate or tails assays T H E N the P A X step size will be doubled. IF the decrease in the P A X setpoint is because the iron in the concentrate is high T H E N the P A X step size will be halved. IF the concentrate assay is below its lower limit, OR the tails assay above its upper limit, but within a small deadband region THEN the P A X step size will be halved. 5. TA IL C O N T R O L LOGIC The process air flow rate to the scavenger bank and the MIBC flowrate are used to control the assay in the tailings stream. The scavenger air is used first, then the MIBC. a. S C A V E N G E R AIR SETPOINT CONTROL If the tail assay is determined to be higher than the high limit then the scavenger air is increased. If the circuit is too light, and needs to be "held back" the scavenger air setpoint is decreased. b. MIBC SETPOINT C O N T R O L The MIBC setpoint is increased based on the same logic that increases the scavenger air flow setpoint, with the added stipulation that the scavenger air setpoint has to be already at its operator set maximum. The MIBC setpoint is decreased based on the same logic that decreases the scavenger air flow setpoint, with the added stipulation that the scavenger air flow setpoint has to be already at its operator set minimum. A summary of the rules for tail control is as follows: IF the tail is high THEN increase the scavenger air setpoint. IF the circuit is light (and needs to be held back) THEN decrease the scavenger air setpoint. IF the tail is high AND the scavenger air setpoint is at its maximum THEN increase the MIBC setpoint. IF the circuit is light (and needs to be held back) A N D the scavenger air setpoint is at its minimum THEN decrease the MIBC setpoint. 6. C IRCUIT LOAD ING C O N T R O L LOGIC The columns are used to control the loading of the circuit. Process air to the columns is manipulated as is the pulp level in the columns. a. C O L U M N AIR SETPOINT CONTROL Changes to the air flow setpoints on the columns is done in parallel, the setpoints are driven together. Increases to the airflow setpoints are based on two conditions. Firstly, a flag is available that the operator may set if he feels a particular column is running too slowly, that is, if the concentrate flowing from the top of the column is not flowing fast enough; each column had its own flag. Secondly, the air flow setpoints to all four columns are increased if the circuit looked as if it is getting too "heavy". The air flow setpoints to the columns are decreased under conditions that are similar to those under which they are increased. An operator set flag is available to indicate that the column is too "slow"; that is, there is too little froth coming off the top of a particular column. And secondly, the column air setpoints are decreased if the circuit has to be "held back" as determined by the expert system. b. C O L U M N L E V E L C O N T R O L LOGIC The column level control logic is identical to the column air flow control logic with the additional stipulation that the level is to be manipulated, up or down, until the respective column air flow setpoints were driven to their minimums or maximums. The column level setpoints are increased until the respective column 128 air flow setpoint is at its maximum. And conversely, the column level setpoints are decreased until the respective level setpoint is at its minimum. A summary of the rules for the circuit loading control logic is as follows: IF the columns are running too slow or too fast (as determined by operator flags for individual columns) THEN the column air will be increased or decreased, respectively. IF the circuit is too heavy (and needs to be pulled harder) THEN increase the column air setpoints. IF the circuit is too light (and needs to be held back) THEN decrease the column air setpoints. IF the columns are running too slow or too fast (as determined by operator flags for individual columns) A N D the air setpoints are at their upper and lower limits respectively THEN the column level will be increased or decreased, respectively. IF the circuit is too heavy (and needs to be pulled harder) AND the column air setpoints are at their respective upper limits THEN increase the column level setpoints. IF the circuit is too light (and needs to be held back) A N D the column air setpoints are at their respective lower limits THEN decrease the column level setpoints. 7 . PUMPBOX WATCHDOG LOGIC The computer is unable to detect high levels in any of the various pump boxes in the copper circuit. To accommodate the detection and subsequent correction of the high pumpbox levels the operators have two flags available to them. The flags may be set to indicate an ongoing, or potential pump box problem. One flag is dedicated to the regrind column pump boxes, the other assigned to the cleaner section. Both flags perform similar tasks. Pump box problems are typically caused by a heavy load, or a large recirculating load, in the corresponding regrinding, or flotation circuits. The corrective action is to reduce the load in the corresponding circuit by "pulling" the concentrate harder. In the cleaning section the air to the first and second cleaning columns is increased (the third column air is not increased as it contributes the poorest quality concentrate to the final product and increasing this air would dilute the concentrate grade). In the regrind section the air to the regrind column is increased in an attempt to reduce the recirculating load to the regrind mill and hence to the pump boxes. 8. SETPO INT A N D LIMIT C H E C K I N G The expert system checks the current setpoints of the controllers and checks the limits on the setpoints. In addition to step size adjustments, the program checks the setpoints to ensure they are within the upper and lower limits. If a setpoint is above its high limit, or below its low limit, the setpoint is put at that limit. This condition may occur if the operator has attempted to change a controller setpoint manually and has entered an incorrect value. The program also checks the operator entered limits for validity ensuring that the high limit is not set below the low limit, and vice versa. If there are conflicting limits the high limit is always set to the low limit. This condition occurs if the operator attempts to restrict the range of a setpoint and has entered in an incorrect value. 130 B. O P E R A T O R A S S E S S M E N T The operators were given an assessment questionnaire to determine their sentiments toward the expert system. The questions are listed in figure 8 and responses in Table V. Figure 9 summarizes some of the comments made about the expert control system. Figure 8 - Operator Assessment Questionnaire 1. In general, do you think the program is controlling the circuit adequately? 2. Compared to normal setpoint control, do you think the control program is doing a better job at maintaining the tail and grade? 3. a) Do you like the operator interface? b) Do you think the "process state flags" are a reasonable way to let the computer know that the circuit is heavy, or light, or fast, or slow.etc. 4. a) Do you like it? b) If you had a choice, would you like to see this control system left in place, or pulled out? or would you like to see some things added or changed? 5. If you have any comments, positive or negative, I would appreciate hearing them. Table V - Operator Assessment Responses Question Y E S NO 1 8 0 2 7 1 3a 8 0 3b 8 0 4a 8 0 4b 8 0 131 Figure 9 - Operator Assessment Commentary "Copper control worked very well, with a couple of resets, no problems though. Saved (an operator) some time while he hosed, and put his official stamp of approval on it." "Should have had these controls years ago." "Yes, it appears to perform equally (as) well as the operators." "The control program is an excellent operator aid." "I like it because it is consistent." "I think it is the best thing that has ever been done to control the copper flof, it tells the O P (operator) what to do." "I would like to see it left in place because it does a better job overall." C. DETA ILED C O N T R O L BEHAV IOUR The expert system control package was run on-line for validation between January 14, 1990 and February 19, 1990. The data were collected in twelve hour increments, coinciding with operating shifts and shift reports. If there was significant maintenance being performed on the expert system, the processing units, or the on-stream analyzer the shift data was discarded. A total of fifty-four twelve hour shifts were recorded. The valid days are recorded in table VI. Appendix 9 contains the detailed data retrieved from system reports and hourly logs. The data includes the time and date stamp, the copper assay in the concentrate, tails, and feed streams, the iron assay in the concentrate stream, the type of action performed, and the current setpoints. The action is marked by a "p" indicating P A X control, a "c" indicating column (air) control, an "s" indicating scavenger air or MIBC control, "ok" if the circuit required no changes, and a blank at the beginning and end of the shifts. Blanks also indicate operator intervention if it is not a seven o'clock (am and pm). Table VI - Data Acquisition Schedule date day shift night shift date day shift night shift date day shift night shift Jan 14 X X Jan 25 X Feb 11 X X Jan 15 X Jan 26 X X Feb 12 X X Jan 16 X X Jan 27 X Feb 13 X X Jan 17 X X Feb 3 X X Feb 14 X X Jan 18 X Feb 4 X X Feb 15 X X Jan 19 X Feb 5 X X Feb 16 X X Jan 20 X X Feb 6 X X Feb 17 X X Jan 21 X X Feb 7 X X Feb 18 X X Jan 22 X X Feb 8 X Feb 19 X X Jan 23 X Feb 9 X X Jan 24 X Feb 10 X X Table VII - Detailed Control Behavior, Feb 5,1990 Date Time Cone Cu Cone Fe Tail Cu PAX S P MIBC S P Scav airSP column airflows #1 #2 #3 #4 Feb 5 700 272.5 32 355 28 28 27 20 730 28.78 27.44 2.688 P 297.5 835 29.67 28.84 2.751 P 322.5 925 28.21 29.21 2.567 P 335 133 1025 27.44 29.20 1.696 P 297.5 1120 28.04 29.12 2.064 P 285 1225 28.06 29.03 1.962 S 1320 28.04 29.08 1.688 p 247.5 1415 28.60 28.93 1.358 P 210 1305 27.02 28.24 1.493 c 27 27 26 20 1615 28.45 29.07 1.699 p 172.5 1710 28.33 29.19 1.768 s 1815 28.91 28.84 2.027 ok 1840 29.31 28.99 1.990 p 160 1930 28.70 28.50 2.130 ok 2030 29.18 28.83 2.289 ok 2100 29.25 28.87 2.438 p 172.5 2200 29.30 28.80 2.440 c 2310 29.84 29.10 2.558 p 185 10 29.20 29.00 2.900 s 360 110 28.85 29.27 2.848 P 210 210 28.80 28.90 2.730 c 310 28.46 28.95 2.648 p 222.5 410 29.20 29.10 2.570 p 235 500 28.67 29.21 2.543 s 365 600 28.70 29.30 2.410 p 247.5 630 28.50 29.20 2.200 c 700 247.5 32 365 27 27 26 20 Figure 10 - Cu Concentrate and Tails Assays, Feb. 5th Detailed Assay Trajectories - Feb 5th, 1990 30 -, r- 5 3 o >. S CO < a c 8 c o o 3 o 29 -28 £ 27-26 -25 - 4 3 o - 3 - 2 1 0 5 10 15 20 25 30 Time Intervals - Feb 5th (50 minutes) Figure 11 - Xanthate Trajectory, Feb. 5th CO (0 M < 3 o Detailed Xanthate Trajectory - Feb 5, 1990 u u a. to <s CO o 400 300 ul 200 o CO c ca X 100 25 30 Time Intervals - Feb 5th (50 minutes) 135 D . A V E R A G E D CONTROL PERFORMANCE In addition to retrieving the detailed response of the expert system to circuit disturbances, data were collected for the average performance of the control system over each shift. The average performance is summarized in appendix 8. The averaged data include the time stamp, the copper assays for the concentrate, tails and feed streams, the iron assay for the feed stream, the low limit on the copper assay in the concentrate stream, and the high limit on the copper in the tails stream. The time plots, in figures 12a and 12b, illustrate the performance of the circuit over the validation period. Figure 13a illustrates the performance of the circuit as deviations from their limits; points in the positive region indicate performance better than the limit, points in the negative region indicate performance worse than the limit. Figure 13b illustrates the tails devations as a histogram of absolute values. Figure 14 is a time trend of the feed material that entered the circuit (also shift averages). Shown on this figure are the shift averages for the copper and iron assays. 136 Figure 12b - Time Plot of Circuit Performance - Tails Assays Shift Average - Tails Cu Assay 4 0 10 20 30 40 50 60 Time Interval (12 hour shifts) Figure 13a - Concentrate Deviations from the Lower Limit Figure 13b - Tails Absolute Deviations from the Upper Limit Tails Assay - Histogram of the Absolute Value From the Upper Limit 0 0.2 0.4 0.6 0.8 1 1.2 Cu Assay Difference (in 0.2% Cu categories) 138 Figure 14 - Circuit Feed 3 o CD to W < T3 <D a> u. Shift Averages - Feed Cu and Fe Assays Time Interval (12 hour shift) Figures 15 and 16 are histograms of the frequency distribution of the copper assays in the concentrate and tails streams. Figure 15 - Frequency Distribution of Concentrate Copper Assays FREQUENCY DISTRIBUTION Of C O N C E N T R A T E ASSAYS (shift averages) >• o z UJ 3 o ui oc u. 25 25.5 26 26.5 27 27.5 28 28.5 29 29.5 30 30.5 31 31.5 32 CONCENTRATE ASSAY (%Cu) 139 Figure 16 - Frequency Distribution of Tails Copper Assays FREQUENCY DISTRIBUTION Of TAILS ASSAYS (shift averages) 0.5 0.75 1 1.25 1.5 1.75 2 2.25 2.5 2.75 3 3.25 3.5 3.75 4 TAILS ASSAYS (%Cu) E. H ISTORICAL DATA The concentrate and tails stream assays for January 1 to December 31, 1988, were used for comparison to get an approximate estimate of the expert system's performance. The trajectories of the assays and their frequencies are contained in this section. There are only 350 data points for the year, 16 data points (16 days) were not available due to the on-stream analyzer being out of service. 140 Figure 17 - 1988 Copper Concentrate Assay Trajectory Historical Circuit Assays -1988 3 o CO < CD CO ••—• c <D U c o o T 100 200 Time Intervals (daily) 400 Figure 18 - 1988 Copper Tails Assay Trajectory Historical Circuit Assays -1988 o >» CO co CO < CO c T 100 200 300 Time Interval (daily) 400 Figure 19 - 1988 Copper Concentrate Frequency Distribution 24 24.5 25 25.52 6 26.5 27 27.528 28.52 9 29.530 30.531 31.5 32 32.5 33 33.5 34 Concentrate Assay (%Cu) Figure 20 - 1988 Copper Tails Frequency Distribution 0.50.75 1 1.25 1.51.75 2 2.252.52.75 3 3.253.53.75 4 4.254.54.75 5 Tails Assay 142 Additionally, the data for 1988 were screened so that the feed assays more closely resembled those found during the validation period. Circuit feed during the validation period was within 2 1 % and 2 5 % copper and 2 3 % to 26% iron. By removing data beyond these limits the 1988 data was reduced down to 132 points, a reduced sample size but more comparable. A comparison of the feed assays is shown in Table Vl l l illustrating the lead, copper and iron assays for the validation period, for all of 1988 and for the selected data from 1988. Table Vl l l - Feed Stream Comparison Assay Stream (Feed) % P b mean std dev % C u mean std dev % F e mean std dev Expert Sys All 1988 select 1988 .687 1.459 .559 .843 .60 .750 22.79 24.67 23.58 1.35 2.19 1.19 24.95 24.41 24.48 1.23 2.57 1.11 A synopsis of the data collected during the validation period and that retrieved from the circuit's performance in 1988 is summarized in Table IX. e IX - Performance Synopsis Assay Stream Arithmetic Mean Standard Deviation Mode Concentrates Expert Sys 28.8 1.25 28.0 All 1988 27.7 1.65 28.5 select 1988 27.5 1.78 -Tails Expert Sys 2.20 0.47 2.25 All 1988 2.18 0.69 2.0 select 1988 2.10 0.88 -143 V. DISCUSSION The purpose of the expert systems project was to investigate the expert systems technology by applying it to a specific mineral processing application. To this end, the copper flotation experiment was conducted, with the results as presented in the previous chapter. The development and implementation of the expert system highlighted not only its usefulness as a tool for the control of the copper flotation circuit, but also some strengths and weaknesses of the expert system technology. In this section experiences in knowledge engineering and problems that were encountered during experimentation will be discussed. Also d iscussed will be the specific results from validation trials and some general commentaries on expert systems. A. KNOWLEDGE ENGINEERING Knowledge engineering is primarily the process of soliciting information from the experts and encoding it into the knowledge base. Knowledge solicitation for the copper circuit experiment was attempted mostly through interviews and quest ionnaires. Knowledge encoding was performed through BRAIN (the interactive version of S U P E R I N T E N D E N T ) using both production rules and SUPERINTENDENT'S action language. Knowledge engineering was conducted to find out how the operator ran the circuit. This knowledge would then be used to manipulate regulatory controller setpoints. Conventional supervisory control would have to account for process lag times in response to control action, however, this was not specifically taken into consideration by the operators and as such was not specifically built into the 144 knowledge base. Through their heuristics the operators account for non-linearities and process lag times inherent in a flotation circuit. 1. K N O W L E D G E SOL IC ITAT ION Four methods of solicitation were used in an attempt to capture the knowledge of the experts. The first attempt was through observations of the expert in action. The second method took the form of various types of interviews held with the operators; the third was hands-on operation; the fourth was an operations questionnaire and a call for comments on a preliminary operations procedure (refer to section E on Knowledge Engineering). The four methods were used to assess the strengths and weaknesses of each so that in future expert systems projects only the most effective methods need be employed. Attempting various methods of knowledge solicitation allowed the merits of one to be weighed against the merits of the others. It was found that by far the most effective form of knowledge solicitation for the operation of the copper flotation circuit at Brenda was via the spoken interview. The interviews were held in the control room, in a relaxed informal manner, where the experts were in a familiar environment and could use familiar "triggers" to help them remember how they solved operating problems. 2. K N O W L E D G E ENCODING The knowledge base had to be developed within the limits of the shell (SUPERINTENDENT) , using both production rules and the shell's action language. The shell had restrictions on the size of each of its "subjects" that forced the division of the knowledge base into a number of smaller "subjects". Each of the separate subjects contained specific portions of the total knowledge that had to be accessed as required. The design of the S U P E R I N T E N D E N T was such that each subject was totally independent; rules were not shared and more importantly, the order in which the subjects were executed appeared random. There was also no convenient method of forcing an order. Complications arose because of the division of the knowledge into multiple subjects and the seemingly random access of them. It was not possible to divide the knowledge into subjects that were totally independent. In the description of the knowledge base (see the DATA A N D R E S U L T S section) it is shown that the knowledge base is subdivided into assay retrieval, xanthate control, column control, etc.. These blocks were not independent; each block of knowledge was dependent on the state of the circuit, as determined through the assays. The knowledge was divided into blocks because of the limits placed on the size of the individual S U B J E C T S . The assays were read, and the state of the circuit determined, in a specific subject. If this subject were not executed first, the knowledge in the other subjects would have nothing on which to base their conclusions. The assays had to be retrieved first, then suitable control action could be determined. Control action taken by the operators never included manipulation of all control variables at once. They manipulated one at a time. They also never adjusted the same variable until it reached its limit before adjusting any of the others (as did Hales [1989]). They adjusted a variable and if the process appeared to be going in the right direction they adjusted it again, otherwise they adjusted one of the others. This type of knowledge is procedural and required a complicated set of flags and checks to ensure its proper execution. Thus, the production rules divided into independent S U B J E C T S had to be supplemented by flags that could be passed between S U B J E C T S to ensure they executed in the correct order. The handling of the flags, was done through the action language of SUPERINTENDENT. The difficulty in putting procedures into the knowledge base was overcome, but the exercise put the design of the knowledge base in question. Was this knowledge actually as procedural as it appeared? or was it procedural because the mind of a computer programmer thinks in terms of procedural programming? Were the problems encountered because of the procedural thinking of the knowledge engineer, or because of the actual knowledge? If, in fact, control knowledge requires the incorporation of procedures, then shel ls based on production rules have to have this capability built-in. If not, then knowledge engineers who are also versed in programming conventional languages have to be wary of the pitfalls of trying to incorporate this style into knowledge bases. There is one more consideration in the design of the knowledge base and structure of the software that is noteworthy. In the experiment assay validation and balancing was performed prior to the data being forwarded to the expert system. The validation of the data was done through IF-THEN statements in F O R T R A N . For completeness, and organizational simplicity, it would have been better to have had the assays validated through the expert system, and not externally. The expert system should have been able to execute the material balancing program from within itself once the assays had been validated. Unfortunately, the selected shell did not offer this capability. B. E X P E R I M E N T A L DIFFICULTIES There were a number of problems that occurred over the course of system development and testing. The problems took on three forms; process, control, and software. The process problems were only significant once the implementation of the control system was attempted. The majority of the software problems, on the other hand, affected the development phase. The problems classified as control affected both the development and the implementation phases. 1. P R O C E S S P R O B L E M S Some process and mechanical disturbances had large effects on the performance of the expert system. When large disturbances were introduced to the circuit the control system had to be assisted by the operator. The most notable occurrences were when production from the primary grinding line was reduced (due to maintenance shut downs for example). After a significant lag-time, in the order of hours, the effects of reductions in the feed rate to the copper flotation circuit were noticed. The operators helped the control system by manually adjusting the xanthate setpoint. This manual aid to the control system could be alleviated by using some type of feed forward calculation to manipulate the reagent dosage based on the grinding line's production at some lag-time in the past. This would require mass flow estimates of the entire plant preceding the flotation circuit. This mass flow modelling would be a considerable undertaking and was beyond the scope of this project. Other disturbances such as the mechanical failures of the on-stream analyzer or flotation cells could not be dealt with by the control system. On days of prolonged periods of these mechanical failures control data were discarded. 2. S O F T W A R E P R O B L E M S Problems were encountered with the expert system shel l , with the integration of the custom programs and O N S P E C , and with the communication between the various programs to the printer. The printer problem was not so much a bug in the program as it was a shortcoming of the single-printer/multiple-program configuration that was used. Printing messages to the printer using O N S P E C , S U P E R I N T E N D E N T , and F O R T R A N proved to be a coordination problem. When the F O R T R A N program L O G N F L G opened the printer to print the hourly logs it was unavailable to all other programs until the F O R T R A N routine was exited. To stop O N S P E C from terminating on a "printer unavailable", all O N S P E C messages had to be cancelled or routed to the second, vacant, printer port. To stop S U P E R I N T E N D E N T from terminating on a "printer unavailable", S U P E R I N T E N D E N T messages were queued and dumped all at once at a time that the printer was known to be available (directly after inferencing and before L O G N F L G was restarted). The integration of the custom programs and O N S P E C was a problem that was never completely resolved. Problems first emerged while running O N S P E C (and O P T O M A N , etc.) and S U P E R T R E N D S alone, without any custom routines. While in S U P E R T R E N D S access to the screen would be lost, occupying one of the four available windows until the system was reset. O N S P E C itself would 149 occasionally lose control of the keyboard, not allowing any keyboard interaction, though apparently still controlling the PI loops satisfactorily. The problem with S U P E R T R E N D S was avoided by not running it at any time. The problem with O N S P E C was never resolved. A third problem arose while integrating the F O R T R A N and BASIC programs with O N S P E C and S U P E R I N T E N D E N T . While loading one of the programs, typically the BASIC program, the machine would report: BAD O P C O D E F R O M "filename" at xxxx=xxxx HIT ANY K E Y TO CONTINUE where the xxxx represents hexidecimal codes presumably pointing to memory locations. The computer would abort the loading of the program but attempt to continue running the other programs. Most of the time the program being loaded would be the only program aborted, it would never be able to load properly until the computer was reset. Occasionally, other programs, including O N S P E C would be corrupted and would also abort. Having programs such as O N S P E C or O P T O M A N , or any other critical program, abort halted control (controller outputs were frozen at their last positions) until the system was reset. Lastly, program bugs were found in BRAIN, the development program of S U P E R I N T E N D E N T . According to the technical service representatives at HEURISTICS (the developers and vendors of SUPERINTENDENT) the problems with the version of S U P E R I N T E N D E N T that was being run was that internal pointers got confused when "too many" additions, deletions, and corrections were made to the knowledge base. Additionally, there was only a fixed number of action language statements permitted, and the total number of lines counted by the system never decreased, even when action lines were deleted. If "too many" action lines were added and deleted, all the available slots could be used even if the 150 actual number of lines was well below the maximum. The maximum was 255, and was reached even when the total physical line count was less than one hundred. When the internal pointers got corrupted BRAIN incorrectly linked together randomly selected rules and rule statements. Addition of a statement to a rule could cause the same statement to be added to a totally unrelated rule. The added statement may even overwrite an existing statement and completely change the logic of the rule. The statement could then not be removed from the knowledge base unless both rules were erased and reentered under different names. Sometimes even renaming the corrupted rules did not clear the problem. In some instances "dummy" statements had to be added to the rule to circumvent the unwanted additions. The problem was never corrected and could only be tolerated and worked around. A repercussion of these "phantom links" is that any additions, deletions, or modifications to the knowledge base had to be done very carefully. Checks had to be done to all rules in the S U B J E C T , even those supposedly not altered, what worked before the modifications were made did not necessarily work after the modifications were made. When links occurred they were difficult to work around and even more difficult to remove. They presented a barrier to knowledge base modification. 3. CONTROL PROBLEMS The control problems include those problems associated with direct control of the process (using the A S T computer running O N S P E C ) . Initially, the pulp levels in the four columns were to be controlled, and manipulated, through the expert system. Using the microcomputer for regulatory control of the column levels, however, proved to be unsatisfactory. Firstly, operating experience at Brenda has shown that pulp level control in the copper columns requires a control loop that executes on a relatively frequent basis; two second control was satisfactory. Through the microcomputer the fastest time between executions of the PI control loops was found to be ten seconds. The length of the delays between controller actions lead to very poor level controller performance. Secondly , and more importantly, the columns were very sensitive to disturbances in the control action. An intermittent hardware/software problem existed in the microcomputer system. The cause of the problem was never isolated, but was thought to be an incompatibility problem between the operating system ( C O N C U R R E N T DOS) , O N S P E C , and the compiled BASIC program, G E T A S S A Y . The problem was significant because it resulted in either the keyboard being locked-out, or what appeared to be corruption of the system memory. To solve the problem the only recourse was to shut down, and restart, the computer and control programs. On average the computer had to be rebooted once a day and this is while the system was on-line, in control of the process. During computer reboot the positions of the control valves remained fixed, until O N S P E C started to load; then the valves positions were zeroed (valves wide open or completely shut). Control action resumed once O N S P E C , and its associated control programs, were fully loaded and running. Zeroing control valves for the reagent or air control loops created circuit disturbances whose magnitude was significant, but small enough that the controllers were able to have the process back at setpoint within three minutes. Zeroing the column level control valves, however, had catastrophic effects. The zero position of the level control valves was completely shut. While closed all the column feed reported to the column concentrate, and solids settled into the lower cone of the column. Because the sparger air was simultaneously lost during a computer reboot, the solids in the column had a very good chance of settling and plugging the tailings discharge line. Stable pulp level control took a long time to be reestabl ished, with or without the columns plugging. The problem was compounded because of the series configuration of the three cleaner columns. Down-stream fluctuations were exacerbated until the upstream columns were stable. Satisfactory pulp level control took on the order of half an hour to achieve if supervised by the operator, and significantly longer if left to correct itself. The solution to the pulp level control dilemma was to leave the level control on the CP250 and to issue messages to the operator, from the microcomputer, suggesting setpoint changes. It was the responsibility of the operator to respond to the suggestions. C. QUANT ITAT IVE A S S E S S M E N T O F R E S U L T S The results from the validation period can be considered on two levels; the assay by assay control performance, and the overall circuit performance while the expert system was running. It would be exhaustive, and monotonous, to describe the performance of the expert system in minute detail for each of the fifty-four shifts. The controller actions will, however, be detailed for one day to show that actual control was taking place. 1. DETA ILED C O N T R O L ACT ION The particular day chosen for analysis is February 5th. Data for this day illustrate, quite clearly, the manipulation of the xanthate, the scavenger air, and the 153 column air, while also illustrating their effects on the metallurgical performance of the circuit. Figure 10 shows the concentrate and tails trajectories for their copper assay versus time for February 5. Figure 11 shows the trajectory of the xanthate addition rate for the same period. Between periods 1 to 4, the tail assay was high and so was the concentrate assay. The xanthate was being increased to reduce the tail. Between periods 4 to 7, the tail was okay, but the grade was low. The xanthate was being decreased to correct the concentrate assay. Between periods 7 to 11, both the tail and the concentrate were okay (the concentrate does go low once), but the xanthate was still being decreased. This is because the single occurrence of the low concentrate assay and the fact that the iron assay in the concentrate is higher than the copper assay. Between periods 11 to 17, the tail was okay, the concentrate okay and the xanthate stable. The tail went high again between periods 17-26, so the xanthate was increased correspondingly. The day ended with the tail being less than setpoint and the concentrate greater than setpoint. The xanthate was stable. Not shown on the figure, but seen in the data (Table VII), is a decrease in the column air flow. The decrease corresponds to a low concentrate and low tail assay at period 10. The controller is attempting to "slow the circuit down" to increase the concentrate and tail assay. Also seen in the data are increases in the scavenger air at periods 20 and 25. These increases correspond to high tails assays and represent the controllers second attempt at decreasing them. The scavenger air increases are preceeded by xanthate increases. The controller interprets the xanthate additions (at periods 19 and 24) as failed corrective measures and uses the second stage of corrective action to deal with the problem. The results at period 26 and 27 indicate that the sum of the corrective measures were effective and had returned the circuit to satisfactory performance (tail and concentrate grades that are better than setpoint). 2. C IRCUIT P E R F O R M A N C E Examination of the performance of the expert controller during the validation period is best done by considering the trajectory of the assays, their deviations from the respective limits, and their frequency distributions. The arithmetic means of the data, and their respective standard deviations, may be obtained from the trajectory data. The mode of the data may be obtained from the frequency data. The mean of the concentrate assays was 28.8%, with a standard deviation of 1.25%. The mean tails assay was 2.2%, with a standard deviation of 0.5 (table VIII summarizes the means, standard deviations, and modes). The trajectories of the concentrate and tails assays for the shift averages indicate good circuit behaviour. Figures 12a and 12b illustrate the data for the concentrate and tails, respectively. The assays reported for the concentrate appear to be, on average, greater than setpoint, while those reported for the tails appear to be, on average, lower than setpoint. The same data can be viewed from a different perspective by considering its deviations from setpoint. The trajectory of the assay's deviation from setpoint, as shown in figure 13, indicates that the majority of the time the concentrate and tail assays were better than setpoint, as initially surmised. Higher concentrate assays, and lower tail assays, are shown in the positive region of the histogram. Lower concentrate assays, and higher tails assays, are shown in the negative region of the histogram. During the time between periods 10 and 20, approximately, the circuit's 155 performance is poor. The concentrate assay is low and the tail assay is high. Because the controller performed well before, and after, this period it is suggested that the poor performance is attributable to a change in ore type to one that was metallurgically more difficult to process. This hypothesis is mildly supported by feed assay data as shown in figure 14 (also see appendix 8) which indicate rapid drops in the C u and Fe assays in the feed during this same period. The poor performance may also be attributable to a change in the final grind from the regrind mill a poorer grind would deteriorate the metallurgy of the circuit. There is no data to support, or refute, this theory however. The frequency distribution for the concentrate assays (figure 15) indicates that most of the assays were in the deadband region of 28 to 30 percent copper. The lower limit was the minimum operating target, and so was labelled the "setpoint" by the operators. The mode of the data is 28.0%. Of the 54 sample points only one was at the minimum of 27%, with only seven between 27.5% and 28.0%. The distribution is skewed toward 28%, tapering off quickly at 27%, but tapering slowly to 32% at the high end. This data shows that the expert controller was able to maintain adequate copper assays in the concentrate throughout the validation period. The frequency distribution for the tails assays (figure 16) shows a much more even distribution than the concentrate assays. The mode of the data is 2.25%, with the minimum being at 1.25% and the maximum at 3.5%. This histogram is a bit misleading however, as the upper end of the deadband (on the tails assay) was changed during the validation period. Approximately half the data correspond to an upper limit on the deadband of 2.4%. For the remainder of the time it took on the values 2.8%, 2.7% and 2.5%. The lower end of the deadband was fixed at 2.0%. As the operators strived to attain the upper limit of the deadband range, it was deemed the target, or setpoint, for the tails assays. The effect of changing the upper limits on the deadband was the width of the frequency distribution. Figure 13b shows the frequency distribution for the absolute values of the deviations (from the upper limit of the deadband). This figure is narrower than the distribution of the assays alone illustrating the effects of the changing boundary on the desired tails assay. The width of the band, that includes only those with higher membership, is 0.75% and 1.25% for the deviations and the unaltered assays, respectively. It is interesting to note the mode of the tails deviation is 0.5%. The standard deviation on the assay measurement of the tails stream (as reported by Brenda's analytical lab) is also 0.5%. The standard deviation of the concentrate assay is 0.7% and is much less significant compared to the 28.8% average. The fact that the mode of the deviations is the same as the standard error reported on the assay measurements illustrates the difficulty in precisely controlling a process on an "imprecisely" measured variable. However, despite the relatively large standard deviation on the tail measurement, it appears that the expert controller was able to maintain adequate copper levels in the tails stream throughout the validation period. 3. H I STOR ICAL C O M P A R I S O N A comparison of the circuit's performance under expert system control to the circuit's historical performance under regulatory control has to be effected with caution. Unknown, or unmeasured, differences in the circuit, namely the ore type, may affect its metallurgical performance and mask the effects of improved control. To compare the concentrate and tails assays and assume that all else is equal may, or may not, be a valid assumption. For the sake of an approximate comparison, the assumption of all else being equal shall be made. Figures 17 to 20 show the circuit's performance for the year 1988. Figures 17 and 18 are trajectories of the assays, and figures 19 and 20 are their frequency distributions. The arithmetic mean for all 1988 (as shown in Table IX) is, for the concentrate copper assay, 27.7%, its mode is 28.5%, and its standard deviation is 1.65. The arithmetic mean for the tail assay is 2.2%, its mode is 2.0% and its standard deviation is 0.7%. The two trajectories show the steady decaying of the circuit's performance (supposedly due to steady changes in the ore type). The concentrate assay is decreasing steadily while the tails assay remains virtually unchanged. Compared to the validation period, the mean of the concentrate for 1988 and selected 1988, is lower than that under expert system control and the standard deviation is higher (refer to Table IX). The mean tails for the three data sets are similar, but again the standard deviation for 1988's tails assays(complete and selected) are higher. The mode of 1988's concentrate assays however is slightly higher than that for the expert system (0.5%). Similarly, the mode for the tails assay is slightly lower for the 1988 data than it is for the expert system (0.25%). The differences in the modes indicate that the circuit was more likely to run at a higher concentrate and lower tail assay under regulatory control than expert system control. But, when the equal, or better, means and standard deviations while under expert system control are considered, one has to assume that when disturbances hit the circuit under regulatory control they had a much more extreme effect than while under expert system control - the expert system must tend to dampen the affects of process disturbances. 158 For the selected portion of 1988 the mean copper concentrate assay is 27.5% with a standard deviation of 1.78%, and a mean tail copper assay of 2.10%, with a standard deviation of 0.88% (see Table IX). A statistical comparison of the concentrate and tailings means using a student t test, at 95% confidence, indicate that the copper concentrate is better and the tails equal under expert system control as compared to the selected 1988 data. The selected 1988 data, as mentioned in the results section, was based on selecting data with comparable feed assays. The means and variances of the feed data for the lead, copper and iron were compared and found to statistically equal. Hence, variations found in the performance of the circuit were more likely to be due to factors other than feed effects. Given that feed effects were removed the circuit still performed better under expert system control than under the conventional control. The copper grade is approximately one percent better, with less variation, while still maintaining statistically equal copper tails assays. The comparison between historical data, and the data collected while validating the expert system, has indicated that the expert system performs better than the previous methods employed. The expert system caused better overall metallurgical performance with the concentrate assays averaging higher, and tails assays averaging lower. The variations while under expert system control were also less extreme. D. QUAL ITAT IVE E X P E R I M E N T A L A S S E S S M E N T The experiment was not judged solely on its quantitative merits. The experts were given an opportunity to add their comments, and the knowledge engineer his. 159 1. O P E R A T O R A S S E S S M E N T The long term use of any control system depends in part on the acceptance by the operators. A control system rejected by the operators will be bypassed and eventually shut off. However, a system that is accepted by the operators will not only continue to be used, but will be enhanced as they offer constructive criticism on how it could be improved. The expert system at Brenda appeared to have operator support. To quantify the level of support, eight of the operators were given questionnaires soliciting responses to that end. Figure 8 contains the questions off the questionnaire. The responses are summarized in table V and figure 9. The consensus was by far favourable, with only one negative response. Unanimously, the operators indicated that they thought the program was controlling the circuit adequately. All but one thought that the program was controlling better than the regulatory control previously used. They unanimously liked the operator interface, liked the method of interacting with the program (to indicate unmeasurable conditions), and would rather have the program left in place than removed. Upon further questioning, the operator that felt the program did not control better than regulatory control felt that it at least controlled as well. It is felt that the operators liked the control program for a number of reasons, relating to both the interface and the control. They liked the interface because it gave clear, and concise, information about the process. Displays were easy to read and, through the use of the customized function keys, easy to select. The use of the function keys also simplified manual setpoint changes when operator intervention was necessary. This illustrates the point that though "bells and whistles" are not necessary for control, they are helpful in gaining acceptance of the control system. 160 The operators also liked the control system because of its control capabilities. Having the computer control the circuit relieved the operator of the constant monitoring and adjusting necessary to maintain acceptable metallurgical performance. The operator was free to spend more of his time at his other duties. However, the program did not allow him to ignore the copper flotation circuit entirely, he still had to check the circuit occasionally, but certainly much less frequently than before. The less experienced operators, though not formally asked for their opinions, also accepted the control system and appreciated its collective knowledge in running the circuit. Brenda's Mine Manager, in an unsolicited written note of appreciation (see appendix 4), makes the comment that "not only does this Expert Control System make the operation easier but it also results in improved economics." Though the operators unanimously stated that they liked the interface, observations, and the data, indicated that they did not make use of the process indicator flags and more importantly, only sometimes paid heed to the suggestions made by the expert system. The process flags were designed to adjust the variables in response to various process conditions. The operators preferred to adjust the setpoints to the various controllers directly (eg.the process air to the columns) rather than set the respective flag and let the system do the adjustment. The system made suggestions for adjusting the wash water, the "pan" on the third cleaner, and the levels on the columns. The fact that the column levels were only adjusted once during the validation period shows that the operators did not heed the suggestions, and that the manipulation of column level is perhaps not as important a control parameter than originally thought. Circuit control was adequately maintained without level manipulation. Wash water suggestions and "pan" suggestions were acted on occasionally but not consistently. Operator indifference to these suggestions may be due to either inappropriate suggestions on the part of the expert system, but more likely due to inattention of the operator to system messages. The messages were printed to the printer in the control room. The flotation operator would have to go to the control room, read the message, then return to the circuit to initiate the changes. The "extra effort" on the part of the operator is considered to be the primary reason most of the suggestions were not acted upon. 2. ADDIT IONAL F E A T U R E S The expert system shell used in this experiment was a fairly rudimentary one that did not allow many of the capabilities that are commonly associated with expert systems. In his paper on expert systems Stefik et al.[1982] outlined the need for handling fuzzy data, meta rules, and uncertainty as requirements of expert systems. Moore [1985] also stipulates that an expert system for real-time applications should be able to focus on pertinent knowledge and be able to dynamically change its inferencing paradigm. S U P E R I N T E N D E N T has none of these capabilities. What S U P E R I N T E N D E N T was capable of included knowledge representation through rules, backward chaining for inference and the inclusion of deep knowledge (through external routines accessed through O N S P E C , a feature not implemented in this application). Through O N S P E C , S U P E R I N T E N D E N T also had a good user interface. 162 VI. S U M M A R Y AND C O N C L U S I O N S This research effort was aimed at addressing the potential of expert systems technology in the control of mineral processing plants. In this thesis an overview of some of the more salient aspects of artificial intelligence (Al) is presented, including an indepth review of the expert systems technology and a review of industrial applications, with a comprehensive review of applications in mineral processing. Finally, the development and implementation of a real-time expert system for control of a flotation circuit is detailed. The requirements for a real-time expert system differ from those for an off-line system. Real-time systems have to monitor, and infer from, timely process data. Process data is often characterized as being noisy and incomplete; features have to be built-in to deal with this. More importantly, the expert system must be capable of fast and efficient knowledge searching; the system must be able to keep up to the process. To this end, a real-time expert system has to be able to deal with uncertainty in the data, and must be able to infer quickly and efficiently. The real-time expert system was developed and applied for real-time control of the copper flotation circuit at Brenda Mines Ltd.. The system was developed on a microcomputer and used an input-output subsystem to interface to the process. The expert system was developed as a supervisory routine that monitored the circuit, based largely on assays received from an on-stream analyzer, and adjusted regulatory controller setpoints as necessary. The control software used was O N S P E C and it included it's expert system shell, S U P E R I N T E N D E N T , capable of on-line, real-time supervisory control. Knowledge for the knowledge base was gleaned from the flotation, and control room, operators at Brenda Mines, but also included experience learned first-hand through actual operation of the circuit. The 163 knowledge base consisted of over a hundred rules, and a hundred conditional statements in the shell's Action Language (effectively, over two hundred rules). The execution of the knowledge base took between 10 seconds and 2 minutes, depending on the inferencing path. The expert system ran on-line in the Brenda concentrator for a period of fifty-four twelve hour shifts. The results from this on-line validation period indicated that the expert system could indeed control the circuit based on process assays, and on operator input. The operators found the expert system easy to use and regarded its control performance as either good or, at least, satisfactory. Average metallurgical performance for the circuit exceeded target values during the validation period. In a crude comparison to the circuit's performance in 1988, the results indicate that the expert system attained higher copper percentages in the concentrate stream, with similar copper percentage losses in the tailings stream. The average copper assay in the concentrate stream, while the expert system ran, was 28.8%, while 1988's average was 27.7%. The copper assay in the tailings stream was 2.2% for both periods. The variation in the copper assays (as measured by their standard deviations) in both the concentrate and tailings streams was less while the expert system ran than they were in 1988. This comparison was qualified by the effects associated with changes in ore types between, and during, the two periods. In conclusion, expert systems do have considerable potential in real-time mineral processing applications. Mineral processes are often characterized by a lack of sensors or reliable measurements, and by non-linearities in process behaviour. Expert systems offer a means whereby sensor data may be checked, where control may be implemented in areas without reliable sensors and where control may be implemented in processes characterized by the non-linearities. Operators ran mineral processing plants long before computers and sensors were available. They applied non-mathematical, qualitative solutions to process problems. By applying these operating heuristics expert systems can be used to control operations previously too difficult or impossible to control by conventional methods. Expert systems are not the first attempt at capturing operators knowledge on computer. The recent interest in the expert systems was preceeded by tried and tested applications of computerized operating practices using conventional programming languages. The grinding circuit at Brenda Mines Ltd. was cited as an example of early efforts in capturing operating knowledge. Expert systems now offer a more elegant means through which this operating knowledge may be captured. Though seen to be a potentially useful tool for control of mineral processing plants careful consideration has to be given to the characteristics of the intended domain. How fast are responses required? Is procedural knowledge used? The requirements of the domain have to be weighed against the features of the available expert system shells. As the old adage says, "use the right tool for the right job". Do not attempt to force-fit an expert system into an application where a conventional, mathematically oriented program would be better suited. The application to the Brenda copper flotation circuit was successful. Real-time supervisory control was achieved and was shown to be at least as good as the operator maintained, regulatory control system previously used to in the flotation circuit. 165 VII. S U G G E S T I O N S FOR F U T U R E W O R K Expert systems have been shown to be useful in a number of different mineral processing applications. Examples have been seen in alarm handling, crushing, grinding control, and now in flotation control. However, an expert system has yet to be shown applicable for complete plantwide control, that is for all of the above applications in a single installation. Have expert systems not been used for total plantwide control because of technical reasons (too large a knowledge base, too slow a computer)? Or have they not been applied to plantwide control because most work to date is in prototype systems only? A great deal of promise has been shown by the upper end of the on-line expert system products. Spring and Franklin [1990] speak highly of G2, a real-time expert system running on a D E C 3500 and tied to a Fisher Provox distributed control system. Is G 2 capable of plantwide control, or is plantwide control still too much of an undertaking for even one of the more capable expert system shells? Is it practical (in terms of cost versus performance) to run a large expert system shell on the available hardware? For future work consideration should be given to the application of one of the more capable expert systems on the market, namely G2 , to find out whether expert systems technology is a practical solution to plantwide supervisory control. Can a single shell, with a single knowledge base, be effectively developed and managed to perform both on-line alarm handling and on-line supervisory process control from grinding through to flotation? Do expert system shells have too much computing overhead to be able to cope with such large real-time problems? The ultimate goal of expert systems control has to be plantwide control, is it possible using today's state-of-the-art technology? 166 R E F E R E N C E LIST Astrom K.J . , Anton J . J . , Arzen K.E., Expert Control, Automatica Vol 22 1986, pp 277-286. Bailey S . J . , Artificial Intelligence in Industry: Expert Knowledge Bases in Control Loops, Control Engineering, Dec. 1986, pp 45-48. Barber G . , The LISP vs. C Debate, Unix Review, August 1987, pp 43-46. Barr A. , Feigenbaum E. A., The Handbook of Artificial Intelligence Volume I, William Kaufmann, Inc., 1981. Basta N., Vshio S. , Short H., Johnson E., Expert Systems: Thinking for the CPI , Chemical Engineering, March 1988, pp 26-29. Baur P.S. , Misperceptions, Payback Dileminas Impede Expert System Use, InTech, April 1987a, pp. 29-30. Baur, P .S . , Development Tools Aid in Fielding Expert Systems, InTech, April 1987b. Boettcher W.E . , Herb S .M. , Artificial Intelligence for Distributed Control, Southern Pulp and Paper, April 1986. Bradburn R.G. , Flintoff B.C., Walker R.A., Practical Approach to Digital Control of a Grinding Circuit at Brenda Mines Ltd., Trans, of AIME, vol. 262 pp 140-147, June 1977. Bascur O.A., Expert Process Operation Advisor, Presented at the Annual Meeting of the AIME 1989. Burrows M.J. , Carriere J.D., Leung J . , Laguitton D., An Expert System Designed to Improve Reliability of Assay Information in a Flotation Plant, Proceedings - 21st Annual Meeting of the Canadian Mineral Processors, CIM, Ottawa, Ontario, 1989. Bowerman R.G. , Glover D.E., Putting Expert Systems into Practice, Van Nostrand Co. , NY, 1988. Chapman R. revisor, Roget's Thesaurus, Fourth ed., Fitzhenry & WhiteSide, 1977. Cooper G . , Burlinson, M., Developing Expert Systems: What are the Problems? The B.C. Professional Engineer, December 1989, pp. 30-32. Corsberg D., Alarm Filtering, Practical Control Room Upgrade Using Expert Systems Concepts, InTech, April 1987, pp 39-42. 167 Darius I.H., Vion J . P . , Rule Based Control: Using Process Knowledge for Better Control, ISA, Paper No. 87-1140, 1987. Davis D.B., Artificial Intelligence Enters the Mainstream, High Technology, July 1986, pp 16-23. de Wael L , Steps Towards a Methodology for Expert System Development: An Expert System for Diagnosis of Defects in Electrical Traction, Journal A , Vol 28, no.1, 1987. Efstathiou J . , Introduction to Expert Systems, Journal A, Vol. 27, No. 2,1986, pp. 57-61. Emrich M., The Expert Friendly System, Manufacturing Systems, 1985. Fahrenkrog E., Cifuentes E.N. , Sbarbaro D., Expert Supervisor Prototype for a Crushing Plant, Paper presented at the Annual AIME Meeting, Las Vegas Nevada, Feb.27-Mar.2 1989. Finn G.A., Rule of Thumb for Implementing Expert Systems in Engineering, InTech, April 1987, pp. 33-37. Fisher P . G . , Morris A . J . , Application of Artificial Intelligence in the Process Industries, Dept. of Chemical Engineering University of Alberta, 1987. Flintoff B.C., Bradburn R.G., Mular A.L., Canadian Trends in the Control of Mineral Processes, Paper presented at Copper '87 conference, Vina del Mar, Chi le, Nov. 1987. Flintoff B.C. , Edwards R.P. , Neale A . J . , Real-Time Expert Systems in Process Control, Paper presented at the 12th CIM District 6 Meeting, Fernie B.C. , Sept.30 1988. Forsyth R. ed. , Expert Systems Principles and Case Studies, New York Chapman and H a l l , 1984. Fowler H. W., Fowler F. G . ed., The Concise Oxford Dictionary of Current English, sixth edition, University Press, Oxford, 1976. Garathwell, Simonett M., Artificial Intelligence: New Ways to Improve Efficiency, Process Industries, June/July 1987, pp. 15-17. Gevarter W.B. , Expert Systems Limited But Powerful, IEEE Spectrum, August 1983, pp. 39-45. Goff K.W., Artificial Intelligence in Process Control, Mechanical Engineering, Oct. 1985, pp 53-57. Guengerich, S. , A l System Cuts Plants Power Costs, P C Week, July 7 1987, 168 pp. 10-11. Hales L B . , Supervisory Control of Flotation Circuits, Advances in Coal and Mineral Proecess ing Using Flotation, Proceedings of an Engineering Foundation Conference, Dec. 1989, pp 298-302. Hales L B . , Herbst J.A., The Use of Expert Systems in Concentrator Control, Paper presented at the Annual AIME Meeting, Denver Colorado, paper no. 87-159, Feb. 23-27 1987. Hales L B . , Vanderbeek J .L . , Herbst J .A . , Supervisory Control of a Semi-Autogenous Grinding Circuit, International Journal of Mineral Processing, 22, pp 297-312, 1988. Hales L B . , Wardell D.G., Expert System Control of a Grinding Circuit, Mathematical Modelling of Materials Processing Operatons, ed. J . Szekely, et al. , T M S of AIME, pp 103, 1987. Hall R., Basic A l Applications Research: A Wait and See Game That May Backfire, Canadian Research, Volume 20 number 3, March 1987, pp22-23. Harmon P., Maus R, Morrissey W., Expert Systems Tools and Applications, John Wiley & Sons Inc., 1989. Harris C .A . , Kosick G.A. , Expert System Technology at the Polaris Mine, Proceedings - 20th Annual Meeting of the Canadian Mineral Processors, C IM, Ottawa, Ontario, 1988, pp 149. Harris C.A. , Meech J.A. , Fuzzy Logic: A Potential Control Technique for Mineral Processing, Paper Presented at the 87th Annual General Meeting of CIM, April 1987. Harris C , Woo E., Hall M., Miller R., Knowledge Acquisition Techniques for Expert Systems, Proceedings of the International Symposium on Processing of Complex Ores, Halifax, 1989, pp. 529-535. Harris C.A. , Woo E., Expert Systems: Application for Process Control, Paper presented at the First Canadian Conference on Computer Applications in the Mineral Industry, Quebec City, Quebec, March 1988. Harris L., Davis D., A l : What's in a Name?, Unix Review, Aug 1987, pp 33-37. Herbst J .A. , Pate W.T., Oblad A .E . , Experiences in the Use of Model Based Expert Control Sys tems in Autogenous and Semi-Autogenous Grinding Circuits, Advances in Autogenous and Semi-Autogenous Grinding Technology, ed. Mular A.L . , Agar G . E . , Proceedings of a Conference held Sept. 25-27, 1989 at the University of British Columbia, pp 669-687. 169 Hodouin D., Bazin C , Trusiak A., Reliability of Calculation of Mineral Process Ef f ic ienc ies and Rate Parameters From Ba lanced Data , Control '84, Mineral/Metallurgical Processing; Published by Society of Mining Engineers of the AIME, 1984. Hodouin D., Everall M.D., A Hierarchial Procedure for Adjustment and Material Balancing of Mineral Processing Data, Int. Journal of Mineral Processing, Vol.7, Sept 1980, pg 91-116. Hodouin D., Flament F., BILMAT - Computer Program for Material Balance Data Adjustment, the S P O C Manual, Chapter 3.1, C A N M E T , 1985. Hodouin D., Flament F., Frames for the Representat ion of Knowledge, Proceedings of the International Symposium on Processing of Complex Ores, Halifax, 1989. Kaemmerer W., Knowledge Acquisition Techniques for Expert Systems for Process Operations, ISA Paper #87, pp. 833-839, 1987. Kane L A . , A l and Map in the Processing Industries, Hydro Carbon Processing, June 1986, pp 55-58. Kohler J . L , Ramani R.V., Bieniawski Z.T., Expert Systems - An Overview and a Mining Example, Society of Mining Engineers of AIME, Colorado, 1986. Laffey T.J . , Cox P.A., Schmidt J.L., Kao S.M. , Read J . , Real Time Knowledge-Based Systems, A l Magazine, Vol 9, No. 1, pp 3-45, (1988). Laffey T., Gupta A. , Real-Time Knowledge Based Systems, Tutorial Program for the Eleventh International Joint Conference on Artificial Intelligence, IJCAI-89, 1989. Laguitton D., MATBAL - Computer Program for Material Balance Data Adjustment, the S P O C Manual, Chapter 3.2, C A N M E T , 1985. Laguitton D., Hodouin D., Material Balance Computation for Process Evaluation and Modelling, the S P O C Manual, Chapter 3, C A N M E T , 1985. Laguitton D., New Computer Technology Finds Application in Mineral Processing R. & D. at CANMET, Jan. 1987. Laguitton D., Expert Systems in Mineral Processing, Proceedings - 20th Annual Meeting of the Canadian Mineral Processors, CIM, Ottawa, 1988, pp 125. Laguitton D., Leung J . , Advances in Expert System Applications in Mineral Processing, Proceedings - 28th Annual Conference of Metallurgists, CIM, Halifax, Nova Scotia, Aug. 20-24, 1989. Martins G . R., Smoke and Mirrors?, Unix Review, Aug 1987, pp 34-35. 170 Meech, J . , Using G E N E X to develop Expert Systems, Computer Applications in the Mineral Industry, 1988, pp. 555-562. Meech, J .A . , Minex: An Expert System for Technical Qualitative Mineralogy, Processing of Complex Ores, Proceedings of the International Symposium on Processing of Complex Ores, Dobby G.S. , Rao S.R. ed., Halifax, Aug. 20-24,1989. Meech J . A. , Conflict Resolution and Knowledge Accumulation in Expert Systems, Processing of Complex Ores, Proceedings of the International Symposium on Processing of Complex Ores, Dobby G.S. , Rao S.R. ed., Halifax, Aug. 20-24,1989. Miller E., Wilson K., Lewis C , Expert System Shells: Do They Deliver What They Promise?, Chemical Engineering Progress, October 1988, pp. 37-44. Mishkoff H.C., Understanding Artificial Intelligence, Howard W. Sams & Co. , 1985. Moore R.L., Expert Systems for Process Control, Tappi Journal, Vol 68 No. 6 1985a, pp 64-67. Moore R.L., Kramer M.A., Expert Systems in On-Line Process Control, Expert Systems in Process Control, date unknown, pp 40-41. Moore R.L., Adding Real Time Expert Systems Capabilities to Large Distributed Control Systems, Reprint from Control Engineering Magazine, April 1985b. Musial J . , Fuzzy Logic, The Northern Miner Magazine, January 1988, pp. 68-71. Perkins D., On-Stream Analysis at Brenda Mines Ltd. - 10 Years Experience With A R L ' s P C X Q , Proceedings - 21th Annual Meeting of the Canadian Mineral Processors, CIM, Ottawa, Ontario, 1989. Porter B., Jones A .H . , McKeown C.B. , Real Time Expert Controllers for Plants with Actuator Non-Linearities, IEEE Proceedings 1987, pp 171-177. Radkewycz A. , A l : Anything We Can Do, They Will Do Better, Canadian Research, Volume 20 No. 3, March 1987, pp18-36. Rajaram N.S., Expert System Building Tools - Preset Trends and Future Needs, ISA Tranactions, Vol . 26 No.1 1987a, pp. 53-55. Rajaram, N.S. , Expert System Development: Current Problems, Future Needs, InTech, April 1987b, pp. 25-26. Reid K.J. , Smith K.A., Voller V.R. , Cross M., A Survey of Material Balance Computer Packages in the Mineral Processing Industry, Int. Symposium on the Application of Computers and Operations Research in the Minerals Industry; Published by the Society of Mining Engineers of the AIME, 1982 Ricketts G.V., How to do More in Less Time, Al Expert, Jan. 1988 pp. 46-52. 171 Rowan D.A., On-Line Fault Diagnosis: Initial Success and Future Directions, ISA -Paper #87-1212 pp 1211-1218, 1987. Sacerdoti E.D., Going Beyond the Buzzwords, Unix Review, Aug 1987, pp 39-41. Seymour J . , Debugging Al Myths, P C Magazine, Dec 1986, pp 95-96. Shaw M., Knowledge Acquisition Techniques for Knowledge-Based Systems, C S C S I '88, Proceedings of the Seventh Biennial Conference of the Canadian Society for Computational Studies of Intelligence, Goebel R. ed. , Edmonton Alta., 1988, pp. 165-176. Shirley R.S. , An Expert System for Process Control, Tappi Journal, May 1987, pp 53-56. Slocombe S . , Moore K.D.M., Practical Applications of Expert Systems Within B P , Presentation to the B P Technical Systems Conference, November 1986. Spring R.A., Edwards R.P. , Real-Time Expert System Control of the Brenda Mines Grinding Circuit, Paper presented at the AIME Annual Meeting, Las Vegas Nevanda, Feb.27-Mar.2 1989. Spring R., Franklin M., Humanizing Control System Programming, Noranda Technology Centre, Pointe Claire, Que,1990. Sripada N.R., Fisher D.G., Morris A . J . , A l Application for Process Regulation and Servo Control, IEEE Proceeding, Vol 134 No. 4 1987, pp. 251-259. Sripada N.R., Fisher D.G., Morris A . J . , Application of Expert Systems to Process Problems, Energy Processing in Canada, Nov-Dec 1985, pp 26-31. Stefik M., Aikins J . , Balzer R., Benoit J . , Birnbawm F., Sacerdot i E. , The Organization of Expert Systems, A Tutorial, Artificial Intelligence, Vol . 18 1982, pp. 135 - 173. Stephanopoulos G . , Chemical Process Control - An Introduction to Theory and Practice, Prentice-Hall Inc., 1984. Sugawara T., Extracting Rules From Data with Except ions, C S C S I '88, Proceedings of the Seventh Biennial Conference of the Canadian Society for Computational Studies of Intelligence, Goebel R. ed., Edmonton Alta., 1988, pp. 177-183. Tong R . M . , Beck M.B., Latten A. , Fuzzy Control of the Act ivated Sludge Wastemaster Treatment Process, Automatica, Vol. 16 1980, pp. 659-701. U.S. Bureau of Mines Staff, Targeting Automation in Mining and Processing, Engineering and Mining Journal, Nov. 1989, pp 56-61. van Lamsweerde A. , Dufour P. ed., Current Issues in Expert Systems, Academic Press, 1987. Volier V., Knight B., Expert Systems, Chemical Engineering, June 1985, pp. 93-95. Waterman D.A., A Guide to Expert Systems, Addison-Wesley, Ontario, 1985. Wiegel R. L , Advances in Mineral Processing Material Ba lances, Canadian Metallurgical Quarterly, Vol.11, No.2,1972. Wills B.A., Manser R.A., Reconciliation of Simple Node Excess Data, Inst, of Mining and Metallurgy, Vol.94, Dec. 1985, pg 209-214 Wyle S. , The Expert-Friendly System , Manufacturing Systems, 1988. Zadeh L , Making Computers Think Like People, IEEE Spectrum, August 1984, pp. 26-32. A P P E N D I C E S 1. SIMPLIFIED H A R D W A R E S C H E M A T I C S 2. MATERIAL B A L A N C E CALCULAT IONS 3. S A M P L E SIZE ESTIMATION 4. OPERATING QUESTIONNAIRE 5. S O U R C E C O D E 6. K N O W L E D G E B A S E DOCUMENTATION 7. OPERATING GUIDELINES 8. SHIFT DATA S U M M A R Y 9. DETAILED C O N T R O L ACTION 10. E X E R P T S F R O M MONTH END R E P O R T S A P P E N D I X 1 - SIMPLIFIED H A R D W A R E S C H E M A T I C S INPUT/OUTPUT LIST B O A R D POSITION A D D R E S S A - 6 4 x 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 B - C 8 x T Y P E Analog Output Analog Output Analog Output Analog Output Analog Output Analog Output Analog Output Analog Output Analog Output Analog Output Analog Output Analog Output Analog Output Analog Input Analog Input Analog Input 15 Analog Input 14 Analog Input 13 Analog Input 12 Analog Input 11 Analog Input 10 Analog Input 9 Analog Input 8 Analog Input 7 Analog Input 6 Analog Input 5 Analog Input 4 Analog Input 3 Analog Input 2 Analog Input 1 Analog Input 0 Analog Input DESCRIPTION level - #3 column level - #2 column level - #1 column air - regrind col air - #3 column air-#2 column air - #1 column air - scavenger MIBC - cleaner level - regrind col PAX - cleaner spare spare level - #3 column level - #2 column level - #1 column flow - Cu concentrate level - regrind col pressure - eye feed density - eye feed flow - eye feed flow - Cu tail air - scavenger PAX - cleaner MIBC - cleaner air - regrind col air - #3 column air - #2 column air - #1 column flow - Cu clnr feed density - thknr u/f power - regrind kw discrete 0 Discrete Input copper assays ready JUNCTION BOX LAYOUT V, m mm mmm*. • • panduit cable trays terminal blocks optical isolators OPTO -22 analog boards OPTO -22 digital board power suppies and fuses transfer relays analog output switching SIMPLIFIED I/O WIRING Computer to I/O Communications microcomputer opto card j serial comn^icat ions link OPTO-22 modules OPTO brain boards Typical Analog Output Schematic OPTO-22 analog outputs transfer relays from CP250 optical isolators terminal block l/P converters final control elements terminal block Typical Analog Input Schematic to CP250 analog inputs to OPTO-22 analog inputs Differential Pressure cell terminal blocks A P P E N D I X 2 - MATERIAL B A L A N C E CALCULAT IONS 179 THE MATERIAL B A L A N C E : The material balance problem has been well documented in the literature [Wiegel R.L., 1972, Wills B.A., 1985] and will be briefly dealt with here. A material balance is method by which extra, or redundant, data is used to calculate mass flows, assays , etc. around a circuit. Should a sampling campaign collect only enough data to minimally calculate the mass flows (i.e. n equations and n unknowns), a unique solution to the plant balance could be obtained, but the accuracy of the solution would be only as good as the accuracy of the single data set. On the other hand, if enough data is collected to over define the system, self consistency checks can be performed on the data, the reliability of the data could be estimated, experimental error could be estimated, and the balance would be less affected by data outliers etc.. Laguitton [1985] descr ibes a method for balancing redundant data using the method of lagrangian multipliers. A material balance calculated using an over defined system, is based on minimizing an "objective function" that equates process estimates and the raw data. The objective function is typically a generalized least squares, requiring an iterative solution to obtain a minimum. A typical least squares objective function is n m J = I (Xj-X A j)2+ I ( W j - W A i ) 2 1 i=1 i=1 where x is an assay type, w is a stream flow and n is the number of streams (the carat (A) indicates estimated values). An enhancement of the above objective function is the inclusion of weighting factors. Weighting factors are used to place more emphasis on the more reliable data, i.e. data that have lower error variances. Thus, the enhanced objective function, or the weighted sum of squares is as in equation, • _ y (xi-x,)2 f ( W j - W j ) 2 iff Var(Xi) ifrvar(wi) where Var(xj) and Var(wj) are variances of assay Xj or flow WJ. The problem is classified as a "constrained minimization problem" where J is minimized subject to circuit constraints. Generally, MIN {J(x,,w.,s)} minimum criterion, within Gi(x) = 0 constraints. The solution to this constrained minimization problem lies in the technique of Lagrangian Multipliers. The method of Lagrangian Multipliers is used to solve non-l inear optimization problems that must satisfy linear equality constraints. It is particularly well suited to objective functions that are second order since the solution set of equations is linear and can be solved directly by a number of conventional techniques. 180 The Lagrangian, L, is a combination of the residual least squares objective function and the linear constraints of the system. It is the product of the linear constraints and the Lagrangian Multipliers, lj, summed with the objective function, J . L = J + ( l i * G 1 + . . . + ln*Gn) 2 Consider a simple separator with one input and two outputs such as a flotation cell that floats a copper and molybdenum concentrate as shown in figure 1. F IGURE 1 - Simple Separator feed with mass flow rates F, C , and T and fj, Cj, and tj, for all assay types, i (i=2, Cu and Mo). The material balance can be written as, Ffi =Cc-\+ TU Ff2 = Cc2 + Tt2 and F = C + T 3 Assuming F, the feed mass flow, is known (i.e. 1 or 100%) and using the two product formula, two solutions to the above separator can be determined (one using the Cu assays (i=1), the other using the Mo assays (i=2). If the sample data, stream flows and assays, contained no error, then the two solutions will be one and the same. Unfortunately, all data is corrupted by error of one type or another so that the two solutions will differ from each other. A more correct form of the constraint equations are thus, (a) F f - ^ C V - ! + T Y i (b) F f 2 = CAcA2 + TAtA2 and (c) F = C A + T A 4 where the carat (A) after the symbol signifies an estimate of the true value of the variables. Consider again the simple separator of figure 1, and assume that assay samples have been taken for the feed, the tail and concentrate, and that measurements have been made on the tail and concentrate mass flows. The objective function then becomes, , = y (Hf , v (Ci-cj)2 f (tj-t,)2 (Tj-f;)2 f (Cj-Cj) 2 ifr Var(fi) -fT Var(c r) ft Varft) ft Var(Ti) ft Var(Ci) 5 By introducing the estimates of the measured variables into equations 4 the constraints (a) and (b) have been made non-linear (i.e. C q ,etc.)in terms of the estimated variables. To linearize these constraints a truncated Taylor Series expansion is used. The generalized truncated Taylor expansion is, f(x,y) - f(x,7) + fx'(x,y~)(x - x) + fy,(x,y")(y - y) 6 where fx' and fy' are the partial derivatives with respect to x and y, and the bars indicate the point around which the expansion made. The constraint equations 4 have to be set to zero, such that G1 = F f i - C V i - T Y i G 2 = F f A 2 - C A c A 2 - T Y 2 and G3= F - C A - T A 7 Linearizing using the truncated Taylor Series, G i - Ffi - C c i - Tti + F(fAi - fi) - C(c A i - c i ) - c i (C A - C) -T(tAi - ti) - t i(T A - T) 8 and similarly G 2 » Ff 2 - C c 2 - T t 2 + F(f A 2 - f2) - C ( c A 2 - c 2) - c 2 ( C A - C) -T(tA 2 -1 2) - t 2(T A - T) 9 182 10 Simplifying equations 8 and 9 results in, G i = Ff-i - Cc A-i - CAcT + Ccn - T ? i - rtT + Tti and G 2 = F f A 2 - C C A 2 - C AC2 + Cci - ftA2 - Tl2 + Tt2 The Lagrangian is then, L = J + h * G i + l 2 * G 2 + l3*G 3 12 To solve the Lagrangian for a single set of measurements (fi, ci , ti, C, T) the stationary point of L needs to be computed (such that the partial derivatives of L with respect to the estimated variables are zero). Thus, (letting 9 be the partial derivative operator) 2L =0 J)L =0 3L =0 9fi da dti dL = 0 2L_= 0 _2L = 0 aCi 3Ti dlj 13 for all i and j (i = assay type and mass flows, j = constraints) and, 3L = 2 ( f - ; - fO * ' 3fi Var(f,) 1 (b) | L = M + l 2 F = 0 9f2 Var(f2) <c) |L=?f^a+i1c=o 3ci Var(ci) ( d ) | L = 2 ^ ) + | 2 c = 0 dc2 Var(c 2) 183 (g) 9L = 2(C - C) 3C Var(C) hci - l 2 c 2 - 1 3 = 0 (h) aL = 2(T-T) aT Var(T) hti - l2t2 - b= 0 (i) ^=FU -Cc, -CcT + Ct i -Tel -Tt i +Tti = 0 1 (j) ^ = = F f 2 - C c ^ - C c i + C t 2 - T c 2 - T t 2 + Tt 2 = 0 ai2 (k) ^ = F - C - T = 0 14 The coefficients of the zeroed partial derivatives then form the coefficient matrix A, such that in matrix notation where A is the coefficient matrix, x is vector of estimated variables, and b is the vector of constants. For the example of the simple separator, equation 15 takes the form, matrix A of coefficients: 1 0 0 0 0 0 0 0 ai,9 0 0 0 1 0 0 0 0 0 0 0 a2,io 0 0 0 1 0 0 0 0 0 33,9 0 0 0 0 0 1 0 0 0 0 0 a 4 , i 0 0 0 0 0 1 0 0 0 35,9 0 0 0 0 0 0 0 1 0 0 0 36,10 0 0 0 0 0 0 0 1 0 a7,9 37,10 37, 0 0 0 0 0 0 0 1 a8,9 38,10 38, 0 0 c 0 J 0 C1 t1 0 0 0 0 0 0 c 0 T C2 t2 0 1 0 0 0 0 0 0 0 1 1 0 0 1 Ax = b 15 vector x of estimates: fi h c i C2 ti t 2 C T 11 l 2 l 3 and vector b of constants: fi f2 c i t1 t2 C T fi F+CC1+CC2 T2F+CC2+Tt2 F where: ai,g =a 2 , i o = f£/2 33,9 = 34,10 = c£/2 35,9 =a 6 , i o = tT/2 a 7 > 9 = - var(C)c-|/2 a 7 > 1 0 = - var(C) c 2 a7.11 = - var(C)/2 as,9 = - var(C) ci/2 as.io = - var(C) C2 as.i 1 = - var(C)/2 The solution to this matrix equation lies in Gauss-Jordan matrix reduction of A. In defining a realistic problem the initial conditions for fj, q , tj, C , T and van, (their bar values) will be known (F is the reference stream and so is also known or assumed). The initial uncorrected assays will be known and the initial flow rates for C and T can be calculated from the two product formula:(where f i , c i , and ti are the bar values): C = F if i^Jii . and T = F ( f 1 _ 1 £ 1 ) ( c i - t i ) (ti-ci) 17 The variance estimates may be obtained by setting a coefficient of variance (C v ) , where the C v of assay aj is defined as, Cv = 8& The range of the coefficient is typically 1% to 5% (.01 to .05). The variance of assay aj may then be calculated as, 6a2=(Cv*aj)2 18 A s previously mentioned, 8 a is used in the objective function as a weighting term. It can be seen that by the prudent selection of C v , for any given variable, the weight assigned to a given variable can be adjusted. Solving the matrix equation (10) for x yields the first estimates of the variables fi, ci , ti, C , T. Substituting into the objective function, J , yields the first iteration J 1 . The first estimates then become the "initial conditions" for the next iteration, J2 . The iterative procedure is continued until a minimum value of J , and its associated "best" estimates of the true values of fi, ci , ti, C , and T, are obtained. APPENDIX 3 - ESTIMATION O F S A M P L E SIZE 187 ESTIMATION O F S A M P L E SIZE The estimation of sample size is based on the confidence limits that may be placed on the mean of a population. Using the student t statistic, such that t = (x-li) Sx where x-bar is the average of the sample, u. is the mean of the population, and Sx is the standard deviation of the sample. Rearranging, x t and g - = s_ also knowing that x vn where s is the standard deviation of an individual measurement and n is the size of the sample. Given that s = 0.7 [Perkins, 1989] then . - - 0 . 7 _ ( * - " )  S x - t f f - ~ T ~ Now, if the allowed error in the measurement is 0.1% then 0.1 / which represents an iterative solution for n. Selecting n=20 as a first approximation, and alpha/2 = .025 (two sided test at 95% confidence), t = 2.086. The estimated n then equals 213, vastly different. Reselecting the error to be 0.2%, again with n=20 and alpha/2 = 0.025, the estimated n is 53, much closer. Letting t be approximated by 2.0 (ie. n greater than 28), then the estimate of n is given by Thus, a sample size of 50 will be adequate to give 95% confidence that the mean of the population is within 0.2% of the observed value. APPENDIX 4 - OPERATING QUESTIONNAIRE 189 OPERATING QUESTIONNAIRE 1. The P A X setpoint appears to be one of the most used parameters for controlling the grade, and the tails, of the Cu circuit. a. What makes you decide to raise the P A X setpoint? b. What makes you decide to lower it? 2. By watching the operation of the circuit with different operators, I find that the MIBC setpoint is not changed very often. a. When would you want to raise the MIBC setpoint and what do you think it will do to the circuit? b. When would you want to lower it, and why? 3. The scavenger air also does not get changed too often, but I have seen it used occasionally. a. When would you want to raise the air setpoint and what are you expecting it to do to the circuit? b. When would you want to lower it and what do you expect to see? 4. The three copper cleaner columns produce most of the concentrate from the cleaner circuit (the regrind column produces the rest). a. Why would you want to add air to either of the 3 columns? b. Would you add air to all three at the same time or would you add air separately? What would determine which column to add add air to? c. When you add air, what do expect it to do to the circuit? d. It does not appear that the column levels are changed very much. Under what conditions would you want to change the levels? How much would you expect the circuit to respond (how would the load, the grade and the tail change)? 5. The regrind column seems to run well by itself. What do you do to the level and air to make it run the best it can? 1 9 0 Mine Managers C o m m e n t s Mr. Robert Edwards Dear Robert: As you are aware an employee recognition program was established by Noranda Minerals to recognize those employees who have contributed to the success of their operation over and beyond their normal duties. During the past year you have been working very hard on implementing the Expert Control System in the flotation circuit. I am certain that at times it has been a very trying and frustrating experience and the reason that the project has been so successful is to a large degree due to your persistence and patience. People at Brenda have always been willing to experiment and to try new and different things. That is what has kept this mine going for so long against all odds and makes it a great place to work. Your work has not gone unnoticed, Robert, and one of your fellow employees has nominated you for recognition. I fully endorse this nomination and I would like to thank you for what you have done to make this project the success it is. Not only does this Expert Control System make the operation easier but it also results in improved economics. Please accept the enclosed gift certificate as a small token of our appreciation. Yours truly BRENDA MINES LTD. E. Brokx Mine Manager A P P E N D I X 5 - F O R T R A N , BASIC AND BATCH S O U R C E C O D E 1. RECEIVE.BAT 2. G E T A S S A Y . B A S 3. SETTINGS.F77 4. RECALL.F77 5. SENDNBAL.F77 6. LOGNFLG.F77 1. RECEIVE.BAT REM BATCH FILE RECEIVE.BAT Oct 26/89 REM Run FORTRAN routine to read FLG 40 (discrete from CP250) REM and to generate the hourly (ONSPEC time) log. :START LOGNFLG INITIALIZE COPY CONC.DAT CONC.OLD COPY TAIL.DAT TAIL.OLD COPY FEED.DAT FEED.OLD ERASE CONC.DAT ERASE TAIL.DAT ERASE FEED.DAT :GETDATA REM run basic routine to read serial port to capture assays cd\tbasic GETASSAY cd\fortran ; IF NOT EXIST CONC.DAT GOTO GETDATA ; IF NOT EXIST TAIL.DAT GOTO GETDATA IF NOT EXIST FEED.DAT GOTO GETDATA :SEND REM run the fortran routine to balance the data and send it to onspec ECHO ON SENDNBAL delay 210 ECHO OFF :RESTART GOTO START :END 2. G E T A S S A Y . B A S 10 " FILE: GETASSAY.BAS **** INPUT ASSAYS FROM CP250 **** AUG 9/89 15 BEEP 20 'PRINT" RUNNING ASSAY CAPTURE ROUTINE " 22* 30 • "***" INITIALIZE PROGRAM " " " " " 32 ON ERROR GOTO 350 36 OPEN "COM1:1200.N.8" for input AS#1 38' PRINT" COM1 INITIALIZED" 40 AA$=CHR$(4) 42 CON$ ="Cu Con " : TAIL$="Cu Tail" 44 FEED$="Thikner": CLNR$="Cu Feed" 45 DOWN$="OSA DOWN" 5 0 ' 70 'INPUT CHARACTERS *** 75 D$="" 80 IFLOC(1)=0 THEN 80 90 A$=INPUT$(LOC(1 ),#1) : A=ASC(A$) 110 IF A< 32 THEN GOTO 140 120 D$=D$+A$ 130 GOTO 80 140 ' 142 L=LEN(D$) : IF L=1 THEN 70 144 JU$=LEFT$(D$,1) :IF JU$ = AA$ THEN D$=RIGHT$(D$,(L-1)) 'DROP CHR(4) 148 D$=LEFT$(D$,72) 'LIMIT TO 72 CHR 150' PRINT D$ 151 BEEP 152 JU$=LEFT$(D$,8) 153 F$="OTHER" 154 IFJU$ = ""THEN 180 155 IF JUS = CON$ THEN F$="CONC" 156 IF JU$ = TAIL$ THEN F$=TAIL" 158 IF JU$ - FEED$ THEN F$="FEED" 159 IF JU$ = CLNR$ THEN F$="CLNR" 160 IF JU$ = DOWNS THEN F$="OTHER" 170 GOSUB 1000 180 F1=FRE(D$) 195 ' 200 STOP 210 END 350 REM ****** ERROR ROUTINE ***************** 360 E1=ERR : E2=ERL 370 PRINT "BASIC COM1 ERROR ";E1;" ON LINE ";E2 376 RUN 1000 SAVE ASSAY 1035 E$="*"+D$+"'H 1040 F2$= "D:\FORTRAN\"+F$+".DAT" 1050 OPEN F2$ FOR OUTPUT AS #4 : PRINT #4,E$ : CLOSE #4 1090 RETURN 3. R E C A L L F 7 7 Q******************************************************************** C PROGRAM: LOGnFLG.F77 OCT 26/89 C AUTHOR: R.EDWARDS C REVISION: NOV06/89 C C FUNCTION: 1. RECALL SETPOINTS AND LIMITS FROM DISK £******************************************************************** REAL*8 PAXSP.PAXHIGH.PAXLOW.PAXSTEP REAL*8 MIBCSP.MIBCHIGH.MIBCLOW.MIBCSTEP REAL*8 SCAVSP,SCAVHIGH,SCAVLOW,SCAVSTEP REAL*8 YR,MO,DA,HR,MI R EAL*8 COLLVLSP(4) .COLLVLHI (4) ,COLLVLLO(4) ,COLLVLST(4) REAL*8 COLAI RSP(4) .COLAI RHI(4) .COLAI RLO(4),COLAI RST(4) REAL*8 CONCHIGH,CONCLOW,TAILHIGH,TAILLOW INTEGER ERR EXTERNAL READMEM EXTERNAL WRITEMEM EXTERNAL OPSYS EXTERNAL INITIALIZE CALL INITIALIZE C C RECALL SPS AND LIMITS TO DISK OPEN(UNIT=10,FILE= ,SETTING.DAT\IOSTAT=IOERR,ERR=299) READ(10,110) DA,MO,YR,HR,MI READ(10,120) PAXSP.PAXHIGH.PAXLOW.PAXSTEP READ(10,121) MIBCSP,MIBCHIGH,MIBCLOW,MIBCSTEP READ(10,122) SCAVSP,SCAVHIGH,SCAVLOW,SCAvSTEP READ(10,130) COLLVLSP(1),COLLVLHI(1),COLLVLLO(1),COLLVLST(1) READ(10,131) COLLVLSP(2),COLLVLHI(2),COLLVLLO(2),COLLVLST(2) READ(10,132) COLLVLSP(3),COLLVLHI(3),COLLVLLO(3),COLLVLST(3) READ(10,133) COLLVLSP(4),COLLVLHI(4),COLLVLLO(4),COLLVLST(4) READ(10,140) COLAIRSP(1),COLAIRHI(1),COLAIRLO(1),COLAIRST(1) READ(10,141) COLAIRSP(2),COLAIRHI(2)1COLAIRLO(2),COLAIRST(2) READ(10,142) COLAIRSP(3),COLAIRHI(3),COLAIRLO(3),COLAIRST(3) READ(10,143) COLAIRSP(4),COLAIRHI(4),COLAIRLO(4),COLAIRST(4) READ(10,150) CONCHIGH.CONCLOW READ(10,151) TAILHIGH.TAILLOW 299 CLOSE(10) IF (IOERR.GT.0) THEN WRITE(Y) * ERROR OPENING FILE SETTINGS.DAT FOR RECALL' END IF c REAGENTS AND LIMITS: CALL WRITEMEMCEUR',42,PAXSP) CALL WRITEMEM('EUR',43,PAXHIGH) CALL WRITEMEMCEUR'^.PAXLOW) CALL WRITEMEMCEUR'^I.PAXSTEP) CALL WRITEMEM(,EUR',32,MIBCSP) CALL WRITEMEMCEURmMIBCHIGH) CALL WRITEMEMCEUR',34,MIBCLOW) CALL WRITEMEMCEUR',31 .MIBCSTEP) CALL WRITEMEMCEURM62,SCAVSP) CALL WRITEMEMCEURM63.SCAVHIGH) CALL WRITEMEM('EUR',164,SCAVLOW) CALL WRITEMEM('EUR',161,SCAVSTEP) C COLUMN LEVELS AND AIR LIMITS: C I = COLUMN NUMBER DO 100 1=1,4 CALL WRITEMEM(,EUR',202+10*(I-1)>COLLVLSP(I)) CALL WRITEMEMCEUR^OS+IO'O-IJ.COLLVLHIO)) CALL WRITEMEMCEUR\204+10*(I-1),COLLVLLO(I)) CALL WRITEMEMCEUR',201+10*(I-1),COLLVLST(I)) CALL WRITEMEMCEUR',242+10*(I-1),COLAIRSP(I)) CALL WRITEMEM(,EUR",243+10*(I-1),COLAIRHI(I)) CALL WRITEMEM(,EUR\244+10*(I-1),COLAIRLO(I)) CALLWRITEMEMCEUR'^l+IO^I-IJ.COLAIRSTtl)) 100 CONTINUE CALL WRITEMEM('EUR',193,CONCHIGH) CALL WRITEMEMCEURM94,CONCLOW) CALL WRITEMEMCEURM95.TAILHIGH) CALL WRITEMEM('EUR',196,TAILLOW) C C DISK SAVE FORMATS: CTIME 110 FORMAT(F3.0,F3.0,F6.0,F3.0,F3.0) CPAX.SCAVAIR , MIBC 120 FORMAT(F5.1,F5.1,F5.1,F5.1) 121 FORMAT(F4.1,F4.1,F4.1,F4.1) 122 FORMAT(F5.1,F5.1,F5.1,F5.1) C COLUMN LEVELS- 1,2,3,4 130 FORMAT(F4.1,F4.1,F4.1,F4.1) 131 FORMAT(F4.1,F4.1,F4.1,F4.1) 132 FORMAT(F4.1,F4.1,F4.1,F4.1) 133 FORMAT(F4.1,F4.1,F4.1,F4.1) C COLUMN AIRS-1,2,3,4 140 FORMAT(F4.1,F4.1,F4.1,F4.1) 141 FORMAT(F4.1,F4.1,F4.1,F4.1) 142 FORMAT(F4.1,F4.1,F4.1,F4.1) 143 FORMAT(F4.1,F4.1,F4.1,F4.1) C ASSAY LIMITS - CONC.TAIL 150 FORMAT(F4.1,F4.1) 151 FORMAT(F4.2,F4.2) 161 FORMATO C 999 STOP END 1 9 7 4. SENDNBAL .F77 £******************************************************************** C P R O G R A M : SENDNBAL.F77 July 24,1989 C A U T H O R S : R P E C C REVISION DATE: NOV 28,1989 C C F O R T R A N ROUTINE TO G E T THE A S S A Y S F R O M THE " .DAT' (OR ".OLD") C FILES C R E A T E D BY T H E BASIC ROUTINE G E T A S S A Y . B A S . T H E FILES C CONTAIN A S S A Y INFO FROM THE CP250 AND A R E IN S E P A R A T E FILES C FOR T H E C O N C , THE TAIL, AND THE FEED ( R E F E R E N C E TO P R O G R A M C XFRASSAY.F77 ) . T H E ROUTINE A L S O P E R F O R M S A MATERIAL B A L A N C E C O N T H E C U A S S A Y S TO IMPROVE THE ESTIMATE O F T H E A C T U A L P R O C E S S . C ( IMPLEMENTS A S S A Y B A L A N C E ONLY, B C F SOLUTION, DUE T O C FLUCTUATING AND SOMETIMES E R R O N E O U S FLOW READINGS). C £******************************************************************** REAL*8 DIFF, ADIFF REAL*8 F R A C , T R U N C , D E N O M , N E W A S S , X F E R , S E T REAL*8 CU,MO,PB,FE,PYRITE REAL*8 ASSAY(3,4),PRED(3),ASSTIM(3),HRS(3) INTEGER TIM,I,J,K,DELAY,ITERS,ERR INTEGER VALID(3) INTEGER E R R O R O P E N . E R R O R R E A D C H A R A C T E R S DATAFILE C H A R A C T E R S LABEL C H A R A C T E R S Q O E X T E R N A L R E A D M E M EXTERNAL WRITEMEM EXTERNAL O P S Y S EXTERNAL INITIALIZE CALL INITIALIZE C C ASSAY(1,1 ..4) - C O N C C U . M O . P B . F E C (2,1 ..4) - TAIL CU.MO.PB .FE C (3,1 ..4) - F E E D CU.MO.PB .FE C PYRITE - ESTIMATED % PYRITE IN THICKENER UNDERFLOW C ASSTIM(1 ..3) - N E W A S S A Y TIMES FOR C O N C , TAIL, F E E D S T R E A M S C PRED(3) - PREDICTED C U A S S A Y S FOR CONC.TAIL.FEED C HRS(3) - N E W A S S A Y TIMES IN FRACTIONAL H R S FORMAT C VALID(3) - VALID N E W A S S A Y FLAG FOR CONC.TAIL.FEED C C N O T E : do not run detached as it causes an internal error for C some reason (this program only - generally detaching C works well). C D E T A C H THIS P R O G R A M F R O M THE WINDOW (CP/M OPRATING S Y S T E M CALL) C WRITE (Y) ' DETACHING P R O G R A M FROM THIS WINDOW C C A L L OPSYS(ERR,147,0 ,0 ) 198 C WRITE(Y)' PROGRAM RUNNING UN-DETACHED 1 C OPEN(UNIT=9,FILE='LST:') C initialize time checks D 0 4 l = 1,3 ASSTIM(I) = 0.0 4 CONTINUE DENOM = 100. C 100 DO10i=1,3 C get filenames if(i.eq.1) DATAFILE = 'conc.DAT if (i-eq.2) DATAFILE = lail.DAP if (i.eq.3) DATAFILE = feed. DAP C— OPEN FILES FOR INPUT AND READ ASSAYS 5 OPEN(8,FILE=DATAFILE,STATUS='OLD',IOSTAT=ERROROPEN) C IF (ERROROPEN .EQ. 1) WRITE(V) 'ERROR OPENING FILE: '.DATAFILE IF (ERROROPEN .EQ. 1) GOTO 5 6 READ(8,16,IOSTAT=ERRORREAD) LABEL.CU,MO,PB,FE,PYRITE,A6,A7, + T1M,Q0 16 FORMAT(A9,F7.1 ,F7.3,F7.2,F7.1 ,F7.1 .F14.1 ,F7.1.17.A1) C IF (ERRORREAD .EQ. 1) WRITEf *) 'ERROR READING FILE * IF (ERRORREAD .EQ. 1) GOTO 6 CLOSE(8) C SAVE ASSAYS TO RESPECTIVE STREAMS IF NEW DATA C NOTE: C Cannot read extended precision numbers, but can only send extended C precision numbers (ie. TIM is not, but TIMCONC is REAL*8) C A new assay is indicated if the new time is different than the past. C Concentrate assays, tails assays, then feed assays. C Also, convert time from 2400 hrs to hrs plus fractional hours IF (ASSTIM(I).NETIM) THEN C new assays ASSTlM(l) = TIM VALID(I) = 1 C convert time to fractional hours frac = DMOD(ASSTIM(l),DENOM) f roc = f fcic / 60 trunc = IDINT(ASSTIM(l)/DENOM) HRS(I) = TRUNC + FRAC C save assays ASSAY(I,1) = CU ASSAY(I,2) = MO ASSAY(I,3) = PB ASSAY(I,4) = FE ENDIF C...LOOP FOR ANOTHER FILE 10 CONTINUE C CHECK IF ASSAYS ARE "REASONABLE". IF NOT, THEN RESET VALID(I) C Cu limits taken from OSA tables in OSA room (5/9/89). C cone IF((ASSAY(1,1).LT.20.0).OR.(ASSAY(1,1).GT.35.0).OR. + (ASSAY(1,4).LT.20.0).OR.(ASSAY(1,4).GT.35.0)) THEN WRITE(9,*)1 * " * CON ASSAYS INVALID ****' WRITE(9,11) ASSAY(1,1 ),ASSAY(1,4) WR!TE(9,*) VALID(1) = 0 ENDIF C tail IF ((ASSAY(2,1).LT.0.1).OR.(ASSAY(2,1).GT.7.0).OR. + (ASSAY(2,4).LT.0.0).OR.(ASSAY(2,4).GT.35.0)) THEN WRITE(9,*)' **** TAIL ASSAYS INVALID * " * ' WRITE(9,11) ASSAY(2,1),ASSAY(2,4) WRITE(9,*) VALID(2) = 0 ENDIF C feed IF((ASSAY(3,1).LT.12.0).OR.(ASSAY(3,1).GT.32.0).OR. + (ASSAY(3,4).LT.10.0).OR.(ASSAY(3,4).GT.30.0)) THEN WRITE(9,*) • - * * FEED ASSAYS INVALID **** ' WRITE(9,11) ASSAY(3,1),ASSAY(3,4) WRITE(9,*) VALID(3) = 0 ENDIF 11 FORMAT(1 X,' Cu = ',F7.3,' Fe = '.F7.3) C C one set of assays should occur within 20 minutes of each other C otherwise they are not part of the same set. SET = 20760. C send new assay flag to ONSPEC only if all assays belong to the C same set (ie. are less than 25 min apart) and have not been sent C before (ie. send a new set only once).[DABS = double precision ABS] C if all 3 are new assays and part of the same set then... IF(((VALID(1).EQ.1).AND.(VALID(2).EQ.1).AND.(VALID(3).EQ.1)) + .AND.((DABS(HRS(1)-HRS(2)).LT.SET) + .AND.(DABS(HRS(1)-HRS(3)).LT.SET) + .AND.(DABS(HRS(2)-HRS(3)).LT.SET))) THEN CALL BALANCE(ASSAY,ASSTIM) CALL SEND(ASSAY,ASSTIM,PYRITE, VALID) C if only cone and tail are new assays C and part of the same set... ELSE IF (((VALID(1).EQ.1).AND.(VALID(2).EQ.1)).AND. + (DABS(HRS(1)-HRS(2)).LT.SET))THEN CALL SEND(ASSAY,ASSTIM.PYRITE.VALID) ELSE C also reset in SUPER - CUEXPERT NEWASS = 0 CALL WRITEMEMfEUR'^ .NEWASS) WRITE(9,*)1 NO NEW ASSAY FLAG: cone or tail assay not", + ' part of same data set or invalid sef WRITE(9,12) HRS(1),HRS(2),HRS(3) WRITE(9,*) 12 format(1x,TIMES: CONC =\F7.2,' TAIL=\F7.2,' FEED=',F7.2) END IF CLOSE(9) C set program running flag XFER = 1 CALL WRITEMEMeEUR\40i ,XFER) C STOP END SUBROUTINE SEND(ASSAY,ASSTIM,PYRITE,VALID) REAL*8 ASSAY(3,4),ASSTIM(3),NEWASS,PYRITE INTEGER VALID(3) D0151 = 1,3 CALL WRITEMEMCEURM67-r4*l,ASSAY(l,1)) CALL WRITEMEMCEURM 68-r4*l,ASSAY(l,2)) CALL WRITEMEMCEUR',169+4*l,ASSAY(l,3)) CALL WRITEMEMCEUR',170+4*l,ASSAY(l,4)) CALLWRITEMEMCEUI\49+I,ASSTIM(I)) 15 CONTINUE CALL WRITEMEMCEURM 68.PYRITE) C reset valid assay flags and send flag to ONSPEC D017I = 1,3 VALID(I) = 0 17 CONTINUE NEWASS = 1 CALL WRITEMEMCEUR',402,NEWASS) WRITEf ,*)' NEW ASSAY FLAG SET RETURN END £******************************************************************** C SUBROUTINE BALANCE.F77 AUG 8,1989 SUBROUTINE BALANCE(DATA.TIMES) Q******************************************************************** REAL*8 TIM ES(3), DATA(3,4), FL0W(3), VAR(9) R E A L S A(11,22),AIB(11),AINV(11,11 ),B(11),X(11) R E A L S OBJFUN.PASTJ.DELTAJ.TOLER.FR INTEGER EQ,COL,FD,MAXITER,JLOOP C C DATA(1,1 ..4) - CONC ASSAYS, CU.MO.PB.FE C (2,1..4)- TAIL ASSAYS C (3,1..4)- FEED ASSAYS C FLOW(1) -CONC FLOW C (2) -TAIL FLOW C (3) - FEED FLOW C FR -FLOWRATIO = CON FLOW/FEED FLOW c VAR(1) - VARIANCE OF CONC CU ASSAY c (2) - TAIL c (3) - FEED c (4) - VARIANCE OF CONC FE ASSAY c (5) - TAIL c (6) - FEED c (7) - VARIANCE OF CONC FLOW c (8) - TAIL c 0) - FEED c AIB(1) - SOLUTION FOR CONC CU ASSAY c (2) - FE c (3) • TAIL CU ASSAY c (4) - FE c (5) • FEED CU ASSAY c (6) - FE c (7) - SOLUTION FOR CONC FLOW c (8) - SOLUTION FOR TAIL FLOW c C The method of Lagrangian multipliers is used to minimize linear C optimization problems (ie. linear objective function) within C non-linear constraints. C The method involves solving for the solution vector X, given the C constants vector B and the coefficient matrix A. C That is, solve the system of equations given by A X = B, where C A i s n x n , X i s n x l , and B i s n x l . C The Cu assays have to be balanced such that the two product formula, C Ff = Tt + Cc, and the flow constraint, F = C + T, are satisfied. C Matrix A is built using the method of Lagrangian multipliers. C Better estimates are sought for the cone, tail, and feed assays, C along with the cone and tail flows. There are two constraints to C satisfy and so are two multipliers; therefore, n=7. C predicted CONC, TAIL. & FEED C first multiplier, L1 C second multiplier, L2 C with their associated variances in VAR(I) C recall the tail, and cone flows respectively, from ONSPEC CALL READMEM( ,EUR ,,130,FLOW(2)) CALL READMEM('EUR',150,FLOW(1)) IF ((FLOW(1).LT.1.0).OR.(FLOW(2).LT.1.0)) THEN FLOW(1) = 70.0 FLOW(2) = 30.0 ENDIF C STORE INITIAL ASSAYS FOR PRINTING OLDCC = DATA(1,1) OLDCT=DATA(2,1) OLDCF = DATA(3,1) OLDFC = DATA(1,4) OLDFT = DATA(2,4) OLDFF = DATA(3,4) C  C BEGIN ITERATIVE PROCESS FOR FINDING "BEST" ASSAYS. C MINIMIZATION IS DONE ONLY ON ASSAYS SINCE THE ASSAYS WILL C NOT MATCH THE INSTANTANEOUS FLOWS READ IN FROM ONSPEC.09/08/89 MAXITER = 10 TOLER = 1.0 E-5 PASTJ = 1.0E07 WRITE(Y) ', i l C DO 99 JLOOP = 1 .MAXITER C WRITE(*,98) JLOOP.PASTJ C98 FORMAT(1X,' ITERATION NUMBER ',\4; OBJ FUNCTION \E10.3) C Either let the known feed flow be the sum of the measured C flows or let the known flow be arbitrary (100.0 or 1.0) FLOW(3) = FLOW(1) + FLOW(2) FR = FLOW(1)/FLOW(3) C assign coef of variance, squared D 0 5 l = 1,3 VAR(I) =(0.05*DATA(I,1)) VAR(l+3) = (0.05 * DATA(I,4)) 5 CONTINUE C assign coef matrix A C column by column A(1,1) = 2.0/VAR(3) A(2,1) = 0.0 A(3,1) = 0.0 A(4,1) = 0.0 A(5,1) = 0.0 A(6,1) = 0.0 A(7,1) = 1.0 A(8,1) = 0.0 A(9,1) = 0.0 A(1,2) = 0.0 A(2,2) = 2.0/VAR(6) A(3,2) = 0.0 A(4,2) = 0.0 A(5,2) = 0.0 A(6,2) = 0.0 A(7,2) = 0.0 A(8,2) = 1.0 A(9,2) = 0.0 A(1,3) = 0.0 A(2,3) = 0.0 A(3,3) = 2.0/VAR(1) A(4,3) = 0.0 A(5,3) = 0.0 A(6,3) = 0.0 A(7,3) = -FR A(8,3) = 0.0 A(9,3) = 0.0 A(1,4) = 0.0 A(2,4) = 0.0 A(3,4) = 0.0 A(4,4) = 2.0/VAR(4) A(5,4) - 0.0 A(6,4) = 0.0 A(7,4) = 0.0 A(8,4) = - FR A(9,4) = 0.0 A(1,5) = 0.0 A(2,5) = 0.0 A(3,5) = 0.0 A(4,5) = 0.0 A(5,5) = 2.0/VAR(2) A(6,5) = 0.0 A(7,5) = FR-1.0 A(8,5)« 0.0 A(9,5) = 0.0 A(1,6) = 0.0 A(2,6) = 0.0 A(3,6) = 0.0 A(4,6) = 0.0 A(5,6) = 0.0 A(6,6) = 2.0/VAR(5) A(7,6) = 0.0 A(8,6) = FR-1.0 A(9,6) = 0.0 A(1,7) = -1.0 A(2,7) = 0.0 A(3,7) = FR 204 A(4,7) = 0.0 A(5,7) = 1.0-FR A(6,7) = 0.0 A(7,7) = 0.0 A(8,7) = 0.0 A(9,7) = (DATA(1,1) - DATA(2,1)) A(1,8) = 0.0 A(2,8) = -1.0 A(3,8) = 0.0 A(4,8) = FR A(5,8) = 0.0 A(6,8) = 1.0-FR A(7,8) = 0.0 A(8,8) = 0.0 A(9,8) = (DATA(1,4) - DATA(2,4)) A(1,9) = 0.0 A(2,9) = 0.0 A(3,9) = 0.0 A(4,9) = 0.0 A(5,9)= 0.0 A(6,9) = 0.0 A(7,9) = DATA(2,1) - DATA(1,1) A(8,9) = DATA(2,4) - DATA(1,4) A(9,9) = 0.0 C assign constants vector B B(1) = 2.0 * DATA(3,1) / VAR(3) B(2) = 2.0 * DATA(3,4) / VAR(6) B(3) = 2.0 * DATA(1,1) / VAR(1) B(4) = 2.0 * DATA(1,4) / VAR(4) B(5) = 2.0 * DATA(2,1) / VAR(2) B(6) = 2.0 * DATA(2,4) / VAR(5) B(7) = FR * (DATA(2,1) - DATA(1,1)) B(8) = FR * (DATA(2,4) - DATA(1,4)) B(9) = 0.0 C augment A matrix for inversion C A = COEF MATRIX AUGMENTED WITH EQUAL DIM UNIT MATRIX C EQ = NUMBER OF EQUATIONS TO SOLVE C COL = TOTAL NUMBER OF COLUMNS IN AUGMENTED MATRIX C FD = FIRST DIMENSION OF AUGMENTED MATRIX EQ = 9 COL = 2*EQ FD= EQ D015I = 1,EQ D 0 1 6 J = EQ+1,COL A(l,J) = 0.0 16 CONTINUE A(I,I+EQ) = 1.0 15 CONTINUE CALL ELIM(A,EQ,COL,FD) C multiply by B, AIB = AINV*B DO20l = 1,EQ AIB(l) = 0.0 DO 21 J = 1,EQ AIB(I) = AIB(I) + A(I,(J+EQ)) * B(J) 21 CONTINUE 20 CONTINUE C solution vector X C AIB(1) = DATA(3,1) = Cu FEED ASSAY C AIB(2) = DATA(3,4) = Fe FEED ASSAY C AIB(3) = DATA(1,1) = Cu CON ASSAY C AIB(4) = DATA(1,4) = Fe CON ASSAY C AIB(5) = DATA(2,1) = Cu TAIL ASSAY C AIB(6) = DATA(2,4) = Fe TAIL ASSAY C AIB(7) = L1 = FIRST LAGRANGIAN C AIB(8) = L2 = SECOND LAGRANGIAN C AIB(9) = FR = FLOW RATIO CON/FEED C C CALCULATE OBJECTIVE FUNCTION TO MINIMIZE C sum of squares of Cu con, tail and feed assays, C Fe con, tail, and feed assays, C Con f tow, and Tail flow OBJFUN = (DATA(1,1)-AIB(3)) * (DATA(1,1)-AIB(3)) / VAR(1) + + (DATA(2,1 )-AIB(5)) * (DATA(2,1 )-AIB(5)) / VAR(2) + + (DATA(3,1)-AIB(1)) * (DATA(3,1)-AIB(1)) / VAR(3) + + (DATA(1,4)-AIB(4)) * (DATA(1,4)-AIB(4)) / VAR(4) + + (DATA(2,4)-AIB(6)) * (DATA(2,4)-AIB(6)) / VAR(5) + + (DATA(3,4)-AIB(2)) * (DATA(3,4)-AIB(2)) / VAR(6) C C assign best estimates to output vector Cu assays & Fe assays DATA(1,1)=AIB(3) DATA(2,1) = AIB(5) DATA(3,1) = AIB(1) DATA(1,4)=AIB(4) DATA(2,4) « AIB(6) DATA(3,4) = AIB(2) C C CHECK STOPPING CRITERION DELTAJ = ABS(PASTJ - OBJFUN) IF (DELTAJ.GT.TOLER) THEN PASTJ = OBJFUN E L S E WRITEf.102) OBJFUN 102 FORMAT(1 X,' SATISFACTORY MINIMUM FOUND: OBJ FUNC + E10.4) GOT0101 ENDIF 99 CONTINUE C 101 WRITE(9,*) WRITE(9,32) WRrTE(9,36) WRITE(9,33) TIMES(1),OLDCC,DATA(1,1),OLDFC)DATA(1,4) WRITE(9,34) TIMES(2),OLDCT,DATA(2)1),OLDFT,DATA(2 I4) WRITE(9,35) TIMES(3),OLDCF lDATA(3,1) lOLDFF,DATA(3,4) WRITE(9,*) WRITE(9,*) WRITE(9,*) 32 FORMAT(1X,10X,'TIME',6X,'RAW Cu',3X,'BALANCED Cu', + 4X/RAW Fe',3X,'BALANCED Fe') 36 FORMAT(1 X,10X,'--',6X,' ',3X,' ', + 4X (' • 3X' ") 33 FORMAT(1 X,' CONC ',F5.0,6X,F4.1.7X.F4.1.9X.F4.1.7X.F4.1) 34 FORMAT(1X,' TAIL ',F5.0,6X,F4.2,7X,F4.2,9X,F4.1,7X,F4.1) 35 FORMAT(1X,'FEED '^5.0,6X^4.1,7X^4.1,9X^4.1,7X^4.1) C RETURN END £******************************************************************** C SUBROUTINE ELIM(AB,N,NP,NDIM) C £******************************************************************** REAL*8 AB(11,22),MAX(11) INTEGER N.NP.NDIM.NM1 C This subroutine solves a set of linear equations. C The Gauss elimination method is used, with partial pivoting. C Multiple right hand sides are permitted, they should be supplied C as columns that augment the coefficient matrix. C PARAMETERS are: C AB coefficient matrix augmented with RHS vectors C N number of equations C NP total number of columns in the augmented matrix C NDIM first dimension of matrix AB in the calling program. C The solution vectors are returned in the augmentation columns C of AB. C echo the input dimensions and matrix C ROW EQUILIBRATE THE INPUT MATRIX D0150 1=1 ,N MAX(I) = AB(I,1) D0152J=1,NP IF(AB(I,J).GT.MAX(I)) MAX(I) = AB(I,J) 152 CONTINUE 150 CONTINUE DO 153 1=1 ,N D0154J=1,NP AB(I,J)=AB(I,J)/MAX(I) 154 CONTINUE 153 CONTINUE C C begin the reduction NM1 = N -1 DO 351 = 1,NM1 C Find the row number of the pivot row. We will then C interchange rows to put the pivot element on the diagonal. IPVT=I IP1 =1 + 1 DO10J = IP1,N IF (ABS(AB(IPVT,I)) .LT. ABS(AB(J,I))) IPVT = J 10 CONTINUE C Check to be sure the pivot element is not too small, if so C print a message and return. IF (ABS(AB(IPVT,I)) .LT. 1 .E-5) GO TO 99 C now interchange, except if the pivot element is already on the C diagonal, in which case don't need to. IF (IPVT.EQ. I) GO TO 25 DO20JCOL = l,NP SAVE = AB(l,JCOL) AB(l,JCOL) = AB(IPVT,JCOL) AB(IPVT,JCOL) = SAVE 20 CONTINUE C now reduce all elements below the diagonal in the l-th row. Check C first to see if a zero already present. If so, can skip reduction C for that row. 25 D032JROW=IP1,N IF (AB(JROW,l) .EQ. 0) GO TO 32 RATIO = AB(JROW,l)/AB(l,l) DO30KCOL=IP1,NP AB(JROW.KCOL) = AB(JROW.KCOL) - RATIO*AB(l,KCOL) 30 CONTINUE 32 CONTINUE 35 CONTINUE C we still need to check AB(N,N) for size. IF (ABS(AB(N,N)) .LT. 1 .E-5) GO TO 99 C now we back substitute. NP1 = N +1 DO 50 KCOL = NP1,NP 208 C WRITE(M23) AB(N,N) AB(N.KCOL) = AB(N,KCOL)/AB(N,N) D 0 4 5 J = 2,N NVBL = NP1 - J L = NVBL+1 VALUE = AB(NVBL.KCOL) DO40K=L,N VALUE = VALUE - AB(NVBL,K)*AB(K,KCOL) 40 CONTINUE C WRITE(*,123) AB(NVBL.NVBL) AB(NVBL.KCOL) = VALUE/AB(NVBL,NVBL) 45 CONTINUE 50 CONTINUE RETURN C message for near singular matrix 99 WRITE(9,100) C 100 FORMAT(1 X.'SOLUTION NOT FEASIBLE. NEAR-ZERO PIVOT ENCOUNTERED') 110 FORMAT(1X,F10.4,F10.4,F10.4) 120 FORMATIIX.HO.HO.HO) 123 FORMAT(1 X,' AB() = \F10.4) C RETURN END ******************************************** ****************************************************** 5. L O G N F L G . F 7 7 Q******************************************************************** C PROGRAM: LOGnFLG.F77 OCT 26/89 C AUTHOR: R.EDWARDS C REVISION: NOV06/89 C C FUNCTION: 1. PRINT AN HOURLY (ACCORDING TO THE ONSPEC C CLOCK) LOG TO THE PRINTER. C 2. SAVE SETPOINTS AND LIMITS TO DISK C 3. CYCLE UNTIL THE ONSPEC NEW ASSAY FLAG IS C SET THEN EXIT TO RECEIVE ASSAY DATA. C NOTE: BE SURE THAT THE RECALL ROUTINE IS RUN BEFORE THIS C ROUTINE. IF NOT THEN ONSPEC DEFAULTS WILL BE SAVED C TO DISK INSTEAD OF THE OPERATOR'S PAST SETTINGS. £******************************************************************** REAL*8 PAXSP .PAXHIGH, P AXLOW, PAXSTEP REAL*8 MIBCSP.MIBCHIGH.MIBCLOW.MIBCSTEP REAL*8 SCAVSP.SCAVHIGH.SCAVLOW.SCAVSTEP REAL*8 ASSAYFLG.FLAGSET REAL*8 COLLVLPV(4),COLLVLHI(4),COLLVLLO(4),COLLVLST(4) REAL*8 COLAIRSP(4),COLAIRHI(4),COLAIRLO(4),COLAIRST(4) REAL*8 CONCHIGH.CONCLOW.TAILHIGH.TAILLOW REAL*8 YR.MO.DA.HR.MI.LASTHR INTEGER ERR,FIRST EXTERNAL READMEM EXTERNAL WR ITEM EM EXTERNAL OPSYS EXTERNAL INITIALIZE CALL INITIALIZE C C CHECK ASSAY FLAG: 1 CALL READMEM('DIP,40,ASSAYFLG) IF (ASSAYFLG.EQ.O) THEN C FLAG NOT SET THEN CHECK FOR REPORT SCHEDULE GOTO 5 E L S E C FLAG SET, BRANCH OUT TO RETURN LATER (SEE BATCH FILE) WRITE(Y)' BRANCH OUT FOR ASSAY RETRIEVAL' GOTO 999 ENDIF C READ ONSPEC LOCATIONS C TIME: 5 CALL READMEM('EUr,127,YR) CALL READMEM('EUr,125,MO) CALL READMEM('EUI',124>DA) CALL READMEM('EUr,120,HR) CALL READMEM('EUI\119.MI) CALL READMEM('EUR',404,LASTHR) 210 C IS IT TIME TO PRINT? IF (HR.EQ.LASTHR) THEN C NO PRINT, DELAY ACTION THEN CHECK FLG, ETC. GOTO 998 E L S E C PRINT REPORT LASTHR = HR CALL WRITEMEM('EUR',404,HR) ENDIF C REAGENTS AND LIMITS: CALL READMEMCEUR',42,PAXSP) CALL READMEM('EUR',43,PAXHIGH) CALL READMEM('EUR',44,PAXLOW) CALL READMEM('EUR',41 .PAXSTEP) CALL READMEM('EUR',32,MIBCSP) CALL READMEM('EUR',33,MIBCHIGH) CALL READMEM('EUR',34,MIBCLOW) CALL READMEM('EUR',31 .MIBCSTEP) CALL READMEM('EUR',162,SCAVSP) CALL READMEM('EUR',163.SCAVHIGH) CALL READMEM('EUR',164,SCAVLOW) CALL READMEM('EUR',161,SCAVSTEP) C COLUMN LEVELS AND AIR LIMITS: C I = COLUMN NUMBER DO 100 1=1,4 CALLREADMEMCEUR',200+10*(I-1),COLLVLPV(I)) CALL READMEMCEUR\203+10*(I-1),COLLVLHI(I)) CALLREADMEMCEUR\204+10*(I-1),COLLVLLO(I)) CALLREADMEM('EUR\201+10 #(M),COLLVLST(I)) CALLREADMEM( ,EUR ,,242+10*(I-1),COLAIRSP(I)) CALLREADMEM('EUR\243+10*(I-1),COLAIRHI(I)) CALLREADMEM( ,EUR ,,244+10*(I-1),COLAIRLO(I)) CALL READMEMCEUR',241 +10*(l-1 ),COLAIRST(l)) 100 CONTINUE C ASSAY LIMITS: CALL READMEM('EUR',193,CONCHIGH) CALL READMEM( ,EUR',194,CONCLOW) CALL READMEM('EUR',195,TAILHIGH) CALL READMEM('EUR',196,TAILLOW) C PRINT REPORT OPEN(UNIT=9,FILE='LST:\IOSTAT=IOERR,ERR=199) WRITE(9,*) WRITE(9,10) DA,MO,YR,HR,MI WRITE(9,60) WRITE(9,11) WRITE(9,12) WRITE(9,13) WRITE(9,20) PAXSP.PAXHIGH.PAXLOW.PAXSTEP WRITE(9,21) MIBCSP.MIBCHIGH.MIBCLOW.MIBCSTEP WRITE(9,22) SCAVSP.SCAVHIGH.SCAVLOW.SCAVSTEP WRITE(9,*) WRITE(9,30) COLLVLPV(1),COLLVLHI(1),COLLVLLO(1),COLLVLST(1) WRITE(9,31) COLLVLPV(2),COLLVLHI(2),COLLVLLO(2),COLLVLST(2) WRITE(9,32) COLLVLPV(3),COLLVLHI(3),COLLVLLO(3),COLLVLST(3) WRITE(9,33) COLLVLPV(4),COLLVLHI(4),COLLVLLO(4),COLLVLST(4) WRITE(9,*) WRITE(9,40) COLAIRSP(1),COLAIRHI(1),COLAIRLO(1),COLAIRST(1) WRITE(9,41) COLAIRSP(2),COLAIRHI(2),COLAIRLO(2),COLAIRST(2) WRITE(9,42) COLAIRSP(3),COLAIRHI(3),COLAIRLO(3),COLAIRST(3) WRITE(9,43) COI_AIRSP(4)1COLAIRHI(4),COLAIRLO(4),COLAIRST(4) WRITE(9,*) WRITE(9,50) CONCHIGH.CONCLOW WRITE(9,51) TAILHIGH.TAILLOW WRITE(9,60) WRITE(9,*) 199 CLOSE(9) IF (IOERR.GT.0) THEN WRITE(*,*)' ERROR OPENING LST: FOR REPORT OUTPUT END IF C C SAVE SPs AND LIMITS TO DISK C OPEN FILE AND SAVE INFO OPEN(UNIT=10,FILE='SETTING.DAT\IOSTAT=IOERR,ERR=299) WRITE(10,110) DA.MO.YR.HR.MI WRITE(10,120) PAXSP.PAXHIGH.PAXLOW.PAXSTEP WRITE(10,121) MIBCSP.MIBCHIGH.MIBCLOW.MIBCSTEP WRITE(10,122) SCAVSP.SCAVHIGH.SCAVLOW.SCAVSTEP WRITE( 10,130) COLLVLPV( 1 ),COLLVLHI(1),COLLVLLO(1),COLLVLST(1) WRITE(10,131) COLLVLPV(2).COLLVLHI(2),COLLVLLO(2),COLLVLST(2) WRITE(10,132) COLLVLPV(3),COLLVLHI(3),COLLVLLO(3),COLLVLST(3) WRITE(10,133) COLLVLPV(4),COLLVLHI(4),COLLVLLO(4),COLLVLST(4) WRITE(10,140) COLAIRSP(1),COLAIRHI(1),COLAIRLO(1),COLAIRST(1) WRITE(10,141) COLAIRSP(2),COLAIRHI(2),COLAIRLO(2),COLAIRST(2) WRITE(10,142) COLAIRSP(3),COLAIRHI(3),COLAIRLO(3),COLAIRST(3) WRITE(10,143) COLAIRSP(4),COLAIRHI(4),COLAIRLO(4),COLAIRST(4) WRITE(10,150) CONCHIGH.CONCLOW WRITE(10,151) TAILHIGH.TAILLOW 299 CLOSE(10) IF (IOERR.GT.0) THEN WRITE(V)' ERROR OPENING FILE SETTINGS.DAT FOR HOURLY", + ' SAVES' END IF C 998 CALL DELAY(I) C RETURN TO BEGINNING TO CHECK ASSAY FLAG GOTO1 C C REPORT FORMATS: 10 FORMAT(11X,'DATE:',F3.0,F3.0,F6.0,' - H O U R L Y L O G — ', + TIME:',F3.0,F3.0) 11 FORMAT(28X," ',4X,'HIGH ',5X,' LOW ',3X,'STEP') 12 FORMAT(28X,' SP '^X.'LIMir.SX.'LIMIT.SX.'SIZE') 13 FORMAT(28X,' ',4X,' ',4X,' ',4X,'—-') 20 FORMAT(9X,'PAX ',3X,F5.1,4X,F5.1,4X,F5.1,3X,F5.1) 21 FORMAT(9X,'MIBC ',4X,F4.1,5X,F4.1,5X,F4.1,4X,F4.1) 22 FORMAT(9X,'SCAVENGER AIR ,,3X,F5.1,4X,F5.1,4X,F5.1,3X,F5.1) 30 FORMAT(9X,'COLUMN #1 LEVEL '.4X.F4.1,5X,F4.1,5X,F4.1,4X,F4.1) 31 FORMAT(9X/COLUMN #2 LEVEL ,,4X,F4.1,5X,F4.1,5X,F4.1,4X,F4.1) 32 FORMAT(9X,'COLUMN #3 LEVEL ,,4X,F4.1,5X,F4.1,5X,F4.1,4X,F4.1) 33 FORMAT(9X,'REG COLUMN LEVEL',4X,F4.1,5X IF4.1,5X,F4.1,4X,F4.1) 40 FORMAT(9X,'COLUMN #1 AIR ',4X^4.1,5X^4.1,5X^4.1,4X^4.1) 41 FORMAT(9X,'COLUMN #2 AIR \4X,F4.1,5X,F4.1,5X,F4.1,4X,F4.1) 42 FORMAT(9X,'COLUMN #3 AIR \4X,F4.1,5X^4.1,5X^4.1,4X^4.1) 43 FORMAT(9X,'REG COLUMN AIR ',4X,F4.1,5X,F4.1,5X,F4.1,4X,F4.1) 50 FORMAT(9X,'ASSAYS: CONC %Cu',13X,F4.1.5X.F4.1) 51 FORMAT(9X,' TAIL %Cu',14X,F4.2,5X,F4.2) 60 FORMAT(9X,' ') 61 FORMAT(' ') C GOTO 999 C DISK SAVE FORMATS: C TIME,DATE,ETC 110 FORMAT(F3.0,F3.0,F6.0,F3.0,F3.0) C P A X , SCAV AIR, MIBC 120 FORMAT(F5.1,F5.1,F5.1,F5.1) 121 FORMAT(F4.1,F4.1,F4.1,F4.1) 122 FORMAT(F5.1,F5.1,F5.1,F5.1) C COLUMN LEVELS- 1,2,3,4 130 FORMAT(F4.1,F4.1,F4.1,F4.1) 131 FORMAT(F4.1,F4.1,F4.1,F4.1) 132 FORMAT(F4.1,F4.1,F4.1,F4.1) 133 FORMAT(F4.1,F4.1,F4.1,F4.1) C COLUMN AIRS-1,2,3,4 140 FORMAT(F4.1,F4.1,F4.1,F4.1) 213 141 FORMAT(F4.1,F4.1,F4.1,F4.1) 142 FORMAT(F4.1,F4.1,F4.1,F4.1) 143 FORMAT(F4.1,F4.1,F4.1,F4.1) C ASSAY LIMITS 150 FORMAT(F4.1,F4.1) 151 FORMAT(F4.2,F4.2) 161 FORM ATC') C 999 STOP END C SUBROUTINE DELAY(DUMMY) INTEGER DUMMY DO 10 1=1,10 DO 20 J=1,10 J=J 20 CONTINUE 10 CONTINUE C RETURN END APPENDIX 6 - K N O W L E D G E B A S E DOCUMENTATION FILE: CUXJAN15.DOC Knowledge Base Documentation Knowledge Base : CUEXPERT.SPR Documentation File : CUEXPERT.DOC Subject # 1 : ASSAYS & O/H Trigger rule # 1 Logic Type Boolean Scan Delay 15 seconds Input Delay 1 minutes Rule # 1 : TRIGGER explanation NOTS USED, 0100 TRUE : Act Blk # 7 : TRIGGER ACTIONS FALSE : Act Blk # 19 : TRIGGER FAIL Lock = on IS WATCHDOG ON and NOT MECHDOWN and IS UPDATE ON and NEXT SUB or FALSE DUMMY Rule # 6 : GRADE LOW explanation TRUE : Act Blk # 50 : GRADE LOW MESS IS CONCU < GRADELOW Rule # 7 : GRADE HIGH explanation TRUE : Act Blk # 21 : GRADE HI MESS IS CONCU > GRADEHI Rule # 8 : GRADE WORSE explanation TRUE : Act Blk # 28 : FAVOURED GRADE IS DCONC% > DTAIL% and TAIL HIGH and GRADE LOW Rule # 9 : IRON HIGH explanation USED W/ PAX CHAN, NOTS 011 TRUE : Act Blk # 32 : IRON HIGH MESS IS CONFE > CONCU and NOT TAIL HIGH and NOT GRADE LOW Rule #10: LEAD HIGH explanation IS CONPB > CONPBHI Rule #11: TAIL LOW explanation TRUE : Act Blk # 23 : TAIL LOW MESS ISTAILCU<TAILLOW Rule #15: TAIL HIGH explanation TRUE : Act Blk # 45 : TAIL HIGH MESS ISTAILCU>TAILHI Rule #20: CIRCUIT OKAY explanation RULES CONTAIN NOTS -111001 TRUE : Act Blk # 25 : CIRCUIT OK NOT TAIL HIGH and NOT GRADE LOW and NOT IRON HIGH and IS HEAVY=0 and IS LIGHT=0 and NOT TAIL LOW Rule # 22 : WASH WTR OFF explanation TRUE : Act Blk # 35 : WASH OFF MESS GRADE LOW and TAIL HIGH Rule # 24 : WASH WTR ON explanation LOW G&T or CIRCUIT HOLD Rule # 25 : LOW G&T explanation GRADE LOW and TAIL LOW Rule # 26: CIRCUIT HOLD explanation TRUE : Act Blk # 40 : CIRCUIT LIGHT IS LIGHT ON or CCT LOOKS LITE Rule # 28 : CCT LOOKS HVY explanation GRADE HIGH and TAIL HIGH Rule # 29 : CCT LOOKS LITE explanation LOW G&T Rule #30 :LOWG&HIGHT explanation GRADE LOW and TAIL HIGH Rule #31 : CIRCUIT PULL explanation TRUE : Act Blk # 38 : CIRCUIT HEAVY IS HEAVY ON or CCT LOOKS HVY or LOW G & HIGH T Rule #33: TAIL WORSE explanation TRUE : Act Blk # 30 : FAVOURED TAIL IS DTAIL% > DCONC% and TAIL HIGH and GRADE LOW 217 Rule #39: G&T OK explanation CHQS NOT USED, NOTS 11 NOT GRADE LOW and NOT TAIL HIGH Rule # 40 : FLATFLOTS explanation FLAG SET, POSSIBLY TOO MUCH PAX IS FLATFLOT=1 Rule #42: NEXT SUB explanation TRUE : Act Blk #109 : NEXT ACTION Lock = on IS STARTSUB%=1 and IS PAXSUB%=0 and IS MIBCSUB%=0 and IS COLSUB%=0 and IS ENDSUB%=0 Rule #43: TRUE DUMMY explanation IS 1=1 Rule #52: FALSE DUMMY explanation IS 1=0 Rule # 66 : PAX LAST OK explanation ISPAXDONE%=1 and IS CONCDIF% > 0 or IS TAILDIF% > 0 Rule # 70 : GOOD PAX MOVE explanation TRUE : Act Blk #140 : PAX RERUN MORE PAX DOWN or MORE PAX UP Rule # 71 : MORE PAX DOWN explanation ISCONCDIF%>0 and IS PAXDOWN% = 1 and IS PAXDONE% = 1 Rule #72: MORE PAX UP explanation ISTAILDIF%>0 and ISPAXUP%=1 and ISPAXDONE%=1 Rule #79:MECHDOWN explanation TRUE : Act Blk #166 : MECH MESS FALSE : Act Blk #166 : MECH MESS IS MECHDOWN ON Act Blk # 1 : RECOVERY EUR400 = 100 * (CONCU/FEEDCU) * (FEEDCU-TAILCU)/(CONCU-TAILCU) EUR170 = CONCU + 0.6 * CONPB Act Blk # 4 : RESET FLAGS COUNT% = COUNT% + 1 DTAIL% = (TAILCU-TAILHI)/TAILHI : DCONC% = (GRADELOW-CONCU)/GRADELOW Act Blk # 7 : TRIGGER ACTIONS Act Blk #122 : SET REPORTS Act Blk #130 : CHECK TIMERS Act Blk #154 : SET ACTION ON OPENREPORT(ASSAY$) IF ACTIONON%=0 : REPORT(DATE,' CONTROL ACTIONS TAKEN AT: 'TIME) IF ACTIONON%>0 : REPORT(DATE,' NO CONTROL ACTIONS TAKEN '.TIME) Act Blk # 1 : RECOVERY Act Blk # 8 : STATUS Act Blk #135 : CHECK DIRECTN Act Blk # 4 : RESET FLAGS FIRE%=1 : ESREPORT = 1 : NEXT% = NEXT% + 1 PRINT(") Act Blk # 8 : STATUS REPORTf ') REPORT(' CU CIRCUIT STATUS - CONTROL ACTION BEING TAKEN, RUN# = \COUNT%) REPORT(' - CONC ASSAYS AT \EUI50,' = \CONCU,' %CU') REPORT(' ',CONPB,'%PB') REPORTf '.CONFE,' %V~U) REPORTf '.PYRITE,' %PYR") REPORTf - TAIL ASSAYS AT '.EUI51,' = '.TAILCU,' %CU') REPORTC - FEED ASSAYS AT '.EUI52,' = '.FEEDCU,' %CU') REPORTC ') Act Blk #19: TRIGGER FAIL Act Blk #122 : SET REPORTS IF FIRE%=1 : EXIT IF ACTIONON%=0 : PRINT('') IF ACTIONON%=0 : PRINT(' ASSAY SUBJECT FAILED, AC71ONON=0 ') OPENREPORT(ASSAY$) : REPORTC') CCTHOLD% = 0 : CCTPULL% = 0 TAILHIGH% = 0 : TAILLOW% = 0 : GRADEHI% = 0 : GRADELOW% = 0 : GTLOW% = 0 GRADEFAV% = 0 : TAILFAV% = 0 : IRONHIGH% = 0 : LEADHIGH% = 0 PAXFLG1% = 0 : PAXFLG2% = 0 : PAXFLG3% = 0 : PAXFLG4% = 0 Act Blk # 21 : GRADE HI MESS PRINTC * CU GRADE IS CONSIDERED HIGH, HIGH GRADE IS \GRADEHI) REPORTC * CU GRADE IS CONSIDERED HIGH, HIGH GRADE IS '.GRADEHI) GRADEHI% = 1 Act Blk # 23 : TAIL LOW MESS PRINTC * CU TAIL IS CONSIDERED LOW, LOW POINT IS: '.TAILLOW) REPORTC * CU TAIL IS CONSIDERED LOW. LOW POINT IS: \TAILLOW) TAILLOW% = 1 Act Blk # 25 : CIRCUIT OK PRINTC * CIRCUIT APPEARS OK, NO ACTION TAKEN") REPORTC * CIRCUIT APPEARS OK, NO ACTION TAKEN') ACTIONON% = NEXT% Act Blk # 28 : FAVOURED GRADE 219 PRINTC * PAX GRADE CONTROL IS CURRENTLY FAVOURED ') REPORTf * PAX GRADE CONTROL IS CURRENTLY FAVOURED') GRADEFAV% = 1 Act Blk # 30 : FAVOURED TAIL PRINTC * PAX TAIL CONTROL IS CURRENTLY FAVOURED') REPORTC * PAX TAIL CONTROL IS CURRENTLY FAVOURED') TAILFAV% = 1 Act Blk #32 : IRON HIGH MESS IRONS =' * IRON IN CONC IS HIGHER THAN CU IN CONC' REPORT(IRON$) : PRINT(IRON$) IRONHIGH% = 1 Act Blk # 34 : WASH ON MESS PRINTC * IF WASH WATER OFF, SUGGEST TURNING IT ON') REPORTC * IF WASH WATER OFF, SUGGEST TURNING IT ON') Act Blk # 35 : WASH OFF MESS PRINTC * IF WASH WATER ON, SUGGEST TURNING IT OFF') REPORTC * IF WASH WATER ON, SUGGEST TURNING IT OFF) Act Blk # 38 : CIRCUIT HEAVY PRINTC * CIRCUIT NEEDS TO BE PULLED HARDER') REPORTC * CIRCUIT NEEDS TO BE PULLED HARDER') HEAVY = 0 : CCTPULL% = 1 Act Blk # 40 : CIRCUIT LIGHT PRINTC * CIRCUIT NEEDS TO BE HELD BACK') REPORTC * CIRCUIT NEEDS TO BE HELD BACK') LIGHT = 0 : CCTHOLD% = 1 Act Blk # 45 : TAIL HIGH MESS PRINTC * CU TAIL IS CONSIDERED HIGH, ACCEPTABLE TAIL IS \TAILHI) REPORTC * CU TAIL IS CONSIDERED HIGH, ACCEPTABLE TAIL IS \TAILHI) TAILHIGH% = 1 Act Blk # 50 : GRADE LOW MESS PRINTC * CU GRADE IS CONSIDERED LOW, ACCEPTABLE GRADE IS '.GRADELOW) REPORTC * CU GRADE IS CONSIDERED LOW, ACCEPTABLE GRADE IS'.GRADELOW) GRADELOW% = 1 Act Blk # 53 : LOW G&T ACTION GTLOW%=1 Act Blk #109 : NEXT ACTION STARTSUB%=1 : PAXSUB%=1 : MIBCSUB%=0 : COLSUB%=0 : ENDSUB%=0 Act Blk #122 : SET REPORTS ASSAY$='ASSAY.TXT PAX$='PAX.TXT MIBC$='MIBC.TXT COL$='COLTXP END$='END.TXT REP$='CUX.TXT PUMP$='PUMPBOX.TXT M ECH$='M ECH T X T 220 Act Blk #130 : CHECK TIMERS NEWTIME%=EUI118 DTIME% = NEWTIME% - OLDTIME% OLDTIME% = NEWTIME% Act Blk #135 : CHECK DIRECTN TAILDB% = 0.25 : GRADEDB% = 0.5 CONCDIF% = CONCU - OLDGRADE% - GRADEDB% TAILDIF% = OLDTAIL% - TAILCU - TAILDB% OLDTAIL% = TAILCU : OLDGRADE% = CONCU Act Blk #140 : PAX RERUN PAXUP% = 0 : PAXDOWN% = 0 : PAXDONE% = 0 RERUNS = 1 * TAIL OR GRADE MOVED IN RIGHT DIRECTION, RERUN PAX CTRL' RERUNS =' * RERUN PAX CTRL; GRADE & TAIL CHANGE =') REPORT(TIME,RERUN$,CONCDIF%,TAILDIF%) : PRINT(TIME,RERUN$,CONCDIF%,TAILDIF%) IFACTIONON% = 0:EXIT ACTIONON% = NEXT% Act Blk #154 : SET ACTION ON IF (ACTIONON% = NEXT%): ACTIONON% = 0 IF ((ACTIONON% > 0) AND (DTIME% > 2400)): ACTIONON% = 0 Act Blk #166 : MECH MESS MECH$ = 'MECH.TXT OPENREPORT(MECHS) PRINTC MECHDOWN= '.MECHDOWN,' PAST = ',PASTMECH%) IF (MECHDOWN = PASTMECH%): EXIT MECHON$=' ****** SUPERVISORY CU CONTROL SUSPENDED FOR MECHDOWN FLAG' MECHOFF$=' ****** SUPERVISORY CONTROL ACTIVE - SUSPEND CLEARED' IF MECHDOWN=1 : REPORT(TIME,MECHONS) IF (MECHDOWN=0 AND PASTMECH%=1) : REPORT(TIME,MECHOFF$) PASTMECH% = MECHDOWN CLOSEREPORT STR$ = 'PIP LST:=' + MECH$ : JUNK% = EXECUTE(STR$) UPDATE = 0 Subject # 2 : PAX CTRL Trigger rule # 1 Logic Type Boolean Scan Delay 15 seconds Input Delay 1 minutes Rule # 1 : TRIGGER explanation TRUE : Act Blk # 18 : TRIGGER ACTION FALSE : Act Blk # 15 : TRIGGER FAIL Lock = on IS FIRE%=1 and IS ACTIONON%= 0 and IS OTHERCTRL% = 0 and IS PAXDONE% = 0 and NEXTSUB Rule #3 :TAILLOW explanation ISTAILLOW% = 1 221 Rule # 4 : JUNK1 explanation Rule # 5 : DECREASE PAX explanation NOTS USED 01/00/00 TRUE : Act Blk # 1 : PAX DOWN FALSE : Act Blk # 25 : RUN FLAGS GRADE LOW or GRADE CTRL FAV or FLAT FLOAT or TAIL LOW or IRON HIGH and TAIL CTRL FAV or IRON HIGH or GR OKTAIL LO Rule # 6 : JUNK explanation Rule # 8 : GRADE LOW explanation IS GRADELOW% = 1 Rule # 9 : INCREASE PAX explanation NOTS USED 01/00/0 T R U E : Act Blk # 7 : PAX UP FALSE : Act Blk # 25 : RUN FLAGS TAIL HIGH or LEAD HIGH or GR OKTAIL FAV and GRADE CTRL FAV or TAIL CTRL FAV Rule #16: TAIL HIGH explanation IS TAILHIGH%=1 Rule #17:NEXTSUB explanation TRUE : Act Blk # 27 : NEXTACTION IS STARTSUB%=1 and IS PAXSUB%=1 and IS MIBCSUB%=0 and IS COLSUB%=0 and IS ENDSUB%=0 Rule # 29 : GR OKTAIL FAV explanation IS GRADELOW%=0 and IS TAILFAV% = 1 Rule #32: LEAD HIGH explanation IS LEADHIGH%=1 Rule # 34 :GR OKTAIL LO explanation NOTS USED 10 GRADE LOW and TAIL LOW Rule # 35 : GRADE CTRL FAV explanation IS GRADEFAV% = 1 Rule # 38 : TAIL CTRL FAV explanation IS TAILFAV%=1 Rule # 41 : FLAT FLOAT explanation IS FLATFLOT = 1 Rule #42: IRON HIGH explanation ISIRONHIGH% = 1 Rule #45: FLAT FLOATS explanation IS FLATFLOT =1 Act Blk # 1 : PAX DOWN Act Blk # 35 : PAX STEP DOWN NEWSP% = PAXSP - PAXSTEP% IF NEWSP% < PAXLOW : NEWSP% = PAXLOW ST% = PAXSP - NEWSP% PAXSP = NEWSP% PRINTC * DECREASED PAX ADDITION BY \ST%: NEW SP = \NEWSP%) REPORTC * DECREASED PAX ADDITION BY \SJ%; NEW SP = \NEWSP%) PAXDOWN%=1 Act Blk # 25 : RUN FLAGS Act Blk # 7 : PAX UP Act Blk # 40 : PAX STEP UP NEWSP% = PAXSP + PAXSTEP% IF NEWSP% > PAXHIGH : NEWSP% = PAXHIGH ST% = NEWSP%-PAXSP PAXSP = NEWSP% PRINTC * INCREASED PAX ADDITION BY ',ST%; NEW SP = \NEWSP%) REPORTC * INCREASED PAX ADDITION BY \ST%,' NEW SP = \NEWSP%) PAXUP%=1 Act Blk # 25 : RUN FLAGS Act Blk # 15 : TRIGGER FAIL IF ACTIONON%=0 : PRINT(' PAX SUBJECT FAILED, ACTIONON=0') OPENREPORT(PAX$) : REPORTC') Act Blk # 18 : TRIGGER ACTION OPENREPORT(PAX$) REPORTC PAX CONTROL EXECUTED ') PRINTC PAX CONTROL EXECUTED (CON)') ACTIONON% = NEXT% Act Blk # 25 : RUN FLAGS PAXDONE% = 1 : ACTIONON% = NEXT% + 1 STARTSUB%=1 : PAXSUB%=1 : MIBCSUB%=1 : COLSUB%=1 : ENDSUB%=1 Act Blk # 27 : NEXTACTION STARTSUB%=1 : PAXSUB%=1 : MIBCSUB%=1 :COLSUB%=0 : ENDSUB%=0 Act Blk # 35 : PAX STEP DOWN PAXSTEP% = PAXSTEP IF (CONCU < (PASTCONC% - 2)) : VLGRADE%=1 IF ((VLGRADE%=1) OR (FLATFLOT=1)) : PAXSTEP% = 2*PAXSTEP IF (CONCU > (GRADELOW - GRADEDB%)): PAXSTEP% = 0.5 * PAXSTEP% IF (TAILCU < (TAILLOW - TAILDB%)) : PAXSTEP% = 1.5*PAXSTEP 223 IF ((IR0NHIGH%=1) AND (PAXSTEP%=PAXSTEP)) : PAXSTEP% = 0.5*PAXSTEP PASTCONC% = CONCU : VLGRADE%=0 Act Blk # 40 : PAX STEP UP PAXSTEP% = PAXSTEP IF (TAILCU > (PASTTAIL% + 1)) : PAXSTEP% = 2*PAXSTEP IF (TAILCU < (TAILHI + TAILDB%)) : PAXSTEP% = 0.5 * PAXSTEP% IF (COUNT% = 1) : PAXSTEP% = PAXSTEP PASTTAIL% = TAILCU Subject # 3 : MIBC/SCAV CTRL Trigger rule* 1 Logic Type Boolean Scan Delay 15 seconds Input Delay 1 minutes Rule # 1 : TRIGGER explanation TRUE : Act Blk # 27 : TRIGGER ACTION FALSE : Act Blk # 25 : TRIGGER FAIL Lock = on IS FIRE%=1 and CTRL ACTIONS and NEXTSUB Rule # 3 : MIBC INCREASE explanation TRUE : Act Blk # 1 : MIBC UP FALSE : Act Blk # 34 : ACTION FLAGS SCAVAIRINCR and MAX SCAVAIR Rule # 4 : MIN SCAVAIR explanation IS SCAIRSP<=SCAVAIRL Rule # 5 : MIBC DECREASE explanation TRUE : Act Blk # 2 : MIBC DOWN FALSE : Act Blk # 34 : ACTION FLAGS MIN SCAVAIR and SCAV AIR DECR Rule # 6:SCAVAIRINCR explanation TRUE : Act Blk # 11 : SCAV AIR UP FALSE : Act Blk # 34 : ACTION FLAGS IS TAILHIGH%=1 Rule #10: SCAV AIR DECR explanation TRUE : Act Blk # 16 : SCAV AIR DOWN FALSE : Act Blk # 34 : ACTION FLAGS IS CCTHOLD% = 1 or IS GTLOW% = 1 Rule #13 : CTRL ACTIONS explanation IS ACTIONON%=0 224 and IS PAXD0NE%=1 and IS C0LMIBC%=1 Rule #15 :MAXSCAVAIR explanation IS SCAIRSP >= SCAVAIRH Rule #19:NEXTSUB explanation TRUE : Act Blk # 37 : NEXTACTION IS STARTSUB%=1 and IS PAXSUB%=1 and IS MIBCSUB%=1 and IS COLSUB%=0 and IS ENDSUB%=0 Act Blk # 1 : MIBC UP NEWSP% = MIBCSP + MIBCSTEP IF NEWSP% > MIBCHI: NEWSP% = MIBCHI ST% = NEWSP% - MIBCSP : MIBCSP = NEWSP% PRINTC * INCREASED MIBC BY ',ST%,' NEW SP = ',NEWSP%,' CC/MIN') REPORTC * INCREASED MIBC BY \ST%; NEW SP = \NEWSP%,' CC/MIN') Act Blk # 34 : ACTION FLAGS Act Blk # 2 : MIBC DOWN NEWSP% = MIBCSP - MIBCSTEP IF NEWSP% < MIBCLOW : NEWSP% = MIBCLOW ST% = MIBCSP - NEWSP% : MIBCSP = NEWSP% PRINTC * DECREASED MIBC BY ',ST%,' NEW SP = ',NEWSP%,' CC/MIN*) REPORTC * DECREASED MIBC BY \ST%,' NEW SP = \NEWSP%,' CC/MIN') Act Blk # 34 : ACTION FLAGS Act Blk #11 :SCAVAIRUP NEWSP% = SCAIRSP + SAIRSTEP IF NEWSP% > SCAVAIRH : NEWSP% = SCAVAIRH ST% = NEWSP% - SCAIRSP : SCAIRSP = NEWSP% PRINTC * INCREASED SCAV AIR BY ',ST%,' NEW SP = '.NEWSPVo,' CFM') REPORTC * INCREASED SCAV AIR BY \ST%,' NEW SP = ',NEWSP%,' CFM') Act Blk # 34 : ACTION FLAGS Act Blk # 16 : SCAV AIR DOWN NEWSP% = SCAIRSP - SAIRSTEP IF NEWSP% < SCAVAIRL : NEWSP% = SCAVAIRL ST% = SCAIRSP - NEWSP% : SCAIRSP = NEWSP% PRINTC * DECREASED SCAV AIR BY ',ST%,' NEW SP = \NEWSP%,' CFM') REPORTC * DECREASED SCAV AIR BY ',ST%,' NEW SP = ',NEWSP%,' CFM') Act Blk # 34 : ACTION FLAGS Act Blk # 25 : TRIGGER FAIL IF ACTIONON%=0 : PRINT(' MIBC/SCAV SUBJECT FAILED, ACTIONON=0 ') OPENREPORT(MIBC$): REPORTC') Act Blk # 27 : TRIGGER ACTION OPENREPORT(MIBC$) REPORTC MIBC/SCAVENGER CONTROL EXECUTED') PRINTC MIBC/SCAVENGER CONTROL EXECUTED ') ACTIONON% = NEXT% Act Blk # 34 : ACTION FLAGS COLMIBC%=0 : OTHERCTRL% = 1 : ACTIONON% = NEXT% + 1 STARTSUB%=1 : PAXSUB%=1 : MIBCSUB%=1 : COLSUB%=1 : ENDSUB%=1 Act Blk # 37 : NEXTACTION STARTSUB%=1 : PAXSUB%=1 : MIBCSUB%=1 : COLSUB%=1 : ENDSUB%=0 Subject # 4 : END SUB Trigger rule* 1 Logic Type Boolean Scan Delay 15 seconds Input Delay 1 minutes Rule # 1 : TRIGGER explanation TRUE : Act Blk # 11 : TRIGGER ACTN FALSE : Act Blk # 36 : TRIGGER FAIL Lock = on IS FIRE%=1 and NEXTSUB Rule # 3 : NEXTSUB explanation TRUE : Act Blk # 30 : NEXTACTION IS STARTSUB%=1 and IS PAXSUB%=1 and IS MIBCSUB%=1 and IS COLSUB%=1 and IS ENDSUB%=1 Act Blk # 5 : PRINT REPORT IF ESREPORT=0 : EXIT PRINTC — SEND REPORT TO PRINTER -—') REPORTC ') CLOSEREPORT STR$ = 'PIP LST:='+ ASSAY$ : JUNK% = EXECUTE(STR$) STR$ = 'PIP LST:='+ PAX$ : JUNK% = EXECUTE(STR$) STR$ = 'PIP LST:='+ MIBC$ : JUNK% = EXECUTE(STR$) STR$ = 'PIP LST:='+ COL$ : JUNK% = EXECUTE(STR$) STR$ = 'PIP LST:='+ END$ : JUNK% = EXECUTE(STR$) STR$ = 'PIP LST:='+ SPCHQ$ : JUNK% = EXECUTE(STR$) ES RE PORT = 0 Act Blk # 11 : TRIGGER ACTN Act Blk # 5 : PRINT REPORT Act Blk # 18 : RUN FLAGS EUR402=0 : FIRE% = 0 Act Blk #18 : RUN FLAGS IF ((PAXDONE%=1) AND (OTHERCTRL%=1)) : BOTH% = 1 IF BOTH%=1 : PAXDONE% = 0 IF BOTH%=1 : OTHERCTRL% = 0 IF BOTH%=1 : BOTH%=0 Act Blk # 22 : PRINT STAT PRINTC \ACTIONON%,' ',PAXDONE%,' ',COLMIBC%,' ',OTHRECTRL%,' ',NEXT%) Act Blk #30 : NEXTACTION 226 STARTSUB%=1 : PAXSUB%=0 : MIBCSUB%=0 : COLSUB%=0 : ENDSUB%=0 Act Blk # 36 : TRIGGER FAIL IF ACTIONON%=0 : PRINT(" END SUBJECT FAILED, ACTIONON=0") OPENREPORT(END$): REPORTC •) Act Blk # 43 : ZACTION FIRE%=1 : ES REPORT = 1 STARTSUB%=1 : PAXSUB%=1 : MIBCSUB%=1 : COLSUB%=1 : ENDSUB%=1 Subject # 5 : SUPER RUNNING Trigger rule # 1 Logic Type Boolean Scan Delay 5 seconds Input Delay 1 minutes Rule # 1 : TRIGGER explanation TRUE : Act Blk # 1 : TRIGGER ACTION IS WATCHDOG ON Act Blk # 1 : TRIGGER ACTION DII15=1 STARTSUB%=1 IF EUR402 = 0 : FIRE%=0 IF FIRE%=0 : PAXSUB%=0 IF FIRE%=0: MIBCSUB%=0 IF FiRE%=0 : COLSUB%=0 IF FIRE%=0: ENDSUB%=0 Subject # 6 : COLUMN CTRL Trigger rule # 9 Logic Type Boolean Scan Delay 15 seconds Input Delay 1 minutes Rule # 1 : COL1 AIR INCR explanation TRUE : Act Blk # 2 : COL1 AIR UP FALSE : Act Blk #100 : RUN FLAGS IS CCTPULL% = 1 or IS COL1SLOW ON Rule # 2 : COL1 AIR DECR explanation TRUE : Act Blk # 1 : COL1 AIR DOWN FALSE : Act Blk #100 : RUN FLAGS IS CCTHOLD% = 1 or IS COL1 FAST ON Rule # 3 : COL2 AIR INCR explanation TRUE : Act Blk # 4 : COL2 AIR UP FALSE : Act Blk #100 : RUN FLAGS IS CCTPULL%=1 or IS COL2SLOW ON Rule # 4 : COL2 AIR DECR explanation TRUE : Act Blk # 3 : COL2 AIR DOWN FALSE : Act Blk #100 : RUN FLAGS IS CCTH0LD%=1 or IS COL2FAST ON or IS 0=1 Rule # 5 : COL3 AIR INCR explanation TRUE : Act Blk # 6 : COL3 AIR UP FALSE : Act Blk #100 : RUN FLAGS IS CCTPULL%=1 or IS COL3SLOW ON Rule # 6 : COL3 AIR DECR explanation TRUE : Act Blk # 5 : COL3 AIR DOWN FALSE : Act Blk #100 : RUN FLAGS IS CCTHOLD%=1 or IS COL3FAST ON or IS 0=1 Rule # 7 : COL4 AIR INCR explanation TRUE : Act Blk # 8 : COL4 AIR UP FALSE : Act Blk #100 : RUN FLAGS IS CCTPULL%=1 or IS COLRSLOW ON Rule # 8 : COL4 AIR DECR explanation TRUE : Act Blk # 7 : COL4 AIR DOWN FALSE : Act Blk #100 : RUN FLAGS IS CCTHOLD%=1 or IS COLRFAST ON Rule # 9 : TRIGGER explanation TRUE : Act Blk # 87 : TRIGGER ACTION FALSE : Act Blk # 89 : TRIGGER FAIL Lock = on IS FIRE%=1 and CTRL ACTION? and NEXTSUB Rule # 27 : MAX CLNR AIR explanation MAX COL1 AIR and MAX COL2 AIR and MAX COL3 AIR Rule # 28 : MAX COL1 AIR explanation IS C1AIRSP >= COL1AIRH Rule #29:MAXCOL2AIR explanation IS C2AIRSP >= COL2AIRH Rule #30 :MAXCOL3AIR explanation IS C3AIRSP >= COL3AIRH Rule #34: MIN CLNR AIR explanation MIN COL1 AIR and MIN COL2 AIR and MIN COL3 AIR 228 Rule #35 : MIN C0L1 AIR explanation IS C1AIRSP <= COL1AIRL Rule #36:MINCOL2AIR explanation IS C2AIRSP <= COL2AIRL Rule #37:MINCOL3AIR explanation IS C3AIRSP <= COL3AIRL Rule # 41 : MAX CLNR LVL explanation MAX COL1 LVL and MAX COL2 LVL and MAX COL3 LVL Rule #42 :MAXCOL1 LVL explanation IS C1LVLSP <= COL1LVLH Rule # 43 : MAX COL2 LVL explanation IS C2LVLSP <= COL2LVLH Rule #44 :MAXCOL3LVL explanation IS C3LVLSP <= COL3LVLH Rule #48: MIN CLNR LVL explanation MIN COL1 LVL and MIN COL2 LVL and MIN COL3 LVL Rule # 49 : MIN COL1 LVL explanation IS C1LVLSP >= COL1LVLL Rule #50:MINCOL2LVL explanation IS C2LVLSP >= COL2LVLL Rule #51 :MINCOL3LVL explanation IS C3LVLSP >= COL3LVLL Rule # 55 : MAX COL4 AIR explanation IS GRAIRSP >= COLRAIRH Rule #57:MINCOL4AIR explanation IS CRAIRSP <= COLRAIRL Rule # 59 : MAX COL4 LVL 229 explanation IS CRLVLSP <= COLRLVLH Rule #61 : MIN COL4 LVL explanation IS CRLVLSP >= COLRLVLL Rule # 63 : COL1 LVL INCR explanation TRUE : Act Blk # 43 : COL1 LVL UP FALSE : Act Blk #100 : RUN FLAGS COL1 AIR INCR and MAX COL1 AIR Rule # 66: CTRL ACTION? explanation IS ACTIONON%=0 and IS COLMIBC%=0 and IS PAXDONE%=1 Rule # 68 : COL2 LVL INCR explanation TRUE : Act Blk # 49 : COL2 LVL UP FALSE : Act Blk #100 : RUN FLAGS COL2 AIR INCR or IS 0=1 and MAX COL2 AIR Rule # 69 : COL1 LVL DECR explanation TRUE : Act Blk # 52 : COL1 LVL DOWN FALSE : Act Blk #100 : RUN FLAGS COL1 AIR DECR and MIN COL1 AIR Rule # 72 : COL2 LVL DECR explanation TRUE : Act Blk # 50 : COL2 LVL DOWN FALSE : Act Blk #100 : RUN FLAGS COL2 AIR DECR or FALSE DUMMY and MIN COL2 AIR Rule # 74 : FALSE DUMMY explanation IS 0=1 Rule # 75 : NEXTSUB explanation TRUE : Act Blk #103 : NEXTACTION IS STARTSUB%=1 and IS PAXSUB%=1 and FALSE DUMMY or IS MIBCSUB%=1 and IS COLSUB%=1 and IS ENDSUB%=0 Rule # 77 : COL3 LVL INCR explanation TRUE : Act Blk # 55 : COL3 LVL UP FALSE : Act Blk #100 : RUN FLAGS C0L3 AIR INCR or IS 0=1 and MAX COL3 AIR Rule # 80 : COL3 LVL DECR explanation TRUE : Act Blk # 57 : COL3 LVL DOWN FALSE : Act Blk #100 : RUN FLAGS COL3 AIR DECR and MIN COL3 AIR Rule #83:COL4LVLINCR explanation TRUE : Act Blk # 59 : COL4 LVL UP FALSE : Act Blk #100 : RUN FLAGS COL4 AIR INCR or IS 0=1 and MAX COL4AIR Rule # 87 : COL4 LVL DECR explanation TRUE : Act Blk # 60 : COL4 LVL DOWN FALSE : Act Blk #100 : RUN FLAGS COL4AIR DECR or IS 0=1 and MIN COL4 AIR Act Blk # 1 : COL1 AIR DOWN NEWSP%=C1 AIRSP-C1AIRSTEP : COL1 FAST=0 IF NEWSP% < COL1AIRL : NEWSP% = COL1AIRL ST%=C1 AIRSP-NEWSP% : C1AIRSP = NEWSP% PRINTC * DECREASED COL#1 AIR BY \ST%,' NEW SP = '.NEWSPo/o,' CFM") REPORTC * DECREASED COL#1 AIR BY \ST%,' NEW SP = ',NEWSP%,' CFM') Act Blk #100: RUN FLAGS Act Blk # 2 : COL1 AIR UP NEWSP% = C1 AIRSP + C1 AIRSTEP : COL1 SLOW = 0 IF NEWSP% > COL1AIRH : NEWSP% = COL1AIRH ST% = NEWSP% - C1 AIRSP : C1 AIRSP = NEWSP% PRINTC * INCREASED COL#1 AIR BY ',ST%; NEW SP = '.NEWSF50/,,,' CFM') REPORTC * INCREASED COL#1 AIR BY \ST%,' NEW SP = \NEWSP%,' CFM') Act Blk #100 : RUN FLAGS Act Blk # 3 : COL2 AIR DOWN NEWSP% = C2AIRSP - C2AIRSTEP : COL2FAST = 0 IF NEWSP% < COL2AIRL : NEWSP% = COL2AIRL ST% = C2AIRSP - NEWSP% : C2AIRSP = NEWSP% PRINTC * DECREASED COL#2 AIR BY ',ST%,' NEW SP = ',NEWSP%,' CFM') REPORTC * DECREASED COL#2 AIR BY ',ST%; NEW SP = \NEWSP%,' CFM') Act Blk #100 : RUN FLAGS Act Blk # 4 : COL2 AIR UP NEWSP% = C2AIRSP + C2AIRSTEP : COL2SLOW = 0 IF NEWSP% > COL2AIRH : NEWSP% = COL2AIRH ST% = NEWSP% - C2AIRSP : C2AIRSP = NEWSP% PRINTC * INCREASED COL#2 AIR BY ',ST%,' NEW SP = ',NEWSP%,' CFM') REPORTC * INCREASED COL#2 AIR BY \ST%,' NEW SP = ',NEWSP%; CFM') Act Blk #100: RUN FLAGS Act Blk # 5 : COL3 AIR DOWN NEWSP% = C3AIRSP - C3AIRSTEP : COL3FAST = 0 IF NEWSP% < C0L3AIRL : NEWSP% = C0L3AIRL ST% = C3AIRSP - NEWSP% : C3AIRSP = NEWSP% PRINTC * DECREASED COL#3 AIR BY ',ST%,' NEW SP = \NEWSP%,' CFM') REPORTC * DECREASED C0L#3 AIR BY ',S1%: NEW SP = '.NEWSPVo,1 CFM') Act Blk #100: RUN FLAGS Act Blk # 6 : C0L3 AIR UP NEWSP% = C3AIRSP + C3AIRSTEP : COL3SLOW = 0 IF NEWSP% > COL3AIRH : NEWSP% = COL3AIRH ST% = NEWSP% - C3AIRSP : C3AIRSP = NEWSP% PRINTC * INCREASED COL#3 AIR BY \ST%,' NEW SP = • .NEWSPV CFM') REPORTC * INCREASED COL#3 AIR BY ',SJ%; NEW SP = •.NEWSPVo,' CFM') Act Blk #100 : RUN FLAGS Act Blk # 7 : COL4 AIR DOWN NEWSP% = CRAIRSP - CRAIRSTEP : COLRFAST = 0 IF NEWSP% < COLRAIRL : NEWSP% = COLRAIRL ST% = CRAIRSP - NEWSP% : CRAIRSP = NEWSP% PRINTC * DECREASED REG COL AIR BY \ST%/ NEW SP = \NEWSP%) REPORTC * DECREASED REG COL AIR BY ,,ST%; NEW SP = \NEWSP%) Act Blk #100: RUN FLAGS Act Blk # 8 : COL4 AIR UP NEWSP% = CRAIRSP + CRAIRSTEP : COLRSLOW = 0 IF NEWSP% > COLRAIRH : NEWSP% = COLRAIRH ST% = NEWSP% - CRAIRSP : CRAIRSP = NEWSP% PRINTC * INCREASED REG COL AIR BY ',ST%: NEW SP = \NEWSP%) REPORTC * INCREASED REG COL AIR BY \ST%,' NEW SP = \NEWSP%) Act Blk #100: RUN FLAGS Act Blk # 43 : COL1 LVL UP COL1SLOW = 0 PRINTC * SUGGEST INCREASING COL#1 LEVEL BY \C1 LVLSTEP) REPORTC * SUGGEST INCREASING COL#1 LEVEL BY \C1 LVLSTEP) Act Blk #100 : RUN FLAGS NEWSP% = C1LVLSP - C1 LVLSTEP : COL1SLOW = 0 IF NEWSP% < COL1LVLH : NEWSP% = COL1LVLH ST% = NEWSP% - C1LVLSP : C1LVLSP = NEWSP% PRINTC * INCREASED COL#1 LEVEL BY \ST%,' NEW SP = \NEWSP%) Act Blk # 49 : COL2 LVL UP COL2SLOW = 0 PRINTC * SUGGEST INCREASING COL#2 LEVEL BY \C2LVLSTEP) REPORTC * SUGGEST INCREASING COL#2 LEVEL BY \C2LVLSTEP) Act Blk #100: RUN FLAGS Act Blk # 50 : COL2 LVL DOWN COL2FAST = 0 PRINTC * SUGGEST DECREASING COL#2 LEVEL BY \C2LVLSTEP) REPORTC * SUGGEST DECREASING COL#2 LEVEL BY \C2LVLSTEP) Act Blk #100: RUN FLAGS Act Blk # 52 : COL1 LVL DOWN COL1FAST = 0 PRINTC * SUGGEST DECREASING COL#1 LEVEL BY \C1 LVLSTEP) REPORTC * SUGGEST DECREASING COL#1 LEVEL BY \C1 LVLSTEP) Act Blk #100 : RUN FLAGS 232 Act Blk #55 : C O L 3 L V L U P C0L3SL0W = 0 PRINTC * SUGGEST INCREASING COL#3 LEVEL BY \C3LVLSTEP) REPORTC * SUGGEST INCREASING COL#3 LEVEL BY \C3LVLSTEP) Act Blk #100 : RUN FLAGS Act Blk # 57 : COL3 LVL DOWN COL3FAST = 0 PRINTC * SUGGEST DECREASING COL#3 LEVEL BY \C3LVLSTEP) REPORTC * SUGGEST DECREASING COL#3 LEVEL BY \C3LVLSTEP) Act Blk #100 : RUN FLAGS Act Blk #59 :COL4LVL UP COLRSLOW = 0 PRINTC * SUGGEST INCREASING REG COL LEVEL BY \CRLVLSTEP) REPORTC * SUGGEST INCREASING REG COL LEVEL BY \CRLVLSTEP) Act Blk #100: RUN FLAGS Act Blk # 60 : COL4 LVL DOWN COLRFAST = 0 PRINTC * SUGGEST DECREASING REG COL LEVEL BY \CRLVLSTEP) REPORTC * SUGGEST DECREASING REG COL LEVEL BY \CRLVLSTEP) Act Blk #100: RUN FLAGS Act Blk # 87 : TRIGGER ACTION OPENREPORT(COL$) REPORTC COLUMN CONTROL EXECUTED ") PRINTC COLUMN CONTROL EXECUTED ') ACTIONON% = NEXT% Act Blk # 89 : TRIGGER FAIL IF ACTIONON%=0 : PRINTC COLUMN SUBJECT FAILED, ACTIONON=0 ') OPENREPORT(COL$): REPORTC") Act Blk #100 : RUN FLAGS OTHERCTRL% = 1 : COLMIBC% = 1 : ACTIONON% = NEXT% + 1 Act Blk #103 : NEXTACTION Act Blk #103 : NEXTACTION STARTSUB%=1 : PAXSUB%=1 : MIBCSUB%=1 : COLSUB%=1 : ENDSUB%=1 Subject # 7 : CHQS Trigger rule # 30 Logic Type Boolean Scan Delay 5 seconds Input Delay 0 minutes Rule # 1 : SUBJECTS explanation Lock = on STARTSUB and PAXSUB and MIBCSUB and COLSUB and ENDSUB Rule # 2 : PAXSUB explanation IS PAXSUB%=1 Rule # 3 : MIBCSUB explanation IS MIBCSUB%=1 Rule # 4 : COLSUB explanation IS COLSUB%=1 Rule # 5 : ENDSUB explanation IS ENDSUB%=1 Rule # 6 : STARTSUB explanation IS STARTSUB%=1 Rule #12 :ACTIONON explanation ISACTIONON%=1 Rule #14:COLMIBC explanation IS COLMIBC%=1 Rule #16:PAXDONE explanation IS PAXDONE%=1 Rule # 18 : OTHERCTRL explanation IS OTHERCTRL%=1 Rule #20: FIRE explanation IS FIRE%=1 Rule #22: UPDATE explanation IS UPDATE ON Rule #24:MECHDOWN explanation IS MECHDOWN OFF Rule # 26 : WATCHDOG explanation IS WATCHDOG ON Rule # 28 : JUNK RUN explanation TRUE : Act Blk # 1 : JUNK IS 1=1 Rule #30: TRIGGER explanation IS 0=1 Act Blk # 1 : JUNK PAXSUB%=0 Subject # 8 : SPR LIMIT CHQS Trigger rule # 1 Logic Type Boolean Scan Delay 5 seconds Input Delay 0 minutes Rule # 1 : TRIGGER explanation TRUE : Act Blk # 15 : TRIGGER ACTION IS WATCHDOG ON Act Blk # 1 ' PAX IF (PAXHIGH < PAXLOW): PAXHIGH = PAXLOW IF (PAXSP > PAXHIGH) : PAXSP = PAXHIGH IF (PAXSP < PAXLOW) : PAXSP = PAXLOW Act Blk # 2 : MIBC IF (MIBCHI < MIBCLOW): MIBCHI = MIBCLOW IF (MIBCSP > MIBCHI) : MIBCSP = MIBCHI IF (MIBCSP < MIBCLOW) : MIBCSP = MIBCLOW Act Blk # 3 : COLUMNS IF (COL1AIRH < COL1AIRL) : COL1AIRH = COL1AIRL IF (COL2AIRH < COL2AIRL) : COL2AIRH = COL2AIRL IF (COL3AIRH < COL3AIRL) : COL3AIRH = COL3AIRL IF (COLRAIRH < COLRAIRL): COLRAIRH = COLRAIRL IF (C1AIRSP > COL1AIRH) : C1AIRSP = COL1AIRH IF (C2AIRSP > COL2AIRH) : C2AIRSP = COL2AIRH IF (C3AIRSP > COL3AIRH) : C3AIRSP = COL3AIRH IF (CRAIRSP > COLRAIRH) : CRAIRSP = COLRAIRH IF (C1 AIRSP < COL1AIRL) : C1 AIRSP = COL1AIRL IF (C2AIRSP < COL2AIRL) : C2AIRSP = COL2AIRL IF (C3AIRSP < COL3AIRL) : C3AIRSP = COL3AIRL IF (CRAIRSP < COLRAIRL) : CRAIRSP = COLRAIRL Act Blk # 4 : SCAVAIR IF (SCAVAIRH < SCAVAIRL) : SCAVAIRH = SCAVAIRL IF (SCAIRSP > SCAVAIRH) : SCAIRSP = SCAVAIRH IF (SCAIRSP < SCAVAIRL) : SCAIRSP = SCAVAIRL Act Blk #12: ASSAYS IF (GRADELOW < 24) : GRADELOW = 24 IF (TAILLOW < 1) : TAILLOW = 1 IF (GRADEHI < GRADELOW): GRADEHI = GRADELOW IF (TAILHI < TAILLOW) : TAILHI = TAILLOW Act Blk # 15 : TRIGGER ACTION Act Blk # 31 : STEP LIMITS Act Blk # 1 : PAX Act Blk # 2 : MIBC Act Blk # 3 : COLUMNS Act Blk #12 : ASSAYS Act Blk # 4 : SCAVAIR Act Blk #31 : STEP LIMITS IF (PAXSTEP > 30) : PAXSTEP = 30 IF(MIBCSTEP>2) :MIBCSTEP = 2 IF (SAIRSTEP > 10): SAIRSTEP = 10 IF (C1 AIRSTEP > 2): C1 AIRSTEP = 2 IF (C2AIRSTEP > 2) : C2AIRSTEP = 2 IF (C3AIRSTEP > 2): C3AIRSTEP = 2 IF (CRAIRSTEP > 2): CRAIRSTEP = 2 Subject # 9 : PUMP HI LEVELS Trigger rule # 1 Logic Type Boolean Scan Delay 5 seconds Input Delay 0 minutes Rule # 1 : TRIGGER explanation TRUE : Act Blk # 14 : TRIGGER ACTIONS IS WATCHDOG ON Rule # 4 : CLNR PBOX HIGH explanation TRUE : Act Blk # 6 : COL 1 & 2 AIR IS FLG19 = 1 Rule # 5 : REG PBOX HIGH explanation TRUE : Act Blk # 7 : REG COL AIR IS FLG20 = 1 Act Blk # 1 : PUMPBOX LEVELS PBOX12$ =' * PUMPBOX HIGH LEVEL, COL#1-#2 AIR SET TO MAX' PBOX4$ = ' * PUMPBOX HIGH LEVEL, REG COL AIR SET TO MAX' Act Blk # 6 : COL 1 & 2 AIR C1AIRSP = COL1AIRH C2AIRSP — COL2AIRH REPORT(TIME,PBOX12$) : PRINT(TIME,PBOX12$) Act Blk # 17 : PRINT REPORT Act Blk # 7 : REG COL AIR CRAIRSP = COLRAIRH PRINT(TIME,PBOX4$) : REPORT(TIME,PBOX4$) Act Blk # 17 : PRINT REPORT Act Blk # 14 : TRIGGER ACTIONS PUMPBOX$ = •PUMPBOX.TXT OPENREPORT(PUMPBOX$) Act Blk # 1 : PUMPBOX LEVELS Act Blk # 17 : PRINT REPORT CLOSEREPORT STR$ = 'PIP LST:=' + PUMPBOX$ : JUNK% = EXECUTE(STR$) Subject # 10 : SCAV FLAGS Trigger rule # 1 Logic Type Boolean Scan Delay 5 seconds Input Delay 0 minutes Rule # 1 : TRIGGER explanation TRUE : Act Blk # 17 : TRIGGER ACTION IS WATCHDOG ON Rule # 4 : SCAV FLAT explanation TRUE : Act Blk # 1 : FLAT ISFLG4 = 1 Rule # 6 : TOO FAST explanation TRUE : Act Blk # 5 : SLOW IS FLG5 = 1 Act Blk # 1 : FLAT PAXSP% = PAXSP PAXSP% = PAXSP% - 2*PAXSTEP IF (PAXSP% < PAXLOW): PAXSP% = PAXLOW PAXSP = PAXSP% SCFLAT$ = ' * OPERATOR SET SCAV AS FLAT, CUT PAX TO SP =' PRINT(TIME,SCFLAT$,PAXSP%) : REPORT(TIME,SCFLAT$,PAXSP%) FLG4 = 0 Act Blk # 20 : PRINT REPORT Act Blk # 5 : SLOW SCAVSP% = SCAIRSP SCAVSP% = SCAIRSP - SAIRSTEP IF (SCAVSP% < SCAVAIRL) : SCAVSP% = SCAVAIRL SCAIRSP = SCAVSP% SCFAST$ = ' * OPERATOR SET SCAVENGER AS TOO FAST, NEW AIR SP PRINT(TIME,SCFAST$,SCAVSP%) : REPORT(TIME,SCFAST$,SCAVSP%) FLG5 = 0 Act Blk # 20 : PRINT REPORT Act Blk # 17 : TRIGGER ACTION SCAV$ = 'SCAV-TXT OPENREPORT(SCAV$) Act Blk # 20 : PRINT REPORT CLOSEREPORT STR$ = 'PIP LST:='+ SCAV$ : JUNK% = EXECUTE(STR$) Subject # 11 : COLUMN FLAGS Trigger rule # 1 Logic Type Boolean Scan Delay 5 seconds Input Delay 0 minutes Rule # 1 : TRIGGER explanation TRUE : Act Blk # 57 : TRIGGER ACTION IS WATCHDOG ON Rule # 2 : TOO FAST explanation TRUE : Act Blk # 1 : FAST IS FLG11=1 orlS FLG12 = 1 or IS FLG13 = 1 or IS FLG14 = 1 Rule # 3 : TOO SLOW explanation TRUE : Act Blk # 2 : SLOW IS FLG15 = 1 or IS FLG16 = 1 or IS FLG17 = 1 or IS FLG18 = 1 Act Blk # 1 : FAST C1AIRSP% = C1 AIRSP IF (FLG11 = 1): C1 AIRSP% = C1 AIRSP - C1AIRSTEP IF (C1 AIRSP% < COL1AIRL) : C1AIRSP% = COL1AIRL C1AIRSP = C1AIRSP% C2AIRSP% = C2AIRSP IF (FLG12 = 1) : C2AIRSP% = C2AIRSP - C2AIRSTEP IF (C2AIRSP% < COL2AIRL): C2AIRSP% = COL2AIRL C2AIRSP = C2AIRSP% C3AIRSP% = C3AIRSP IF (FLG13 = 1): C3AIRSP% = C3AIRSP - C3AIRSTEP IF (C3AIRSP% < COL3AIRL): C3AIRSP% = COL3AIRL C3AIRSP = C3AIRSP% CRAIRSP% = CRAIRSP IF (FLG14 = 1): CRAIRSP% = CRAIRSP - CRAIRSTEP IF (CRAIRSP% < COLRAIRL): CRAIRSP% = COLRAIRL CRAIRSP = CRAIRSP% AIR1 FASTS = 1 * OPERATOR SET COLUMN #1 AS TOO FAST, NEW AIR SP = ' AIR2FASTS = ' * OPERATOR SET COLUMN #2 AS TOO FAST, NEW AIR SP = ' AIR3FASTS =" * OPERATOR SET COLUMN #3 AS TOO FAST, NEW AIR SP = 1 AIR4FASTS =' * OPERATOR SET REG COLUMN AS TOO FAST, NEW AIR SP = IF (FLG11 = 1) : REPORT(TIME,AIR1FAST$,C1AIRSP%) IF (FLG12 = 1): REPORT(TIME,AIR2FAST$,C2AIRSP%) IF (FLG13 = 1) : REPORT(TIME,AIR3FAST$,C3AIRSP%) IF (FLG14= 1) : REPORT(TIME,AIR4FAST$,CRAIRSP%) FLG11 = 0 :FLG12 = 0:FLG13 = 0:FLG14 = 0 Act Blk # 60 : PRINT REPORT Act Blk # 2 : SLOW C1AIRSP% = C1 AIRSP C2AIRSP% = C2AIRSP C3AIRSP% = C3AIRSP CRAIRSP% = CRAIRSP IF (FLG15 = 1): C1AIRSP% = C1AIRSP% - C1 AIRSTEP IF (FLG16 = 1) : C2AIRSP% = C2AIRSP% - C2AIRSTEP IF (FLG17 = 1): C3AIRSP% = C3AIRSP% - C3AIRSTEP IF (FLG18 = 1) : CRAIRSP% = CRAIRSP% - C3AIRSTEP IF (C1 AIRSP% < COL1 AIRL) : C1 AIRSP% = COL1 AIRL IF (C2AIRSP% < COL2AIRL): C2AIRSP% = COL2AIRL IF (C3AIRSP% < COL3AIRL): C3AIRSP% = COL3AIRL IF (CRAIRSP% < COLRAIRL) : CRAIRSP% = COLRAIRL C1AIRSP = C1AIRSP% C2AIRSP = C2AIRSP% C3AIRSP = C3AIRSP% CRAIRSP = CRAIRSP% AIR1 SLOWS =' * OPERATOR SET COLUMN #1 AS TOO SLOW, NEW AIR SP =' AIR2SLOWS = 1 * OPERATOR SET COLUMN #2 AS TOO SLOW, NEW AIR SP =' AIR3SLOWS = ' * OPERATOR SET COLUMN #3 AS TOO SLOW, NEW AIR SP = AIR4SLOWS = 1 * OPERATOR SET REG COLUMN AS TOO SLOW, NEW AIR SP IF (FLG15 = 1): REP0RT(TIME,AIR1SL0W$,C1AIRSP%) IF (FLG16 = 1) : REPORT(TIME,AIR2SLOW$,C2AIRSP%) IF (FLG17 = 1) : REPORT(TIME,AIR3SLOW$,C3AIRSP%) IF (FLG18= 1) : REPORT(TIME,AIR4SLOW$,CRAIRSP%) FLG15 = 0 : FLG16 = 0 : FLG17 = 0 : FLG18 = 0 Act Blk # 60 : PRINT REPORT Act Blk # 57 : TRIGGER ACTION COLFLG$ = 'COLFLG.TXT OPENREPORT(COLFLG$) Act Blk # 60 : PRINT REPORT CLOSEREPORT STR$ = 'PIP LST:='+ COLFLG$ : JUNK% = EXECUTE(STR$) Subject # 12 : READ SP CHANGE Trigger rule # 1 Logic Type Boolean Scan Delay 5 seconds Input Delay 0 minutes Rule # 1 : TRIGGER explanation TRUE : Act Blk # 1 : TRIGGER ACTION IS WATCHDOG ON Act Blk # 1 : TRIGGER ACTION SPCHQ$= ,SPCHQ.TXT OPENREPORT(SPCHQ$) Act Blk # 4 : PAXSPCHQ CLOSEREPORT Act Blk # 4 : PAXSPCHQ IF (OLDPAXSP% = PAXSP): EXIT REPORTfTIME,' * PAX SP CHANGED, WAS •.OLDPAXSPo/o,' IS \PAXSP) OLDPAXSP% = PAXSP APPENDIX 7 - PRELIMINARY OPERATING GUIDELINES 240 PRELIMINARY OPERATING GUIDELINES: A. Grade is Low and Tail is High: 1. Lower the Tail a. check that the scavenger air is reasonable (400 cfm) and raise it's setpoint if necessary. b. check that MIBC addition is reasonable (40 cc/min) and increase it's setpoint if necessary. 2. Longer Term Solution a. pull the circuit harder to decrease the load in the scavenger b. increase the air to #1 and #2 columns, or increase the level if the air is already at the upper limit (25 cfm). c. check and increase regrind column air if it is too low (less than 20 cfm). d. check and increase regrind column level if it is too low (greater than 0.5 ft). e. check and increase #3 column air and level if necessary. B. Grade is OK but Tail is High: 1. Lower the Tail a. check and increase scavenger air if necessary. b. check and increase MIBC if necessary. c. if scavenger air and MIBC are reasonable then increase the xanthate addition setpoint. C. Grade is High and Tail is High: 1. Lower the Tail a. check and increase the scavenger air if necessary. b. check and increase the MIBC if necessary. c. If scavenger air and MIBC are reasonable then increase the xanthate addition. 2. Longer Term Solution a. sacrifice the grade assay to get the tail lowered. Pull the circuit harder (see A2 above). D. Grade High and Tail OK No action is necessary. E. Grade O K and Tail OK No action is necessary. F. Grade Low and Tail OK 1. Raise the Grade a. reduce the xanthate addition 2. Maintain the Tail a. check and increase the MIBC and scavenger air if necessary. G. Grade is High and Tail is Low No action is necessary. H. Grade is OK and Tail is Low No action is necessary. I. Grade is Low and Tail is Low 1. Raise the Grade a. Reduce the xanthate addition 2. Longer Term Solution - slow down the circuit a. Decrease the air to #1 and #2 columns, or decrease the levels if the air is already below a reasonable level (19 cfm). b. Check and decrease the regrind column air and level if necessary. APPENDIX 8 - S U M M A R Y O F SHIFT A V E R A G E DATA 243 SHIFT S U M M A R Y DATA: J A N 14 - FEB 19 SHFT C O N C C O N C TAIL TAIL FEED C U S P Cu Fe C U S P Cu Cu Fe 1 D 28.0 27.7 29.0 2.8 2.45 23.7 27.1 2 N 28.0 28.7 29.0 2.8 2.54 23.5 26.5 3 N 28.0 27.8 29.0 2.8 2.19 22.0 26.5 4 D 28.0 28.0 29.1 2.8 2.62 20.5 24.5 5 N 28.0 28.0 29.4 2.8 2.10 22.4 26.1 6 D 28.0 28.2 29.2 2.8 2.52 22.3 25.9 7 N 28.0 29.9 29.3 2.8 2.64 20.8 24.0 8 N 28.0 27.4 28.7 2.8 1.76 20.1 23.1 9 N 28.0 28.8 29.8 2.5 1.74 21.2 24.5 10 D 28.0 29.0 29.5 2.5 2.72 22.2 25.3 11 N 28.0 27.7 29.6 2.5 2.79 22.1 25.6 12 D 28.0 27.1 29.5 2.5 2.34 22.9 26.0 13 N 28.0 27.5 29.7 2.5 2.77 22.5 25.9 14 D 28.0 26.9 29.6 2.5 2.98 22.1 25.4 15 N 28.0 27.1 29.2 2.4 2.82 22.3 25.6 16 N 28.0 27.1 29.0 2.7 3.23 21.7 25.1 17 N 28.0 29.1 30.4 2.7 2.89 23.8 27.6 18 N 28.0 27.1 29.2 2.7 1.72 22.4 24.9 19 D 28.0 27.5 28.8 2.7 2.66 21.3 23.8 20 N 28.0 27.6 28.9 2.7 2.62 20.3 22.7 21 D 28.0 28.4 28.3 2.7 2.31 22.6 23.6 22 N 28.0 28.9 28.5 2.7 3.16 22.6 23.9 23 D 28.0 28.7 28.5 2.4 2.11 25.9 26.3 24 N 28.0 27.6 28.5 2.4 1.97 24.6 25.9 25 D 28.0 28.3 28.4 2.4 1.99 23.4 25.3 26 N 28.0 28.2 28.8 2.4 2.57 23.3 25.3 27 D 28.0 28.3 28.8 2.4 2.05 22.9 24.9 28 N 28.0 29.1 29.0 2.4 2.53 23.6 25.2 29 D 28.0 28.7 29.4 2.4 2.21 24.2 25.8 30 N 28.0 29.1 29.2 2.4 2.11 22.6 24.5 31 D 28.0 28.6 28.9 2.4 2.07 23.1 24.8 32 N 28.0 29.3 28.7 2.4 2.23 22.7 24.6 33 N 28.0 29.0 28.1 2.4 2.60 22.7 24.5 34 D 28.0 30.3 29.3 2.4 1.86 22.2 24.2 35 N 28.0 30.6 29.1 2.4 1.71 23.1 24.7 36 D 28.0 30.6 29.2 2.4 1.67 22.8 24.7 37 N 28.0 31.4 29.2 2.4 1.93 22.6 24.6 38 N 28.0 31.4 28.8 2.4 2.49 21.0 22.4 39 D 28.0 30.5 28.9 2.4 2.15 22.3 24.0 40 N 28.0 30.7 29.0 2.4 1.86 23.9 25.3 41 D 28.0 31.3 29.0 2.4 1.89 22.9 25.1 42 N 28.0 31.6 29.6 2.4 2.05 23.0 25.5 43 D 28.0 29.9 29.6 2.4 1.27 22.8 25.4 44 N 28.0 30.7 29.1 2.4 1.81 24.4 26.1 244 45 D 28.0 46 N 28.0 47 D 28.0 48 N 28.0 49 D 28.0 50 N 28.0 51 D 28.0 52 N 28.0 53 D 28.0 54 N 28.0 29.6 28.2 2.4 29.8 29.3 2.4 29.1 29.1 2.4 27.7 28.6 2.4 28.0 28.0 2.4 28.2 28.2 2.4 27.8 28.1 2.4 28.0 28.0 2.4 28.9 28.5 2.4 29.0 28.8 2.4 1.12 25.0 26.0 1.03 24.8 26.3 1.92 20.7 23.1 1.64 22.2 23.7 2.13 24.7 25.3 1.81 24.7 25.4 2.34 23.8 24.7 2.28 24.6 25.1 2.09 24.9 25.4 2.02 22.4 22.7 APPENDIX 9 - DETAILS OF C O N T R O L ACTION 246 E X P E R T S Y S T E M DATA - EXPERIMENTAL DATES J A N 14 - FEB 19/90 actions: ok = circuit okay, not high iron, okay grade and okay tail p = xanthate adjustment attempted c = column control - air adjustment attempted - level change suggested s = scavenger or MIBC adjustments attempted note: if no assays are listed and it is not 700 or 1900, then the change is operator instigated. date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan 14 700 360.0 25 300 28 30 30 201.21.4 2.5 0.9 710 27.12 28.86 2.96 p 337.5 800 25.65 28.50 2.08 p 312.5 830 250.0 900 26.20 29.60 1.89 c 27 29 29 19 930 220.0 950 29.04 29.51 2.22 p 207.5 1105 28.74 29.04 2.80 S 305 1150 28.70 29.20 2.90 p 220.0 1230 300.0 1300 28.32 28.42 3.07 c 1345 27.48 29.05 2.64 p 275.0 1450 26.85 28.40 2.16 p 250.0 1540 27.85 28.80 2.11 p 237.5 1645 28.02 28.84 2.55 S 1835 27.84 29.29 2.40 C 1715 250.0 1735 28.22 29.06 2.36 p 237.5 1930 28.61 29.07 2.12 p 225.0 2000 237.5 2030 28.55 28.93 2.59 p 225.0 2115 28.73 28.72 2.69 ok 2245 28.42 28.85 2.25 p 212.5 2335 28.40 29.00 2.11 s 35 28.30 29.00 2.18 p 200.0 130 28.60 29.01 2.37 c 230 28.70 28.90 2.65 p 187.5 320 28.70 28.90 2.71 p 175.0 420 28.91 28.77 2.84 s 310 510 29.41 28.86 2.86 p 200.0 700 200.0 25 310 27 29 29 191.21.21.0 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan 15 1900 352.5 25 310 26 28 28 181.21.21.0 0.9 1945 29.08 29.79 2.67 p 340.0 2055 28.08 29.20 2.52 s 155 28.30 30.30 1.94 p 327.5 247 250 28.00 29.80 1.89 c 415 27.70 28.40 2.51 p 315.0 505 27.80 28.50 2.21 s 600 27.12 28.63 2.02 p 290.0 655 27.00 28.20 1.97 C 25 27 27 17 700 290.0 25 310 25 27 27 171.21.21.0 0.9 date time cone cone tail action pax mice scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan 16 700 290.0 25 310 25 27 27 171.21.21.0 0.9 745 20 750 28.25 28.59 2.20 p 277.5 850 28.72 29.16 2.21 S 940 29.00 29.40 2.32 p 265.0 1145 28.80 29.40 2.79 C 1240 28.90 29.30 2.91 p 290.0 1420 27.40 28.90 2.66 p 265.0 1515 28.17 29.70 2.46 p 252.5 1605 28.14 29.90 3.04 p 265.0 1705 27.90 29.90 2.82 p 277.5 1755 28.00 29.90 2.69 p 265.0 1845 27.90 29.90 3.15 s 315 1940 26.82 30.17 2.18 p 240.0 2045 26.99 29.82 2.04 c 2110 27.73 30.09 2.35 p 227.5 2140 27.76 29.86 2.14 s 2310 27.04 29.64 1.45 p 190.0 2340 170.0 2355 27.00 29.10 1.34 c 24 26 26 19 100 28.41 29.08 1.99 p 157.5 135 170.0 155 28.68 29.43 2.17 S 230 28.47 29.35 2.10 p 157.2 320 28.24 29.10 2.03 C 425 28.27 29.05 2.10 p 145.0 515 27.98 28.74 2.46 S 605 28.70 28.80 2.54 p 132.5 700 132.5 25 315 24 26 26 191.21.21.0 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan 17 700 132.5 25 315 24 26 26 191.21.21.00.9 730 28.70 28.71 2.91 p 157.5 835 28.57 28.37 2.59 ok 900 27.58 28.24 2.27 p 145.0 950 27.80 28.30 2.18 p 132.5 1030 28.09 28.52 2.03 p 120.0 1145 27.90 28.90 2.21 c 1245 27.46 29.15 2.27 p 95.0 1340 28.00 29.30 2.32 p 82.5 1440 27.87 29.45 2.40 s 1530 28.09 30.32 2.36 p 70.0 1635 28.55 29.77 2.80 c 1730 28.58 29.73 3.05 p 120.0 248 1830 28.90 30.00 2.88 S 1920 28.20 30.16 2.32 p 2020 28.84 30.13 2.18 p 2110 30.00 29.30 2.25 ok 2140 29.80 29.10 2.38 ok 2200 29.70 29.00 2.66 ok 2240 30.68 29.61 2.91 p 2355 31.47 26.88 2.78 ok 30 30.59 29.34 2.74 ok 100 30.45 29.24 2.66 ok 125 30.40 29.70 2.79 ok 150 30.32 29.36 2.95 C 250 29.66 29.23 2.78 ok 320 29.47 29.31 2.84 p 420 29.33 29.28 2.76 ok 450 30.48 29.90 2.39 ok 515 30.09 29.62 2.50 ok 540 30.30 29.66 2.55 ok 600 29.52 29.32 2.47 ok 640 29.60 29.30 3.08 p 700 320 107.5 95.0 107.5 25 27 27 21 120.0 145.0 145.0 25 320 25 27 27 21 1.2 1.2 1.00.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan 18 1900 50.0 25 320 25 27 27 21 1.21.21.0 0.9 1910 27.80 28.70 2.32 s 2000 27.70 28.60 2.29 p 50.0 2100 27.77 29.08 1.69 C 24 26 26 20 2150 27.00 28.50 2.01 p 50.0 2255 27.47 29.48 2.27 p 50.0 2345 27.67 29.18 2.21 S 110 27.00 28.70 1.53 p 50.0 200 27.00 28.70 1.35 p 50.0 300 27.04 29.01 1.57 c 24 25 25 20 350 27.03 29.02 1.50 p 50.0 450 27.10 28.70 1.46 S 315 545 26.50 28.44 1.51 p 50.0 650 26.90 28.28 1.37 C 24 24 24 20 700 50.0 25 315 2 4 24 24 202.02.02.0 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan 19 700 50.0 25 315 24 24 24 20 2.02.0 2.0 0.9 740 27.50 28.70 1.39 P 50.0 850 27.60 28.42 1.57 P 50.0 945 27.80 28.48 1.74 P 50.0 1045 30.70 29.68 3.92 P 100.0 1130 200.0 1200 29.14 28.97 3.97 c 1300 29.39 30.25 3.29 p 225.0 1350 255.0 1355 29.80 30.30 3.25 S 1500 30.77 30.98 2.74 p 242.5 1550 28.50 30.52 2.30 p 230.0 1630 35 1700 30.41 31.14 2.76 p 255.0 1745 30.49 31.59 2.29 p 242.5 1850 30.12 31.70 2.51 C 29 29 29 21 1940 28.79 30.98 2.55 p 255.0 2040 27.42 30.11 1.99 p 205.0 2130 27.49 29.93 1.67 s 315 2240 27.79 30.13 1.89 p 192.5 2330 28.70 29.60 1.67 p 155.0 20 28.40 29.50 0.90 C 110 28.10 29.78 1.05 p 117.5 200 28.43 30.03 1.41 p 80.0 305 29.20 30.00 1.63 p 50.0 350 28.44 29.96 1.84 s 500 28.77 29.90 1.95 p 50.0 550 28.93 29.82 1.56 p 50.0 644 29.52 30.24 1.98 C 700 50.0 35 315 29 29 29 21 1.21.21.0 0.9 date time cone cone tail action pax mibc scav column airf tow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan20 700 50.0 35 315 29 29 29 21 1.21.21.00.9 750 29.44 30.03 1.90 p 50.0 850 28.56 30.31 1.48 S 930 30 940 29.43 30.36 1.86 p 50.0 1045 28.72 29.21 3.00 c 1130 26 1245 28.91 30.08 2.91 p 75.0 1340 29.32 29.76 2.85 S 320 1440 28.79 29.59 3.48 p 100.0 1510 125.0 23 1530 29.24 29.85 3.06 p 150.0 1630 28.20 29.91 2.33 p 137.5 1720 25 1725 28.18 29.79 3.17 c 1830 27.81 29.04 3.49 p 162.5 ' 1845 187.0 1920 28.58 29.61 3.30 p 212.0 2005 27.62 29.59 3.45 S 325 2140 27.68 29.78 3.09 p 237.0 2310 27.23 30.37 3.60 C 30 30 30 22 2315 260.0 0 26.39 30.05 4.48 p 310.0 5 400.0 40 28.09 30.94 3.21 p 425.0 130 27.26 30.78 3.21 p 450.0 300 26.94 29.07 1.41 p 412.5 350 26.78 29.02 1.59 S 320 400 380.0 450 27.80 29.40 1.91 p 367.5 545 28.10 29.50 2.19 C 650 26.96 29.79 1.94 p 342.5 700 342.5 25 320 30 30 30 221.2 1.2 1.0 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP air SP #1 #2 #3 #4 #1 #2 #3 #4 Jan 21 700 740 27.00 29.70 1.76 s 845 26.96 29.65 1.46 p 930 27.67 29.76 2.48 p 1040 26.00 29.40 2.49 p 1210 26.35 29.02 2.03 c 1315 26.83 29.56 2.25 p 1410 27.28 29.62 2.44 p 342.5 1510 26.95 29.59 1.67 s 1535 26.59 29.61 2.48 26.70 29.52 2.45 1540 1640 1730 1735 1830 1925 1940 2000 2105 27.60 26.73 25.82 29.50 29.80 29.47 3.43 3.08 1.55 305.0 292.5 280.0 255.0 230.0 200.0 175.0 250.0 275.0 300.0 262.5 250.0 212.5 200.0 26.12 29.57 1.68 p 27.99 30.14 2.46 p 2155 27.80 29.80 3.47 c 2300 27.83 29.73 2.76 p 250.0 2350 28.03 29.79 2.48 p 237.5 50 27.62 29.92 2.76 S 140 27.58 29.75 3.62 p 250.0 245 28.10 30.26 2.94 p 275.0 340 25.50 29.60 2.74 c 440 27.73 30.40 2.73 p 287.5 530 27.60 30.10 3.05 s 635 27.30 29.50 2.70 p 300.0 645 700 25 320 315 30 30 30 221.21.21.00.9 310 30 30 30 23 315 320 30 30 30 24 28 300.0 25 320 28 30 30 241.21.21.00.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 25 320 28 30 30 241.2 1.2 1.0 0.9 29 30 30 25 24 Jan 22 700 300.0 : 720 27.37 30.46 3.48 C 830 325.0 1230 22 1330 23 1600 26.70 29.70 2.43 P 300.0 1630 280.0 27 1710 26.60 29.30 3.84 P 305.0 1720 350.0 1800 28.00 29.74 3.12 P 375.0 1810 390.0 1900 27.64 29.87 3.61 s 2000 26.60 29.10 3.53 P 415.0 2125 26.72 29.10 2.35 P 390.0 2230 26.66 28.95 2.31 c 2350 26.31 28.88 2.11 p 365.0 50 26.95 29.71 2.39 s 140 26.96 29.70 2.37 p 340.0 240 28.10 29.70 2.71 p 352.5 325 320 27.20 29.94 3.07 p 377.5 420 27.43 30.05 2.72 p 390.0 430 310.0 510 26.55 28.97 2.70 p 322.5 530 26.82 29.20 2.68 c 640 26.80 28.70 2.60 p 297.5 700 297.5 25 28 30 30 25 325 28 30 30 251.21.21.00.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan 23 1900 27.62 30.11 5.24 p 215.0 25 355 28 30 30 251.1 1.1 1.4 0.9 1910 230.0 1940 425.0 2020 28.40 28.90 5.79 C 2050 400.0 30 2115 25.70 29.68 4.85 p 425.0 2145 400.0 2210 25.75 29.30 3.84 p 425.0 2340 28.80 29.70 3.59 S 360 40 28.17 29.94 2.14 p 412.5 135 27.11 29.93 3.03 C 30 30 30 25 145 26 230 27.56 29.58 2.27 p 400.0 340 25.66 29.44 2.47 p 375.0 430 26.72 28.56 2.30 p 350.0 445 38 390 525 27.10 28.50 2.41 C 630 27.62 30.07 2.76 p 375.0 700 375.0 38 390 30 30 30 261.21.21.0 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan 24 1900 300.0 38 390 29 29 29 251.21.1 1.1 0.9 1940 350.0 1950 28.85 30.94 3.99 s 395 2050 28.99 31.01 2.80 P 412.5 2140 28.41 31.10 3.57 P 437.5 2300 2340 28.82 31.19 2.15 P 425.0 50 28.43 30.73 2.59 < C 140 28.73 31.16 1.76 P 412.5 210 450.0 220 28.97 31.18 2.93 S 400 315 28.71 30.67 1.77 P 437.5 425 25.23 28.86 2.70 c 520 28.40 31.39 2.67 P 425.0 540 450.0 625 28.39 31.24 3.23 s 405 30 30 30 26 700 450.0 38 405 30 30 30 261.21.1 1.1 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan 25 1900 437.5 1950 27.22 29.71 1.90 p 412.5 2055 27.10 29.50 1.58 s 2105 27.22 29.23 1.36 p 375.0 2140 350.0 2200 26.90 29.60 1.36 c 2240 300.0 2330 26.90 29.20 1.23 p 262.5 100 23.30 26.46 1.48 c 150 28.01 29.38 1.89 p 250.0 300 26.83 29.14 1.68 s 330 350 27.36 29.16 1.58 p 212.5 450 27.98 29.02 2.02 c 530 550 27.66 29.02 2.23 p 200.0 700 27.97 29.14 2.31 200.0 28 405 29 29 29 251.21.1 1.1 0.9 400 405 400 360 300 28 28 28 24 27 27 27 23 28 300 27 27 27 231.2 1.1 1.1 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan 26 700 27.97 29.14 2.31 200.0 28 300 27 27 27 23 1.2 1.1 1.1 0.9 750 28.19 29.01 2.29 p 187.5 900 26.70 28.90 2.46 c 1130 18 1215 26.50 28.80 2.42 p 162.5 1340 27.20 28.90 2.15 c 1440 27.30 28.80 2.32 p 137.5 1550 28.20 28.40 2.92 p 162.5 1630 200.0 1650 29.27 28.65 3.98 C 1710 350.0 1745 26.84 28.44 3.34 p 375.0 1825 300.0 1850 26.90 29.10 2.44 p 275.0 1900 240.0 1945 28.06 29.30 2.74 p 252.5 2050 275.0 2055 28.80 29.10 3.66 s 310 2115 28.30 29.10 4.03 p 300.0 2220 26.70 29.00 2.78 p 300.0 2340 26.64 29.04 2.34 c 50 27.70 29.10 2.15 p 287.5 140 27.50 29.20 2.12 s 245 27.40 28.90 2.19 p 262.5 340 27.30 28.80 2.33 C 445 27.50 28.80 2.37 p 237.5 540 27.66 29.30 2.55 s 645 28.20 28.50 2.41 p 212.5 700 212.5 18 310 27 27 27 231.21.1 1.1 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Jan27 700 212.5 18 310 27 27 27 231.21.1 1.1 0.9 740 28.39 28.05 2.58 ok 815 910 940 1005 1040 1130 1200 1240 1330 1400 1440 1525 1630 1700 28.34 28.20 28.80 28.90 28.70 27.78 28.20 27.70 28.20 27.91 28.20 28.50 28.80 28.30 26.80 27.80 27.80 28.10 2.76 2.64 2.68 2.65 2.54 1.64 2.12 2.10 2.18 28.30 28.50 28.40 28.30 28.70 28.30 29.25 28.66 1725 29.19 28.47 1830 29.00 28.20 28.80 27.85 29.65 28.67 29.81 28.90 29.58 28.38 29.41 28.79 2.10 1.91 2.27 2.25 2.15 2.48 2.27 2.50 2.50 2.76 3.44 50 29.30 29.00 3.32 150 28.55 28.56 3.33 s 250 28.18 28.55 3.11 350 25.11 27.11 2.77 430 27.10 27.97 2.31 520 28.70 28.80 3.04 625 31.00 28.90 5.35 c 650 715 30.40 29.00 5.40 1950 2050 2150 2230 2340 c ok ok ok ok P ok s ok P P ok ok ok ok ok ok ok P c P P P P P 175.0 162.5 150.0 24 175.0 200.0 5.0 175.0 150.0 175.0 275.0 325.0 315 28 28 28 25 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb3 700 345.0 30 315 30 30 30 251.21.1 1.1 0.9 855 27.06 27.71 1.39 p 307.5 925 190.0 32 340 930 27.03 27.45 1.74 p 152.5 1015 28.90 28.40 1.74 p 115.0 1110 29.12 28.67 1.93 C 1200 29.37 28.64 2.29 ok 1240 30.05 29.04 2.34 ok 1320 27.87 27.99 2.11 p 102.5 1425 29.70 28.90 2.67 p 152.5 1520 29.66 28.97 2.73 S 345 1620 29.80 29.00 2.28 ok 1650 27.87 28.10 2.05 p 140.0 1740 28.47 28.53 2.22 c 1845 29.67 29.36 2.30 ok 1910 28.45 28.76 2.32 p 127.5 2000 28.61 28.91 1.96 p 115.0 2105 29.09 28.73 2.43 s 350 2200 28.95 28.79 2.44 p 127.5 2330 28.70 28.40 1.78 p 115.0 30 28.30 28.30 1.61 C 130 28.92 28.62 1.98 p 102.5 230 29.30 28.50 2.11 ok 320 27.76 27.80 1.89 S 430 26.30 28.20 1.38 p 65.0 520 23.80 28.70 0.70 C 530 260.0 600 23.90 27.70 3.50 p 310.0 655 25.94 27.28 1.23 p 272.5 700 272.5 345 28 28 27 20 32 345 28 28 27 201.21.1 1.1 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb4 700 272.5 32 345 28 28 27 201.21.1 1.1 0.9 800 27.63 27.86 0.77 p 235.0 855 28.21 27.70 2.14 ok 920 28.78 27.89 1.98 p 222.5 1025 29.36 28.72 2.08 ok 1145 28.70 28.60 2.29 ok 1230 28.80 28.90 2.48 p 235.0 1330 28.54 28.98 2.57 S 350 1430 28.30 29.00 2.59 p 247.5 1515 28.19 29.27 2.34 c 1630 27.90 29.00 1.93 p 235.0 1720 27.85 28.84 1.83 S 345 1825 28.30 28.90 1.99 p 222.5 1920 28.68 29.07 2.46 c 2020 28.50 28.60 2.80 p 247.5 2110 28.27 28.74 2.59 S 350 2210 28.23 28.89 2.46 p 260.0 2310 28.04 28.81 2.80 c 40 27.89 28.91 2.69 p 285.0 100 27.94 28.85 2.69 S 355 230 28.00 29.00 2.30 p 272.5 330 28.30 29.20 2.48 p 297.5 430 29.00 29.10 3.10 C 520 28.02 28.97 2.45 p 310.0 620 27.70 29.20 2.20 p 297.5 655 27.43 28.39 2.30 p 272.5 700 272.5 32 355 28 28 27 201.2 1.1 1.1 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 5 700 272.5 32 355 28 28 27 201.21.1 1.10.9 730 28.78 27.44 2.69 p 297.5 835 29.67 28.84 2.75 p 322.5 925 28.21 29.12 2.57 p 335.0 1025 27.44 29.20 1.70 p 297.5 1120 28.04 29.12 2.06 p 285.0 1225 28.06 29.03 1.96 S 1320 28.04 29.08 1.69 p 247.5 1415 28.60 28.93 1.36 p 210.0 1305 27.02 28.24 1.49 c 27 27 26 20 1615 28.45 29.07 1.70 p 172.5 1710 28.33 29.19 1.77 s 1815 28.91 28.84 2.03 ok 1840 29.31 28.99 1.99 p 160.0 1930 28.70 28.50 2.13 ok 2030 29.18 28.83 2.29 ok 2100 29.25 28.87 2.44 p 2200 29.30 28.80 2.44 c 2310 29.84 29.10 2.56 p 10 29.20 29.00 2.90 S 110 28.85 29.27 2.85 p 210.0 210 28.80 28.90 2.73 C 310 28.46 28.95 2.65 p 410 29.20 29.10 2.57 p 500 28.67 29.21 2.54 s 600 28.70 29.30 2.41 p 247.5 630 28.50 29.20 2.20 C 700 172.5 185.0 222.5 235.0 360 365 247.5 32 365 27 27 26 201.21.1 1.1 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 6 700 247.5 32 365 27 27 26 201.21.1 1.1 0.9 720 28.21 29.18 2.17 p 235.0 825 28.53 29.47 2.48 p 247.5 920 29.49 29.54 2.79 s 370 1030 28 28 1150 27.80 29.30 1.99 p 235.0 1250 28.85 29.50 2.41 p 247.5 1345 28.51 29.39 1.96 p 235.0 1450 28.30 29.25 1.76 c 1540 28.54 29.42 1.99 p 222.5 1620 29.30 29.80 2.06 p 210.0 1715 29.29 29.60 2.13 S 1800 28.82 29.53 2.36 p 197.5 1900 29.21 29.49 2.27 c 1950 29.45 29.67 2.34 p 185.0 2055 29.11 29.39 2.20 S 2225 29.20 29.40 2.10 p 172.5 2340 28.70 29.20 1.92 c 45 29.06 29.01 2.00 ok 110 28.14 28.74 1.93 p 160.0 210 28.74 29.19 1.77 p 147.5 310 28.98 28.78 1.99 S 400 29.12 28.87 2.18 ok 505 29.29 29.07 2.14 ok 600 28.50 28.86 2.28 p 135.0 700 135.0 32 370 28 28 26 201.21.1 1.1 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 7 700 135.0 32 370 28 28 26 201.21.1 1.1 0.9 705 29.52 29.22 2.37 ok 730 29.88 28.93 2.64 p 160.0 830 29.50 29.10 2.34 ok 1000 27.70 28.70 1.52 p 122.5 1125 29.50 28.90 1.68 p 85.0 1240 29.97 28.85 2.07 ok 1330 29.61 28.84 2.48 p 97.5 256 1345 1400 28.03 28.25 2.55 c 1405 1500 27.99 28.68 2.00 p 1550 27.49 28.87 1.53 p 1700 28.64 29.08 1.90 p 1750 27.64 28.85 1.87 s 1730 1755 1855 29.00 28.84 2.24 1920 29.91 28.78 2.80 2025 30.20 28.40 2.67 c 2115 29.18 28.93 2.61 2220 28.70 28.60 1.93 2315 28.90 29.15 1.86 30 27.80 28.20 2.09 130 28.95 29.00 2.23 230 29.10 28.60 2.29 320 29.30 29.10 2.26 425 29.60 28.70 2.45 500 700 30 30 30 20 300.0 287.5 250.0 237.5 Ok P P P S P P ok ok c 150.0 175.0 187.5 175.0 162.5 150.0 365 28 28 28 20 29 29 29 21 150.0 32 365 29 29 29 21 1.21.1 1.1 0.9 150.0 32 365 n a n a n a n a n a n a n a n a date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb8 1900 31.40 28.30 5.40 150.0 32 365 28 28 28 22 1.21.1 1.1 0.9 1920 250.0 1925 31.20 28.18 6.11 C 29 29 29 23 2030 31.10 27.60 3.86 p 275.0 2120 250.0 30 30 30 20 2150 28.80 27.80 2.81 p 275.0 2200 325.0 2330 28.80 27.70 1.94 p 312.5 2345 275.0 30 28.40 27.70 1.68 p 237.5 120 23.59 27.09 1.15 C 29 29 29 20 230 29.30 28.40 1.39 p 200.0 330 30.30 28.50 2.26 ok 400 29.69 29.01 2.12 ok 440 29.11 28.77 1.78 p 187.5 520 28.80 28.50 1.80 S 620 29.10 28.50 2.02 ok 645 29.10 28.85 1.95 p 175.0 700 175.0 32 365 29 29 29 201.21.1 1.1 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 9 700 175.0 32 365 29 29 29 201.21.1 1.1 0.9 740 29.55 29.30 1.30 p 137.5 840 30.08 29.70 1.44 c 930 29.86 29.73 1.77 p 125.0 1040 30.50 29.40 1.86 p 112.5 1200 30.67 29.69 1.85 p 100.0 1300 30.97 29.59 2.14 ok 1330 31.31 29.73 2.44 s 370 1430 30.80 29.50 2.09 ok 1530 30.57 29.98 2.04 ok 1630 30.60 29.60 1.99 P 87.5 1720 30.40 29.31 1.94 c 1830 29.70 29.00 2.02 ok 1850 29.08 28.92 1.74 P 50.0 2100 31.20 29.10 2.06 ok 2240 30.80 29.40 1.97 P 50.0 2330 30.93 29.30 1.85 c 45 29.80 29.10 1.45 P 50.0 140 30.50 29.01 1.48 s 240 30.90 29.40 1.65 P 50.0 330 30.16 29.26 1.62 c 440 30.86 28.90 1.93 p 50.0 530 30.47 28.95 1.76 s 630 30.50 29.40 1.55 p 50.0 700 i 50.0 32 370 29 29 29 201.21.1 1.1 9.0 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 10 700 50.0 32 370 29 29 29 201.21.1 1.1 9.0 730 30.17 29.50 1.51 C 830 30.50 29.20 1.55 p 50.0 925 30.46 29.39 1.50 S 1120 30.08 29.71 1.54 C 1210 30.35 29.40 1.53 p 50.0 1310 29.91 29.65 1.54 S 1400 30.03 29.43 1.81 p 50.0 1505 30.85 29.52 1.87 p 50.0 1600 30.94 29.63 1.95 C 1700 30.35 29.31 1.78 p 50.0 1755 30.52 29.46 1.86 s 1900 30.75 29.32 1.86 p 50.0 1950 31.01 29.72 2.08 ok 2050 31.33 29.49 2.10 ok 2145 31.05 29.26 2.18 ok 2250 30.73 29.39 1.99 C 2340 28.80 28.50 1.21 p 50.0 40 31.21 29.67 1.59 p 50.0 130 31.46 29.87 1.92 p 50.0 240 31.40 29.20 1.80 s 330 31.13 29.70 1.87 p 50.0 440 31.40 29.30 1.90 p 50.0 530 31.22 29.91 1.84 C 630 32.10 29.50 2.35 ok 700 31.36 29.78 2.25 ok 50.0 32 370 29 29 29 201.2 1.1 1.1 0.9 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 11 1900 50.0 32 375 29 29 29 201.21.1 1.1 1.0 1915 31.88 29.39 2.47 p 62.5 2010 29.60 28.74 2.16 ok 2110 30.91 28.99 2.27 ok 2130 28.47 26.94 2.50 c 2240 32.20 29.20 2.89 p 87.5 2330 31.58 29.02 2.69 S 0 40 31.70 28.90 2.22 ok 100 31.74 28.49 2.47 p 100.0 200 32.12 28.54 2.84 c 300 31.64 28.64 2.52 p 112.5 400 31.60 28.35 2.42 s 500 32.05 28.77 2.64 p 125.0 550 31.38 28.98 2.57 c 650 31.88 29.37 2.48 p 137.5 700 137.5 375 380 385 30 30 30 21 30 30 30 22 32 385 30 30 30 221.21.1 1.1 1.0 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 12 700 137.5 32 385 30 30 30 221.21.1 1.1 1.0 740 31.09 29.07 2.46 s 390 850 31.19 29.12 2.39 ok 940 31.00 28.80 2.32 ok 1040 30.26 28.90 1.98 p 125.0 1140 30.10 28.70 1.86 c 1240 31.15 28.93 2.72 p 150.0 1255 200.0 1340 30.37 29.07 2.58 p 212.5 1440 29.10 29.10 1.67 p 175.0 1535 29.51 29.33 1.67 s 1600 29.55 29.41 1.84 p 162.5 1700 29.77 29.19 1.97 c 1750 30.14 29.46 2.10 ok 1830 30.60 28.90 1.93 p 150.0 1920 29.71 29.36 1.53 s 2030 30.20 29.00 1.71 p 112.5 2150 31.60 29.70 2.49 p 125.0 2340 30.35 28.91 1.59 p 112.5 40 30.70 29.00 1.86 c 140 30.59 29.42 1.80 p 100.0 240 30.50 28.80 1.76 S 330 30.21 29.28 1.77 p 87.5 430 30.50 29.00 1.58 C 530 30.31 29.51 1.79 p 75.0 630 30.80 28.90 1.84 p 62.5 700 62.5 34 390 30 30 30 221.21.1 1.1 1.0 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 13 700 62.5 34 390 30 30 30 221.21.1 1.1 1.0 720 30.17 29.24 1.78 s 820 30.20 29.00 1.71 p 50.0 920 29.88 29.53 1.91 c 1020 31.40 28.80 1.86 p 50.0 1140 31.60 29.10 1.42 p 50.0 1240 30.72 29.65 1.39 S 1350 30.86 29.48 1.49 p 50.0 1450 31.60 29.20 1.75 p 50.0 1540 31.36 29.91 1.94 c 1640 31.80 29.00 2.15 ok 1730 31.41 29.90 2.47 p 62.5 1820 80.0 1840 31.90 29.00 2.29 ok 1900 31.56 29.59 2.54 p 92.5 1920 111.0 2000 31.28 29.73 2.46 S 395 2100 31.20 29.40 1.79 p 98.5 2130 30.91 30.36 1.95 C 2230 29.90 29.70 1.65 p 61.0 2330 30.43 30.15 1.58 p 50.0 40 31.30 29.80 1.64 p 50.0 130 31.56 30.41 2.02 ok 240 32.00 29.70 2.15 ok 300 31.37 30.32 1.98 p 50.0 400 31.56 30.30 2.25 ok 500 31.90 30.10 2.23 ok 600 31.95 30.27 2.39 ok 700 50.0 35 395 30 30 30 221.21.1 1.1 1.0 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 14 700 50.0 35 395 30 30 30 221.21.1 1.1 1.0 705 31.70 30.10 2.31 ok 730 31.50 29.98 2.46 p 62.5 830 31.40 29.50 2.04 ok 900 30.42 30.05 1.98 p 50.0 1000 29.73 30.17 1.79 s 1140 29.00 29.80 0.69 p 50.0 1240 29.10 29.70 0.96 C 1330 29.54 29.82 1.05 p 50.0 1440 29.10 29.30 0.79 s 1530 28.93 29.75 0.87 p 50.0 1630 29.27 29.80 0.76 c 1730 29.58 29.68 0.94 p 50.0 1820 30.25 29.98 1.02 s 1930 29.85 30.27 1.01 p 50.0 2020 29.18 30.28 0.94 c 2120 29.52 29.28 2.15 ok 2150 31.15 28.64 2.55 p 62.5 2220 32.06 28.93 3.43 p 70.0 2250 32.60 28.30 3.91 p 120.0 5 31.61 28.90 3.49 p 150.0 110 31.64 29.43 2.17 ok 200 29.24 29.50 1.52 p 112.5 300 29.87 29.88 1.21 p 75.0 400 30.04 29.69 1.28 s 500 31.02 29.85 1.32 p 50.0 550 29.79 29.59 1.39 c 700 30.60 29.98 1.53 p 50.0 38 395 30 30 30 221.21.1 1.1 1.0 date time cone cone tail action pax mibc scav column airflow column levels 260 Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 15 700 30.60 29.98 1.53 P 50.0 38 395 755 31.41 30.22 1.52 P 50.0 900 30.65 29.95 1.32 S 950 30.66 29.68 1.12 P 50.0 1055 30.80 29.70 1.06 c 1205 31.24 29.71 1.04 P 50.0 1330 31.10 29.50 0.88 s 1420 31.48 29.81 1.06 p 50.0 1530 31.11 29.87 0.83 c 1610 29.10 29.10 0.82 p 50.0 1630 30.60 29.40 2.12 ok 1650 30.28 29.98 0.99 P 50.0 1745 30.04 29.70 0.90 c 1850 30.12 29.64 0.83 p 50.0 1940 29.88 29.56 0.81 p 50.0 2045 31.39 30.23 1.29 p 50.0 2140 30.93 30.08 1.39 s 2210 75.0 2240 30.11 29.89 1.46 p 50.0 2325 29.20 29.70 0.80 c 30 29.40 29.20 0.99 p 50.0 120 29.12 29.34 1.04 s 225 29.50 29.10 1.11 p 50.0 320 28.82 29.17 1.06 c 420 28.40 29.30 0.76 p 50.0 515 28.96 29.33 0.73 p 50.0 530 33 645 29.70 29.70 1.09 p 50.0 30 30 30 22 1.2 1.1 1.1 1.0 700 50.0 33 395 30 30 30 221.21.1 1.1 1.0 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 16 700 50.0 735 29.18 29.68 1.07 s 840 28.99 29.99 1.19 p 50.0 935 28.96 29.92 1.95 C 1100 100.0 1200 27.35 29.43 1.73 p 62.5 1300 29.23 28.80 1.88 p 50.0 1400 28.87 28.64 2.24 ok 1500 29.92 28.36 2.46 p 75.0 1555 29.30 28.90 2.44 s 1700 29.00 28.70 2.08 ok 1725 28.70 28.80 2.02 p 62.5 1830 28.70 28.80 2.22 p 62.5 1920 28.93 29.10 2.41 C 2100 28.20 28.30 2.11 p 50.0 2220 27.10 28.40 1.66 s 30 27.30 28.70 1.08 p 50.0 120 27.70 29.10 0.61 p 50.0 225 28.00 27.90 2.83 p 100.0 315 27.64 28.11 1.80 p 87.5 420 27.65 28.40 1.41 c 510 28.32 28.62 1.53 p 50.0 33 395 30 30 30 221.21.1 1.1 1.0 400 395 29 29 29 29 600 27.95 28.57 1.28 s 390 700 50.0 33 390 29 29 29 21 1.21.1 1.1 1.0 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 17 700 50.0 33 390 29 29 29 21 1.21.1 1.1 1.0 710 27.64 28.58 1.43 p 50.0 800 28.29 28.48 1.67 c 905 28.40 28.19 2.29 ok 930 28.68 28.43 2.51 p 62.5 1000 28.18 28.13 2.52 s 395 1200 27.33 27.49 2.27 p 50.0 1300 27.31 27.30 2.23 C 1400 27.59 27.22 2.34 p 50.0 1500 27.20 27.26 2.23 C 1550 27.85 27.68 2.08 p 50.0 1700 28.09 27.61 1.80 p 50.0 1750 28.48 28.03 2.03 ok 1850 29.07 28.24 2.14 ok 1950 28.80 27.94 2.13 ok 2050 29.04 28.25 2.24 ok 2140 28.52 28.42 1.96 c 2250 27.96 28.05 1.85 p 50.0 2345 28.32 28.21 1.65 S 50 28.12 28.27 1.45 p 50.0 140 28.27 28.16 1.47 C 250 28.32 28.12 1.57 p 50.0 340 28.16 28.15 1.58 S 440 28.00 28.30 1.73 p 50.0 530 27.74 27.53 1.82 c 28 28 28 20 630 27.80 27.90 1.95 p 50.0 700 50.0 33 395 28 28 28 201.21.1 1.1 1.0 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb 18 700 730 835 930 1030 1120 1240 1340 1440 1540 1640 50.0 33 395 28 28 28 201.21.1 1.1 1.0 27.79 28.01 2.11 s 27.90 28.10 2.26 p 27.70 27.85 2.33 C 27.20 27.90 2.33 p 27.40 27.82 2.29 s 27.40 28.20 2.85 p 28.04 28.02 2.54 p 27.80 28.10 2.07 p 27.93 27.97 2.22 c 28.10 28.20 2.53 p 1730 27.95 28.00 2.41 s 1835 28.00 28.10 2.50 p 100.0 1930 28.00 27.87 2.57 c 2030 28.20 27.90 2.47 2050 2125 28.01 27.65 2.08 ok 2150 27.97 27.70 2.06 p 115.5 50.0 50.0 75.0 87.5 75.0 87.5 112.5 128.0 400 29 29 29 21 2250 27.80 27.80 2350 27.84 27.69 230 28.80 27.80 330 28.21 27.78 335 430 455 520 620 700 2.21 2.36 2.81 2.50 27.70 27.77 27.94 27.92 28.03 28.06 2.24 p 1.99 2.11 103.0 128.0 140.0 127.5 150.0 137.5 137.5 33 400 29 29 29 21 1.21.1 1.1 1.0 date time cone cone tail action pax mibc scav column airflow column levels Cu Fe Cu SP SP airSP #1 #2 #3 #4 #1 #2 #3 #4 Feb19 700 137.5 33 400 29 29 29 21 1.21.1 1.1 1.0 720 27.69 27.75 1.85 p 125.0 815 28.09 28.08 2.03 ok 850 27.58 27.96 1.85 c 28 28 28 20 940 28.24 28.45 1.84 p 112.5 1050 28.90 28.80 1.87 s 1140 28.71 28.59 1.96 p 100.0 1250 28.70 28.50 1.73 C 1400 29.63 28.50 2.34 ok 1440 29.80 28.80 2.50 p 112.5 1530 29.70 28.63 2.47 s 405 1640 29.10 28.40 2.42 p 125.0 1730 29.90 28.40 2.43 p 137.5 1800 29.90 28.53 2.32 ok 1900 29.45 28.74 2.33 ok 1950 29.38 28.79 2.14 ok 2030 150.0 2100 29.06 28.59 2.15 ok 2150 28.92 28.41 1.95 C 2250 28.90 28.70 1.92 p 137.5 2345 29.42 28.32 1.89 p 125.0 50 29.60 28.90 1.98 s 140 30.26 27.50 2.36 ok 240 28.70 28.80 1.84 p 112.5 340 28.30 28.80 1.92 c 440 28.50 28.80 1.75 p 100.0 530 29.43 28.80 1.88 s 640 29.70 28.90 2.18 ok 700 100.0 33 405 28 28 28 201.21.1 1.1 1.0 end of test R E M A R K S : Jan 16 expert system control suspended for two hours for knowledge base modification. Jan 18 on night shift the columns were down. The expert controller was not controlling column air, but was controlling scavenger air, MIBC, and xanthate. 263 Jan 22 on-stream analyzer down for six hours on day shift. Regulatory control only. Feb 7 expert system shut down at 5:00 am, for circuit maintenance. Feb 12 columns were switched from series operation to #1 and #2 in parallel, #3 still in series. Feb 13 columns returned to series operation. Feb 14 wash water tests were performed on #1 column throughout the day. Feb 17 columns switched to parallel operation again. Feb 18 wash water tests were performed on #1 and #2 column throughout the day. Columns returned to series operation. APPENDIX 10 - E X T R A C T S F R O M 1989 MONTH END R E P O R T S 265 JAN "The copper recovery of 87.97% was 4.71% above the anticipated recovery due to higher head grades." FEB "The copper recovery of 90.65% was 3.5% above the anticipated recovery due to the higher head grade and lower tailings assay." M A R C H "The copper head grade was 0.177% versus a plan of 0.150%. This contributed to the higher than budgeted copper concentrate production." "Overall process recoveries were 88.62% for copper (85.80% planned)..." "the higher copper recovery was achieved due to the higher than anticipated heads..." APRIL "The process recovery for copper...was 88.18%.... No special measures were taken to achieve the higher thab planned flotation recoveries." MAY "The copper concentrate lead content exceeded 1.5% on several occasions through the month with a high of 3.5%.... Abnormallly high lead heads were the cause of this problem. Lead cannot be separated successfully from the copper concentrate in the Brenda flotation circuit..." J U N E "Appreciable quantities of lead were present in the ore on several days again in June. This was the largest single factor for the slightly lower than planned copper concnetrate grade." "The copper recovery was slightly below plan for no obvious reason." J U L Y "No significant metallurgical problems were encountered in July." A U G U S T "Process recovery was 86.84% for copper versus a plan of 88.32%. The lower recovery resulted primarily from an abnormally high pyrite content in the ore during the last two weeks of August." 266 S E P T E M B E R "Copper concentrate grade has continued to decrease since May..." Jan to September: 27.24, 27.91, 27.87, 27.71, 26.70, 26.91, 26.65, 25.77, 25.45 "Pyrite also is a major problem, whenever it is about 8 - 10% in the copper cleaner feed." "It can be seen from Table 1 that lead and pyrite in the concentrator feed have increased since May..." OCTOBER "For the third month in a row the copper concentrate was lower than 26% C u . Pyrite caused the problems this month again." N O V E M B E R "Copper circuit performance improved in November due primarily to a 'cleaner' ore supply for much of the month." "Sil ica levels are correlated to the final concentrate grade and its presence leads to a deterioration of the cleaner circuit performance due to a build up of the high recirculating load..." D E C E M B E R "The copper circuit performance was good this month. Higher than normal lead heads during the period December 23 to 29 inclusive resulted in a lowering of concentrate grades to the 26.5 to 27 percent copper range for that period. Concentrate grades averaged 28 percent during the rest of the month." "The average copper recovery was 88.3 percent versus 89.1 percent planned. The shortfall in recovery occurred since the actual head grade was 20 percent below plan..." 

Cite

Citation Scheme:

        

Citations by CSL (citeproc-js)

Usage Statistics

Share

Embed

Customize your widget with the following options, then copy and paste the code below into the HTML of your page to embed this item in your website.
                        
                            <div id="ubcOpenCollectionsWidgetDisplay">
                            <script id="ubcOpenCollectionsWidget"
                            src="{[{embed.src}]}"
                            data-item="{[{embed.item}]}"
                            data-collection="{[{embed.collection}]}"
                            data-metadata="{[{embed.showMetadata}]}"
                            data-width="{[{embed.width}]}"
                            async >
                            </script>
                            </div>
                        
                    
IIIF logo Our image viewer uses the IIIF 2.0 standard. To load this item in other compatible viewers, use this url:
http://iiif.library.ubc.ca/presentation/dsp.831.1-0081136/manifest

Comment

Related Items