LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 2857 :CREATION-DATE 2730916240 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "1-COURSE-NOTEBOOK-INSTRUCTIONS" :TYPE "TEXT" :VERSION 3) Instructions on the preparation of the PICON course notebooks:��1) The notebooks are 3-ring binders which have a transparent front� cover allowing an insert. We use a 2 page insert. The top is� the process systems black page with a rainbow of colors on it, � with a hole cut out which allows the word PICON to show through� from a white page with just PICON in blue letters.��2) The spine of the notebook also allows an insert which is a long� black piece of stock with the words: Process Systems Division.��3) Inside the note book is the bulk of the material for the class.�� There are 5 sections in the notebook. Each section is separated� from the others by a tabbed divider.�� SECTION I: Course Schedule�‰ Course Announcement (which doubles as a syllabus)�‰ Area Amenities�� SECTION II: PICON Course Notes�� SECTION III: Course Exercises�‰ File Printouts - 1. PICON-ICONS.LISP�‰‰‰‰ 2. SQUARE-ROOT-CODE.LISP�‰‰‰‰ 3. PICON-KEYBOARD-INPUT.LISP�‰‰‰‰ 4. CLASS-ICONS.LISP�� SECTION IV: RTIME Installation Manual�‰ RTIME Users Guide�� SECTION V: Industry Papers on PICON and AI��4) There is a course master notebook which is the instructors guide� to teaching PICON. This is essentially the same except is contains� notes imbedded in the PICON Course Notes about comments to make� during the presentation of the class.�� This notebook is so labelled. ���5) Where all this material exists interms of re-creating or editing it:�� a) PICON Course Exercises:��‰These files exist on RALPH:PICON-CLASS; with the names:��‰‰LAB-SESSION-1.TEXT�‰‰LAB-SESSION-2.TEXT�‰‰LAB-SESSION-3.TEXT�‰‰LAB-SESSION-4.TEXT�‰‰LAB-SESSION-5.TEXT�‰‰LAB-SESSION-6.TEXT�‰‰LAB-SESSION-7.TEXT��‰These files are printable on any printer and are not required �‰to be formatted in any way. These files are the text of the �‰exercises.�� b) PICON Course Notes:��‰These will not be so easy. There are several files on angel in �‰Cambridge which are BOTEX files which must be formatted. The�‰files are in DWR directory and are called:��‰‰SLIDE1.BOTEX�‰‰SLIDE2.BOTEX�‰‰SLIDE3.BOTEX�‰‰SLIDE4.BOTEX�‰‰SLIDE5.BOTEX�‰‰SLIDE6.BOTEX��‰Each of these then containing a section of the PICON Course Notes.�‰Notice that the Notes are arranged into 6 sections. ��‰[Bob Chassell is the expert on BOTEX. He helped me a great deal in �‰ learning BOTEX and getting around its problems. I'm sure Bob would�‰ help anyone in need. He is also roughly familiar with what I did�‰ to create and maintain the Course Notes.]��‰I also have a directory on LMIVAX. The password is OCEAN. There are�‰pertinant files there too so someone may wish to use them.�� c) Other files:��‰In the PICON-CLASS; directory on RALPH:, there are other files too�‰like SCHEDULE, CONVENTIONS and LAB-SESSION-MASTER. These have been� used to create some documentation.��LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 4728 :CREATION-DATE 2730915550 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "2-COURSE-PRESENTATION-PREPARATION" :TYPE "TEXT" :VERSION 2) This file describes the necessary activities to perform prior to �‰giving the PICON class.���1) The course material is as follows:��‰PICON User's Guide. Dave Riddell has a stock of 20 in his office. ��‰PICON in Pictures. Dave Riddell has a stock of 30 in his office.��‰PICON Course-Notebook See the instructions in the file named:�‰‰-- ralph:picon-class;1-course-notebook-instructions��‰Introduction to the Lambda -‰Get these from Education (generally�‰‰‰‰‰this manual is sent to each student�‰‰‰‰‰before the class in order for them�‰‰‰‰‰to familiarize themseleves with the�‰‰‰‰‰machine before arriving).��‰ZMACS Quick Reference Guide -‰Get these from Education.���2) The Course schedule is in a file called:�‰‰-- ralph:picon-class;schedule.text���3) The course in exercise intensive. Review the course exercises in the PICON� course notebook. You will see that they refer to knowledge base files to be � loaded which will correspond to the work they are learning. These files are� on the PICON-CLASS; directory on machine RALPH:.��‰1) First, on the education machines, remove the files from the PICON�‰ directory, and expunge the directory (this needs to be done on each�‰ Education machine prior to the class. The reason is: Each student will�‰ use his own local file system rather than the file server DUKE. This�‰ created problems in the past, particularly if the network was heavily�‰ loaded, or even down. So each student uses his own file system. After �‰ each class it is necessary to remove these directories because the�‰ students will have created their files on the local machines which are�‰ not wanted now.)��‰ Also the machines in education have PICON bands on them. These will�‰ always be LOD3. This was agreed to by Education - in particular John�‰ hotchkiss - who is in charge of these machines. The current bands on� these machines are running PICON 1.2 software.��‰2) Next, the PICON software must be put on the machines again. This can�‰ be copied from RALPH:PICON; (RALPH:PICON; is the currently released�‰ and available software. Old software versions on ralph are in�‰ directories appropriatly named)��‰3) Next, load the file "ralph:picon-dev;picon-utilities.lisp"��‰ This file contains many usefull functions for manipulating course �‰ directories, and other things as well.��‰4) From Lisp, run the function: (update-course-master-directory)��‰ This will create a new version of all the course files needed by the�‰ students. The directory is called "ralph:picon-class-distribution;"�‰ (This directory, by the way, is allowed to be copied to tape and�‰ given to customers after the class if they want to take the class�‰ material home- There is a disclaimer in it which relieves us of�‰ any responsibility to maintain or update it.)��‰5) Next, copy this directory "ralph:picon-class-distribution;" to the�‰ education machines. Start with DUKE, then copy everything from DUKE�‰ to the rest of the education machines. �� 6) If necessary, you could make bands for the class. As I already�‰ mentioned, bands exist but new ones may need to be made. I have found�‰ it far, far, far better to make the bands ahead of time for the class�‰ than to let the students do it. Not only does it take a lot of time, � since we are using 2X2's it has some nuances which must be explained �‰ about the file system and etc. So I aviod it and do it myself. ��‰7) Gina Pallozzi takes care of most of the administrative things to do�‰ with the class:��‰‰1) Registration�‰‰2) Sending out of confimations to students�‰ 3) Course scheduling�‰‰4) Class room setup - paper, pencils, name tags, etc.�‰‰5) Doughnuts every morning, Monday afternoon party.�� 8) You, however, must arrange for the following:��‰‰1) Any additional supplies in the classroom�‰‰‰- board markers, cleaner, etc.�‰‰2) Getting the course material together:�‰‰‰- copying, putting notebooks together, preparing software,�‰‰‰- Thursday evening course dinner arrangements, location,�‰‰‰ reservations, payment, transportation, etc...�‰‰‰- Lab assistants - generally I just recruit people who �‰‰‰ know PICON and are willing.��‰‰‰ o Mike Levin usually teaches on Wednesday PM at 2:00 - 5�‰‰‰‰about the PICON simulator and modeling.�‰‰‰ o Lowell Hawkinson usually speaks to the class in�‰‰‰ Cambridge an 11:00 after the morning session in �‰‰‰‰Andover is finished.�‰‰‰ o People who know PICON and would assist in Labs:��‰‰‰ Mike Philipps�‰‰‰ Lorin Wilde�‰‰‰ Michelle Skorka�‰‰‰ Brian Matthews�‰‰‰ Troy Heindell��‰‰‰- Making coffee - usually Bill Powell is the man but on �‰‰‰‰a rare occasion he gets ties up.���LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 5016 :CREATION-DATE 2730918702 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "3-DIRECTORIES-AND-FILES-ON-RALPH" :TYPE "TEXT" :VERSION 1) Directories and file on RALPH:���The following is a list of the RALPH system directories at last printing:���RALPH: ~; *.*#*�Free=29874, Reserved=4, Used=45122 (98 pages used in )� DEBBIE; 13 DIRECTORY! 07/19/86 11:23:01 mike� DWR; 2 DIRECTORY! 02/02/86 21:08:42 dwr� GUIDE-BETA; 1 DIRECTORY! 05/15/86 09:00:57 dwr� IKE; 3 DIRECTORY! 03/19/86 12:51:51 mhd� IKE-DEMOS; 1 DIRECTORY! 03/07/86 13:20:35 DWR� IKE-RELEASE-1-0; 3 DIRECTORY! 05/16/86 20:12:49 DWR� IKE-RELEASE-1-2; 3 DIRECTORY! 07/16/86 15:56:06 dwr� MIKE; 12 DIRECTORY! 07/17/86 09:49:48 dwr� PICON; 3 DIRECTORY! 03/12/86 16:56:38 dwr� PICON-2; 3 DIRECTORY! 07/18/86 14:07:14 wsp� PICON-BACKUP; 3 DIRECTORY! 03/07/86 14:08:44 DWR� PICON-CLASS; 3 DIRECTORY! 02/04/86 15:31:34 dwr� PICON-CLASS-DISTRIBUTION; 2 DIRECTORY! 06/20/86 16:06:56 joed� PICON-DEMOS; 2 DIRECTORY! 03/07/86 13:11:22 DWR� PICON-DEV; 4 DIRECTORY! 03/07/86 13:11:50 DWR� PICON-PAST-CLASSES; 3 DIRECTORY! 05/09/86 05:48:38 DWR� PICON-RELEASE-1-0; 3 DIRECTORY! 05/20/86 13:37:20 DWR� PICON-RELEASE-1-2; 3 DIRECTORY! 07/16/86 16:00:17 dwr� PICON-TEST; 1 DIRECTORY! 03/08/86 16:06:57 DWR� PICON-USER; 5 DIRECTORY! 03/07/86 13:11:31 DWR� PIKE; 4 DIRECTORY! 02/16/86 14:19:06 dwr� PIKE-2; 5 DIRECTORY! 07/02/86 13:18:26 WSP� PIKE-RELEASE-1-0; 5 DIRECTORY! 05/20/86 14:16:20 dwr� QL; 2 DIRECTORY! 12/25/85 11:21:11 gd� RMW; 2 DIRECTORY! 02/04/86 14:52:43 dwr� TAH; 1 DIRECTORY! 05/16/86 12:48:22 hotchkiss� TAHBAK; 1 DIRECTORY! 07/17/86 13:17:52 troy� TIGER-QUEUE; 3 DIRECTORY! 12/25/85 11:21:05 gd���DEBBIE;‰‰‰‰Debbie Ellerin's directory��DWR;‰‰‰‰My stuff.��GUIDE-BETA;‰‰‰LMI Guide software for teaching PICON class�‰‰‰‰if so desired. I never used it to teach PICON.��IKE;‰‰‰‰Is the currently released 1.2 version of the�‰‰‰‰IKE software.��IKE-DEMOS;‰‰‰IKE knowledge base demo files which would�‰‰‰‰be suitable for customer demos.��IKE-RELEASE-1-0;‰‰1.0 released version of IKE stored as a backup.��IKE-RELEASE-1-2;‰‰1.2 released version of IKE stored as a backup.��MIKE;‰‰‰‰Mike Phillips personal directory for backup.��PICON;‰‰‰‰The currently released version of 1.2 Software.��PICON-2;‰‰‰??��PICON-BACKUP;‰‰‰Duplicate copy of PICON;��PICON-CLASS;‰‰‰PICON course software and text files.��PICON-CLASS-DISTRIBUTION;‰Only the subset of files from PICON-CLASS which �‰‰‰‰students need to do their exercises. This �‰‰‰‰directory gets files from running the function:��‰‰‰‰‰update-course-master-directory which�‰‰‰‰�‰‰‰‰is found iun the file:��‰‰‰‰‰ralph:picon-dev;picon-utilities.lisp��PICON-DEMOS;‰‰‰PICON knowledge base file which are suitable for�‰‰‰‰customer demonstrations of PICON.��PICON-DEV;‰‰‰This directory contains mainly my personally �‰‰‰‰developed code for various things. Mainly the�‰‰‰‰development of active gauges for PICON are here�‰‰‰‰as well as many other things. PICON-DEV is simply�‰‰‰‰short for picon-development-work.��PICON-PAST-CLASSES;‰‰This directory holds a menagerie of files, most of�‰‰‰‰which are knowledge bases, which students in previous�‰‰‰‰classes have created. I kept them for examples.��PICON-RELEASE-1-0;‰‰This is the release 1.0 version of PICON.��PICON-RELEASE-1-2;‰‰This is the release 1.2 version of PICON.��PICON-TEST;‰‰‰This directory contains a series of knowledge bases�‰‰‰‰to load and run which will provide some level of�‰‰‰‰test cases to insure a good functioning PICON. These�‰‰‰‰are not all inclusive but provide a basic foundation.��PICON-USER;‰‰‰Many times I have dome or customers have come and done�‰‰‰‰work here in Andover. This directory contains lots of�‰‰‰‰bits-and-pieces of work a variety of people have done.��PIKE;‰‰‰‰This is the current version of the software namely 1.2��PIKE-2;‰‰‰‰This is the experimental 2.0 version of PICON and IKE.��PIKE-RELEASE-1-0;‰‰This is 1.0 PICON and IKE.��QL;‰‰‰‰I do not have a full complement of lisp sources on RALPH.�‰‰‰‰There was no need to do it so I just avoided the headache.�‰‰‰‰There are some lisp sources though in the QL; directory.��RMW;‰‰‰‰Rob Wojcik's old directory with much work on the IKE course�‰‰‰‰being represented here.��TAH;‰‰‰‰Troy Hiendell��TAHBAK;‰‰‰‰Good idea to backup but might want to do it on another�‰‰‰‰machine.��LMFL(:BYTE-SIZE 16 :AUTHOR "bat" :CHARACTERS NIL :QFASLP NIL :LENGTH 4317 :CREATION-DATE 2734620527 :DIRECTORY "PICON-CLASS" :NAME "BATEX-12" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€bat€ì€Alice€†€ÿ¢¸F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ Œ1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ¶M�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ç‹B€MD€B€Nƒ€WJB€ƒ€BAT€CƒNEXT-NEW-STATEMENT-NUMBER€F€*C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-12€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 12€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€qD€B€K†€ ¶MB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€yD€B€K†€ ¶MB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€�D€B€K†€ ¶MB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€‰D€B€K†€ ¶MB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€‘D€B€K†€ ¶MB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€™D€B€K†€ ¶MB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€¡D€B€K†€ ¶MB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€©D€B€K†€ ¶MB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ Ù‹B€MB€XÃ�STATEMENT-TEXTD€D€C€=€D€ƒ‚TANK-IS-NOT-FILLING€C�CONDITION€ƒ€NIL€¬…let tank-is-not-filling be a named conditionC‚STATEMENT-NUMBER?€F€$ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€B€ID€B€JD€B€±D€ B€K†€ ׋B€MB€XB€³D€D€B€´D€C�EMPTY-TIME�NUMERIC€B€¸¬„let empty-time be a numeric variableB€¼F€"B€¾B€¸1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€ÀTIMER€B€ÆB€¸,„let timer be a numeric variable€B€¼F€B€¾B€¸…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€‚TANK-IS-FILLING€B€¶B€¸,…let tank-is-filling be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€C�FILL-TIME€B€ÆB€¸¬„let fill-time be a numeric variable€B€¼F€B€¾B€¸B€ØB€Ù1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€Ã�TIMER-STARTED€B€¶B€¸ì„let timer-started be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€Ã�TIMER-RUNNING€B€¶B€¸ì„let timer-running be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ -RB€MB€NB€³D€D€B€´D€C�FILL-TIMERB€ÆB€¸¬„let fill-timer be a numeric variableB€¼F€B€¾B€¸1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€¸FÀRFÀnF€±F€nD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€fì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ 7RB€MB€NB€³l€3€B€¼F€B€-FÀ.FÀ¯FÀFÀ™D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€³CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ.FÀ¯FÀFÀ™D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€$B€-FÀ#FÀ©FÀFÀœB€)D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ ç‹B€MB€XB€³D€B€&C�GAP-VALUE€ì‡if tank-is-filling then increment fill-time by 10 seconds ...€D€B€JD€€F€:B€-B€¼F€%B€-FÀ FÀ¯F€,FÀ™D€D€B€5D€ƒ�GAPS-IN-TEXTD€D€€F€:B€6B€³B€7F€7FÀ FÀ¯F€,FÀ™D€D€B€>D€B€?B€$B€-FÀFÀ©F€$FÀœB€MD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€JD€B€K†€ Ø‹B€MB€XB€³D€D€C€IFB€µD€D€C�INCREMENT€B€ÅD€F€ �INTERVALì‡if tank-is-not-filling then increment empty-time by 10 secondsB€¼F€#B€-FÀ FÀ F€6F€ D€D€B€5D€B€6B€³B€7F€7FÀ FÀ F€6F€ D€D€B€>D€B€?B€$B€-FÀÿFÀF€.F€B€|D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€JD€B€K†€ ׋B€MB€XB€³D€D€B€tD€ƒ€NOT€B€µD€D€ƒ€SENDD€,‚Empty time = ~6FB€ÅD€ƒ�DESTINATION€�OPERATOR,„if not tank-is-not-filling then€¬†send "Empty time = ***" with empty-time to operator€B€¼F€!B€-FÀ FÀ:F€ßFÀD€D€B€5D€B€6B€³B€7F€þFÀ FÀ:F€ßFÀD€D€B€>D€B€?B€$B€-FÀFÀ4F€FÀ'B€¥D€B€>D€B€?B€$B€-FÀóFÀ$F€×FÀB€¦D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€JD€ B€K†€ æ‹B€MB€XB€³D€D€B€tD€C€<€C€L1D€Ã�DELAYED-VALUE€B€ËF€ D€D€�CONCLUDEB€µD€D€ƒ�CONCLUDE-NOTB€µlˆif L1 < L1 as of 10 seconds ago then conclude tank-is-not-filling ì„else conclude not tank-is-not-filling€B€¼F€ ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀ FÀfF€XFÀ@D€D€B€5D€B€6B€³B€7F€@FÀ FÀfF€XFÀ@D€D€B€>D€B€?B€$B€-FÀFÀ`F€PFÀSB€×D€B€>D€B€?B€$B€-FÀòFÀPF€ZFÀCB€ØD€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€òF€fF€F€„ÀCLOCK€D€ƒ�ACCUMULATOR€B€¸FÀ2F€,F€dF€^ƒ€TANKD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ 7RB€MB€NB€³l€4€B€¼F€B€-FÀ.FÀŒFÀFÀvD€D€B€5D€B€6B€³B€7F€ÂFÀ.FÀŒFÀFÀvD€D€B€>D€B€?B€$B€-FÀ#FÀ†FÀFÀyB€D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ 7RB€MB€NB€³l€2€B€¼F€B€-FÀ.FÀðFÀFÀÚD€D€B€5D€B€6B€³B€7F€ÂFÀ.FÀðFÀFÀÚD€D€B€>D€B€?B€$B€-FÀ#FÀêFÀFÀÝB€-D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ 7RB€MB€NB€³l€1€B€¼F€B€-FÀ-FÀ!FÀFÀ D€D€B€5D€B€6B€³B€7F€ÂFÀ-FÀ!FÀFÀ D€D€B€>D€B€?B€$B€-FÀ"FÀFÀFÀB€JD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ ׋B€MD€B€NB€XB€³D€D€C�INITIALLY€D€D€ƒ€SET€B€ì€D€B€jB€Å€l†initially set fill-time = 0 and set empty-time = 0B€¼F€ B€-FÀ FÀŒF€ÇFÀvD€D€B€5D€B€6B€³B€7F€ÂFÀ FÀŒF€ÇFÀvD€D€B€>D€B€?B€$B€-FÀFÀ†F€¿FÀyB€qD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€JD€B€K†€ ŽýB€MD€B€NB€WB€³D€D€B€tD€B€šB€àD€D€B€œD€,‚Fill time = ~6F€B€ìD€B€ŸB€ ¬ƒif not tank-is-filling then€l†send "Fill time = ***" with fill-time to operator€B€¼F€B€-FÀ FÀðF€ÍFÀÊD€D€B€5D€B€6B€³B€7F€ÂFÀ FÀðF€ÍFÀÊD€D€B€>D€B€?B€$B€-FÀFÀêFÀFÀÝB€—D€B€>D€B€?B€$B€-FÀóFÀÚF€ÅFÀÍB€˜D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€JD€ B€K†€ …8B€MB€NB€³D€D€B€tD€C€>€B€ËD€B€ÌB€ËF€ D€D€B€ÐB€àD€D€B€ÓB€àì‡if L1 > L1 as of 10 seconds ago then conclude tank-is-filling l„else conclude not tank-is-filling€B€¼F€B€ÛF€ B€-FÀ FÀ!F€3FÀûD€D€B€5D€B€6B€³B€7F€ÂFÀ FÀ!F€3FÀûD€D€B€>D€B€?B€$B€-FÀFÀF€+FÀB€ÅD€B€>D€B€?B€$B€-FÀóFÀ F€5FÀþB€ÆD€B€ýD€B€þF€ B€B€-F€¢F€eF€ÀF€ƒB€ËD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€JD€ B€K†€ ýQB€MB€NB€³D€D€B€tD€B€¼B€€B€¸¬ƒif CLOCK > 0 then do nothingB€¼F€ B€ÛF€ B€-FÀF€6F€ôF€LD€D€B€5D€B€6B€³B€7F€ÂFÀF€6F€ôF€LD€D€B€>D€B€?B€$B€-FÀF€<F€ìF€IB€õD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ ‡xB€MB€NB€³¬�Exercise #12B€¼F€B€-FÀ3FÀLFÀµFÀ6D€D€B€5D€B€6B€³B€7F€ÂFÀ3FÀLFÀµFÀ6D€D€B€>D€B€?B€$B€-FÀ(FÀFFÀ½FÀ9B€D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ RB€MB€NB€³D€D€�SIMULATEB€B€¸ƒ€TIME,ƒsimulate clock with timeB€¼F€ B€-FÀF€5FÀ$F€KD€D€B€5D€B€6B€³B€7F€ÂFÀF€5FÀ$F€KD€D€B€>D€B€?B€$B€-FÀF€;FÀ,F€HB€5D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€0D€B€K†€ {ýB€MD€B€NB€WB€³D€D€B€2B€Ë€D€B€tD€B€ÊB€3F€,D€C€+€B€Ë‡ÀD€B€tD€B€ÊB€3F€XF€KD€ƒ€MAX€€D€C€-€B€Ë‡À}33¬…simulate L1 with 0 then if time < 300 then €¬…(L1 + .25) else if time < 600 then 75 else €l‚max (0, L1 - .15)€B€¼F€B€-FÀF€ñF€–F€'D€D€B€5D€B€6B€³B€7F€ÂFÀF€ñF€–F€'D€D€B€>D€B€?B€$B€-FÀF€÷F€F€B€fD€B€>D€B€?B€$B€-FÀôF€F€ŽF€B€gD€B€>D€B€?B€$B€-FÀôF€FÀ\F€$B€hD€D€C‚CONTROL-CONNECTIONB€¸F€B€¸ƒƒSENSOR-CONTROLLER-CONNECTIONB€¸FÀD€C�FLOW-PIPE€B€¸B€¸F€B€¸Ã‚ACCUMULATOR-MAIN-INPUTFÀD€B€—B€¸F€B€¸ƒACCUMULATOR-MAIN-OUTPUT€B€¸F€D€B€’B€¸F€F€ ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€%D€B€’B€¸F€ B€¸B€”B€¸FÀB€¸1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 9330 :CREATION-DATE 2728669978 :DIRECTORY "PICON-CLASS" :NAME "CASE-1-SOLUTION" :TYPE "PIC" :VERSION 6) hưs2€D€p€,€l�FASD-DATA€D€¬€KCA€,�Higgins€†€¤¢4F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ý1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ K�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ýB€MD€B€Nƒ€KCA€CƒNEXT-NEW-STATEMENT-NUMBER€F€wC„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€‚CASE-1-SOLUTION€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?,ƒCase Study 1 - Solution€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ KB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ KB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ KB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ KB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ KB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ '=B€MB€NƒƒMESSAGE-MUST-PRINT-INTERVAL€F€1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€¢D€B€K†€ KB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€ªD€B€K†€ KB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ ¤HB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ÃTANK-LEVEL-IS-DANGEROUSLY-HIGHC�CONDITION€ƒ€NIL€,‡let tank-level-is-dangerously-high be a named condition€C‚STATEMENT-NUMBER?€F€tƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€¹FÀ( FÀ¤F€v F€ØD€0D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ 8B€MB€NB€´D€D€C€IFD€C€>€Ã€CLOCK€F€ÐD€D€ƒ€SENDD€ìƒThe simulation has completed.€D€ƒ�DESTINATION€�OPERATORì‚if CLOCK > 2000 then €,†send "The simulation has completed." to operatorB€½F€vƒPICON-RULE-SCAN-INTERVALF€<B€-FÀÑF€FÀF€DD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€´CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÑF€FÀF€DD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÎB€-FÀÆF€$FÀ F€1B€áD€B€úD€B€ûB€ÎB€-FÀ·F€4FÀF€AB€âD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€B€K†€ ¥HB€MB€NB€´D€D€B€ÓD€ƒ€AND€B€¶Ã‚THERE-IS-INCOMING-FLOWD€D€B€ØD€l‡Tank level is above safety limit and is still�increasing.€D€B€ÛB€ÜC�EVERY-TIME¬‡if tank-level-is-dangerously-high and there-is-incoming-flow,‡then send "Tank level is above safety limit and is still¬„increasing." to operator every time€B€½F€sB€-FÀÓFÀpFÀ¥FÀ:D€D€B€ñD€B€òB€´B€óF€ÂFÀÓFÀpFÀ¥FÀ:D€D€B€úD€B€ûB€ÎB€-FÀÈFÀjFÀ­FÀ]B€D€B€úD€B€ûB€ÎB€-FÀ¹FÀZFÀÂFÀMB€D€B€úD€B€ûB€ÎB€-FÀ¹FÀJFÀFÀ=B€D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€²D€ B€K†€ üB€MD€B€NB€WB€´D€D€B€µD€B€B€·D€B€ÔD€C€+€C€F1C€F2C€F3¬†let condition there-is-incoming-flow = F1 + F2 > F3€B€½F€uB€¿B€-B€-FÀÒFÀ"FÀõFÀ D€D€B€ñD€B€òB€´B€óF€ÂFÀÒFÀ"FÀõFÀ D€D€B€úD€B€ûB€ÎB€-FÀÇFÀFÀýFÀB€LD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€ §HB€MB€NB€´D€D€B€ÓD€B€ÔC€L1ƒTANK-LEVEL-SAFETY-LIMIT€D€D€B€ØD€¬…Tank level: ~6F is over safety limit of ~6F€B€jB€kD€B€ÛB€ÜF€<D€�CONCLUDEB€¶ì„if L1 > tank-level-safety-limit then €l†send "Tank level: *** is over safety limit of ***",† with L1, tank-level-safety-limit to operator ì‚ every 1 minute and€,…conclude tank-level-is-dangerously-high€B€½F€qB€åF€<CƒPICON-RULE-ALERT-INTERVAL€F€B€-FÀÒFÀßFÀïFÀ‰D€D€B€ñD€B€òB€´B€óF€ÂFÀÒFÀßFÀïFÀ‰D€D€B€úD€B€ûB€ÎB€-FÀÇFÀÙFÀ{FÀÌB€vD€B€úD€B€ûB€ÎB€-FÀ¸FÀÉFÀ÷FÀ¼B€wD€B€úD€B€ûB€ÎB€-FÀ¸FÀ¹FÀ FÀ¬B€xD€B€úD€B€ûB€ÎB€-FÀ¸FÀ©FÀüFÀœB€yD€B€úD€B€ûB€ÎB€-FÀ¸FÀ™FÀZFÀŒB€zD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€²D€ B€K†€ šHB€MB€NB€´D€D€B€µB€kF€|ìƒtank-level-safety-limit = 380€B€½F€pB€¿B€-B€-FÀÓFÀFÀ¼FÀúD€D€B€ñD€B€òB€´B€óF€ÂFÀÓFÀFÀ¼FÀúD€D€B€úD€B€ûB€ÎB€-FÀÈFÀ FÀÄFÀýB€µD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€ ™HB€MB€NB€´D€D€B€ÓD€B€ÔB€GF€dD€D€B€ØD€¬… F2 is reading ~6F and should not exceed 100B€GD€B€ÛB€Ül‚if F2 > 100 then €¬†send " F2 is reading *** and should not exceed 100"€¬‚with F2 to operator€B€½F€nB€åF€B€-FÀÔFÀeFÀèFÀ/D€D€B€ñD€B€òB€´B€óF€ÚFÀÔFÀeFÀèFÀ/D€D€B€úD€B€ûB€ÎB€-FÀÉFÀ_FÀ1FÀRB€ÛD€B€úD€B€ûB€ÎB€-FÀºFÀOFÀðFÀBB€ÜD€B€úD€B€ûB€ÎB€-FÀºFÀ?FÀFÀ2B€ÝD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€ ™HB€MB€NB€´D€D€B€ÓD€B€ÔB€FF€<D€D€B€ØD€¬… F1 is reading ~6F and should not exceed 60€B€FD€B€ÛB€Ü,‚if F1 > 60 then l†send " F1 is reading *** and should not exceed 60"¬‚with F1 to operator€B€½F€mB€åF€B€-FÀÕFÀ¶FÀòFÀ€D€D€B€ñD€B€òB€´B€óF€ÂFÀÕFÀ¶FÀòFÀ€D€D€B€úD€B€ûB€ÎB€-FÀÊFÀ°FÀ;FÀ£B€D€B€úD€B€ûB€ÎB€-FÀ»FÀ FÀúFÀ“B€D€B€úD€B€ûB€ÎB€-FÀ»FÀ�FÀFÀƒB€D€C…NAPH-CHROMATOGRAPH-ANALYTICAL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€FÀÑF€!FÀ³B€ÕD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ mHB€MB€NB€´D€D€�SIMULATEC€P2€D€ƒ€MAX€€D€C€*€C€F4Ç€3e33ì…simulate P2 with 0 then (max ( 0 ,F4 * 12.65))B€½F€(B€-F€ÞF€xF€Ž F€ŽD€D€B€ñD€B€òB€´B€óF€ÂF€ÞF€xF€Ž F€ŽD€D€B€úD€B€ûB€ÎB€-F€éF€~F€† F€‹B€SD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€ õB€MB€NB€´D€D€B€ÓD€B€ÔB€Õ€B€¹¬ƒif clock > 0 then do nothingB€½F€B€åF€ B€-FÀ� FÀ{FÀ‚FÀeD€D€B€ñD€B€òB€´B€óF€ÂFÀ� FÀ{FÀ‚FÀeD€D€B€úD€B€ûB€ÎB€-FÀ… FÀuFÀŠFÀhB€tD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€ åCB€MB€NB€´D€D€B€ÓD€B€ÔB€I€B€¹lƒif P2 > 0 then do nothing€B€½F€iB€åF€ B€-FÀ� FÀ£FÀ�FÀ�D€D€B€ñD€B€òB€´B€óF€ÂFÀ� FÀ£FÀ�FÀ�D€D€B€úD€B€ûB€ÎB€-FÀ… FÀ�FÀ¥FÀ�B€–D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€  B€MB€NB€´D€D€B€ÓD€B€ÔC€P1€B€¹lƒif P1 > 0 then do nothing€B€½F€*B€åF€ B€-FÀ� FÀÈFÀ�FÀ²D€D€B€ñD€B€òB€´B€óF€ÂFÀ� FÀÈFÀ�FÀ²D€D€B€úD€B€ûB€ÎB€-FÀ… FÀÂFÀ¥FÀµB€¹D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€  B€MB€NB€´D€D€B€ÓD€B€ÔB€N€B€¹lƒif F4 > 0 then do nothing€B€½F€)B€åF€ B€-FÀ� FÀíFÀ�FÀ×D€D€B€ñD€B€òB€´B€óF€ÂFÀ� FÀíFÀ�FÀ×D€D€B€úD€B€ûB€ÎB€-FÀ… FÀçFÀ¥FÀÚB€ÛD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€ ÿB€MB€NB€´D€D€B€ÓD€B€ÔB€I€B€¹lƒif F3 > 0 then do nothing€B€½F€!B€åF€ B€-FÀ� FÀFÀ�FÀýD€D€B€ñD€B€òB€´B€óF€ÂFÀ� FÀFÀ�FÀýD€D€B€úD€B€ûB€ÎB€-FÀ… FÀ FÀ¥FÀB€ýD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€ ŒCB€MB€NB€´D€D€B€ÓD€B€ÔB€G€B€¹lƒif F2 > 0 then do nothing€B€½F€B€åF€ B€-FÀ� FÀ6FÀ�FÀ D€D€B€ñD€B€òB€´B€óF€ÂFÀ� FÀ6FÀ�FÀ D€D€B€úD€B€ûB€ÎB€-FÀ… FÀ0FÀ¥FÀ#B€D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€ ‹CB€MB€NB€´D€D€B€ÓD€B€ÔB€F€B€¹lƒif F1 > 0 then do nothing€B€½F€B€åF€ B€-FÀ� FÀ[FÀ�FÀED€D€B€ñD€B€òB€´B€óF€ÂFÀ� FÀ[FÀ�FÀED€D€B€úD€B€ûB€ÎB€-FÀ… FÀUFÀ¥FÀHB€AD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€ÑD€ B€K†€ ‘B€MB€NB€´D€D€B€ÓD€B€ÔB€j€B€¹lƒif L1 > 0 then do nothing€B€½F€B€åF€ B€-FÀ� FÀ�FÀ�FÀkD€D€B€ñD€B€òB€´B€óF€ÂFÀ� FÀ�FÀ�FÀkD€D€B€úD€B€ûB€ÎB€-FÀ… FÀ{FÀ¥FÀnB€cD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ MB€MB€NB€´D€l…The purpose of these rules is to force the¬…displaying of sensor values on the schematicB€½F€_B€-FÀ‘ FÀµFÀäFÀ�D€D€B€ñD€B€òB€´B€óF€ÂFÀ‘ FÀµFÀäFÀ�D€D€B€úD€B€ûB€ÎB€-FÀ† FÀ¯FÀ FÀ¢B€ƒD€B€úD€B€ûB€ÎB€-FÀw FÀŸFÀìFÀ’B€„D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ 18B€MB€NB€´D€D€B€HC�TEMP-STARTB€¹F€P¬ƒsimulate temp-start with 80€B€½F€.B€-F€‡F€˜F€Œ F€®D€D€B€ñD€B€òB€´B€óF€ÂF€‡F€˜F€Œ F€®D€D€B€úD€B€ûB€ÎB€-F€’F€žF€„ F€«B€«D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ èCB€MB€NB€´D€D€B€H‚SIM-TANK-AREA-2€B€¹Ç€pl„simulate sim-tank-area-2 with 3.5€B€½F€jB€-F€QF€oF€Œ F€…D€D€B€ñD€B€òB€´B€óF€ÂF€QF€oF€Œ F€…D€D€B€úD€B€ûB€ÎB€-F€\F€uF€„ F€‚B€ÌD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ N=B€MB€NB€´D€D€B€HÃ�SIM-TANK-AREA€B€¹Ç€£@ ×,„simulate sim-tank-area with 2.02B€½F€WB€-F€ZF€FF€Œ F€\D€D€B€ñD€B€òB€´B€óF€ÂF€ZF€FF€Œ F€\D€D€B€úD€B€ûB€ÎB€-F€eF€LF€„ F€YB€íD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ p8B€MB€NB€´D€D€B€HB€Õ€ƒ€TIME,„simulate clock with 0 then time€B€½F€B€-F€cF€F€Œ F€5D€D€B€ñD€B€òB€´B€óF€ÂF€cF€F€Œ F€5D€D€B€úD€B€ûB€ÎB€-F€nF€%F€„ F€2B€D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ 98B€MB€NB€´D€D€B€HC�TEMP-WAVE€B€¹D€C�PICON-WAVEF€ÐF€ÐF€€p€€F€`T,†simulate local temp-wave with wave with central€l†value 2000 and deviation 2000 and period 8 hours €,‚and phase 21600€B€½F€-B€-F€²F€ÓF€Œ F€ D€D€B€ñD€B€òB€´B€óF€ÂF€²F€ÓF€Œ F€ D€D€B€úD€B€ûB€ÎB€-F€½F€ÙF€c F€æB€6D€B€úD€B€ûB€ÎB€-F€ÌF€éF€„ F€öB€7D€B€úD€B€ûB€ÎB€-F€ÌF€ùF€RF€B€8D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ áCB€MB€NB€´D€D€B€HB€µ€D€B€MÇ€PB€Il„simulate P1 with 0 then (2.5 * F3)B€½F€\B€-F€KF€ªF€� F€ÀD€D€B€ñD€B€òB€´B€óF€ãF€KF€ªF€� F€ÀD€D€B€úD€B€ûB€ÎB€-F€VF€°F€‡ F€½B€fD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ ]HB€MB€NB€´D€D€B€H�F3-WAVE€B€¹D€B€-F€P€F€<€Ç€3S33€ì…simulate local f3-wave with wave with central€ì…value 80 and deviation 0 and period 1 minute €ì�and noise 1.3€B€½F€kB€-F€ÙF€(F€� F€^D€D€B€ñD€B€òB€´B€óF€ÂF€ÙF€(F€� F€^D€D€B€úD€B€ûB€ÎB€-F€äF€.F€x F€;B€�D€B€úD€B€ûB€ÎB€-F€óF€>F€‡ F€KB€ŽD€B€úD€B€ûB€ÎB€-F€óF€NF€gF€[B€�D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ mHB€MB€NB€´D€D€B€HB€N€D€B€K€D€C€-€B€IÇ€ûV“ì…simulate F4 with 0 then (max ( 0, f3 - .021))€B€½F€'B€-F€èF€õF€� F€ D€D€B€ñD€B€òB€´B€óF€ÂF€èF€õF€� F€ D€D€B€úD€B€ûB€ÎB€-F€óF€ûF€‡ F€B€ÀD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ \HB€MB€NB€´D€D€B€HB€I€D€B€ÓD€C€<€B€ F€°€D€B€ÓD€B€ßB€ F€D€ƒ€MIN€B€„D€B€EB€IÇ€3c33D€B€ÓD€B€ßB€ F€Ð€€,ƒsimulate F3 with 0 then ¬ƒif time < 1200 then 0 else €ì†if time < 1800 then (min (f3-wave, (F3 + 3.1))) else €¬ƒif time < 2000 then 0 else 0B€½F€"B€-F€‘F€�F€� F€ÖD€D€B€ñD€B€òB€´B€óF€ÂF€‘F€�F€� F€ÖD€D€B€úD€B€ûB€ÎB€-F€œF€–F€sF€£B€ñD€B€úD€B€ûB€ÎB€-F€«F€¦F€�F€³B€òD€B€úD€B€ûB€ÎB€-F€«F€¶F€‡ F€ÃB€óD€B€úD€B€ûB€ÎB€-F€«F€ÆF€¦F€ÓB€ôD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ íCB€MB€NB€´D€ D€B€HB€GB€¹D€B€ÓD€B€ßB€ F€–D€B€-F€dF€dF€X€€F€ÂD€B€ÓD€B€ßB€ F€ÂD€B€-F€d€F€<€Ç€ÿffff€D€B€ÓD€B€ßB€ F€XD€B€-F€dF€dF€X€€F€Â€l‚simulate F2 with €,ƒif time < 150 then wave€,† with central value 100 and deviation 100 and€,… period 600 seconds and phase 450 elseì…if time < 450 then wave with central value 100l‡ and deviation 0 and period 1 minute and noise .4 else €,ƒif time < 600 then wave€,† with central value 100 and deviation 100 and€l… period 600 seconds and phase 450 else 0B€½F€hB€-F€mFÀ&F€� F€pD€D€B€ñD€B€òB€´B€óF€ÂF€mFÀ&F€� F€pD€ D€B€úD€B€ûB€ÎB€-F€xFÀ F€FÀB€DD€B€úD€B€ûB€ÎB€-F€‡FÀF€UFÀB€ED€B€úD€B€ûB€ÎB€-F€‡€F€- F€ B€FD€B€úD€B€ûB€ÎB€-F€‡F€F€îF€B€GD€B€úD€B€ûB€ÎB€-F€‡F€ F€$ F€-B€HD€B€úD€B€ûB€ÎB€-F€‡F€0F€‡ F€=B€ID€B€úD€B€ûB€ÎB€-F€‡F€@F€UF€MB€JD€B€úD€B€ûB€ÎB€-F€‡F€PF€- F€]B€KD€B€úD€B€ûB€ÎB€-F€‡F€`F€ F€mB€LD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ íCB€MB€NB€´D€ D€B€HB€FB€¹D€B€ÓD€B€ßB€ F€–D€B€-F€<F€<F€X€€F€ÂD€B€ÓD€B€ßB€ F€ÂD€B€-F€<€F€<€Ç€ÿÌLÍÌ€D€B€ÓD€B€ßB€ F€XD€B€-F€<F€<F€X€€F€Â€l‚simulate F1 with €B€Eì… with central value 60 and deviation 60 and€B€Gl†if time < 450 then wave with central value 60 and ì† deviation 0 and period 1 minute and noise .3 else €,ƒif time < 600 then wave€ì… with central value 60 and deviation 60 and€l… period 600 seconds and phase 450 else 0B€½F€B€-F€‘FÀ×F€� FÀAD€D€B€ñD€B€òB€´B€óF€ÂF€‘FÀ×F€� FÀAD€ D€B€úD€B€ûB€ÎB€-F€œFÀÑF€4FÀÄB€ºD€B€úD€B€ûB€ÎB€-F€«FÀÁF€yFÀ´B€ED€B€úD€B€ûB€ÎB€-F€«FÀ±F€? FÀ¤B€»D€B€úD€B€ûB€ÎB€-F€«FÀ¡F€ FÀ”B€GD€B€úD€B€ûB€ÎB€-F€«FÀ‘F€l FÀ„B€¼D€B€úD€B€ûB€ÎB€-F€«FÀ�F€‡ FÀtB€½D€B€úD€B€ûB€ÎB€-F€«FÀqF€yFÀdB€¾D€B€úD€B€ûB€ÎB€-F€«FÀaF€? FÀTB€¿D€B€úD€B€ûB€ÎB€-F€«FÀQF€$ FÀDB€ÀD€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ „CB€MB€NB€´D€ D€B€HC€T1F€}D€B€ÓD€B€ßB€ F€XF€PD€B€ÓD€B€ßB€ F€„D€B€-F€PF€ªF€°€€F€,D€B€ÓD€B€ßB€ F€` F€úD€B€ÓD€B€ßB€ F€¸ D€B€-F€}F€}F€` €€F€°F€Flƒsimulate T1 with 125 then ¬ƒif time < 600 then 80 else €,ƒif time < 900 then wave€ì… with central value 80 and deviation 170 andl… period 1200 seconds and phase 300 else ìƒif time < 2400 then 250 else €,ƒif time < 3000 then wave,† with central value 125 and deviation 125 and€ì… period 2400 seconds and phase 1200 else 70€B€½F€B€-F€ÇFÀƒF€� FÀíD€D€B€ñD€B€òB€´B€óF€ÂF€ÇFÀƒF€� FÀíD€ D€B€úD€B€ûB€ÎB€-F€ÒFÀ}F€»FÀpB€.D€B€úD€B€ûB€ÎB€-F€áFÀmF€ÓFÀ`B€/D€B€úD€B€ûB€ÎB€-F€áFÀ]F€¯FÀPB€0D€B€úD€B€ûB€ÎB€-F€áFÀMF€~ FÀ@B€1D€B€úD€B€ûB€ÎB€-F€áFÀ=F€Z FÀ0B€2D€B€úD€B€ûB€ÎB€-F€áFÀ-F€åFÀ B€3D€B€úD€B€ûB€ÎB€-F€áFÀF€¸FÀB€4D€B€úD€B€ûB€ÎB€-F€áFÀ F€‡ FÀB€5D€B€úD€B€ûB€ÎB€-F€áFÀýF€u FÀðB€6D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€FD€B€K†€ ©HB€MB€NB€´D€ D€B€HB€j€D€B€ÓD€B€ßB€ F€XD€B€åD€B€EB€jD€B€MÇ€û=D²FD€C€/€B€FB€êD€B€MÇ€û=D²FD€B€ˆB€GB€ÉF€�D€B€ÓD€B€ßB€ F€°F€�D€B€ÓD€B€ßB€ F€D€B€-F€�F€�F€°F€€F€€,ƒsimulate L1 with 0 then l‚if time < 600 thenì… min ((L1 + (.01666 * (F1 / sim-tank-area))€¬‡ + (.01666 * (F2 / sim-tank-area-2))), 400) else€ìƒif time < 1200 then 397 else €,ƒif time < 1800 then wave,† with central value 400 and deviation 400 and€l‡ period 1200 seconds and phase 1800 and shape ramp-down ì€else 0B€½F€B€-F€[FÀ)F€� FÀ“D€D€B€ñD€B€òB€´B€óF€ÂF€[FÀ)F€� FÀ“D€ D€B€úD€B€ûB€ÎB€-F€fFÀ#F€=FÀB€¢D€B€úD€B€ûB€ÎB€-F€uFÀF€FÀB€£D€B€úD€B€ûB€ÎB€-F€uFÀF€ FÀöB€¤D€B€úD€B€ûB€ÎB€-F€uFÀóF€‡ FÀæB€¥D€B€úD€B€ûB€ÎB€-F€uFÀãF€yFÀÖB€¦D€B€úD€B€ûB€ÎB€-F€uFÀÓF€LFÀÆB€§D€B€úD€B€ûB€ÎB€-F€uFÀÃF€ FÀ¶B€¨D€B€úD€B€ûB€ÎB€-F€uFÀ³F€~ FÀ¦B€©D€B€úD€B€ûB€ÎB€-F€uFÀ£F€ªFÀ–B€ªD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€?B€-FÀbFÀFÀDF€4B€GD€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€B€=F€ B€?B€-FÀ�F€„FÀrF€¢B€D€B€ËD€B€ÌB€ÎB€-B€ÏD€B€ÐD€B€ID€B€JD€B€�D€B€K†€ û>B€MB€NB€´,ƒChemical Mixing Process€B€½F€%B€-FÀ'FÀåFÀFFÀÏD€D€B€ñD€B€òB€´B€óF€ÂFÀ'FÀåFÀFFÀÏD€D€B€úD€B€ûB€ÎB€-FÀFÀßFÀNFÀÒB€D€Ã�MATERIAL-SINK€B€¹F€ùF€lF€5F€ÆÃ€TANK-2D€CƒGUAGE-PRESSURE-THRU-SENSORD€B€?B€-F€ŠF€¨F€¨F€ØB€ID€Ã�HEAT-EXCHANGERB€¹FÀlF€¨FÀF€ÆÃ€COOLERD€B€÷D€B€?B€-F€>F€¨F€\F€ãB€ND€‚MATERIAL-SOURCE€B€¹FÀ>F€FÀF€aÀMIX-2€D€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€¹FÀÎF€"FÀ¡F€JÀPUMP-2D€B€÷D€B€?B€-F€žFÀF€¼FÀDB€ID€ƒ‚TWO-INPUT-MIXED-TANKB€¹F€)FÀ|F€eFÀ"ÀTANK-1D€B€<D€B€?B€-B€=F€F€hFÀ˜F€†FÀzB€jD€B€*D€B€?B€-F€äFÀF€FÀOB€µD€…EQUAL-PERCENTAGE-VARIABLE-CONTROL-VALVE€B€¹FÀ<FÀ�FÀFÀ_C€V1D€B€÷D€B€?B€-FÀŽFÀ˜FÀpFÀ]B€FD€B€EB€¹FÀÖFÀoFÀ©FÀGÀPUMP-1D€B€>B€¹FÀBFÀŠFÀFÀ0ÀMIX-1€D€D€C‚CONTROL-CONNECTIONB€¹F€B€¹ƒƒSENSOR-CONTROLLER-CONNECTIONB€¹FÀD€C�FLOW-PIPE€B€¹F€F€)ÃTHRU-SENSOR-OUTPUT-CONNECTION€ƒMIXED-TANK-INPUT-PORT-2€F€TD€B€€B€¹F€B€¹B€‚B€¹FÀD€B€…B€¹F€'F€ÂPUMP-OUTPUT-CONNECTIONƒƒTHRU-SENSOR-INPUT-CONNECTIONB€¹D€B€€B€¹F€ B€¹B€‚B€¹FÀD€B€…B€¹F€$F€ ƒƒHEAT-TRANSFER-OUTPUT-PORT-1€C‚PORT-SENSOR-INPUT€B€¹D€B€€B€¹B€¹F€,B€¹ƒVALVE-CONTROL-CONNECTIONFÀD€B€€B€¹F€*B€¹B€‚B€¹FÀD€B€€B€¹B€¹F€'B€¹CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€…B€¹F€#F€"B€ˆ‚SINK-INPUT-PORT€F€2D€B€€B€¹F€#B€¹B€‚B€¹FÀD€B€…B€¹B€¹F€$B€¹CƒHEAT-TRANSFER-INPUT-PORT-1F€D€B€…B€¹F€$F€%ƒƒHEAT-TRANSFER-OUTPUT-PORT-2€B€’B€¹D€B€…B€¹F€+F€$B€ˆCƒHEAT-TRANSFER-INPUT-PORT-2D€F€F€vFÀÅF€@D€B€…B€¹F€%F€#B€ˆB€’B€¹D€B€€B€¹F€%B€¹B€‚B€¹FÀD€B€…B€¹F€&F€'ƒHOLDER-OUTPUT-CONNECTIONÂPUMP-INPUT-CONNECTION€B€¹D€B€…B€¹F€(F€+B€ˆB€’B€¹D€B€€B€¹F€(B€¹B€‚B€¹FÀD€B€…B€¹F€)F€(B€ÈB€’B€¹D€B€…B€¹B€¹F€*B€¹B€šD€FÀ!F€ D€B€€B€¹F€+B€¹B€‚B€¹FÀD€B€…B€¹F€,F€)ƒVALVE-OUTPUT-CONNECTION€ƒMIXED-TANK-INPUT-PORT-1€B€¹D€B€…B€¹F€-F€,B€ˆÂVALVE-INPUT-CONNECTIONB€¹D€B€€B€¹F€-B€¹B€‚B€¹FÀD€B€€B€¹B€¹F€.B€¹B€¤FÀD€B€…B€¹F€.F€-B€‘B€’B€¹D€B€…B€¹F€/F€.B€ÈB€ÉB€¹B€¹1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "dwr" :CHARACTERS NIL :QFASLP NIL :LENGTH 12508 :CREATION-DATE 2725678310 :DIRECTORY "PICON-CLASS" :NAME "CASE-2-SOLUTION" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€¬€dwr€ì€Ralph€†€v¢íŒF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ 3@1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ K�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ 2@B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€�C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?,ƒCase Study 2 - Solution€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€kD€B€K†€ KB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€sD€B€K†€ KB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€{D€B€K†€ KB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ƒD€B€K†€ KB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€‹D€B€K†€ KB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€“D€B€K†€ '=B€MB€NƒƒMESSAGE-MUST-PRINT-INTERVAL€F€1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ KB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¥D€B€K†€ KB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ @B€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€‚TANK-IS-FILLING€C�CONDITION€ƒ€NIL€,…let tank-is-filling be a named conditionC‚STATEMENT-NUMBER?€F€ˆƒBACKTRACK-TO-GET-VALUE?€B€-1€D€B€ID€B€JD€B€­D€ B€K†€ @B€MB€NB€¯D€D€B€°D€‚TANK-IS-DRAININGB€²B€´l…let tank-is-draining be a named condition€B€¸F€‡B€ºB€-1€D€B€ID€B€JD€B€­D€ B€K†€ ¤HB€MB€NB€¯D€D€B€°D€ÃTANK-LEVEL-IS-DANGEROUSLY-HIGHB€²B€´,‡let tank-level-is-dangerously-high be a named condition€B€¸F€tB€ºB€-1€D€B€ID€B€JD€B€­D€ B€K†€ @B€MB€NB€¯D€D€B€°D€C�FILL-TIME€�NUMERIC€B€´¬„let fill-time be a numeric variable€B€¸F€}B€ºB€´1€D€B€ID€B€JD€B€­D€ B€K†€ @B€MB€NB€¯D€D€B€°D€C�DRAIN-TIMEB€ÚB€´¬„let drain-time be a numeric variableB€¸F€~B€ºB€´1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€´FÀ… FÀ F€… F€ D€@D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€`ì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ 2@B€MB€NB€¯D€D€�SIMULATEC€F4€D€C€/€D€C€*€C€F3D€C‚COMPOUND-VARIABLE€C€L2�SETPOINTD€ƒ€MAX€F€B€ì†simulate F4 with 0 then F3 * L2 setpoint / max (1, L2)B€¸F€'B€-F€–F€ðF€Ž F€D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€¯CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂF€–F€ðF€Ž F€D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€úB€-F€¡F€öF€† F€B€D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ )@B€MB€NB€¯D€D€C€IFD€C€>€B€F€dD€D€ƒ�SET-SETPOINTB€F€2D€D€B€7B€F€dl…if L2 > 100 then set L2 setpoint = 50 elseì‚set L2 setpoint = 100€B€¸F€‹ƒPICON-RULE-SCAN-INTERVALF€B€-F€F€ F€¦F€0D€D€B€D€B€B€¯B€F€ÂF€F€ F€¦F€0D€D€B€%D€B€&B€úB€-F€%F€F€žF€B€?D€B€%D€B€&B€úB€-F€4F€ F€ðF€-B€@D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ '@B€MB€NB€¯D€D€B€ÿC€P2€D€B€B€D€B€B€D€B€B€B€,†simulate P2 with 0 then F3 * (L2 / L2 setpoint)€B€¸F€(B€-F€×F€lF€� F€‚D€D€B€D€B€B€¯B€F€ÂF€×F€lF€� F€‚D€D€B€%D€B€&B€úB€-F€âF€rF€ˆ F€B€lD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ 98B€MB€NB€¯D€D€B€ÿC�TEMP-WAVE€B€´D€C�PICON-WAVEF€ÐF€ÐF€€p€€F€`T,†simulate local temp-wave with wave with central€l†value 2000 and deviation 2000 and period 8 hours €,‚and phase 21600€B€¸F€-B€-F€¶FÀÆF€� FÀ�D€D€B€D€B€B€¯B€F€ÂF€¶FÀÆF€� FÀ�D€D€B€%D€B€&B€úB€-F€ÁFÀÀF€g FÀ³B€”D€B€%D€B€&B€úB€-F€ÐFÀ°F€ˆ FÀ£B€•D€B€%D€B€&B€úB€-F€ÐFÀ F€VFÀ“B€–D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ ©HB€MB€NB€¯D€ D€B€ÿC€L1€D€B€3D€C€<€ƒ€TIMEF€XD€ƒ€MIN€D€C€+€B€ÀD€B€Ç€û=D²FD€B€C€F1Ã�SIM-TANK-AREA€D€B€Ç€û=D²FD€B€C€F2‚SIM-TANK-AREA-2€F€�D€B€3D€B€ÂB€ÃF€°F€�D€B€3D€B€ÂB€ÃF€D€B€‹F€�F€�F€°F€€F€€,ƒsimulate L1 with 0 then l‚if time < 600 thenì… min ((L1 + (.01666 * (F1 / sim-tank-area))€¬‡ + (.01666 * (F2 / sim-tank-area-2))), 400) else€ìƒif time < 1200 then 397 else €,ƒif time < 1800 then wave,† with central value 400 and deviation 400 and€l‡ period 1200 seconds and phase 1800 and shape ramp-down ì€else 0B€¸F€B€-F€\FÀ<F€� FÀ¦D€D€B€D€B€B€¯B€F€ÂF€\FÀ<F€� FÀ¦D€ D€B€%D€B€&B€úB€-F€gFÀ6F€>FÀ)B€æD€B€%D€B€&B€úB€-F€vFÀ&F€FÀB€çD€B€%D€B€&B€úB€-F€vFÀF€ FÀ B€èD€B€%D€B€&B€úB€-F€vFÀF€ˆ FÀùB€éD€B€%D€B€&B€úB€-F€vFÀöF€zFÀéB€êD€B€%D€B€&B€úB€-F€vFÀæF€MFÀÙB€ëD€B€%D€B€&B€úB€-F€vFÀÖF€ FÀÉB€ìD€B€%D€B€&B€úB€-F€vFÀÆF€ FÀ¹B€íD€B€%D€B€&B€úB€-F€vFÀ¶F€«FÀ©B€îD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ 18B€MB€NB€¯D€D€B€ÿC�TEMP-STARTB€´F€P¬ƒsimulate temp-start with 80€B€¸F€.B€-F€…F€°F€Š F€ÆD€D€B€D€B€B€¯B€F€ÂF€…F€°F€Š F€ÆD€D€B€%D€B€&B€úB€-F€�F€¶F€‚ F€ÃB€?D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ èCB€MB€NB€¯D€D€B€ÿB€ÏB€´Ç€pl„simulate sim-tank-area-2 with 3.5€B€¸F€jB€-F€QF€†F€Œ F€œD€D€B€D€B€B€¯B€F€ÂF€QF€†F€Œ F€œD€D€B€%D€B€&B€úB€-F€\F€ŒF€„ F€™B€_D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ N=B€MB€NB€¯D€D€B€ÿB€ÊB€´Ç€£@ ×,„simulate sim-tank-area with 2.02B€¸F€WB€-F€ZF€`F€Œ F€vD€D€B€D€B€B€¯B€F€ÂF€ZF€`F€Œ F€vD€D€B€%D€B€&B€úB€-F€eF€fF€„ F€sB€D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ p8B€MB€NB€¯D€D€B€ÿÀCLOCK€€B€Ã,„simulate clock with 0 then time€B€¸F€B€-F€cF€6F€Œ F€LD€D€B€D€B€B€¯B€F€ÂF€cF€6F€Œ F€LD€D€B€%D€B€&B€úB€-F€nF€<F€„ F€IB€ D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ !@B€MB€NB€¯D€D€B€ÿƒ�TANK-2-AREA€B€´‡Àƒ¸ìƒsimulate tank-2-area with 1.12B€¸F€zB€-F€mF€ F€� F€"D€D€B€D€B€B€¯B€F€ÂF€mF€ F€� F€"D€D€B€%D€B€&B€úB€-F€xF€F€… F€B€ÁD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ "@B€MB€NB€¯D€D€B€ÿB€€D€B€ÇD€B€D€B€B€B€¾F€B€,‡simulate L2 with 0 then ( F4 / tank-2-area) / 3600 + L2€B€¸F€wB€-F€ŒF€·F€� F€ÍD€D€B€D€B€B€¯B€F€ÂF€ŒF€·F€� F€ÍD€D€B€%D€B€&B€úB€-F€—F€½F€… F€ÊB€åD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€B€K†€ @B€MB€NB€¯D€D€B€3D€ƒ€AND€D€ƒ€NOT€B€ÁD€C€ISC�FILL-STAGE�DRAININGD€D€�ADVANCE€B€�UNKNOWN€D€ƒ€SENDD€¬‚Drain time was: ~6F€B€æD€ƒ�DESTINATION€ƒ€LOG€,‡if not tank-is-draining and fill-stage is draining then€,†advance step variable fill-stage to unknown and€l†send "Drain time was: ***" with drain-time to log€B€¸F€ŠB€-F€FÀCF€FÀ D€D€B€D€B€B€¯B€F€ïF€FÀCF€FÀ D€D€B€%D€B€&B€úB€-F€%FÀ=F€FÀ0B€D€B€%D€B€&B€úB€-F€4FÀ-F€ÚFÀ B€D€B€%D€B€&B€úB€-F€4FÀF€ìFÀB€D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€B€K†€ @B€MB€NB€¯D€D€B€3D€B€D€B€B€±D€B€B€�FILLING€D€D€B€ B€B€ D€B€D€l‚Fill time was: ~6FB€ÙD€B€B€ì†if not tank-is-filling and fill-stage is filling then€B€,†send "Fill time was: ***" with fill-time to log€B€¸F€‰B€-F€FÀˆF€ FÀRD€D€B€D€B€B€¯B€F€ÂF€FÀˆF€ FÀRD€D€B€%D€B€&B€úB€-F€&FÀ‚F€FÀuB€ND€B€%D€B€&B€úB€-F€5FÀrF€ÛFÀeB€D€B€%D€B€&B€úB€-F€5FÀbF€ÛFÀUB€OD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€B€K†€ @B€MB€NB€¯D€D€B€3B€ÁD€D€C�INCREMENT€B€æF€¬†if tank-is-draining then increment drain-time by 30€B€¸F€†B€-F€FÀ³F€÷FÀ�D€D€B€D€B€B€¯B€F€ïF€FÀ³F€÷FÀ�D€D€B€%D€B€&B€úB€-F€%FÀ­F€ïFÀ B€~D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€B€K†€ @B€MB€NB€¯D€D€B€3B€±D€D€B€yB€ÙF€l†if tank-is-filling then increment fill-time by 30€B€¸F€…B€-F€FÀÏF€åFÀ¹D€D€B€D€B€B€¯B€F€ÂF€FÀÏF€åFÀ¹D€D€B€%D€B€&B€úB€-F€%FÀÉF€ÝFÀ¼B€ D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ @B€MB€NB€¯D€D€B€3D€B€ÂB€ÀD€Ã�DELAYED-VALUE€B€ÀF€D€D€�CONCLUDEB€ÁD€B€ B€B€D€D€ƒ�CONCLUDE-NOTB€Á¬„if L1 < L1 as of 30 seconds ago then,ˆconclude tank-is-draining and advance step variable fill-stage €ì…to draining else conclude not tank-is-drainingB€¸F€„B€CF€B€-F€FÀF€rFÀÙD€D€B€D€B€B€¯B€F€OF€FÀF€rFÀÙD€D€B€%D€B€&B€úB€-F€%FÀ F€hFÀüB€ÊD€B€%D€B€&B€úB€-F€4FÀùF€jFÀìB€ËD€B€%D€B€&B€úB€-F€4FÀéF€ÑFÀÜB€ÌD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ @B€MB€NB€¯D€D€B€3D€B€4B€ÀD€B€¾B€ÀF€D€D€B€ÂB€±D€B€ B€B€DD€D€B€ÆB€±¬„if L1 > L1 as of 30 seconds ago thenì‡conclude tank-is-filling and advance step variable fill-stage ¬…to filling else conclude not tank-is-fillingB€¸F€B€CF€B€-F€FÀNF€iFÀD€D€B€D€B€B€¯B€F€ÂF€FÀNF€iFÀD€D€B€%D€B€&B€úB€-F€%FÀHF€hFÀ;B€D€B€%D€B€&B€úB€-F€4FÀ8F€aFÀ+B€D€B€%D€B€&B€úB€-F€4FÀ(F€¿FÀB€D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€­D€B€K†€ @B€MB€NB€¯D€D€ƒSTEP-VARIABLE-DEFINITIONB€D€B€DB€B€ l‡let step variable fill-stage be filling, draining, unknownB€¸F€€B€-F€FÀpF€4FÀZD€D€B€D€B€B€¯B€F€ÂF€FÀpF€4FÀZD€D€B€%D€B€&B€úB€-F€#FÀjF€,FÀ]B€0D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ @B€MB€NB€¯D€D€C�INITIALLY€D€D€ƒ€SET€B€Ù€D€B€PB€æ€l�initially ì‚set fill-time = 0 and€l‚set drain-time = 0B€¸F€|B€-F€FÀ·F€öFÀ�D€D€B€D€B€B€¯B€F€ÂF€FÀ·F€öFÀ�D€D€B€%D€B€&B€úB€-F€#FÀ±F€|FÀ¤B€WD€B€%D€B€&B€úB€-F€2FÀ¡F€îFÀ”B€XD€B€%D€B€&B€úB€-F€2FÀ‘F€ÓFÀ„B€YD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ @B€MB€NB€¯D€D€B€ÿƒ€L2-4F€úD€B€B€B€ì…simulate L2 setpoint with 250 then L2 setpointB€¸F€xB€-F€ÞF€àF€Ž F€öD€D€B€D€B€B€¯B€F€ÂF€ÞF€àF€Ž F€öD€D€B€%D€B€&B€úB€-F€éF€æF€† F€óB€‡D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ áCB€MB€NB€¯D€D€B€ÿC€P1€D€B€Ç€PB€l„simulate P1 with 0 then (2.5 * F3)B€¸F€\B€-F€JF€‘F€Ž F€§D€D€B€D€B€B€¯B€F€ãF€JF€‘F€Ž F€§D€D€B€%D€B€&B€úB€-F€UF€—F€† F€¤B€ªD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ ý?B€MB€NB€¯D€D€B€3D€B€4B€€B€´lƒif L2 > 0 then do nothing€B€¸F€{B€CF€ B€-FÀŽ FÀTFÀ›FÀ>D€D€B€D€B€B€¯B€F€ÂFÀŽ FÀTFÀ›FÀ>D€D€B€%D€B€&B€úB€-FÀƒ FÀNFÀ£FÀAB€ËD€CƒGUAGE-PRESSURE-THRU-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-F€ F€¥F€+F€ÕB€fD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€êB€-F€�F€¥F€®F€àB€D€C„R-L-1-IN-1-OUT-FEEDBACK-CONTROLLERD€ ƒ‚SETPOINT-LOW-LIMIT?€€ƒ‚SETPOINT-HIGH-LIMIT?F€ôC…SETPOINT-MINIMUM-INTERVAL-BETWEEN-CHANGES?F€ …SETPOINT-MAXIMUM-CHANGE-PER-ADJUSTMENT?€F€dƒDISPLAY-SETPOINT-VALUES€B€-F€~F€F€¦F€EB€´D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€B€êB€-ƒSENSOR-CURRENCY-INTERVALF€F€F€KF€ F€iB€D€Ã�MATERIAL-SINK€B€´F€ÜF€‚F€F€ÜÀTANK-2D€ÃLINEAR-VARIABLE-CONTROL-VALVE€B€´F€RF€¼F€pF€ÞB€´D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ 8B€MB€NB€¯D€D€B€3D€B€4B€�F€ÐD€D€B€D€ìƒThe simulation has completed.€D€B€�OPERATORì‚if CLOCK > 2000 then €,†send "The simulation has completed." to operatorB€¸F€vB€CF€<B€-FÀÐF€ FÀÿF€FD€D€B€D€B€B€¯B€F€ÂFÀÐF€ FÀÿF€FD€D€B€%D€B€&B€úB€-FÀÅF€&FÀ F€3B€(D€B€%D€B€&B€úB€-FÀ¶F€6FÀF€CB€)D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€B€K†€ ¥HB€MB€NB€¯D€D€B€3D€B€B€ÍÂTHERE-IS-INCOMING-FLOWD€D€B€D€l‡Tank level is above safety limit and is still�increasing.€D€B€B€#C�EVERY-TIME¬‡if tank-level-is-dangerously-high and there-is-incoming-flow,‡then send "Tank level is above safety limit and is still¬„increasing." to operator every time€B€¸F€sB€-FÀÒFÀnFÀ¤FÀ8D€D€B€D€B€B€¯B€F€ÂFÀÒFÀnFÀ¤FÀ8D€D€B€%D€B€&B€úB€-FÀÇFÀhFÀ¬FÀ[B€WD€B€%D€B€&B€úB€-FÀ¸FÀXFÀÁFÀKB€XD€B€%D€B€&B€úB€-FÀ¸FÀHFÀ~FÀ;B€YD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€­D€ B€K†€ ¥HB€MB€NB€¯D€D€B€°D€B€NB€²D€C€ORD€B€4B€É€D€B€4B€Î€ì…let condition there-is-incoming-flow = F1 > 0 l�or F2 > 0€B€¸F€uB€ºB€-B€-FÀÑFÀ FÀ!F€D€D€B€D€B€B€¯B€F€ÂFÀÑFÀ FÀ!F€D€D€B€%D€B€&B€úB€-FÀÆFÀFÀ)FÀ B€‹D€B€%D€B€&B€úB€-FÀ·FÀ FÀgF€B€ŒD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ §HB€MB€NB€¯D€D€B€3D€B€4B€ÀƒTANK-LEVEL-SAFETY-LIMIT€D€D€B€D€¬…Tank level: ~6F is over safety limit of ~6F€B€ÀB€°D€B€B€#F€<D€B€ÂB€Íì„if L1 > tank-level-safety-limit then €l†send "Tank level: *** is over safety limit of ***",† with L1, tank-level-safety-limit to operator ì‚ every 1 minute and€,…conclude tank-level-is-dangerously-high€B€¸F€qB€CF€<CƒPICON-RULE-ALERT-INTERVAL€F€B€-FÀÑFÀÝFÀîFÀ‡D€D€B€D€B€B€¯B€F€ÂFÀÑFÀÝFÀîFÀ‡D€D€B€%D€B€&B€úB€-FÀÆFÀ×FÀzFÀÊB€ºD€B€%D€B€&B€úB€-FÀ·FÀÇFÀöFÀºB€»D€B€%D€B€&B€úB€-FÀ·FÀ·FÀFÀªB€¼D€B€%D€B€&B€úB€-FÀ·FÀ§FÀûFÀšB€½D€B€%D€B€&B€úB€-FÀ·FÀ—FÀYFÀŠB€¾D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€­D€ B€K†€ šHB€MB€NB€¯D€D€B€°B€°F€|ìƒtank-level-safety-limit = 380€B€¸F€pB€ºB€-B€-FÀÒFÀFÀ»FÀøD€D€B€D€B€B€¯B€F€ÂFÀÒFÀFÀ»FÀøD€D€B€%D€B€&B€úB€-FÀÇFÀFÀÃFÀûB€ùD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ ™HB€MB€NB€¯D€D€B€3D€B€4B€ÎF€dD€D€B€D€¬… F2 is reading ~6F and should not exceed 100B€ÎD€B€B€#l‚if F2 > 100 then €¬†send " F2 is reading *** and should not exceed 100"€¬‚with F2 to operator€B€¸F€nB€CF€B€-FÀÓFÀcFÀçFÀ-D€D€B€D€B€B€¯B€F€ÚFÀÓFÀcFÀçFÀ-D€D€B€%D€B€&B€úB€-FÀÈFÀ]FÀ0FÀPB€D€B€%D€B€&B€úB€-FÀ¹FÀMFÀïFÀ@B€ D€B€%D€B€&B€úB€-FÀ¹FÀ=FÀFÀ0B€!D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ ™HB€MB€NB€¯D€D€B€3D€B€4B€ÉF€<D€D€B€D€¬… F1 is reading ~6F and should not exceed 60€B€ÉD€B€B€#,‚if F1 > 60 then l†send " F1 is reading *** and should not exceed 60"¬‚with F1 to operator€B€¸F€mB€CF€B€-FÀÔFÀ´FÀñFÀ~D€D€B€D€B€B€¯B€F€ÂFÀÔFÀ´FÀñFÀ~D€D€B€%D€B€&B€úB€-FÀÉFÀ®FÀ:FÀ¡B€TD€B€%D€B€&B€úB€-FÀºFÀžFÀùFÀ‘B€UD€B€%D€B€&B€úB€-FÀºFÀŽFÀFÀ�B€VD€C…NAPH-CHROMATOGRAPH-ANALYTICAL-PORT-SENSOR€D€B€ F€ B€êB€-F€FÀÏF€"FÀ±B€�D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ õB€MB€NB€¯D€D€B€3D€B€4B€�€B€´¬ƒif clock > 0 then do nothingB€¸F€B€CF€ B€-FÀ� FÀyFÀ�FÀcD€D€B€D€B€B€¯B€F€ÂFÀ� FÀyFÀ�FÀcD€D€B€%D€B€&B€úB€-FÀ„ FÀsFÀ‰FÀfB€ŒD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ åCB€MB€NB€¯D€D€B€3D€B€4B€f€B€´lƒif P2 > 0 then do nothing€B€¸F€iB€CF€ B€-FÀ� FÀ¡FÀœFÀ‹D€D€B€D€B€B€¯B€F€ÂFÀ� FÀ¡FÀœFÀ‹D€D€B€%D€B€&B€úB€-FÀ„ FÀ›FÀ¤FÀŽB€®D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€  B€MB€NB€¯D€D€B€3D€B€4B€¥€B€´lƒif P1 > 0 then do nothing€B€¸F€*B€CF€ B€-FÀ� FÀÆFÀœFÀ°D€D€B€D€B€B€¯B€F€ÂFÀ� FÀÆFÀœFÀ°D€D€B€%D€B€&B€úB€-FÀ„ FÀÀFÀ¤FÀ³B€ÐD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€  B€MB€NB€¯D€D€B€3D€B€4B€€B€´lƒif F4 > 0 then do nothing€B€¸F€)B€CF€ B€-FÀ� FÀëFÀœFÀÕD€D€B€D€B€B€¯B€F€ÂFÀ� FÀëFÀœFÀÕD€D€B€%D€B€&B€úB€-FÀ„ FÀåFÀ¤FÀØB€òD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ ÿB€MB€NB€¯D€D€B€3D€B€4B€€B€´lƒif F3 > 0 then do nothing€B€¸F€!B€CF€ B€-FÀ� FÀFÀœFÀûD€D€B€D€B€B€¯B€F€ÂFÀ� FÀFÀœFÀûD€D€B€%D€B€&B€úB€-FÀ„ FÀ FÀ¤FÀþB€D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ ŒCB€MB€NB€¯D€D€B€3D€B€4B€Î€B€´lƒif F2 > 0 then do nothing€B€¸F€B€CF€ B€-FÀ� FÀ4FÀœFÀD€D€B€D€B€B€¯B€F€ÂFÀ� FÀ4FÀœFÀD€D€B€%D€B€&B€úB€-FÀ„ FÀ.FÀ¤FÀ!B€6D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ ‹CB€MB€NB€¯D€D€B€3D€B€4B€É€B€´lƒif F1 > 0 then do nothing€B€¸F€B€CF€ B€-FÀ� FÀYFÀœFÀCD€D€B€D€B€B€¯B€F€ÂFÀ� FÀYFÀœFÀCD€D€B€%D€B€&B€úB€-FÀ„ FÀSFÀ¤FÀFB€XD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€1D€ B€K†€ ‘B€MB€NB€¯D€D€B€3D€B€4B€À€B€´lƒif L1 > 0 then do nothing€B€¸F€B€CF€ B€-FÀ� FÀFÀœFÀiD€D€B€D€B€B€¯B€F€ÂFÀ� FÀFÀœFÀiD€D€B€%D€B€&B€úB€-FÀ„ FÀyFÀ¤FÀlB€zD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ MB€MB€NB€¯D€l…The purpose of these rules is to force the¬…displaying of sensor values on the schematicB€¸F€_B€-FÀ� FÀ³FÀãFÀ�D€D€B€D€B€B€¯B€F€ÂFÀ� FÀ³FÀãFÀ�D€D€B€%D€B€&B€úB€-FÀ… FÀ­FÀ FÀ B€šD€B€%D€B€&B€úB€-FÀv FÀ�FÀëFÀ�B€›D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ ]HB€MB€NB€¯D€D€B€ÿ�F3-WAVE€B€´D€B€‹F€P€F€<€Ç€3S33€ì…simulate local f3-wave with wave with central€ì…value 80 and deviation 0 and period 1 minute €ì�and noise 1.3€B€¸F€kB€-F€ÚF€*F€� F€`D€D€B€D€B€B€¯B€F€ÂF€ÚF€*F€� F€`D€D€B€%D€B€&B€úB€-F€åF€0F€y F€=B€ÈD€B€%D€B€&B€úB€-F€ôF€@F€ˆ F€MB€ÉD€B€%D€B€&B€úB€-F€ôF€PF€hF€]B€ÊD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ \HB€MB€NB€¯D€D€B€ÿB€€D€B€3D€B€ÂB€ÃF€°€D€B€3D€B€ÂB€ÃF€D€B€ÆB€¿D€B€ÇB€Ç€3c33D€B€3D€B€ÂB€ÃF€Ð€€,ƒsimulate F3 with 0 then ¬ƒif time < 1200 then 0 else €ì†if time < 1800 then (min (f3-wave, (F3 + 3.1))) else €¬ƒif time < 2000 then 0 else 0B€¸F€"B€-F€’F€’F€� F€ØD€D€B€D€B€B€¯B€F€ÂF€’F€’F€� F€ØD€D€B€%D€B€&B€úB€-F€�F€˜F€tF€¥B€D€B€%D€B€&B€úB€-F€¬F€¨F€žF€µB€D€B€%D€B€&B€úB€-F€¬F€¸F€ˆ F€ÅB€D€B€%D€B€&B€úB€-F€¬F€ÈF€§F€ÕB€D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ íCB€MB€NB€¯D€ D€B€ÿB€ÎB€´D€B€3D€B€ÂB€ÃF€–D€B€‹F€dF€dF€X€€F€ÂD€B€3D€B€ÂB€ÃF€ÂD€B€‹F€d€F€<€Ç€ÿffff€D€B€3D€B€ÂB€ÃF€XD€B€‹F€dF€dF€X€€F€Â€l‚simulate F2 with €,ƒif time < 150 then wave€,† with central value 100 and deviation 100 and€,… period 600 seconds and phase 450 elseì…if time < 450 then wave with central value 100l‡ and deviation 0 and period 1 minute and noise .4 else €,ƒif time < 600 then wave€,† with central value 100 and deviation 100 and€l… period 600 seconds and phase 450 else 0B€¸F€hB€-F€nFÀ$F€� F€rD€D€B€D€B€B€¯B€F€ÂF€nFÀ$F€� F€rD€ D€B€%D€B€&B€úB€-F€yFÀF€FÀB€XD€B€%D€B€&B€úB€-F€ˆFÀF€VFÀB€YD€B€%D€B€&B€úB€-F€ˆF€F€. F€B€ZD€B€%D€B€&B€úB€-F€ˆF€F€ïF€B€[D€B€%D€B€&B€úB€-F€ˆF€"F€% F€/B€\D€B€%D€B€&B€úB€-F€ˆF€2F€ˆ F€?B€]D€B€%D€B€&B€úB€-F€ˆF€BF€VF€OB€^D€B€%D€B€&B€úB€-F€ˆF€RF€. F€_B€_D€B€%D€B€&B€úB€-F€ˆF€bF€ F€oB€`D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ íCB€MB€NB€¯D€ D€B€ÿB€ÉB€´D€B€3D€B€ÂB€ÃF€–D€B€‹F€<F€<F€X€€F€ÂD€B€3D€B€ÂB€ÃF€ÂD€B€‹F€<€F€<€Ç€ÿÌLÍÌ€D€B€3D€B€ÂB€ÃF€XD€B€‹F€<F€<F€X€€F€Â€l‚simulate F1 with €B€Yì… with central value 60 and deviation 60 and€B€[l†if time < 450 then wave with central value 60 and ì† deviation 0 and period 1 minute and noise .3 else €,ƒif time < 600 then wave€ì… with central value 60 and deviation 60 and€l… period 600 seconds and phase 450 else 0B€¸F€B€-F€’FÀÕF€� FÀ?D€D€B€D€B€B€¯B€F€ÂF€’FÀÕF€� FÀ?D€ D€B€%D€B€&B€úB€-F€�FÀÏF€5FÀÂB€ÎD€B€%D€B€&B€úB€-F€¬FÀ¿F€zFÀ²B€YD€B€%D€B€&B€úB€-F€¬FÀ¯F€@ FÀ¢B€ÏD€B€%D€B€&B€úB€-F€¬FÀŸF€ FÀ’B€[D€B€%D€B€&B€úB€-F€¬FÀ�F€m FÀ‚B€ÐD€B€%D€B€&B€úB€-F€¬FÀF€ˆ FÀrB€ÑD€B€%D€B€&B€úB€-F€¬FÀoF€zFÀbB€ÒD€B€%D€B€&B€úB€-F€¬FÀ_F€@ FÀRB€ÓD€B€%D€B€&B€úB€-F€¬FÀOF€% FÀBB€ÔD€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€ýD€B€K†€ „CB€MB€NB€¯D€ D€B€ÿC€T1F€}D€B€3D€B€ÂB€ÃF€XF€PD€B€3D€B€ÂB€ÃF€„D€B€‹F€PF€ªF€°€€F€,D€B€3D€B€ÂB€ÃF€` F€úD€B€3D€B€ÂB€ÃF€¸ D€B€‹F€}F€}F€` €€F€°F€Flƒsimulate T1 with 125 then ¬ƒif time < 600 then 80 else €,ƒif time < 900 then wave€ì… with central value 80 and deviation 170 andl… period 1200 seconds and phase 300 else ìƒif time < 2400 then 250 else €,ƒif time < 3000 then wave,† with central value 125 and deviation 125 and€ì… period 2400 seconds and phase 1200 else 70€B€¸F€B€-F€ÈFÀ�F€� FÀëD€D€B€D€B€B€¯B€F€ÂF€ÈFÀ�F€� FÀëD€ D€B€%D€B€&B€úB€-F€ÓFÀ{F€¼FÀnB€B D€B€%D€B€&B€úB€-F€âFÀkF€ÔFÀ^B€C D€B€%D€B€&B€úB€-F€âFÀ[F€°FÀNB€D D€B€%D€B€&B€úB€-F€âFÀKF€ FÀ>B€E D€B€%D€B€&B€úB€-F€âFÀ;F€[ FÀ.B€F D€B€%D€B€&B€úB€-F€âFÀ+F€æFÀB€G D€B€%D€B€&B€úB€-F€âFÀF€¹FÀB€H D€B€%D€B€&B€úB€-F€âFÀ F€ˆ FÀþB€I D€B€%D€B€&B€úB€-F€âFÀûF€v FÀîB€J D€B€ñD€B€êB€-FÀaFÀFÀCF€6B€ÎD€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€B€ F€ B€êB€-FÀ�F€†FÀqF€¤B€" D€B€÷D€B€øB€úB€-B€ûD€B€üD€B€ID€B€JD€B€˜D€B€K†€ û>B€MB€NB€¯,ƒChemical Mixing Process€B€¸F€%B€-FÀ&FÀãFÀEFÀÍD€D€B€D€B€B€¯B€F€ÂFÀ&FÀãFÀEFÀÍD€D€B€%D€B€&B€úB€-FÀFÀÝFÀMFÀÐB€¦ D€Ã�HEAT-EXCHANGERB€´FÀkF€ªFÀF€ÈÀCOOLERD€‚MATERIAL-SOURCE€B€´FÀ=F€ FÀF€cÀMIX-2€D€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€´FÀÍF€$FÀ F€LÀPUMP-2D€B€ñD€B€êB€-F€ŸFÀ}F€½FÀBB€D€ƒ‚TWO-INPUT-MIXED-TANKB€´F€*FÀzF€fFÀ ÀTANK-1D€B€€D€B€êB€-B€ F€F€iFÀ–F€‡FÀxB€ÀD€B€éD€B€êB€-F€åFÀ}F€FÀMB€¥D€…EQUAL-PERCENTAGE-VARIABLE-CONTROL-VALVE€B€´FÀ;FÀFÀFÀ]C€V1D€B€ñD€B€êB€-FÀ�FÀ–FÀoFÀ[B€ÉD€B€Ð B€´FÀÕFÀmFÀ¨FÀEÀPUMP-1D€B€É B€´FÀAFÀˆFÀFÀ.ÀMIX-1€D€ D€C�FLOW-PIPE€B€´F€F€ÃTHRU-SENSOR-OUTPUT-CONNECTION€Ã‚VALVE-INPUT-CONNECTIONB€´D€C‚CONTROL-CONNECTIONB€´F€B€´ƒƒSENSOR-CONTROLLER-CONNECTIONB€´FÀD€B€ B€´F€F€B€ ‚SINK-INPUT-PORT€F€D€B€ B€´F€B€´B€ B€´FÀD€B€ B€´F€5F€ƒƒHEAT-TRANSFER-OUTPUT-PORT-2€ƒƒTHRU-SENSOR-INPUT-CONNECTIONB€´D€B€ B€´F€F€ƒVALVE-OUTPUT-CONNECTION€B€! B€´D€B€ B€´F€F€C‚CONTROLLER-OUTPUT€ƒVALVE-CONTROL-CONNECTIONB€´D€B€ B€´B€´F€B€´Ã�SETPOINT-INPUTFÀD€B€ B€´F€F€B€ ‚CONTROLLER-INPUTB€´D€B€ B€´B€´F€B€´C‚PORT-SENSOR-INPUT€D€FÀF€(D€B€ B€´F€;F€5B€ CƒHEAT-TRANSFER-INPUT-PORT-2D€F€!F€DFÀúF€WD€B€ B€´F€#B€´B€ B€´FÀD€B€ B€´F€2F€9B€ ƒMIXED-TANK-INPUT-PORT-2€F€TD€B€ B€´F€2B€´B€ B€´FÀD€B€ B€´F€7F€2ÂPUMP-OUTPUT-CONNECTIONB€! B€´D€B€ B€´F€3B€´B€ B€´FÀD€B€ B€´F€5F€3ƒƒHEAT-TRANSFER-OUTPUT-PORT-1€B€5 B€´D€B€ B€´B€´F€<B€´B€* FÀD€B€ B€´F€:B€´B€ B€´FÀD€B€ B€´B€´F€7B€´CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€ B€´F€6F€7ƒHOLDER-OUTPUT-CONNECTIONÂPUMP-INPUT-CONNECTION€B€´D€B€ B€´F€8F€;B€ B€! B€´D€B€ B€´F€8B€´B€ B€´FÀD€B€ B€´F€9F€8B€e B€! B€´D€B€ B€´B€´F€:B€´B€5 D€FÀ!F€ D€B€ B€´F€;B€´B€ B€´FÀD€B€ B€´F€<F€9B€% ƒMIXED-TANK-INPUT-PORT-1€B€´D€B€ B€´F€=F€<B€ B€ B€´D€B€ B€´F€=B€´B€ B€´FÀD€B€ B€´B€´F€>B€´B€` FÀD€B€ B€´F€>F€=B€P B€! B€´D€B€ B€´F€?F€>B€e B€f B€´B€´1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 7480 :CREATION-DATE 2725549743 :DIRECTORY "PICON-CLASS" :NAME "CASE-STUDY-1" :TYPE "PIC" :VERSION 8) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€t¢¶–F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ Ô71€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ K�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ Ô7B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€mC„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�CASE-STUDY-1ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Case Study 11€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ KB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ KB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ KB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ KB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ KB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ '=B€MB€NƒƒMESSAGE-MUST-PRINT-INTERVAL€F€1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ KB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ KB€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ( FÀ¤F€v F€ØD€)D€C…NAPH-CHROMATOGRAPH-ANALYTICAL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€FÀÑF€!FÀ³Ã€CLOCK€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ mHB€MB€NÃ�STATEMENT-TEXTD€D€�SIMULATEC€P2€D€ƒ€MAX€€D€C€*€C€F4Ç€3e33ì…simulate P2 with 0 then (max ( 0 ,F4 * 12.65))C‚STATEMENT-NUMBER?€F€(B€-F€ÞF€xF€Ž F€ŽD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€ÊCƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂF€ÞF€xF€Ž F€ŽD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÅB€-F€éF€~F€† F€‹B€ÖD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ õB€MB€NB€ÊD€D€C€IFD€C€>€B€À€B€²¬ƒif clock > 0 then do nothingB€ØF€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀ� FÀ{FÀ‚FÀeD€D€B€äD€B€åB€ÊB€æF€ÂFÀ� FÀ{FÀ‚FÀeD€D€B€íD€B€îB€ÅB€-FÀ… FÀuFÀŠFÀhB€D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ùD€ B€K†€ åCB€MB€NB€ÊD€D€B€ûD€B€üB€Ì€B€²lƒif P2 > 0 then do nothing€B€ØF€iB€F€ B€-FÀ� FÀ£FÀ�FÀ�D€D€B€äD€B€åB€ÊB€æF€ÂFÀ� FÀ£FÀ�FÀ�D€D€B€íD€B€îB€ÅB€-FÀ… FÀ�FÀ¥FÀ�B€#D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ùD€ B€K†€  B€MB€NB€ÊD€D€B€ûD€B€üC€P1€B€²lƒif P1 > 0 then do nothing€B€ØF€*B€F€ B€-FÀ� FÀÈFÀ�FÀ²D€D€B€äD€B€åB€ÊB€æF€ÂFÀ� FÀÈFÀ�FÀ²D€D€B€íD€B€îB€ÅB€-FÀ… FÀÂFÀ¥FÀµB€FD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ùD€ B€K†€  B€MB€NB€ÊD€D€B€ûD€B€üB€Ñ€B€²lƒif F4 > 0 then do nothing€B€ØF€)B€F€ B€-FÀ� FÀíFÀ�FÀ×D€D€B€äD€B€åB€ÊB€æF€ÂFÀ� FÀíFÀ�FÀ×D€D€B€íD€B€îB€ÅB€-FÀ… FÀçFÀ¥FÀÚB€hD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ùD€ B€K†€ ÿB€MB€NB€ÊD€D€B€ûD€B€üC€F3€B€²lƒif F3 > 0 then do nothing€B€ØF€!B€F€ B€-FÀ� FÀFÀ�FÀýD€D€B€äD€B€åB€ÊB€æF€ÂFÀ� FÀFÀ�FÀýD€D€B€íD€B€îB€ÅB€-FÀ… FÀ FÀ¥FÀB€‹D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ùD€ B€K†€ ŒCB€MB€NB€ÊD€D€B€ûD€B€üC€F2€B€²lƒif F2 > 0 then do nothing€B€ØF€B€F€ B€-FÀ� FÀ6FÀ�FÀ D€D€B€äD€B€åB€ÊB€æF€ÂFÀ� FÀ6FÀ�FÀ D€D€B€íD€B€îB€ÅB€-FÀ… FÀ0FÀ¥FÀ#B€®D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ùD€ B€K†€ ‹CB€MB€NB€ÊD€D€B€ûD€B€üC€F1€B€²lƒif F1 > 0 then do nothing€B€ØF€B€F€ B€-FÀ� FÀ[FÀ�FÀED€D€B€äD€B€åB€ÊB€æF€ÂFÀ� FÀ[FÀ�FÀED€D€B€íD€B€îB€ÅB€-FÀ… FÀUFÀ¥FÀHB€ÑD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ùD€ B€K†€ ‘B€MB€NB€ÊD€D€B€ûD€B€üC€L1€B€²lƒif L1 > 0 then do nothing€B€ØF€B€F€ B€-FÀ� FÀ�FÀ�FÀkD€D€B€äD€B€åB€ÊB€æF€ÂFÀ� FÀ�FÀ�FÀkD€D€B€íD€B€îB€ÅB€-FÀ… FÀ{FÀ¥FÀnB€ôD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ MB€MB€NB€ÊD€l…The purpose of these rules is to force the¬…displaying of sensor values on the schematicB€ØF€_B€-FÀ‘ FÀµFÀäFÀ�D€D€B€äD€B€åB€ÊB€æF€ÂFÀ‘ FÀµFÀäFÀ�D€D€B€íD€B€îB€ÅB€-FÀ† FÀ¯FÀ FÀ¢B€D€B€íD€B€îB€ÅB€-FÀw FÀŸFÀìFÀ’B€D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ 18B€MB€NB€ÊD€D€B€ËC�TEMP-STARTB€²F€P¬ƒsimulate temp-start with 80€B€ØF€.B€-F€‡F€˜F€Œ F€®D€D€B€äD€B€åB€ÊB€æF€ÂF€‡F€˜F€Œ F€®D€D€B€íD€B€îB€ÅB€-F€’F€žF€„ F€«B€<D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ èCB€MB€NB€ÊD€D€B€Ë‚SIM-TANK-AREA-2€B€²Ç€pl„simulate sim-tank-area-2 with 3.5€B€ØF€jB€-F€QF€oF€Œ F€…D€D€B€äD€B€åB€ÊB€æF€ÂF€QF€oF€Œ F€…D€D€B€íD€B€îB€ÅB€-F€\F€uF€„ F€‚B€]D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ N=B€MB€NB€ÊD€D€B€ËÃ�SIM-TANK-AREA€B€²Ç€£@ ×,„simulate sim-tank-area with 2.02B€ØF€WB€-F€ZF€FF€Œ F€\D€D€B€äD€B€åB€ÊB€æF€ÂF€ZF€FF€Œ F€\D€D€B€íD€B€îB€ÅB€-F€eF€LF€„ F€YB€~D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ p8B€MB€NB€ÊD€D€B€ËB€À€ƒ€TIME,„simulate clock with 0 then time€B€ØF€B€-F€cF€F€Œ F€5D€D€B€äD€B€åB€ÊB€æF€ÂF€cF€F€Œ F€5D€D€B€íD€B€îB€ÅB€-F€nF€%F€„ F€2B€ŸD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ 98B€MB€NB€ÊD€D€B€ËC�TEMP-WAVE€B€²D€C�PICON-WAVEF€ÐF€ÐF€€p€€F€`T,†simulate local temp-wave with wave with central€l†value 2000 and deviation 2000 and period 8 hours €,‚and phase 21600€B€ØF€-B€-F€²F€ÓF€Œ F€ D€D€B€äD€B€åB€ÊB€æF€ÂF€²F€ÓF€Œ F€ D€D€B€íD€B€îB€ÅB€-F€½F€ÙF€c F€æB€ÇD€B€íD€B€îB€ÅB€-F€ÌF€éF€„ F€öB€ÈD€B€íD€B€îB€ÅB€-F€ÌF€ùF€RF€B€ÉD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ áCB€MB€NB€ÊD€D€B€ËB€B€D€B€ÐÇ€PB€‡l„simulate P1 with 0 then (2.5 * F3)B€ØF€\B€-F€KF€ªF€� F€ÀD€D€B€äD€B€åB€ÊB€æF€ãF€KF€ªF€� F€ÀD€D€B€íD€B€îB€ÅB€-F€VF€°F€‡ F€½B€÷D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ ]HB€MB€NB€ÊD€D€B€Ë�F3-WAVE€B€²D€B€¾F€P€F€<€Ç€3S33€ì…simulate local f3-wave with wave with central€ì…value 80 and deviation 0 and period 1 minute €ì�and noise 1.3€B€ØF€kB€-F€ÙF€(F€� F€^D€D€B€äD€B€åB€ÊB€æF€ÂF€ÙF€(F€� F€^D€D€B€íD€B€îB€ÅB€-F€äF€.F€x F€;B€D€B€íD€B€îB€ÅB€-F€óF€>F€‡ F€KB€D€B€íD€B€îB€ÅB€-F€óF€NF€gF€[B€ D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ mHB€MB€NB€ÊD€D€B€ËB€Ñ€D€B€Î€D€C€-€B€‡Ç€ûV“ì…simulate F4 with 0 then (max ( 0, f3 - .021))€B€ØF€'B€-F€èF€õF€� F€ D€D€B€äD€B€åB€ÊB€æF€ÂF€èF€õF€� F€ D€D€B€íD€B€îB€ÅB€-F€óF€ûF€‡ F€B€QD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ \HB€MB€NB€ÊD€D€B€ËB€‡€D€B€ûD€C€<€B€�F€°€D€B€ûD€B€pB€�F€D€ƒ€MIN€B€D€C€+€B€‡Ç€3c33D€B€ûD€B€pB€�F€Ð€€,ƒsimulate F3 with 0 then ¬ƒif time < 1200 then 0 else €ì†if time < 1800 then (min (f3-wave, (F3 + 3.1))) else €¬ƒif time < 2000 then 0 else 0B€ØF€"B€-F€‘F€�F€� F€ÖD€D€B€äD€B€åB€ÊB€æF€ÂF€‘F€�F€� F€ÖD€D€B€íD€B€îB€ÅB€-F€œF€–F€sF€£B€ƒD€B€íD€B€îB€ÅB€-F€«F€¦F€�F€³B€„D€B€íD€B€îB€ÅB€-F€«F€¶F€‡ F€ÃB€…D€B€íD€B€îB€ÅB€-F€«F€ÆF€¦F€ÓB€†D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ íCB€MB€NB€ÊD€ D€B€ËB€ªB€²D€B€ûD€B€pB€�F€–D€B€¾F€dF€dF€X€€F€ÂD€B€ûD€B€pB€�F€ÂD€B€¾F€d€F€<€Ç€ÿffff€D€B€ûD€B€pB€�F€XD€B€¾F€dF€dF€X€€F€Â€l‚simulate F2 with €,ƒif time < 150 then wave€,† with central value 100 and deviation 100 and€,… period 600 seconds and phase 450 elseì…if time < 450 then wave with central value 100l‡ and deviation 0 and period 1 minute and noise .4 else €,ƒif time < 600 then wave€,† with central value 100 and deviation 100 and€l… period 600 seconds and phase 450 else 0B€ØF€hB€-F€mFÀ&F€� F€pD€D€B€äD€B€åB€ÊB€æF€ÂF€mFÀ&F€� F€pD€ D€B€íD€B€îB€ÅB€-F€xFÀ F€FÀB€ÖD€B€íD€B€îB€ÅB€-F€‡FÀF€UFÀB€×D€B€íD€B€îB€ÅB€-F€‡€F€- F€ B€ØD€B€íD€B€îB€ÅB€-F€‡F€F€îF€B€ÙD€B€íD€B€îB€ÅB€-F€‡F€ F€$ F€-B€ÚD€B€íD€B€îB€ÅB€-F€‡F€0F€‡ F€=B€ÛD€B€íD€B€îB€ÅB€-F€‡F€@F€UF€MB€ÜD€B€íD€B€îB€ÅB€-F€‡F€PF€- F€]B€ÝD€B€íD€B€îB€ÅB€-F€‡F€`F€ F€mB€ÞD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ íCB€MB€NB€ÊD€ D€B€ËB€ÍB€²D€B€ûD€B€pB€�F€–D€B€¾F€<F€<F€X€€F€ÂD€B€ûD€B€pB€�F€ÂD€B€¾F€<€F€<€Ç€ÿÌLÍÌ€D€B€ûD€B€pB€�F€XD€B€¾F€<F€<F€X€€F€Â€l‚simulate F1 with €B€×ì… with central value 60 and deviation 60 and€B€Ùl†if time < 450 then wave with central value 60 and ì† deviation 0 and period 1 minute and noise .3 else €,ƒif time < 600 then wave€ì… with central value 60 and deviation 60 and€l… period 600 seconds and phase 450 else 0B€ØF€B€-F€‘FÀ×F€� FÀAD€D€B€äD€B€åB€ÊB€æF€ÂF€‘FÀ×F€� FÀAD€ D€B€íD€B€îB€ÅB€-F€œFÀÑF€4FÀÄB€LD€B€íD€B€îB€ÅB€-F€«FÀÁF€yFÀ´B€×D€B€íD€B€îB€ÅB€-F€«FÀ±F€? FÀ¤B€MD€B€íD€B€îB€ÅB€-F€«FÀ¡F€ FÀ”B€ÙD€B€íD€B€îB€ÅB€-F€«FÀ‘F€l FÀ„B€ND€B€íD€B€îB€ÅB€-F€«FÀ�F€‡ FÀtB€OD€B€íD€B€îB€ÅB€-F€«FÀqF€yFÀdB€PD€B€íD€B€îB€ÅB€-F€«FÀaF€? FÀTB€QD€B€íD€B€îB€ÅB€-F€«FÀQF€$ FÀDB€RD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ „CB€MB€NB€ÊD€ D€B€ËC€T1F€}D€B€ûD€B€pB€�F€XF€PD€B€ûD€B€pB€�F€„D€B€¾F€PF€ªF€°€€F€,D€B€ûD€B€pB€�F€` F€úD€B€ûD€B€pB€�F€¸ D€B€¾F€}F€}F€` €€F€°F€Flƒsimulate T1 with 125 then ¬ƒif time < 600 then 80 else €,ƒif time < 900 then wave€ì… with central value 80 and deviation 170 andl… period 1200 seconds and phase 300 else ìƒif time < 2400 then 250 else €,ƒif time < 3000 then wave,† with central value 125 and deviation 125 and€ì… period 2400 seconds and phase 1200 else 70€B€ØF€B€-F€ÇFÀƒF€� FÀíD€D€B€äD€B€åB€ÊB€æF€ÂF€ÇFÀƒF€� FÀíD€ D€B€íD€B€îB€ÅB€-F€ÒFÀ}F€»FÀpB€ÀD€B€íD€B€îB€ÅB€-F€áFÀmF€ÓFÀ`B€ÁD€B€íD€B€îB€ÅB€-F€áFÀ]F€¯FÀPB€ÂD€B€íD€B€îB€ÅB€-F€áFÀMF€~ FÀ@B€ÃD€B€íD€B€îB€ÅB€-F€áFÀ=F€Z FÀ0B€ÄD€B€íD€B€îB€ÅB€-F€áFÀ-F€åFÀ B€ÅD€B€íD€B€îB€ÅB€-F€áFÀF€¸FÀB€ÆD€B€íD€B€îB€ÅB€-F€áFÀ F€‡ FÀB€ÇD€B€íD€B€îB€ÅB€-F€áFÀýF€u FÀðB€ÈD€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€ÈD€B€K†€ ªHB€MB€NB€ÊD€ D€B€ËB€ð€D€B€ûD€B€pB€�F€XD€B€vD€B€wB€ðD€B€ÐÇ€û=D²FD€C€/€B€ÍB€{D€B€ÐÇ€û=D²FD€B€B€ªB€ZF€�D€B€ûD€B€pB€�F€°F€�D€B€ûD€B€pB€�F€D€B€¾F€�F€�F€°F€€F€€,ƒsimulate L1 with 0 then l‚if time < 600 thenì… min ((L1 + (.01666 * (F1 / sim-tank-area))€¬‡ + (.01666 * (F2 / sim-tank-area-2))), 400) else€ìƒif time < 1200 then 397 else €,ƒif time < 1800 then wave,† with central value 400 and deviation 400 and€l‡ period 1200 seconds and phase 1800 and shape ramp-down ì€else 0B€ØF€B€-F€[FÀ)F€� FÀ“D€D€B€äD€B€åB€ÊB€æF€ÂF€[FÀ)F€� FÀ“D€ D€B€íD€B€îB€ÅB€-F€fFÀ#F€=FÀB€4D€B€íD€B€îB€ÅB€-F€uFÀF€FÀB€5D€B€íD€B€îB€ÅB€-F€uFÀF€ FÀöB€6D€B€íD€B€îB€ÅB€-F€uFÀóF€‡ FÀæB€7D€B€íD€B€îB€ÅB€-F€uFÀãF€yFÀÖB€8D€B€íD€B€îB€ÅB€-F€uFÀÓF€LFÀÆB€9D€B€íD€B€îB€ÅB€-F€uFÀÃF€ FÀ¶B€:D€B€íD€B€îB€ÅB€-F€uFÀ³F€~ FÀ¦B€;D€B€íD€B€îB€ÅB€-F€uFÀ£F€ªFÀ–B€<D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€ºB€-FÀbFÀFÀDF€4B€ªD€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€B€¸F€ B€ºB€-FÀ�F€„FÀrF€¢B€ D€B€ÂD€B€ÃB€ÅB€-B€ÆD€B€ÇD€B€ID€B€JD€B€D€B€K†€ û>B€MB€NB€Ê,ƒChemical Mixing Process€B€ØF€%B€-FÀ'FÀåFÀFFÀÏD€D€B€äD€B€åB€ÊB€æF€ÂFÀ'FÀåFÀFFÀÏD€D€B€íD€B€îB€ÅB€-FÀFÀßFÀNFÀÒB€™D€Ã�MATERIAL-SINK€B€²F€ùF€lF€5F€ÆÃ€TANK-2D€CƒGUAGE-PRESSURE-THRU-SENSORD€B€ºB€-F€ŠF€¨F€¨F€ØB€ÌD€Ã�HEAT-EXCHANGERB€²FÀlF€¨FÀF€ÆÃ€COOLERD€B€‰D€B€ºB€-F€>F€¨F€\F€ãB€ÑD€‚MATERIAL-SOURCE€B€²FÀ>F€FÀF€aÀMIX-2€D€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€²FÀÎF€"FÀ¡F€JÀPUMP-2D€B€‰D€B€ºB€-F€žFÀF€¼FÀDB€‡D€ƒ‚TWO-INPUT-MIXED-TANKB€²F€)FÀ|F€eFÀ"ÀTANK-1D€B€·D€B€ºB€-B€¸F€F€hFÀ˜F€†FÀzB€ðD€B€¼D€B€ºB€-F€äFÀF€FÀOB€BD€…EQUAL-PERCENTAGE-VARIABLE-CONTROL-VALVE€B€²FÀ<FÀ�FÀFÀ_C€V1D€B€‰D€B€ºB€-FÀŽFÀ˜FÀpFÀ]B€ÍD€B€×B€²FÀÖFÀoFÀ©FÀGÀPUMP-1D€B€ÐB€²FÀBFÀŠFÀFÀ0ÀMIX-1€D€D€C‚CONTROL-CONNECTIONB€²€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀD€C�FLOW-PIPE€B€²F€F€"ÃTHRU-SENSOR-OUTPUT-CONNECTION€ƒMIXED-TANK-INPUT-PORT-2€F€TD€B€B€²F€B€²B€B€²FÀD€B€B€²F€ F€ÂPUMP-OUTPUT-CONNECTIONƒƒTHRU-SENSOR-INPUT-CONNECTIONB€²D€B€B€²F€B€²B€B€²FÀD€B€B€²F€F€ƒƒHEAT-TRANSFER-OUTPUT-PORT-1€C‚PORT-SENSOR-INPUT€B€²D€B€B€²B€²F€%B€²ƒVALVE-CONTROL-CONNECTIONFÀD€B€B€²F€#B€²B€B€²FÀD€B€B€²B€²F€ B€²CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€B€²F€F€B€‚SINK-INPUT-PORT€F€2D€B€B€²F€B€²B€B€²FÀD€B€B€²B€²F€B€²CƒHEAT-TRANSFER-INPUT-PORT-1F€D€B€B€²F€F€ƒƒHEAT-TRANSFER-OUTPUT-PORT-2€B€$B€²D€B€B€²F€$F€B€CƒHEAT-TRANSFER-INPUT-PORT-2D€F€F€vFÀÅF€@D€B€B€²F€F€B€B€$B€²D€B€B€²F€B€²B€B€²FÀD€B€B€²F€F€ ƒHOLDER-OUTPUT-CONNECTIONÂPUMP-INPUT-CONNECTION€B€²D€B€B€²F€!F€$B€B€$B€²D€B€B€²F€!B€²B€B€²FÀD€B€B€²F€"F€!B€ZB€$B€²D€B€B€²B€²F€#B€²B€,D€FÀ!F€ D€B€B€²F€$B€²B€B€²FÀD€B€B€²F€%F€"ƒVALVE-OUTPUT-CONNECTION€ƒMIXED-TANK-INPUT-PORT-1€B€²D€B€B€²F€&F€%B€ÂVALVE-INPUT-CONNECTIONB€²D€B€B€²F€&B€²B€B€²FÀD€B€B€²B€²F€'B€²B€6FÀD€B€B€²F€'F€&B€#B€$B€²D€B€B€²F€(F€'B€ZB€[B€²B€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "dwr" :CHARACTERS NIL :QFASLP NIL :LENGTH 10240 :CREATION-DATE 2725681613 :DIRECTORY "PICON-CLASS" :NAME "CASE-STUDY-2" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€dwr€ì€Ralph€†€v¢Ð™F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ j@1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ K�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ j@B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€�C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€‚CASE-2-SOLUTION€ƒ�CASE-STUDY-2ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Case Study 21€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€oD€B€K†€ KB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€wD€B€K†€ KB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€D€B€K†€ KB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€‡D€B€K†€ KB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ KB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€—D€B€K†€ '=B€MB€NƒƒMESSAGE-MUST-PRINT-INTERVAL€F€1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€¡D€B€K†€ KB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€©D€B€K†€ KB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ ¤HB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ÃTANK-LEVEL-IS-DANGEROUSLY-HIGHC�CONDITION€ƒ€NIL€,‡let tank-level-is-dangerously-high be a named condition€C‚STATEMENT-NUMBER?€F€tƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€¸FÀ… FÀ F€… F€ D€7D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€dì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ 2@B€MB€NB€³D€D€�SIMULATEC€F4€D€C€/€D€C€*€C€F3D€C‚COMPOUND-VARIABLE€C€L2�SETPOINTD€ƒ€MAX€F€B€Ùì†simulate F4 with 0 then F3 * L2 setpoint / max (1, L2)B€¼F€'B€-F€–F€ðF€Ž F€D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€³CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂF€–F€ðF€Ž F€D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÍB€-F€¡F€öF€† F€B€âD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ '@B€MB€NB€³D€D€B€ÒC€P2€D€B€ÖB€×D€B€ÕB€ÙD€B€ØB€ÙB€Ú,†simulate P2 with 0 then F3 * (L2 / L2 setpoint)€B€¼F€(B€-F€×F€lF€� F€‚D€D€B€ïD€B€ðB€³B€ñF€ÂF€×F€lF€� F€‚D€D€B€øD€B€ùB€ÍB€-F€âF€rF€ˆ F€B€ D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ 98B€MB€NB€³D€D€B€ÒC�TEMP-WAVE€B€¸D€C�PICON-WAVEF€ÐF€ÐF€€p€€F€`T,†simulate local temp-wave with wave with central€l†value 2000 and deviation 2000 and period 8 hours €,‚and phase 21600€B€¼F€-B€-F€¶FÀÆF€� FÀ�D€D€B€ïD€B€ðB€³B€ñF€ÂF€¶FÀÆF€� FÀ�D€D€B€øD€B€ùB€ÍB€-F€ÁFÀÀF€g FÀ³B€3D€B€øD€B€ùB€ÍB€-F€ÐFÀ°F€ˆ FÀ£B€4D€B€øD€B€ùB€ÍB€-F€ÐFÀ F€VFÀ“B€5D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ ©HB€MB€NB€³D€ D€B€ÒC€L1€D€C€IFD€C€<€ƒ€TIMEF€XD€ƒ€MIN€D€C€+€B€_D€B€ÖÇ€û=D²FD€B€ÕC€F1Ã�SIM-TANK-AREA€D€B€ÖÇ€û=D²FD€B€ÕC€F2‚SIM-TANK-AREA-2€F€�D€B€aD€B€bB€cF€°F€�D€B€aD€B€bB€cF€D€B€*F€�F€�F€°F€€F€€,ƒsimulate L1 with 0 then l‚if time < 600 thenì… min ((L1 + (.01666 * (F1 / sim-tank-area))€¬‡ + (.01666 * (F2 / sim-tank-area-2))), 400) else€ìƒif time < 1200 then 397 else €,ƒif time < 1800 then wave,† with central value 400 and deviation 400 and€l‡ period 1200 seconds and phase 1800 and shape ramp-down ì€else 0B€¼F€B€-F€\FÀ<F€� FÀ¦D€D€B€ïD€B€ðB€³B€ñF€ÂF€\FÀ<F€� FÀ¦D€ D€B€øD€B€ùB€ÍB€-F€gFÀ6F€>FÀ)B€†D€B€øD€B€ùB€ÍB€-F€vFÀ&F€FÀB€‡D€B€øD€B€ùB€ÍB€-F€vFÀF€ FÀ B€ˆD€B€øD€B€ùB€ÍB€-F€vFÀF€ˆ FÀùB€‰D€B€øD€B€ùB€ÍB€-F€vFÀöF€zFÀéB€ŠD€B€øD€B€ùB€ÍB€-F€vFÀæF€MFÀÙB€‹D€B€øD€B€ùB€ÍB€-F€vFÀÖF€ FÀÉB€ŒD€B€øD€B€ùB€ÍB€-F€vFÀÆF€ FÀ¹B€�D€B€øD€B€ùB€ÍB€-F€vFÀ¶F€«FÀ©B€ŽD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ 18B€MB€NB€³D€D€B€ÒC�TEMP-STARTB€¸F€P¬ƒsimulate temp-start with 80€B€¼F€.B€-F€…F€°F€Š F€ÆD€D€B€ïD€B€ðB€³B€ñF€ÂF€…F€°F€Š F€ÆD€D€B€øD€B€ùB€ÍB€-F€�F€¶F€‚ F€ÃB€ßD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ èCB€MB€NB€³D€D€B€ÒB€oB€¸Ç€pl„simulate sim-tank-area-2 with 3.5€B€¼F€jB€-F€QF€†F€Œ F€œD€D€B€ïD€B€ðB€³B€ñF€ÂF€QF€†F€Œ F€œD€D€B€øD€B€ùB€ÍB€-F€\F€ŒF€„ F€™B€ÿD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ N=B€MB€NB€³D€D€B€ÒB€jB€¸Ç€£@ ×,„simulate sim-tank-area with 2.02B€¼F€WB€-F€ZF€`F€Œ F€vD€D€B€ïD€B€ðB€³B€ñF€ÂF€ZF€`F€Œ F€vD€D€B€øD€B€ùB€ÍB€-F€eF€fF€„ F€sB€D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ p8B€MB€NB€³D€D€B€ÒÀCLOCK€€B€c,„simulate clock with 0 then time€B€¼F€B€-F€cF€6F€Œ F€LD€D€B€ïD€B€ðB€³B€ñF€ÂF€cF€6F€Œ F€LD€D€B€øD€B€ùB€ÍB€-F€nF€<F€„ F€IB€@D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ !@B€MB€NB€³D€D€B€Òƒ�TANK-2-AREA€B€¸‡Àƒ¸ìƒsimulate tank-2-area with 1.12B€¼F€zB€-F€mF€ F€� F€"D€D€B€ïD€B€ðB€³B€ñF€ÂF€mF€ F€� F€"D€D€B€øD€B€ùB€ÍB€-F€xF€F€… F€B€aD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ "@B€MB€NB€³D€D€B€ÒB€Ù€D€B€gD€B€ÕD€B€ÕB€ÓB€^F€B€Ù,‡simulate L2 with 0 then ( F4 / tank-2-area) / 3600 + L2€B€¼F€wB€-F€ŒF€·F€� F€ÍD€D€B€ïD€B€ðB€³B€ñF€ÂF€ŒF€·F€� F€ÍD€D€B€øD€B€ùB€ÍB€-F€—F€½F€… F€ÊB€…D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ @B€MB€NB€³D€D€B€Òƒ€L2-4F€úD€B€ØB€ÙB€Úì…simulate L2 setpoint with 250 then L2 setpointB€¼F€xB€-F€ÞF€àF€Ž F€öD€D€B€ïD€B€ðB€³B€ñF€ÂF€ÞF€àF€Ž F€öD€D€B€øD€B€ùB€ÍB€-F€éF€æF€† F€óB€§D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ áCB€MB€NB€³D€D€B€ÒC€P1€D€B€ÖÇ€PB€×l„simulate P1 with 0 then (2.5 * F3)B€¼F€\B€-F€JF€‘F€Ž F€§D€D€B€ïD€B€ðB€³B€ñF€ãF€JF€‘F€Ž F€§D€D€B€øD€B€ùB€ÍB€-F€UF€—F€† F€¤B€ÊD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ ý?B€MB€NB€³D€D€B€aD€C€>€B€Ù€B€¸lƒif L2 > 0 then do nothing€B€¼F€{ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀŽ FÀTFÀ›FÀ>D€D€B€ïD€B€ðB€³B€ñF€ÂFÀŽ FÀTFÀ›FÀ>D€D€B€øD€B€ùB€ÍB€-FÀƒ FÀNFÀ£FÀAB€íD€CƒGUAGE-PRESSURE-THRU-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-F€ F€¥F€+F€ÕB€D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€ B€-F€�F€¥F€®F€àB€ÓD€C„R-L-1-IN-1-OUT-FEEDBACK-CONTROLLERD€ ƒ‚SETPOINT-LOW-LIMIT?€€ƒ‚SETPOINT-HIGH-LIMIT?F€ôC…SETPOINT-MINIMUM-INTERVAL-BETWEEN-CHANGES?F€ …SETPOINT-MAXIMUM-CHANGE-PER-ADJUSTMENT?€F€dƒDISPLAY-SETPOINT-VALUES€B€-F€~F€F€¦F€EB€¸D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€B€ B€-ƒSENSOR-CURRENCY-INTERVALF€F€F€KF€ F€iB€ÙD€Ã�MATERIAL-SINK€B€¸F€ÜF€‚F€F€ÜÀTANK-2D€ÃLINEAR-VARIABLE-CONTROL-VALVE€B€¸F€RF€¼F€pF€ÞB€¸D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€ 8B€MB€NB€³D€D€B€aD€B€éB€=F€ÐD€D€ƒ€SENDD€ìƒThe simulation has completed.€D€ƒ�DESTINATION€�OPERATORì‚if CLOCK > 2000 then €,†send "The simulation has completed." to operatorB€¼F€vB€ðF€<B€-FÀÐF€ FÀÿF€FD€D€B€ïD€B€ðB€³B€ñF€ÂFÀÐF€ FÀÿF€FD€D€B€øD€B€ùB€ÍB€-FÀÅF€&FÀ F€3B€MD€B€øD€B€ùB€ÍB€-FÀ¶F€6FÀF€CB€ND€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€B€K†€ ¥HB€MB€NB€³D€D€B€aD€ƒ€AND€B€µÃ‚THERE-IS-INCOMING-FLOWD€D€B€DD€l‡Tank level is above safety limit and is still�increasing.€D€B€GB€HC�EVERY-TIME¬‡if tank-level-is-dangerously-high and there-is-incoming-flow,‡then send "Tank level is above safety limit and is still¬„increasing." to operator every time€B€¼F€sB€-FÀÒFÀnFÀ¤FÀ8D€D€B€ïD€B€ðB€³B€ñF€ÂFÀÒFÀnFÀ¤FÀ8D€D€B€øD€B€ùB€ÍB€-FÀÇFÀhFÀ¬FÀ[B€}D€B€øD€B€ùB€ÍB€-FÀ¸FÀXFÀÁFÀKB€~D€B€øD€B€ùB€ÍB€-FÀ¸FÀHFÀ~FÀ;B€D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€±D€ B€K†€ ¥HB€MB€NB€³D€D€B€´D€B€tB€¶D€C€ORD€B€éB€i€D€B€éB€n€ì…let condition there-is-incoming-flow = F1 > 0 l�or F2 > 0€B€¼F€uB€¾B€-B€-FÀÑFÀ FÀ!F€D€D€B€ïD€B€ðB€³B€ñF€ÂFÀÑFÀ FÀ!F€D€D€B€øD€B€ùB€ÍB€-FÀÆFÀFÀ)FÀ B€±D€B€øD€B€ùB€ÍB€-FÀ·FÀ FÀgF€B€²D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€ §HB€MB€NB€³D€D€B€aD€B€éB€_ƒTANK-LEVEL-SAFETY-LIMIT€D€D€B€DD€¬…Tank level: ~6F is over safety limit of ~6F€B€_B€ÖD€B€GB€HF€<D€�CONCLUDEB€µì„if L1 > tank-level-safety-limit then €l†send "Tank level: *** is over safety limit of ***",† with L1, tank-level-safety-limit to operator ì‚ every 1 minute and€,…conclude tank-level-is-dangerously-high€B€¼F€qB€ðF€<CƒPICON-RULE-ALERT-INTERVAL€F€B€-FÀÑFÀÝFÀîFÀ‡D€D€B€ïD€B€ðB€³B€ñF€ÂFÀÑFÀÝFÀîFÀ‡D€D€B€øD€B€ùB€ÍB€-FÀÆFÀ×FÀzFÀÊB€áD€B€øD€B€ùB€ÍB€-FÀ·FÀÇFÀöFÀºB€âD€B€øD€B€ùB€ÍB€-FÀ·FÀ·FÀFÀªB€ãD€B€øD€B€ùB€ÍB€-FÀ·FÀ§FÀûFÀšB€äD€B€øD€B€ùB€ÍB€-FÀ·FÀ—FÀYFÀŠB€åD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€±D€ B€K†€ šHB€MB€NB€³D€D€B€´B€ÖF€|ìƒtank-level-safety-limit = 380€B€¼F€pB€¾B€-B€-FÀÒFÀFÀ»FÀøD€D€B€ïD€B€ðB€³B€ñF€ÂFÀÒFÀFÀ»FÀøD€D€B€øD€B€ùB€ÍB€-FÀÇFÀFÀÃFÀûB€ D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€ ™HB€MB€NB€³D€D€B€aD€B€éB€nF€dD€D€B€DD€¬… F2 is reading ~6F and should not exceed 100B€nD€B€GB€Hl‚if F2 > 100 then €¬†send " F2 is reading *** and should not exceed 100"€¬‚with F2 to operator€B€¼F€nB€ðF€B€-FÀÓFÀcFÀçFÀ-D€D€B€ïD€B€ðB€³B€ñF€ÚFÀÓFÀcFÀçFÀ-D€D€B€øD€B€ùB€ÍB€-FÀÈFÀ]FÀ0FÀPB€FD€B€øD€B€ùB€ÍB€-FÀ¹FÀMFÀïFÀ@B€GD€B€øD€B€ùB€ÍB€-FÀ¹FÀ=FÀFÀ0B€HD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€ ™HB€MB€NB€³D€D€B€aD€B€éB€iF€<D€D€B€DD€¬… F1 is reading ~6F and should not exceed 60€B€iD€B€GB€H,‚if F1 > 60 then l†send " F1 is reading *** and should not exceed 60"¬‚with F1 to operator€B€¼F€mB€ðF€B€-FÀÔFÀ´FÀñFÀ~D€D€B€ïD€B€ðB€³B€ñF€ÂFÀÔFÀ´FÀñFÀ~D€D€B€øD€B€ùB€ÍB€-FÀÉFÀ®FÀ:FÀ¡B€{D€B€øD€B€ùB€ÍB€-FÀºFÀžFÀùFÀ‘B€|D€B€øD€B€ùB€ÍB€-FÀºFÀŽFÀFÀ�B€}D€C…NAPH-CHROMATOGRAPH-ANALYTICAL-PORT-SENSOR€D€B€,F€ B€ B€-F€FÀÏF€"FÀ±B€=D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€ õB€MB€NB€³D€D€B€aD€B€éB€=€B€¸¬ƒif clock > 0 then do nothingB€¼F€B€ðF€ B€-FÀ� FÀyFÀ�FÀcD€D€B€ïD€B€ðB€³B€ñF€ÂFÀ� FÀyFÀ�FÀcD€D€B€øD€B€ùB€ÍB€-FÀ„ FÀsFÀ‰FÀfB€³D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€ åCB€MB€NB€³D€D€B€aD€B€éB€€B€¸lƒif P2 > 0 then do nothing€B€¼F€iB€ðF€ B€-FÀ� FÀ¡FÀœFÀ‹D€D€B€ïD€B€ðB€³B€ñF€ÂFÀ� FÀ¡FÀœFÀ‹D€D€B€øD€B€ùB€ÍB€-FÀ„ FÀ›FÀ¤FÀŽB€ÕD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€  B€MB€NB€³D€D€B€aD€B€éB€Å€B€¸lƒif P1 > 0 then do nothing€B€¼F€*B€ðF€ B€-FÀ� FÀÆFÀœFÀ°D€D€B€ïD€B€ðB€³B€ñF€ÂFÀ� FÀÆFÀœFÀ°D€D€B€øD€B€ùB€ÍB€-FÀ„ FÀÀFÀ¤FÀ³B€÷D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€  B€MB€NB€³D€D€B€aD€B€éB€Ó€B€¸lƒif F4 > 0 then do nothing€B€¼F€)B€ðF€ B€-FÀ� FÀëFÀœFÀÕD€D€B€ïD€B€ðB€³B€ñF€ÂFÀ� FÀëFÀœFÀÕD€D€B€øD€B€ùB€ÍB€-FÀ„ FÀåFÀ¤FÀØB€D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€ ÿB€MB€NB€³D€D€B€aD€B€éB€×€B€¸lƒif F3 > 0 then do nothing€B€¼F€!B€ðF€ B€-FÀ� FÀFÀœFÀûD€D€B€ïD€B€ðB€³B€ñF€ÂFÀ� FÀFÀœFÀûD€D€B€øD€B€ùB€ÍB€-FÀ„ FÀ FÀ¤FÀþB€;D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€ ŒCB€MB€NB€³D€D€B€aD€B€éB€n€B€¸lƒif F2 > 0 then do nothing€B€¼F€B€ðF€ B€-FÀ� FÀ4FÀœFÀD€D€B€ïD€B€ðB€³B€ñF€ÂFÀ� FÀ4FÀœFÀD€D€B€øD€B€ùB€ÍB€-FÀ„ FÀ.FÀ¤FÀ!B€]D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€ ‹CB€MB€NB€³D€D€B€aD€B€éB€i€B€¸lƒif F1 > 0 then do nothing€B€¼F€B€ðF€ B€-FÀ� FÀYFÀœFÀCD€D€B€ïD€B€ðB€³B€ñF€ÂFÀ� FÀYFÀœFÀCD€D€B€øD€B€ùB€ÍB€-FÀ„ FÀSFÀ¤FÀFB€D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€çD€ B€K†€ ‘B€MB€NB€³D€D€B€aD€B€éB€_€B€¸lƒif L1 > 0 then do nothing€B€¼F€B€ðF€ B€-FÀ� FÀFÀœFÀiD€D€B€ïD€B€ðB€³B€ñF€ÂFÀ� FÀFÀœFÀiD€D€B€øD€B€ùB€ÍB€-FÀ„ FÀyFÀ¤FÀlB€¡D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ MB€MB€NB€³D€l…The purpose of these rules is to force the¬…displaying of sensor values on the schematicB€¼F€_B€-FÀ� FÀ³FÀãFÀ�D€D€B€ïD€B€ðB€³B€ñF€ÂFÀ� FÀ³FÀãFÀ�D€D€B€øD€B€ùB€ÍB€-FÀ… FÀ­FÀ FÀ B€ÁD€B€øD€B€ùB€ÍB€-FÀv FÀ�FÀëFÀ�B€ÂD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ ]HB€MB€NB€³D€D€B€Ò�F3-WAVE€B€¸D€B€*F€P€F€<€Ç€3S33€ì…simulate local f3-wave with wave with central€ì…value 80 and deviation 0 and period 1 minute €ì�and noise 1.3€B€¼F€kB€-F€ÚF€*F€� F€`D€D€B€ïD€B€ðB€³B€ñF€ÂF€ÚF€*F€� F€`D€D€B€øD€B€ùB€ÍB€-F€åF€0F€y F€=B€ïD€B€øD€B€ùB€ÍB€-F€ôF€@F€ˆ F€MB€ðD€B€øD€B€ùB€ÍB€-F€ôF€PF€hF€]B€ñD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ \HB€MB€NB€³D€D€B€ÒB€×€D€B€aD€B€bB€cF€°€D€B€aD€B€bB€cF€D€B€fB€æD€B€gB€×Ç€3c33D€B€aD€B€bB€cF€Ð€€,ƒsimulate F3 with 0 then ¬ƒif time < 1200 then 0 else €ì†if time < 1800 then (min (f3-wave, (F3 + 3.1))) else €¬ƒif time < 2000 then 0 else 0B€¼F€"B€-F€’F€’F€� F€ØD€D€B€ïD€B€ðB€³B€ñF€ÂF€’F€’F€� F€ØD€D€B€øD€B€ùB€ÍB€-F€�F€˜F€tF€¥B€,D€B€øD€B€ùB€ÍB€-F€¬F€¨F€žF€µB€-D€B€øD€B€ùB€ÍB€-F€¬F€¸F€ˆ F€ÅB€.D€B€øD€B€ùB€ÍB€-F€¬F€ÈF€§F€ÕB€/D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ íCB€MB€NB€³D€ D€B€ÒB€nB€¸D€B€aD€B€bB€cF€–D€B€*F€dF€dF€X€€F€ÂD€B€aD€B€bB€cF€ÂD€B€*F€d€F€<€Ç€ÿffff€D€B€aD€B€bB€cF€XD€B€*F€dF€dF€X€€F€Â€l‚simulate F2 with €,ƒif time < 150 then wave€,† with central value 100 and deviation 100 and€,… period 600 seconds and phase 450 elseì…if time < 450 then wave with central value 100l‡ and deviation 0 and period 1 minute and noise .4 else €,ƒif time < 600 then wave€,† with central value 100 and deviation 100 and€l… period 600 seconds and phase 450 else 0B€¼F€hB€-F€nFÀ$F€� F€rD€D€B€ïD€B€ðB€³B€ñF€ÂF€nFÀ$F€� F€rD€ D€B€øD€B€ùB€ÍB€-F€yFÀF€FÀB€D€B€øD€B€ùB€ÍB€-F€ˆFÀF€VFÀB€€D€B€øD€B€ùB€ÍB€-F€ˆF€F€. F€B€�D€B€øD€B€ùB€ÍB€-F€ˆF€F€ïF€B€‚D€B€øD€B€ùB€ÍB€-F€ˆF€"F€% F€/B€ƒD€B€øD€B€ùB€ÍB€-F€ˆF€2F€ˆ F€?B€„D€B€øD€B€ùB€ÍB€-F€ˆF€BF€VF€OB€…D€B€øD€B€ùB€ÍB€-F€ˆF€RF€. F€_B€†D€B€øD€B€ùB€ÍB€-F€ˆF€bF€ F€oB€‡D€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ íCB€MB€NB€³D€ D€B€ÒB€iB€¸D€B€aD€B€bB€cF€–D€B€*F€<F€<F€X€€F€ÂD€B€aD€B€bB€cF€ÂD€B€*F€<€F€<€Ç€ÿÌLÍÌ€D€B€aD€B€bB€cF€XD€B€*F€<F€<F€X€€F€Â€l‚simulate F1 with €B€€ì… with central value 60 and deviation 60 and€B€‚l†if time < 450 then wave with central value 60 and ì† deviation 0 and period 1 minute and noise .3 else €,ƒif time < 600 then wave€ì… with central value 60 and deviation 60 and€l… period 600 seconds and phase 450 else 0B€¼F€B€-F€’FÀÕF€� FÀ?D€D€B€ïD€B€ðB€³B€ñF€ÂF€’FÀÕF€� FÀ?D€ D€B€øD€B€ùB€ÍB€-F€�FÀÏF€5FÀÂB€õD€B€øD€B€ùB€ÍB€-F€¬FÀ¿F€zFÀ²B€€D€B€øD€B€ùB€ÍB€-F€¬FÀ¯F€@ FÀ¢B€öD€B€øD€B€ùB€ÍB€-F€¬FÀŸF€ FÀ’B€‚D€B€øD€B€ùB€ÍB€-F€¬FÀ�F€m FÀ‚B€÷D€B€øD€B€ùB€ÍB€-F€¬FÀF€ˆ FÀrB€øD€B€øD€B€ùB€ÍB€-F€¬FÀoF€zFÀbB€ùD€B€øD€B€ùB€ÍB€-F€¬FÀ_F€@ FÀRB€úD€B€øD€B€ùB€ÍB€-F€¬FÀOF€% FÀBB€ûD€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€ÐD€B€K†€ „CB€MB€NB€³D€ D€B€ÒC€T1F€}D€B€aD€B€bB€cF€XF€PD€B€aD€B€bB€cF€„D€B€*F€PF€ªF€°€€F€,D€B€aD€B€bB€cF€` F€úD€B€aD€B€bB€cF€¸ D€B€*F€}F€}F€` €€F€°F€Flƒsimulate T1 with 125 then ¬ƒif time < 600 then 80 else €,ƒif time < 900 then wave€ì… with central value 80 and deviation 170 andl… period 1200 seconds and phase 300 else ìƒif time < 2400 then 250 else €,ƒif time < 3000 then wave,† with central value 125 and deviation 125 and€ì… period 2400 seconds and phase 1200 else 70€B€¼F€B€-F€ÈFÀ�F€� FÀëD€D€B€ïD€B€ðB€³B€ñF€ÂF€ÈFÀ�F€� FÀëD€ D€B€øD€B€ùB€ÍB€-F€ÓFÀ{F€¼FÀnB€iD€B€øD€B€ùB€ÍB€-F€âFÀkF€ÔFÀ^B€jD€B€øD€B€ùB€ÍB€-F€âFÀ[F€°FÀNB€kD€B€øD€B€ùB€ÍB€-F€âFÀKF€ FÀ>B€lD€B€øD€B€ùB€ÍB€-F€âFÀ;F€[ FÀ.B€mD€B€øD€B€ùB€ÍB€-F€âFÀ+F€æFÀB€nD€B€øD€B€ùB€ÍB€-F€âFÀF€¹FÀB€oD€B€øD€B€ùB€ÍB€-F€âFÀ F€ˆ FÀþB€pD€B€øD€B€ùB€ÍB€-F€âFÀûF€v FÀîB€qD€B€D€B€ B€-FÀaFÀFÀCF€6B€nD€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€B€,F€ B€ B€-FÀ�F€†FÀqF€¤B€ID€B€ÊD€B€ËB€ÍB€-B€ÎD€B€ÏD€B€ID€B€JD€B€¿D€B€K†€ û>B€MB€NB€³,ƒChemical Mixing Process€B€¼F€%B€-FÀ&FÀãFÀEFÀÍD€D€B€ïD€B€ðB€³B€ñF€ÂFÀ&FÀãFÀEFÀÍD€D€B€øD€B€ùB€ÍB€-FÀFÀÝFÀMFÀÐB€ÍD€Ã�HEAT-EXCHANGERB€¸FÀkF€ªFÀF€ÈÀCOOLERD€‚MATERIAL-SOURCE€B€¸FÀ=F€ FÀF€cÀMIX-2€D€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€¸FÀÍF€$FÀ F€LÀPUMP-2D€B€D€B€ B€-F€ŸFÀ}F€½FÀBB€×D€ƒ‚TWO-INPUT-MIXED-TANKB€¸F€*FÀzF€fFÀ ÀTANK-1D€B€§D€B€ B€-B€,F€F€iFÀ–F€‡FÀxB€_D€B€ D€B€ B€-F€åFÀ}F€FÀMB€ÅD€…EQUAL-PERCENTAGE-VARIABLE-CONTROL-VALVE€B€¸FÀ;FÀFÀFÀ]C€V1D€B€D€B€ B€-FÀ�FÀ–FÀoFÀ[B€iD€B€÷B€¸FÀÕFÀmFÀ¨FÀEÀPUMP-1D€B€ðB€¸FÀAFÀˆFÀFÀ.ÀMIX-1€D€ D€C�FLOW-PIPE€B€¸F€ F€ÃTHRU-SENSOR-OUTPUT-CONNECTION€Ã‚VALVE-INPUT-CONNECTIONB€¸D€C‚CONTROL-CONNECTIONB€¸F€ B€¸ƒƒSENSOR-CONTROLLER-CONNECTIONB€¸FÀD€B€2B€¸F€F€B€5‚SINK-INPUT-PORT€F€D€B€8B€¸F€B€¸B€:B€¸FÀD€B€2B€¸F€,F€ ƒƒHEAT-TRANSFER-OUTPUT-PORT-2€ƒƒTHRU-SENSOR-INPUT-CONNECTIONB€¸D€B€2B€¸F€F€ƒVALVE-OUTPUT-CONNECTION€B€HB€¸D€B€8B€¸F€F€C‚CONTROLLER-OUTPUT€ƒVALVE-CONTROL-CONNECTIONB€¸D€B€8B€¸B€¸F€B€¸Ã�SETPOINT-INPUTFÀD€B€8B€¸F€F€B€:‚CONTROLLER-INPUTB€¸D€B€2B€¸B€¸F€B€¸C‚PORT-SENSOR-INPUT€D€FÀF€(D€B€2B€¸F€2F€,B€5CƒHEAT-TRANSFER-INPUT-PORT-2D€F€!F€DFÀúF€WD€B€8B€¸F€B€¸B€:B€¸FÀD€B€2B€¸F€)F€0B€5ƒMIXED-TANK-INPUT-PORT-2€F€TD€B€8B€¸F€)B€¸B€:B€¸FÀD€B€2B€¸F€.F€)ÂPUMP-OUTPUT-CONNECTIONB€HB€¸D€B€8B€¸F€*B€¸B€:B€¸FÀD€B€2B€¸F€,F€*ƒƒHEAT-TRANSFER-OUTPUT-PORT-1€B€\B€¸D€B€8B€¸B€¸F€3B€¸B€QFÀD€B€8B€¸F€1B€¸B€:B€¸FÀD€B€8B€¸B€¸F€.B€¸CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€2B€¸F€-F€.ƒHOLDER-OUTPUT-CONNECTIONÂPUMP-INPUT-CONNECTION€B€¸D€B€2B€¸F€/F€2B€5B€HB€¸D€B€8B€¸F€/B€¸B€:B€¸FÀD€B€2B€¸F€0F€/B€ŒB€HB€¸D€B€2B€¸B€¸F€1B€¸B€\D€FÀ!F€ D€B€8B€¸F€2B€¸B€:B€¸FÀD€B€2B€¸F€3F€0B€LƒMIXED-TANK-INPUT-PORT-1€B€¸D€B€2B€¸F€4F€3B€5B€6B€¸D€B€8B€¸F€4B€¸B€:B€¸FÀD€B€8B€¸B€¸F€5B€¸B€‡FÀD€B€2B€¸F€5F€4B€wB€HB€¸D€B€2B€¸F€6F€5B€ŒB€�B€¸B€¸1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 3173 :CREATION-DATE 2720133837 :DIRECTORY "PICON-CLASS" :NAME "CLASS-DEMO" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€rmw€ì€Alice€†€%¢j�F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ Àà1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ •à�AUTHORS€ƒ€RMW€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ¦àB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€43VXMSB€-‚NAME-OF-PROGRAM?ì€PICON€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€kD€B€K†€ •àB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€sD€B€K†€ •àB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€{D€B€K†€ •àB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ƒD€B€K†€ •àB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€‹D€B€K†€ •àB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€“D€B€K†€ •àB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€›D€B€K†€ •àB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€£D€B€K†€ •àB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ ¥àB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€CƒTANK-IS-CLOSE-TO-OVERFLOW€C�CONDITION€ƒ€NIL€l†let tank-is-close-to-overflow be a named conditionC‚STATEMENT-NUMBER?€F€ ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€B€ID€B€JD€B€«D€ B€K†€ ¢àB€MB€NB€­D€D€B€®D€C‚TANK-LEVEL-RISING€B€°B€²l…let tank-level-rising be a named conditionB€¶F€B€¸B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€²FÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€`ì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ ¾àB€MB€NB€­D€D€C€IFD€ƒ€AND€B€¿D€C€>€C�TANK-LEVELD€C€-€‚TANK-LEVEL-LIMITF€dD€D€ƒ€SENDD€ìƒTank is close to overflowing!!D€ƒ�DESTINATION€�OPERATORD€�CONCLUDEB€¯ì„if TANK-LEVEL-RISING and TANK-LEVEL >€¬„(TANK-LEVEL-LIMIT - 100) then send €¬…"Tank is close to overflowing!!" to operatorì„and conclude TANK-IS-CLOSE-TO-OVERFLOWB€¶F€ B€-FÀ&FÀ3FÀyF€D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€­CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ&FÀ3FÀyF€D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÓB€-FÀFÀ-FÀÏFÀ B€íD€B€D€B€B€ÓB€-FÀ FÀFÀÒFÀB€îD€B€D€B€B€ÓB€-FÀ FÀ FÀ�€B€ïD€B€D€B€B€ÓB€-FÀ F€FÀ·F€B€ðD€B€ÐD€B€ÑB€ÓB€-B€ÔD€B€ÕD€B€ID€B€JD€B€ÖD€B€K†€ ºàB€MB€NB€­D€D€B€ØB€¯D€D€B€âD€l‡ Turn input valve counter clockwise to reduce�input flow!€D€B€åB€æ,…if TANK-IS-CLOSE-TO-OVERFLOW then send €ì…" Turn input valve counter clockwise to reduce,ƒinput flow!" to operatorB€¶F€ B€-FÀ'F€!FÀhF€WD€D€B€ýD€B€þB€­B€ÿF€ÂFÀ'F€!FÀhF€WD€D€B€D€B€B€ÓB€-FÀF€'FÀ¾F€4B€+D€B€D€B€B€ÓB€-FÀ F€7FÀpF€DB€,D€B€D€B€B€ÓB€-FÀ F€GFÀ6F€TB€-D€B€ÐD€B€ÑB€ÓB€-B€ÔD€B€ÕD€B€ID€B€JD€B€ÖD€ B€K†€ ¨àB€MB€NB€­D€D€B€ØD€B€ÚD€B€Ü�FLOW-IN€�FLOW-OUTF€D€D€B€éB€¿D€B€âD€l‚Tank level rising!D€B€åB€æ,…if FLOW-IN - FLOW-OUT > 20 then conclude,†TANK-LEVEL-RISING and send "Tank level rising!"€¬�to operator€B€¶F€ƒPICON-RULE-SCAN-INTERVALF€<B€-FÀ&FÀqFÀ^FÀ;D€D€B€ýD€B€þB€­B€ÿF€ÂFÀ&FÀqFÀ^FÀ;D€D€B€D€B€B€ÓB€-FÀFÀkFÀ´FÀ^B€cD€B€D€B€B€ÓB€-FÀ FÀ[FÀfFÀNB€dD€B€D€B€B€ÓB€-FÀ FÀKFÀªFÀ>B€eD€B€ÐD€B€ÑB€ÓB€-B€ÔD€B€ÕD€B€ID€B€JD€B€«D€ B€K†€ ­àB€MB€NB€­D€D€B€®B€ÝF€îì‚TANK-LEVEL-LIMIT = 750B€¶F€B€¸B€-B€-FÀ&FÀ˜FÀNFÀ‚D€D€B€ýD€B€þB€­B€ÿF€ÂFÀ&FÀ˜FÀNFÀ‚D€D€B€D€B€B€ÓB€-FÀFÀ’FÀVFÀ…B€“D€B€ÐD€B€ÑB€ÓB€-B€ÔD€B€ÕD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ žàB€MB€NB€­D€D€�SIMULATEC�TANK-AREA€B€²F€dl„simulate local TANK-AREA with 100€B€¶F€B€-F€FÀF€>FÀD€D€B€ýD€B€þB€­B€ÿF€ÂF€FÀF€>FÀD€D€B€D€B€B€ÓB€-F€FÀF€6FÀ B€¶D€B€ÐD€B€ÑB€ÓB€-B€ÔD€B€ÕD€B€ID€B€JD€B€°D€B€K†€ �àB€MB€NB€­D€D€B€²B€ÛF€ôD€C€+€D€C€/€D€C€*€D€B€ÜB€WB€XB€³F€B€Û¬…simulate TANK-LEVEL with 500 then (FLOW-IN -l…FLOW-OUT) * TANK-AREA / 3600 + TANK-LEVEL€B€¶F€B€-F€FÀKF€ FÀ%D€D€B€ýD€B€þB€­B€ÿF€ÂF€FÀKF€ FÀ%D€D€B€D€B€B€ÓB€-F€ FÀEF€˜FÀ8B€ÞD€B€D€B€B€ÓB€-F€FÀ5F€ŒFÀ(B€ßD€B€ÐD€B€ÑB€ÓB€-B€ÔD€B€ÕD€B€ID€B€JD€B€°D€B€K†€ œàB€MB€NB€­D€D€B€²B€XF€dD€C�PICON-WAVEF€dF€(F€Xl†simulate FLOW-OUT with 100 then wave with central€l†value 100 and deviation 40 and period 600 seconds€B€¶F€B€-F€FÀxF€ÜFÀRD€D€B€ýD€B€þB€­B€ÿF€ÂF€FÀxF€ÜFÀRD€D€B€D€B€B€ÓB€-F€ FÀrF€ÅFÀeB€ D€B€D€B€B€ÓB€-F€FÀbF€ÔFÀUB€ D€B€ÐD€B€ÑB€ÓB€-B€ÔD€B€ÕD€B€ID€B€JD€B€°D€B€K†€ ›àB€MB€NB€­D€D€B€²B€WF€dD€B€F€dF€PF€X,†simulate FLOW-IN with 100 then wave with centrall†value 100 and deviation 80 and period 600 seconds€B€¶F€B€-F€FÀ¨F€ÜFÀ‚D€D€B€ýD€B€þB€­B€ÿF€ÂF€FÀ¨F€ÜFÀ‚D€D€B€D€B€B€ÓB€-F€ FÀ¢F€¼FÀ•B€5D€B€D€B€B€ÓB€-F€FÀ’F€ÔFÀ…B€6D€ƒSONIC-LEVEL-PORT-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€¦FÀkF€ÄFÀMB€ÛD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€ZB€-F€ˆF€EF€¦F€€B€XD€B€aD€B€ZB€-FÀÉFÀ‘FÀ«FÀVB€WD€ƒ�ACCUMULATOR€B€²FÀQFÀ1F€EF€B€nD€D€C‚CONTROL-CONNECTIONB€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀD€B€uB€²F€ F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€D€C�FLOW-PIPE€B€²F€ B€²ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€²F€D€B€uB€²F€ B€²B€wB€²FÀD€B€€B€²B€²F€ B€²ƒƒTHRU-SENSOR-INPUT-CONNECTIONFÀD€B€€B€²F€ F€ B€‚ÂACCUMULATOR-MAIN-INPUTB€²D€B€uB€²F€ B€²B€wB€²FÀD€B€€B€²F€ F€ ƒACCUMULATOR-MAIN-OUTPUT€B€‰B€²B€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 1681 :CREATION-DATE 2725680885 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "CLASS-ICONS" :TYPE "LISP" :VERSION 2) ;;; -*- Mode:LISP; Package:PICON; Fonts:(HL12B); Base:10 -*-��;;; These are some examples of how to create icons.��(def-frame-type (piping process-equipment)� (pipe-op-input-connection (:input :left 50) flow-pipe)� (pipe-op-output-connection-1 (:output :right 10) flow-pipe)� (pipe-op-output-connection-2 (:output :right 90) flow-pipe)� (image-description� '#.(make-image-description�‰ (size 100 100)�‰ (position-for-name nil 80)�‰ (circular-arc (10 40) (0 50) (10 60))�‰ (circular-arc (10 40) (20 50) (10 60))�‰ (fill (10 50))�‰ (line (10 40) (60 40))�‰ (line (10 60) (60 60))�‰ (circular-arc (60 40) (70 50) (60 60))�‰ (line (60 40) (80 10))�‰ (line (60 60) (80 90))�‰ (line (70 50) (90 20))�‰ (line (70 50) (90 80))�‰ (circular-arc (90 0) (100 10) (90 20))�‰ (circular-arc (90 0) (80 10) (90 20))�‰ (fill (90 10))�‰ (circular-arc (90 80) (100 90) (90 100))�‰ (circular-arc (90 80) (80 90) (90 100))�‰ (fill (90 90)))))��(def-frame-type (test process-equipment :abstract))��‰‰‰‰‰‰�(def-frame-type (run-one test)� (start-op-input-connection (:input :left 10) flow-pipe)� (start-op-output-connection (:output :right 10) flow-pipe)� (image-description� '#.(make-image-description�‰ (size 20 20)�‰ (position-for-name nil 30)�‰ (polyline (0 0) (20 0) (20 20) (0 20) (0 0))�‰ (fill (10 10)))))�‰‰‰‰‰‰�(def-frame-type (run-two test)� (stop-op-input-connection (:input :left 10) flow-pipe)� (stop-op-output-connection (:output :right 10) flow-pipe)� (image-description� '#.(make-image-description�‰ (size 30 30)�‰ (position-for-name nil 35)�‰ (polyline (0 0) (30 0) (30 30) (0 30) (0 0))�‰ (circle (5 15) (15 5) (25 15))�‰ (fill (5 5)))))LMFL(:BYTE-SIZE 16 :AUTHOR "dwr" :CHARACTERS NIL :QFASLP NIL :LENGTH 3003 :CREATION-DATE 2727435810 :DIRECTORY "PICON-CLASS" :NAME "CLASS-KB" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€¬€dwr€ì€Ralph€†€‘¢+^F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ Ÿ²1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ iS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ o²B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?,�Class KB1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€kD€B€K†€ iSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€sD€B€K†€ iSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€{D€B€K†€ iSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ƒD€B€K†€ iSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€‹D€B€K†€ iSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€“D€B€K†€ iSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€›D€B€K†€ iSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€£D€B€K†€ iSB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ ¯­B€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒTANK-WILL-OVERFLOW-SOON€C�CONDITION€ƒ€NIL€,†let tank-will-overflow-soon be a named conditionC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€B€ID€B€JD€B€«D€ B€K†€ ¯­B€MB€NB€­D€D€B€®D€ƒ‚TANK-LEVEL-IS-RISINGB€°B€²ì…let tank-level-is-rising be a named condition€B€¶F€B€¸B€-1€D€B€ID€B€JD€B€«D€ B€K†€ lSB€MB€NB€­D€D€B€®D€ƒ�TANK-BOILINGB€°B€²ì„let tank-boiling be a named condition€B€¶F€B€¸B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€²FÀ¤FÀÛF€¤F€&D€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€`ì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€B€«D€ B€K†€ ‹®B€MB€NB€­D€D€B€®‚TANK-LEVEL-LIMITF€Iì‚TANK-LEVEL-LIMIT = 585B€¶F€B€¸B€-B€-FÀàF€lFÀF€‚D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€­CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀàF€lFÀF€‚D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ßB€-FÀÕF€rFÀF€B€æD€B€ÜD€B€ÝB€ßB€-B€àD€B€áD€B€ID€B€JD€B€«D€ B€K†€ °­B€MB€NB€­D€D€B€®C�FLOW-DELTAD€C€-€C€F1C€F2¬‚flow-delta = F1 - F2B€¶F€ B€¸B€-B€-FÀàF€AFÀF€WD€D€B€óD€B€ôB€­B€õF€ÂFÀàF€AFÀF€WD€D€B€üD€B€ýB€ßB€-FÀÕF€GFÀ"F€TB€D€B€ÜD€B€ÝB€ßB€-B€àD€B€áD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ ‹®B€MB€NB€­D€D€�SIMULATEC�TANK-AREA€B€²F€dl„simulate local TANK-AREA with 100€B€¶F€B€-FÀàF€«F€[F€ÁD€D€B€óD€B€ôB€­B€õF€ÂFÀàF€«F€[F€ÁD€D€B€üD€B€ýB€ßB€-FÀÕF€±F€SF€¾B€2D€B€ÜD€B€ÝB€ßB€-B€àD€B€áD€B€ID€B€JD€B€,D€B€K†€ …®B€MB€NB€­D€D€B€.B€ B€²D€C�PICON-WAVEF€dF€(F€,l„simulate F2 with wave with central,†value 100 and deviation 40 and period 5 minutes€B€¶F€ B€-FÀàF€{F€èF€¡D€D€B€óD€B€ôB€­B€õF€ÂFÀàF€{F€èF€¡D€D€B€üD€B€ýB€ßB€-FÀÕF€�F€\F€ŽB€VD€B€üD€B€ýB€ßB€-FÀÆF€‘F€àF€žB€WD€B€ÜD€B€ÝB€ßB€-B€àD€B€áD€B€ID€B€JD€B€,D€B€K†€ ~®B€MB€NB€­D€D€B€.B€ B€²D€B€PF€dF€PF€,l„simulate F1 with wave with central,†value 100 and deviation 80 and period 5 minutes€B€¶F€ B€-FÀàF€HF€èF€nD€D€B€óD€B€ôB€­B€õF€ÂFÀàF€HF€èF€nD€D€B€üD€B€ýB€ßB€-FÀÕF€NF€\F€[B€€D€B€üD€B€ýB€ßB€-FÀÆF€^F€àF€kB€�D€B€ÜD€B€ÝB€ßB€-B€àD€B€áD€B€ID€B€JD€B€,D€B€K†€ ‡®B€MB€NB€­D€D€B€.C€L1F€ôD€C€+€D€C€/€D€C€*€D€B€ B€ B€ B€/F€B€¥¬†simulate L1 with 500 then (F1 - F2 ) * TANK-AREA / €l�3600 + L1€B€¶F€ B€-FÀàF€F€ýF€;D€D€B€óD€B€ôB€­B€õF€ÂFÀàF€F€ýF€;D€D€B€üD€B€ýB€ßB€-FÀÕF€F€õF€(B€°D€B€üD€B€ýB€ßB€-FÀÆF€+FÀvF€8B€±D€B€ÜD€B€ÝB€ßB€-B€àD€B€áD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ Ÿ²B€MB€NB€­D€D€C€IFD€ƒ€AND€D€C€>€B€ €D€B€ØB€¥B€ãD€D€�CONCLUDEB€¿D€ƒ€SENDD€,ƒTank level is too high!€D€ƒ�DESTINATION€�OPERATORl†if flow-delta > 0 and L1 > tank-level-limit then €l„conclude tank-level-is-rising and l…send "Tank level is too high!" to operatorB€¶F€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀàFÀ F€ëF€*D€D€B€óD€B€ôB€­B€õF€ÂFÀàFÀ F€ëF€*D€D€B€üD€B€ýB€ßB€-FÀÕFÀF€ãF€B€èD€B€üD€B€ýB€ßB€-FÀÆF€ F€kF€B€éD€B€üD€B€ýB€ßB€-FÀÆF€F€³F€'B€êD€C�SURGE-TANKB€²F€ÞFÀ�F€FÀ=ÀSURGE€D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-CURRENCY-INTERVALF€F€–FÀÅF€´FÀ§B€¥D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€B€-F€–FÀmF€´FÀ2B€ D€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€²FÀÝFÀ´FÀ°FÀŒƒ€PUMPD€B€&D€B€B€-FÀsFÀÝFÀUFÀ¢B€ D€ƒ�ACCUMULATOR€B€²FÀBFÀ‘F€TFÀ_ƒ€TANKD€ D€C�FLOW-PIPE€B€²F€B€²Ã‚SURGE-TANK-MAIN-OUTPUTB€²F€D€C‚CONTROL-CONNECTIONB€²F€B€²ƒSURGE-TANK-METER-OUTPUT€B€²F€D€B€GB€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀD€B€BB€²F€ F€ÃTHRU-SENSOR-OUTPUT-CONNECTION€Ã‚SURGE-TANK-MAIN-INPUT€B€²D€B€GB€²F€ B€²B€MB€²FÀD€B€GB€²B€²F€ B€²CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€BB€²B€²F€ B€²Ã‚PUMP-INPUT-CONNECTION€FÀD€B€BB€²F€ F€ ÂPUMP-OUTPUT-CONNECTIONƒƒTHRU-SENSOR-INPUT-CONNECTIONB€²D€B€BB€²F€ F€ B€RÂACCUMULATOR-MAIN-INPUTB€²D€B€GB€²F€ B€²B€MB€²FÀD€B€BB€²F€ F€ ƒACCUMULATOR-MAIN-OUTPUT€B€cB€²D€B€GB€²F€ F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€B€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 8 :AUTHOR "DWR" :QFASLP NIL :LENGTH 477 :CREATION-DATE 2730898175 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "CLASS-MATERIAL-DISCLAIMER" :TYPE "TEXT" :VERSION 1) -*- Mode:Text; Fonts:(CPTFONTB HL12 HL12B METSI TR10I TR10BI TR12BI) -*-��This directory is provided as a courtesy to our customers who have�attended the 4PICON* course. Possession of these files respresents 6no*�obligation on the part of LMI to support, redistribute, or notify our�users in the event of its change. This file contains no software but�example course exercises in order to provide the capability to use �the course material on the customer site.��‰‰‰‰LMI���LMFL(:BYTE-SIZE 16 :AUTHOR "dwr" :CHARACTERS NIL :QFASLP NIL :LENGTH 2405 :CREATION-DATE 2727374244 :DIRECTORY "PICON-CLASS" :NAME "CLASS-MODEL" :TYPE "PIC" :VERSION 4) hưs2€D€p€,€l�FASD-DATA€D€¬€dwr€ì€Ralph€†€�¢¤mF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ �®1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ iS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ $®B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Class Model€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€kD€B€K†€ iSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€sD€B€K†€ iSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€{D€B€K†€ iSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ƒD€B€K†€ iSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€‹D€B€K†€ iSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€“D€B€K†€ iSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€›D€B€K†€ iSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€£D€B€K†€ iSB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ ¯­B€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒTANK-WILL-OVERFLOW-SOON€C�CONDITION€ƒ€NIL€,†let tank-will-overflow-soon be a named conditionC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€B€ID€B€JD€B€«D€ B€K†€ ¯­B€MB€NB€­D€D€B€®D€ƒ‚TANK-LEVEL-IS-RISINGB€°B€²ì…let tank-level-is-rising be a named condition€B€¶F€B€¸B€-1€D€B€ID€B€JD€B€«D€ B€K†€ lSB€MB€NB€­D€D€B€®D€ƒ�TANK-BOILINGB€°B€²ì„let tank-boiling be a named condition€B€¶F€B€¸B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€²FÀ¤FÀÛF€¤F€&D€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€`ì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ ±­B€MB€NB€­D€D€�SIMULATEC�TANK-AREA€B€²F€dl„simulate local TANK-AREA with 100€B€¶F€B€-FÀF€™F€-F€¯D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€­CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀF€™F€-F€¯D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ßB€-FÀF€ŸF€%F€¬B€èD€B€ÜD€B€ÝB€ßB€-B€àD€B€áD€B€ID€B€JD€B€âD€B€K†€ ®­B€MB€NB€­D€D€B€äC€F1F€dD€C�PICON-WAVEF€dF€PF€,¬…simulate F1 with 100 then wave with central€,†value 100 and deviation 80 and period 5 minutes€B€¶F€ B€-FÀ F€(F€»F€ND€D€B€õD€B€öB€­B€÷F€ÂFÀ F€(F€»F€ND€D€B€þD€B€ÿB€ßB€-FÀF€.F€€F€;B€D€B€þD€B€ÿB€ßB€-FÀóF€>F€³F€KB€D€B€ÜD€B€ÝB€ßB€-B€àD€B€áD€B€ID€B€JD€B€âD€B€K†€ ®­B€MB€NB€­D€D€B€äC€F2F€dD€B€ F€dF€(F€,¬…simulate F2 with 100 then wave with central€,†value 100 and deviation 40 and period 5 minutes€B€¶F€ B€-FÀF€dF€ºF€ŠD€D€B€õD€B€öB€­B€÷F€ÂFÀF€dF€ºF€ŠD€D€B€þD€B€ÿB€ßB€-FÀF€jF€F€wB€?D€B€þD€B€ÿB€ßB€-FÀôF€zF€²F€‡B€@D€B€ÜD€B€ÝB€ßB€-B€àD€B€áD€B€ID€B€JD€B€âD€B€K†€ ¹­B€MB€NB€­D€D€B€äC€L1F€ôD€C€+€D€C€/€D€C€*€D€C€-€B€ B€8B€åF€B€d¬‡simulate L1 with 500 then (F1 - F2 ) * TANK-AREA / 3600 + L1B€¶F€ B€-FÀ €F€!F€D€D€B€õD€B€öB€­B€÷F€ÂFÀ €F€!F€D€D€B€þD€B€ÿB€ßB€-FÀF€F€F€B€pD€C�SURGE-TANKB€²F€ÞFÀ�F€FÀ=ÀSURGE€D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-CURRENCY-INTERVALF€F€–FÀÅF€´FÀ§B€dD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€•B€-F€–FÀmF€´FÀ2B€8D€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€²FÀÝFÀ´FÀ°FÀŒƒ€PUMPD€B€žD€B€•B€-FÀsFÀÝFÀUFÀ¢B€ D€ƒ�ACCUMULATOR€B€²FÀBFÀ‘F€TFÀ_ƒ€TANKD€ D€C�FLOW-PIPE€B€²F€B€²Ã‚SURGE-TANK-MAIN-OUTPUTB€²F€D€C‚CONTROL-CONNECTIONB€²F€B€²ƒSURGE-TANK-METER-OUTPUT€B€²F€D€B€¿B€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀD€B€ºB€²F€F€ÃTHRU-SENSOR-OUTPUT-CONNECTION€Ã‚SURGE-TANK-MAIN-INPUT€B€²D€B€¿B€²F€B€²B€ÅB€²FÀD€B€¿B€²B€²F€B€²CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€ºB€²B€²F€B€²Ã‚PUMP-INPUT-CONNECTION€FÀD€B€ºB€²F€F€ÂPUMP-OUTPUT-CONNECTIONƒƒTHRU-SENSOR-INPUT-CONNECTIONB€²D€B€ºB€²F€F€ B€ÊÂACCUMULATOR-MAIN-INPUTB€²D€B€¿B€²F€B€²B€ÅB€²FÀD€B€ºB€²F€ F€ƒACCUMULATOR-MAIN-OUTPUT€B€ÛB€²D€B€¿B€²F€ F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€B€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "dwr" :CHARACTERS NIL :QFASLP NIL :LENGTH 1422 :CREATION-DATE 2727359667 :DIRECTORY "PICON-CLASS" :NAME "CLASS-SCHEMATIC" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€dwr€ì€Ralph€†€�¢º4F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ª­1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ iS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ª­B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?,‚Class Schematic€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€kD€B€K†€ iSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€sD€B€K†€ iSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€{D€B€K†€ iSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ƒD€B€K†€ iSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€‹D€B€K†€ iSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€“D€B€K†€ iSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€›D€B€K†€ iSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€£D€B€K†€ iSB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ lSB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ�TANK-BOILINGC�CONDITION€ƒ€NIL€ì„let tank-boiling be a named condition€C‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€²FÀ¤FÀÛF€¤F€ÛD€D€C�SURGE-TANKB€²F€ÞFÀ�F€FÀ=ÀSURGE€D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€–FÀÅF€´FÀ§C€L1D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€B€²F€–FÀmF€´FÀ2C€F2D€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€²FÀÝFÀ´FÀ°FÀŒƒ€PUMPD€B€ÔB€²FÀsFÀÝFÀUFÀ¢C€F1D€ƒ�ACCUMULATOR€B€²FÀBFÀ‘F€TFÀ_ƒ€TANKD€ D€C�FLOW-PIPE€B€²€B€²Ã‚SURGE-TANK-MAIN-OUTPUTB€²F€D€C‚CONTROL-CONNECTIONB€²€B€²ƒSURGE-TANK-METER-OUTPUT€B€²F€D€B€õB€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀD€B€ðB€²F€€ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€Ã‚SURGE-TANK-MAIN-INPUT€B€²D€B€õB€²F€B€²B€ûB€²FÀD€B€õB€²B€²F€B€²CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€ðB€²B€²F€B€²Ã‚PUMP-INPUT-CONNECTION€FÀD€B€ðB€²F€F€ÂPUMP-OUTPUT-CONNECTIONƒƒTHRU-SENSOR-INPUT-CONNECTIONB€²D€B€ðB€²F€F€B€ÂACCUMULATOR-MAIN-INPUTB€²D€B€õB€²F€B€²B€ûB€²FÀD€B€ðB€²F€F€ƒACCUMULATOR-MAIN-OUTPUT€B€B€²D€B€õB€²F€F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€B€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 8 :AUTHOR "DWR" :QFASLP NIL :LENGTH 1841 :CREATION-DATE 2713524326 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "CONVENTIONS" :TYPE "TEXT" :VERSION 2) -*- Mode:Text; Fonts:(CPTFONTB) -*-����Notations and Conventions Used in The Class Excercises�------------------------------------------------------���1) Notations for keys on the keyboard:��‰ is the blue key labelled‰SYSTEM�‰‰‰‰"‰‰LINE�‰‰‰"‰‰CLEAR SCREEN�‰�‰and so on. Anytime you see somthing inside brackets (i.e. <>)�‰this means that it is a key on the keyboard and not a string of�‰characters to by typed. For example means to press the�‰blue key labelled SYSTEM rather than typing the characters system.���2) Do Not Type the key unless it is specifically noted. In Lisp�‰a right paren. will close the expression and cause it to be�‰evaluated without typeing .�� Also, in certain editor commands, as well as many other places (i.e. control keys) �‰the key being depresed may cause you ploblems.���3) The notation CTRL-a means to simultaneously depress the CTRL key and the "a" key.�‰The same with META. To boot the machine, for example, you'll need to depress�‰CTRL-META-CTRL-META- all at the same time.���4) Mouse clicks are noted by "click LEFT" or "click RIGHT" using the mouse.���5) Error handling:��‰If you should ever see a display which looks similar to this:���‰‰s-A: Give up on loading file�‰‰s-B, Return to ZMACS break loop�‰‰s-C: Return to top level editor command loop�‰‰s-D: Restart process ZMACS Frame 1�‰‰s-E: Reset and Arrest process ZMACS Frame 1����‰it indicates an error of some kind has been detected by this Lisp �‰system and is trapping the condition giving an opportunity to examine�‰it. Should this happen it is important to notify the class instructor�‰of the condition so that the appropriate action can be taken. This course�‰is not intended to teach how to deal with such problems.LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 706 :CREATION-DATE 2730913992 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "COURSE-SUMMARY" :TYPE "TEXT" :VERSION 1) ���This hands-on course is designed to train the student to use all�the facilities of PICON to build and maintain process knowledge�bases. ��The emphasis of this course is placed upon the practical uses of�PICON in terms of building specific knowledge bases, as well as�customizing PICON for a particular environment. Expert systems�techniques such as backward and forward chaining and rule �inferencing, the frame system, and process equipment hierarchy�manipulation are major highlights of the course. Customization�activities such as building new graphics icons are taught as well�as techniques for constructing knowledge bases in an efficient �and effective manner are all covered in this course.���� LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 755 :CREATION-DATE 2730914608 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "COURSE-SUMMARY" :TYPE "TEXT" :VERSION 2) ���This hands-on course is designed to train the student to use all�the facilities of PICON to build and maintain process knowledge�bases. ��The emphasis of this course is placed upon the practical uses of�PICON in terms of building specific knowledge bases, as well as�customizing PICON for a particular environment. Expert systems�techniques such as backward and forward chaining and rule �inferencing, the frame system, and process equipment hierarchy�manipulation are major highlights of the course. Customization�activities such as building new graphics icons are taught as well�as techniques for constructing knowledge bases in an efficient �and effective manner are all covered in this course.����[this was written in a flash for John Hotchkiss]� LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 1629 :CREATION-DATE 2730382641 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-1" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢1UF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-1ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 11€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ?B€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-CURRENCY-INTERVALF€FÀFÀcF€FÀEC€T1D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ #?B€MB€NÃ�STATEMENT-TEXTD€D€C€IFD€C€>€B€¾F€ÔD€D€ƒ€SENDD€l„Temperature in boiler is too high€D€ƒ�DESTINATION€�OPERATORl‚if T1 > 212 then €,…send "Temperature in boiler is too high"ì� to operator€C‚STATEMENT-NUMBER?€F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀÈF€hF€ÁF€žD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€ÈCƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÈF€hF€ÁF€žD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÃB€-FÀ½F€nFÀ%F€{B€ÖD€B€ñD€B€òB€ÃB€-FÀ®F€~F€¹F€‹B€×D€B€ñD€B€òB€ÃB€-FÀ®F€ŽFÀ:F€›B€ØD€B€ÀD€B€ÁB€ÃB€-B€ÄD€B€ÅD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ ?B€MB€NB€ÈD€D€�SIMULATEB€¾B€°D€C�PICON-WAVEF€ÈF€F€X,†simulate T1 with wave with central value 200 andl„deviation 20 and period 10 minutesB€ÚF€B€-FÀàF€*F€âF€PD€D€B€èD€B€éB€ÈB€êF€ÂFÀàF€*F€âF€PD€D€B€ñD€B€òB€ÃB€-FÀÕF€0F€ÚF€=B€D€B€ñD€B€òB€ÃB€-FÀÆF€@F€kF€MB€D€B€ÀD€B€ÁB€ÃB€-B€ÄD€B€ÅD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ xB€MB€NB€È¬�Exercise #1€B€ÚF€B€-FÀEFÀòFÀÐFÀÜD€D€B€èD€B€éB€ÈB€êF€ÂFÀEFÀòFÀÐFÀÜD€D€B€ñD€B€òB€ÃB€-FÀ:FÀìFÀØFÀßB€8D€D€C�FLOW-PIPE€B€°B€°€B€°C‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€°€B€°ƒƒSENSOR-CONTROLLER-CONNECTIONB€°FÀB€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2295 :CREATION-DATE 2730389103 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-10" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢pnF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ …x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ´L�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ …xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-10€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 10€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ´LB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ´LB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ´LB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ´LB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ´LB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ´LB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ´LB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ´LB€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ jMB€MB€NÃ�STATEMENT-TEXTD€D€�SIMULATEC€F1B€°D€C�PICON-WAVEF€dF€2F€°,†simulate F1 with wave with central value 100 andl„deviation 50 and period 20 minutesC‚STATEMENT-NUMBER?€F€B€-FÀF€ÌF€°F€òD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€½CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀF€ÌF€°F€òD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€¸B€-FÀF€ÒF€¨F€ßB€ÆD€B€ÞD€B€ßB€¸B€-FÀøF€âF€9F€ïB€ÇD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€îFÀcF€ FÀ(B€¿D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ DIB€MB€NB€½D€D€C€IFD€C€ISC�WAVE-STEP€‚WAVE-INCREASING€D€D€ƒ€SENDD€lƒWave for F1 is increasing€D€ƒ�DESTINATION€�OPERATORl…if wave-step is wave-increasing then send€,…"Wave for F1 is increasing" to operator€B€ÉF€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀFÀ$F€qF€D€D€B€ÕD€B€ÖB€½B€×F€ÂFÀFÀ$F€qF€D€D€B€ÞD€B€ßB€¸B€-FÀFÀF€iFÀB€D€B€ÞD€B€ßB€¸B€-FÀøFÀF€fFÀB€ D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€øD€ B€K†€ oMB€MB€NB€½D€D€B€úD€C€>€B€¿D€Ã�DELAYED-VALUE€B€¿F€D€D€�ADVANCE€B€üB€ýl†if f1 > f1 as of 15 seconds ago then advance step€ì„variable wave-step to wave-increasing€B€ÉF€B€ F€ B€-FÀFÀZF€¸FÀ4D€D€B€ÕD€B€ÖB€½B€×F€ÂFÀFÀZF€¸FÀ4D€D€B€ÞD€B€ßB€¸B€-FÀFÀTF€°FÀGB€8D€B€ÞD€B€ßB€¸B€-FÀùFÀDF€SFÀ7B€9D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€C�DEFINITIOND€B€K†€ qMB€MB€NB€½D€D€ƒSTEP-VARIABLE-DEFINITIONB€üD€C�START-WAVEB€ý‚WAVE-DECREASING€l…let step variable wave-step be start-wave,,„wave-increasing, wave-decreasingB€ÉF€B€-FÀFÀ‘F€yFÀkD€D€B€ÕD€B€ÖB€½B€×F€ÂFÀFÀ‘F€yFÀkD€D€B€ÞD€B€ßB€¸B€-FÀFÀ‹F€qFÀ~B€dD€B€ÞD€B€ßB€¸B€-FÀùFÀ{F€&FÀnB€eD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ ¶MB€MB€NB€½D€D€C�INITIALLY€D€D€B€4B€üB€`D€B€ÿD€ì‚Begin wave monitoring.D€B€B€¬‡initially advance step variable wave-step to start-wave and€l…send "Begin wave monitoring." to operator€B€ÉF€B€-FÀFÀÆF€FÀ D€D€B€ÕD€B€ÖB€½B€×F€ÂFÀFÀÆF€FÀ D€D€B€ÞD€B€ßB€¸B€-FÀFÀÀF€ FÀ³B€’D€B€ÞD€B€ßB€¸B€-FÀùFÀ°F€wFÀ£B€“D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ „xB€MB€NB€½¬�Exercise #10B€ÉF€B€-FÀCFÀòFÀÅFÀÜD€D€B€ÕD€B€ÖB€½B€×F€ÂFÀCFÀòFÀÅFÀÜD€D€B€ÞD€B€ßB€¸B€-FÀ8FÀìFÀÍFÀßB€¸D€D€C�FLOW-PIPE€B€°B€°F€B€°ƒƒTHRU-SENSOR-INPUT-CONNECTIONFÀD€B€ÕB€°F€B€°ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€°F€D€C‚CONTROL-CONNECTIONB€°F€B€°ƒƒSENSOR-CONTROLLER-CONNECTIONB€°FÀB€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 3314 :CREATION-DATE 2730389176 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-11" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢¹nF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ †x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ¶M�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ †xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-11€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 11€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ¶MB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ¶MB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ¶MB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ¶MB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ¶MB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ¶MB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ¶MB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ¶MB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ �IB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ÃTANK-LEVEL-IS-RISING-TOO-FAST€C�CONDITION€ƒ€NIL€ì†let tank-level-is-rising-too-fast be a named conditionC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€B€ID€B€JD€B€®D€ B€K†€ {RB€MB€NB€°D€D€B€±D€Ã�COMPUTED-LEVEL�NUMERIC€B€µ,…let computed-level be a numeric variableB€¹F€ B€»B€µ…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€?D€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ „RB€MB€NB€°D€D€�SIMULATEÃ�SIM-TANK-AREA€B€µÇ€£@ ×ì„simulate local sim-tank-area with 2.02B€¹F€B€-FÀÜF€"F€ŒF€8D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÜF€"F€ŒF€8D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÙB€-FÀÑF€(F€„F€5B€âD€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ *:B€MB€NB€°D€D€C€IFB€²D€D€ƒ€SENDD€¬…Tank overflow expected soon. Average = ~6F €D€C‚AVERAGED-VARIABLE€C€F1F€,F€D€ƒ�DESTINATION€�OPERATORC�EVERY-TIME,„if tank-level-is-rising-too-fast,‡then send "Tank overflow expected soon. Average = *** " ,‡with F1 averaged over 5 minutes using at least 4 values ì‚to operator every timeB€¹F€B€-FÀþFÀaF€FÀD€D€B€ïD€B€ðB€°B€ñF€ÂFÀþFÀaF€FÀD€D€B€øD€B€ùB€ÙB€-FÀóFÀ[F€,FÀNB€D€B€øD€B€ùB€ÙB€-FÀäFÀKF€FÀ>B€D€B€øD€B€ùB€ÙB€-FÀäFÀ;F€FÀ.B€D€B€øD€B€ùB€ÙB€-FÀäFÀ+FÀFÀB€D€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€B€D€ B€K†€ –IB€MB€NB€°D€D€B€D€C€>€ƒ�DELTA-LEVEL€F€D€D€�CONCLUDEB€²D€B€D€¬„Tank level is rising too fast (~6F)€B€JD€B€B€,ƒif delta-level > 4 then l…conclude tank-level-is-rising-too-fast andl…send "Tank level is rising too fast (***)",„ with delta-level to operator€B€¹F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀþFÀ®F€�FÀhD€D€B€ïD€B€ðB€°B€ñF€ÂFÀþFÀ®F€�FÀhD€D€B€øD€B€ùB€ÙB€-FÀóFÀ¨FÀFÀ›B€UD€B€øD€B€ùB€ÙB€-FÀäFÀ˜F€•FÀ‹B€VD€B€øD€B€ùB€ÙB€-FÀäFÀˆF€•FÀ{B€WD€B€øD€B€ùB€ÙB€-FÀäFÀxF€2FÀkB€XD€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€B€®D€ B€K†€ …IB€MB€NB€°D€D€B€±B€JD€C€-€C€L1D€Ã�DELAYED-VALUE€B€‹F€l…delta-level = L1 - L1 as of 30 seconds agoB€¹F€B€»B€-B€-FÀþFÀÏF€ŽFÀ¹D€D€B€ïD€B€ðB€°B€ñF€ÂFÀþFÀÏF€ŽFÀ¹D€D€B€øD€B€ùB€ÙB€-FÀóFÀÉF€†FÀ¼B€‘D€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€B€ÜD€B€K†€ �RB€MB€NB€°D€ D€B€ÞB€ €D€B€D€C€<€ƒ€TIMEF€–D€C�PICON-WAVEF€<F€<F€X€€F€ÂD€B€D€B€°B€±F€ÂF€<D€B€D€B€°B€±F€XD€B€´F€<F€<F€X€€F€Â€,ƒsimulate F1 with 0 then€,ƒif time < 150 then wave€ì… with central value 60 and deviation 60 and€,… period 600 seconds and phase 450 else¬ƒif time < 450 then 60 else €,ƒif time < 600 then wave€ì… with central value 60 and deviation 60 and€l… period 600 seconds and phase 450 else 0B€¹F€B€-FÀÜF€’F€ÚF€D€D€B€ïD€B€ðB€°B€ñF€ÂFÀÜF€’F€ÚF€D€D€B€øD€B€ùB€ÙB€-FÀÑF€˜FÀF€¥B€ÍD€B€øD€B€ùB€ÙB€-FÀÂF€¨F€ F€µB€ÎD€B€øD€B€ùB€ÙB€-FÀÂF€¸F€ÒF€ÅB€ÏD€B€øD€B€ùB€ÙB€-FÀÂF€ÈF€¥F€ÕB€ÐD€B€øD€B€ùB€ÙB€-FÀÂF€ØF€0F€åB€ÑD€B€øD€B€ùB€ÙB€-FÀÂF€èF€ F€õB€ÒD€B€øD€B€ùB€ÙB€-FÀÂF€øF€ÒF€B€ÓD€B€øD€B€ùB€ÙB€-FÀÂF€F€·F€B€ÔD€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€B€ÜD€B€K†€ –IB€MB€NB€°D€D€B€ÞB€‹€D€B€D€B€°B€±F€XD€ƒ€MIN€D€C€+€B€‹D€C€*€Ç€ûDD¿�D€C€/€B€ B€ßF€ÈF€È,ƒsimulate L1 with 0 then€l‚if time < 600 thenì† min ((L1 + .016667 * (F1 / sim-tank-area)) , 200) €,�else 200B€¹F€B€-FÀÜF€AF€"F€‡D€D€B€ïD€B€ðB€°B€ñF€ÂFÀÜF€AF€"F€‡D€D€B€øD€B€ùB€ÙB€-FÀÑF€GFÀF€TB€,D€B€øD€B€ùB€ÙB€-FÀÂF€WFÀ!F€dB€-D€B€øD€B€ùB€ÙB€-FÀÂF€gF€F€tB€.D€B€øD€B€ùB€ÙB€-FÀÂF€wFÀ{F€„B€/D€ƒ�ACCUMULATOR€B€µFÀdF€qF€2F€£ƒ�HOLDING-TANKD€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ƒSENSOR-TRACING-REQUESTS€B€-F€�F€{F€­F€™B€‹D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€hB€-FÀÏF€(FÀ±F€cB€ D€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ …xB€MB€NB€°¬�Exercise #11B€¹F€B€-FÀEFÀíFÀÇFÀ×D€D€B€ïD€B€ðB€°B€ñF€ÂFÀEFÀíFÀÇFÀ×D€D€B€øD€B€ùB€ÙB€-FÀ:FÀçFÀÏFÀÚB€xD€D€C�FLOW-PIPE€B€µF€B€µƒACCUMULATOR-MAIN-OUTPUT€B€µD€F€*F€"D€C‚CONTROL-CONNECTIONB€µF€F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€B€µD€B€•B€µF€F€ÃTHRU-SENSOR-OUTPUT-CONNECTION€Ã‚ACCUMULATOR-MAIN-INPUTB€µD€B€œB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€•B€µB€µF€B€µƒƒTHRU-SENSOR-INPUT-CONNECTIONFÀD€B€œB€µF€B€µB€¨B€µFÀB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 3537 :CREATION-DATE 2730389293 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-12" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢.oF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ˆx1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ¶M�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ˆxB€MD€B€Nƒ€WJB€CƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-12€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 12€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ ¶MB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ ¶MB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ ¶MB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ ¶MB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ ¶MB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ ¶MB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ ¶MB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ ¶MB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ -RB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€C�FILL-TIMER�NUMERIC€ƒ€NIL€¬„let fill-timer be a numeric variableC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€·1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€Ã�TIMER-RUNNING€C�CONDITION€B€·ì„let timer-running be a named conditionB€»F€B€½B€-1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€Ã�TIMER-STARTED€B€ÅB€·ì„let timer-started be a named conditionB€»F€B€½B€-1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€C�FILL-TIME€B€µB€·¬„let fill-time be a numeric variable€B€»F€B€½B€·…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€‚TANK-IS-FILLING€B€ÅB€·,…let tank-is-filling be a named conditionB€»F€B€½B€-1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€ÀTIMER€B€µB€·,„let timer be a numeric variable€B€»F€B€½B€·B€ãB€ä1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€·FÀ¤FÀÛF€¤F€ÛD€D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€ãF€ÀF€F€ÞÀCLOCK€D€ƒ�ACCUMULATOR€B€·FÀAF€†F€UF€¸ƒ€TANKD€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ 7RB€MB€NB€²l€4€B€»F€B€-FÀ=FÀ2FÀ"FÀD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€²CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ=FÀ2FÀ"FÀD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€B€-FÀ2FÀ,FÀ*FÀB€"D€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€B€ D€B€K†€ 7RB€MB€NB€²l€3€B€»F€B€-FÀ=FÀSFÀ"FÀ=D€D€B€.D€B€/B€²B€0F€ÂFÀ=FÀSFÀ"FÀ=D€D€B€7D€B€8B€B€-FÀ2FÀMFÀ*FÀ@B€DD€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€B€ D€B€K†€ 7RB€MB€NB€²l€2€B€»F€B€-FÀ=FÀ–FÀ"FÀ€D€D€B€.D€B€/B€²B€0F€ÂFÀ=FÀ–FÀ"FÀ€D€D€B€7D€B€8B€B€-FÀ2FÀ�FÀ*FÀƒB€aD€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€B€ D€B€K†€ 7RB€MB€NB€²l€1€B€»F€B€-FÀ<FÀÇFÀ!FÀ±D€D€B€.D€B€/B€²B€0F€ÂFÀ<FÀÇFÀ!FÀ±D€D€B€7D€B€8B€B€-FÀ1FÀÁFÀ)FÀ´B€~D€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ ƒMB€MB€NB€²D€D€C�INITIALLY€D€D€ƒ€SET€B€Ý€¬ƒinitially set fill-time = 0€B€»F€ B€-FÀFÀ2FÀFÀD€D€B€.D€B€/B€²B€0F€ÂFÀFÀ2FÀFÀD€D€B€7D€B€8B€B€-FÀFÀ,FÀFÀB€¢D€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ †8B€MB€NB€²D€D€C€IFB€ëD€D€C�INCREMENT€B€ÝD€F€ �INTERVALl‡if tank-is-filling then increment fill-time by 10 seconds€B€»F€B€-FÀFÀSF€÷FÀ=D€D€B€.D€B€/B€²B€0F€ÂFÀFÀSF€÷FÀ=D€D€B€7D€B€8B€B€-FÀFÀMF€ïFÀ@B€ÉD€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€B€¿D€B€K†€ ŽýB€MD€B€NB€WB€²D€D€B€ÁD€ƒ€NOT€B€ëD€D€ƒ€SENDD€,‚Fill time = ~6F€B€ÝD€ƒ�DESTINATION€�OPERATOR¬ƒif not tank-is-filling then€l†send "Fill time = ***" with fill-time to operator€B€»F€B€-FÀFÀ–F€¾FÀpD€D€B€.D€B€/B€²B€0F€ÂFÀFÀ–F€¾FÀpD€D€B€7D€B€8B€B€-FÀFÀ�FÀFÀƒB€óD€B€7D€B€8B€B€-FÀFÀ€F€¶FÀsB€ôD€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€B€¿D€ B€K†€ …8B€MB€NB€²D€D€B€ÁD€C€>€C€L1D€Ã�DELAYED-VALUE€B€F€ D€D€�CONCLUDEB€ëD€D€ƒ�CONCLUDE-NOTB€ëì‡if L1 > L1 as of 10 seconds ago then conclude tank-is-filling l„else conclude not tank-is-filling€B€»F€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀFÀÇF€$FÀ¡D€D€B€.D€B€/B€²B€0F€ÂFÀFÀÇF€$FÀ¡D€D€B€7D€B€8B€B€-FÀFÀÁF€FÀ´B€%D€B€7D€B€8B€B€-FÀFÀ±F€&FÀ¤B€&D€B€D€B€ F€ B€ B€-F€“F€¿F€±F€ÝB€D€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€B€¿D€ B€K†€ ýQB€MB€NB€²D€D€B€ÁD€B€B€€B€·¬ƒif CLOCK > 0 then do nothingB€»F€ B€)F€ B€-FÀ)F€�F€åF€¦D€D€B€.D€B€/B€²B€0F€ÂFÀ)F€�F€åF€¦D€D€B€7D€B€8B€B€-FÀF€–F€ÝF€£B€VD€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€B€ D€B€K†€ ‡xB€MB€NB€²¬�Exercise #12B€»F€B€-FÀBFÀòFÀÄFÀÜD€D€B€.D€B€/B€²B€0F€ÂFÀBFÀòFÀÄFÀÜD€D€B€7D€B€8B€B€-FÀ7FÀìFÀÌFÀßB€uD€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ RB€MB€NB€²D€D€�SIMULATEB€B€·ƒ€TIME,ƒsimulate clock with timeB€»F€ B€-FÀF€�FÀ3F€¥D€D€B€.D€B€/B€²B€0F€ÂFÀF€�FÀ3F€¥D€D€B€7D€B€8B€B€-FÀF€•FÀ;F€¢B€–D€B€D€B€B€B€-B€D€B€D€B€ID€B€JD€B€‘D€B€K†€ {ýB€MD€B€NB€WB€²D€D€B€“B€€D€B€ÁD€C€<€B€”F€,D€C€+€B€‡ÀD€B€ÁD€B€¶B€”F€XF€KD€ƒ€MAX€€D€C€-€B€‡À}33¬…simulate L1 with 0 then if time < 300 then €¬…(L1 + .25) else if time < 600 then 75 else €l‚max (0, L1 - .15)€B€»F€B€-FÀF€KF€‡F€�D€D€B€.D€B€/B€²B€0F€ÂFÀF€KF€‡F€�D€D€B€7D€B€8B€B€-FÀF€QF€pF€^B€ÈD€B€7D€B€8B€B€-FÀF€aF€F€nB€ÉD€B€7D€B€8B€B€-FÀF€qFÀkF€~B€ÊD€D€C‚CONTROL-CONNECTIONB€·€B€·ƒƒSENSOR-CONTROLLER-CONNECTIONB€·FÀD€C�FLOW-PIPE€B€·B€·F€B€·Ã‚ACCUMULATOR-MAIN-INPUTFÀD€B€ùB€·F€B€·ƒACCUMULATOR-MAIN-OUTPUT€B€·F€D€B€ôB€·F€F€ ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€%D€B€ôB€·F€ B€·B€öB€·FÀB€·1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 4008 :CREATION-DATE 2730389441 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-13" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢ÂoF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ Šx1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ¶M�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ŠxB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-13€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 13€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ¶MB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ¶MB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ¶MB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ¶MB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ¶MB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ¶MB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ¶MB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ¶MB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ -RB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€C�FILL-TIMER�NUMERIC€ƒ€NIL€¬„let fill-timer be a numeric variableC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€µ1€D€B€ID€B€JD€B€®D€ B€K†€ RB€MB€NB€°D€D€B€±D€Ã�TIMER-RUNNING€C�CONDITION€B€µì„let timer-running be a named conditionB€¹F€B€»B€-1€D€B€ID€B€JD€B€®D€ B€K†€ RB€MB€NB€°D€D€B€±D€Ã�TIMER-STARTED€B€ÃB€µì„let timer-started be a named conditionB€¹F€B€»B€-1€D€B€ID€B€JD€B€®D€ B€K†€ RB€MB€NB€°D€D€B€±D€C�FILL-TIME€B€³B€µ¬„let fill-time be a numeric variable€B€¹F€B€»B€µ…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€B€ID€B€JD€B€®D€ B€K†€ RB€MB€NB€°D€D€B€±D€‚TANK-IS-FILLING€B€ÃB€µ,…let tank-is-filling be a named conditionB€¹F€B€»B€-1€D€B€ID€B€JD€B€®D€ B€K†€ RB€MB€NB€°D€D€B€±D€ÀTIMER€B€³B€µ,„let timer be a numeric variable€B€¹F€B€»B€µB€áB€â1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ßD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ 7RB€MB€NB€°l€3€B€¹F€B€-FÀ7FÀIFÀFÀ3D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ7FÀIFÀFÀ3D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ B€-FÀ,FÀCFÀ$FÀ6B€D€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ •8B€MB€NB€°D€D€C€IFB€éD€D€C�INCREMENT€B€ÛD€F€ �INTERVALl‡if tank-is-filling then increment fill-time by 10 seconds€B€¹F€B€-FÀFÀIF€üFÀ3D€D€B€D€B€B€°B€F€ÂFÀFÀIF€üFÀ3D€D€B€#D€B€$B€ B€-FÀ FÀCF€ôFÀ6B€9D€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€B€ D€B€K†€ 7RB€MB€NB€°l€2€B€¹F€B€-FÀ7FÀ�FÀFÀwD€D€B€D€B€B€°B€F€ÂFÀ7FÀ�FÀFÀwD€D€B€#D€B€$B€ B€-FÀ,FÀ‡FÀ$FÀzB€WD€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€B€/D€B€K†€ ñ.B€MB€NB€°D€D€B€1D€ƒ€AND€D€ƒ€NOT€B€éD€C€ISƒ�FILLING-STEP�FILLING€D€D€ƒ€SENDD€,‚Fill time = ~6F€B€ÛD€ƒ�DESTINATION€�OPERATORD€�ADVANCE€B€x�NOT-SURE,‡if not tank-is-filling and filling-step is filling then€ì†send "Fill time = ***" with fill-time to operator and€ì…advance step variable filling-step to not-sureB€¹F€B€-FÀFÀ�F€êFÀWD€D€B€D€B€B€°B€F€ÂFÀFÀ�F€êFÀWD€D€B€#D€B€$B€ B€-FÀ FÀ‡F€âFÀzB€ˆD€B€#D€B€$B€ B€-FÀýFÀwF€ßFÀjB€‰D€B€#D€B€$B€ B€-FÀýFÀgF€ FÀZB€ŠD€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€ùF€ÆF€F€äÀCLOCK€D€B€³D€B€´F€ B€¶B€-F€½F€ÇF€ÛF€åC€L1D€ƒ�ACCUMULATOR€B€µFÀF€½F€•F€ïƒ€TANKD€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€B€ D€B€K†€ íRB€MB€NB€°l€5€B€¹F€B€-FÀ7F€)FÀF€?D€D€B€D€B€B€°B€F€ÂFÀ7F€)FÀF€?D€D€B€#D€B€$B€ B€-FÀ,F€/FÀ$F€<B€ÎD€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€B€®D€B€K†€ íRB€MB€NB€°D€D€ƒSTEP-VARIABLE-DEFINITIONB€xD€B€„B€y�DRAININGì‡let step variable filling-step be not-sure, filling, draining€B€¹F€B€-FÀF€)F€!F€?D€D€B€D€B€B€°B€F€ÂFÀF€)F€!F€?D€D€B€#D€B€$B€ B€-FÀ F€/F€F€<B€ïD€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€B€ D€B€K†€ 7RB€MB€NB€°l€4€B€¹F€B€-FÀ8FÀFÀFÀD€D€B€D€B€B€°B€F€ÂFÀ8FÀFÀFÀD€D€B€#D€B€$B€ B€-FÀ-FÀFÀ%FÀB€ D€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ íRB€MB€NB€°D€D€C�INITIALLY€D€D€ƒ€SET€B€Û€D€B€ƒB€xB€„l�initially ¬…set fill-time = 0 and advance step variable€¬ƒ filling-step to not-sure€B€¹F€ B€-FÀFÀF€ŽF€D€D€B€D€B€B€°B€F€ÂFÀFÀF€ŽF€D€D€B€#D€B€$B€ B€-FÀ FÀFÀ²FÀB€2D€B€#D€B€$B€ B€-FÀüFÀF€†F€ B€3D€B€#D€B€$B€ B€-FÀüF€FÀ F€B€4D€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€B€ D€B€K†€ 7RB€MB€NB€°l€1€B€¹F€B€-FÀ9FÀ×FÀFÀÁD€D€B€D€B€B€°B€F€ÂFÀ9FÀ×FÀFÀÁD€D€B€#D€B€$B€ B€-FÀ.FÀÑFÀ&FÀÄB€^D€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€B€/D€ B€K†€ ð.B€MB€NB€°D€D€B€1D€C€>€B€ÄD€Ã�DELAYED-VALUE€B€ÄF€ D€D€�CONCLUDEB€éD€B€ƒB€xB€yD€D€ƒ�CONCLUDE-NOTB€élˆif L1 > L1 as of 10 seconds ago then conclude tank-is-filling and€ì…advance step variable filling-step to filling€l„else conclude not tank-is-filling€B€¹F€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀFÀØF€DFÀ¢D€D€B€D€B€B€°B€F€ÂFÀFÀØF€DFÀ¢D€D€B€#D€B€$B€ B€-FÀ FÀÒF€<FÀÅB€ˆD€B€#D€B€$B€ B€-FÀýFÀÂF€—FÀµB€‰D€B€#D€B€$B€ B€-FÀýFÀ²F€+FÀ¥B€ŠD€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€B€ D€B€K†€ ŠxB€MB€NB€°¬�Exercise #13B€¹F€B€-FÀ>FÀ÷FÀÀFÀáD€D€B€D€B€B€°B€F€ÂFÀ>FÀ÷FÀÀFÀáD€D€B€#D€B€$B€ B€-FÀ3FÀñFÀÈFÀäB€¶D€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€B€/D€ B€K†€ ýQB€MB€NB€°D€D€B€1D€B€{B€¼€B€µ¬ƒif CLOCK > 0 then do nothingB€¹F€ B€�F€ B€-FÀF€¯FÀF€ÅD€D€B€D€B€B€°B€F€ÂFÀF€¯FÀF€ÅD€D€B€#D€B€$B€ B€-FÀF€µFÀF€ÂB€ÖD€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ RB€MB€NB€°D€D€�SIMULATEB€¼B€µƒ€TIME,ƒsimulate clock with timeB€¹F€ B€-FÀF€�FÀ3F€¥D€D€B€D€B€B€°B€F€ÂFÀF€�FÀ3F€¥D€D€B€#D€B€$B€ B€-FÀF€•FÀ;F€¢B€ùD€B€D€B€B€ B€-B€ D€B€ D€B€ID€B€JD€B€ôD€B€K†€ ÿQB€MB€NB€°D€D€B€öB€Ä€D€B€1D€C€<€B€÷F€,D€C€+€B€ÄÇ€ÿ@D€B€1D€B€B€÷F€XF€KD€ƒ€MAX€€D€C€-€B€ÄÇ€þÌLÍ̬…simulate L1 with 0 then if time < 300 then €¬…(L1 + .25) else if time < 600 then 75 else €l‚max (0, L1 - .15)€B€¹F€B€-FÀF€KF€‡F€�D€D€B€D€B€B€°B€F€ÂFÀF€KF€‡F€�D€D€B€#D€B€$B€ B€-FÀF€QF€pF€^B€*D€B€#D€B€$B€ B€-FÀF€aF€F€nB€+D€B€#D€B€$B€ B€-FÀF€qFÀkF€~B€,D€D€C‚CONTROL-CONNECTIONB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€VB€µF€B€µB€XB€µFÀD€C�FLOW-PIPE€B€µB€µF€B€µÃ‚ACCUMULATOR-MAIN-INPUTFÀD€B€VB€µF€F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€B€µB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2477 :CREATION-DATE 2730389493 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-14" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢öoF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ‹x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ iS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ‹xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-14€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 14€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ iSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ iSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ iSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ iSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ iSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ iSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ iSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ iSB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ lSB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ�TANK-BOILINGC�CONDITION€ƒ€NIL€ì„let tank-boiling be a named condition€C‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ rSB€MB€NB€°l€2€B€¹F€B€-FÀFÀ�FÀúFÀzD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀFÀ�FÀúFÀzD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÊB€-FÀ FÀŠFÀFÀ}B€ÏD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ mSB€MB€NB€°D€D€C€IFD€B€±Ã�COOLER-SWITCH€F€D€D€ƒ€SENDD€¬„Cooler appears to be malfunctioning.D€ƒ�DESTINATION€�OPERATORlƒif cooler-switch = 1 then ,‡send "Cooler appears to be malfunctioning." to operator€C‚STATEMENT-KEYWORDSƒ€TANKB€¹F€B€-FÀõFÀ‘F€FÀkD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀõFÀ‘F€FÀkD€D€B€äD€B€åB€ÊB€-FÀêFÀ‹FÀFÀ~B€ÿD€B€äD€B€åB€ÊB€-FÀÛFÀ{F€FÀnB€D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ rSB€MB€NB€°l€1€B€¹F€ B€-FÀFÀÅFÀûFÀ¯D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀFÀÅFÀûFÀ¯D€D€B€äD€B€åB€ÊB€-FÀ FÀ¿FÀFÀ²B€&D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ðD€ B€K†€ lSB€MB€NB€°D€D€B€òD€C€>€C€T1F€ÔD€D€�CONCLUDEB€²D€ÀFOCUS€B€,…if T1 > 212 then conclude tank-boiling €l‚and focus on TANK€B€¹F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀõFÀÅF€|FÀŸD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀõFÀÅF€|FÀŸD€D€B€äD€B€åB€ÊB€-FÀêFÀ¿F€tFÀ²B€MD€B€äD€B€åB€ÊB€-FÀÛFÀ¯FÀCFÀ¢B€ND€C�SURGE-TANKB€µFÀ£F€xFÀgF€ÈB€D€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-ENGINEERING-UNIT€Ã€ON-OFFƒSENSOR-CURRENCY-INTERVALF€F€ŸF€�F€½F€®B€óD€B€yD€B€zB€-F€F€‘F€$F€¯B€DD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ oSB€MB€NB€°D€D€�SIMULATEB€ó€D€B€òD€B€CB€DF€ÔF€€ì…simulate COOLER-SWITCH with 0 then if T1 > 212ì�then 1 else 0€B€¹F€B€-FÀ>F€1F€rF€WD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀ>F€1F€rF€WD€D€B€äD€B€åB€ÊB€-FÀ3F€7F€jF€DB€•D€B€äD€B€åB€ÊB€-FÀ$F€GFÀ°F€TB€–D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€‹D€B€K†€ kSB€MB€NB€°D€D€B€�B€DB€µD€C�PICON-WAVEF€ÈF€F€°,†simulate T1 with wave with central value 200 andl„deviation 25 and period 20 minutesB€¹F€B€-FÀ?F€üF€ƒF€"D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀ?F€üF€ƒF€"D€D€B€äD€B€åB€ÊB€-FÀ4F€F€{F€B€ÀD€B€äD€B€åB€ÊB€-FÀ%F€F€ F€B€ÁD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ ‹xB€MB€NB€°¬�Exercise #14B€¹F€B€-FÀBFÀòFÀÄFÀÜD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀBFÀòFÀÄFÀÜD€D€B€äD€B€åB€ÊB€-FÀ7FÀìFÀÌFÀßB€åD€D€C�FLOW-PIPE€B€µB€µF€B€µÃ‚SURGE-TANK-MAIN-INPUT€FÀD€B€B€µF€B€µÃ‚SURGE-TANK-MAIN-OUTPUTB€µF€D€C‚CONTROL-CONNECTIONB€µF€F€ƒSURGE-TANK-METER-OUTPUT€C‚PORT-SENSOR-INPUT€B€µD€B€B€µB€µF€B€µB€D€FÀGF€&FÀ{FÀFÀDD€B€ B€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€ B€µF€B€µB€B€µFÀB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2514 :CREATION-DATE 2730389545 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-15" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢)pF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ Œx1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ iS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ŒxB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-15€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 15€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ iSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ iSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ iSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ iSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ iSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ iSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ iSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ iSB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ lSB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ�TANK-BOILINGC�CONDITION€ƒ€NIL€ì„let tank-boiling be a named condition€C‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ oSB€MB€NB€°D€D€�SIMULATEÃ�COOLER-SWITCH€€D€C€IFD€C€>€C€T1F€ÔF€€ì…simulate COOLER-SWITCH with 0 then if T1 > 212ì�then 1 else 0€B€¹F€B€-FÀ>F€IF€rF€oD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ>F€IF€rF€oD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÊB€-FÀ3F€OF€jF€\B€ÛD€B€òD€B€óB€ÊB€-FÀ$F€_FÀ°F€lB€ÜD€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-ENGINEERING-UNIT€Ã€ON-OFFƒSENSOR-CURRENCY-INTERVALF€F€,F€ˆF€JF€¦B€ÐD€B€D€B€B€-FÀ*F€gFÀ F€…B€ÔD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ kSB€MB€NB€°D€D€B€ÏB€ÔB€µD€C�PICON-WAVEF€ÈF€F€°,†simulate T1 with wave with central value 200 andl„deviation 25 and period 20 minutesB€¹F€B€-FÀ?F€tF€ƒF€šD€D€B€éD€B€êB€°B€ëF€ÂFÀ?F€tF€ƒF€šD€D€B€òD€B€óB€ÊB€-FÀ4F€zF€{F€‡B€D€B€òD€B€óB€ÊB€-FÀ%F€ŠF€ F€—B€D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ rSB€MB€NB€°l€2€B€¹F€B€-FÀFÀ—FÀýFÀ�D€D€B€éD€B€êB€°B€ëF€ÂFÀFÀ—FÀýFÀ�D€D€B€òD€B€óB€ÊB€-FÀ FÀ‘FÀFÀ„B€CD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ zSB€MB€NB€°D€D€B€ÒD€B€±B€ÐF€D€D€ƒ€SENDD€¬„Cooler appears to be malfunctioning.D€ƒ�DESTINATION€�OPERATORlƒif cooler-switch = 1 then ,‡send "Cooler appears to be malfunctioning." to operator€C‚STATEMENT-KEYWORDSƒ�UNSPECIFIED€ƒ‚STATEMENT-CATEGORIESÃ�CHECK-COOLING€B€¹F€B€-FÀøFÀ—F€FÀqD€D€B€éD€B€êB€°B€ëF€ÂFÀøFÀ—F€FÀqD€D€B€òD€B€óB€ÊB€-FÀíFÀ‘FÀFÀ„B€lD€B€òD€B€óB€ÊB€-FÀÞFÀ�F€FÀtB€mD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€AD€B€K†€ rSB€MB€NB€°l€1€B€¹F€ B€-FÀFÀÊFÀýFÀ´D€D€B€éD€B€êB€°B€ëF€ÂFÀFÀÊFÀýFÀ´D€D€B€òD€B€óB€ÊB€-FÀ FÀÄFÀFÀ·B€•D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€_D€ B€K†€ ySB€MB€NB€°D€D€B€ÒD€B€ÓB€ÔF€ÔD€D€�CONCLUDEB€²D€�ACTIVATED€B€±�CATEGORYB€r,…if T1 > 212 then conclude tank-boiling €,„and activate check-cooling rulesB€¹F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀøFÀËF€yFÀ¥D€D€B€éD€B€êB€°B€ëF€ÂFÀøFÀËF€yFÀ¥D€D€B€òD€B€óB€ÊB€-FÀíFÀÅF€qFÀ¸B€¼D€B€òD€B€óB€ÊB€-FÀÞFÀµF€AFÀ¨B€½D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€AD€B€K†€ ‹xB€MB€NB€°¬�Exercise #15B€¹F€B€-FÀHFÀöFÀÊFÀàD€D€B€éD€B€êB€°B€ëF€ÂFÀHFÀöFÀÊFÀàD€D€B€òD€B€óB€ÊB€-FÀ=FÀðFÀÒFÀãB€ãD€C�SURGE-TANKB€µFÀ£F€xFÀgF€Èƒ€TANKD€D€C�FLOW-PIPE€B€µB€µF€B€µC‚PORT-SENSOR-INPUT€D€FÀ.F€FÀeD€C‚CONTROL-CONNECTIONB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€B€µF€B€µB€B€µFÀD€B€B€µF€ F€ƒSURGE-TANK-METER-OUTPUT€B€ F€D€B€B€µB€µF€ B€µÃ‚SURGE-TANK-MAIN-INPUT€FÀqD€B€B€µF€ B€µÃ‚SURGE-TANK-MAIN-OUTPUTB€µF€‚B€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 1970 :CREATION-DATE 2730390631 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-16" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢ltF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ žx1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ œS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ žxB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-16€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 16€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ œSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ œSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ œSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ œSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ œSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ œSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ œSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ œSB€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ p:B€MB€NÃ�STATEMENT-TEXTD€D€C€IFD€C€>€C€F1D€C‚COMPOUND-VARIABLE€B€À�SETPOINTD€D€ƒ€SENDD€lƒF1 exceeds setpoint by ~6FD€C€-€B€ÀD€B€ÁB€ÀB€ÂD€ƒ�DESTINATION€�OPERATORC�EVERY-TIMEl‡if F1 > F1 setpoint then send "F1 exceeds setpoint by ***"¬…with F1 - F1 setpoint to operator every timeC‚STATEMENT-NUMBER?€F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀFÀÂF€ FÀœD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€½CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀFÀÂF€ FÀœD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€¸B€-FÀFÀ¼F€FÀ¯B€ÒD€B€ìD€B€íB€¸B€-FÀõFÀ¬F€–FÀŸB€ÓD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ WB€MB€NB€½D€D€�SIMULATEB€ÀB€°D€C�PICON-WAVEF€dF€F€à,†simulate F1 with wave with central value 100 andl„deviation 20 and period 8 minutes€B€ÕF€B€-FÀ/F€ÅF€“F€ëD€D€B€ãD€B€äB€½B€åF€ÂFÀ/F€ÅF€“F€ëD€D€B€ìD€B€íB€¸B€-FÀ$F€ËF€‹F€ØB€D€B€ìD€B€íB€¸B€-FÀF€ÛF€F€èB€D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€þD€B€K†€ WB€MB€NB€½D€D€B€ƒ€F1-4B€°F€dìƒsimulate F1 setpoint with 100€B€ÕF€B€-FÀ0F€¥FÀF€»D€D€B€ãD€B€äB€½B€åF€ÂFÀ0F€¥FÀF€»D€D€B€ìD€B€íB€¸B€-FÀ%F€«FÀ!F€¸B€/D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€�F€_F€­F€šB€ÀD€C„R-L-1-IN-1-OUT-FEEDBACK-CONTROLLERB€°F€9F€9F€aF€aB€°D€ƒ‚ON-OFF-CONTROL-VALVEB€°F€F€vF€"F€˜C€V1D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ �xB€MB€NB€½¬�Exercise #16B€ÕF€B€-FÀ<FÀåFÀ¾FÀÏD€D€B€ãD€B€äB€½B€åF€ÂFÀ<FÀåFÀ¾FÀÏD€D€B€ìD€B€íB€¸B€-FÀ1FÀßFÀÆFÀÒB€cD€D€C�FLOW-PIPE€B€°F€B€°ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€°F€D€C‚CONTROL-CONNECTIONB€°F€F€ƒƒSENSOR-CONTROLLER-CONNECTION‚CONTROLLER-INPUTB€°D€B€…B€°F€F€C‚CONTROLLER-OUTPUT€ƒVALVE-CONTROL-CONNECTIONB€°D€B€…B€°B€°F€B€°Ã�SETPOINT-INPUTFÀD€B€€B€°B€°F€B€°Ã‚VALVE-INPUT-CONNECTIONFÀD€B€€B€°F€F€ƒVALVE-OUTPUT-CONNECTION€ƒƒTHRU-SENSOR-INPUT-CONNECTIONB€°B€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2563 :CREATION-DATE 2730390226 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-17" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢ÒrF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ —x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ œS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ —xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-17€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 17€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ œSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ œSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ œSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ œSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ œSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ œSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ œSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ œSB€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€ D€C„R-L-1-IN-1-OUT-FEEDBACK-CONTROLLERD€ ƒ‚SETPOINT-LOW-LIMIT?€F€Pƒ‚SETPOINT-HIGH-LIMIT?F€dC…SETPOINT-MINIMUM-INTERVAL-BETWEEN-CHANGES?F€…SETPOINT-MAXIMUM-CHANGE-PER-ADJUSTMENT?€Ç€PƒDISPLAY-SETPOINT-VALUES€B€-F€lF€qF€”F€™ƒ€F1-XD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€°F€®F€ÎF€éC€F1D€ƒ‚ON-OFF-CONTROL-VALVEB€°F€?F€ÅF€]F€çC€V1D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ ):B€MB€NÃ�STATEMENT-TEXTl€4€C‚STATEMENT-NUMBER?€F€ B€-FÀ6FÀ„FÀFÀnD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€ÞCƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ6FÀ„FÀFÀnD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÙB€-FÀ+FÀ~FÀ#FÀqB€ßD€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ WB€MB€NB€ÞD€D€�SIMULATEB€ÍB€°D€C�PICON-WAVEF€dF€F€à,†simulate F1 with wave with central value 100 andl„deviation 20 and period 8 minutes€B€àF€B€-FÀFÀ„F€¬FÀ^D€D€B€ìD€B€íB€ÞB€îF€ÂFÀFÀ„F€¬FÀ^D€D€B€õD€B€öB€ÙB€-FÀ FÀ~F€¤FÀqB€ D€B€õD€B€öB€ÙB€-FÀüFÀnF€,FÀaB€ D€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€B€ÜD€B€K†€ ):B€MB€NB€Þl€3€B€àF€ B€-FÀ6FÀ FÀFÀŠD€D€B€ìD€B€íB€ÞB€îF€ÂFÀ6FÀ FÀFÀŠD€D€B€õD€B€öB€ÙB€-FÀ+FÀšFÀ#FÀ�B€/D€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€B€D€B€K†€ WB€MB€NB€ÞD€D€B€ƒ€F1-4F€dD€C‚COMPOUND-VARIABLE€B€Í�SETPOINTì…simulate F1 setpoint with 100 then F1 setpointB€àF€B€-FÀFÀ F€šFÀŠD€D€B€ìD€B€íB€ÞB€îF€ÂFÀFÀ F€šFÀŠD€D€B€õD€B€öB€ÙB€-FÀ FÀšF€’FÀ�B€RD€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€C‚UNCONDITIONAL-RULED€ B€K†€ .WB€MB€NB€ÞD€D€C€IFƒ€TRUED€D€ƒ�SET-SETPOINTB€ÍD€C€+€F€d‚SETPOINT-CHANGE€,…set F1 setpoint = 100 + setpoint-change€B€àF€ ƒPICON-RULE-SCAN-INTERVALF€B€-FÀFÀ»F€ZFÀ¥D€D€B€ìD€B€íB€ÞB€îF€ÂFÀFÀ»F€ZFÀ¥D€D€B€õD€B€öB€ÙB€-FÀ FÀµF€RFÀ¨B€{D€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€B€ÜD€B€K†€ WB€MB€NB€Þl€2€B€àF€B€-FÀ6FÀ»FÀFÀ¥D€D€B€ìD€B€íB€ÞB€îF€ÂFÀ6FÀ»FÀFÀ¥D€D€B€õD€B€öB€ÙB€-FÀ+FÀµFÀ#FÀ¨B€›D€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€B€ÜD€B€K†€ WB€MB€NB€Þl€1€B€àF€B€-FÀ6FÀÖFÀFÀÀD€D€B€ìD€B€íB€ÞB€îF€ÂFÀ6FÀÖFÀFÀÀD€D€B€õD€B€öB€ÙB€-FÀ+FÀÐFÀ#FÀÃB€¸D€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€C�DEFINITIOND€ B€K†€ -WB€MB€NB€ÞD€D€C€=€B€vD€C€-€F€dB€Ílƒsetpoint-change = 100 - F1B€àF€ ƒBACKTRACK-TO-GET-VALUE?€B€-B€-FÀFÀÖFÀFÀÀD€D€B€ìD€B€íB€ÞB€îF€ÂFÀFÀÖFÀFÀÀD€D€B€õD€B€öB€ÙB€-FÀ FÀÐFÀ#FÀÃB€ÛD€B€ÖD€B€×B€ÙB€-B€ÚD€B€ÛD€B€ID€B€JD€B€ÜD€B€K†€ —xB€MB€NB€Þ¬�Exercise #17B€àF€B€-FÀ>FÀ÷FÀÀFÀáD€D€B€ìD€B€íB€ÞB€îF€ÂFÀ>FÀ÷FÀÀFÀáD€D€B€õD€B€öB€ÙB€-FÀ3FÀñFÀÈFÀäB€úD€D€C‚CONTROL-CONNECTIONB€°€F€C‚CONTROLLER-OUTPUT€ƒVALVE-CONTROL-CONNECTIONB€°D€B€B€°B€°€B€°Ã�SETPOINT-INPUTFÀD€C�FLOW-PIPE€B€°F€B€°ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€°F€D€B€B€°F€€ƒƒSENSOR-CONTROLLER-CONNECTION‚CONTROLLER-INPUTB€°D€B€!B€°B€°F€B€°Ã‚VALVE-INPUT-CONNECTIONFÀD€B€!B€°F€F€ƒVALVE-OUTPUT-CONNECTION€ƒƒTHRU-SENSOR-INPUT-CONNECTIONB€°B€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 1674 :CREATION-DATE 2730390292 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-18" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢sF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ˜x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ~?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ˜xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-18€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 18€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ~?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ~?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ~?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ~?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ~?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ~?B€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ~?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ~?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-CURRENCY-INTERVALF€FÀFÀ©F€FÀ‹ƒ€T12€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ Š?B€MB€NÃ�STATEMENT-TEXTD€D€C€IFD€C€>€B€¾F€dD€D€ƒ€SENDD€ìƒThe square root of T12 is ~6F€D€�FUNCALL€D€B€Jƒ�SQUARE-ROOT€B€¾D€ƒ�DESTINATION€�OPERATORC�EVERY-TIME,ƒif T12 > 100 then send €¬‡"The square root of T12 is ***" with call square-root (T12) ì‚to operator every timeC‚STATEMENT-NUMBER?€F€ƒPICON-RULE-SCAN-INTERVALF€<B€-FÀ'FÀF€F€(D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€ÈCƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ'FÀF€F€(D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÃB€-FÀFÀFÀNF€B€ÛD€B€öD€B€÷B€ÃB€-FÀ F€F€F€B€ÜD€B€öD€B€÷B€ÃB€-FÀ F€FÀHF€%B€ÝD€B€ÀD€B€ÁB€ÃB€-B€ÄD€B€ÅD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ €?B€MB€NB€ÈD€D€�SIMULATEB€¾B€°D€C�PICON-WAVEF€dF€2F€,l†simulate T12 with wave with central value 100 and€l„deviation 50 and period 5 minutes€B€ßF€B€-FÀöFÀZF€ÕFÀ4D€D€B€íD€B€îB€ÈB€ïF€ÂFÀöFÀZF€ÕFÀ4D€D€B€öD€B€÷B€ÃB€-FÀëFÀTF€ÍFÀGB€D€B€öD€B€÷B€ÃB€-FÀÜFÀDF€LFÀ7B€D€B€ÀD€B€ÁB€ÃB€-B€ÄD€B€ÅD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ ˜xB€MB€NB€È¬�Exercise #18B€ßF€B€-FÀ@FÀíFÀÂFÀ×D€D€B€íD€B€îB€ÈB€ïF€ÂFÀ@FÀíFÀÂFÀ×D€D€B€öD€B€÷B€ÃB€-FÀ5FÀçFÀÊFÀÚB€=D€D€C�FLOW-PIPE€B€°B€°€B€°C‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€°€B€°ƒƒSENSOR-CONTROLLER-CONNECTIONB€°FÀB€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "dwr" :CHARACTERS NIL :QFASLP NIL :LENGTH 3201 :CREATION-DATE 2731005770 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-19" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€¬€gaz€¬€Milo†€K¢¦F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ Kƒ1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ œS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ KƒB€MD€B€Nƒ€GAZ€CƒNEXT-NEW-STATEMENT-NUMBER€F€"C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-19€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 19€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ œSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ œSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ œSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ œSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ œSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ œSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ œSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ œSB€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ ™xB€MB€NÃ�STATEMENT-TEXT¬�Exercise 19€C‚STATEMENT-NUMBER?€F€!B€-F€¿FÀìF€4FÀÖD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€¿CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂF€¿FÀìF€4FÀÖD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ºB€-F€ÊFÀæF€,FÀÙB€ÀD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ ˆ/B€Mƒ€GMS€B€¿D€D€C€IFD€C€>€D€C€+€C€V1C€F1D€C‚COMPOUND-VARIABLE€B€é�SETPOINT‡ÀB€²¬„if v1 + f1 + f1 setpoint > 0.0 then l�do nothingB€ÁF€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀ•F€#FÀ?F€ID€D€B€ÍD€B€ÎB€¿B€ÏF€ÂFÀ•F€#FÀ?F€ID€D€B€ÖD€B€×B€ºB€-FÀŠF€)FÀGF€6B€ñD€B€ÖD€B€×B€ºB€-FÀ{F€9FÀ"F€FB€òD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€C‚UNCONDITIONAL-RULED€ B€K†€ JƒB€MD€B€äB€NB€WB€¿D€D€B€åƒ€TRUED€D€ƒ�SET-SETPOINTB€éD€�FUNCALL€D€B€JC�GET-VALUE€¬„set F1 setpoint = call get-value ()€B€ÁF€B€õF€ B€-FÀ•F€FÀHF€D€D€B€ÍD€B€ÎB€¿B€ÏF€ÂFÀ•F€FÀHF€D€D€B€ÖD€B€×B€ºB€-FÀŠF€ FÀPF€B€#D€Ã�OUTPUT-DISPLAYD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-CURRENCY-INTERVALF€F€'F€‹F€¤F€©B€èD€ƒ‚ON-OFF-CONTROL-VALVEB€²F€F€FF€7F€hB€èD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€BB€-CƒSENSOR-FAILURE-ACTION-LISTD€D€D€ƒ€SENDD€¬€~6F€Ã€ERROR€D€ƒ�DESTINATION€�OPERATORC�EVERY-TIMEl„send "***" with error to operator l�every timeF€šF€/F€¸F€jB€éD€C„R-L-1-IN-1-OUT-FEEDBACK-CONTROLLERD€ ƒ‚SETPOINT-LOW-LIMIT?€€ƒ‚SETPOINT-HIGH-LIMIT?F€dC…SETPOINT-MINIMUM-INTERVAL-BETWEEN-CHANGES?F€ …SETPOINT-MAXIMUM-CHANGE-PER-ADJUSTMENT?€F€dƒDISPLAY-SETPOINT-VALUES€B€-F€QFÀ!F€yF€ƒ€F1-XD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ k)B€MB€äB€¿D€D€�SIMULATEB€éF€2D€B€çD€C€*€F€dB€èD€C�PICON-WAVE€‡À…F€ l„simulate f1 with 50 then 100*v1 + ìƒwave with central value 0 and ¬„deviation 2.0 and period 12 seconds,€B€ÁF€B€-FÀ–FÀWFÀ1FÀD€D€B€ÍD€B€ÎB€¿B€ÏF€ÂFÀ–FÀWFÀ1FÀD€D€B€ÖD€B€×B€ºB€-FÀ‹FÀQFÀZFÀDB€…D€B€ÖD€B€×B€ºB€-FÀ|FÀAFÀoFÀ4B€†D€B€ÖD€B€×B€ºB€-FÀ|FÀ1FÀ9FÀ$B€‡D€B€ÖD€B€×B€ºB€-FÀ|FÀ!FÀ}FÀB€ˆD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€wD€B€K†€ a)B€MB€äB€¿D€D€B€y�ERR1-OLD€ƒ€ERR1l„simulate err1-old with 0 then err1B€ÁF€B€-FÀ–FÀvFÀRFÀ`D€D€B€ÍD€B€ÎB€¿B€ÏF€ÂFÀ–FÀvFÀRFÀ`D€D€B€ÖD€B€×B€ºB€-FÀ‹FÀpFÀZFÀcB€¼D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€wD€B€K†€ g)B€MB€äB€¿D€D€B€yB€è‡À�D€ƒ€MAX€‡ÀD€ƒ€MIN€‡ÀƒD€B€çB€èD€B€{C€K1D€B€çD€C€-€B€ºB€¸D€C€/€D€B€{C�DELTA-TIMEB€ºƒ€TAU1¬…simulate v1 with .5 then max(0.0, min(1.0, €¬‡v1 + K1 * ((err1 - err1-old) + delta-time * err1 / tau1)))€B€ÁF€B€-FÀ–FÀ£F€žFÀ}D€D€B€ÍD€B€ÎB€¿B€ÏF€ÂFÀ–FÀ£F€žFÀ}D€D€B€ÖD€B€×B€ºB€-FÀ‹FÀ�FÀ FÀ�B€íD€B€ÖD€B€×B€ºB€-FÀ|FÀ�F€–FÀ€B€îD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€wD€B€K†€ g)B€MB€äB€¿D€D€B€yB€º€D€B€àB€éD€B€êB€éB€ël…simulate err1 with 0 then f1 - f1 setpointB€ÁF€B€-FÀ–FÀÃFÀ FÀ­D€D€B€ÍD€B€ÎB€¿B€ÏF€ÂFÀ–FÀÃFÀ FÀ­D€D€B€ÖD€B€×B€ºB€-FÀ‹FÀ½FÀFÀ°B€D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€wD€B€K†€ b)B€MB€äB€¿D€D€B€yB€å‡À‹@‡À‹@l„simulate tau1 with 20.0 then 20.0€B€ÁF€B€-FÀ–FÀâFÀ[FÀÌD€D€B€ÍD€B€ÎB€¿B€ÏF€ÂFÀ–FÀâFÀ[FÀÌD€D€B€ÖD€B€×B€ºB€-FÀ‹FÀÜFÀcFÀÏB€7D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€wD€B€K†€ o)B€MB€äB€¿D€D€B€yB€ß‡ÀnÛù‡Àr?5l„simulate k1 with -.001 then -.007€B€ÁF€B€-FÀ–FÀFÀ[FÀëD€D€B€ÍD€B€ÎB€¿B€ÏF€ÂFÀ–FÀFÀ[FÀëD€D€B€ÖD€B€×B€ºB€-FÀ‹FÀûFÀcFÀîB€XD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€wD€B€K†€ ")B€MD€B€NB€äB€¿D€D€B€yƒ€F1-4F€2D€B€êB€éB€ëì…simulate F1 setpoint with 50 then F1 setpoint€B€ÁF€B€-FÀ–FÀF€FÀD€D€B€ÍD€B€ÎB€¿B€ÏF€ÂFÀ–FÀF€FÀD€D€B€ÖD€B€×B€ºB€-FÀ‹FÀF€ FÀ B€{D€D€C‚CONTROL-CONNECTIONB€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀD€C�FLOW-PIPE€B€²B€²F€B€²Ã‚VALVE-INPUT-CONNECTIONFÀD€B€žB€²F€F€ƒVALVE-OUTPUT-CONNECTION€ƒƒTHRU-SENSOR-INPUT-CONNECTIONB€²D€B€žB€²F€B€²ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€²F€D€B€™B€²F€F€B€›‚CONTROLLER-INPUTB€²D€B€™B€²F€F€C‚CONTROLLER-OUTPUT€ƒVALVE-CONTROL-CONNECTIONB€²D€B€™B€²B€²F€B€²Ã�SETPOINT-INPUTFÀB€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 1682 :CREATION-DATE 2730382729 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-2" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢‰UF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-2ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 21€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ÈUB€MB€N„WARNING-MESSAGE-REPEAT-INTERVAL€F€<1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ plB€MB€NÃ�STATEMENT-TEXTD€D€�SIMULATEÀPORT-1€D€C€IFD€C€<€ƒ€TIMEF€dF€D€B€ÃD€B€ÄB€ÅF€ÈF€F€¬ƒsimulate PORT-1 with 0 then lƒif time < 100 then 1 else ¬ƒif time < 200 then 2 else 3€C‚STATEMENT-NUMBER?€F€B€-FÀwFÀF€�F€1D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€¿CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀwFÀF€�F€1D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ºB€-FÀlF€F€�F€B€ÐD€B€éD€B€êB€ºB€-FÀ]F€F€ŒF€B€ÑD€B€éD€B€êB€ºB€-FÀ]F€!F€•F€.B€ÒD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ qlB€MB€NB€¿D€D€B€ÃD€C€>€B€Á€D€D€ƒ€SENDD€ì‚PORT-1 is reading ~6F€B€ÁD€ƒ�DESTINATION€�OPERATORC�EVERY-TIME,ƒif PORT-1 > 0 then send ì„"PORT-1 is reading ***" with PORT-1 to¬‚operator every time€B€ÔF€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀ¯F€YF€ÈF€�D€D€B€àD€B€áB€¿B€âF€ÂFÀ¯F€YF€ÈF€�D€D€B€éD€B€êB€ºB€-FÀ¤F€_F€3F€lB€D€B€éD€B€êB€ºB€-FÀ•F€oF€ÀF€|B€D€B€éD€B€êB€ºB€-FÀ•F€F€F€ŒB€D€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-FÀFÀhF€FÀJB€ÁD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ xB€MB€NB€¿¬�Exercise #2€B€ÔF€B€-FÀEFÀòFÀÐFÀÜD€D€B€àD€B€áB€¿B€âF€ÂFÀEFÀòFÀÐFÀÜD€D€B€éD€B€êB€ºB€-FÀ:FÀìFÀØFÀßB€GD€D€C�FLOW-PIPE€B€²B€²F€B€²C‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀB€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 1700 :CREATION-DATE 2730382837 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-3" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢õUF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-3ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 31€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ wlB€MB€NÃ�STATEMENT-TEXTD€D€�SIMULATEC€F1B€°D€C�PICON-WAVEF€ÈF€2F€X,†simulate F1 with wave with central value 200 andl„deviation 50 and period 10 minutesC‚STATEMENT-NUMBER?€F€B€-FÀÕF€ F€íF€1D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€½CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÕF€ F€íF€1D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€¸B€-FÀÊF€F€åF€B€ÆD€B€ÞD€B€ßB€¸B€-FÀ»F€!F€vF€.B€ÇD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ xlB€MB€NB€½D€D€B€¾C€P1€D€ƒ€MAX€€D€C€*€Ç€ÿ™Yš™B€¿l…simulate P1 with 0 then max (0, .35 * F1)€B€ÉF€ B€-FÀÕFÀ F€®FÀ D€D€B€ÕD€B€ÖB€½B€×F€ÂFÀÕFÀ F€®FÀ D€D€B€ÞD€B€ßB€¸B€-FÀÊFÀF€¦FÀ B€úD€CƒGUAGE-PRESSURE-THRU-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-F€(FÀ©F€FFÀyB€ñD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€B€-FÀFFÀ©FÀ(FÀnB€¿D€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€°FÀ¼FÀ€FÀ�FÀXB€°D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ xB€MB€NB€½¬�Exercise #3€B€ÉF€B€-FÀEFÀòFÀÐFÀÜD€D€B€ÕD€B€ÖB€½B€×F€ÂFÀEFÀòFÀÐFÀÜD€D€B€ÞD€B€ßB€¸B€-FÀ:FÀìFÀØFÀßB€.D€D€C�FLOW-PIPE€B€°F€B€°ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€°F€D€C‚CONTROL-CONNECTIONB€°F€B€°ƒƒSENSOR-CONTROLLER-CONNECTIONB€°FÀD€B€KB€°F€F€B€MƒƒTHRU-SENSOR-INPUT-CONNECTIONB€°D€B€PB€°F€B€°B€RB€°FÀD€B€PB€°B€°F€B€°CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€KB€°B€°F€B€°Ã‚PUMP-INPUT-CONNECTION€FÀD€B€KB€°F€F€ÂPUMP-OUTPUT-CONNECTIONB€WB€°B€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 1800 :CREATION-DATE 2730382934 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-4" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢VVF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-4ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 41€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ ;B€MB€NÃ�STATEMENT-TEXTD€D€�SIMULATEC€L1B€°D€C�PICON-WAVEF€dF€2F€X,†simulate L1 with wave with central value 100 andl„deviation 50 and period 10 minutesC‚STATEMENT-NUMBER?€F€B€-FÀÃFÀF€ÿF€D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€½CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÃFÀF€ÿF€D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€¸B€-FÀ¸FÀF€÷FÀB€ÆD€B€ÞD€B€ßB€¸B€-FÀ©F€F€ˆF€B€ÇD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ ¥7B€MB€NB€½D€D€C€IFC�L1-IS-HIGHD€D€ƒ€SENDD€lƒL1 is reading high at ~6F€B€¿D€ƒ�DESTINATION€�OPERATORC�EVERY-TIME¬†if l1-is-high then send "L1 is reading high at ***" ìƒwith L1 to operator every timeB€ÉF€ƒPICON-RULE-SCAN-INTERVALF€CƒPICON-RULE-ALERT-INTERVAL€F€ B€-FÀÃFÀHF€#FÀ"D€D€B€ÕD€B€ÖB€½B€×F€ÂFÀÃFÀHF€#FÀ"D€D€B€ÞD€B€ßB€¸B€-FÀ¸FÀBF€FÀ5B€þD€B€ÞD€B€ßB€¸B€-FÀ©FÀ2F€dFÀ%B€ÿD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€C�DEFINITIOND€ B€K†€ ;B€MB€NB€½D€D€C€=€D€B€óC�CONDITION€D€C€>€B€¿F€d¬„let condition l1-is-high = L1 > 100€B€ÉF€ƒBACKTRACK-TO-GET-VALUE?€B€-B€-FÀÃFÀoF€ŠFÀYD€D€B€ÕD€B€ÖB€½B€×F€ÂFÀÃFÀoF€ŠFÀYD€D€B€ÞD€B€ßB€¸B€-FÀ¸FÀiF€‚FÀ\B€/D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-FÀFÀ«F€ FÀ�B€¿D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ xB€MB€NB€½¬�Exercise #4€B€ÉF€B€-FÀEFÀòFÀÐFÀÜD€D€B€ÕD€B€ÖB€½B€×F€ÂFÀEFÀòFÀÐFÀÜD€D€B€ÞD€B€ßB€¸B€-FÀ:FÀìFÀØFÀßB€YD€D€C�FLOW-PIPE€B€°B€°F€B€°C‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€°F€B€°ƒƒSENSOR-CONTROLLER-CONNECTIONB€°FÀB€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 3050 :CREATION-DATE 2730382989 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-5" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢ŽVF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-5ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 51€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ !´B€MB€NÃ�STATEMENT-TEXTl€3€C‚STATEMENT-NUMBER?€F€B€-FÀ1F€YFÀF€oD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€½CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ1F€YFÀF€oD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€¸B€-FÀ&F€_FÀF€lB€¾D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ "´B€MB€NB€½D€D€C€IFD€ƒ€AND€ƒ‚TANK-LEVEL-IS-RISINGD€C€>€C€L1F€5D€D€ƒ€SENDD€¬��There is a fluid balance problem. It appears �that the tank is filling up rather than �remaining constant.€D€ƒ�DESTINATION€�OPERATOR,†if tank-level-is-rising and L1 > 53 then send "€ì…There is a fluid balance problem. It appears €,…that the tank is filling up rather than ,„remaining constant." to operatorC‚STATEMENT-KEYWORDSƒ€TANKB€¿F€B€-FÀF€YF€ªF€ŸD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀF€YF€ªF€ŸD€D€B€ÔD€B€ÕB€¸B€-FÀF€_F€¢F€lB€óD€B€ÔD€B€ÕB€¸B€-FÀõF€oF€ŸF€|B€ôD€B€ÔD€B€ÕB€¸B€-FÀõF€F€rF€ŒB€õD€B€ÔD€B€ÕB€¸B€-FÀõF€�F€*F€œB€öD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ [;B€MB€NB€½l€2€B€¿F€B€-FÀ2F€FÀF€2D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀ2F€FÀF€2D€D€B€ÔD€B€ÕB€¸B€-FÀ'F€"FÀF€/B€(D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ [;B€MB€NB€½l€1€B€¿F€B€-FÀ3FÀ FÀF€ D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀ3FÀ FÀF€ D€D€B€ÔD€B€ÕB€¸B€-FÀ(FÀFÀ F€ B€ED€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€C�DEFINITIOND€ B€K†€ "´B€MB€NB€½D€D€C€=€D€B€äC�CONDITION€D€B€åB€æD€Ã�DELAYED-VALUE€B€æF€l…let condition tank-level-is-rising = L1 > ,ƒL1 as of 30 seconds ago€B€¿F€ƒBACKTRACK-TO-GET-VALUE?€B€-B€-FÀF€F€|F€CD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀF€F€|F€CD€D€B€ÔD€B€ÕB€¸B€-FÀF€#F€tF€0B€kD€B€ÔD€B€ÕB€¸B€-FÀöF€3FÀ(F€@B€lD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€àD€ B€K†€ K;B€MB€NB€½D€D€B€âD€B€åD€ƒ€ABS€D€C€-€C€F1C€F2F€D€D€ÀFOCUS€B€ù,…if abs (F1 - F2) > 4 then focus on TANK€B€¿F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀFÀ F€aF€ D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀFÀ F€aF€ D€D€B€ÔD€B€ÕB€¸B€-FÀFÀF€YF€ B€�D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-FÀ÷FÀŸFÀÙFÀdB€“D€B€¼D€B€½B€-F€ùFÀWF€FÀB€”D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€B€½B€-F€eFÀŸF€ƒFÀ�B€æD€ƒ�ACCUMULATOR€B€°FÀqFÀaF€%FÀ/B€ùD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ 3;B€MB€NB€½D€D€�SIMULATEB€“B€°D€C�PICON-WAVEF€‚F€ F€h,†simulate F1 with wave with central value 130 andl„deviation 12 and period 6 minutes€B€¿F€B€-FÀF€pF€£F€–D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀF€pF€£F€–D€D€B€ÔD€B€ÕB€¸B€-FÀF€vF€›F€ƒB€âD€B€ÔD€B€ÕB€¸B€-FÀF€†F€#F€“B€ãD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€ÙD€B€K†€ >;B€MB€NB€½D€D€B€ÛB€æF€2D€C€+€D€C€/€D€B€’B€“B€”F€B€æì…simulate L1 with 50 then (F1 - F2) / 3600 + L1B€¿F€B€-FÀ F€NF€�F€dD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀ F€NF€�F€dD€D€B€ÔD€B€ÕB€¸B€-FÀF€TF€ˆF€aB€D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€ÙD€B€K†€ 8;B€MB€NB€½D€D€B€ÛB€”B€°D€B€ÜF€nF€ F€h,†simulate F2 with wave with central value 110 andl„deviation 32 and period 6 minutes€B€¿F€B€-FÀ F€F€¢F€CD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀ F€F€¢F€CD€D€B€ÔD€B€ÕB€¸B€-FÀF€#F€šF€0B€2D€B€ÔD€B€ÕB€¸B€-FÀF€3F€"F€@B€3D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ xB€MB€NB€½¬�Exercise #5€B€¿F€B€-FÀFFÀóFÀÑFÀÝD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀFFÀóFÀÑFÀÝD€D€B€ÔD€B€ÕB€¸B€-FÀ;FÀíFÀÙFÀàB€WD€D€C�FLOW-PIPE€B€°F€F€ ÃTHRU-SENSOR-OUTPUT-CONNECTION€Ã‚ACCUMULATOR-MAIN-INPUTB€°D€B€tB€°B€°F€B€°ƒƒTHRU-SENSOR-INPUT-CONNECTIONFÀD€C‚CONTROL-CONNECTIONB€°F€B€°ƒƒSENSOR-CONTROLLER-CONNECTIONB€°FÀD€B€tB€°F€B€°B€wB€°F€D€B€~B€°F€B€°B€€B€°FÀD€B€tB€°F€ F€ƒACCUMULATOR-MAIN-OUTPUT€B€{B€°D€B€~B€°F€B€°B€€B€°FÀD€B€~B€°F€ F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€B€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2705 :CREATION-DATE 2730383178 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-6" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢JWF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ "x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ "xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€#C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-6ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 61€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ b;B€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ‚LEVEL-IS-INCREASING€C�CONDITION€ƒ€NIL€¬…let level-is-increasing be a named conditionC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ e;B€MB€NB€°l€2€B€¹F€ B€-FÀ1FÀFÀF€D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ1FÀFÀF€D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÊB€-FÀ&FÀFÀF€B€ÏD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ d;B€MB€NB€°D€D€C€IFB€²D€D€ƒ€SENDD€,†The tank level is now increasing - Check limits�D€ƒ�DESTINATION€�OPERATOR,„if level-is-increasing then send,†"The tank level is now increasing - Check limitsì�" to operator€B€¹F€B€-FÀFÀF€ÁF€'D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀFÀF€ÁF€'D€D€B€äD€B€åB€ÊB€-FÀFÀ F€F€B€üD€B€äD€B€åB€ÊB€-FÀöF€F€¹F€B€ýD€B€äD€B€åB€ÊB€-FÀöF€FÀ‚F€$B€þD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ðD€ B€K†€ c;B€MB€NB€°D€D€B€òD€C€>€C€F1C€F2D€D€�CONCLUDEB€²¬…if F1 > F2 then conclude level-is-increasingB€¹F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀFÀ5F€ŽFÀD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀFÀ5F€ŽFÀD€D€B€äD€B€åB€ÊB€-FÀFÀ/F€†FÀ"B€0D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ e;B€MB€NB€°l€1€B€¹F€B€-FÀ1FÀ6FÀFÀ D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀ1FÀ6FÀFÀ D€D€B€äD€B€åB€ÊB€-FÀ&FÀ0FÀFÀ#B€PD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€ëFÀ~F€ FÀCB€*D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€B€mB€-F€ŽFÀÅF€¬FÀ§C€L1D€B€lD€B€mB€-FÀœFÀÑFÀ~FÀ–B€)D€ƒ�ACCUMULATOR€B€µFÀNFÀˆF€HFÀVƒ€TANKD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ y;B€MB€NB€°D€D€�SIMULATEB€)B€µD€C�PICON-WAVEF€sF€ F€h€€F€h,†simulate F1 with wave with central value 115 and,†deviation 12 and period 6 minutes and phase 360€B€¹F€B€-FÀF€pF€©F€–D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀF€pF€©F€–D€D€B€äD€B€åB€ÊB€-FÀF€vF€›F€ƒB€—D€B€äD€B€åB€ÊB€-FÀF€†F€¡F€“B€˜D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€‹D€B€K†€ >;B€MB€NB€°D€D€B€�B€|F€2D€C€+€D€C€/€D€C€-€B€)B€*F€B€|ì…simulate L1 with 50 then (F1 - F2) / 3600 + L1B€¹F€B€-FÀ F€NF€�F€dD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀ F€NF€�F€dD€D€B€äD€B€åB€ÊB€-FÀF€TF€ˆF€aB€ÅD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€‹D€B€K†€ y;B€MB€NB€°D€D€B€�B€*B€µD€B€ŽF€nF€F€h,†simulate F2 with wave with central value 110 andl„deviation 22 and period 6 minutes€B€¹F€B€-FÀ F€F€¢F€CD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀ F€F€¢F€CD€D€B€äD€B€åB€ÊB€-FÀF€#F€šF€0B€èD€B€äD€B€åB€ÊB€-FÀF€3F€"F€@B€éD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ !xB€MB€NB€°¬�Exercise #6€B€¹F€B€-FÀFFÀóFÀÑFÀÝD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀFFÀóFÀÑFÀÝD€D€B€äD€B€åB€ÊB€-FÀ;FÀíFÀÙFÀàB€ D€D€C�FLOW-PIPE€B€µF€B€µÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€µF€D€C‚CONTROL-CONNECTIONB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€/B€µF€B€µB€1B€µFÀD€B€*B€µB€µF€B€µƒƒTHRU-SENSOR-INPUT-CONNECTIONFÀD€B€*B€µF€F€B€,ÂACCUMULATOR-MAIN-INPUTB€µD€B€/B€µF€B€µB€1B€µFÀD€B€*B€µF€F€ƒACCUMULATOR-MAIN-OUTPUT€B€8B€µD€B€/B€µF€F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€B€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 1837 :CREATION-DATE 2730383264 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-7" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢¡WF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ #x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ #xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€%C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-7ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 71€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ b;B€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ‚LEVEL-IS-INCREASING€C�CONDITION€ƒ€NIL€¬…let level-is-increasing be a named conditionC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€Ã�WHENEVER-RULE€D€ B€K†€ �;B€MB€NB€°D€D€�WHENEVER�PRESSURED€F€ ƒ€PSIGD€D€ƒ€SENDD€l‚Pressure Increase€D€ƒ�DESTINATION€�OPERATORD€D€B€ÔD€l‚Pressure Decrease€D€B€×B€Øì„whenever PRESSURE varies by 10 psig: €¬…if increase then send "Pressure Increase" to¬� operator; ¬…if decrease then send "Pressure Decrease" tol� operatorB€¹F€$ƒPICON-RULE-SCAN-INTERVALF€B€-FÀ®F€5F€ÿF€‹D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ®F€5F€ÿF€‹D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÊB€-FÀ£F€;F€©F€HB€âD€B€þD€B€ÿB€ÊB€-FÀ”F€KF€÷F€XB€ãD€B€þD€B€ÿB€ÊB€-FÀ”F€[FÀ)F€hB€äD€B€þD€B€ÿB€ÊB€-FÀ”F€kF€÷F€xB€åD€B€þD€B€ÿB€ÊB€-FÀ”F€{FÀ;F€ˆB€æD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ ”;B€MB€NB€°D€D€�SIMULATEB€ÐB€µD€C�PICON-WAVEF€èF€dF€Xì…simulate PRESSURE with wave with central value¬…1000 and deviation 100 and period 10 minutesB€¹F€#B€-FÀ°FÀ"F€F€D€D€B€õD€B€öB€°B€÷F€ÂFÀ°FÀ"F€F€D€D€B€þD€B€ÿB€ÊB€-FÀ¥FÀF€øFÀB€+D€B€þD€B€ÿB€ÊB€-FÀ–FÀ F€õF€B€,D€CƒGUAGE-PRESSURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-CURRENCY-INTERVALF€ F€ FÀƒF€'FÀeB€ÐD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ #xB€MB€NB€°¬�Exercise #7€B€¹F€B€-FÀFFÀóFÀÑFÀÝD€D€B€õD€B€öB€°B€÷F€ÂFÀFFÀóFÀÑFÀÝD€D€B€þD€B€ÿB€ÊB€-FÀ;FÀíFÀÙFÀàB€[D€D€C�FLOW-PIPE€B€µB€µF€B€µC‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2591 :CREATION-DATE 2730383388 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-8" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢XF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ %x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ %xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-8ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 81€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ?B€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ ”.B€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€C�START-TIME�NUMERIC€ƒ€NIL€¬„let start-time be a numeric variableC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€µ…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ ”.B€MB€NB€°D€D€C€IFD€ƒ€AND€D€C€>€ƒ�ELAPSED-TIMEF€rD€C€<€B€ÔF€®D€D€ƒ€SENDD€,…Run time was: ~6F, which started at ~6F€B€ÔB€²D€ƒ�DESTINATION€�OPERATORl†if elapsed-time > 370 and elapsed-time < 430 then€,†send "Run time was: ***, which started at ***" €l…with elapsed-time, start-time to operator€ƒ‚STATEMENT-CATEGORIES�RUN-STOPB€¹F€B€-FÀÑF€(F€úF€^D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÑF€(F€úF€^D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÌB€-FÀÆF€.F€òF€;B€äD€B€þD€B€ÿB€ÌB€-FÀ·F€>F€ïF€KB€åD€B€þD€B€ÿB€ÌB€-FÀ·F€NF€¹F€[B€æD€B€ÉD€B€ÊB€ÌB€-B€ÍD€B€ÎD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ w.B€MB€NB€°D€D€�SIMULATEÀCLOCK€B€µƒ€TIME,ƒsimulate CLOCK with timeB€¹F€ B€-FÀÑF€ÕF€F€ëD€D€B€õD€B€öB€°B€÷F€ÂFÀÑF€ÕF€F€ëD€D€B€þD€B€ÿB€ÌB€-FÀÆF€ÛF€F€èB€D€B€ÉD€B€ÊB€ÌB€-B€ÍD€B€ÎD€B€ID€B€JD€B€ÏD€ B€K†€ w.B€MB€NB€°D€D€B€ÑD€B€ÓB€€B€µ¬ƒif CLOCK > 0 then do nothingB€¹F€ ƒPICON-RULE-SCAN-INTERVALF€B€-FÀÑF€³F€=F€ÉD€D€B€õD€B€öB€°B€÷F€ÂFÀÑF€³F€=F€ÉD€D€B€þD€B€ÿB€ÌB€-FÀÆF€¹F€5F€ÆB€=D€C…NAPH-CHROMATOGRAPH-ANALYTICAL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ƒSENSOR-TRACING-REQUESTS€B€-F€øFÀ·F€FÀ™B€D€B€ÉD€B€ÊB€ÌB€-B€ÍD€B€ÎD€B€ID€B€JD€B€®D€ B€K†€ •.B€MB€NB€°D€D€B€±B€ÔB€µì„let elapsed-time be a numeric variableB€¹F€ B€»B€µB€¼B€½B€-FÀÓFÀªF€•FÀ”D€D€B€õD€B€öB€°B€÷F€ÂFÀÓFÀªF€•FÀ”D€D€B€þD€B€ÿB€ÌB€-FÀÈFÀ¤F€�FÀ—B€hD€B€ÉD€B€ÊB€ÌB€-B€ÍD€B€ÎD€B€ID€B€JD€B€ÏD€ B€K†€ ”.B€MB€NB€°D€D€B€ÑD€B€×B€ÔF€�D€D€C�INCREMENT€B€ÔF€ D€�ACTIVATED€B€±�CATEGORYB€é¬ƒif elapsed-time < 400 then €,„increment elapsed-time by 10 and,ƒactivate run-stop rules€B€è�COUNTER€B€¹F€CƒPICON-RULE-ALERT-INTERVAL€F€ B€-FÀÒFÀF€oF€D€D€B€õD€B€öB€°B€÷F€ÂFÀÒFÀF€oF€D€D€B€þD€B€ÿB€ÌB€-FÀÇFÀF€+FÀ B€‘D€B€þD€B€ÿB€ÌB€-FÀ¸FÀF€gF€B€’D€B€þD€B€ÿB€ÌB€-FÀ¸F€F€F€B€“D€B€ÉD€B€ÊB€ÌB€-B€ÍD€B€ÎD€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ •.B€MB€NB€°D€D€C�INITIALLY€D€D€B€ÛD€¬‚Running Excercise 8€D€B€ÞB€ßD€ƒ€SET€B€²B€D€B€‹D€B€±B€ŒB€•l�initially l…send "Running Excercise 8" to operator andlƒset start-time = time and ì‚activate counter rulesB€¹F€B€-FÀÒFÀƒF€ÉFÀ=D€D€B€õD€B€öB€°B€÷F€ÂFÀÒFÀƒF€ÉFÀ=D€D€B€þD€B€ÿB€ÌB€-FÀÇFÀ}FÀnFÀpB€ÌD€B€þD€B€ÿB€ÌB€-FÀ¸FÀmF€ÁFÀ`B€ÍD€B€þD€B€ÿB€ÌB€-FÀ¸FÀ]F€1FÀPB€ÎD€B€þD€B€ÿB€ÌB€-FÀ¸FÀMF€ FÀ@B€ÏD€B€ÉD€B€ÊB€ÌB€-B€ÍD€B€ÎD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ %xB€MB€NB€°¬�Exercise #8€B€¹F€B€-FÀGFÀñFÀÒFÀÛD€D€B€õD€B€öB€°B€÷F€ÂFÀGFÀñFÀÒFÀÛD€D€B€þD€B€ÿB€ÌB€-FÀ<FÀëFÀÚFÀÞB€D€D€C�FLOW-PIPE€B€µB€µF€B€µC‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 1902 :CREATION-DATE 2730389052 :DIRECTORY "PICON-CLASS" :NAME "EXERCISE-9" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€¾¢>nF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ „x1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ „xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-9ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 91€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ?B€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ Å;B€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ�INITIAL-TIME�NUMERIC€ƒ€NIL€ì„let initial-time be a numeric variableC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€µ…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ ?B€MB€NB€°D€D€�SIMULATEC€T1B€µD€C�PICON-WAVEF€ÈF€F€X,†simulate T1 with wave with central value 200 andl„deviation 20 and period 10 minutesB€¹F€B€-FÀÜF€F€æF€,D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÜF€F€æF€,D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÌB€-FÀÑF€ F€ÞF€B€ÙD€B€ðD€B€ñB€ÌB€-FÀÂF€F€oF€)B€ÚD€B€ÉD€B€ÊB€ÌB€-B€ÍD€B€ÎD€B€ID€B€JD€C‚UNCONDITIONAL-RULED€ B€K†€ )IB€MB€NB€°D€D€C€IFƒ€TRUED€D€ƒ€SENDD€ìƒT1 = ~6F at time: ~6F minutes€B€ÒD€C€/€D€C€-€ƒ€TIMEB€²F€<D€ƒ�DESTINATION€ƒ€LOG€C�EVERY-TIMEì…send "T1 = *** at time: *** minutes" with T1, ì…( time - initial-time) / 60 to log every time€B€¹F€ƒPICON-RULE-SCAN-INTERVALF€<B€-FÀÓFÀ7F€ãFÀD€D€B€çD€B€èB€°B€éF€ÂFÀÓFÀ7F€ãFÀD€D€B€ðD€B€ñB€ÌB€-FÀÈFÀ1F€ÕFÀ$B€D€B€ðD€B€ñB€ÌB€-FÀ¹FÀ!F€ÛFÀB€D€B€ÉD€B€ÊB€ÌB€-B€ÍD€B€ÎD€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ Ä;B€MB€NB€°D€D€C�INITIALLY€D€D€ƒ€SET€B€²B€ l„initially set initial-time = time€B€¹F€B€-FÀ™FÀ^F€¢FÀHD€D€B€çD€B€èB€°B€éF€ÂFÀ™FÀ^F€¢FÀHD€D€B€ðD€B€ñB€ÌB€-FÀŽFÀXF€šFÀKB€CD€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-CURRENCY-INTERVALF€FÀFÀœF€FÀ~B€ÒD€B€ÉD€B€ÊB€ÌB€-B€ÍD€B€ÎD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ ƒxB€MB€NB€°¬�Exercise #9€B€¹F€B€-FÀEFÀòFÀÐFÀÜD€D€B€çD€B€èB€°B€éF€ÂFÀEFÀòFÀÐFÀÜD€D€B€ðD€B€ñB€ÌB€-FÀ:FÀìFÀØFÀßB€lD€D€C�FLOW-PIPE€B€µB€µF€B€µC‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 16824 :CREATION-DATE 2730905810 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LAB-SESSION-1" :TYPE "TEXT" :VERSION 20) -*- Mode:Text; Fonts:(CPTFONTB) -*-��Œ‰����‰‰PICON Lab Session # 1�‰‰---------------------��� PURPOSE� -------�� The purpose of this first lab session is to familiarize the� student with the Lisp Machine environment enough to utilize� PICON. The PICON course teaches enough about the Lambda and� the Lisp Machine environment to sufficiently use PICON yet� due to the extremely rich programming environment, it is not � possible to cover all its capabilities. ��� Before starting, however, it is necessary to understand� some unique things about the Lisp environment:��‰- When typing LISP statements, such as (print-herald),� notice that there is no need to enter a key. � In Lisp, a balancing right parenthesis closes the �‰ expression and passes it to Lisp for evaluation.��‰- In other places on the Lisp machine, however it IS �‰ necessary to enter a key, such as the editor. �‰ In cases where entering the key are necessary� they will be clearly noted. ��‰- While using the Lisp machine, many commands are �‰ entered using lisp commands like: (hostat), which will� display a listing of the network status, or by using� function keys. When function keys are necessary, they� will be designated by a preceeding "<" (less than) and� a trailing ">" (greater than). Between the <> will be� the keyboard key to press. So, to view the network� status using a function key try:��‰‰ H��‰ Notice the message after the network status report:��‰‰Type a space to flush��‰ By typing a the exposed window will be removed� and the topmost window will then be exposed.��‰- Many other commands are available on a Lisp Machine�‰ are accessed by "control" keys. These are described�‰ as follows:��‰‰CTRL-A is the notation for holding�‰‰‰‰down the CTRL key while�‰‰‰‰also typing an "A".��‰‰META-B is the notation for holding�‰‰‰‰down the META key while�‰‰‰‰also typing a "B".��‰‰CTRL-SHIFT-C is the notation for holding�‰‰‰‰down both the CTRL and�‰‰‰‰SHIFT keys while typing�‰‰‰‰a "C" .��‰‰META-CTRL-�‰‰‰‰is the notation for�‰‰‰‰holding down the CTRL�‰‰‰‰and META keys while typing�‰‰‰‰an key.��� On Lisp machines, the most recently used application is simply� left exposed on the screen. The screen now exposed was the last� used. The active screen is also indicated by a blinking cursor.���Œ� Lab session 1 instructions:� ---------------------------�� 1) Select the Lisp Listener window:� --------------------------------�‰�‰Type: L��‰It is readily apparent when you are in a Lisp Listener�‰window because you will see "Lisp Listener 1", or possibly� some other number, in the lower left corner of the screen.���� 2) Login to the Lambda:� --------------------��‰ (login "your-initials" t) �� - For example (login "joe" t)��‰Notice that you do not need to type a carriage return.�‰As mentioned before, the right parenthesis will close � the expression and pass it to lisp for evaluation.��‰The login function puts your initials in the status line,� at the very bottom of the screen, and will use your � initials whenever an update is performed. ��‰When you see a "T" appear, this indicates that your login�‰attempt was successful.��� 3) Type: (print-herald)� -------------------------------------��‰This will show you some general information about the�‰system you are working with. Notice that the key labeled� is a key, not letters to be typed. The key�‰is found on the top row of keys in the middle.���� 4) Type: (print-disk-label)� --------------------------��‰This will show a layout of the sections of the hard disk.�‰Each line of this display represents a "partition" or�‰"band" of the disk. "Band" is the more commonly used�‰terminology at LMI. Locate the bands beginning with the�‰letters LOD. These bands are used to store an executable�‰binary system which, once copied into memory, will be�‰the running system. Locate the LOD band prefixed by a *.�‰At the very end of this line is a description of the�‰band. The * indicates which band is currently selected.�‰So, the software you are running should correspond to�‰the description on this line.��‰You should be already set to LOD3, containing PICON�‰software. This is the band we will be using this week.�‰You don't need to do anything to the environment by way�‰of changing bands unless you are not on LOD3. If you are�‰not, please notify a lab instructor.��‰Other bands:� �‰ PAGE,1 - is used for virtual paging. �‰ LMC1,2 - is used to store microcode software. �‰ FILE,1 - is the area of disk used to store files.���� 5) Type: � -----------------------��‰A table will appear showing all of the systems available�‰in this version of the software. The list should look�‰like:�‰‰1 PICON Window�‰‰C Converse�‰‰E Editor�‰ F Font Edit��‰‰and so on.....��‰Each item on this list is a system. Each system has its�‰own window. So, by selecting a system, a new window will�‰appear allowing access to that system. For example, try�‰typing:�‰‰‰ 1 (type the key then�‰‰‰‰‰ type a 1 key.)��‰This will select the PICON system since PICON is bound�‰to the 1 key combination. Access to PICON is�‰now available. Try going into the editor by typing:��‰ E��‰(Depending on how the editor was last exited by the�‰ person just using this machine, if any, will effect�‰ how the window looks. It will probably be blank.)�‰We will furthur discuss the editor later this week. ��‰Return to Lisp by typing:��‰‰ L.�‰��� 6) Hardcopy capability.� --------------------��‰There are several ways to get hardcopy on the Lisp Machine�‰depending on the type of output you desire. There are�‰basically two kinds:��‰Text file printouts:��‰‰To obtain a file printout assuming it is�‰‰printable, type from lisp:�‰�‰‰ (hardcopy-file "picon:picon;picon-system.lisp")�‰�‰Screen dumps:��‰‰To obtain a screen dump, select the screen you�‰‰wish to dump then print it:��‰‰ 1 (To select the PICON window)�‰‰ Q (To send the screen to the�‰‰‰‰ printer. The screen will �‰‰‰‰ flash and beep to indicate�‰‰‰‰ spooling and printing is�‰‰‰‰ occuring.)��‰NOTE: Q is a generalized screen dumping facility�‰ which will print the entire window as it appears on�‰ the screen. There is currently no way to print only�‰ a portion of the PICON window. ��‰Your printouts are printed in the machine room, and will�‰be given to you by a lab instructor after they have printed.�‰�Œ�� 7) Getting to Lisp:� ----------------��‰Many times there is much confusion about how to get into�‰lisp on the Lisp Machine. Basically lisp is everywhere to�‰be found. Each system is built literally on top of lisp�‰so that at every level in the system you always have�‰access to lisp. The FIGURE 1 illustrates the Lisp�‰Machine environment:����‰‰‰FIGURE 1�‰‰‰--------���Œ����� 7) Getting to Lisp (continued):� ----------------------------��‰Of course by going to the Lisp Listener Window - L�‰you can get to lisp. Even while in PICON, lisp is available�‰as this diagram shows. To illustrate this, type:��‰‰ 1 (gets you into PICON)��‰‰ (type the key - third from�‰‰‰‰the right on top row.)��‰You are now in lisp. Type:��‰‰(print-disk-label)��‰To return to your application, type:��‰‰ (type the key - second from�‰‰‰‰the right on top row.)��‰The key will also return you to the top level system�‰if you should find yourself stuck in lisp, unless you are�‰in the Lisp Listener, of course. ���‰Return to the Lisp Listener Window by:��‰‰Typing: L���� 8) Special terminal keys:� ----------------------��‰The key has some uses which will be useful to you�‰during the week.��‰- Type: C ��‰ As you can see this reverses the bit complement of the�‰ screen. If this is undesirable, do it again, to toggle�‰ it off.��‰- Type: 0 M‰(by typing the three keys�‰‰‰‰ one after another.)��‰ Next, type: (listf "picon:picon;")��‰ This command lists the directory PICON on the local�‰ machine. Notice that the printing on the display "wraps"�‰ without any pausing for confirmation. ��‰ The sequence just entered, 0 M, disables�‰ "more" processing, or in other words, prevents pausing�‰ at the bottom of the screen. To enable "more" processing:��‰ Type: 1 M��‰ Type: CTRL-C (The CTRL key held down�‰‰‰‰ while typing a "C".)��‰ Typing a CTRL-C in lisp has the effect of presenting�‰ the last command typed into lisp back to the user. In this�‰ case it is the "listf" command. This gives you the�‰ opportunity to either edit the command or have it evaluated�‰ again. Since we have not discussed how to do editing on the�‰ Lisp Machine yet, we'll defer this, but we can re-use the�‰ same command. To do this just type:��‰‰‰‰ (To the right of the key)���‰ Notice that now, as the directory list processes, at the�‰ end of the page, there is the message **MORE**. To proceed,�‰ type a . ��‰- To see the other key variations, type:��‰‰ ��‰ This is comprehensive list represents all of the variations�‰ of the key. ���� 9) Getting Help.� -------------��‰Depending on where you are in a particular system there may�‰be help available. The key is generally a good choice�‰for determining if help is available at all in a particular�‰system.��‰- Help in Lisp.��‰ Type: (This gives a list of the kinds of�‰‰‰‰ help that are available).��‰ Type: CTRL- (This shows another kind of�‰‰‰‰ help for certain keys.)��‰ You've already seen and help.���‰� 10) File naming conventions:� ------------------------��‰File names on a Lisp Machine are constructed as follows:��‰- The logial machine where the file resides followed by�‰ a colon. Eg.��‰‰lm: or duke:�� - The directory where the file is located on a particular�‰ logical machine followed by a semi-colon. Eg.��‰‰picon; or fred;��‰- The file name followed by a period. Eg.��‰‰picon-system. or lisp-hacks.�� - a file extension to furthur describe the file. Eg.��‰‰lisp or pic or text��‰When these parts of the filename are put together, they are� called a pathname. Examples of correct pathnames are:��‰‰lm:picon;picon-system.lisp��‰‰duke:fred;homework.text��‰‰lm:picon-kb-files;chemical-plant.pic��‰File extensions:��‰- Files having an extension of "lisp" are considered lisp�‰ source files containing lisp source code.�� - Files having an extension of "text" are considered to�‰ be purely text files containing no code. An example of�‰ a text file is this lab-exercise-1.��‰- Files having an extension of "pic" are considered to�‰ be PICON knowledge base files. These are non-printable�‰ and non-readable except by PICON software. PICON has�‰ printing facilities for viewing the KB in hardcopy.��‰- Files having an extension of "pri" are considered to�‰ be a printable version of a PICON knowledge base. These�‰ are generated by PICON. ��‰This week during class, you will be using 2X2 PLUS machines.�‰This (2 by 2 PLUS) means that there are two users per�‰machine. Each two users have the same disk and file system.�‰This makes it important that when creating files that you�‰preface your files with your name of initials to make it�‰unique.��‰You should always use the pathname:��‰‰picon:picon;��‰during this week as this is where your files will be stored.���� 11) Using the Editor.� -----------------��‰Type: E (This puts you into the�‰‰‰ ZMACS editor)��‰The ZMACS editor is an extremely rich and comprehensive�‰editing facility and is too complex to discuss completely.�‰We will make some attempt at learning a few capabilities�‰which we need for this week. ��‰Managing directories:��‰ Type: META-X��‰ A "mini" buffer at the bottom of the screen will�‰ appear. The mini buffer will accept a command.���‰ Type: dired (This will do a DIRectory EDit)��‰ The dired will prompt you for a directory to edit.���‰ Type: picon:picon; ���‰ After a few seconds, the editor window will fill up with�‰ a list of files which looks like:��� DUKE: PICON; *.*#*� Free=24069, Reserved=4904, Used=46027 (1478 pages used in PICON;)� AI-BASE.QFASL #1 12 6144(16) ! 03/14/86 19:02:47 � AI-BASE-GRAMMAR.LISP #1 21 21192(8)! 03/14/86 15:19:13 � AI-BASE-GRAMMAR.QFASL #1 12 6144(16)! 03/14/86 19:29:25 � AI-BASE-SYSTEM.LISP #1 2 1895(8)! 03/12/86 09:57:15 � AI-DBMS.QFASL #1 12 6144(16) ! 03/12/86 12:17:00 � AI-FRAMES.QFASL #1 28 14336(16)! 02/28/86 14:59:01 � AI-PARSE.QFASL #1 60 30720(16) ! 02/03/86 19:15:35 � AI-SYSTEMS-SYSTEM.LISP #1 2 1745(8)! 01/29/86 19:23:35 � AI-UTILITY.QFASL #1 44 22528(16)! 03/19/86 23:05:55 � AI-WINDOW.QFASL #1 100 51200(16)! 03/12/86 13:33:32 � BLOCK.QFASL #1 40 20480(16) ! 03/14/86 19:05:39 � CAPTURE.QFASL #1 56 28672(16) ! 03/14/86 19:24:11 � CLASS-DEMO.PIC #1 7 3173(16) ! 03/13/86 19:40:55 � CLASS-DEMO.PIC #2 7 3328(16) ! 03/12/86 12:52:44 � CLASS-DEMO.PIC #3 8 3766(16) ! 03/12/86 23:00:24 � CLASS-DEMO.PRI #1 8 8143(8) ! 03/12/86 23:01:04 � � (Abbreviated for brevity)...�� �‰The dired command has some very powerfull functionality�‰yet we will only be examining a small portion of its�‰capabilities. On each line of the dired display there is�‰a particular file with information describing it. ��‰To operate on a particular file, move the mouse arrow�‰to the file you wish to use. For this exercise move�‰mouse to COPYRIGHT.TEXT��‰ - CLICK Right with the mouse.��‰ - A menu will appear showing several options.��‰ - CLICK Left with mouse on "View File".��‰ - The file COPYRIGHT.TEXT will be displayed in a�‰ window for "View Only".��‰ - By typing or the view screen will�‰ be removed.��‰ - Now CLICK Right with the mouse on COPYRIGHT.TEXT�‰ again.��‰ - This time select "Edit File" by CLICKing Left.��‰ - When the file COPYRIGHT.TEXT appears this time�‰ it's in an editor buffer where modifications�‰ may be made to it. But Please Don't.��‰ - To get rid of this editor buffer, type CTRL-X �‰ then K. Then type a . You will then be �‰ prompted to confirm deleting this buffer. Type�‰ again. The buffer will then be removed.�‰ This does not affect the file in any way.��� 12) Peek Program.� -------------��‰Select the Peek program by typing:��‰‰ P��‰This will display a screen with options at the top and a�‰list of helpful text. Respond to the message: ��‰‰"Type any character to flush"��‰ by typing any character.��‰Peek gives different options for viewing internal system�‰activity.��‰ - Type a "P" or select "Active Processes" by�‰ clicking LEFT with the mouse.��‰ This displays a list of all the active processes�‰ within the Lisp Machine.��‰ - Type an "H" or select "Hostat" by clicking LEFT�‰ with the mouse.��‰ This displays a status of all the Lisp Machines on�‰ the LMI Network.��‰ - Other options include:��‰‰Statistics��‰‰Devices��‰‰Memory Areas��‰‰Window Hierarchy��‰‰File Servers��‰‰Chaosnet��‰‰File System Status��� 13) Return to Top Level Lisp Listener by typing L.���� What you should have learned in this exercise:� -----------------------------------------------�� - How to recognize special keyboard commands, in particular, the�‰use of various keys.�‰� - How to login. �� - How to view the system herald.�� - How to view the disk label.�� - How to see which systems are available for use by looking at�‰system help.�� - How to move between systems such as Lisp and PICON.�� - How to get into lisp from anywhere in the Lisp Machine �‰environment.�� - How to use the key.�� - How to get various kinds of help.�� - How to recognize and construct pathnames in the file system.�� - How to use the dired program in the editor.�� - How to use the Peek program. LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 18352 :CREATION-DATE 2730905454 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LAB-SESSION-2" :TYPE "TEXT" :VERSION 17) -*- Mode:Text; Fonts:(CPTFONTB) -*-��Œ����‰‰PICON Lab Session # 2�‰‰---------------------��� PURPOSE� -------�� The purpose of this second lab session is to familiarize the� student with the introductory use of PICON including:��‰- Overview of PICON window and its contents�‰�‰- Creation of simple schematics��‰- Use of some of the system facilities��� Mouse and Keyboard Commands:� ----------------------------��‰Because PICON makes heavy use of the mouse in the user�‰interface the mouse commands are given a notation to�‰easily distinguish them. The following table shows the�‰notation that the course exercises will use with the�‰corresponding meaning to the symbol.���‰[L] - Single LEFT Click� [M] - Single MIDDLE Click�‰[R] - Single RIGHT Click�‰[L2] - Double LEFT Click�‰[M2] - Double MIDDLE Click�‰[R2] - Double RIGHT Click���‰� . NOTE: when performing double clicks they must come quickly� ‰ together. Done too slowly, will result in two individual� single clicks.�� . If you have difficulty with the double clicks, you may�‰ alternativly use the Roman numeral keys located in the upper�‰ left part of the keyboard. In PICON the Roman Numeral keys�‰ have special significance:��‰ - Single LEFT Click�‰ - Double LEFT Click�‰ - Single MIDDLE Click�‰ - Single RIGHT Click��� Other Special keys:� -------------------�� A) Scrolling Capability:��‰There are other special keys on the keyboard which have special �‰significance in PICON. ��‰ - thumb-up‰‰- Scroll up.��‰ - thumb-down‰‰- Scroll down.��‰ - finger-left‰‰- Scroll left.��‰ - finger-right‰- Scroll right.���‰which are found on the very right side of the keyboard are�‰used by PICON to cause scrolling to occur on the window in�‰which the mouse arrow is positioned, provided that window�‰allows scrolling.�� B) Scaling Capability:��‰ - CTRL-S - Smaller, incrementally.�‰�‰ - CTRL-B - Bigger, incrementally.��‰ - CTRL-F - Full scale, not incremental.��‰ - CTRL-Q - Quarter scale, not incremental.��‰ - CTRL-Y - 1/8 current size.��‰ - CTRL-Z - 8 times current size.��‰ - CTRL-N - Narrower, incrementally.��‰ - CTRL-W - Wider, incrementally.��‰ - CTRL-R - Shorter or reduced, incrementally.��‰ - CTRL-T - Taller, incrementally.�‰ �‰ - CTRL-O - Centers the schematic in selected window (where cursor is)�‰�‰ - CTRL-E - Expands the background are of selected window.�� (Refer to to Appendix A, Quick Reference Guide in the PICON User's�‰ Guide for more detail on these functions.���� Lab Session 2 Script:� ---------------------�� 1) Select the PICON system:� ------------------------��‰Type: 1���� 2) Identify PICON Window Panes:� ----------------------------�� You should now see the PICON window exposed. Take a moment� to locate the following areas on the screen:��‰- Interaction-pane: the largest window on the screen.�� - Overview-pane: the horizontally oriented pane on the�‰‰lower portion of the screen.��‰- Command-pane: the window having the mouse-sensitive�‰‰command options.��‰- Title-pane: contains the title for the application and�‰‰is located in the top right corner.��‰- Subcommand-pane: located in lower right corner,�‰‰containing editing commands during rule creation.���� 3) Create a simple schematic diagram:� ----------------------------------��‰If the screen you are working on already has a�‰schematic loaded, you will need to clear it before�‰starting these exercises. To clear the schematic�‰and start with a new one, follow these instructions:��‰‰- [L] on "Load".��‰‰- Type: dummy into the window where you�‰‰‰ see a flashing cursor.��‰‰- Type: key.��‰�‰Build a schematic diagram containing an accumulator,�‰2 flow sensors, input pump, tank level sensor, and�‰a surge-tank. Follow the sequence below to create�‰this diagram. When finished, it should look like �‰FIGURE 1 on page 7.�� Add the accumulator:��‰‰- [L] on "Add Icon".��‰‰- [L] on "Accumulator".��‰‰- The icon should now be attached to the mouse.�‰‰ You should move the icon to the middle of the�‰‰ Interaction-pane and place the icon on the�‰‰ schematic by [L]. Refer to FIGURE 1 placing�‰‰ the accumulator next to marker #3.��‰ - If you find that the placement was not correct,�‰ the icon may be easily moved. Clicking [L2]�‰‰ on an icon which has been placed on the�‰‰ schematic, will attach it to the mouse and�‰ allow placing it somewhere else. Also will�‰ behave like [L2]. ��‰Add the first of the two flow sensors:��‰‰- [L] on "Add Icon".��‰‰- [L] on "sensor".��‰‰- [L] on "thru-pipe-sensor".��‰‰- [L] on "flow-thru-sensor".��‰‰- [L] on "magnetic-flowmeter-flow-thru-sensor".��‰‰- At this point a sensor icon will appear and be�‰‰ attached to the mouse. Position the icon so�‰‰ so that it lines up with the left input port of�‰‰ the accumulator. This location is marked by�‰‰ marker #2 in FIGURE #1. ��‰‰- [L] to place the icon on the schematic.����‰‰�������‰‰‰FIGURE 1�‰‰‰--------���Œ��� 3) Create a simple schematic diagram (continued):� ----------------------------------------------�� - To connect the sensor's output port (on the�‰‰ right side) to the accumulator's input port�‰‰ (left top), [L] on the end of the accumulator's�‰‰ output port. Notice that the connection is now�‰‰ attached to the mouse. Draw it toward the�‰‰ sensor's output port. Once they are very close�‰‰ (basically close enough to distinguish it from�‰‰ any other port) you may [L] and the connection�‰‰ will be established. Note that you could have�‰‰ started with the sensor and connected it to the�‰‰ accumulator if you wished.��‰��‰Add the second flow-sensor:��‰‰- Position the mouse on the first flow-sensor�‰‰ that was just added to the schematic.��‰‰- [L] on the flow-sensor.��‰‰- This action will cause a "copy" to be generated�‰‰ of whatever you [L] on.��‰‰- Place this flow-sensor on the schematic next�‰‰ to marker #5. ��‰‰- Connect this flow-sensor to the accumulator�‰‰ the way the first one was connected.��‰Add the pump:��‰‰- [L] on "Add Icon".��‰‰- [L] on "pump".��‰‰- [L] on "variable-computer-pump".��‰‰- [L] on "centrifugal-variable-computer-pump".��‰‰- Position the pump icon on the schematic in�‰‰ the designated place.��‰‰- Connect the pump to the front of the input flow�‰‰ sensor.��‰Add the surge tank:��‰‰- [L] on "Add Icon".��‰‰- [L] on "surge-tank".��‰‰- Position this icon on the schematic.��‰‰- [L] to place it in the desired location.��‰‰- Connect it to the output of the flow sensor's�‰‰ output port.��‰Add the tank level sensor:��‰‰- [L] on "Add Icon".�‰�‰‰- [L] on "sensor".��‰‰- [L] on "port-sensor".��‰‰- [L] on "level-port-sensor".��‰‰- [L] on "sonic-level-port-sensor".��‰‰- Position this icon next to the upper output�‰‰ port on the right side of the accumulator.��‰‰- [L] to place it on the schematic.��‰‰- Connect it to the accumulator.��‰� 4) Save this schematic:� --------------------��‰To protect from lossage, it is generally a good idea�‰to backup your work periodically. PICON provides a�‰convenient way to do this.��‰- [L] on "Save"��‰- Type: CTRL- to remove the name "dummy".��‰- Type: xxx-schematic (where xxx are your�‰‰‰‰‰ initials or name.�‰‰‰‰‰ Follow the name of�‰‰‰‰‰ your file by typing�‰‰‰‰‰ a key.)��‰ At this point, PICON copies all the schematic�‰ elements into a file named:��‰‰xxx-schematic.pic (where the .pic, as�‰‰‰‰‰ you may remember, is�‰‰‰‰‰ the notation for a�‰‰‰‰‰ knowledge base file)��‰ PICON then returns you to the schematic where you�‰ may resume building your schematic.��‰- To verify that your file was created, do the following:��‰ . [L] on "Load".��‰ . [L] on "Get Names" ("Get Names" is found in�‰‰‰‰‰ the lower right portion�‰‰‰‰‰ of the screen in the�‰‰‰‰‰ subcommand pane)��‰ . PICON reads the default directory, and then shows a�‰ list of all the knowledge base files known to exist.�‰ Your file should be on the list.��‰- Since your file is already resident on the screen, there�‰ is no need to load it again. To exit from the "Load" menu�‰ type . Had you wanted to load a file at this point,�‰ you would select the file by [L] on the file you wished to�‰ load. Then by typing the file would be loaded.�‰��� 5) Add attribute knowledge to the schematic:� -----------------------------------------��‰- Refer to FIGURE 2. Notice the various icons which were added�‰ to the schematic, have names now. In addition to names, they�‰ have been given other important attributes which make them�‰ usable by PICON. Follow the instructions below to add the�‰ proper attributes for this example.��‰- Modify the attributes for the "pump":��‰ . [M] on the pump.��‰ . Locate the slot titled "Pump name". Notice the value of this�‰ attribute is "none".��‰ . To change an attribute value for any attribute, [L] on the�‰ current value. So, in this case position the mouse on the�‰ word "none" and [L]. This action is called "activating" a�‰ "gap" or "parsing position". You'll notice that there are�‰ three periods which represent the text cursor.��‰ . To enter a new value, just type the name you wish to give�‰ the pump.��‰‰Type: pump ��‰ . When editing attributes (also called slots) all entries�‰ must be terminated by typing .��‰ . You'll notice a second attribute called "Maximum flow rate".�‰ This is a specialized slot not required by the inference�‰ engine. We'll discuss these special slots later.��‰ . To exit from this "frame" type a or [L] on "Exit".���‰- Edit the attributes for the "input flow sensor":��‰ . [M] on the "flow-sensor".��‰ . You'll notice that the attributes for a sensor are quite�‰ different than others. There is additional information�‰ necessary to provide since the sensor provides numeric�‰ information back to the inference engine.��‰ . [L] on the word "none" in the attribute for "Tag name for�‰ sensor".��‰ . Type: F1 for the name.��‰ . "Engineering unit" has a default value which is�‰ appropriate for a flow sensor: "BPH".��Œ���‰‰‰FIGURE 2�‰‰‰--------��Œ��‰ . [L] on "BPH". Depending on where you clicked, your�‰ display may look like:��‰‰... BPH or,�‰‰B ... PH or,�‰ BP ... H or,�‰‰BPH ...�‰�‰ The reason for this is that certain words found in�‰ attribute values, like "none" are keywords, where�‰ words like "BPH" are not. Words that are not keywords�‰ are treated as text, therefore editable.��‰ To get avoid this, it is best to always position the�‰ mouse to the right edge of the word you are trying to�‰ edit and then [L]. ��‰ So, position the mouse to the right edge of the letter�‰ "H" in "BPH" and click [L]. Now type the �‰ key (found on the top row of function keys just to the�‰ left of the middle of the keyboard). This action clears�‰ out the text to the left of the cursor. Your display�‰ should only have a blinking cursor and no text.��‰ . Notice that in the command pane, that there are two menus�‰ which appear there.��‰ - The first is a data-type menu. It describes the�‰‰type of data which is expected in the slot you are�‰‰editing. In this case, engineering units are�‰‰expected. The class of data is a symbol. This�‰‰is a basic differentiation between things like�‰‰numnbers, strings, or symbols.��‰ - The second menu is mouse-sensitive. It allows you�‰‰to use the mouse to copy one of the choices into�‰‰the slot you are editing. Since bph is a good�‰‰choice for our flow measurements, select "BPH"�‰‰using [L]. Follow this by typing to�‰‰terminate the entry.��‰ . The next attribute is "Currency interval".��‰ . Notice that there is a default value of 15 seconds.�‰ Change it to 20 seconds.��‰ . There is no need to change "Smoothing factor".��‰ . "display current value?" should be changed to "Yes" so�‰ that as PICON runs you will be able to see the values�‰ next to the sensor icon. [L] on "no". Notice that since�‰ yes/no values are keywords, and there are only two�‰ choices, the "no" is just changed to "yes".��‰ . Don't change "Actions to take on data supplier problems"�‰ doesn't need to be changed right now. We'll discuss this�‰ later.��‰ . If this sensor has been edited properly, the Usage slot�‰ should say "In use". If it does then type a or�‰ click [L] on "Exit".��‰ . The accumulator should be be given a name of "tank".��‰ . The level sensor should be given the following�‰ attributes:��‰‰Tag name:‰‰L1�‰‰Engineering unit:‰FT�‰‰Currency interval:‰30 seconds�‰‰Display current value: yes��‰ . The output flow sensor should have:��‰‰Tag name:‰‰F2�‰‰Engineering unit:‰BPH�‰‰Currency interval:‰15 seconds�‰‰Display current value: yes��‰ . The surge-tank should be given a tag name of "surge".���‰- Your schematic should look like Figure #2. Save your�‰ knowledge base again.���‰� 6) Modify your title pane:� -----------------------��‰- The title pane of your knowledge base can be changed to�‰ reflect what the contents are. Follow the sequence below�‰ to do this.��‰ . [L] on "Visit". The visit facility allows you to look�‰ around your knowledge base, in accordance with the�‰ criteria you set. You can view parameters, which are�‰ lower level frames containing special congiguration�‰ information about PICON. Or, you make visit rules or�‰ icons which exist on the schematic.��‰ . [L] on "parameters for".��‰ . [L] on "knowledge base".��‰ . Type: .��‰ . Once the Knowledge base parameter frame appears, you may�‰ edit the slot values in the same way as the sensor icon�‰ attributes.��‰ . Modify the first slot called "Name of knowledge base" by�‰ clicking [L] on the right side of the text: "PICON".��‰ . Type . Now type any name you wish for the�‰ title. Be sure to put the name into string quotes:�‰ For example: "New Knowledge" would be a correct title.�‰ Follow the entry by typing .��‰ . You may also change the font that the title is displayed�‰ in. Modify the second slot to do this. The menu will tell�‰ you which fonts are available.��‰ . Type a or [L] on "Exit" to return to visit�‰ specification. This specification is editable and�‰ may be changed by clicking [L] on the part you wish�‰ to edit. Try looking at the parameters for the�‰ editor. To do this follow these instructions:��‰‰- Position cursor after the words "knowledge base".��‰‰- [L]��‰‰- Type as many time as necessary to�‰‰ delete the words "knowledge base".��‰‰- [L] on "editor".��‰‰- Type the key.��‰‰- To proceed and clear the screen, type a �‰‰ after you finish reviewing this parameter.��‰ . To visit something else, [L] on the part of the visit�‰ statement you wish to change otherwise type a �‰ or [L] on "Exit" to return to Top level command menu.��‰�‰7) Save your knowledge base:� -------------------------�‰ Again save your knowledge base, so that the new title�‰ stored in the knowledge base frame will be saved with�‰ the file.�‰��‰8) Extended text editing commands:�‰ -------------------------------��‰ . [L] on "Add Statement".��‰ . [L] on "free-text-statement".��‰ . Move box to an empty area of the screen and place the�‰ box on the schematic by clicking [L].��‰ . At the blinking cursor (the ... which is blinking)�‰ type the following:����‰‰the quick brown fox jumped over the lazy brown dog�‰‰__________________________________________________���‰ . Familiarize yourself with the following extended editor�‰ commands from the keyboard:��‰ Cursor Movement Commands:�‰ -------------------------��‰‰TOP- - move left 1 word from the cursor. ��‰‰ [To enter TOP-, hold down the key and�‰‰‰simultaneously type a j.��‰‰TOP- - move right 1 word from the cursor.��‰‰TOP- - move cursor to the beginning of text.� �‰‰TOP- - move cursor to the end of text.��‰ CTRL- - move active gap to next gap forward.����‰ Destructive Editor Commands:�‰ ----------------------------��‰‰ - deletes a character to the left.��‰‰ - deletes a character to the right. ��‰‰CTRL- - deletes a word to the left.�‰�‰‰CTRL- - deletes a word to the right��‰‰CTRL-- (hyphen) - deletes to begining of block�‰‰‰‰ or to the next gap.�‰‰‰�‰‰CTRL-_ (underscore) - ditto. �� CTRL-+ - deletes to the end of the block�‰‰‰‰ or to the next gap. �‰‰�‰‰CTRL-= - ditto ���‰ Macro Style Editor Commands:�‰ ----------------------------��‰ These commands are used to copy and restore pieces of�‰ text for manipulating rules. To use these, you must be�‰ editing a rule and have an active "gap". To copy the�‰ latest entry which was killed, type:�� CTRL-X CTRL-Y - Yanks the latest entry in the kill�‰‰‰ buffer and inserts at active gap. To�‰‰‰ put something into the kill buffer,�‰‰‰ use any of the last 4 "destructive"�‰‰‰ editor commands.��‰‰ Then if you wish to yank a successive�‰‰‰ entry, type successive META-Y commands�‰‰‰‰to yank these other entries.��‰ File import and export capabilities. It is possible to �‰ copy the content of a rule into a file and from a file�‰ into a rule. ��‰ CTRL-X CTRL-I - Will prompt for a file name to load�‰‰‰ and will write the file into the rule�‰‰‰ at the active gap.��‰ CTRL-X CTRL-O - Will prompt for a file name to write�‰‰‰‰out to the disk, copying the entire�‰‰‰‰rule into that file.����� What you should have learned in this exercise:� -----------------------------------------------�� - How to distinguish the various PICON keyboard and mouse�‰commands.�� - How to identify the various window panes in the PICON window.�� - How to create a simple schematic diagram.�� - How to provide attributes to icons on the schematic.�� - How to save a knowledge base. �� - How to retrieve parameters, and modify them.�� - How to use the extended editor commands.LMFL(:BYTE-SIZE 8 :AUTHOR "DWR" :QFASLP NIL :LENGTH 11098 :CREATION-DATE 2730896482 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LAB-SESSION-3" :TYPE "TEXT" :VERSION 10) -*- Mode:Text; Fonts:(CPTFONTB) -*-��Œ����‰‰PICON Lab Session # 3�‰‰---------------------��� PURPOSE� -------�� The purpose of this third lab session is to build upon the� material presented in exercise #2 to add simulation capability� and rules to the knowledge base.���� Lab Session 2 Script:� ---------------------�‰� 1) Create a simulation for the schematic built in Lab Sesison #2.� --------------------------------------------------------------��‰PICON simulations are created in order to test inference rules�‰in a knowledge base. Since there is no physical environment to�‰actually connect to, in terms of a process, a simulation will�‰have to be developed in order to test your knowledge base. This�‰is accomplished by writing SIMULATION statements. Follow the�‰sequence below to write a simulation for the schematic you�‰created in Lab Session #2.��� 2) Simulate the values for F1 on the schematic:� --------------------------------------------��‰ . [L] on "Add Statement".��‰ . [L] on "simulation-statement".��‰ . A small box with 3 dots in it will be attached to the mouse.�‰ Position the mouse such that the box is below the schematic�‰ and leaves enough room to type into the box. Click [L].��‰ . You will see the word "simulate" followed by the cursor.�‰ The specification for simulation statement is next.��‰ . Notice the sub-command menu pane in the lower right corner�‰ of the screen. These extended editor commands are mouse-�‰ sensitive and can be used while editing rules.Their uses�‰ are described below:��‰‰New Line - Inserts a carriage return at the point�‰ --------‰‰‰ of the existing cursor.�‰�‰‰Back up - Erases one word or marked region to the�‰‰------- left of the cursor. A marked region is�‰‰ the text within two gaps (...).�‰�‰‰Restore - Copies the definition of the most�‰‰------- recently installed version since the last�‰‰ or was entered.�‰�‰‰End - Same as typing key.�‰‰---�‰�‰‰Exit - Same as typing in that it leaves�‰‰---- the rule just as it is without installing�‰‰ it.��‰�‰ �‰ . Type: F1 with wave�‰‰‰‰ Notice that at this point, PICON�‰ types ahead because the next few�‰‰‰‰ keywords are unique.��‰ The statement should look like:��‰‰simulate F1 with wave with central value ...�‰ --------------------------------------------��‰ . Provide a central value for the wave:��‰‰Type: 100 �‰ �‰ . PICON will provide the text for the next argument which�‰ is deviation. Type 80 . The statment should now�‰ look like:��‰‰simulate F1 with wave with central value 100 and�‰ deviation ...�‰ ------------------------------------------------��‰ . PICON will now type: and period. The statement should�‰ look like:��‰‰simulate F1 with wave with central value 100 and�‰ deviation 80 and period ...�‰ ------------------------------------------------��‰ . For period, type: 5 minutes. The completed statement�‰ should look like:��‰‰simulate F1 with wave with central value 100 and�‰ deviation 80 and period 5 minutes ...�‰ ------------------------------------------------��‰ . The cursor will still be blinking at the end of the�‰ statement. To complete the rule type .��‰ . This simulation statement is now installed.���� 3) Simulate the values for F2 on the schematic:� --------------------------------------------��‰ . [NOTE: you may click [L] on the rule, having the mouse�‰‰ positioned just outside the box, in order to�‰‰ copy the rule. This "copy" then can be placed �‰‰ on the schematic and edited to make it look�‰‰ as the rule you desire to create] ��‰ . The statement should read:��‰‰simulate F2 with wave with central value 100 and� deviation 40 and period 5 minutes�‰ ------------------------------------------------���� 4) Simulate the value for L1:� --------------------------��‰ . The statement should read:��‰‰simulate L1 with 500 then (F1 - F2 )�‰ * TANK-AREA / 3600 + L1�‰‰------------------------------------��� 5) Simulate TANK-AREA since it is referenced by L1:� ------------------------------------------------���‰‰simulate local TANK-AREA with 100�‰‰---------------------------------��‰ (Simulating "local" will be explained later.)�‰�� 6) Create rules of inference which use the simulation:� ---------------------------------------------------�� After adding these SIMULATION statements, the model is� complete. Now, all that remains is to write rules which� request data from sensors, make judgements about that� data, and make recommendations about system activity.��‰- The following rules are designed to simply compute the�‰ change in flow, and thus determine if the tank will�‰ overflow based on the changes in the level. It is not�‰ necessary that you understand the context of these�‰ rules, but rather just how to create and manipulate�‰ them on the schematic.��‰- Complete the following:��‰ . [L] on "Add Statement".��‰ . [L] on "if-then-rule".��‰ . With the small box attached, position the box where�‰ you wish on the schematic. You can move statements�‰ on the schematic just as easily as icons. [L2] on the �‰ outside edge of the statement you wish to move. The�‰ rule will now be attached to the mouse. Position the�‰ box and [L] to place it on the schematic. If you move�‰ a statement, the cursor in that statement is�‰ deactivated. So, once the statement is placed, you�‰ must reactivate the cursor by clicking [L] on the "..."�‰ in the statement. ��‰ . Type in, or use the mouse and the menus, to create this�‰ rule:���‰ if flow-delta > 0 and L1 > tank-level-limit then�‰ conclude tank-level-is-rising and�‰ send "Tank level is too high!" to operator �‰ ---------------------------------------------------��‰ If you should make a syntactical mistake in entering the�‰ rule, PICON will make a buzzing sound, then flash the�‰ screen, and then place an elipse (...) in the rule to�‰ indicate where the error is. Even if you try to type �‰ on a rule which has an error PICON will refuse to�‰ accept it. You may then reactivate the "..." by clicking�‰ [L], and view the menus to see the proper options at that�‰ point in the rule.��‰�‰ . The rule's attibutes must also be modified in order to give�‰ the rule more specific information about how the inference�‰ engine is to treat it. ��‰ . Position the mouse inside the rule box and [M].��‰ . Locate the slot named "Scan interval". Position the�‰ mouse after the word "none" and click [L]. The word "none"�‰ should be replaced by a blinking "...".��‰ . Type: 10 seconds .��‰ . Type a to return to the schematic.��‰ . This rule is now complete.��� 7) Add the DEFINITION for tank-level-limit:� ----------------------------------------��‰ . [L] on "Add Statement".��‰ . [L] on "definition".��‰ . Position the box below the if-then-rule on the schematic.��‰ . Type the following:�‰��‰ tank-level-limit = 586 �‰ -----------------------------���‰ . This definition is complete.��� 8) Add the definition of flow-delta:� ---------------------------------��‰ . [L] on "Add Statement".��‰ . [L] on "definition".��‰ . Position the box below the if-then-rule on the schematic.��‰ . Type the following:�‰��‰ flow-delta = F1 - F2 �‰ ---------------------------���‰ . This definition is complete.���� 9) Test the knowledge base:� ------------------------��‰ These statements complete this knowledge base. Your rules�‰ should now be tested.��‰ . Before starting the test, you should save your work.��‰ . Click [L] on "Run".��‰ As the inference engine starts, you should see numbers�‰ appearing next to all three sensors which are changing.�‰ When L1 exceeds the tank-level-limit variable (which =�‰ 585) and F1 - F2 > 0, you should get the message:��‰ "Tank level is too high!"��� 10) PICON Messages and Explanation:� -------------------------------��‰ As the message gets printed, notice that it is mouse-�‰ sensitive. This means the mouse, as it is passed over�‰ the message, causes a box to be drawn around the message.�‰ By clicking [L] on the message, a tree is drawn indicating�‰ the chain of reasoning which PICON used to create the�‰ message. Using the "hand" and "finger" keys, examine�‰ this tree to see how the inference engine used the rules�‰ and sensors you've just added.��‰- This is commonly refered to as an "Explanation" subsystem�‰ which "explains" the reasoning which led up to creating the�‰ advice given. Although this is not truly an explanation, it�‰ serves to show the rules (written in english) which were�‰ used and therefore serves to explain the advice.���‰- There exist three knowledge bases on file which are�‰ completed versions of each of the three steps you've�‰ just completed. To check your work, or to see how�‰ somthing was done, just load the appropriate file�‰ by clicking [L] on "Load", and then selecting one of:��‰ CLASS-SCHEMATIC - for a look at the�‰‰‰‰‰ schematic without�‰‰‰‰‰ attributes or rules.��‰ CLASS-MODEL - for a look at the�‰‰‰‰‰ schematic with�‰‰‰‰ attributes, and �‰‰‰‰ simulation statements�‰‰‰‰‰ but no rules.��‰ CLASS-KB - for a look at the�‰‰‰‰ completed knowledge base.��� 11) Print this knowledge base:� --------------------------��‰ This would be a good opportunity to get a hardcopy of�‰ your finished knowledge base:��‰ . [L] on "Print".��‰ . [L] on "statements".��‰ . [L] on "and".��‰ . [L] on "icons".��‰ . [L] on "and"��‰ . [L] on "parameters for".��‰ . [L] on "everything".��‰ . Type .��‰ . At this point PICON will print a message indicating a file�‰ is being created which contains your knowledge base in�‰ printable form.��‰ . To actually print the file to the printer:��‰ - Type: (You are now in lisp underneath�‰‰‰‰‰ PICON)��‰ - Type: (hardcopy-file "lm:picon;name-of-file.pri")��‰ (Where "name-of-file" is the knowledge base file name.)��‰ - If you make any typing mistakes, you may get thrown into�‰ the error handler. To get out of the error handler, you�‰ should type: and try typing the command again.��‰ - Type: (This returns you to top level�‰‰‰‰‰ PICON after being in lisp)��� What you should have learned in this exercise:� -----------------------------------------------�� - How to add simulation statements and rules to a schematic.�� - How to edit attributes of rules. �� - How to invoke and use the display of the inference tree. �� - How to print your knowledge base.LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 11122 :CREATION-DATE 2730906296 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LAB-SESSION-3" :TYPE "TEXT" :VERSION 11) -*- Mode:Text; Fonts:(CPTFONTB) -*-��Œ����‰‰PICON Lab Session # 3�‰‰---------------------��� PURPOSE� -------�� The purpose of this third lab session is to build upon the� material presented in exercise #2 to add simulation capability� and rules to the knowledge base.���� Lab Session 2 Script:� ---------------------�‰� 1) Create a simulation for the schematic built in Lab Sesison #2.� --------------------------------------------------------------��‰PICON simulations are created in order to test inference rules�‰in a knowledge base. Since there is no physical environment to�‰actually connect to, in terms of a process, a simulation will�‰have to be developed in order to test your knowledge base. This�‰is accomplished by writing SIMULATION statements. Follow the�‰sequence below to write a simulation for the schematic you�‰created in Lab Session #2.��� 2) Simulate the values for F1 on the schematic:� --------------------------------------------��‰ . [L] on "Add Statement".��‰ . [L] on "simulation-statement".��‰ . A small box with 3 dots in it will be attached to the mouse.�‰ Position the mouse such that the box is below the schematic�‰ and leaves enough room to type into the box. Click [L].��‰ . You will see the word "simulate" followed by the cursor.�‰ The specification for simulation statement is next.��‰ . Notice the sub-command menu pane in the lower right corner�‰ of the screen. These extended editor commands are mouse-�‰ sensitive and can be used while editing rules.Their uses�‰ are described below:��‰‰New Line - Inserts a carriage return at the point�‰ --------‰‰‰ of the existing cursor.�‰�‰‰Back up - Erases one word or marked region to the�‰‰------- left of the cursor. A marked region is�‰‰ the text within two gaps (...).�‰�‰‰Restore - Copies the definition of the most�‰‰------- recently installed version since the last�‰‰ or was entered.�‰�‰‰End - Same as typing key.�‰‰---�‰�‰‰Exit - Same as typing in that it leaves�‰‰---- the rule just as it is without installing�‰‰ it.��‰�‰ �‰ . Type: F1 with wave ��‰‰‰‰ (Notice that at this point, PICON�‰ types ahead because the next few�‰‰‰‰ keywords are unique.)��‰ The statement should look like:��‰‰simulate F1 with wave with central value ...�‰ --------------------------------------------��‰ . Provide a central value for the wave:��‰‰Type: 100 �‰ �‰ . PICON will provide the text for the next argument which�‰ is deviation. Type 80 . The statment should now�‰ look like:��‰‰simulate F1 with wave with central value 100 and�‰ deviation ...�‰ ------------------------------------------------��‰ Type: 80 ��‰ . PICON will now type: and period. The statement should�‰ look like:��‰‰simulate F1 with wave with central value 100 and�‰ deviation 80 and period ...�‰ ------------------------------------------------��‰‰Type: 5 minutes ��‰ . The completed statement should look like:��‰‰simulate F1 with wave with central value 100 and�‰ deviation 80 and period 5 minutes ...�‰ ------------------------------------------------��‰ . The cursor will still be blinking at the end of the�‰ statement. To complete the rule type .��‰ . This simulation statement is now installed.���� 3) Simulate the values for F2 on the schematic:� --------------------------------------------��‰ . [NOTE: you may click [L] on the rule, having the mouse�‰‰ positioned just outside the box, in order to�‰‰ copy the rule. This "copy" then can be placed �‰‰ on the schematic and edited to make it look�‰‰ as the rule you desire to create] ��‰ . The statement should read:��‰‰simulate F2 with wave with central value 100 and� deviation 40 and period 5 minutes�‰ ------------------------------------------------����  4) Simulate the value for L1:� --------------------------��‰ . The statement should read:��‰‰simulate L1 with 500 then (F1 - F2 )�‰ * TANK-AREA / 3600 + L1�‰‰------------------------------------��� 5) Simulate TANK-AREA since it is referenced by L1:� ------------------------------------------------���‰‰simulate local TANK-AREA with 100�‰‰---------------------------------��‰ (Simulating "local" will be explained later.)�‰�� 6) Create rules of inference which use the simulation:� ---------------------------------------------------�� After adding these SIMULATION statements, the model is� complete. Now, all that remains is to write rules which� request data from sensors, make judgements about that� data, and make recommendations about system activity.��‰- The following rules are designed to simply compute the�‰ change in flow, and thus determine if the tank will�‰ overflow based on the changes in the level. It is not�‰ necessary that you understand the context of these�‰ rules, but rather just how to create and manipulate�‰ them on the schematic.��‰- Complete the following:��‰ . [L] on "Add Statement".��‰ . [L] on "if-then-rule".��‰ . With the small box attached, position the box where�‰ you wish on the schematic. You can move statements�‰ on the schematic just as easily as icons. [L2] on the �‰ outside edge of the statement you wish to move. The�‰ rule will now be attached to the mouse. Position the�‰ box and [L] to place it on the schematic. If you move�‰ a statement, the cursor in that statement is�‰ deactivated. So, once the statement is placed, you�‰ must reactivate the cursor by clicking [L] on the "..."�‰ in the statement. ��‰ . Type in, or use the mouse and the menus, to create this�‰ rule:���‰ if flow-delta > 0 and L1 > tank-level-limit then�‰ conclude tank-level-is-rising and�‰ send "Tank level is too high!" to operator �‰ ---------------------------------------------------��‰ If you should make a syntactical mistake in entering the�‰ rule, PICON will make a buzzing sound, then flash the�‰ screen, and then place an elipse (...) in the rule to�‰ indicate where the error is. Even if you try to type �‰ on a rule which has an error PICON will refuse to�‰ accept it. You may then reactivate the "..." by clicking�‰ [L], and view the menus to see the proper options at that�‰ point in the rule.��‰�‰ . The rule's attibutes must also be modified in order to give�‰ the rule more specific information about how the inference�‰ engine is to treat it. ��‰ . Position the mouse inside the rule box and [M].��‰ . Locate the slot named "Scan interval". Position the�‰ mouse after the word "none" and click [L]. The word "none"�‰ should be replaced by a blinking "...".��‰ . Type: 10 seconds .��‰ . Type a to return to the schematic.��‰ . This rule is now complete.��� 7) Add the DEFINITION for tank-level-limit:� ----------------------------------------��‰ . [L] on "Add Statement".��‰ . [L] on "definition".��‰ . Position the box below the if-then-rule on the schematic.��‰ . Type the following:�‰��‰ tank-level-limit = 586 �‰ -----------------------------���‰ . This definition is complete.��� 8) Add the definition of flow-delta:� ---------------------------------��‰ . [L] on "Add Statement".��‰ . [L] on "definition".��‰ . Position the box below the if-then-rule on the schematic.��‰ . Type the following:�‰��‰ flow-delta = F1 - F2 �‰ ---------------------------���‰ . This definition is complete.���� 9) Test the knowledge base:� ------------------------��‰ These statements complete this knowledge base. Your rules�‰ should now be tested.��‰ . Before starting the test, you should save your work.��‰ . Click [L] on "Run".��‰ As the inference engine starts, you should see numbers�‰ appearing next to all three sensors which are changing.�‰ When L1 exceeds the tank-level-limit variable (which =�‰ 585) and F1 - F2 > 0, you should get the message:��‰ "Tank level is too high!"��� 10) PICON Messages and Explanation:� -------------------------------��‰ As the message gets printed, notice that it is mouse-�‰ sensitive. This means the mouse, as it is passed over�‰ the message, causes a box to be drawn around the message.�‰ By clicking [L] on the message, a tree is drawn indicating�‰ the chain of reasoning which PICON used to create the�‰ message. Using the "hand" and "finger" keys, examine�‰ this tree to see how the inference engine used the rules�‰ and sensors you've just added.��‰- This is commonly refered to as an "Explanation" subsystem�‰ which "explains" the reasoning which led up to creating the�‰ advice given. Although this is not truly an explanation, it�‰ serves to show the rules (written in english) which were�‰ used and therefore serves to explain the advice.���‰- There exist three knowledge bases on file which are�‰ completed versions of each of the three steps you've�‰ just completed. To check your work, or to see how�‰ somthing was done, just load the appropriate file�‰ by clicking [L] on "Load", and then selecting one of:��‰ CLASS-SCHEMATIC - for a look at the�‰‰‰‰‰ schematic without�‰‰‰‰‰ attributes or rules.��‰ CLASS-MODEL - for a look at the�‰‰‰‰‰ schematic with�‰‰‰‰ attributes, and �‰‰‰‰ simulation statements�‰‰‰‰‰ but no rules.��‰ CLASS-KB - for a look at the�‰‰‰‰ completed knowledge base.��� 11) Print this knowledge base:� --------------------------��‰ This would be a good opportunity to get a hardcopy of�‰ your finished knowledge base:��‰ . [L] on "Print".��‰ . [L] on "statements".��‰ . [L] on "and".��‰ . [L] on "icons".��‰ . [L] on "and"��‰ . [L] on "parameters for".��‰ . [L] on "everything".��‰ . Type .��‰ . At this point PICON will print a message indicating a file�‰ is being created which contains your knowledge base in�‰ printable form.��‰ . To actually print the file to the printer:��‰ - Type: (You are now in lisp underneath�‰‰‰‰‰ PICON)��‰ - Type: (hardcopy-file "lm:picon;name-of-file.pri")��‰ (Where "name-of-file" is the knowledge base file name.)��‰ - If you make any typing mistakes, you may get thrown into�‰ the error handler. To get out of the error handler, you�‰ should type: and try typing the command again.��‰ - Type: (This returns you to top level�‰‰‰‰‰ PICON after being in lisp)��� What you should have learned in this exercise:� -----------------------------------------------�� - How to add simulation statements and rules to a schematic.�� - How to edit attributes of rules. �� - How to invoke and use the display of the inference tree. �� - How to print your knowledge base.LMFL(:BYTE-SIZE 8 :AUTHOR "DWR" :QFASLP NIL :LENGTH 18677 :CREATION-DATE 2730896499 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LAB-SESSION-4" :TYPE "TEXT" :VERSION 19) -*- Mode:Text; Fonts:(CPTFONTB) -*-��Œ����‰‰PICON Lab Session # 4�‰‰---------------------��� PURPOSE� -------�� The purpose of this fourth lab session is to present a series� of exercises in the form of knowledge bases, which you load,� which will teach principles of the PICON simulator, and rule� inferencing. After certain exercises, there will be a� problem for you to solve. After you have created your solution� you may load the indicated solution knowledge base to see how� the solution should look.���‰- EXERCISE 1.�‰ -----------��‰ This exercise demonstrates how to develop a simulation�‰ for a sensor, and then to use that sensor's value in an�‰ inference rule.���‰ . [L] on "Load".��‰ . [L] on "Get Names". (This command is�‰‰‰‰‰ found in the sub-�‰‰‰‰‰ command pane in�‰‰‰‰‰ the lower right�‰‰‰‰‰‰ part of the screen)��‰ . [L] on "EXERCISE-1".��‰ . Type .��‰ . Exercise 1 Script:��‰ 1) The sensor T1 is a temperature port sensor added�‰ from the hierarchy of icons. ��‰ 2) The simulation statement will provide values into�‰ PICON according to the wave function shown.��‰ 3) Then finally a rule which uses the values provided�‰ by the simulator will react to changes in the values. ��‰ 4) Click [L] on "Run". Notice that as T1 exceeds 212, the�‰ message is printed. Notice, though, that messages�‰ are not necessarily printed every time the condition�‰ is true. There is a built in message suppresion feature�‰ called "repetition control". To have the message always�‰ print (basically disabling repetition control for this�‰ rule), add the clause "every time" after the "to�‰ operator" clause of the statement. This is discussed�‰ later in more detail.��‰ 5) Position the mouse on T1. Click [M]. This shows the�‰ attributes for the sensor. Click [M] again. For sensors�‰ which have values, this graph you see will be generated.�‰ To get back to the top level, type , then�‰ again.���‰- EXERCISE 2.�‰ -----------��‰ This exercise demonstrates the use of IF-THEN reasoning�‰ in a PICON SIMULATION statement. Also illustrated is how�‰ to use the variable "time" in the simulator.���‰ . [L] on "Load".��‰ . [L] on "EXERCISE-2".��‰ . Type .��‰ . Exercise 2 Script:��‰ 1) The sensor PORT-1 is a temperature port-sensor.��‰ 2) The simulation statement will provide conditional�‰ values to PORT-1 depending upon the value of the�‰ variable TIME.��‰ 3) The IF-THEN rule will query the value of PORT-1�‰ every 25 seconds beacuse the scan interval of the�‰ rule = 25 seconds.�‰� 4) Click [L] on "Run".��‰ 5) The values for PORT-1 will change in accordance�‰ with the simulation statement. Notice the CLOCK. If�‰ the CLOCK < 100 then PORT-1 reads 1; if CLOCK < 200�‰ then PORT-1 = 2, otherwise PORT-1 = 3.��‰ 6) By including the clause "every time", this forces�‰ the message to be printed each time the rule is�‰ tested with no supression of messages.��‰ 7) Notice also that the value of PORT-1 has been�‰ imbedded into the text of the message. This is�‰ accomplished by "place holding" where the value is�‰ to be placed using "***" and adding the clause�‰ "with PORT-1".��‰ 8) You may also notice that time here is not actual�‰ wall clock time. The simulator runs as fast at it�‰ can (usually about 20 times faster than real time).�‰ This can be changed, and will be discussed later.�‰��‰- EXERCISE 3.�‰ -----------��‰ This exercise illustrates further uses of the simulator�‰ particularly how to use other variables in the statements.�‰��‰ . [L] on "Load".��‰ . [L] on "EXERCISE-3".��‰ . Type .��‰ . Exercise 3 Script:��‰ 1) Examine the simulation statement for P1. Notice that�‰ it depends upon the values received for F1 in order�‰ for itself to get a value. Notice the use of the MAX�‰ function. This keeps P1 from ever being < 0.��‰ 2) The simulation for F1 is a simple wave function as�‰ has already been discussed.�‰�‰ 3) Select RUN.��‰ 4) Can you determine why no messages are being printed�‰ and why no sensor values are being displayed?�‰�‰ 5) Write an IF-THEN rule on the schematic which will�‰ send an appropriate message to the OPERATOR if F1�‰ should ever exceed 200.��‰ 6) Try running PICON with your new rule. Does it work?��‰ If your rule doesn't work, check the following:��‰ - Does it have a scan interval? It must have one�‰ in order to be regularly scheduled by the�‰ inference engine.��‰ - Use the visit facility to visit statements which may�‰‰ have syntax related problems or inconsistencies:��‰‰‰> [L] on "Visit".��‰‰‰> [L] on "statements".��‰‰‰> [L] on "having".��‰‰‰> [L] on "problems" (This is a general problem�‰‰‰‰‰ category. As you can see,�‰‰‰‰‰ there are more specific�‰‰‰‰‰ problems to look for.)��‰‰‰> Type: .��‰‰‰> One of two things will occur:��‰‰‰ 1) If there are no problems found, then a block�‰‰‰ will appear with a note claiming that there are�‰‰‰ "No such fames".��‰‰‰ 2) If any problems are found, the main window will�‰‰‰ be scrolled to the statement having the problem,�‰‰‰ and flash that statement. You may at this point�‰‰‰ click [M] on the statement to examine the usage�‰‰‰ note which will describe the problem. If there�‰‰‰ is a note, it may keep the inference from properly�‰‰‰ using the rule.��‰ 7) Why are no values being displayed for P1?��‰ 8) Load the solution file to verify your work.��‰ - Load the file: SOLUTION-3 from the load menu.��‰ - Run this solution and verify yours arrives at�‰ the same solution.����‰- EXERCISE 4.�‰ -----------��‰ This exercise illustrates the ability of PICON to build�‰ DEFINITION statements which describe a relationship, and�‰ then allow other rules to use those definitions. This�‰ exercise also shows the use of "alert" intervals.�‰��‰ . Load EXERCISE-4.��‰ . Exercise 4 Script:��‰ 1) The IF-THEN rule refers to the condition "l1-is-high"�‰ defined by the "LET condition" statement. This statement�‰ looks like:��‰‰‰let condition l1-is-high = L1 > 100�‰‰‰___________________________________���‰ The IF-THEN rule is scheduled every 30 seconds (due to the�‰ scan interval) and in the event that the rule evaluates to�‰ true, executes every 10 seconds (due to the alert�‰ interval). As the IF-THEN rule requests the value of�‰ l1-is-high, the definition for l1-is-high is evaluated,�‰ or backward chained to. The evaluation will yield a true�‰ or unknown value. If true, will satisfy the IF-THEN rule�‰ and cause the actions specified in the right-hand-side of�‰ the rule to be carried out.��‰ The actions are to send a message out to the operator�‰ every time the condition is true. Also notice the interval�‰ at which the message is printed. Every 10 seconds (because�‰ of the alert interval) the rule is tested and the message �‰ is printed. When the condition stops being true, the�‰ inference engine stops using the alert interval and resumes�‰ using the scan interval.�‰�‰ 2) Run this example by selecting RUN.��‰ 3) As the rules run, a message is printed indicating that L1�‰ is reading high. Click [L] on the message as it appears in�‰ the message window. Examine the "inference" tree which is�‰ displayed, to see the line of reasoning which caused the�‰ message to be sent.��‰ 4) Type to return to resume running the inference engine.��‰ 5) As the inference engine continues to run, change remove the�‰ alert interval from the IF-THEN rule as follows:��‰‰ - [M] on the IF-THEN rule.��‰‰ - Change the value of the alert interval from 10 seconds�‰‰ to none.��‰‰ - Type: to complete the entry.��‰‰ - Type: to return to the command pane.��‰ Notice that the message now only prints every 30 seconds. By�‰ removing the alert interval, the rule only executes every 30�‰ seconds, and therefore prints the message likewise.� �‰ 6) Write another DEFINITION statement by adding it to�‰ the schematic by defining the condition l1-is-low�‰ if L1 should drop below 100.�‰� 7) Then write another IF-THEN rule displaying an�‰ appropriate message should this condition be true.�‰ Include the value of the sensor L1 in the text of�‰ the message.��‰ 8) Test your new rules by running the inference engine�‰ again.��‰ 9) Verify that your rules work by loading SOLUTION-4�‰ and matching the results.����‰- EXERCISE 5.�‰ -----------��‰ This exercise illustrates the use of the "focus" and "activate"�‰ techniques for invoking sets of rules from a rule. This is�‰ essentially forward chaining. ��‰ . Load EXERCISE-5.��‰ . Exercise 5 Script:��‰ 1) The IF-THEN rule #1 checks a simple flow balance.�‰ If it finds a discrepancy, then a "focus" is done.�‰ This "focus" invokes IF-THEN rule #3. This happens�‰ because the attribute "associated unit" in rule #3�‰ is = TANK. When any rule then does a "focus on tank"�‰ rule #3 is checked. Click [M] on rule #3 to see that�‰ its associated unit slot contains "TANK". � �‰ 2) Notice that rule #3 is invoked by forward chaining from�‰ rule #1. Rule #3 then, must backward chain to the definition�‰ statement (rule #2) describing the condition tank-level-�‰ is-rising. If rule #2 evaluates true, rule #3 uses that�‰ result and must then determine if L1 > 53. If both parts�‰ of the antecedent are true, the rule then, is considered�‰ true and its actions are carried out. ��‰ 3) Run EXERCISE-5.��‰ 4) Click [L] on the message which prints in the message window.�‰ This generates the inference tree. Notice the layout of the�‰ rules and the way in which the chaining has caused them�‰ to display.��‰ 5) As an alternative way of activating rules from other rules,�‰ there is an "activate" command. This is a generalized facility�‰ which works the same as "focus" but allows the use of other�‰ slots of the rule rather than just the associated units slot.��‰ Modify rule #1 so that it reads:��‰‰ if abs (F1- F2) > 4 then activate tank-checking rules�‰‰ _____________________________________________________��‰ Also, click [M] on rule #3. Change the "Associated units" slot�‰ to "unspecified" (this is an option in the menus). Also change�‰ the "Categories" slot to "tank-checking". Now [L] on "Run".��‰ Notice the same behavior occurs. The effect is the same. You�‰ may also use other slot values besides just the category.���‰- EXERCISE 6.�‰ -----------��‰ This exercise illustrates the use of concluding (which�‰ also involves forward chaining) in IF-THEN rules.�‰��‰ . Load EXERCISE-6.��‰ . Exercise 6 Script:��‰ 1) Rule #1 simply tests F1 > F2 and if so, concludes�‰ level-is-increasing. Several things happen as a�‰ result of concluding.��‰ o A variable named "level-is-increasing" had�‰ already been created by PICON for you. It�‰ is a definition statement saying:��‰‰‰let level-is-increasing be a named�‰‰‰ condition�‰ __________________________________��‰‰ o These definitions are not resident on the�‰‰ schematic. You can review them by retrieving�‰ them. For example:��‰‰‰- [L] on "Retrieve".��‰‰‰- [L] on "definition for".��‰‰‰- Type: level-is-increasing ��‰‰ A frame will appear showing the definition�‰‰ statement. Notice that its currency interval�‰‰ is "derived". This means that the currency�‰‰ interval for the objects which concluded this�‰ condition will be used for the condition�‰ itself. In this case the smallest of F1's and�‰ F2's currency intervals will be used for�‰‰ level-is-increasing's currency interval.��‰ o The boolean variable "level-is-increasing"�‰‰ is given a value of true.��‰‰ o Any other rule in the knowledge base that has�‰ in its left hand side or premise the named-�‰‰ condition, is immediately tested. This is�‰‰ forward chaining on the conclusion. This then�‰‰ causes rule #2 to be tested by the inference�‰‰ engine.��‰ 2) Modify the knowledge base to create a conclusion�‰ level-is-decreasing if the opposite is true. Then�‰ create another IF-THEN rule to use the new�‰ conclusion.��‰ 3) Run your knowledge base and compare it to SOLUTION-6.��‰ In SOLUTION-6 you will notice that the rule uses an�‰ "else" clause instead of creating another rule to�‰ look for the opposite case. This has the advantage of�‰ only one rule being scheduled by the inference engine�‰ rather than two. This is always desirable (to keep the�‰ number of rules with a scan interval to a minumum) for�‰ efficiency sake.��‰ 4) Modify your rule(s) to print the messages every time the�‰ rule(s) is/are true, rather than allowing the repetition�‰ control to supress the messages.� ��‰- CASE STUDY 1.�‰ -------------��‰ Now that you have learned several techniques in dealing with�‰ rules and the simulator, a "case" study problem is presented �‰ allowing you to use these techniques.��‰ . Load The file: CASE-STUDY-1 from the PICON Load menu.��‰ . Problem description:��‰‰A model has been developed which contains:��‰‰ 1) A schematic diagram �‰‰ 2) A simulation model ��‰‰This case study then needs simply the rules which monitor�‰‰the situations as they develop and report problems in the�‰‰process. There is no capability in this case study to �‰‰adjust the values which sensors are providing which �‰‰limits your rules to advisory level ONLY. In a later �‰‰session you will be able to control the environment.��‰‰When any of the following constraints are violated, an�‰‰appropriate message must be sent to the process operator. ��‰ . System constraints:��‰‰a) Sensor F1 measures the incoming flow into TANK-1 from�‰‰ MIX-1. This flow must be closely monitored and�‰‰ controlled due to the instability of the chemicals.�‰‰ Occasionaly PUMP-1 will malfunction causing flow in�‰‰ the input line to exceed its tolerance. Define a�‰‰ condition which will be true in the event F1 ever�‰‰ reads higher than 60. This is a critical condition�‰‰ and must be checked every 20 seconds. If this�‰‰ condition ever occurs, notify the operator with an�‰‰ appropriate message.��‰‰b) The maximum that TANK-1 can be is 420 feet. For�‰‰ protection from overfill, a warning should be sent�‰‰ out to the operator if L1 should read above 380. Also�‰‰ if L1 is greater than 380 the condition should be�‰‰ watched more often and reported that the condition�‰‰ still exists.��‰‰c) Sensor F2 measures the incoming flow into TANK-1 from�‰‰ MIX-2. Like F1, this sensor's readings must be watched�‰‰ closely to insure the mix of chemicals is properly�‰‰ balanced in order to aviod an accident or a spill.�‰‰ F2 should be monitored every 20 seconds also but its�‰‰ values must be under 100. Again, if this constraint�‰‰ is violated, send a message.��‰‰d) If L1 ever exceeds the safety margin of 380 (see step b)�‰‰ it is necessary to determine if the tank-level is still�‰‰ increasing. If it is, then an appropriate message should be�‰‰ printed. This test for tank-level should only be made in�‰‰ the event that constraint (b) was violated.��‰‰e) The CLOCK sensor indicates the number of simulated seconds�‰‰ the simulation has been running. When the CLOCK reaches�‰‰ 2000 this marks the end of the simulation, and a message�‰‰ to that effect should be sent to the operator.�‰��‰ . Save your knowledge base into a file name other than CASE-STUDY-1.��‰‰- Something like xxx-case-1 where xxx are your initials�‰‰ would be fine.��‰ . Test your rules as you create them to verify your results using�‰ the existing simulation statements.��‰ . Load and run CASE-1-SOLUTION to verify your work.��‰ . Alternative solutions to the case study:��‰‰- You could have used "focus" or "activate" instead of the�‰‰ "conclude" which was used in the solution. There are no�‰ operational differences between focus, activate and conclude�‰‰ except the specifications, of course. There are, however,�‰‰ different times you may wish to use one in preference over�‰‰ another. Because activate is really a generalized focus�‰‰ capability, they will be considered the same in the following�‰‰ discussion. ��‰‰ o If you suspect a general problem in your domain, such as�‰‰ a fire, which has many possible causes, it may seem more�‰‰ intuitive to activate "fire-checking" rules than to conclude�‰‰ "there-is-possibly-a-fire". The rules which have a category�‰‰ equal to "fire-checking" would get activated without explicitly�‰‰ stating in the antecedent "if there-is-possibly-a-fire ...". The�‰‰ antecedent would look for a specific thing to check rather than�‰‰ saying, for example:��‰‰‰if there-is-possibly-a-fire and T32-54D > 212 then ...��‰‰ o If you have definitely concluded that a situation is known,�‰‰ you may want to conclude versus activating or focusing. �‰ �� What you should have learned in this exercise:� -----------------------------------------------�� - How to use the "Get Names" feature during knowledge base loading.�� - How to write a simulation for a sensor.� � - How to use a sensor's simulated values in a rule.�� - Understand how message supression functions by using the "repetition�‰control" function.�� - How to generate a graph showing a plot of a sensor's history.�� - How to use the variable time in a simulation. �� - How to print data values in message output to the PICON message�‰pane.�� - How to write simulations using other simulated values. �� - How to define conditions and access those conditions in IF-THEN�‰rules.�� - How to make use of the scan and alert intervals.�� - How to use the "focus" mechanism to invoke forward chaining.�� - How to conclude a named condition.�� - How to use the retrieve capability for PICON statements.�� - How to differentiate between activating and concluding.LMFL(:BYTE-SIZE 8 :AUTHOR "DWR" :QFASLP NIL :LENGTH 7497 :CREATION-DATE 2730896519 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LAB-SESSION-5" :TYPE "TEXT" :VERSION 6) -*- Mode:Text; Fonts:(CPTFONTB) -*-��Œ����‰‰PICON Lab Session # 5�‰‰---------------------��� PURPOSE� -------�� The purpose of this fifth lab session is to furthur� extend your knowledge of how to build and use other� types of PICON statements and techniques.���‰- EXERCISE 7.�‰ ------------��‰ This exercise illustrates the use of WHENEVER rules.��‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-7".��‰ . Type .��‰ . Exercise 7 Script:��‰ 1) The syntax of this rule expresses the functionality�‰ very well. In the event that the there has been a�‰ difference of 10 since either the last time this rule�‰ was true or since the first time the rule was true,�‰ the appropriate message will be displayed. ��‰ �‰ NOTE: See the PICON Users Guide for more information on�‰ the WHENEVER rule.���‰- EXERCISE 8.�‰ ------------��‰ This exercise illustrates the use of INITIAL rules.��‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-8".��‰ . Type .��‰ . Exercise 8 Script:��‰ 1) The INITIAL rule very simply gets run "initially"�‰ after the RUN command selected. There are times,�‰ though, after selecting RUN, that the INITIAL rule�‰ will not run. These exceptions are noted below:�� a) The INITIAL rule is only executed from a�‰‰ "halted" state. In other words, if the system�‰‰ was "suspended" or "aborted out of" (using the�‰‰ key to stop PICON instead of HALT) then�‰‰ the INITIAL rule does not get run.��‰‰ A "halted" state can be created in only 2 ways:��‰‰‰i) If during the running of PICON the HALT�‰‰‰ command is selected.��‰‰‰ii) If the RESET command is selected, and�‰‰‰ HALT is furthur selected, and confirmed.��‰‰‰ (the RESET command is useful when the�‰‰‰ system is suspended and you wish to have�‰‰‰ a "halted" state)��‰‰ b) The INITIAL rule only runs once from a halted�‰‰ state and never again during the same run.��‰‰ c) There can be as many INITIAL rules as you wish.�‰‰ There is no way to control in which order they�‰‰ are executed, however.���‰ 2) Run this example. The printing of the message is all�‰ that happens. Try the following:��‰ a) [L] on "Halt".��‰‰ [L] on "Run".��‰‰ Notice that the INITIAL rule is executed again.���‰‰ b) Type: . (This stops (suspends) the�‰‰‰‰ PICON system.)��‰‰ [L] on Run. (This resumes the PICON�‰‰‰ system from where it was�‰‰‰ suspended.)��‰‰ Notice that the INITIAL rule is NOT re-executed.��‰‰ c) [L] on "Suspend".��‰‰ [L] on "Run".��‰‰ Notice that the INITIAL rule is NOT re-executed.����‰- EXERCISE 9.�‰ ------------��‰ This exercise illustrates the use of UNCONDITIONAL rules and�‰ other techniques on the use of the variable time.��‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-9".��‰ . Type .��‰ . Exercise 9 Script:��‰ 1) The INITIAL rule sets the value of initial-time = time.�‰ This has the effect of starting a "stopwatch" setting�‰ the value of initial-time to time. Then at any time�‰ during the simulation, the elapsed time can be�‰ computed by subtracting intial-time from time.��‰ All of this may seem unnecessary. The variable time,�‰ however, is respresented differently than just a simple�‰ number. �‰�‰ 2) Next, using the UNCONDITIONAL rule, the value of T1 and�‰ the elapsed time are recorded into a log file for�‰ monitoring purposes. Since this is a simulation and�‰ no real log file has been created, the message is routed�‰ to the engineer's workstation (this screen). We will�‰ discuss the subject of message routing later.��‰ 3) Run this example and note that the message is printed�‰ at one minute intervals. The scan interval for the�‰ UNCONDITIONAL rule is 1 minute as the message prints�‰ "every time".�‰��‰- EXERCISE 10.�‰ -------------��‰ This exercise illustrates the use of "STEP" variables.��‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-10".��‰ . Type .��‰ . Exercise 10 Script:��‰ 1) The DEFINITION rule defines the step variable wave-step�‰ to have 3 different steps, namely:��‰‰ a) start-wave��‰‰ b) wave-increasing��‰‰ c) wave-decreasing���‰ This step variable then is allowed to only be one of�‰ the three which are defined.��‰ 2) The INITIAL rule gives the wave-step step variable its�‰ initial value of "start-wave". One could also set�‰ the initial value by saying "initialize wave-step".�‰ Notice the different grammar for manipulating step�‰ variables. This grammar consist of:��‰‰ a) advance - adjusts the value to any of�‰‰‰‰ the other permissible values��‰‰ b) is - to determine if the step�‰‰‰‰ variable is equal to something��‰‰ c) not - to negate equality��‰ d) is before - equivalent to less than��‰ e) is after - equivalent to greater than��‰‰ f) is at or after - equivalent to greater or equal��‰ g) initialize - sets step variable to beginning.���‰ 3) The IF-THEN rule then checks to see if F1 is increasing.�‰ If so, then the step variable is advanced to the wave-�‰ increasing step.�‰�‰ 4) Select RUN.��‰ 5) Notice that there is no mechanism to detect if the wave�‰ is decreasing.��‰ 6) Set up the appropriate statement(s) which would fix this�‰ problem. See SOLUTION-10 for the answer.����‰- EXERCISE 11.�‰ -------------��‰ This exercise shows how to make use of historical sensor data�‰ in rules. This historical data is accessed in terms of a delayed�‰ value or a rate of change in values.�‰�‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-11".��‰ . Type .��‰ . Exercise 11 Script:��‰ 1) The simulation developed here shows a flow-meter (F1)�‰ which monitors incoming flow, and a tank level sensor�‰ (L1) which reports the value of the tank's level. ��‰ 2) The simulation for F1 initially ramps up, then remains�‰ constant for a period, then ramps down to zero.��‰ 3) The simulation for L1 is based upon the values for F1�‰ and the area of the tank. Here is the equation for L1:��‰ L1 = Old L1 + .0167 * (F1 / tank-area)��‰ where tank-area = 2.02�� 4) The IF-THEN rule determines the change in the level (L1)�‰ by subtracting the value as of 30 seconds ago. This is�‰ then stored in the variable delta-level.��‰ 5) If delta-level is found to be changing too fast, an�‰ appropriate message is sent to the operator. Buried in the�‰ text of the message is the average value of F1 over 5�‰ minutes. This is how to access the average value. ��‰ 6) Run this knowledge base. Notice the ****** which is�‰ printed in the message. Since insufficient data has�‰ been collected to compute an average, the ******'s�‰ get printed. ��� What you should have learned in this exercise:� -----------------------------------------------�� - How to use the WHENEVER rule.�� - How to use the INITIAL rule.�� - How to HALT and SUSPEND the system.�� - How to use UNCONDITIONAL rules.�� - Further uses of step variables.�� - How to use historical data functions such as:��‰. Old values.��‰. Average values.��‰. Rate of change (not discussed, see manual).��‰. Std deviation (not discussed, see manual).��LMFL(:BYTE-SIZE 8 :AUTHOR "DWR" :QFASLP NIL :LENGTH 11104 :CREATION-DATE 2730896540 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LAB-SESSION-6" :TYPE "TEXT" :VERSION 10) -*- Mode:Text; Fonts:(CPTFONTB HL12I) -*-��Œ����‰‰PICON Lab Session # 6�‰‰_____________________��� PURPOSE� _______�� The purpose of this sixth lab session is to introduce a sort of "tool kit"� of techniques in dealing with certain kinds of problems. ���‰- EXERCISE 12.�‰ _____________��‰ This exercise illustrates how to monitor and control activities which � depend upon a time interval to properly function. This exercise will� show how to compute the time it takes to fill up the tank.�‰ manipulate "timer" variables.�‰�‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-12".��‰ . Type .��‰ . Exercise 12 Script:��‰ 1) Rule #1 makes the conclusion that the tank-is-filling if�‰ L1 has been increasing. Notice the use of historical data.�‰ This causes forward chaining on the conclusion thus�‰ invoking rule #3. When it is determined that L1 is not�‰ increasing, the conclusion tank-is-filling is negated,�‰ again causing forward chaining, but this time on the "not�‰ tank-is-filling" conclusion, thus invoking rule #2. The�‰ scan interval of rule #1 is 10 seconds as is the currency�‰ interval of L1.��‰ Here are some notes on the different intervals in PICON:�‰�‰ - The scan interval, as you may remember, is the�‰‰ frequency at which the rule tests its antecedent.��‰‰ - The currency interval establishes the sampling rate�‰‰ at which data is acquired from the data supplier�‰‰ (whatever that might be.) It also serves to establish�‰‰ the length of time which this data is considered.�‰‰ Once a sensor's currency interval has expired, a new�‰‰ value must be obtained from the data supplier in�‰‰ order for a rule to use it.��‰‰ - Just having a sensor present on the schematic, is not�‰‰ enough, however, to obtain values. A rule MUST exist�‰‰ which requests the value of the sensor. This rule,�‰‰ depending on the type, primary or secondary, will�‰‰ determine the way in which data values are supplied.�‰‰ This will be discussed furthur in the RTIME lecture.�‰��‰ 2) Rule #3 then is chained-to when tank-is-filling is true.�‰ The value of fill-time is incremented by 10 seconds when�‰ rule #3 is activated. The INITIAL rule (#4) takes care�‰ of initializing fill-time before the start of the simulation.�‰ It is important to intialize variables which are incremented.��‰ 3) When the "else" clause of rule #1 is concluded, it stops the�‰ incrementing of fill-time, and causes rule #2 to print out�‰ the fill time.��‰ 4) This is a useful technique for controlling timed events. Notice�‰ that only 1 rule has been given a scan interval, namely rule #1.�‰ It is always a good practice to keep the number of rules with�‰ a scan interval (called primary rules) to a minimum.��‰ 5) Run this knowledge base and observe its behavior. ��‰ 6) Modify this knowledge base to print the value of the time it �‰ takes for the tank to empty. See SOLUTION-12 for a possible�‰ method.�‰���‰- EXERCISE 13.�‰ _____________��‰ This exercise illustrates how to monitor "timed" events�‰ using "step" variables as well as the techniques used in�‰ the previous exercise. �‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-13".��‰ . Type .��‰ . Exercise 13 Script:��‰ 1) In the same way as the first exercise, a timer is�‰ started is the level is found to be increasing.�‰ The difference in the exercises stems from the use of�‰ step variables to control the timer. This method gives�‰ the capability of controlling when the timer is�‰ actually running and what its state has been. This is�‰ accomplished by checking the filling-step to see that�‰ it has been filling and it is actually is increasing.�‰ Notice that there is no initial message saying that�‰ the "fill time = 0.0". Nor does the message repeat,�‰ because the filling step is not = filling.��‰ 2) Run this knowledge base.��‰ 3) Modify this exercise to print drain time in a like�‰ manner using the step variable approach.����‰- EXERCISE 14.�‰ _____________��‰ This exercise reviews the "focus" capability.�‰�‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-14".��‰ . Type .��‰ . Exercise 14 Script:��‰ 1) Rule #1 checks for T1 > 212 and does a conclude and a�‰ focus in the case that it is true.��‰ 2) IF the cooler-switch = 1, in other words the cooler is�‰ apparently on, there must be a malfunction.��‰ 3) Run this knowledge base. ��‰ 4) Add a rule which will check the cooler-switch = 0 and�‰ send a message to the operator to turn the switch on.����‰- EXERCISE 15.�‰ _____________��‰ This exercise reviews the activate command.�‰�‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-15".��‰ . Type .��‰ . Exercise 15 Script:��‰ 1) Rule #1, if true will invoke rule #2 becuse of "activating"�‰ CHECK-COOLING rules. [M] on rule #2 to see that its�‰ category = CHECK-COOLING.��‰ 2) Run this knowledge base. ��‰ 3) Change rule #2 to have a category of CHECK-COOLER and an�‰ associated unit of TANK and activate rules only having�‰ this combination of attributes. See SOLUTION #15 for a�‰ possible answer. ����‰- EXERCISE 16.�‰ _____________��‰ This exercise illustrates how to make use of feedback controller�‰ information in rules. ��‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-16".��‰ . Type .��‰ . Exercise 16 Script:��‰ 1) The IF-THEN rule checks the value of F1 - F1 setpoint. F1�‰ refers to the process value whereas F1 setpoint refers to�‰ the desired setting for F1. PICON allows rules to change the�‰ setpoints for various sensors which will be discussed in�‰ the next exercise. In addition to setpoints the following�‰ information may also be used:��‰‰ - high limit - The high limit of this sensor value.��‰‰ - low limit - The low limit of this sensor value.��‰ - output - The controllers adjustment to the�‰‰‰‰ physical device that it is connected�‰‰‰‰ to; this would be a pump or valve�‰‰‰‰ probably.��‰ 2) Notice that the F1 setpoint had to be specially simulated.��‰ 3) Run this knowledge base.����‰- EXERCISE 17.�‰ _____________��‰ This exercise illustrates how to control a process using�‰ setpoint control within the simulation.�‰�‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-17".��‰ . Type .��‰ . Exercise 17 Script:��‰ 1) Rule #1 defines a variable named setpoint-change and sets�‰ it equal to 100 - F1. ��‰ 2) Rule #2 unconditionally sets F1 setpoint equal to 100 +�‰ setpoint-change. This attempts to keep the readings for F1�‰ as steady as possible.��‰ 3) Notice the structure of the simulation statement. Remember�‰ that while in the simulator, if you wish data to be passed�‰ from the simulator to PICON and in this case, from PICON to�‰ the data supplier, you must provide it in the apprpriate�‰ place. F1 setpoint is initially set to 100 then after that�‰ will evaluate to whoever sets it.��‰ 4) Run this knowledge base.��‰ 5) Modify this example such that F1 setpoint will be 79 if F1�‰ is > 100, and 121 if F1 is below 100. See SOLUTION-17.��‰��‰- EXERCISE 18.�‰ _____________��‰ This exercise illustrates how to invoke lisp call statements from�‰ PICON rules.�‰�‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-18".��‰ . Type .��‰ . Exercise 18 Script:��‰ 1) The IF-then rule checks for T12 > 100 and then sends a message�‰ with the square root of T12 imbedded in the text.��‰ 2) The lisp code for the function square-root is contained in the�‰ file:�‰‰‰picon:picon;square-root-code.lisp�‰‰‰_________________________________��‰ 3) Read the lisp code which describes this function:��‰‰a) Type: E‰ (Go to the editor.)��‰‰b) Type: CTRL-X CTRL-F (Find a file.) ��‰‰c) Type: picon:picon;square-root-code.lisp ��‰‰d) The file will be loaded into a buffer and enable�‰‰ editing.��‰‰e) Type: META-X compile buffer ��‰‰f) This will compile the function and allow PICON then�‰‰ to use it in a rule.��‰‰g) Type: 1��‰‰h) Click [L] on "Run".���‰ 4) This example is just to show you how to invoke lisp code�‰ from a PICON rule. A listing of the square-root function�‰ is shown in FIGURE 1. �����‰‰‰FIGURE 1�‰‰‰________�Œ���‰- EXERCISE 19.�‰ _____________��‰ This exercise illustrates how to invoke lisp call statements from�‰ PICON rules.�‰�‰ �‰ . [L] on "Load".��‰ . [L] on "EXERCISE-19".��‰ . Type: E To get into the editor.��‰ . Type: CTRL-X CTRL-F� �‰ . Type: prompt-code.lisp ��‰ . You should see two function definitions and a defvar for:��‰ - (defvar input-value)��‰ - prompt-for-new-value��‰ - get-current-value���‰ . The function 1prompt-for-new-value* will ask you for a new input value� for what you are controlling, in this case the setpoint to a controller.��‰ . The second function, 1get-current-value* simply passes back the value you �‰ provided after you were prompted. ��‰ . The variable 1input-value *holds the value you provided in 1prompt-for-new-value*.�� ��Œ���‰- CASE STUDY #2�‰ _____________��‰ This case study builds upon the first case study presented in�‰ Lab Session 4. Since the solution to Case Study 1 is stored in �‰ in case-1-solution and has also been provided in case-study-2,�‰ use this as a starting place in which to build you solution to �‰ this case study.��‰ . [L] on "Load".��‰ . [L] on "CASE-STUDY-2 .��‰ . You should add your new rules into this file. When you save�‰ it, use a name other than CASE-STUDY-2. ���‰ . Problem description:��‰ This scenario must be monitored for the following:��‰ 1) The time it takes to fill the tank must be recorded to�‰ a log for tracking purposes.��‰ 2) The time to drain the tank and pass the fluid through the�‰ filter must be less than 999 seconds.��‰ 3) Use the control technique used in EXERCISE-19 to provide�‰ new setpoint values for the tank level controller by entering�‰ new values into the lisp function provided.��‰ 4) Save your solution and load "CASE-2-SOLUTION" for one possible�‰ method for a solution.����� What you should have learned in this exercise:� -----------------------------------------------�� - How to monitor and control activities which depend upon the use� of time. �� - How, in more detail, the forward chaining "focus" works, in terms� of its behavior based on the scan and alert intervals.�� - How to simulate and access feedback controller information.�� - How to set the value of a controller setpoint in order to control� a particular function.�� - How to manually set a controller's setpoint using a lisp function.�� - How to call lisp functions from rules. ��LMFL(:BYTE-SIZE 8 :AUTHOR "DWR" :QFASLP NIL :LENGTH 3145 :CREATION-DATE 2729272863 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LAB-SESSION-7" :TYPE "TEXT" :VERSION 4) -*- Mode:Text; Fonts:(CPTFONTB) -*-��Œ����‰‰PICON Lab Session # 7�‰‰---------------------��� PURPOSE� -------�� The purpose of this seventh lab session is to assist you in creating� your own icons.�‰��� 1) The icon definitions are stored as follows:� ___________________________________________���‰a) PICON-ICONS.QFASL‰Is the "root" of the icon library.�‰‰‰‰This file cannot be modified.��‰b) CODE-FOR-LMI-PICON-DEMOS.LISP This file contains a�‰‰‰‰variety‰of usefull icons typically�‰‰‰‰used in‰the LMI demos. The icons in�‰‰‰‰this file typically consist of�‰‰‰‰petro-chemical process-control�‰‰‰‰releated equipment.��‰c) USER-ICONS.LISP This is a customized file of misc. icons�‰‰‰ which have been accumulated over several�‰‰‰ beta sites.��‰d) CLASS-ICONS.LISP‰This file contains three example icons�‰‰‰‰for PICON class. You should refer to�‰‰‰‰this file for help in building your�‰‰‰‰icons. �� � 2) To get started, follow this procedure:� ______________________________________���‰a) Type: E��‰b) Type: CTRL-X CTRL-F��‰c) Type: picon:picon;class-icons.lisp ��‰d) This will display an editor buffer which will allow you to�‰ manipulate your icons. As you can see, there are three examples�‰ you can follow to create your icons. Before proceeding do the�‰ following:��‰‰- Type: CTRL-X CTRL-W (the command to write a file)��‰‰- Type: xxx-icons.lisp (where xxx = your initials)��‰‰- This will simply write out a version of this file for you�‰‰ to use without affecting any other students' work. From now�‰‰ on, refer to your file by the name you just gave it. ��‰e) Refer to the ZMACS Command Summary (provided) to familiarize� yourself with the editor commands. Several of the more common� commands are listed here:��‰‰Move R 1 Char - CTRL-F�‰‰Move L 1 Char - CTRL-B��‰‰Move R 1 Word - META-F�‰‰Move L 1 Word - META-B��‰‰Page Ahead - CTRL-v�‰‰Page Back - META-v��‰‰Line Down - CTRL-n�‰‰Line Up‰ - CTRL-p�‰‰Line Begin - CTRL-a�‰‰Line End - CTRL-e��‰‰Erase R 1 Char - �‰‰Erase L 1 Char - CTRL-d��‰‰Erase R 1 Word - META-�‰‰Erase L 1 Word - META-d��‰‰Erase Line - CTRL-k (from cursor position to the right)�‰� �‰‰Compile Expression - CTRL-Shift-c while the blinking cursor�‰‰ is on the expression you�‰‰ wish to compile.��� 3) Create an Icon.� _______________��‰a) Create a special piping icon which looks like the following picture:��‰�‰‰‰FIGURE 1�‰‰‰________�������Œ��� 3) Create an Icon, continued.� --------------------------��‰b) The icon should be called piping, and have a parent of process-equipment.��‰c) The piping icon should have 1 input port on the left and two output ports�‰ on the right. �� 4) When you have finished adding icons, save your file by:��‰ Typing: CTRL-X CTRL-S (saves the file under the last name it was�‰‰‰‰ written to - the name you earlier supplied)��LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 578 :CREATION-DATE 2713276428 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LAB-SESSION-9" :TYPE "TEXT" :VERSION 1) 4) Once PICON is loaded, (this is when PICON displays the PICON window) do the following:� �‰a) type: ‰‰ ;this allows you to talk to Lisp underneath PICON.� �‰b) type: (load "user-kb.lisp") ;notice that you don't have to specify the logical�‰‰‰‰‰ machine, and directory in this case. When you�‰‰‰‰‰ loaded the file LOAD (in step 3 above) that �‰‰‰‰‰ established the directory where the LOAD file �‰‰‰‰‰ existed (namely DUKE:PICON-CLASS;) as the default�‰‰‰‰‰ directory from now on.��‰c) type: ‰‰ ;this puts you back into PICON control.�LMFL(:BYTE-SIZE 8 :AUTHOR "DWR" :QFASLP NIL :LENGTH 90 :CREATION-DATE 2725724052 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LAB-SESSION-MASTER" :TYPE "TEXT" :VERSION 1) -*- Mode:Text; Fonts:(CPTFONTB) -*-��Œ����‰‰PICON Lab Session # ^�‰‰---------------------�LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 8657 :CREATION-DATE 2734444547 :DIRECTORY "PICON-CLASS" :NAME "LB-CASE-1" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ü¢PF€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ‹€1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ K�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ …€B€MD€B€NC€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€~C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�CASE-STUDY-1ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Case Study 11€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ KB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ KB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ KB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ KB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ KB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ '=B€MB€NƒƒMESSAGE-MUST-PRINT-INTERVAL€F€1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€¢D€B€K†€ KB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€ªD€B€K†€ KB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ r€B€MB€WÃ�STATEMENT-TEXTD€D€C€=€D€C‚PUMP1-MALFUNCTION€C�CONDITION€ƒ€NIL€l…let pump1-malfunction be a named conditionC‚STATEMENT-NUMBER?€F€yƒBACKTRACK-TO-GET-VALUE?€B€-1€D€B€ID€B€JD€B€²D€ B€K†€ p€B€MB€WB€´D€D€B€µD€‚PUMP-MALFUNCTIONB€·B€¹l…let pump-malfunction be a named condition€B€½F€wB€¿B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€¹FÀ( FÀ¤F€v F€ØD€/D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ €€B€MB€WB€´D€D€C€IFD€B€µÃ€CLOCK€F€ÐD€D€ƒ€SENDD€ì�end simulationD€ƒ�DESTINATION€�OPERATORì†if clock = 2000 then send "end simulation" to operatorB€½F€|B€-FÀ¿ F€|FÀÇF€’D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€´CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ¿ F€|FÀÇF€’D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÚB€-FÀ´ F€‚FÀÏF€�B€ìD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€B€K†€ }€B€MB€WB€´D€D€B€ßD€ƒ€NOT€D€C€<€C€F2F€dD€D€B€ãD€,„WARNING: mix-2 to tank-1�dangerD€B€æB€ç¬†if not f2 < 100 then send "WARNING: mix-2 to tank-1¬‚danger" to operator€B€½F€{B€-FÀ¿ F€KFÀÙF€qD€D€B€ùD€B€úB€´B€ûF€ÂFÀ¿ F€KFÀÙF€qD€D€B€D€B€B€ÚB€-FÀ´ F€QFÀáF€^B€D€B€D€B€B€ÚB€-FÀ¥ F€aFÀûF€nB€D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ …€B€MB€WB€´D€D€B€ßD€C€>€C€L1F€|D€D€B€ãD€,…WARNING: tank-1 overfill danger l1 ~6F€B€AD€B€æB€ç¬Šif l1 > 380 then send "WARNING: tank-1 overfill danger l1 ***" with l1 to operator€B€½F€zƒPICON-RULE-SCAN-INTERVALF€CƒPICON-RULE-ALERT-INTERVAL€F€B€-FÀ¿ F€-FÀÂF€CD€D€B€ùD€B€úB€´B€ûF€ÂFÀ¿ F€-FÀÂF€CD€D€B€D€B€B€ÚB€-FÀ´ F€3FÀÊF€@B€JD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€²D€ B€K†€ r€B€MB€WB€´D€D€B€µD€B€¶B€·B€¹l…let pump1-malfunction be a named conditionB€½F€xB€¿B€-B€-FÀ¿ F€FÀ3F€%D€D€B€ùD€B€úB€´B€ûF€ÂFÀ¿ F€FÀ3F€%D€D€B€D€B€B€ÚB€-FÀ´ F€FÀ;F€"B€nD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ r€B€MB€WB€´D€D€B€ßD€B€@C€F1F€<D€D€�CONCLUDEB€¶l…if f1 > 60 then conclude pump1-malfunctionB€½F€rB€MF€B€-FÀ¾ FÀFÀ2F€D€D€B€ùD€B€úB€´B€ûF€ÂFÀ¾ FÀFÀ2F€D€D€B€D€B€B€ÚB€-FÀ³ FÀ FÀ:€B€“D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ g€B€MB€WB€´¬…Rules added by Lauralee Barrett 26 Aug 1986€B€½F€nB€-FÀÏ FÀ7FÀ:FÀ!D€D€B€ùD€B€úB€´B€ûF€ÂFÀÏ FÀ7FÀ:FÀ!D€D€B€D€B€B€ÚB€-FÀÄ FÀ1FÀBFÀ$B€³D€C…NAPH-CHROMATOGRAPH-ANALYTICAL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€FÀÑF€!FÀ³B€àD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ mHB€MB€NB€´D€D€�SIMULATEC€P2€D€ƒ€MAX€€D€C€*€C€F4Ç€3e33ì…simulate P2 with 0 then (max ( 0 ,F4 * 12.65))B€½F€(B€-F€ÞF€xF€Ž F€ŽD€D€B€ùD€B€úB€´B€ûF€ÂF€ÞF€xF€Ž F€ŽD€D€B€D€B€B€ÚB€-F€éF€~F€† F€‹B€æD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ õB€MB€NB€´D€D€B€ßD€B€@B€à€B€¹¬ƒif clock > 0 then do nothingB€½F€B€MF€ B€-FÀ� FÀ{FÀ‚FÀeD€D€B€ùD€B€úB€´B€ûF€ÂFÀ� FÀ{FÀ‚FÀeD€D€B€D€B€B€ÚB€-FÀ… FÀuFÀŠFÀhB€D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ åCB€MB€NB€´D€D€B€ßD€B€@B€Ü€B€¹lƒif P2 > 0 then do nothing€B€½F€iB€MF€ B€-FÀ� FÀ£FÀ�FÀ�D€D€B€ùD€B€úB€´B€ûF€ÂFÀ� FÀ£FÀ�FÀ�D€D€B€D€B€B€ÚB€-FÀ… FÀ�FÀ¥FÀ�B€)D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€  B€MB€NB€´D€D€B€ßD€B€@C€P1€B€¹lƒif P1 > 0 then do nothing€B€½F€*B€MF€ B€-FÀ� FÀÈFÀ�FÀ²D€D€B€ùD€B€úB€´B€ûF€ÂFÀ� FÀÈFÀ�FÀ²D€D€B€D€B€B€ÚB€-FÀ… FÀÂFÀ¥FÀµB€LD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€  B€MB€NB€´D€D€B€ßD€B€@B€á€B€¹lƒif F4 > 0 then do nothing€B€½F€)B€MF€ B€-FÀ� FÀíFÀ�FÀ×D€D€B€ùD€B€úB€´B€ûF€ÂFÀ� FÀíFÀ�FÀ×D€D€B€D€B€B€ÚB€-FÀ… FÀçFÀ¥FÀÚB€nD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ ÿB€MB€NB€´D€D€B€ßD€B€@C€F3€B€¹lƒif F3 > 0 then do nothing€B€½F€!B€MF€ B€-FÀ� FÀFÀ�FÀýD€D€B€ùD€B€úB€´B€ûF€ÂFÀ� FÀFÀ�FÀýD€D€B€D€B€B€ÚB€-FÀ… FÀ FÀ¥FÀB€‘D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ {€B€MD€B€NB€WB€´D€D€B€ßD€B€@B€€B€¹lƒif F2 > 0 then do nothing€B€½F€B€MF€B€-FÀ� FÀ6FÀ�FÀ D€D€B€ùD€B€úB€´B€ûF€ÂFÀ� FÀ6FÀ�FÀ D€D€B€D€B€B€ÚB€-FÀ… FÀ0FÀ¥FÀ#B€´D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ ‹CB€MB€NB€´D€D€B€ßD€B€@B€Œ€B€¹lƒif F1 > 0 then do nothing€B€½F€B€MF€ B€-FÀ� FÀ[FÀ�FÀED€D€B€ùD€B€úB€´B€ûF€ÂFÀ� FÀ[FÀ�FÀED€D€B€D€B€B€ÚB€-FÀ… FÀUFÀ¥FÀHB€ÖD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ x€B€MD€B€NB€WB€´D€D€B€ßD€B€@B€A€B€¹lƒif L1 > 0 then do nothing€B€½F€B€MF€ B€-FÀ� FÀ�FÀ�FÀkD€D€B€ùD€B€úB€´B€ûF€ÂFÀ� FÀ�FÀ�FÀkD€D€B€D€B€B€ÚB€-FÀ… FÀ{FÀ¥FÀnB€ùD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€±D€B€K†€ MB€MB€NB€´D€l…The purpose of these rules is to force the¬…displaying of sensor values on the schematicB€½F€_B€-FÀ‘ FÀµFÀäFÀ�D€D€B€ùD€B€úB€´B€ûF€ÂFÀ‘ FÀµFÀäFÀ�D€D€B€D€B€B€ÚB€-FÀ† FÀ¯FÀ FÀ¢B€D€B€D€B€B€ÚB€-FÀw FÀŸFÀìFÀ’B€D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ 18B€MB€NB€´D€D€B€ÛC�TEMP-STARTB€¹F€P¬ƒsimulate temp-start with 80€B€½F€.B€-F€‡F€˜F€Œ F€®D€D€B€ùD€B€úB€´B€ûF€ÂF€‡F€˜F€Œ F€®D€D€B€D€B€B€ÚB€-F€’F€žF€„ F€«B€@D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ èCB€MB€NB€´D€D€B€Û‚SIM-TANK-AREA-2€B€¹Ç€pl„simulate sim-tank-area-2 with 3.5€B€½F€jB€-F€QF€oF€Œ F€…D€D€B€ùD€B€úB€´B€ûF€ÂF€QF€oF€Œ F€…D€D€B€D€B€B€ÚB€-F€\F€uF€„ F€‚B€aD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ N=B€MB€NB€´D€D€B€ÛÃ�SIM-TANK-AREA€B€¹Ç€£@ ×,„simulate sim-tank-area with 2.02B€½F€WB€-F€ZF€FF€Œ F€\D€D€B€ùD€B€úB€´B€ûF€ÂF€ZF€FF€Œ F€\D€D€B€D€B€B€ÚB€-F€eF€LF€„ F€YB€‚D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ p8B€MB€NB€´D€D€B€ÛB€à€ƒ€TIME,„simulate clock with 0 then time€B€½F€B€-F€cF€F€Œ F€5D€D€B€ùD€B€úB€´B€ûF€ÂF€cF€F€Œ F€5D€D€B€D€B€B€ÚB€-F€nF€%F€„ F€2B€£D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ 98B€MB€NB€´D€D€B€ÛC�TEMP-WAVE€B€¹D€C�PICON-WAVEF€ÐF€ÐF€€p€€F€`T,†simulate local temp-wave with wave with central€l†value 2000 and deviation 2000 and period 8 hours €,‚and phase 21600€B€½F€-B€-F€²F€ÓF€Œ F€ D€D€B€ùD€B€úB€´B€ûF€ÂF€²F€ÓF€Œ F€ D€D€B€D€B€B€ÚB€-F€½F€ÙF€c F€æB€ËD€B€D€B€B€ÚB€-F€ÌF€éF€„ F€öB€ÌD€B€D€B€B€ÚB€-F€ÌF€ùF€RF€B€ÍD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ áCB€MB€NB€´D€D€B€ÛB€H€D€B€àÇ€PB€�l„simulate P1 with 0 then (2.5 * F3)B€½F€\B€-F€KF€ªF€� F€ÀD€D€B€ùD€B€úB€´B€ûF€ãF€KF€ªF€� F€ÀD€D€B€D€B€B€ÚB€-F€VF€°F€‡ F€½B€ûD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ ]HB€MB€NB€´D€D€B€Û�F3-WAVE€B€¹D€B€ÂF€P€F€<€Ç€3S33€ì…simulate local f3-wave with wave with central€ì…value 80 and deviation 0 and period 1 minute €ì�and noise 1.3€B€½F€kB€-F€ÙF€(F€� F€^D€D€B€ùD€B€úB€´B€ûF€ÂF€ÙF€(F€� F€^D€D€B€D€B€B€ÚB€-F€äF€.F€x F€;B€"D€B€D€B€B€ÚB€-F€óF€>F€‡ F€KB€#D€B€D€B€B€ÚB€-F€óF€NF€gF€[B€$D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ mHB€MB€NB€´D€D€B€ÛB€á€D€B€Þ€D€C€-€B€�Ç€ûV“ì…simulate F4 with 0 then (max ( 0, f3 - .021))€B€½F€'B€-F€èF€õF€� F€ D€D€B€ùD€B€úB€´B€ûF€ÂF€èF€õF€� F€ D€D€B€D€B€B€ÚB€-F€óF€ûF€‡ F€B€UD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ \HB€MB€NB€´D€D€B€ÛB€�€D€B€ßD€B€B€¡F€°€D€B€ßD€B€B€¡F€D€ƒ€MIN€B€D€C€+€B€�Ç€3c33D€B€ßD€B€B€¡F€Ð€€,ƒsimulate F3 with 0 then ¬ƒif time < 1200 then 0 else €ì†if time < 1800 then (min (f3-wave, (F3 + 3.1))) else €¬ƒif time < 2000 then 0 else 0B€½F€"B€-F€‘F€�F€� F€ÖD€D€B€ùD€B€úB€´B€ûF€ÂF€‘F€�F€� F€ÖD€D€B€D€B€B€ÚB€-F€œF€–F€sF€£B€†D€B€D€B€B€ÚB€-F€«F€¦F€�F€³B€‡D€B€D€B€B€ÚB€-F€«F€¶F€‡ F€ÃB€ˆD€B€D€B€B€ÚB€-F€«F€ÆF€¦F€ÓB€‰D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ íCB€MB€NB€´D€ D€B€ÛB€B€¹D€B€ßD€B€B€¡F€–D€B€ÂF€dF€dF€X€€F€ÂD€B€ßD€B€B€¡F€ÂD€B€ÂF€d€F€<€Ç€ÿffff€D€B€ßD€B€B€¡F€XD€B€ÂF€dF€dF€X€€F€Â€l‚simulate F2 with €,ƒif time < 150 then wave€,† with central value 100 and deviation 100 and€,… period 600 seconds and phase 450 elseì…if time < 450 then wave with central value 100l‡ and deviation 0 and period 1 minute and noise .4 else €,ƒif time < 600 then wave€,† with central value 100 and deviation 100 and€l… period 600 seconds and phase 450 else 0B€½F€hB€-F€mFÀ&F€� F€pD€D€B€ùD€B€úB€´B€ûF€ÂF€mFÀ&F€� F€pD€ D€B€D€B€B€ÚB€-F€xFÀ F€FÀB€ÙD€B€D€B€B€ÚB€-F€‡FÀF€UFÀB€ÚD€B€D€B€B€ÚB€-F€‡€F€- F€ B€ÛD€B€D€B€B€ÚB€-F€‡F€F€îF€B€ÜD€B€D€B€B€ÚB€-F€‡F€ F€$ F€-B€ÝD€B€D€B€B€ÚB€-F€‡F€0F€‡ F€=B€ÞD€B€D€B€B€ÚB€-F€‡F€@F€UF€MB€ßD€B€D€B€B€ÚB€-F€‡F€PF€- F€]B€àD€B€D€B€B€ÚB€-F€‡F€`F€ F€mB€áD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ íCB€MB€NB€´D€ D€B€ÛB€ŒB€¹D€B€ßD€B€B€¡F€–D€B€ÂF€<F€<F€X€€F€ÂD€B€ßD€B€B€¡F€ÂD€B€ÂF€<€F€<€Ç€ÿÌLÍÌ€D€B€ßD€B€B€¡F€XD€B€ÂF€<F€<F€X€€F€Â€l‚simulate F1 with €B€Úì… with central value 60 and deviation 60 and€B€Ül†if time < 450 then wave with central value 60 and ì† deviation 0 and period 1 minute and noise .3 else €,ƒif time < 600 then wave€ì… with central value 60 and deviation 60 and€l… period 600 seconds and phase 450 else 0B€½F€B€-F€‘FÀ×F€� FÀAD€D€B€ùD€B€úB€´B€ûF€ÂF€‘FÀ×F€� FÀAD€ D€B€D€B€B€ÚB€-F€œFÀÑF€4FÀÄB€OD€B€D€B€B€ÚB€-F€«FÀÁF€yFÀ´B€ÚD€B€D€B€B€ÚB€-F€«FÀ±F€? FÀ¤B€PD€B€D€B€B€ÚB€-F€«FÀ¡F€ FÀ”B€ÜD€B€D€B€B€ÚB€-F€«FÀ‘F€l FÀ„B€QD€B€D€B€B€ÚB€-F€«FÀ�F€‡ FÀtB€RD€B€D€B€B€ÚB€-F€«FÀqF€yFÀdB€SD€B€D€B€B€ÚB€-F€«FÀaF€? FÀTB€TD€B€D€B€B€ÚB€-F€«FÀQF€$ FÀDB€UD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€ B€K†€ b€B€MD€B€NB€WB€´D€ B€ÜC�GAP-VALUE€lƒsimulate T1 with 125 then ¬ƒif time < 600 then 80 else €,ƒif time < 900 then wave€l† with cen...tral value 80 and deviation 170 and€l… period 1200 seconds and phase 300 else ìƒif time < 2400 then 250 else €,ƒif time < 3000 then wave,† with central value 125 and deviation 125 and€ì… period 2400 seconds and phase 1200 else 70€D€B€JD€F€F€ B€-B€½F€B€-F€ÇFÀƒF€¡ FÀíD€D€B€ùD€ƒ�GAPS-IN-TEXTD€D€F€F€ B€úB€´B€ûF€ÂF€ÇFÀƒF€¡ FÀíD€ D€B€D€B€B€ÚB€-F€ÒFÀ}F€»FÀpB€¥D€B€D€B€B€ÚB€-F€áFÀmF€ÓFÀ`B€¦D€B€D€B€B€ÚB€-F€áFÀ]F€¯FÀPB€§D€B€D€B€B€ÚB€-F€áFÀMF€™ FÀ@B€¨D€B€D€B€B€ÚB€-F€áFÀ=F€Z FÀ0B€©D€B€D€B€B€ÚB€-F€áFÀ-F€åFÀ B€ªD€B€D€B€B€ÚB€-F€áFÀF€¸FÀB€«D€B€D€B€B€ÚB€-F€áFÀ F€‡ FÀB€¬D€B€D€B€B€ÚB€-F€áFÀýF€u FÀðB€­D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÙD€B€K†€ ªHB€MB€NB€´D€ D€B€ÛB€A€D€B€ßD€B€B€¡F€XD€B€yD€B€zB€AD€B€àÇ€û=D²FD€C€/€B€ŒB€D€B€àÇ€û=D²FD€B€B€B€^F€�D€B€ßD€B€B€¡F€°F€�D€B€ßD€B€B€¡F€D€B€ÂF€�F€�F€°F€€F€€,ƒsimulate L1 with 0 then l‚if time < 600 thenì… min ((L1 + (.01666 * (F1 / sim-tank-area))€¬‡ + (.01666 * (F2 / sim-tank-area-2))), 400) else€ìƒif time < 1200 then 397 else €,ƒif time < 1800 then wave,† with central value 400 and deviation 400 and€l‡ period 1200 seconds and phase 1800 and shape ramp-down ì€else 0B€½F€B€-F€[FÀ)F€� FÀ“D€D€B€ùD€B€úB€´B€ûF€ÂF€[FÀ)F€� FÀ“D€ D€B€D€B€B€ÚB€-F€fFÀ#F€=FÀB€"D€B€D€B€B€ÚB€-F€uFÀF€FÀB€#D€B€D€B€B€ÚB€-F€uFÀF€ FÀöB€$D€B€D€B€B€ÚB€-F€uFÀóF€‡ FÀæB€%D€B€D€B€B€ÚB€-F€uFÀãF€yFÀÖB€&D€B€D€B€B€ÚB€-F€uFÀÓF€LFÀÆB€'D€B€D€B€B€ÚB€-F€uFÀÃF€ FÀ¶B€(D€B€D€B€B€ÚB€-F€uFÀ³F€~ FÀ¦B€)D€B€D€B€B€ÚB€-F€uFÀ£F€ªFÀ–B€*D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€ÒB€-FÀbFÀFÀDF€4B€D€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€B€ÐF€ B€ÒB€-FÀ�F€„FÀrF€¢C€T1D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€±D€B€K†€ û>B€MB€NB€´,ƒChemical Mixing Process€B€½F€%B€-FÀ'FÀåFÀFFÀÏD€D€B€ùD€B€úB€´B€ûF€ÂFÀ'FÀåFÀFFÀÏD€D€B€D€B€B€ÚB€-FÀFÀßFÀNFÀÒB€ˆD€Ã�MATERIAL-SINK€B€¹F€ùF€lF€5F€ÆÃ€TANK-2D€CƒGUAGE-PRESSURE-THRU-SENSORD€B€ÒB€-F€ŠF€¨F€¨F€ØB€ÜD€Ã�HEAT-EXCHANGERB€¹FÀlF€¨FÀF€ÆÃ€COOLERD€B€wD€B€ÒB€-F€>F€¨F€\F€ãB€áD€‚MATERIAL-SOURCE€B€¹FÀ>F€FÀF€aÀMIX-2€D€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€¹FÀÎF€"FÀ¡F€JÀPUMP-2D€B€wD€B€ÒB€-F€žFÀF€¼FÀDB€�D€ƒ‚TWO-INPUT-MIXED-TANKB€¹F€)FÀ|F€eFÀ"ÀTANK-1D€B€ÏD€B€ÒB€-B€ÐF€F€hFÀ˜F€†FÀzB€AD€B€«D€B€ÒB€-F€äFÀF€FÀOB€HD€…EQUAL-PERCENTAGE-VARIABLE-CONTROL-VALVE€B€¹FÀ<FÀ�FÀFÀ_C€V1D€B€wD€B€ÒB€-FÀŽFÀ˜FÀpFÀ]B€ŒD€B€ÆB€¹FÀÖFÀoFÀ©FÀGÀPUMP-1D€B€¿B€¹FÀBFÀŠFÀFÀ0ÀMIX-1€D€D€C‚CONTROL-CONNECTIONB€¹F€B€¹ƒƒSENSOR-CONTROLLER-CONNECTIONB€¹FÀD€C�FLOW-PIPE€B€¹F€F€(ÃTHRU-SENSOR-OUTPUT-CONNECTION€ƒMIXED-TANK-INPUT-PORT-2€F€TD€B€B€¹F€B€¹B€B€¹FÀD€B€B€¹F€&F€ÂPUMP-OUTPUT-CONNECTIONƒƒTHRU-SENSOR-INPUT-CONNECTIONB€¹D€B€B€¹F€B€¹B€B€¹FÀD€B€B€¹F€#F€ƒƒHEAT-TRANSFER-OUTPUT-PORT-1€C‚PORT-SENSOR-INPUT€B€¹D€B€B€¹B€¹F€+B€¹ƒVALVE-CONTROL-CONNECTIONFÀD€B€B€¹F€)B€¹B€B€¹FÀD€B€B€¹B€¹F€&B€¹CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€B€¹F€"F€!B€ ‚SINK-INPUT-PORT€F€2D€B€B€¹F€"B€¹B€B€¹FÀD€B€B€¹B€¹F€#B€¹CƒHEAT-TRANSFER-INPUT-PORT-1F€D€B€B€¹F€#F€$ƒƒHEAT-TRANSFER-OUTPUT-PORT-2€B€B€¹D€B€B€¹F€*F€#B€ CƒHEAT-TRANSFER-INPUT-PORT-2D€F€F€vFÀÅF€@D€B€B€¹F€$F€"B€ B€B€¹D€B€B€¹F€$B€¹B€B€¹FÀD€B€B€¹F€%F€&ƒHOLDER-OUTPUT-CONNECTIONÂPUMP-INPUT-CONNECTION€B€¹D€B€B€¹F€'F€*B€ B€B€¹D€B€B€¹F€'B€¹B€B€¹FÀD€B€B€¹F€(F€'B€IB€B€¹D€B€B€¹B€¹F€)B€¹B€D€FÀ!F€ D€B€B€¹F€*B€¹B€B€¹FÀD€B€B€¹F€+F€(ƒVALVE-OUTPUT-CONNECTION€ƒMIXED-TANK-INPUT-PORT-1€B€¹D€B€B€¹F€,F€+B€ ÂVALVE-INPUT-CONNECTIONB€¹D€B€B€¹F€,B€¹B€B€¹FÀD€B€B€¹B€¹F€-B€¹B€%FÀD€B€B€¹F€-F€,B€B€B€¹D€B€B€¹F€.F€-B€IB€JB€¹B€¹1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 8941 :CREATION-DATE 2734453283 :DIRECTORY "PICON-CLASS" :NAME "LB-CASE-1" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ü¢)rF€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ �1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ K�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ �B€MD€B€NC€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�CASE-STUDY-1ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Case Study 11€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ KB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ KB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ KB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ KB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ KB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ '=B€MB€NƒƒMESSAGE-MUST-PRINT-INTERVAL€F€1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€¢D€B€K†€ KB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€ªD€B€K†€ KB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ p€B€MB€WÃ�STATEMENT-TEXTD€D€C€=€D€‚PUMP-MALFUNCTIONC�CONDITION€ƒ€NIL€l…let pump-malfunction be a named condition€C‚STATEMENT-NUMBER?€F€wƒBACKTRACK-TO-GET-VALUE?€B€-1€D€B€ID€B€JD€B€²D€ B€K†€ r€B€MB€WB€´D€D€B€µD€C‚PUMP1-MALFUNCTION€B€·B€¹l…let pump1-malfunction be a named conditionB€½F€yB€¿B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€¹FÀ( FÀ¤F€v F€ØD€/D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ �B€MB€WB€´D€D€C€IFD€C€>€C€F1F€<D€D€ƒ€SENDD€,†pump malfunction, mix-1 to tank-1 flow ~6F >�60€B€áD€ƒ�DESTINATION€�OPERATORlˆif f1 > 60 then send "pump malfunction, mix-1 to tank-1 flow *** >,ƒ60" with f1 to operator€B€½F€rƒPICON-RULE-SCAN-INTERVALF€B€-FÀ¾ FÀFÀZF€D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€´CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ¾ FÀFÀZF€D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÚB€-FÀ³ FÀ FÀbF€B€íD€B€D€B€B€ÚB€-FÀ¤ F€FÀÖF€B€îD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ �B€MB€WB€´D€D€B€ßD€B€àD€Ã�RATE-OF-CHANGEC€L1F€F€€D€D€B€äD€,„tank level ~6F still increasing€B€D€B€çB€è,†if the rate per second over 15 seconds of l1 > 0,†then send "tank level *** still increasing" withì�l1 to operatorC‚STATEMENT-KEYWORDSƒ€TANKB€½F€~B€-FÀ¾ F€šFÀíF€ÐD€D€B€ýD€B€þB€´B€ÿF€ÂFÀ¾ F€šFÀíF€ÐD€D€B€D€B€B€ÚB€-FÀ³ F€ FÀF€­B€&D€B€D€B€B€ÚB€-FÀ¤ F€°FÀõF€½B€'D€B€D€B€B€ÚB€-FÀ¤ F€ÀFÀ' F€ÍB€(D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ �B€MB€WB€´D€D€B€ßD€B€àÀCLOCK€F€ÐD€D€B€äD€ì�end simulationD€B€çB€èì†if clock > 2000 then send "end simulation" to operatorB€½F€|B€ñF€B€-FÀ¿ F€|FÀÇF€’D€D€B€ýD€B€þB€´B€ÿF€ÂFÀ¿ F€|FÀÇF€’D€D€B€D€B€B€ÚB€-FÀ´ F€‚FÀÏF€�B€]D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ �B€MB€WB€´D€D€B€ßD€C€€C€F2F€dD€D€B€äD€,†pump malfunction, mix-2 to tank-1�flow ~6F > 100B€}D€B€çB€è,‡if f2  100 then send "pump malfunction, mix-2 to tank-1¬„flow *** > 100" with f2 to operator€B€½F€{B€ñF€B€-FÀ¿ F€KFÀµF€qD€D€B€ýD€B€þB€´B€ÿF€ÂFÀ¿ F€KFÀµF€qD€D€B€D€B€B€ÚB€-FÀ´ F€QFÀ½F€^B€†D€B€D€B€B€ÚB€-FÀ¥ F€aFÀkF€nB€‡D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ �B€MB€WB€´D€D€B€ßD€B€àB€F€|D€D€B€äD€,†WARNING: tank-1 overfill danger level ~6F > 380B€D€B€çB€èD€ÀFOCUS€B€+¬‹if l1 > 380 then send "WARNING: tank-1 overfill danger level *** > 380" with l1 to operatorl‚and focus on tank€B€½F€zB€ñF€CƒPICON-RULE-ALERT-INTERVAL€F€B€-FÀ¿ F€FÀqF€CD€D€B€ýD€B€þB€´B€ÿF€ÂFÀ¿ F€FÀqF€CD€D€B€D€B€B€ÚB€-FÀ´ F€#FÀyF€0B€¶D€B€D€B€B€ÚB€-FÀ¥ F€3FÀ F€@B€·D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ �B€MB€WB€´¬…Rules added by Lauralee Barrett 26 Aug 1986€B€½F€nB€-FÀÏ FÀ7FÀ:FÀ!D€D€B€ýD€B€þB€´B€ÿF€ÂFÀÏ FÀ7FÀ:FÀ!D€D€B€D€B€B€ÚB€-FÀÄ FÀ1FÀBFÀ$B€ßD€C…NAPH-CHROMATOGRAPH-ANALYTICAL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€FÀÑF€!FÀ³B€TD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ mHB€MB€NB€´D€D€�SIMULATEC€P2€D€ƒ€MAX€€D€C€*€C€F4Ç€3e33ì…simulate P2 with 0 then (max ( 0 ,F4 * 12.65))B€½F€(B€-F€ÞF€xF€Ž F€ŽD€D€B€ýD€B€þB€´B€ÿF€ÂF€ÞF€xF€Ž F€ŽD€D€B€D€B€B€ÚB€-F€éF€~F€† F€‹B€D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ õB€MB€NB€´D€D€B€ßD€B€àB€T€B€¹¬ƒif clock > 0 then do nothingB€½F€B€ñF€ B€-FÀ� FÀ{FÀ‚FÀeD€D€B€ýD€B€þB€´B€ÿF€ÂFÀ� FÀ{FÀ‚FÀeD€D€B€D€B€B€ÚB€-FÀ… FÀuFÀŠFÀhB€3D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ åCB€MB€NB€´D€D€B€ßD€B€àB€€B€¹lƒif P2 > 0 then do nothing€B€½F€iB€ñF€ B€-FÀ� FÀ£FÀ�FÀ�D€D€B€ýD€B€þB€´B€ÿF€ÂFÀ� FÀ£FÀ�FÀ�D€D€B€D€B€B€ÚB€-FÀ… FÀ�FÀ¥FÀ�B€UD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€  B€MB€NB€´D€D€B€ßD€B€àC€P1€B€¹lƒif P1 > 0 then do nothing€B€½F€*B€ñF€ B€-FÀ� FÀÈFÀ�FÀ²D€D€B€ýD€B€þB€´B€ÿF€ÂFÀ� FÀÈFÀ�FÀ²D€D€B€D€B€B€ÚB€-FÀ… FÀÂFÀ¥FÀµB€xD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€  B€MB€NB€´D€D€B€ßD€B€àB€ €B€¹lƒif F4 > 0 then do nothing€B€½F€)B€ñF€ B€-FÀ� FÀíFÀ�FÀ×D€D€B€ýD€B€þB€´B€ÿF€ÂFÀ� FÀíFÀ�FÀ×D€D€B€D€B€B€ÚB€-FÀ… FÀçFÀ¥FÀÚB€šD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ ÿB€MB€NB€´D€D€B€ßD€B€àC€F3€B€¹lƒif F3 > 0 then do nothing€B€½F€!B€ñF€ B€-FÀ� FÀFÀ�FÀýD€D€B€ýD€B€þB€´B€ÿF€ÂFÀ� FÀFÀ�FÀýD€D€B€D€B€B€ÚB€-FÀ… FÀ FÀ¥FÀB€½D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ {€B€MD€B€NB€WB€´D€D€B€ßD€B€àB€}€B€¹lƒif F2 > 0 then do nothing€B€½F€B€ñF€B€-FÀ� FÀ6FÀ�FÀ D€D€B€ýD€B€þB€´B€ÿF€ÂFÀ� FÀ6FÀ�FÀ D€D€B€D€B€B€ÚB€-FÀ… FÀ0FÀ¥FÀ#B€àD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ ‹CB€MB€NB€´D€D€B€ßD€B€àB€á€B€¹lƒif F1 > 0 then do nothing€B€½F€B€ñF€ B€-FÀ� FÀ[FÀ�FÀED€D€B€ýD€B€þB€´B€ÿF€ÂFÀ� FÀ[FÀ�FÀED€D€B€D€B€B€ÚB€-FÀ… FÀUFÀ¥FÀHB€D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€ B€K†€ x€B€MD€B€NB€WB€´D€D€B€ßD€B€àB€€B€¹lƒif L1 > 0 then do nothing€B€½F€B€ñF€ B€-FÀ� FÀ�FÀ�FÀkD€D€B€ýD€B€þB€´B€ÿF€ÂFÀ� FÀ�FÀ�FÀkD€D€B€D€B€B€ÚB€-FÀ… FÀ{FÀ¥FÀnB€%D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€B€K†€ MB€MB€NB€´D€l…The purpose of these rules is to force the¬…displaying of sensor values on the schematicB€½F€_B€-FÀ‘ FÀµFÀäFÀ�D€D€B€ýD€B€þB€´B€ÿF€ÂFÀ‘ FÀµFÀäFÀ�D€D€B€D€B€B€ÚB€-FÀ† FÀ¯FÀ FÀ¢B€DD€B€D€B€B€ÚB€-FÀw FÀŸFÀìFÀ’B€ED€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ 18B€MB€NB€´D€D€B€C�TEMP-STARTB€¹F€P¬ƒsimulate temp-start with 80€B€½F€.B€-F€‡F€˜F€Œ F€®D€D€B€ýD€B€þB€´B€ÿF€ÂF€‡F€˜F€Œ F€®D€D€B€D€B€B€ÚB€-F€’F€žF€„ F€«B€lD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ èCB€MB€NB€´D€D€B€‚SIM-TANK-AREA-2€B€¹Ç€pl„simulate sim-tank-area-2 with 3.5€B€½F€jB€-F€QF€oF€Œ F€…D€D€B€ýD€B€þB€´B€ÿF€ÂF€QF€oF€Œ F€…D€D€B€D€B€B€ÚB€-F€\F€uF€„ F€‚B€�D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ N=B€MB€NB€´D€D€B€Ã�SIM-TANK-AREA€B€¹Ç€£@ ×,„simulate sim-tank-area with 2.02B€½F€WB€-F€ZF€FF€Œ F€\D€D€B€ýD€B€þB€´B€ÿF€ÂF€ZF€FF€Œ F€\D€D€B€D€B€B€ÚB€-F€eF€LF€„ F€YB€®D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ p8B€MB€NB€´D€D€B€B€T€ƒ€TIME,„simulate clock with 0 then time€B€½F€B€-F€cF€F€Œ F€5D€D€B€ýD€B€þB€´B€ÿF€ÂF€cF€F€Œ F€5D€D€B€D€B€B€ÚB€-F€nF€%F€„ F€2B€ÏD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ 98B€MB€NB€´D€D€B€C�TEMP-WAVE€B€¹D€C�PICON-WAVEF€ÐF€ÐF€€p€€F€`T,†simulate local temp-wave with wave with central€l†value 2000 and deviation 2000 and period 8 hours €,‚and phase 21600€B€½F€-B€-F€²F€ÓF€Œ F€ D€D€B€ýD€B€þB€´B€ÿF€ÂF€²F€ÓF€Œ F€ D€D€B€D€B€B€ÚB€-F€½F€ÙF€c F€æB€÷D€B€D€B€B€ÚB€-F€ÌF€éF€„ F€öB€øD€B€D€B€B€ÚB€-F€ÌF€ùF€RF€B€ùD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ áCB€MB€NB€´D€D€B€B€t€D€B€ Ç€PB€¹l„simulate P1 with 0 then (2.5 * F3)B€½F€\B€-F€KF€ªF€� F€ÀD€D€B€ýD€B€þB€´B€ÿF€ãF€KF€ªF€� F€ÀD€D€B€D€B€B€ÚB€-F€VF€°F€‡ F€½B€'D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ ]HB€MB€NB€´D€D€B€�F3-WAVE€B€¹D€B€îF€P€F€<€Ç€3S33€ì…simulate local f3-wave with wave with central€ì…value 80 and deviation 0 and period 1 minute €ì�and noise 1.3€B€½F€kB€-F€ÙF€(F€� F€^D€D€B€ýD€B€þB€´B€ÿF€ÂF€ÙF€(F€� F€^D€D€B€D€B€B€ÚB€-F€äF€.F€x F€;B€ND€B€D€B€B€ÚB€-F€óF€>F€‡ F€KB€OD€B€D€B€B€ÚB€-F€óF€NF€gF€[B€PD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ mHB€MB€NB€´D€D€B€B€ €D€B€ €D€C€-€B€¹Ç€ûV“ì…simulate F4 with 0 then (max ( 0, f3 - .021))€B€½F€'B€-F€èF€õF€� F€ D€D€B€ýD€B€þB€´B€ÿF€ÂF€èF€õF€� F€ D€D€B€D€B€B€ÚB€-F€óF€ûF€‡ F€B€�D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ \HB€MB€NB€´D€D€B€B€¹€D€B€ßD€C€<€B€ÍF€°€D€B€ßD€B€ B€ÍF€D€ƒ€MIN€B€ED€C€+€B€¹Ç€3c33D€B€ßD€B€ B€ÍF€Ð€€,ƒsimulate F3 with 0 then ¬ƒif time < 1200 then 0 else €ì†if time < 1800 then (min (f3-wave, (F3 + 3.1))) else €¬ƒif time < 2000 then 0 else 0B€½F€"B€-F€‘F€�F€� F€ÖD€D€B€ýD€B€þB€´B€ÿF€ÂF€‘F€�F€� F€ÖD€D€B€D€B€B€ÚB€-F€œF€–F€sF€£B€³D€B€D€B€B€ÚB€-F€«F€¦F€�F€³B€´D€B€D€B€B€ÚB€-F€«F€¶F€‡ F€ÃB€µD€B€D€B€B€ÚB€-F€«F€ÆF€¦F€ÓB€¶D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ íCB€MB€NB€´D€ D€B€B€}B€¹D€B€ßD€B€ B€ÍF€–D€B€îF€dF€dF€X€€F€ÂD€B€ßD€B€ B€ÍF€ÂD€B€îF€d€F€<€Ç€ÿffff€D€B€ßD€B€ B€ÍF€XD€B€îF€dF€dF€X€€F€Â€l‚simulate F2 with €,ƒif time < 150 then wave€,† with central value 100 and deviation 100 and€,… period 600 seconds and phase 450 elseì…if time < 450 then wave with central value 100l‡ and deviation 0 and period 1 minute and noise .4 else €,ƒif time < 600 then wave€,† with central value 100 and deviation 100 and€l… period 600 seconds and phase 450 else 0B€½F€hB€-F€mFÀ&F€� F€pD€D€B€ýD€B€þB€´B€ÿF€ÂF€mFÀ&F€� F€pD€ D€B€D€B€B€ÚB€-F€xFÀ F€FÀB€D€B€D€B€B€ÚB€-F€‡FÀF€UFÀB€D€B€D€B€B€ÚB€-F€‡€F€- F€ B€D€B€D€B€B€ÚB€-F€‡F€F€îF€B€ D€B€D€B€B€ÚB€-F€‡F€ F€$ F€-B€ D€B€D€B€B€ÚB€-F€‡F€0F€‡ F€=B€ D€B€D€B€B€ÚB€-F€‡F€@F€UF€MB€ D€B€D€B€B€ÚB€-F€‡F€PF€- F€]B€ D€B€D€B€B€ÚB€-F€‡F€`F€ F€mB€D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ íCB€MB€NB€´D€ D€B€B€áB€¹D€B€ßD€B€ B€ÍF€–D€B€îF€<F€<F€X€€F€ÂD€B€ßD€B€ B€ÍF€ÂD€B€îF€<€F€<€Ç€ÿÌLÍÌ€D€B€ßD€B€ B€ÍF€XD€B€îF€<F€<F€X€€F€Â€l‚simulate F1 with €B€ì… with central value 60 and deviation 60 and€B€ l†if time < 450 then wave with central value 60 and ì† deviation 0 and period 1 minute and noise .3 else €,ƒif time < 600 then wave€ì… with central value 60 and deviation 60 and€l… period 600 seconds and phase 450 else 0B€½F€B€-F€‘FÀ×F€� FÀAD€D€B€ýD€B€þB€´B€ÿF€ÂF€‘FÀ×F€� FÀAD€ D€B€D€B€B€ÚB€-F€œFÀÑF€4FÀÄB€|D€B€D€B€B€ÚB€-F€«FÀÁF€yFÀ´B€D€B€D€B€B€ÚB€-F€«FÀ±F€? FÀ¤B€}D€B€D€B€B€ÚB€-F€«FÀ¡F€ FÀ”B€ D€B€D€B€B€ÚB€-F€«FÀ‘F€l FÀ„B€~D€B€D€B€B€ÚB€-F€«FÀ�F€‡ FÀtB€D€B€D€B€B€ÚB€-F€«FÀqF€yFÀdB€€D€B€D€B€B€ÚB€-F€«FÀaF€? FÀTB€�D€B€D€B€B€ÚB€-F€«FÀQF€$ FÀDB€‚D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€ B€K†€ b€B€MD€B€NB€WB€´D€ B€ÜC�GAP-VALUE€lƒsimulate T1 with 125 then ¬ƒif time < 600 then 80 else €,ƒif time < 900 then wave€l† with cen...tral value 80 and deviation 170 and€l… period 1200 seconds and phase 300 else ìƒif time < 2400 then 250 else €,ƒif time < 3000 then wave,† with central value 125 and deviation 125 and€ì… period 2400 seconds and phase 1200 else 70€D€B€JD€F€F€ B€-B€½F€B€-F€ÇFÀƒF€¡ FÀíD€D€B€ýD€ƒ�GAPS-IN-TEXTD€D€F€F€ B€þB€´B€ÿF€ÂF€ÇFÀƒF€¡ FÀíD€ D€B€D€B€B€ÚB€-F€ÒFÀ}F€»FÀpB€ÒD€B€D€B€B€ÚB€-F€áFÀmF€ÓFÀ`B€ÓD€B€D€B€B€ÚB€-F€áFÀ]F€¯FÀPB€ÔD€B€D€B€B€ÚB€-F€áFÀMF€™ FÀ@B€ÕD€B€D€B€B€ÚB€-F€áFÀ=F€Z FÀ0B€ÖD€B€D€B€B€ÚB€-F€áFÀ-F€åFÀ B€×D€B€D€B€B€ÚB€-F€áFÀF€¸FÀB€ØD€B€D€B€B€ÚB€-F€áFÀ F€‡ FÀB€ÙD€B€D€B€B€ÚB€-F€áFÀýF€u FÀðB€ÚD€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€D€B€K†€ ªHB€MB€NB€´D€ D€B€B€€D€B€ßD€B€ B€ÍF€XD€B€¦D€B€§B€D€B€ Ç€û=D²FD€C€/€B€áB€«D€B€ Ç€û=D²FD€B€5B€}B€ŠF€�D€B€ßD€B€ B€ÍF€°F€�D€B€ßD€B€ B€ÍF€D€B€îF€�F€�F€°F€€F€€,ƒsimulate L1 with 0 then l‚if time < 600 thenì… min ((L1 + (.01666 * (F1 / sim-tank-area))€¬‡ + (.01666 * (F2 / sim-tank-area-2))), 400) else€ìƒif time < 1200 then 397 else €,ƒif time < 1800 then wave,† with central value 400 and deviation 400 and€l‡ period 1200 seconds and phase 1800 and shape ramp-down ì€else 0B€½F€B€-F€[FÀ)F€� FÀ“D€D€B€ýD€B€þB€´B€ÿF€ÂF€[FÀ)F€� FÀ“D€ D€B€D€B€B€ÚB€-F€fFÀ#F€=FÀB€OD€B€D€B€B€ÚB€-F€uFÀF€FÀB€PD€B€D€B€B€ÚB€-F€uFÀF€ FÀöB€QD€B€D€B€B€ÚB€-F€uFÀóF€‡ FÀæB€RD€B€D€B€B€ÚB€-F€uFÀãF€yFÀÖB€SD€B€D€B€B€ÚB€-F€uFÀÓF€LFÀÆB€TD€B€D€B€B€ÚB€-F€uFÀÃF€ FÀ¶B€UD€B€D€B€B€ÚB€-F€uFÀ³F€~ FÀ¦B€VD€B€D€B€B€ÚB€-F€uFÀ£F€ªFÀ–B€WD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€þB€-FÀbFÀFÀDF€4B€}D€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€B€üF€ B€þB€-FÀ�F€„FÀrF€¢C€T1D€B€×D€B€ØB€ÚB€-B€ÛD€B€ÜD€B€ID€B€JD€B€ÝD€B€K†€ û>B€MB€NB€´,ƒChemical Mixing Process€B€½F€%B€-FÀ'FÀåFÀFFÀÏD€D€B€ýD€B€þB€´B€ÿF€ÂFÀ'FÀåFÀFFÀÏD€D€B€D€B€B€ÚB€-FÀFÀßFÀNFÀÒB€µD€Ã�MATERIAL-SINK€B€¹F€ùF€lF€5F€ÆÃ€TANK-2D€CƒGUAGE-PRESSURE-THRU-SENSORD€B€þB€-F€ŠF€¨F€¨F€ØB€D€Ã�HEAT-EXCHANGERB€¹FÀlF€¨FÀF€ÆÃ€COOLERD€B€¤D€B€þB€-F€>F€¨F€\F€ãB€ D€‚MATERIAL-SOURCE€B€¹FÀ>F€FÀF€aÀMIX-2€D€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€¹FÀÎF€"FÀ¡F€JÀPUMP-2D€B€¤D€B€þB€-F€žFÀF€¼FÀDB€¹D€ƒ‚TWO-INPUT-MIXED-TANKB€¹F€)FÀ|F€eFÀ"ÀTANK-1D€B€ûD€B€þB€-B€üF€F€hFÀ˜F€†FÀzB€D€B€ØD€B€þB€-F€äFÀF€FÀOB€tD€…EQUAL-PERCENTAGE-VARIABLE-CONTROL-VALVE€B€¹FÀ<FÀ�FÀFÀ_C€V1D€B€¤D€B€þB€-FÀŽFÀ˜FÀpFÀ]B€áD€B€óB€¹FÀÖFÀoFÀ©FÀGÀPUMP-1D€B€ìB€¹FÀBFÀŠFÀFÀ0ÀMIX-1€D€D€C‚CONTROL-CONNECTIONB€¹F€B€¹ƒƒSENSOR-CONTROLLER-CONNECTIONB€¹FÀD€C�FLOW-PIPE€B€¹F€F€(ÃTHRU-SENSOR-OUTPUT-CONNECTION€ƒMIXED-TANK-INPUT-PORT-2€F€TD€B€.B€¹F€B€¹B€0B€¹FÀD€B€3B€¹F€&F€ÂPUMP-OUTPUT-CONNECTIONƒƒTHRU-SENSOR-INPUT-CONNECTIONB€¹D€B€.B€¹F€B€¹B€0B€¹FÀD€B€3B€¹F€#F€ƒƒHEAT-TRANSFER-OUTPUT-PORT-1€C‚PORT-SENSOR-INPUT€B€¹D€B€.B€¹B€¹F€+B€¹ƒVALVE-CONTROL-CONNECTIONFÀD€B€.B€¹F€)B€¹B€0B€¹FÀD€B€.B€¹B€¹F€&B€¹CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€3B€¹F€"F€!B€6‚SINK-INPUT-PORT€F€2D€B€.B€¹F€"B€¹B€0B€¹FÀD€B€3B€¹B€¹F€#B€¹CƒHEAT-TRANSFER-INPUT-PORT-1F€D€B€3B€¹F€#F€$ƒƒHEAT-TRANSFER-OUTPUT-PORT-2€B€@B€¹D€B€3B€¹F€*F€#B€6CƒHEAT-TRANSFER-INPUT-PORT-2D€F€F€vFÀÅF€@D€B€3B€¹F€$F€"B€6B€@B€¹D€B€.B€¹F€$B€¹B€0B€¹FÀD€B€3B€¹F€%F€&ƒHOLDER-OUTPUT-CONNECTIONÂPUMP-INPUT-CONNECTION€B€¹D€B€3B€¹F€'F€*B€6B€@B€¹D€B€.B€¹F€'B€¹B€0B€¹FÀD€B€3B€¹F€(F€'B€vB€@B€¹D€B€3B€¹B€¹F€)B€¹B€HD€FÀ!F€ D€B€.B€¹F€*B€¹B€0B€¹FÀD€B€3B€¹F€+F€(ƒVALVE-OUTPUT-CONNECTION€ƒMIXED-TANK-INPUT-PORT-1€B€¹D€B€3B€¹F€,F€+B€6ÂVALVE-INPUT-CONNECTIONB€¹D€B€.B€¹F€,B€¹B€0B€¹FÀD€B€.B€¹B€¹F€-B€¹B€RFÀD€B€3B€¹F€-F€,B€?B€@B€¹D€B€3B€¹F€.F€-B€vB€wB€¹B€¹1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 2720 :CREATION-DATE 2734455505 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-10" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ü¢×zF€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ B�1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ´L�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ 0�B€MD€B€NC€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-10€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 10€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ ´LB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ ´LB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ ´LB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ ´LB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ ´LB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ ´LB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ ´LB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ ´LB€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ ?�B€MB€WÃ�STATEMENT-TEXTD€D€C€IFD€C€ISC�WAVE-STEP€‚WAVE-DECREASING€D€D€ƒ€SENDD€lƒWave for f1 is decreasing€D€ƒ�DESTINATION€�OPERATORl…if wave-step is wave-decreasing then send ,…"Wave for f1 is decreasing" to operator€C‚STATEMENT-NUMBER?€F€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀF€bF€{F€ˆD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€¿CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀF€bF€{F€ˆD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ºB€-FÀF€hF€sF€uB€ÎD€B€èD€B€éB€ºB€-FÀ÷F€xF€gF€…B€ÏD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€½D€ B€K†€ DIB€MB€NB€¿D€D€B€ÀD€B€ÁB€Â‚WAVE-INCREASING€D€D€B€ÅD€lƒWave for F1 is increasing€D€B€ÈB€Él…if wave-step is wave-increasing then send€,…"Wave for F1 is increasing" to operator€B€ÑF€B€ÓF€ B€-FÀFÀ#F€pF€D€D€B€ßD€B€àB€¿B€áF€ÂFÀFÀ#F€pF€D€D€B€èD€B€éB€ºB€-FÀFÀF€hFÀB€D€B€èD€B€éB€ºB€-FÀùFÀ F€e€B€D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€½D€ B€K†€ 3�B€MB€WB€¿D€D€B€ÀD€C€<€C€F1D€Ã�DELAYED-VALUE€B€*F€D€D€�ADVANCE€B€ÂB€Ãl†if f1 < f1 as of 15 seconds ago then advance step€ì„variable wave-step to wave-decreasing€B€ÑF€B€ÓF€ B€-FÀF€1F€ºF€WD€D€B€ßD€B€àB€¿B€áF€ÂFÀF€1F€ºF€WD€D€B€èD€B€éB€ºB€-FÀF€7F€²F€DB€3D€B€èD€B€éB€ºB€-FÀ÷F€GF€UF€TB€4D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ jMB€MB€NB€¿D€D€�SIMULATEB€*B€²D€C�PICON-WAVEF€dF€2F€°,†simulate F1 with wave with central value 100 andl„deviation 50 and period 20 minutesB€ÑF€B€-FÀF€ÌF€°F€òD€D€B€ßD€B€àB€¿B€áF€ÂFÀF€ÌF€°F€òD€D€B€èD€B€éB€ºB€-FÀF€ÒF€¨F€ßB€aD€B€èD€B€éB€ºB€-FÀøF€âF€9F€ïB€bD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€îFÀcF€ FÀ(B€*D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€½D€ B€K†€ oMB€MB€NB€¿D€D€B€ÀD€C€>€B€*D€B€+B€*F€D€D€B€/B€ÂB€ûl†if f1 > f1 as of 15 seconds ago then advance step€ì„variable wave-step to wave-increasing€B€ÑF€B€ÓF€ B€-FÀFÀZF€¸FÀ4D€D€B€ßD€B€àB€¿B€áF€ÂFÀFÀZF€¸FÀ4D€D€B€èD€B€éB€ºB€-FÀFÀTF€°FÀGB€•D€B€èD€B€éB€ºB€-FÀùFÀDF€SFÀ7B€–D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€C�DEFINITIOND€B€K†€ qMB€MB€NB€¿D€D€ƒSTEP-VARIABLE-DEFINITIONB€ÂD€C�START-WAVEB€ûB€Ãl…let step variable wave-step be start-wave,,„wave-increasing, wave-decreasingB€ÑF€B€-FÀFÀ‘F€yFÀkD€D€B€ßD€B€àB€¿B€áF€ÂFÀFÀ‘F€yFÀkD€D€B€èD€B€éB€ºB€-FÀFÀ‹F€qFÀ~B€ÀD€B€èD€B€éB€ºB€-FÀùFÀ{F€&FÀnB€ÁD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ ¶MB€MB€NB€¿D€D€C�INITIALLY€D€D€B€/B€ÂB€½D€B€ÅD€ì‚Begin wave monitoring.D€B€ÈB€É¬‡initially advance step variable wave-step to start-wave and€l…send "Begin wave monitoring." to operator€B€ÑF€B€-FÀFÀÆF€FÀ D€D€B€ßD€B€àB€¿B€áF€ÂFÀFÀÆF€FÀ D€D€B€èD€B€éB€ºB€-FÀFÀÀF€ FÀ³B€îD€B€èD€B€éB€ºB€-FÀùFÀ°F€wFÀ£B€ïD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ „xB€MB€NB€¿¬�Exercise #10B€ÑF€B€-FÀCFÀòFÀÅFÀÜD€D€B€ßD€B€àB€¿B€áF€ÂFÀCFÀòFÀÅFÀÜD€D€B€èD€B€éB€ºB€-FÀ8FÀìFÀÍFÀßB€D€D€C�FLOW-PIPE€B€²B€²F€B€²ƒƒTHRU-SENSOR-INPUT-CONNECTIONFÀD€B€1B€²F€B€²ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€²F€D€C‚CONTROL-CONNECTIONB€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀB€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 4392 :CREATION-DATE 2734466461 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-12" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ü¢¤¥F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ø�1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ¶M�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ö�B€MD€B€Nƒ€WJB€C€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€&C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-12€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 12€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€qD€B€K†€ ¶MB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€yD€B€K†€ ¶MB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€�D€B€K†€ ¶MB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€‰D€B€K†€ ¶MB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€‘D€B€K†€ ¶MB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€™D€B€K†€ ¶MB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€¡D€B€K†€ ¶MB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€©D€B€K†€ ¶MB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ õ�B€MB€XÃ�STATEMENT-TEXTD€D€C€=€D€C�EMPTY-TIME�NUMERIC€ƒ€NIL€¬„let empty-time be a numeric variableC‚STATEMENT-NUMBER?€F€$ƒBACKTRACK-TO-GET-VALUE?€B€¸1€D€B€ID€B€JD€B€±D€ B€K†€ ò�B€MB€XB€³D€D€B€´D€Ã�TANK-EMPTYING€C�CONDITION€B€¸ì„let tank-emptying be a named conditionB€¼F€!B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€ÀTIMER€B€¶B€¸,„let timer be a numeric variable€B€¼F€B€¾B€¸…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€‚TANK-IS-FILLING€B€ÆB€¸,…let tank-is-filling be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€C�FILL-TIME€B€¶B€¸¬„let fill-time be a numeric variable€B€¼F€B€¾B€¸B€ØB€Ù1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€Ã�TIMER-STARTED€B€ÆB€¸ì„let timer-started be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€Ã�TIMER-RUNNING€B€ÆB€¸ì„let timer-running be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ -RB€MB€NB€³D€D€B€´D€C�FILL-TIMERB€¶B€¸¬„let fill-timer be a numeric variableB€¼F€B€¾B€¸1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€¸FÀpFÀnF€ÂF€nD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€fì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ ö�B€MB€XB€³D€D€C€IFB€ÅD€D€C�INCREMENT€B€µD€F€ �INTERVAL,‡if tank-emptying then increment empty-time by 10 secondsB€¼F€%B€-F€ƒFÀQF€�FÀ;D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€³CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂF€ƒFÀQF€�FÀ;D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€$B€-F€ŽFÀKF€…FÀ>B€1D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ õ�B€MB€XB€³D€D€C�INITIALLY€D€D€ƒ€SET€B€µ€¬ƒinitially set empty-time = 0B€¼F€#B€-F€„FÀpF€’FÀZD€D€B€>D€B€?B€³B€@F€ÂF€„FÀpF€’FÀZD€D€B€GD€B€HB€$B€-F€�FÀjF€ŠFÀ]B€[D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ õ�B€MB€XB€³D€D€B€)D€ƒ€NOT€B€ÅD€D€ƒ€SENDD€l‚Emptying time ~6F B€µD€ƒ�DESTINATION€�OPERATORìƒif not tank-emptying then send,†"Emptying time *** " with empty-time to operatorB€¼F€"B€-FÀVFÀ>F€{FÀD€D€B€>D€B€?B€³B€@F€ÂFÀVFÀ>F€{FÀD€D€B€GD€B€HB€$B€-FÀKFÀ8FÀ>FÀ+B€„D€B€GD€B€HB€$B€-FÀ<FÀ(F€sFÀB€…D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ ò�B€MB€XB€³D€D€B€)D€C€<€C€L1D€Ã�DELAYED-VALUE€B€ªF€ D€D€�CONCLUDEB€ÅD€D€ƒ�CONCLUDE-NOTB€Åì…if l1 < l1 as of 10 seconds ago then conclude€ì…tank-emptying else conclude not tank-emptying€B€¼F€ B€-FÀFFÀnF€pFÀHD€D€B€>D€B€?B€³B€@F€ÂFÀFFÀnF€pFÀHD€D€B€GD€B€HB€$B€-FÀ;FÀhF€YFÀ[B€¶D€B€GD€B€HB€$B€-FÀ,FÀXF€hFÀKB€·D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€òF€fF€F€„ÀCLOCK€D€ƒ�ACCUMULATOR€B€¸FÀ2F€,F€dF€^ƒ€TANKD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ 7RB€MB€NB€³l€4€B€¼F€B€-FÀ.FÀŒFÀFÀvD€D€B€>D€B€?B€³B€@F€ÂFÀ.FÀŒFÀFÀvD€D€B€GD€B€HB€$B€-FÀ#FÀ†FÀFÀyB€îD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ìD€B€K†€ 7RB€MB€NB€³l€3€B€¼F€B€-FÀ.FÀ­FÀFÀ—D€D€B€>D€B€?B€³B€@F€ÂFÀ.FÀ­FÀFÀ—D€D€B€GD€B€HB€$B€-FÀ#FÀ§FÀFÀšB€ D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ìD€B€K†€ 7RB€MB€NB€³l€2€B€¼F€B€-FÀ.FÀðFÀFÀÚD€D€B€>D€B€?B€³B€@F€ÂFÀ.FÀðFÀFÀÚD€D€B€GD€B€HB€$B€-FÀ#FÀêFÀFÀÝB€(D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ìD€B€K†€ 7RB€MB€NB€³l€1€B€¼F€B€-FÀ-FÀ!FÀFÀ D€D€B€>D€B€?B€³B€@F€ÂFÀ-FÀ!FÀFÀ D€D€B€GD€B€HB€$B€-FÀ"FÀFÀFÀB€ED€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€SD€B€K†€ ƒMB€MB€NB€³D€D€B€UD€D€B€VB€ì€¬ƒinitially set fill-time = 0€B€¼F€ B€-FÀ FÀŒFÀFÀvD€D€B€>D€B€?B€³B€@F€ÂFÀ FÀŒFÀFÀvD€D€B€GD€B€HB€$B€-FÀFÀ†FÀFÀyB€fD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ †8B€MB€NB€³D€D€B€)B€àD€D€B€*B€ìD€F€ B€,l‡if tank-is-filling then increment fill-time by 10 seconds€B€¼F€B€-FÀ FÀ­F€FÀ—D€D€B€>D€B€?B€³B€@F€ÂFÀ FÀ­F€FÀ—D€D€B€GD€B€HB€$B€-FÀFÀ§F€þFÀšB€‰D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ ŽýB€MD€B€NB€WB€³D€D€B€)D€B€yB€àD€D€B€{D€,‚Fill time = ~6F€B€ìD€B€~B€¬ƒif not tank-is-filling then€l†send "Fill time = ***" with fill-time to operator€B€¼F€B€-FÀ FÀðF€ÍFÀÊD€D€B€>D€B€?B€³B€@F€ÂFÀ FÀðF€ÍFÀÊD€D€B€GD€B€HB€$B€-FÀFÀêFÀFÀÝB€¯D€B€GD€B€HB€$B€-FÀóFÀÚF€ÅFÀÍB€°D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€ B€K†€ …8B€MB€NB€³D€D€B€)D€C€>€B€ªD€B€«B€ªF€ D€D€B€¯B€àD€D€B€²B€àì‡if L1 > L1 as of 10 seconds ago then conclude tank-is-filling l„else conclude not tank-is-filling€B€¼F€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀ FÀ!F€3FÀûD€D€B€>D€B€?B€³B€@F€ÂFÀ FÀ!F€3FÀûD€D€B€GD€B€HB€$B€-FÀFÀF€+FÀB€ÝD€B€GD€B€HB€$B€-FÀóFÀ F€5FÀþB€ÞD€B€ÚD€B€ÛF€ B€ÝB€-F€¢F€eF€ÀF€ƒB€ªD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€ B€K†€ ýQB€MB€NB€³D€D€B€)D€B€ÔB€ã€B€¸¬ƒif CLOCK > 0 then do nothingB€¼F€ B€áF€ B€-FÀF€6F€ôF€LD€D€B€>D€B€?B€³B€@F€ÂFÀF€6F€ôF€LD€D€B€GD€B€HB€$B€-FÀF€<F€ìF€IB€D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ìD€B€K†€ ‡xB€MB€NB€³¬�Exercise #12B€¼F€B€-FÀ3FÀLFÀµFÀ6D€D€B€>D€B€?B€³B€@F€ÂFÀ3FÀLFÀµFÀ6D€D€B€GD€B€HB€$B€-FÀ(FÀFFÀ½FÀ9B€-D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ RB€MB€NB€³D€D€�SIMULATEB€ãB€¸ƒ€TIME,ƒsimulate clock with timeB€¼F€ B€-FÀF€5FÀ$F€KD€D€B€>D€B€?B€³B€@F€ÂFÀF€5FÀ$F€KD€D€B€GD€B€HB€$B€-FÀF€;FÀ,F€HB€ND€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ID€B€K†€ {ýB€MD€B€NB€WB€³D€D€B€KB€ª€D€B€)D€B€©B€LF€,D€C€+€B€ª‡ÀD€B€)D€B€©B€LF€XF€KD€ƒ€MAX€€D€C€-€B€ª‡À}33¬…simulate L1 with 0 then if time < 300 then €¬…(L1 + .25) else if time < 600 then 75 else €l‚max (0, L1 - .15)€B€¼F€B€-FÀF€ñF€–F€'D€D€B€>D€B€?B€³B€@F€ÂFÀF€ñF€–F€'D€D€B€GD€B€HB€$B€-FÀF€÷F€F€B€D€B€GD€B€HB€$B€-FÀôF€F€ŽF€B€€D€B€GD€B€HB€$B€-FÀôF€FÀ\F€$B€�D€D€C‚CONTROL-CONNECTIONB€¸F€B€¸ƒƒSENSOR-CONTROLLER-CONNECTIONB€¸FÀD€C�FLOW-PIPE€B€¸B€¸F€B€¸Ã‚ACCUMULATOR-MAIN-INPUTFÀD€B€°B€¸F€B€¸ƒACCUMULATOR-MAIN-OUTPUT€B€¸F€D€B€«B€¸F€F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€%D€B€«B€¸F€B€¸B€­B€¸FÀB€¸1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 4279 :CREATION-DATE 2734466754 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-12" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ü¢Ä¦F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ý�1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ¶M�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ö�B€MD€B€Nƒ€WJB€C€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€&C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-12€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 12€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€qD€B€K†€ ¶MB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€yD€B€K†€ ¶MB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€�D€B€K†€ ¶MB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€‰D€B€K†€ ¶MB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€‘D€B€K†€ ¶MB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€™D€B€K†€ ¶MB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€¡D€B€K†€ ¶MB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€©D€B€K†€ ¶MB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ -RB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€C�FILL-TIMER�NUMERIC€ƒ€NIL€¬„let fill-timer be a numeric variableC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€¸1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€Ã�TIMER-RUNNING€C�CONDITION€B€¸ì„let timer-running be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€Ã�TIMER-STARTED€B€ÆB€¸ì„let timer-started be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€C�FILL-TIME€B€¶B€¸¬„let fill-time be a numeric variable€B€¼F€B€¾B€¸…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€‚TANK-IS-FILLING€B€ÆB€¸,…let tank-is-filling be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€ÀTIMER€B€¶B€¸,„let timer be a numeric variable€B€¼F€B€¾B€¸B€äB€å1€D€B€ID€B€JD€B€±D€ B€K†€ ò�B€MB€XB€³D€D€B€´D€Ã�TANK-EMPTYING€B€ÆB€¸ì„let tank-emptying be a named conditionB€¼F€!B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ õ�B€MB€XB€³D€D€B€´D€C�EMPTY-TIMEB€¶B€¸¬„let empty-time be a numeric variableB€¼F€$B€¾B€¸1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€¸FÀpFÀnF€ÂF€nD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€fì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ ö�B€MB€XB€³D€D€C€IFB€D€D€C�INCREMENT€B€D€F€ �INTERVAL,‡if tank-emptying then increment empty-time by 10 secondsB€¼F€%B€-F€ƒFÀQF€�FÀ;D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€³CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂF€ƒFÀQF€�FÀ;D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€$B€-F€ŽFÀKF€…FÀ>B€1D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ õ�B€MB€XB€³D€D€B€)D€ƒ€NOT€B€D€D€ƒ€SENDD€l‚Emptying time ~6F B€D€ƒ�DESTINATION€�OPERATORìƒif not tank-emptying then send,†"Emptying time *** " with empty-time to operatorB€¼F€"B€-FÀVFÀ>F€{FÀD€D€B€>D€B€?B€³B€@F€ÂFÀVFÀ>F€{FÀD€D€B€GD€B€HB€$B€-FÀKFÀ8FÀ>FÀ+B€_D€B€GD€B€HB€$B€-FÀ<FÀ(F€sFÀB€`D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ ò�B€MB€XB€³D€D€B€)D€C€<€C€L1D€Ã�DELAYED-VALUE€B€…F€ D€D€�CONCLUDEB€D€D€ƒ�CONCLUDE-NOTB€ì…if l1 < l1 as of 10 seconds ago then conclude€ì…tank-emptying else conclude not tank-emptying€B€¼F€ B€-FÀFFÀnF€pFÀHD€D€B€>D€B€?B€³B€@F€ÂFÀFFÀnF€pFÀHD€D€B€GD€B€HB€$B€-FÀ;FÀhF€YFÀ[B€‘D€B€GD€B€HB€$B€-FÀ,FÀXF€hFÀKB€’D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€òF€fF€F€„ÀCLOCK€D€ƒ�ACCUMULATOR€B€¸FÀ2F€,F€dF€^ƒ€TANKD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ 7RB€MB€NB€³l€4€B€¼F€B€-FÀ.FÀŒFÀFÀvD€D€B€>D€B€?B€³B€@F€ÂFÀ.FÀŒFÀFÀvD€D€B€GD€B€HB€$B€-FÀ#FÀ†FÀFÀyB€ÉD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ÇD€B€K†€ 7RB€MB€NB€³l€3€B€¼F€B€-FÀ.FÀ­FÀFÀ—D€D€B€>D€B€?B€³B€@F€ÂFÀ.FÀ­FÀFÀ—D€D€B€GD€B€HB€$B€-FÀ#FÀ§FÀFÀšB€æD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ÇD€B€K†€ 7RB€MB€NB€³l€2€B€¼F€B€-FÀ.FÀðFÀFÀÚD€D€B€>D€B€?B€³B€@F€ÂFÀ.FÀðFÀFÀÚD€D€B€GD€B€HB€$B€-FÀ#FÀêFÀFÀÝB€D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ÇD€B€K†€ 7RB€MB€NB€³l€1€B€¼F€B€-FÀ-FÀ!FÀFÀ D€D€B€>D€B€?B€³B€@F€ÂFÀ-FÀ!FÀFÀ D€D€B€GD€B€HB€$B€-FÀ"FÀFÀFÀB€ D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ ü�B€MD€B€NB€XB€³D€D€C�INITIALLY€D€D€ƒ€SET€B€Þ€D€B€@B€€l†initially set fill-time = 0 and set empty-time = 0B€¼F€ B€-FÀ FÀŒF€ÇFÀvD€D€B€>D€B€?B€³B€@F€ÂFÀ FÀŒF€ÇFÀvD€D€B€GD€B€HB€$B€-FÀFÀ†F€¿FÀyB€GD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ †8B€MB€NB€³D€D€B€)B€ìD€D€B€*B€ÞD€F€ B€,l‡if tank-is-filling then increment fill-time by 10 seconds€B€¼F€B€-FÀ FÀ­F€FÀ—D€D€B€>D€B€?B€³B€@F€ÂFÀ FÀ­F€FÀ—D€D€B€GD€B€HB€$B€-FÀFÀ§F€þFÀšB€jD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ ŽýB€MD€B€NB€WB€³D€D€B€)D€B€TB€ìD€D€B€VD€,‚Fill time = ~6F€B€ÞD€B€YB€Z¬ƒif not tank-is-filling then€l†send "Fill time = ***" with fill-time to operator€B€¼F€B€-FÀ FÀðF€ÍFÀÊD€D€B€>D€B€?B€³B€@F€ÂFÀ FÀðF€ÍFÀÊD€D€B€GD€B€HB€$B€-FÀFÀêFÀFÀÝB€�D€B€GD€B€HB€$B€-FÀóFÀÚF€ÅFÀÍB€‘D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€ B€K†€ …8B€MB€NB€³D€D€B€)D€C€>€B€…D€B€†B€…F€ D€D€B€ŠB€ìD€D€B€�B€ìì‡if L1 > L1 as of 10 seconds ago then conclude tank-is-filling l„else conclude not tank-is-filling€B€¼F€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀ FÀ!F€3FÀûD€D€B€>D€B€?B€³B€@F€ÂFÀ FÀ!F€3FÀûD€D€B€GD€B€HB€$B€-FÀFÀF€+FÀB€¾D€B€GD€B€HB€$B€-FÀóFÀ F€5FÀþB€¿D€B€µD€B€¶F€ B€¸B€-F€¢F€eF€ÀF€ƒB€…D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€ B€K†€ ýQB€MB€NB€³D€D€B€)D€B€µB€¾€B€¸¬ƒif CLOCK > 0 then do nothingB€¼F€ B€ÂF€ B€-FÀF€6F€ôF€LD€D€B€>D€B€?B€³B€@F€ÂFÀF€6F€ôF€LD€D€B€GD€B€HB€$B€-FÀF€<F€ìF€IB€ïD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ÇD€B€K†€ ‡xB€MB€NB€³¬�Exercise #12B€¼F€B€-FÀ3FÀLFÀµFÀ6D€D€B€>D€B€?B€³B€@F€ÂFÀ3FÀLFÀµFÀ6D€D€B€GD€B€HB€$B€-FÀ(FÀFFÀ½FÀ9B€D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ RB€MB€NB€³D€D€�SIMULATEB€¾B€¸ƒ€TIME,ƒsimulate clock with timeB€¼F€ B€-FÀF€5FÀ$F€KD€D€B€>D€B€?B€³B€@F€ÂFÀF€5FÀ$F€KD€D€B€GD€B€HB€$B€-FÀF€;FÀ,F€HB€/D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€*D€B€K†€ {ýB€MD€B€NB€WB€³D€D€B€,B€…€D€B€)D€B€„B€-F€,D€C€+€B€…‡ÀD€B€)D€B€„B€-F€XF€KD€ƒ€MAX€€D€C€-€B€…‡À}33¬…simulate L1 with 0 then if time < 300 then €¬…(L1 + .25) else if time < 600 then 75 else €l‚max (0, L1 - .15)€B€¼F€B€-FÀF€ñF€–F€'D€D€B€>D€B€?B€³B€@F€ÂFÀF€ñF€–F€'D€D€B€GD€B€HB€$B€-FÀF€÷F€F€B€`D€B€GD€B€HB€$B€-FÀôF€F€ŽF€B€aD€B€GD€B€HB€$B€-FÀôF€FÀ\F€$B€bD€D€C‚CONTROL-CONNECTIONB€¸F€B€¸ƒƒSENSOR-CONTROLLER-CONNECTIONB€¸FÀD€C�FLOW-PIPE€B€¸B€¸F€B€¸Ã‚ACCUMULATOR-MAIN-INPUTFÀD€B€‘B€¸F€B€¸ƒACCUMULATOR-MAIN-OUTPUT€B€¸F€D€B€ŒB€¸F€F€ ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€%D€B€ŒB€¸F€ B€¸B€ŽB€¸FÀB€¸1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 4283 :CREATION-DATE 2734467220 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-12" :TYPE "PIC" :VERSION 3) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ü¢š¨F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ‚1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ¶M�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ö�B€MD€B€Nƒ€WJB€C€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€&C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-12€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 12€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€qD€B€K†€ ¶MB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€yD€B€K†€ ¶MB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€�D€B€K†€ ¶MB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€‰D€B€K†€ ¶MB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€‘D€B€K†€ ¶MB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€™D€B€K†€ ¶MB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€¡D€B€K†€ ¶MB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€©D€B€K†€ ¶MB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ õ�B€MB€XÃ�STATEMENT-TEXTD€D€C€=€D€C�EMPTY-TIME�NUMERIC€ƒ€NIL€¬„let empty-time be a numeric variableC‚STATEMENT-NUMBER?€F€$ƒBACKTRACK-TO-GET-VALUE?€B€¸1€D€B€ID€B€JD€B€±D€ B€K†€ ò�B€MB€XB€³D€D€B€´D€Ã�TANK-EMPTYING€C�CONDITION€B€¸ì„let tank-emptying be a named conditionB€¼F€!B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€ÀTIMER€B€¶B€¸,„let timer be a numeric variable€B€¼F€B€¾B€¸…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€‚TANK-IS-FILLING€B€ÆB€¸,…let tank-is-filling be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€C�FILL-TIME€B€¶B€¸¬„let fill-time be a numeric variable€B€¼F€B€¾B€¸B€ØB€Ù1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€Ã�TIMER-STARTED€B€ÆB€¸ì„let timer-started be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ RB€MB€NB€³D€D€B€´D€Ã�TIMER-RUNNING€B€ÆB€¸ì„let timer-running be a named conditionB€¼F€B€¾B€-1€D€B€ID€B€JD€B€±D€ B€K†€ -RB€MB€NB€³D€D€B€´D€C�FILL-TIMERB€¶B€¸¬„let fill-timer be a numeric variableB€¼F€B€¾B€¸1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€¸FÀpFÀnF€ÂF€nD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€fì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ ö�B€MB€XB€³D€D€C€IFB€ÅD€D€C�INCREMENT€B€µD€F€ �INTERVAL,‡if tank-emptying then increment empty-time by 10 secondsB€¼F€%B€-F€ƒFÀQF€�FÀ;D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€³CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂF€ƒFÀQF€�FÀ;D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€$B€-F€ŽFÀKF€…FÀ>B€1D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ õ�B€MB€XB€³D€D€B€)D€ƒ€NOT€B€ÅD€D€ƒ€SENDD€l‚Emptying time ~6F B€µD€ƒ�DESTINATION€�OPERATORìƒif not tank-emptying then send,†"Emptying time *** " with empty-time to operatorB€¼F€"B€-FÀVFÀ>F€{FÀD€D€B€>D€B€?B€³B€@F€ÂFÀVFÀ>F€{FÀD€D€B€GD€B€HB€$B€-FÀKFÀ8FÀ>FÀ+B€_D€B€GD€B€HB€$B€-FÀ<FÀ(F€sFÀB€`D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€ B€K†€ ‚B€MB€XB€³D€D€B€)D€C€<€C€L1D€Ã�DELAYED-VALUE€B€…F€ D€D€�CONCLUDEB€ÅD€D€ƒ�CONCLUDE-NOTB€Åì…if l1 < l1 as of 10 seconds ago then conclude€ì…tank-emptying else conclude not tank-emptying€B€¼F€ ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀFFÀnF€pFÀHD€D€B€>D€B€?B€³B€@F€ÂFÀFFÀnF€pFÀHD€D€B€GD€B€HB€$B€-FÀ;FÀhF€YFÀ[B€‘D€B€GD€B€HB€$B€-FÀ,FÀXF€hFÀKB€’D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€òF€fF€F€„ÀCLOCK€D€ƒ�ACCUMULATOR€B€¸FÀ2F€,F€dF€^ƒ€TANKD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ 7RB€MB€NB€³l€4€B€¼F€B€-FÀ.FÀŒFÀFÀvD€D€B€>D€B€?B€³B€@F€ÂFÀ.FÀŒFÀFÀvD€D€B€GD€B€HB€$B€-FÀ#FÀ†FÀFÀyB€ËD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ÉD€B€K†€ 7RB€MB€NB€³l€3€B€¼F€B€-FÀ.FÀ­FÀFÀ—D€D€B€>D€B€?B€³B€@F€ÂFÀ.FÀ­FÀFÀ—D€D€B€GD€B€HB€$B€-FÀ#FÀ§FÀFÀšB€èD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ÉD€B€K†€ 7RB€MB€NB€³l€2€B€¼F€B€-FÀ.FÀðFÀFÀÚD€D€B€>D€B€?B€³B€@F€ÂFÀ.FÀðFÀFÀÚD€D€B€GD€B€HB€$B€-FÀ#FÀêFÀFÀÝB€D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ÉD€B€K†€ 7RB€MB€NB€³l€1€B€¼F€B€-FÀ-FÀ!FÀFÀ D€D€B€>D€B€?B€³B€@F€ÂFÀ-FÀ!FÀFÀ D€D€B€GD€B€HB€$B€-FÀ"FÀFÀFÀB€"D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ ü�B€MD€B€NB€XB€³D€D€C�INITIALLY€D€D€ƒ€SET€B€ì€D€B€BB€µ€l†initially set fill-time = 0 and set empty-time = 0B€¼F€ B€-FÀ FÀŒF€ÇFÀvD€D€B€>D€B€?B€³B€@F€ÂFÀ FÀŒF€ÇFÀvD€D€B€GD€B€HB€$B€-FÀFÀ†F€¿FÀyB€ID€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ †8B€MB€NB€³D€D€B€)B€àD€D€B€*B€ìD€F€ B€,l‡if tank-is-filling then increment fill-time by 10 seconds€B€¼F€B€-FÀ FÀ­F€FÀ—D€D€B€>D€B€?B€³B€@F€ÂFÀ FÀ­F€FÀ—D€D€B€GD€B€HB€$B€-FÀFÀ§F€þFÀšB€lD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€B€K†€ ŽýB€MD€B€NB€WB€³D€D€B€)D€B€TB€àD€D€B€VD€,‚Fill time = ~6F€B€ìD€B€YB€Z¬ƒif not tank-is-filling then€l†send "Fill time = ***" with fill-time to operator€B€¼F€B€-FÀ FÀðF€ÍFÀÊD€D€B€>D€B€?B€³B€@F€ÂFÀ FÀðF€ÍFÀÊD€D€B€GD€B€HB€$B€-FÀFÀêFÀFÀÝB€’D€B€GD€B€HB€$B€-FÀóFÀÚF€ÅFÀÍB€“D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€ B€K†€ …8B€MB€NB€³D€D€B€)D€C€>€B€…D€B€†B€…F€ D€D€B€ŠB€àD€D€B€�B€àì‡if L1 > L1 as of 10 seconds ago then conclude tank-is-filling l„else conclude not tank-is-filling€B€¼F€B€•F€ B€-FÀ FÀ!F€3FÀûD€D€B€>D€B€?B€³B€@F€ÂFÀ FÀ!F€3FÀûD€D€B€GD€B€HB€$B€-FÀFÀF€+FÀB€ÀD€B€GD€B€HB€$B€-FÀóFÀ F€5FÀþB€ÁD€B€·D€B€¸F€ B€ºB€-F€¢F€eF€ÀF€ƒB€…D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€'D€ B€K†€ ýQB€MB€NB€³D€D€B€)D€B€·B€À€B€¸¬ƒif CLOCK > 0 then do nothingB€¼F€ B€•F€ B€-FÀF€6F€ôF€LD€D€B€>D€B€?B€³B€@F€ÂFÀF€6F€ôF€LD€D€B€GD€B€HB€$B€-FÀF€<F€ìF€IB€ðD€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€ÉD€B€K†€ ‡xB€MB€NB€³¬�Exercise #12B€¼F€B€-FÀ3FÀLFÀµFÀ6D€D€B€>D€B€?B€³B€@F€ÂFÀ3FÀLFÀµFÀ6D€D€B€GD€B€HB€$B€-FÀ(FÀFFÀ½FÀ9B€D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ RB€MB€NB€³D€D€�SIMULATEB€ÀB€¸ƒ€TIME,ƒsimulate clock with timeB€¼F€ B€-FÀF€5FÀ$F€KD€D€B€>D€B€?B€³B€@F€ÂFÀF€5FÀ$F€KD€D€B€GD€B€HB€$B€-FÀF€;FÀ,F€HB€0D€B€!D€B€"B€$B€-B€%D€B€&D€B€ID€B€JD€B€+D€B€K†€ {ýB€MD€B€NB€WB€³D€D€B€-B€…€D€B€)D€B€„B€.F€,D€C€+€B€…‡ÀD€B€)D€B€„B€.F€XF€KD€ƒ€MAX€€D€C€-€B€…‡À}33¬…simulate L1 with 0 then if time < 300 then €¬…(L1 + .25) else if time < 600 then 75 else €l‚max (0, L1 - .15)€B€¼F€B€-FÀF€ñF€–F€'D€D€B€>D€B€?B€³B€@F€ÂFÀF€ñF€–F€'D€D€B€GD€B€HB€$B€-FÀF€÷F€F€B€aD€B€GD€B€HB€$B€-FÀôF€F€ŽF€B€bD€B€GD€B€HB€$B€-FÀôF€FÀ\F€$B€cD€D€C‚CONTROL-CONNECTIONB€¸F€B€¸ƒƒSENSOR-CONTROLLER-CONNECTIONB€¸FÀD€C�FLOW-PIPE€B€¸B€¸F€B€¸Ã‚ACCUMULATOR-MAIN-INPUTFÀD€B€’B€¸F€B€¸ƒACCUMULATOR-MAIN-OUTPUT€B€¸F€D€B€�B€¸F€F€ ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€%D€B€�B€¸F€ B€¸B€�B€¸FÀB€¸1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 4938 :CREATION-DATE 2734522020 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-13" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ý¢ª~F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ –…1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ¶M�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ �…B€MD€B€NC€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€&C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-13€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 13€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ ¶MB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ ¶MB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ ¶MB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ ¶MB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ ¶MB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ ¶MB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ ¶MB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ ¶MB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ �…B€MB€WÃ�STATEMENT-TEXTD€D€C€=€D€C�EMPTY-TIME�NUMERIC€ƒ€NIL€¬„let empty-time be a numeric variableC‚STATEMENT-NUMBER?€F€$ƒBACKTRACK-TO-GET-VALUE?€B€·1€D€B€ID€B€JD€B€°D€ B€K†€ Ž…B€MB€WB€²D€D€B€³D€Ã�TANK-EMPTYING€C�CONDITION€B€·ì„let tank-emptying be a named conditionB€»F€!B€½B€-1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€ÀTIMER€B€µB€·,„let timer be a numeric variable€B€»F€B€½B€·…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€‚TANK-IS-FILLING€B€ÅB€·,…let tank-is-filling be a named conditionB€»F€B€½B€-1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€C�FILL-TIME€B€µB€·¬„let fill-time be a numeric variable€B€»F€B€½B€·B€×B€Ø1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€Ã�TIMER-STARTED€B€ÅB€·ì„let timer-started be a named conditionB€»F€B€½B€-1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€Ã�TIMER-RUNNING€B€ÅB€·ì„let timer-running be a named conditionB€»F€B€½B€-1€D€B€ID€B€JD€B€°D€ B€K†€ -RB€MB€NB€²D€D€B€³D€C�FILL-TIMERB€µB€·¬„let fill-timer be a numeric variableB€»F€B€½B€·1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€·FÀ¤FÀÛF€¤F€ßD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ �…B€MB€WB€²D€D€C€IFB€ÄD€D€C�INCREMENT€B€´D€F€ �INTERVAL,†if tank-emptying then increment empty-time by 10,�seconds€B€»F€#B€-F€xF€>F€:F€dD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€²CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂF€xF€>F€:F€dD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€#B€-F€ƒF€DF€2F€QB€0D€B€GD€B€HB€#B€-F€’F€TF€ÐF€aB€1D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€B€K†€ “…B€MB€WB€²D€D€B€(D€ƒ€AND€D€ƒ€NOT€B€ÄD€C€ISƒ�FILLING-STEP�DRAININGD€D€ƒ€SENDD€ì�Empty time ~6FB€´D€ƒ�DESTINATION€�OPERATORD€�ADVANCE€B€^�NOT-SUREl†if not tank-emptying and filling-step is drainingì…then send "Empty time ***" with empty-time to€¬‡operator and advance step variable filling-step to not-sure€B€»F€"B€-F€yF€F€­F€8D€D€B€>D€B€?B€²B€@F€ÂF€yF€F€­F€8D€D€B€GD€B€HB€#B€-F€„F€F€EF€B€nD€B€GD€B€HB€#B€-F€“F€F€'F€%B€oD€B€GD€B€HB€#B€-F€“F€(F€¥F€5B€pD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€ B€K†€ •…B€MB€WB€²D€D€B€(D€C€<€C€L1D€Ã�DELAYED-VALUE€B€›F€ D€D€�CONCLUDEB€ÄD€B€iB€^B€_D€D€ƒ�CONCLUDE-NOTB€Äì…if l1 < l1 as of 10 seconds ago then conclude€,…tank-emptying and advance step variable€,‡filling-step to draining else conclude not tank-emptyingB€»F€ ƒPICON-RULE-SCAN-INTERVALF€ B€-F€yFÀ<F€’FÀD€D€B€>D€B€?B€²B€@F€ÂF€yFÀ<F€’FÀD€D€B€GD€B€HB€#B€-F€„FÀ6F€FÀ)B€¨D€B€GD€B€HB€#B€-F€“FÀ&F€ñFÀB€©D€B€GD€B€HB€#B€-F€“FÀF€ŠFÀ B€ªD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ 7RB€MB€NB€²l€3€B€»F€B€-FÀ7FÀIFÀFÀ3D€D€B€>D€B€?B€²B€@F€ÂFÀ7FÀIFÀFÀ3D€D€B€GD€B€HB€#B€-FÀ,FÀCFÀ$FÀ6B€×D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€B€K†€ •8B€MB€NB€²D€D€B€(B€ßD€D€B€)B€ëD€F€ B€+l‡if tank-is-filling then increment fill-time by 10 seconds€B€»F€B€-FÀFÀIF€üFÀ3D€D€B€>D€B€?B€²B€@F€ÂFÀFÀIF€üFÀ3D€D€B€GD€B€HB€#B€-FÀ FÀCF€ôFÀ6B€ùD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€ÕD€B€K†€ 7RB€MB€NB€²l€2€B€»F€B€-FÀ7FÀ�FÀFÀwD€D€B€>D€B€?B€²B€@F€ÂFÀ7FÀ�FÀFÀwD€D€B€GD€B€HB€#B€-FÀ,FÀ‡FÀ$FÀzB€D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€B€K†€ ñ.B€MB€NB€²D€D€B€(D€B€ZD€B€[B€ßD€B€]B€^�FILLING€D€D€B€bD€,‚Fill time = ~6F€B€ëD€B€eB€fD€B€iB€^B€j,‡if not tank-is-filling and filling-step is filling then€ì†send "Fill time = ***" with fill-time to operator and€ì…advance step variable filling-step to not-sureB€»F€B€-FÀFÀ�F€êFÀWD€D€B€>D€B€?B€²B€@F€ÂFÀFÀ�F€êFÀWD€D€B€GD€B€HB€#B€-FÀ FÀ‡F€âFÀzB€?D€B€GD€B€HB€#B€-FÀýFÀwF€ßFÀjB€@D€B€GD€B€HB€#B€-FÀýFÀgF€ FÀZB€AD€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€ùF€ÆF€F€äÀCLOCK€D€B€jD€B€kF€ B€mB€-F€½F€ÇF€ÛF€åB€›D€ƒ�ACCUMULATOR€B€·FÀF€½F€•F€ïƒ€TANKD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€ÕD€B€K†€ íRB€MB€NB€²l€5€B€»F€B€-FÀ7F€)FÀF€?D€D€B€>D€B€?B€²B€@F€ÂFÀ7F€)FÀF€?D€D€B€GD€B€HB€#B€-FÀ,F€/FÀ$F€<B€„D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€°D€B€K†€ íRB€MB€NB€²D€D€ƒSTEP-VARIABLE-DEFINITIONB€^D€B€jB€5B€_ì‡let step variable filling-step be not-sure, filling, draining€B€»F€B€-FÀF€)F€!F€?D€D€B€>D€B€?B€²B€@F€ÂFÀF€)F€!F€?D€D€B€GD€B€HB€#B€-FÀ F€/F€F€<B€¤D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€ÕD€B€K†€ 7RB€MB€NB€²l€4€B€»F€B€-FÀ8FÀFÀFÀD€D€B€>D€B€?B€²B€@F€ÂFÀ8FÀFÀFÀD€D€B€GD€B€HB€#B€-FÀ-FÀFÀ%FÀB€ÂD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ ”…B€MD€B€NB€WB€²D€D€C�INITIALLY€D€D€ƒ€SET€B€ë€D€B€âB€´€D€B€iB€^B€jl�initially ,…set fill-time = 0 and set empty-time = 0¬ƒ and advance step variable¬ƒ filling-step to not-sure€B€»F€ B€-FÀFÀ'F€sF€D€D€B€>D€B€?B€²B€@F€ÂFÀFÀ'F€sF€D€D€B€GD€B€HB€#B€-FÀ FÀ!FÀ²FÀB€êD€B€GD€B€HB€#B€-FÀüFÀF€kFÀB€ëD€B€GD€B€HB€#B€-FÀüFÀFÀF€ B€ìD€B€GD€B€HB€#B€-FÀüF€FÀ F€B€íD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€ÕD€B€K†€ 7RB€MB€NB€²l€1€B€»F€B€-FÀ9FÀ×FÀFÀÁD€D€B€>D€B€?B€²B€@F€ÂFÀ9FÀ×FÀFÀÁD€D€B€GD€B€HB€#B€-FÀ.FÀÑFÀ&FÀÄB€D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€ B€K†€ ð.B€MB€NB€²D€D€B€(D€C€>€B€›D€B€œB€›F€ D€D€B€ B€ßD€B€iB€^B€5D€D€B€¤B€ßlˆif L1 > L1 as of 10 seconds ago then conclude tank-is-filling and€ì…advance step variable filling-step to filling€l„else conclude not tank-is-filling€B€»F€B€­F€ B€-FÀFÀØF€DFÀ¢D€D€B€>D€B€?B€²B€@F€ÂFÀFÀØF€DFÀ¢D€D€B€GD€B€HB€#B€-FÀ FÀÒF€<FÀÅB€DD€B€GD€B€HB€#B€-FÀýFÀÂF€—FÀµB€ED€B€GD€B€HB€#B€-FÀýFÀ²F€+FÀ¥B€FD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€ÕD€B€K†€ ŠxB€MB€NB€²¬�Exercise #13B€»F€B€-FÀ>FÀ÷FÀÀFÀáD€D€B€>D€B€?B€²B€@F€ÂFÀ>FÀ÷FÀÀFÀáD€D€B€GD€B€HB€#B€-FÀ3FÀñFÀÈFÀäB€qD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€ B€K†€ ýQB€MB€NB€²D€D€B€(D€B€:B€s€B€·¬ƒif CLOCK > 0 then do nothingB€»F€ B€­F€ B€-FÀF€¯FÀF€ÅD€D€B€>D€B€?B€²B€@F€ÂFÀF€¯FÀF€ÅD€D€B€GD€B€HB€#B€-FÀF€µFÀF€ÂB€‘D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ RB€MB€NB€²D€D€�SIMULATEB€sB€·ƒ€TIME,ƒsimulate clock with timeB€»F€ B€-FÀF€�FÀ3F€¥D€D€B€>D€B€?B€²B€@F€ÂFÀF€�FÀ3F€¥D€D€B€GD€B€HB€#B€-FÀF€•FÀ;F€¢B€´D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€¯D€B€K†€ ÿQB€MB€NB€²D€D€B€±B€›€D€B€(D€B€šB€²F€,D€C€+€B€›Ç€ÿ@D€B€(D€B€šB€²F€XF€KD€ƒ€MAX€€D€C€-€B€›Ç€þÌLÍ̬…simulate L1 with 0 then if time < 300 then €¬…(L1 + .25) else if time < 600 then 75 else €l‚max (0, L1 - .15)€B€»F€B€-FÀF€KF€‡F€�D€D€B€>D€B€?B€²B€@F€ÂFÀF€KF€‡F€�D€D€B€GD€B€HB€#B€-FÀF€QF€pF€^B€äD€B€GD€B€HB€#B€-FÀF€aF€F€nB€åD€B€GD€B€HB€#B€-FÀF€qFÀkF€~B€æD€D€C‚CONTROL-CONNECTIONB€·F€B€·ƒƒSENSOR-CONTROLLER-CONNECTIONB€·FÀD€B€B€·F€B€·B€B€·FÀD€C�FLOW-PIPE€B€·B€·F€ B€·Ã‚ACCUMULATOR-MAIN-INPUTFÀD€B€B€·F€ F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€B€·B€·1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 2583 :CREATION-DATE 2734547436 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-14" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ý¢ñáF€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ >‡1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ iS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ‹xB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-14€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 14€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ iSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ iSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ iSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ iSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ iSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ iSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ iSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ iSB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ lSB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ�TANK-BOILINGC�CONDITION€ƒ€NIL€ì„let tank-boiling be a named condition€C‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ rSB€MB€NB€°l€2€B€¹F€B€-FÀFÀ�FÀúFÀzD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀFÀ�FÀúFÀzD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÊB€-FÀ FÀŠFÀFÀ}B€ÏD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ =‡B€MD€B€NC€LBB€°D€D€C€IFD€B€±Ã�COOLER-SWITCH€F€D€D€ƒ€SENDD€¬„Cooler appears to be malfunctioning.D€ƒ�DESTINATION€�OPERATORD€D€B€øD€ìƒOPERATOR turn cooler switch OND€B€ûB€ülƒif cooler-switch = 1 then ,‡send "Cooler appears to be malfunctioning." to operator ì…else send "OPERATOR turn cooler switch ON" to€,�operatorC‚STATEMENT-KEYWORDSƒ€TANKB€¹F€B€-FÀõFÀ‘F€$FÀKD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀõFÀ‘F€$FÀKD€D€B€äD€B€åB€ÊB€-FÀêFÀ‹FÀFÀ~B€D€B€äD€B€åB€ÊB€-FÀÛFÀ{F€FÀnB€D€B€äD€B€åB€ÊB€-FÀÛFÀkF€¹FÀ^B€D€B€äD€B€åB€ÊB€-FÀÛFÀ[FÀ”FÀNB€ D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ rSB€MB€NB€°l€1€B€¹F€ B€-FÀFÀÅFÀûFÀ¯D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀFÀÅFÀûFÀ¯D€D€B€äD€B€åB€ÊB€-FÀ FÀ¿FÀFÀ²B€;D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ðD€ B€K†€ lSB€MB€NB€°D€D€B€ôD€C€>€C€T1F€ÔD€D€�CONCLUDEB€²D€ÀFOCUS€B€ ,…if T1 > 212 then conclude tank-boiling €l‚and focus on TANK€B€¹F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀõFÀÅF€|FÀŸD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀõFÀÅF€|FÀŸD€D€B€äD€B€åB€ÊB€-FÀêFÀ¿F€tFÀ²B€bD€B€äD€B€åB€ÊB€-FÀÛFÀ¯FÀCFÀ¢B€cD€C�SURGE-TANKB€µFÀ£F€xFÀgF€ÈB€ D€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-ENGINEERING-UNIT€Ã€ON-OFFƒSENSOR-CURRENCY-INTERVALF€F€ŸF€�F€½F€®B€õD€B€ŽD€B€�B€-F€F€‘F€$F€¯B€YD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ oSB€MB€NB€°D€D€�SIMULATEB€õ€D€B€ôD€B€XB€YF€ÔF€€ì…simulate COOLER-SWITCH with 0 then if T1 > 212ì�then 1 else 0€B€¹F€B€-FÀ>F€1F€rF€WD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀ>F€1F€rF€WD€D€B€äD€B€åB€ÊB€-FÀ3F€7F€jF€DB€ªD€B€äD€B€åB€ÊB€-FÀ$F€GFÀ°F€TB€«D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ D€B€K†€ kSB€MB€NB€°D€D€B€¢B€YB€µD€C�PICON-WAVEF€ÈF€F€°,†simulate T1 with wave with central value 200 andl„deviation 25 and period 20 minutesB€¹F€B€-FÀ?F€üF€ƒF€"D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀ?F€üF€ƒF€"D€D€B€äD€B€åB€ÊB€-FÀ4F€F€{F€B€ÕD€B€äD€B€åB€ÊB€-FÀ%F€F€ F€B€ÖD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ ‹xB€MB€NB€°¬�Exercise #14B€¹F€B€-FÀBFÀòFÀÄFÀÜD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀBFÀòFÀÄFÀÜD€D€B€äD€B€åB€ÊB€-FÀ7FÀìFÀÌFÀßB€úD€D€C�FLOW-PIPE€B€µB€µF€B€µÃ‚SURGE-TANK-MAIN-INPUT€FÀD€B€B€µF€B€µÃ‚SURGE-TANK-MAIN-OUTPUTB€µF€D€C‚CONTROL-CONNECTIONB€µF€F€ƒSURGE-TANK-METER-OUTPUT€C‚PORT-SENSOR-INPUT€B€µD€B€B€µB€µF€B€µB€$D€FÀGF€&FÀ{FÀFÀDD€B€ B€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€ B€µF€B€µB€/B€µFÀB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 2571 :CREATION-DATE 2734547930 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-15" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ý¢ÜãF€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ F‡1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ iS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ŒxB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-15€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 15€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ iSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ iSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ iSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ iSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ iSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ iSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ iSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ iSB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ lSB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ�TANK-BOILINGC�CONDITION€ƒ€NIL€ì„let tank-boiling be a named condition€C‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ oSB€MB€NB€°D€D€�SIMULATEÃ�COOLER-SWITCH€€D€C€IFD€C€>€C€T1F€ÔF€€ì…simulate COOLER-SWITCH with 0 then if T1 > 212ì�then 1 else 0€B€¹F€B€-FÀ>F€IF€rF€oD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ>F€IF€rF€oD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÊB€-FÀ3F€OF€jF€\B€ÛD€B€òD€B€óB€ÊB€-FÀ$F€_FÀ°F€lB€ÜD€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-ENGINEERING-UNIT€Ã€ON-OFFƒSENSOR-CURRENCY-INTERVALF€F€,F€ˆF€JF€¦B€ÐD€B€D€B€B€-FÀ*F€gFÀ F€…B€ÔD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ kSB€MB€NB€°D€D€B€ÏB€ÔB€µD€C�PICON-WAVEF€ÈF€F€°,†simulate T1 with wave with central value 200 andl„deviation 25 and period 20 minutesB€¹F€B€-FÀ?F€tF€ƒF€šD€D€B€éD€B€êB€°B€ëF€ÂFÀ?F€tF€ƒF€šD€D€B€òD€B€óB€ÊB€-FÀ4F€zF€{F€‡B€D€B€òD€B€óB€ÊB€-FÀ%F€ŠF€ F€—B€D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ rSB€MB€NB€°l€2€B€¹F€B€-FÀFÀ—FÀýFÀ�D€D€B€éD€B€êB€°B€ëF€ÂFÀFÀ—FÀýFÀ�D€D€B€òD€B€óB€ÊB€-FÀ FÀ‘FÀFÀ„B€CD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ C‡B€MD€B€NC€LBB€°D€D€B€ÒD€B€±B€ÐF€D€D€ƒ€SENDD€¬„Cooler appears to be malfunctioning.D€ƒ�DESTINATION€�OPERATORlƒif cooler-switch = 1 then ,‡send "Cooler appears to be malfunctioning." to operator€C‚STATEMENT-KEYWORDSƒ€TANKƒ‚STATEMENT-CATEGORIESƒ�CHECK-COOLERB€¹F€B€-FÀøFÀ—F€FÀqD€D€B€éD€B€êB€°B€ëF€ÂFÀøFÀ—F€FÀqD€D€B€òD€B€óB€ÊB€-FÀíFÀ‘FÀFÀ„B€nD€B€òD€B€óB€ÊB€-FÀÞFÀ�F€FÀtB€oD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€AD€B€K†€ rSB€MB€NB€°l€1€B€¹F€ B€-FÀFÀÊFÀýFÀ´D€D€B€éD€B€êB€°B€ëF€ÂFÀFÀÊFÀýFÀ´D€D€B€òD€B€óB€ÊB€-FÀ FÀÄFÀFÀ·B€—D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€_D€ B€K†€ E‡B€MD€B€NB€aB€°D€D€B€ÒD€B€ÓB€ÔF€ÔD€D€�CONCLUDEB€²D€�ACTIVATED€ƒ€AND€D€B€±�CATEGORYB€tD€B€±‚ASSOCIATED-UNIT€B€r,…if T1 > 212 then conclude tank-boiling €¬„and activate check-cooler rules withì‚associated-unit = tankB€¹F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀøFÀÛF€yFÀ¥D€D€B€éD€B€êB€°B€ëF€ÂFÀøFÀÛF€yFÀ¥D€D€B€òD€B€óB€ÊB€-FÀíFÀÕF€qFÀÈB€ÃD€B€òD€B€óB€ÊB€-FÀÞFÀÅF€eFÀ¸B€ÄD€B€òD€B€óB€ÊB€-FÀÞFÀµFÀFÀ¨B€ÅD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€AD€B€K†€ ‹xB€MB€NB€°¬�Exercise #15B€¹F€B€-FÀHFÀöFÀÊFÀàD€D€B€éD€B€êB€°B€ëF€ÂFÀHFÀöFÀÊFÀàD€D€B€òD€B€óB€ÊB€-FÀ=FÀðFÀÒFÀãB€ñD€C�SURGE-TANKB€µFÀ£F€xFÀgF€ÈB€rD€D€C�FLOW-PIPE€B€µB€µF€B€µC‚PORT-SENSOR-INPUT€D€FÀ.F€FÀeD€C‚CONTROL-CONNECTIONB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€B€µF€B€µB€B€µFÀD€B€B€µF€ F€ƒSURGE-TANK-METER-OUTPUT€B€F€D€B€B€µB€µF€ B€µÃ‚SURGE-TANK-MAIN-INPUT€FÀqD€B€B€µF€ B€µÃ‚SURGE-TANK-MAIN-OUTPUTB€µF€‚B€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 2449 :CREATION-DATE 2734550856 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-17" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ý¢NïF€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ w‡1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ œS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ s‡B€MD€B€NC€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�EXERCISE-17€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Exercise 17€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ œSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ œSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ œSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ œSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ œSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ œSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ œSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ œSB€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ u‡B€MB€WÃ�STATEMENT-TEXTD€D€C€IFD€C€>€C€F1F€dD€D€ƒ�SET-SETPOINTB€ÂF€OD€D€B€ÅB€ÂF€yl†if f1 > 100 then set f1 setpoint = 79 else set f1€ì�setpoint = 121C‚STATEMENT-NUMBER?€F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀFÀÓF€¼FÀ­D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€¿CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀFÀÓF€¼FÀ­D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ºB€-FÀFÀÍF€´FÀÀB€ÍD€B€çD€B€èB€ºB€-FÀõFÀ½FÀxFÀ°B€ÎD€C„R-L-1-IN-1-OUT-FEEDBACK-CONTROLLERD€ ƒ‚SETPOINT-LOW-LIMIT?€F€Pƒ‚SETPOINT-HIGH-LIMIT?F€dC…SETPOINT-MINIMUM-INTERVAL-BETWEEN-CHANGES?F€…SETPOINT-MAXIMUM-CHANGE-PER-ADJUSTMENT?€Ç€PƒDISPLAY-SETPOINT-VALUES€B€-F€lF€qF€”F€™ƒ€F1-XD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€°F€®F€ÎF€éB€ÂD€ƒ‚ON-OFF-CONTROL-VALVEB€²F€?F€ÅF€]F€çC€V1D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ ):B€MB€NB€¿l€4€B€ÐF€ B€-FÀ6FÀ„FÀFÀnD€D€B€ÞD€B€ßB€¿B€àF€ÂFÀ6FÀ„FÀFÀnD€D€B€çD€B€èB€ºB€-FÀ+FÀ~FÀ#FÀqB€D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ WB€MB€NB€¿D€D€�SIMULATEB€ÂB€²D€C�PICON-WAVEF€dF€F€à,†simulate F1 with wave with central value 100 andl„deviation 20 and period 8 minutes€B€ÐF€B€-FÀFÀ„F€¬FÀ^D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀFÀ„F€¬FÀ^D€D€B€çD€B€èB€ºB€-FÀ FÀ~F€¤FÀqB€@D€B€çD€B€èB€ºB€-FÀüFÀnF€,FÀaB€AD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€D€B€K†€ ):B€MB€NB€¿l€3€B€ÐF€ B€-FÀ6FÀ FÀFÀŠD€D€B€ÞD€B€ßB€¿B€àF€ÂFÀ6FÀ FÀFÀŠD€D€B€çD€B€èB€ºB€-FÀ+FÀšFÀ#FÀ�B€eD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€7D€B€K†€ WB€MB€NB€¿D€D€B€9ƒ€F1-4F€dD€C‚COMPOUND-VARIABLE€B€Â�SETPOINTì…simulate F1 setpoint with 100 then F1 setpointB€ÐF€B€-FÀFÀ F€šFÀŠD€D€B€ÞD€B€ßB€¿B€àF€ÂFÀFÀ F€šFÀŠD€D€B€çD€B€èB€ºB€-FÀ FÀšF€’FÀ�B€ˆD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€D€B€K†€ WB€MB€NB€¿l€2€B€ÐF€B€-FÀ6FÀ»FÀFÀ¥D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀ6FÀ»FÀFÀ¥D€D€B€çD€B€èB€ºB€-FÀ+FÀµFÀ#FÀ¨B€¦D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€D€B€K†€ WB€MB€NB€¿l€1€B€ÐF€B€-FÀ6FÀÖFÀFÀÀD€D€B€ÞD€B€ßB€¿B€àF€ÂFÀ6FÀÖFÀFÀÀD€D€B€çD€B€èB€ºB€-FÀ+FÀÐFÀ#FÀÃB€ÃD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€D€B€K†€ —xB€MB€NB€¿¬�Exercise #17B€ÐF€B€-FÀ>FÀ÷FÀÀFÀáD€D€B€ÞD€B€ßB€¿B€àF€ÂFÀ>FÀ÷FÀÀFÀáD€D€B€çD€B€èB€ºB€-FÀ3FÀñFÀÈFÀäB€àD€D€C‚CONTROL-CONNECTIONB€²F€F€C‚CONTROLLER-OUTPUT€ƒVALVE-CONTROL-CONNECTIONB€²D€B€ýB€²B€²F€B€²Ã�SETPOINT-INPUTFÀD€C�FLOW-PIPE€B€²F€B€²ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€²F€D€B€ýB€²F€F€ƒƒSENSOR-CONTROLLER-CONNECTION‚CONTROLLER-INPUTB€²D€B€B€²B€²F€B€²Ã‚VALVE-INPUT-CONNECTIONFÀD€B€B€²F€F€ƒVALVE-OUTPUT-CONNECTION€ƒƒTHRU-SENSOR-INPUT-CONNECTIONB€²B€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 1919 :CREATION-DATE 2734377712 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-3" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€û¢÷JF€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ 1|1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ .|B€MD€B€NC€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-3ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 31€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ 0|B€MB€WÃ�STATEMENT-TEXTD€D€C€IFD€C€>€C€F1F€ÈD€D€ƒ€SENDD€,�~6F highB€ÂD€ƒ�DESTINATION€�OPERATORC�EVERY-TIME¬…if F1 > 200 then send "*** high" with f1 to€¬‚operator every time€C‚STATEMENT-NUMBER?€F€B€-FÀÓF€ŒF€ÂF€²D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€¿CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÓF€ŒF€ÂF€²D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ºB€-FÀÈF€’F€ºF€ŸB€ÏD€B€çD€B€èB€ºB€-FÀ¹F€¢FÀF€¯B€ÐD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ wlB€MB€NB€¿D€D€�SIMULATEB€ÂB€²D€C�PICON-WAVEF€ÈF€2F€X,†simulate F1 with wave with central value 200 andl„deviation 50 and period 10 minutesB€ÒF€B€-FÀÕF€ F€íF€1D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÕF€ F€íF€1D€D€B€çD€B€èB€ºB€-FÀÊF€F€åF€B€D€B€çD€B€èB€ºB€-FÀ»F€!F€vF€.B€D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€ùD€B€K†€ xlB€MB€NB€¿D€D€B€ûC€P1€D€ƒ€MAX€€D€C€*€Ç€ÿ™Yš™B€Âl…simulate P1 with 0 then max (0, .35 * F1)€B€ÒF€ B€-FÀÕFÀ F€®FÀ D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÕFÀ F€®FÀ D€D€B€çD€B€èB€ºB€-FÀÊFÀF€¦FÀ B€0D€CƒGUAGE-PRESSURE-THRU-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-F€(FÀ©F€FFÀyB€'D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€NB€-FÀFFÀ©FÀ(FÀnB€ÂD€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€²FÀ¼FÀ€FÀ�FÀXB€²D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ xB€MB€NB€¿¬�Exercise #3€B€ÒF€B€-FÀEFÀòFÀÐFÀÜD€D€B€ÞD€B€ßB€¿B€àF€ÂFÀEFÀòFÀÐFÀÜD€D€B€çD€B€èB€ºB€-FÀ:FÀìFÀØFÀßB€dD€D€C�FLOW-PIPE€B€²F€B€²ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€²F€D€C‚CONTROL-CONNECTIONB€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀD€B€�B€²F€F€B€ƒƒƒTHRU-SENSOR-INPUT-CONNECTIONB€²D€B€†B€²F€B€²B€ˆB€²FÀD€B€†B€²B€²F€B€²CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€�B€²B€²F€B€²Ã‚PUMP-INPUT-CONNECTION€FÀD€B€�B€²F€F€ÂPUMP-OUTPUT-CONNECTIONB€�B€²B€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 1926 :CREATION-DATE 2734378014 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-3" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€û¢LF€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ 6|1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ .|B€MD€B€NC€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-3ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 31€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ 5|B€MB€WÃ�STATEMENT-TEXTD€D€C€IFD€C€>€C€F1F€ÈD€D€ƒ€SENDD€,‚F1 reading ~6F €B€ÂD€ƒ�DESTINATION€�OPERATORC�EVERY-TIMEl†if F1 > 200 then send "F1 reading *** " with F1 to¬‚operator every time€C‚STATEMENT-NUMBER?€F€B€-FÀÓF€ŒF€F€²D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€¿CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÓF€ŒF€F€²D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ºB€-FÀÈF€’F€ùF€ŸB€ÏD€B€çD€B€èB€ºB€-FÀ¹F€¢FÀF€¯B€ÐD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ wlB€MB€NB€¿D€D€�SIMULATEB€ÂB€²D€C�PICON-WAVEF€ÈF€2F€X,†simulate F1 with wave with central value 200 andl„deviation 50 and period 10 minutesB€ÒF€B€-FÀÕF€ F€íF€1D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÕF€ F€íF€1D€D€B€çD€B€èB€ºB€-FÀÊF€F€åF€B€D€B€çD€B€èB€ºB€-FÀ»F€!F€vF€.B€D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€ùD€B€K†€ xlB€MB€NB€¿D€D€B€ûC€P1€D€ƒ€MAX€€D€C€*€Ç€ÿ™Yš™B€Âl…simulate P1 with 0 then max (0, .35 * F1)€B€ÒF€ B€-FÀÕFÀ F€®FÀ D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÕFÀ F€®FÀ D€D€B€çD€B€èB€ºB€-FÀÊFÀF€¦FÀ B€0D€CƒGUAGE-PRESSURE-THRU-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-F€(FÀ©F€FFÀyB€'D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€NB€-FÀFFÀ©FÀ(FÀnB€ÂD€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€²FÀ¼FÀ€FÀ�FÀXB€²D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ xB€MB€NB€¿¬�Exercise #3€B€ÒF€B€-FÀEFÀòFÀÐFÀÜD€D€B€ÞD€B€ßB€¿B€àF€ÂFÀEFÀòFÀÐFÀÜD€D€B€çD€B€èB€ºB€-FÀ:FÀìFÀØFÀßB€dD€D€C�FLOW-PIPE€B€²F€B€²ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€²F€D€C‚CONTROL-CONNECTIONB€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀD€B€�B€²F€F€B€ƒƒƒTHRU-SENSOR-INPUT-CONNECTIONB€²D€B€†B€²F€B€²B€ˆB€²FÀD€B€†B€²B€²F€B€²CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€�B€²B€²F€B€²Ã‚PUMP-INPUT-CONNECTION€FÀD€B€�B€²F€F€ÂPUMP-OUTPUT-CONNECTIONB€�B€²B€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 2106 :CREATION-DATE 2734378623 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-3" :TYPE "PIC" :VERSION 3) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€û¢NF€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ A|1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ =|B€MD€B€NC€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-3ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 31€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ @|B€MB€WÃ�STATEMENT-TEXTD€D€C€IFD€C€>€C€P1F€FD€D€ƒ€SENDD€ì�P1 reading ~6FB€ÂD€ƒ�DESTINATION€�OPERATORl‡if P1 > 70 then send "P1 reading ***" with P1 to operator€C‚STATEMENT-NUMBER?€F€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀÓF€ÀF€@F€ÖD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€¿CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÓF€ÀF€@F€ÖD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ºB€-FÀÈF€ÆF€8F€ÓB€ÎD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€½D€ B€K†€ 9|B€MB€WB€¿D€D€B€ÀD€B€ÁC€F1F€ÈD€D€B€ÅD€,‚F1 reading ~6F €B€ôD€B€ÈB€Él†if F1 > 200 then send "F1 reading *** " with F1 to,�operatorB€ÐF€B€ÒF€ B€-FÀÓF€ŒF€F€²D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÓF€ŒF€F€²D€D€B€çD€B€èB€ºB€-FÀÈF€’F€ùF€ŸB€ýD€B€çD€B€èB€ºB€-FÀ¹F€¢FÀrF€¯B€þD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ wlB€MB€NB€¿D€D€�SIMULATEB€ôB€²D€C�PICON-WAVEF€ÈF€2F€X,†simulate F1 with wave with central value 200 andl„deviation 50 and period 10 minutesB€ÐF€B€-FÀÕF€ F€íF€1D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÕF€ F€íF€1D€D€B€çD€B€èB€ºB€-FÀÊF€F€åF€B€+D€B€çD€B€èB€ºB€-FÀ»F€!F€vF€.B€,D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€"D€B€K†€ xlB€MB€NB€¿D€D€B€$B€Â€D€ƒ€MAX€€D€C€*€Ç€ÿ™Yš™B€ôl…simulate P1 with 0 then max (0, .35 * F1)€B€ÐF€ B€-FÀÕFÀ F€®FÀ D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÕFÀ F€®FÀ D€D€B€çD€B€èB€ºB€-FÀÊFÀF€¦FÀ B€XD€CƒGUAGE-PRESSURE-THRU-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-F€(FÀ©F€FFÀyB€ÂD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€vB€-FÀFFÀ©FÀ(FÀnB€ôD€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€²FÀ¼FÀ€FÀ�FÀXB€²D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ xB€MB€NB€¿¬�Exercise #3€B€ÐF€B€-FÀEFÀòFÀÐFÀÜD€D€B€ÞD€B€ßB€¿B€àF€ÂFÀEFÀòFÀÐFÀÜD€D€B€çD€B€èB€ºB€-FÀ:FÀìFÀØFÀßB€ŒD€D€C�FLOW-PIPE€B€²F€B€²ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€²F€D€C‚CONTROL-CONNECTIONB€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀD€B€©B€²F€F€B€«ƒƒTHRU-SENSOR-INPUT-CONNECTIONB€²D€B€®B€²F€B€²B€°B€²FÀD€B€®B€²B€²F€B€²CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€©B€²B€²F€B€²Ã‚PUMP-INPUT-CONNECTION€FÀD€B€©B€²F€F€ÂPUMP-OUTPUT-CONNECTIONB€µB€²B€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 2148 :CREATION-DATE 2734379429 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-4" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€û¢«QF€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ N|1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ L|B€MD€B€NC€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-4ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 41€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ M|B€MB€WÃ�STATEMENT-TEXTD€D€C€IFC�L1-IS-LOW€D€D€ƒ€SENDD€l‚L1 reads low, ~6F€C€L1D€ƒ�DESTINATION€�OPERATORC�EVERY-TIME,†if l1-is-low then send "L1 reads low, ***" with€lƒL1 to operator every time€C‚STATEMENT-NUMBER?€F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀÃF€kF€öF€‘D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€¿CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÃF€kF€öF€‘D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ºB€-FÀ¸F€qF€îF€~B€ÍD€B€çD€B€èB€ºB€-FÀ©F€�F€7F€ŽB€ÎD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ L|B€MB€WB€¿D€D€C€=€D€B€ÁC�CONDITION€D€C€<€B€ÄF€dl„let condition l1-is-low = l1 < 100B€ÐF€ƒBACKTRACK-TO-GET-VALUE?€B€-B€-FÀÃF€HF€�F€^D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÃF€HF€�F€^D€D€B€çD€B€èB€ºB€-FÀ¸F€NF€yF€[B€D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ ;B€MB€NB€¿D€D€�SIMULATEB€ÄB€²D€C�PICON-WAVEF€dF€2F€X,†simulate L1 with wave with central value 100 andl„deviation 50 and period 10 minutesB€ÐF€B€-FÀÃFÀF€ÿF€D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÃFÀF€ÿF€D€D€B€çD€B€èB€ºB€-FÀ¸FÀF€÷FÀB€)D€B€çD€B€èB€ºB€-FÀ©F€F€ˆF€B€*D€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€½D€ B€K†€ J|B€MD€B€NB€WB€¿D€D€B€ÀC�L1-IS-HIGHD€D€B€ÂD€lƒL1 is reading high at ~6F€B€ÄD€B€ÆB€ÇB€É¬†if l1-is-high then send "L1 is reading high at ***" ìƒwith L1 to operator every timeB€ÐF€B€ÒF€B€-FÀÃFÀHF€#FÀ"D€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÃFÀHF€#FÀ"D€D€B€çD€B€èB€ºB€-FÀ¸FÀBF€FÀ5B€VD€B€çD€B€èB€ºB€-FÀ©FÀ2F€dFÀ%B€WD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€B€ùD€ B€K†€ ;B€MB€NB€¿D€D€B€ûD€B€OB€üD€C€>€B€ÄF€d¬„let condition l1-is-high = L1 > 100€B€ÐF€B€B€-B€-FÀÃFÀoF€ŠFÀYD€D€B€ÞD€B€ßB€¿B€àF€ÂFÀÃFÀoF€ŠFÀYD€D€B€çD€B€èB€ºB€-FÀ¸FÀiF€‚FÀ\B€�D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-FÀFÀ«F€ FÀ�B€ÄD€B€·D€B€¸B€ºB€-B€»D€B€¼D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ xB€MB€NB€¿¬�Exercise #4€B€ÐF€B€-FÀEFÀòFÀÐFÀÜD€D€B€ÞD€B€ßB€¿B€àF€ÂFÀEFÀòFÀÐFÀÜD€D€B€çD€B€èB€ºB€-FÀ:FÀìFÀØFÀßB€ªD€D€C�FLOW-PIPE€B€²B€²F€B€²C‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€²F€B€²ƒƒSENSOR-CONTROLLER-CONNECTIONB€²FÀB€²1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "LB" :CHARACTERS NIL :QFASLP NIL :LENGTH 3155 :CREATION-DATE 2734434749 :DIRECTORY "PICON-CLASS" :NAME "LB-EXERCISE-6" :TYPE "PIC" :VERSION 1) hưs2€D€p€,€l�FASD-DATA€D€l€LBì€Ralph€†€ü¢Ä)F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ è1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ÞB€MD€B€NC€LBCƒNEXT-NEW-STATEMENT-NUMBER€F€&C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�EXERCISE-6ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Exercise 61€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ ?B€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ ÝB€MB€WÃ�STATEMENT-TEXTD€D€C€=€D€ƒ‚LEVEL-IS-DECREASING€C�CONDITION€ƒ€NIL€¬…let level-is-decreasing be a named conditionC‚STATEMENT-NUMBER?€F€$ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€B€ID€B€JD€B€°D€ B€K†€ b;B€MB€NB€²D€D€B€³D€ƒ‚LEVEL-IS-INCREASING€B€µB€·¬…let level-is-increasing be a named conditionB€»F€B€½B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€·FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ çB€MB€WB€²D€D€C€IFB€´D€D€ƒ€SENDD€l‚tank is decreasingD€ƒ�DESTINATION€�OPERATORC�EVERY-TIMElˆif level-is-decreasing then send "tank is decreasing" to operator€l�every timeB€»F€%B€-FÀF€PF€LF€vD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€²CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀF€PF€LF€vD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ØB€-FÀF€VF€DF€cB€èD€B€ÿD€B€B€ØB€-FÀõF€fFÀœF€sB€éD€B€ÕD€B€ÖB€ØB€-B€ÙD€B€ÚD€B€ID€B€JD€B€ÛD€B€K†€ äB€MD€B€NB€WB€²D€D€B€ÝB€ÄD€D€B€ÞD€,†The tank level is now increasing - Check limits�D€B€áB€â,„if level-is-increasing then send,†"The tank level is now increasing - Check limitsì�" to operator€B€»F€B€-FÀ FÀF€ÄF€$D€D€B€öD€B€÷B€²B€øF€ÂFÀ FÀF€ÄF€$D€D€B€ÿD€B€B€ØB€-FÀFÀ F€F€B€D€B€ÿD€B€B€ØB€-FÀóF€F€¼F€B€D€B€ÿD€B€B€ØB€-FÀóF€FÀF€!B€D€B€ÕD€B€ÖB€ØB€-B€ÙD€B€ÚD€B€ID€B€JD€B€ÛD€ B€K†€ àB€MB€WB€²D€D€B€ÝD€C€<€C€F1C€F2D€D€�CONCLUDEB€´¬…if f1 < f2 then conclude level-is-decreasingB€»F€#ƒPICON-RULE-SCAN-INTERVALF€B€-FÀF€1F€�F€GD€D€B€öD€B€÷B€²B€øF€ÂFÀF€1F€�F€GD€D€B€ÿD€B€B€ØB€-FÀF€7F€‡F€DB€MD€B€ÕD€B€ÖB€ØB€-B€ÙD€B€ÚD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ e;B€MB€NB€²l€2€B€»F€ B€-FÀ1FÀFÀF€D€D€B€öD€B€÷B€²B€øF€ÂFÀ1FÀFÀF€D€D€B€ÿD€B€B€ØB€-FÀ&FÀFÀF€B€nD€B€ÕD€B€ÖB€ØB€-B€ÙD€B€ÚD€B€ID€B€JD€B€ÛD€ B€K†€ äB€MD€B€NB€WB€²D€D€B€ÝD€C€>€B€FB€GD€D€B€IB€Ä¬…if F1 > F2 then conclude level-is-increasingB€»F€B€PF€B€-FÀFÀ5F€ŽFÀD€D€B€öD€B€÷B€²B€øF€ÂFÀFÀ5F€ŽFÀD€D€B€ÿD€B€B€ØB€-FÀFÀ/F€†FÀ"B€‘D€B€ÕD€B€ÖB€ØB€-B€ÙD€B€ÚD€B€ID€B€JD€B€lD€B€K†€ e;B€MB€NB€²l€1€B€»F€B€-FÀ1FÀ6FÀFÀ D€D€B€öD€B€÷B€²B€øF€ÂFÀ1FÀ6FÀFÀ D€D€B€ÿD€B€B€ØB€-FÀ&FÀ0FÀFÀ#B€°D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€ëFÀ~F€ FÀCB€GD€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€B€ÍB€-F€ŽFÀÅF€¬FÀ§C€L1D€B€ÌD€B€ÍB€-FÀœFÀÑFÀ~FÀ–B€FD€ƒ�ACCUMULATOR€B€·FÀNFÀˆF€HFÀVƒ€TANKD€B€ÕD€B€ÖB€ØB€-B€ÙD€B€ÚD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ y;B€MB€NB€²D€D€�SIMULATEB€FB€·D€C�PICON-WAVEF€sF€ F€h€€F€h,†simulate F1 with wave with central value 115 and,†deviation 12 and period 6 minutes and phase 360€B€»F€B€-FÀF€pF€©F€–D€D€B€öD€B€÷B€²B€øF€ÂFÀF€pF€©F€–D€D€B€ÿD€B€B€ØB€-FÀF€vF€›F€ƒB€÷D€B€ÿD€B€B€ØB€-FÀF€†F€¡F€“B€øD€B€ÕD€B€ÖB€ØB€-B€ÙD€B€ÚD€B€ID€B€JD€B€ëD€B€K†€ >;B€MB€NB€²D€D€B€íB€ÜF€2D€C€+€D€C€/€D€C€-€B€FB€GF€B€Üì…simulate L1 with 50 then (F1 - F2) / 3600 + L1B€»F€B€-FÀ F€NF€�F€dD€D€B€öD€B€÷B€²B€øF€ÂFÀ F€NF€�F€dD€D€B€ÿD€B€B€ØB€-FÀF€TF€ˆF€aB€%D€B€ÕD€B€ÖB€ØB€-B€ÙD€B€ÚD€B€ID€B€JD€B€ëD€B€K†€ y;B€MB€NB€²D€D€B€íB€GB€·D€B€îF€nF€F€h,†simulate F2 with wave with central value 110 andl„deviation 22 and period 6 minutes€B€»F€B€-FÀ F€F€¢F€CD€D€B€öD€B€÷B€²B€øF€ÂFÀ F€F€¢F€CD€D€B€ÿD€B€B€ØB€-FÀF€#F€šF€0B€HD€B€ÿD€B€B€ØB€-FÀF€3F€"F€@B€ID€B€ÕD€B€ÖB€ØB€-B€ÙD€B€ÚD€B€ID€B€JD€B€lD€B€K†€ !xB€MB€NB€²¬�Exercise #6€B€»F€B€-FÀFFÀóFÀÑFÀÝD€D€B€öD€B€÷B€²B€øF€ÂFÀFFÀóFÀÑFÀÝD€D€B€ÿD€B€B€ØB€-FÀ;FÀíFÀÙFÀàB€mD€D€C�FLOW-PIPE€B€·F€B€·ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€·F€D€C‚CONTROL-CONNECTIONB€·F€B€·ƒƒSENSOR-CONTROLLER-CONNECTIONB€·FÀD€B€�B€·F€B€·B€‘B€·FÀD€B€ŠB€·B€·F€B€·ƒƒTHRU-SENSOR-INPUT-CONNECTIONFÀD€B€ŠB€·F€F€ B€ŒÂACCUMULATOR-MAIN-INPUTB€·D€B€�B€·F€B€·B€‘B€·FÀD€B€ŠB€·F€ F€ƒACCUMULATOR-MAIN-OUTPUT€B€˜B€·D€B€�B€·F€ F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€B€·1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 8 :AUTHOR "LB" :QFASLP NIL :LENGTH 1681 :CREATION-DATE 2734525669 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LB-ICONS" :TYPE "LISP" :VERSION 1) ;;; -*- Mode:LISP; Package:PICON; Fonts:(HL12B); Base:10 -*-��;;; These are some examples of how to create icons.��(def-frame-type (piping process-equipment)� (pipe-op-input-connection (:input :left 50) flow-pipe)� (pipe-op-output-connection-1 (:output :right 10) flow-pipe)� (pipe-op-output-connection-2 (:output :right 90) flow-pipe)� (image-description� '#.(make-image-description�‰ (size 100 100)�‰ (position-for-name nil 80)�‰ (circular-arc (10 40) (0 50) (10 60))�‰ (circular-arc (10 40) (20 50) (10 60))�‰ (fill (10 50))�‰ (line (10 40) (60 40))�‰ (line (10 60) (60 60))�‰ (circular-arc (60 40) (70 50) (60 60))�‰ (line (60 40) (80 10))�‰ (line (60 60) (80 90))�‰ (line (70 50) (90 20))�‰ (line (70 50) (90 80))�‰ (circular-arc (90 0) (100 10) (90 20))�‰ (circular-arc (90 0) (80 10) (90 20))�‰ (fill (90 10))�‰ (circular-arc (90 80) (100 90) (90 100))�‰ (circular-arc (90 80) (80 90) (90 100))�‰ (fill (90 90)))))��(def-frame-type (test process-equipment :abstract))��‰‰‰‰‰‰�(def-frame-type (run-one test)� (start-op-input-connection (:input :left 10) flow-pipe)� (start-op-output-connection (:output :right 10) flow-pipe)� (image-description� '#.(make-image-description�‰ (size 20 20)�‰ (position-for-name nil 30)�‰ (polyline (0 0) (20 0) (20 20) (0 20) (0 0))�‰ (fill (10 10)))))�‰‰‰‰‰‰�(def-frame-type (run-two test)� (stop-op-input-connection (:input :left 10) flow-pipe)� (stop-op-output-connection (:output :right 10) flow-pipe)� (image-description� '#.(make-image-description�‰ (size 30 30)�‰ (position-for-name nil 35)�‰ (polyline (0 0) (30 0) (30 30) (0 30) (0 0))�‰ (circle (5 15) (15 5) (25 15))�‰ (fill (5 5)))))LMFL(:BYTE-SIZE 8 :AUTHOR "LB" :QFASLP NIL :LENGTH 2443 :CREATION-DATE 2734546980 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "LB-ICONS" :TYPE "LISP" :VERSION 2) ;;; -*- Mode:LISP; Package:PICON; Fonts:(HL12B); Base:10 -*-��;;; These are some examples of how to create icons.��(def-frame-type (piping process-equipment)� (pipe-op-input-connection (:input :left 50) flow-pipe)� (pipe-op-output-connection-1 (:output :right 10) flow-pipe)� (pipe-op-output-connection-2 (:output :right 90) flow-pipe)� (image-description� '#.(make-image-description�‰ (size 100 100)�‰ (position-for-name nil 80)�‰ (circular-arc (10 40) (0 50) (10 60))�‰ (circular-arc (10 40) (20 50) (10 60))�‰ (fill (10 50))�‰ (line (10 40) (60 40))�‰ (line (10 60) (60 60))�‰ (circular-arc (60 40) (70 50) (60 60))�‰ (line (60 40) (80 10))�‰ (line (60 60) (80 90))�‰ (line (70 50) (90 20))�‰ (line (70 50) (90 80))�‰ (circular-arc (90 0) (100 10) (90 20))�‰ (circular-arc (90 0) (80 10) (90 20))�‰ (fill (90 10))�‰ (circular-arc (90 80) (100 90) (90 100))�‰ (circular-arc (90 80) (80 90) (90 100))�‰ (fill (90 90)))))��(def-frame-type (test process-equipment :abstract))��‰‰‰‰‰‰�(def-frame-type (run-one test)� (start-op-input-connection (:input :left 10) flow-pipe)� (start-op-output-connection (:output :right 10) flow-pipe)� (image-description� '#.(make-image-description�‰ (size 20 20)�‰ (position-for-name nil 30)�‰ (polyline (0 0) (20 0) (20 20) (0 20) (0 0))�‰ (fill (10 10)))))�‰‰‰‰‰‰���(def-frame-type (run-two test)� (stop-op-input-connection (:input :left 10) flow-pipe)� (stop-op-output-connection (:output :right 10) flow-pipe)� (image-description� '#.(make-image-description�‰ (size 30 30)�‰ (position-for-name nil 35)�‰ (polyline (0 0) (30 0) (30 30) (0 30) (0 0))�‰ (circle (5 15) (15 5) (25 15))�‰ (fill (5 5)))))��(def-frame-type (star test)� (image-description� '#.(make-image-description� (size 60 50)� (block-outline)�‰ (line (10 20) (40 20))�‰ (line (40 20) (17 40))�‰ (line (17 40) (25 10))�‰ (line (25 10) (32 40))�‰ (line (32 40) (10 20))�‰ (fill (25 25))� )� )�)���(def-frame-type (david-star test)� (image-description� '#.(make-image-description�‰ (size 60 50)�‰ (block-outline)�‰ (polygon (10 40) (25 10) (40 40))�‰ (polygon (10 20) (40 20) (25 50))� )� )�)���(def-frame-type (heart test)� (image-description� '#.(make-image-description�‰ (size 50 50)�‰ (block-outline)�‰ (circular-arc (10 20) (15 10) (25 20))�‰ (circular-arc (25 20) (35 10) (40 20))�‰ (line (40 20) (25 40))�‰ (line (25 40) (10 20))� )� )�)�LMFL(:BYTE-SIZE 8 :AUTHOR "WILDE" :QFASLP NIL :LENGTH 15483 :CREATION-DATE 2732624618 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "MIKE-CASE-2" :TYPE "PRI" :VERSION 1) ��� This is RALPH: PICON-CLASS; MIKE-CASE-2.PRI#1 (created 5 aug 86 10:23),� based on RALPH: PICON-CLASS; CASE-STUDY-2.PIC#1 (created 17 may 86 1:46),� as possibly modified on-line.�����STATEMENTS���(3) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 18 may 86 12:57� Usage ....................... = In use�simulate L1 with 0 then � if time < 600 then� min ((L1 + (.01666 * (F1 / sim-tank-area))� + (.01666 * (F2 / sim-tank-area-2))), 400) else� if time < 1200 then 397 else � if time < 1800 then wave� with central value 400 and deviation 400 and� period 1200 seconds and phase 1800 and shape ramp-down � else 0���(4) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 7 may 86 3:29� Usage ....................... = In use�if L1 > 0 then do nothing���(5) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 15:07� Usage ....................... = In use�if F1 > 0 then do nothing���(6) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 15:08� Usage ....................... = In use�if F2 > 0 then do nothing���(7) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 16:45� Usage ....................... = In use�simulate F1 with � if time < 150 then wave� with central value 60 and deviation 60 and� period 600 seconds and phase 450 else� if time < 450 then wave with central value 60 and � deviation 0 and period 1 minute and noise .3 else � if time < 600 then wave� with central value 60 and deviation 60 and� period 600 seconds and phase 450 else 0���(24) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 15:00� Usage ....................... = In use�simulate T1 with 125 then � if time < 600 then 80 else � if time < 900 then wave� with central value 80 and deviation 170 and� period 1200 seconds and phase 300 else � if time < 2400 then 250 else � if time < 3000 then wave� with central value 125 and deviation 125 and� period 2400 seconds and phase 1200 else 70���(28) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 15 may 86 15:44� Usage ....................... = In use�simulate clock with 0 then time���(29) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 7 may 86 5:09� Usage ....................... = In use�if clock > 0 then do nothing���(33) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 7 may 86 5:19� Usage ....................... = In use�if F3 > 0 then do nothing���(34) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 18 may 86 11:40� Usage ....................... = In use�simulate F3 with 0 then � if time < 1200 then 0 else � if time < 1800 then (min (f3-wave, (F3 + 3.1))) else � if time < 2000 then 0 else 0���(37) Free Text Statement� Authors ..................... = DWR� Last changed ................ = 16 may 86 19:39� Usage ....................... = Brand-new�Chemical Mixing Process���(39) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:50� Usage ....................... = In use�simulate F4 with 0 then F3 * L2 setpoint / max (1, L2)���(40) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:39� Usage ....................... = In use�simulate P2 with 0 then F3 * (L2 / L2 setpoint)���(41) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 7 may 86 9:55� Usage ....................... = In use�if F4 > 0 then do nothing���(42) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 7 may 86 9:55� Usage ....................... = In use�if P1 > 0 then do nothing���(45) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 15 may 86 14:49� Usage ....................... = In use�simulate local temp-wave with wave with central� value 2000 and deviation 2000 and period 8 hours � and phase 21600���(46) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 15 may 86 14:41� Usage ....................... = In use�simulate temp-start with 80���(87) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 16 may 86 12:30� Usage ....................... = In use�simulate sim-tank-area with 2.02���(92) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 16:33� Usage ....................... = In use�simulate P1 with 0 then (2.5 * F3)���(95) Free Text Statement� Authors ..................... = DWR� Last changed ................ = 19 may 86 9:35� Usage ....................... = Brand-new�The purpose of these rules is to force the� displaying of sensor values on the schematic���(104) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 16:45� Usage ....................... = In use�simulate F2 with � if time < 150 then wave� with central value 100 and deviation 100 and� period 600 seconds and phase 450 else� if time < 450 then wave with central value 100� and deviation 0 and period 1 minute and noise .4 else � if time < 600 then wave� with central value 100 and deviation 100 and� period 600 seconds and phase 450 else 0���(105) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 16:37� Usage ....................... = In use�if P2 > 0 then do nothing���(106) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 16:40� Usage ....................... = In use�simulate sim-tank-area-2 with 3.5���(107) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 18 may 86 11:41� Usage ....................... = In use�simulate local f3-wave with wave with central� value 80 and deviation 0 and period 1 minute � and noise 1.3���(109) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 20 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 18 may 86 12:41� Usage ....................... = In use�if F1 > 60 then � send " F1 is reading *** and should not exceed 60"� with F1 to operator���(110) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 20 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 18 may 86 12:41� Usage ....................... = In use�if F2 > 100 then � send " F2 is reading *** and should not exceed 100"� with F2 to operator���(112) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = yes� determine the value? � Authors ..................... = DWR� Last changed ................ = 18 may 86 12:42� Usage ....................... = In use�tank-level-safety-limit = 380���(113) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 1 minute� Alert interval .............. = 20 seconds� Authors ..................... = DWR� Last changed ................ = 18 may 86 12:55� Usage ....................... = In use�if L1 > tank-level-safety-limit then � send "Tank level: *** is over safety limit of ***"� with L1, tank-level-safety-limit to operator � every 1 minute and� conclude tank-level-is-dangerously-high���(115) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = none� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 18 may 86 12:53� Usage ....................... = In use�if tank-level-is-dangerously-high and there-is-incoming-flow� then send "Tank level is above safety limit and is still� increasing." to operator every time���(116) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = yes� determine the value? � Authors ..................... = DWR� Last changed ................ = 18 may 86 12:52� Usage ....................... = In use�let tank-level-is-dangerously-high be a named condition���(117) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = yes� determine the value? � Authors ..................... = DWR� Last changed ................ = 18 may 86 12:53� Usage ....................... = In use�let condition there-is-incoming-flow = F1 > 0 � or F2 > 0���(118) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 1 minute� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 15 may 86 14:08� Usage ....................... = In use�if CLOCK > 2000 then � send "The simulation has completed." to operator���(119) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:34� Usage ....................... = In use�simulate L2 with 0 then ( F4 / tank-2-area) / 3600 + L2���(120) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:00� Usage ....................... = In use�simulate L2 setpoint with 250 then L2 setpoint���(122) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:33� Usage ....................... = In use�simulate tank-2-area with 1.12���(123) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 16 may 86 23:57� Usage ....................... = In use�if L2 > 0 then do nothing���LMFL(:BYTE-SIZE 8 :AUTHOR "WILDE" :QFASLP NIL :LENGTH 21942 :CREATION-DATE 2732624717 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "MIKE-CASE-2-SOLUTION" :TYPE "PRI" :VERSION 1) ��� This is RALPH: PICON-CLASS; MIKE-CASE-2-SOLUTION.PRI#1 (created 5 aug 86 10:25),� based on RALPH: PICON-CLASS; CASE-2-SOLUTION.PIC#2 (created 17 may 86 0:51),� as possibly modified on-line.�����STATEMENTS���(3) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 18 may 86 12:57� Usage ....................... = In use�simulate L1 with 0 then � if time < 600 then� min ((L1 + (.01666 * (F1 / sim-tank-area))� + (.01666 * (F2 / sim-tank-area-2))), 400) else� if time < 1200 then 397 else � if time < 1800 then wave� with central value 400 and deviation 400 and� period 1200 seconds and phase 1800 and shape ramp-down � else 0���(4) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 7 may 86 3:29� Usage ....................... = In use�if L1 > 0 then do nothing���(5) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 15:07� Usage ....................... = In use�if F1 > 0 then do nothing���(6) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 15:08� Usage ....................... = In use�if F2 > 0 then do nothing���(7) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 16:45� Usage ....................... = In use�simulate F1 with � if time < 150 then wave� with central value 60 and deviation 60 and� period 600 seconds and phase 450 else� if time < 450 then wave with central value 60 and � deviation 0 and period 1 minute and noise .3 else � if time < 600 then wave� with central value 60 and deviation 60 and� period 600 seconds and phase 450 else 0���(24) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 15:00� Usage ....................... = In use�simulate T1 with 125 then � if time < 600 then 80 else � if time < 900 then wave� with central value 80 and deviation 170 and� period 1200 seconds and phase 300 else � if time < 2400 then 250 else � if time < 3000 then wave� with central value 125 and deviation 125 and� period 2400 seconds and phase 1200 else 70���(28) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 15 may 86 15:44� Usage ....................... = In use�simulate clock with 0 then time���(29) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 7 may 86 5:09� Usage ....................... = In use�if clock > 0 then do nothing���(33) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 7 may 86 5:19� Usage ....................... = In use�if F3 > 0 then do nothing���(34) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 18 may 86 11:40� Usage ....................... = In use�simulate F3 with 0 then � if time < 1200 then 0 else � if time < 1800 then (min (f3-wave, (F3 + 3.1))) else � if time < 2000 then 0 else 0���(37) Free Text Statement� Authors ..................... = DWR� Last changed ................ = 16 may 86 19:39� Usage ....................... = Brand-new�Chemical Mixing Process���(39) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:50� Usage ....................... = In use�simulate F4 with 0 then F3 * L2 setpoint / max (1, L2)���(40) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:39� Usage ....................... = In use�simulate P2 with 0 then F3 * (L2 / L2 setpoint)���(41) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 7 may 86 9:55� Usage ....................... = In use�if F4 > 0 then do nothing���(42) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 7 may 86 9:55� Usage ....................... = In use�if P1 > 0 then do nothing���(45) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 15 may 86 14:49� Usage ....................... = In use�simulate local temp-wave with wave with central� value 2000 and deviation 2000 and period 8 hours � and phase 21600���(46) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 15 may 86 14:41� Usage ....................... = In use�simulate temp-start with 80���(87) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 16 may 86 12:30� Usage ....................... = In use�simulate sim-tank-area with 2.02���(92) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 16:33� Usage ....................... = In use�simulate P1 with 0 then (2.5 * F3)���(95) Free Text Statement� Authors ..................... = DWR� Last changed ................ = 19 may 86 9:35� Usage ....................... = Brand-new�The purpose of these rules is to force the� displaying of sensor values on the schematic���(104) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 16:45� Usage ....................... = In use�simulate F2 with � if time < 150 then wave� with central value 100 and deviation 100 and� period 600 seconds and phase 450 else� if time < 450 then wave with central value 100� and deviation 0 and period 1 minute and noise .4 else � if time < 600 then wave� with central value 100 and deviation 100 and� period 600 seconds and phase 450 else 0���(105) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 16:37� Usage ....................... = In use�if P2 > 0 then do nothing���(106) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 16:40� Usage ....................... = In use�simulate sim-tank-area-2 with 3.5���(107) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 18 may 86 11:41� Usage ....................... = In use�simulate local f3-wave with wave with central� value 80 and deviation 0 and period 1 minute � and noise 1.3���(109) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 20 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 18 may 86 12:41� Usage ....................... = In use�if F1 > 60 then � send " F1 is reading *** and should not exceed 60"� with F1 to operator���(110) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 20 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 18 may 86 12:41� Usage ....................... = In use�if F2 > 100 then � send " F2 is reading *** and should not exceed 100"� with F2 to operator���(112) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = yes� determine the value? � Authors ..................... = DWR� Last changed ................ = 18 may 86 12:42� Usage ....................... = In use�tank-level-safety-limit = 380���(113) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 1 minute� Alert interval .............. = 20 seconds� Authors ..................... = DWR� Last changed ................ = 18 may 86 12:55� Usage ....................... = In use�if L1 > tank-level-safety-limit then � send "Tank level: *** is over safety limit of ***"� with L1, tank-level-safety-limit to operator � every 1 minute and� conclude tank-level-is-dangerously-high���(115) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = none� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 18 may 86 12:53� Usage ....................... = In use�if tank-level-is-dangerously-high and there-is-incoming-flow� then send "Tank level is above safety limit and is still� increasing." to operator every time���(116) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = yes� determine the value? � Authors ..................... = DWR� Last changed ................ = 18 may 86 12:52� Usage ....................... = In use�let tank-level-is-dangerously-high be a named condition���(117) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = yes� determine the value? � Authors ..................... = DWR� Last changed ................ = 18 may 86 12:53� Usage ....................... = In use�let condition there-is-incoming-flow = F1 > 0 � or F2 > 0���(118) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 1 minute� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 15 may 86 14:08� Usage ....................... = In use�if CLOCK > 2000 then � send "The simulation has completed." to operator���(119) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:34� Usage ....................... = In use�simulate L2 with 0 then ( F4 / tank-2-area) / 3600 + L2���(120) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:00� Usage ....................... = In use�simulate L2 setpoint with 250 then L2 setpoint���(122) Simulation Statement� Categories .................. = ...� Associated units ............ = ...� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:33� Usage ....................... = In use�simulate tank-2-area with 1.12���(123) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 10 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 16 may 86 23:57� Usage ....................... = In use�if L2 > 0 then do nothing���(124) Initial Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:11� Usage ....................... = In use�initially � set fill-time = 0 and� set drain-time = 0���(125) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = no� determine the value? � Authors ..................... = DWR� Last changed ................ = 17 may 86 0:11� Usage ....................... = In use�let fill-time be a numeric variable���(126) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = no� determine the value? � Authors ..................... = DWR� Last changed ................ = 17 may 86 0:11� Usage ....................... = In use�let drain-time be a numeric variable���(127) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 30 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:23� Usage ....................... = In use�if L1 > L1 as of 30 seconds ago then� conclude tank-is-filling and advance step variable fill-stage � to filling else conclude not tank-is-filling���(128) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = ...� determine the value? � Authors ..................... = DWR� Last changed ................ = 17 may 86 0:12� Usage ....................... = In use�let step variable fill-stage be filling, draining, unknown���(132) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 30 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:23� Usage ....................... = In use�if L1 < L1 as of 30 seconds ago then� conclude tank-is-draining and advance step variable fill-stage � to draining else conclude not tank-is-draining���(133) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = none� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:22� Usage ....................... = In use�if tank-is-filling then increment fill-time by 30���(134) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = none� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:30� Usage ....................... = In use�if tank-is-draining then increment drain-time by 30���(135) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = yes� determine the value? � Authors ..................... = DWR� Last changed ................ = 17 may 86 0:23� Usage ....................... = In use�let tank-is-draining be a named condition���(136) Definition� Categories .................. = ...� Associated units ............ = ...� Trace this? ................. = no� Currency interval ........... = derived� Should backtracking be used to = yes� determine the value? � Authors ..................... = DWR� Last changed ................ = 17 may 86 0:23� Usage ....................... = In use�let tank-is-filling be a named condition���(137) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no�  Scan interval ............... = none� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:24� Usage ....................... = In use�if not tank-is-filling and fill-stage is filling then� advance step variable fill-stage to unknown and� send "Fill time was: ***" with fill-time to log���(138) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = none� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:27� Usage ....................... = In use�if not tank-is-draining and fill-stage is draining then� advance step variable fill-stage to unknown and� send "Drain time was: ***" with drain-time to log���(139) If Then Rule� Categories .................. = ...� Associated units ............ = ...� Priority .................... = 1� Trace this? ................. = no� Scan interval ............... = 30 seconds� Alert interval .............. = none� Authors ..................... = DWR� Last changed ................ = 17 may 86 0:41� Usage ....................... = In use�if L2 > 100 then set L2 setpoint = 50 else� set L2 setpoint = 100���LMFL(:BYTE-SIZE 8 :AUTHOR "DWR" :QFASLP NIL :LENGTH 866 :CREATION-DATE 2729444076 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "PICON-KEYBOARD-INPUT" :TYPE "LISP" :VERSION 2) ;;; -*- Mode:LISP; Package:PICON; Base:10 -*-�������(defmacro def-intercept-character (character &body body)� (let ((character-var (gensym))�‰(character-function (gensym)))� `(let ((,character-function�‰ #'(lambda (character &rest ignore)�‰‰(setq inhibit-scheduling-flag nil)�‰‰(progn . ,body)�‰‰(values character t)))�‰ (,character-var ,character))� (if (not (assoc ,character-var�‰‰ tv:kbd-intercepted-characters))�‰ (push `(,,character-var ,,character-function)�‰‰ tv:kbd-intercepted-characters)�‰ (setf (cadr (assoc ,character-var�‰‰‰ tv:kbd-intercepted-characters))�‰ ,character-function)))))� ��(def-intercept-character #\macro (get-keyboard-value))��(defvar input-value)��(defun get-keyboard-value (title)� (format t "~%Enter a ~d:" title)� (setq input-value (read)))��(defun return-value ()� (values input-value 999))LMFL(:BYTE-SIZE 8 :AUTHOR "DWR" :QFASLP NIL :LENGTH 858 :CREATION-DATE 2730897469 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "PICON-KEYBOARD-INPUT" :TYPE "LISP" :VERSION 3) ;;; -*- Mode:LISP; Package:PICON; Base:10 -*-�������(defmacro def-intercept-character (character &body body)� (let ((character-var (gensym))�‰(character-function (gensym)))� `(let ((,character-function�‰ #'(lambda (character &rest ignore)�‰‰(setq inhibit-scheduling-flag nil)�‰‰(progn . ,body)�‰‰(values character t)))�‰ (,character-var ,character))� (if (not (assoc ,character-var�‰‰ tv:kbd-intercepted-characters))�‰ (push `(,,character-var ,,character-function)�‰‰ tv:kbd-intercepted-characters)�‰ (setf (cadr (assoc ,character-var�‰‰‰ tv:kbd-intercepted-characters))�‰ ,character-function)))))� ��(def-intercept-character #\macro (get-keyboard-value))��(defvar input-value)��(defun get-keyboard-value ()� (format t "~%Enter a value:")� (setq input-value (read)))��(defun return-value ()� (values input-value 999))LMFL(:BYTE-SIZE 16 :AUTHOR "TROY" :CHARACTERS NIL :QFASLP NIL :LENGTH 966 :CREATION-DATE 2734521499 :DIRECTORY "PICON-CLASS" :NAME "PICON-KEYBOARD-INPUT" :TYPE "QFASL" :VERSION 3) hưs2€D€p€,€¬�COMPILE-DATAD€¬€TROY¬€Duke†€ý¢(|F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITEp€B€ ,�ANDOVER€p€B€ ¬ƒQFASL-SOURCE-FILE-UNIQUE-ID€1€D€p€l€FSì‚MAKE-FASLOAD-PATHNAME€D€p€B€+ì€QUOTE€ì€RALPH€D€B€:¬€DSK€D€B€:¬�PICON-CLASS€D€B€:¬‚PICON-KEYBOARD-INPUTD€B€:¬€LISPD€B€:F€p€B€ ¬€BASEF€ p€B€ ,�PACKAGE€p€B€ ì€PICON€1€D€pÀl€SIl„DEFMACRO-SET-INDENTATION-FOR-ZWEI€D€B€:ƒDEF-INTERCEPT-CHARACTER€D€B€:F€€B€T€Ë€$`†€0ÀF€<ÀB€TÀF€BÀ†€@À†€€€pÀB€Q,ƒMACRO-REPORT-ARGS-ERROR€ÒÀGENSYMÒƒ€LET€À�FUNCTIONÀÀLAMBDAÀD€C�CHARACTER€Ã€&REST€Ã€IGNOREÀD€ƒ€SETQƒINHIBIT-SCHEDULING-FLAG€ƒ€NIL€ÀÀPROGN€ÀD€D€ÀVALUESB€fB€-ÀC€IFÀƒ€NOT€ÀÀASSOC€ÀD€p€l€TVlƒKBD-INTERCEPTED-CHARACTERSÀƒ€PUSHÀpÀB€Ql�XR-BQ-LISTÀƒ€SETFÀƒ€CADR€D€D€p€B€ ¬�EXPR-SXHASH€†€dÕD€p€B€ ,‚MACROS-EXPANDED€D€pÀB€Ql�XR-BQ-CONSpÀB€Q¬�XR-BQ-LIST*€B€{D€pÀB€(,�ARG-MAP€D€D€pÀB€Ql�*MACROARG*D€pÀB€Ql‚*MACROENVIRONMENT*D€pÀB€(l�LOCAL-MAP€D€D€B€fD€ƒ€BODYD€Ã�CHARACTER-VAR€D€C‚CHARACTER-FUNCTIOND€p€ì€SYSTEM,‚FUNCTION-PARENT€B€TD€�ARGLIST€B€fÀ&BODY€B€—€€EÔZU8€E|Å€K@÷€MA÷BBC÷B÷DCE D D D D DAEöZD|Vz|Uz|UzBE@E|Uz|UzDDDBED|Vz|UzDDBECE|UzD|VzDDDBED|Vz|UzCE|Uz|Uz|UºDÀÀMACRO€B€§O€©B€T€1€D€B€cD€D€ÀG0431€D€B€dD€B€eB€iB€mD€B€nD€C‚GET-KEYBOARD-VALUEB€pD€ÀG0430€F€…D€B€rD€B€sD€B€tB€±B€wD€B€yD€B€{B€±B€ªB€wD€B€|D€B€}D€B€tB€±B€wB€ª1€D€pÀB€Q,�DEFVAR-1ƒ�INPUT-VALUE€€B€«€Ë€ †€ÀF€ ÀB€«À€À†€@ÀF€€€B€Á‘ÀFORMATÒ,‚~%Enter a value:Àƒ€READ’EÄ BÖÿ…O€ÍB€«€€ƒ�RETURN-VALUE€Ë€ †€ÀF€ ÀB€ÎÀ€À†€@ÀF€€€B€Á‘F€ç€DDO€ÖB€Î€1€D€pÀB€Q,„FASL-RECORD-FILE-MACROS-EXPANDEDD€B€:D€D€B€{†€q�D€B€‡†€Ò—D€B€…†€?ª€€LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 1241 :CREATION-DATE 2730912283 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "SCHEDULE" :TYPE "TEXT" :VERSION 10) Œ�� ‰‰P I C O N Course Schedule�‰‰_____________________________�Monday�‰ 8:30 - 9:00 Coffee and Doughnuts�‰ 9:00 - 10:00 Introduction to PICON and Expert Systems �‰11:00 - 12:00 PICON Demonstration��‰12:30 - 2:00 Lunch��‰ 2:00 - 3:00 Schematic Capture and Manipulation��‰ 3:00 - 4:30 Lab - Lab Sessions 1, 2, 3�‰ 4:30 - ? "Get Acquainted with the LMI'ers" Party��Tuesday�‰ 8:00 - 9:00 Optional Lab Time�‰ 9:00 - 12:30 Rules ��‰12:30 - 2:00 Lunch��‰ 2:00 - 5:00 Lab - Lab Sessions 3, 4, 5��Wednesday�‰ 8:00 - 9:00 Optional Lab Time�‰ 9:00 - 10:30 Icon Customization and User Hooks �‰10:30 - 12:30 Lab - Lab Session 7��‰12:30 - 2:00 Lunch��‰ 2:00 - 3:30 Simulation and Modeling (Mike Levin)�‰ 3:30 - 4:30 FAULTS Demonstration�‰ 4:30 - 5:00 Question and Answer��Thursday�‰ 8:00 - 9:00 Optional Lab Time� 9:00 - 11:00 RTIME Theory and Application� 11:30 - 12:30 RTIME Demonstration�‰� 112:30 - 2:00 Lunch��‰ 2:00 - 5:00 Lab - Finish all remaining lab sessions�‰�‰ 5:30 - Course Dinner��Friday�‰ 8:00 - 9:00 Optional Lab Time�‰ 9:00 - 10:30 Knowledge Engineering� 11:00 - ?? Future Plans - Cambridge (Lowell Hawkinson)�‰10:30 - 12:00 Optional Lab Time����LMFL(:BYTE-SIZE 16 :AUTHOR "dwr" :CHARACTERS NIL :QFASLP NIL :LENGTH 2962 :CREATION-DATE 2725885771 :DIRECTORY "PICON-CLASS" :NAME "SOLUTION-10" :TYPE "PIC" :VERSION 3) hưs2€D€p€,€l�FASD-DATA€D€¬€dwr€ì€Ralph€†€y¢K·F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ µM1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ´L�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ œMB€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Solution 10€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€kD€B€K†€ ´LB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€sD€B€K†€ ´LB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€{D€B€K†€ ´LB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ƒD€B€K†€ ´LB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€‹D€B€K†€ ´LB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€“D€B€K†€ ´LB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€›D€B€K†€ ´LB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€£D€B€K†€ ´LB€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€`ì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ ˜MB€MB€NÃ�STATEMENT-TEXTD€D€C€IFD€C€ISC�WAVE-STEP€‚WAVE-DECREASING€D€D€ƒ€SENDD€lƒWave for F1 is decreasing€D€ƒ�DESTINATION€�OPERATORl…if wave-step is wave-decreasing then send€,…"Wave for F1 is decreasing" to operator€C‚STATEMENT-NUMBER?€F€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀF€¯F€jF€ÕD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€ºCƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀF€¯F€jF€ÕD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€µB€-FÀF€µF€bF€ÂB€ÉD€B€ãD€B€äB€µB€-FÀÿF€ÅF€_F€ÒB€ÊD€B€²D€B€³B€µB€-B€¶D€B€·D€B€ID€B€JD€B€¸D€ B€K†€ ™MB€MB€NB€ºD€D€B€»D€C€<€C€F1D€Ã�DELAYED-VALUE€B€÷F€D€D€�ADVANCE€B€½B€¾l†if f1 < f1 as of 15 seconds ago then advance step€ì„variable wave-step to wave-decreasing€B€ÌF€B€ÎF€ B€-FÀF€F€²F€¥D€D€B€ÚD€B€ÛB€ºB€ÜF€ËFÀF€F€²F€¥D€D€B€ãD€B€äB€µB€-FÀF€…F€ªF€’B€D€B€ãD€B€äB€µB€-FÀÿF€•F€MF€¢B€D€B€²D€B€³B€µB€-B€¶D€B€·D€B€ID€B€JD€B€¸D€ B€K†€ oMB€MB€NB€ºD€D€B€»D€B€¼B€½‚WAVE-INCREASING€D€D€B€ÀD€lƒWave for F1 is increasing€D€B€ÃB€Äl…if wave-step is wave-increasing then send€,…"Wave for F1 is increasing" to operator€B€ÌF€B€ÎF€ B€-FÀF€RF€jF€xD€D€B€ÚD€B€ÛB€ºB€ÜF€ÂFÀF€RF€jF€xD€D€B€ãD€B€äB€µB€-FÀF€XF€bF€eB€.D€B€ãD€B€äB€µB€-FÀÿF€hF€_F€uB€/D€B€²D€B€³B€µB€-B€¶D€B€·D€B€ID€B€JD€B€¸D€ B€K†€ oMB€MB€NB€ºD€D€B€»D€C€>€B€÷D€B€øB€÷F€D€D€B€üB€½B€&l†if f1 > f1 as of 15 seconds ago then advance step€ì„variable wave-step to wave-increasing€B€ÌF€B€ÎF€ B€-FÀF€&F€²F€LD€D€B€ÚD€B€ÛB€ºB€ÜF€ÂFÀF€&F€²F€LD€D€B€ãD€B€äB€µB€-FÀF€,F€ªF€9B€[D€B€ãD€B€äB€µB€-FÀÿF€<F€MF€IB€\D€B€²D€B€³B€µB€-B€¶D€B€·D€B€ID€B€JD€C�DEFINITIOND€B€K†€ qMB€MB€NB€ºD€D€ƒSTEP-VARIABLE-DEFINITIONB€½D€C�START-WAVEB€&B€¾l…let step variable wave-step be start-wave,,„wave-increasing, wave-decreasingB€ÌF€B€-FÀFÀF€sF€D€D€B€ÚD€B€ÛB€ºB€ÜF€ÂFÀFÀF€sF€D€D€B€ãD€B€äB€µB€-FÀFÀF€kF€ B€†D€B€ãD€B€äB€µB€-FÀÿF€F€ F€B€‡D€B€²D€B€³B€µB€-B€¶D€B€·D€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ µMB€MB€NB€ºD€D€C�INITIALLY€D€D€B€üB€½B€ƒD€B€ÀD€ì‚Begin wave monitoring.D€B€ÃB€Ä¬‡initially advance step variable wave-step to start-wave and€l…send "Begin wave monitoring." to operator€B€ÌF€B€-FÀFÀ8F€ FÀD€D€B€ÚD€B€ÛB€ºB€ÜF€ÂFÀFÀ8F€ FÀD€D€B€ãD€B€äB€µB€-FÀFÀ2F€FÀ%B€´D€B€ãD€B€äB€µB€-FÀFÀ"F€pFÀB€µD€B€²D€B€³B€µB€-B€¶D€B€·D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ jMB€MB€NB€ºD€D€�SIMULATEB€÷B€­D€C�PICON-WAVEF€dF€2F€°,†simulate F1 with wave with central value 100 andl„deviation 50 and period 20 minutesB€ÌF€B€-FÀF€YF€¼F€D€D€B€ÚD€B€ÛB€ºB€ÜF€ÂFÀF€YF€¼F€D€D€B€ãD€B€äB€µB€-FÀûF€_F€´F€lB€áD€B€ãD€B€äB€µB€-FÀìF€oF€EF€|B€âD€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€óF€˜F€F€ÓB€÷D€B€²D€B€³B€µB€-B€¶D€B€·D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ £MB€MB€NB€ºD€ì�Solution #10 €,€lˆ1) By adding 2 more rules, the solution is achieved. One rule to €ì‡ advance the step variable, and one to send a message in the,„ event that F1 is decreasing. lˆ2) Or alternatively add a single rule which checks, advances, and€¬„ sends a message all in one rule.€B€ÌF€B€-FÀCFÀòF€'FÀ|D€D€B€ÚD€B€ÛB€ºB€ÜF€ÂFÀCFÀòF€'FÀ|D€D€B€ãD€B€äB€µB€-FÀ8FÀìFÀÄFÀßB€D€B€ãD€B€äB€µB€-FÀ)FÀÜFÀ*FÀÏB€D€B€ãD€B€äB€µB€-FÀ)FÀÌF€FÀ¿B€D€B€ãD€B€äB€µB€-FÀ)FÀ¼F€FÀ¯B€D€B€ãD€B€äB€µB€-FÀ)FÀ¬FÀ FÀŸB€D€B€ãD€B€äB€µB€-FÀ)FÀœF€FÀ�B€D€B€ãD€B€äB€µB€-FÀ)FÀŒF€FÀB€D€D€C�FLOW-PIPE€B€­B€­F€B€­ƒƒTHRU-SENSOR-INPUT-CONNECTIONFÀD€B€WB€­F€B€­ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€­F€D€C‚CONTROL-CONNECTIONB€­F€B€­ƒƒSENSOR-CONTROLLER-CONNECTIONB€­FÀB€­1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 4067 :CREATION-DATE 2730896996 :DIRECTORY "PICON-CLASS" :NAME "SOLUTION-12" :TYPE "PIC" :VERSION 5) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€Æ¢d.F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ •™1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ¶M�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ •™B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€$C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�SOLUTION-12€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Solution 12€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ¶MB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ¶MB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ¶MB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ¶MB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ¶MB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ¶MB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ¶MB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ¶MB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ RB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ÀTIMER€�NUMERIC€ƒ€NIL€,„let timer be a numeric variable€C‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€µ…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€B€ID€B€JD€B€®D€ B€K†€ RB€MB€NB€°D€D€B€±D€‚TANK-IS-FILLING€C�CONDITION€B€µ,…let tank-is-filling be a named conditionB€¹F€B€»B€-1€D€B€ID€B€JD€B€®D€ B€K†€ RB€MB€NB€°D€D€B€±D€C�FILL-TIME€B€³B€µ¬„let fill-time be a numeric variable€B€¹F€B€»B€µB€¼B€½1€D€B€ID€B€JD€B€®D€ B€K†€ RB€MB€NB€°D€D€B€±D€Ã�TIMER-STARTED€B€ÅB€µì„let timer-started be a named conditionB€¹F€B€»B€-1€D€B€ID€B€JD€B€®D€ B€K†€ RB€MB€NB€°D€D€B€±D€Ã�TIMER-RUNNING€B€ÅB€µì„let timer-running be a named conditionB€¹F€B€»B€-1€D€B€ID€B€JD€B€®D€ B€K†€ -RB€MB€NB€°D€D€B€±D€C�FILL-TIMERB€³B€µ¬„let fill-timer be a numeric variableB€¹F€B€»B€µ1€D€B€ID€B€JD€B€®D€ B€K†€ ERB€MB€NB€°D€D€B€±D€‚TANK-IS-EMPTYINGB€ÅB€µl…let tank-is-emptying be a named condition€B€¹F€B€»B€-1€D€B€ID€B€JD€B€®D€ B€K†€ GRB€MB€NB€°D€D€B€±D€C�DRAIN-TIMEB€³B€µ¬„let drain-time be a numeric variableB€¹F€!B€»B€µ1€D€B€ID€B€JD€B€®D€ B€K†€ HRB€MB€NB€°D€D€B€±D€‚TANK-IS-DRAININGB€ÅB€µl…let tank-is-draining be a named condition€B€¹F€"B€»B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€óF€—F€F€µÃ€CLOCK€D€B€*D€B€+F€ B€-B€-F€¶F€˜F€ÔF€¶C€L1D€ƒ�ACCUMULATOR€B€µFÀF€ŽF€~F€Àƒ€TANKD€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ GRB€MB€NB€°D€D€C�INITIALLY€D€D€ƒ€SET€B€Ñ€D€B€MB€ €l�initially ì‚set fill-time = 0 and€l‚set drain-time = 0B€¹F€ B€-FÀ#F€dFÀEF€šD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ#F€dFÀEF€šD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€GB€-FÀF€jFÀ¿F€wB€TD€B€lD€B€mB€GB€-FÀ F€zFÀMF€‡B€UD€B€lD€B€mB€GB€-FÀ F€ŠFÀhF€—B€VD€B€DD€B€EB€GB€-B€HD€B€ID€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ Ž8B€MB€NB€°D€D€C€IFB€ÄD€D€C�INCREMENT€B€ÑD€F€ �INTERVALl‡if tank-is-filling then increment fill-time by 10 seconds€B€¹F€B€-FÀ#F€EF€ðF€[D€D€B€cD€B€dB€°B€eF€ÂFÀ#F€EF€ðF€[D€D€B€lD€B€mB€GB€-FÀF€KF€èF€XB€ŽD€B€DD€B€EB€GB€-B€HD€B€ID€B€ID€B€JD€B€„D€B€K†€ Ž8B€MB€NB€°D€D€B€†B€D€D€B€‡B€ D€F€ B€‰¬‡if tank-is-draining then increment drain-time by 10 seconds€B€¹F€#B€-FÀ#F€%F€F€;D€D€B€cD€B€dB€°B€eF€.FÀ#F€%F€F€;D€D€B€lD€B€mB€GB€-FÀF€+F€úF€8B€±D€B€DD€B€EB€GB€-B€HD€B€ID€B€ID€B€JD€B€„D€B€K†€ GRB€MB€NB€°D€D€B€†D€ƒ€NOT€B€ÄD€D€ƒ€SENDD€,‚Fill time = ~6F€B€ÑD€ƒ�DESTINATION€�OPERATOR¬ƒif not tank-is-filling then€l†send "Fill time = ***" with fill-time to operator€B€¹F€B€-FÀ$FÀ F€¶F€D€D€B€cD€B€dB€°B€eF€ÂFÀ$FÀ F€¶F€D€D€B€lD€B€mB€GB€-FÀFÀFÀ'F€ B€ÚD€B€lD€B€mB€GB€-FÀ F€ F€®F€B€ÛD€B€DD€B€EB€GB€-B€HD€B€ID€B€ID€B€JD€B€„D€B€K†€ HRB€MB€NB€°D€D€B€†D€B€ÏB€D€D€B€ÑD€,‚Drain time = ~6FB€ D€B€ÔB€Õ¬ƒif not tank-is-draining then¬†send "Drain time = ***" with drain-time to operator€B€¹F€ B€-FÀ$FÀ8F€ÈFÀD€D€B€cD€B€dB€°B€eF€þFÀ$FÀ8F€ÈFÀD€D€B€lD€B€mB€GB€-FÀFÀ2FÀFÀ%B€D€B€lD€B€mB€GB€-FÀ FÀ"F€ÀFÀB€D€B€DD€B€EB€GB€-B€HD€B€ID€B€ID€B€JD€B€„D€ B€K†€ �8B€MB€NB€°D€D€B€†D€C€>€B€;D€Ã�DELAYED-VALUE€B€;F€ D€D€�CONCLUDEB€ÄD€D€ƒ�CONCLUDE-NOTB€Äì‡if L1 > L1 as of 10 seconds ago then conclude tank-is-filling l„else conclude not tank-is-filling€B€¹F€ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀ$FÀfF€FÀ@D€D€B€cD€B€dB€°B€eF€ÂFÀ$FÀfF€FÀ@D€D€B€lD€B€mB€GB€-FÀFÀ`F€FÀSB€7D€B€lD€B€mB€GB€-FÀ FÀPF€FÀCB€8D€B€DD€B€EB€GB€-B€HD€B€ID€B€ID€B€JD€B€„D€ B€K†€ Ž8B€MB€NB€°D€D€B€†D€C€<€B€;D€B€,B€;F€ D€D€B€0B€D€D€B€3B€ì‡if L1 < L1 as of 10 seconds ago then conclude tank-is-drainingl„else conclude not tank-is-drainingB€¹F€B€;F€ B€-FÀ$FÀ•F€FÀoD€D€B€cD€B€dB€°B€eF€@FÀ$FÀ•F€FÀoD€D€B€lD€B€mB€GB€-FÀFÀ�F€FÀ‚B€gD€B€lD€B€mB€GB€-FÀ FÀF€'FÀrB€hD€B€DD€B€EB€GB€-B€HD€B€ID€B€ID€B€JD€B€„D€ B€K†€ ýQB€MB€NB€°D€D€B€†D€B€+B€3€B€µ¬ƒif CLOCK > 0 then do nothingB€¹F€ B€;F€ B€-FÀ)F€�F€åF€¦D€D€B€cD€B€dB€°B€eF€ÂFÀ)F€�F€åF€¦D€D€B€lD€B€mB€GB€-FÀF€–F€ÝF€£B€�D€B€DD€B€EB€GB€-B€HD€B€ID€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ �™B€MB€NB€°D€¬�Solution #12lˆThese rules and statements represent the solution to EXERCISE #12.¬„See the script for furthur details.€B€¹F€B€-FÀBFÀòF€1FÀ¼D€D€B€cD€B€dB€°B€eF€ÂFÀBFÀòF€1FÀ¼D€D€B€lD€B€mB€GB€-FÀ7FÀìFÀÌFÀßB€°D€B€lD€B€mB€GB€-FÀ(FÀÜF€)FÀÏB€±D€B€lD€B€mB€GB€-FÀ(FÀÌF€FÀ¿B€²D€B€DD€B€EB€GB€-B€HD€B€ID€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ RB€MB€NB€°D€D€�SIMULATEB€3B€µƒ€TIME,ƒsimulate clock with timeB€¹F€ B€-FÀF€�FÀ3F€¥D€D€B€cD€B€dB€°B€eF€ÂFÀF€�FÀ3F€¥D€D€B€lD€B€mB€GB€-FÀF€•FÀ;F€¢B€àD€B€DD€B€EB€GB€-B€HD€B€ID€B€ID€B€JD€B€ÛD€B€K†€ ÿQB€MB€NB€°D€D€B€ÝB€;€D€B€†D€B€^B€ÞF€,D€C€+€B€;Ç€ÿ@D€B€†D€B€^B€ÞF€XF€KD€ƒ€MAX€€D€C€-€B€;Ç€þÌLÍ̬…simulate L1 with 0 then if time < 300 then €¬…(L1 + .25) else if time < 600 then 75 else €l‚max (0, L1 - .15)€B€¹F€B€-FÀF€KF€‡F€�D€D€B€cD€B€dB€°B€eF€ÂFÀF€KF€‡F€�D€D€B€lD€B€mB€GB€-FÀF€QF€pF€^B€D€B€lD€B€mB€GB€-FÀF€aF€F€nB€D€B€lD€B€mB€GB€-FÀF€qFÀkF€~B€D€D€C‚CONTROL-CONNECTIONB€µ€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€<B€µF€B€µB€>B€µFÀD€C�FLOW-PIPE€B€µB€µF€B€µÃ‚ACCUMULATOR-MAIN-INPUTFÀD€B€DB€µF€B€µƒACCUMULATOR-MAIN-OUTPUT€B€µF€D€B€<B€µF€F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€B€µB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 5001 :CREATION-DATE 2730896811 :DIRECTORY "PICON-CLASS" :NAME "SOLUTION-13" :TYPE "PIC" :VERSION 5) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€Æ¢«-F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ’™1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ¶M�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ’™B€MD€B€Nƒ€SJW€CƒNEXT-NEW-STATEMENT-NUMBER€F€%C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�SOLUTION-13€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Solution 13€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€pD€B€K†€ ¶MB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€xD€B€K†€ ¶MB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€€D€B€K†€ ¶MB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€ˆD€B€K†€ ¶MB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€�D€B€K†€ ¶MB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€˜D€B€K†€ ¶MB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€ D€B€K†€ ¶MB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¨D€B€K†€ ¶MB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ -RB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€C�FILL-TIMER�NUMERIC€ƒ€NIL€¬„let fill-timer be a numeric variableC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€·1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€Ã�TIMER-RUNNING€C�CONDITION€B€·ì„let timer-running be a named conditionB€»F€B€½B€-1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€Ã�TIMER-STARTED€B€ÅB€·ì„let timer-started be a named conditionB€»F€B€½B€-1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€C�FILL-TIME€B€µB€·¬„let fill-time be a numeric variable€B€»F€B€½B€·…SAMPLING-INTERVAL-FOR-HISTORIC-REASONS?€C�INDEFINITE1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€‚TANK-IS-FILLING€B€ÅB€·,…let tank-is-filling be a named conditionB€»F€B€½B€-1€D€B€ID€B€JD€B€°D€ B€K†€ RB€MB€NB€²D€D€B€³D€ÀTIMER€B€µB€·,„let timer be a numeric variable€B€»F€B€½B€·B€ãB€ä1€D€B€ID€B€JD€B€°D€ B€K†€ ¬8B€MB€NB€²D€D€B€³D€C�DRAIN-TIMEB€µB€·¬„let drain-time be a numeric variableB€»F€ B€½B€·1€D€B€ID€B€JD€B€°D€ B€K†€ ­8B€MB€NB€²D€D€B€³D€‚TANK-IS-DRAININGB€ÅB€·l…let tank-is-draining be a named condition€B€»F€"B€½B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€·FÀ¤FÀÛF€¤F€ñD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€eì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ ù.B€MB€NB€²D€D€C€IFB€D€D€C�INCREMENT€B€D€F€ �INTERVAL¬‡if tank-is-draining then increment drain-time by 10 seconds€B€»F€$B€-FÀF€ÜF€F€òD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€²CƒMAXIMUM-LENGTH-FOR-A-LINE€F€7FÀF€ÜF€F€òD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€#B€-FÀ F€âF€F€ïB€0D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€B€K†€ ù.B€MD€B€NB€WB€²D€D€B€(D€ƒ€AND€D€ƒ€NOT€B€D€C€ISƒ�FILLING-STEP�DRAININGD€D€ƒ€SENDD€,‚Drian time = ~6FB€D€ƒ�DESTINATION€�OPERATORD€C�INITIALIZEB€÷D€�ADVANCE€B€X�NOT-SUREl‡if not tank-is-draining and filling-step is draining then€,‡send "Drian time = ***" with drain-time to operator and€,‡initialize timer and advance step variable filling-step ¬�to not-sure€B€»F€#B€-FÀF€‹F€F€ÑD€D€B€=D€B€>B€²B€?F€FÀF€‹F€F€ÑD€D€B€FD€B€GB€#B€-FÀ F€‘F€öF€žB€jD€B€FD€B€GB€#B€-FÀûF€¡F€óF€®B€kD€B€FD€B€GB€#B€-FÀûF€±F€üF€¾B€lD€B€FD€B€GB€#B€-FÀûF€ÁFÀ™F€ÎB€mD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ 7RB€MB€NB€²l€2€B€»F€B€-FÀ6FÀŽFÀFÀxD€D€B€=D€B€>B€²B€?F€ÂFÀ6FÀŽFÀFÀxD€D€B€FD€B€GB€#B€-FÀ+FÀˆFÀ#FÀ{B€žD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€B€K†€ ìRB€MB€NB€²D€D€B€(D€B€TD€B€UB€ëD€B€WB€X�FILLING€D€D€B€\D€,‚Fill time = ~6F€B€ÝD€B€_B€`D€B€cB€÷D€B€eB€XB€f,‡if not tank-is-filling and filling-step is filling then€ì†send "Fill time = ***" with fill-time to operator and€B€l¬�to not-sure€B€»F€B€-FÀFÀŽF€FÀHD€D€B€=D€B€>B€²B€?F€ÂFÀFÀŽF€FÀHD€D€B€FD€B€GB€#B€-FÀ FÀˆF€âFÀ{B€ÇD€B€FD€B€GB€#B€-FÀýFÀxF€ßFÀkB€ÈD€B€FD€B€GB€#B€-FÀýFÀhF€úFÀ[B€lD€B€FD€B€GB€#B€-FÀýFÀXFÀ›FÀKB€ÉD€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€ ƒSENSOR-TRACING-REQUESTS€B€-F€LF€RF€jF€pÀCLOCK€D€B€øD€B€ùF€ B€ûB€-F€‹F€–F€©F€´C€L1D€ƒ�ACCUMULATOR€B€·F€ªF€ŒF€@F€¾ƒ€TANKD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€ B€K†€ ú.B€MB€NB€²D€D€B€(D€C€<€B€ D€Ã�DELAYED-VALUE€B€ F€ D€D€�CONCLUDEB€D€B€eB€XB€YD€D€ƒ�CONCLUDE-NOTB€lˆif L1 < L1 as of 10 seconds ago then conclude tank-is-draining andì…advance step variable filling-step to drainingl„else conclude not tank-is-drainingB€»F€!ƒPICON-RULE-SCAN-INTERVALF€ B€-FÀF€HF€PF€~D€D€B€=D€B€>B€²B€?F€[FÀF€HF€PF€~D€D€B€FD€B€GB€#B€-FÀ F€NF€HF€[B€ D€B€FD€B€GB€#B€-FÀúF€^F€£F€kB€!D€B€FD€B€GB€#B€-FÀúF€nF€7F€{B€"D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€ƒ�INITIAL-RULED€B€K†€ ¬8B€MB€NB€²D€D€C�INITIALLY€D€D€ƒ€SET€B€Ý€D€B€PB€€D€B€eB€XB€fl�initially ,…set fill-time = 0 and set drain-time = 0l†and advance step variable filling-step to not-sureB€»F€ B€-FÀFÀF€ÌF€D€D€B€=D€B€>B€²B€?F€ÂFÀFÀF€ÌF€D€D€B€FD€B€GB€#B€-FÀ FÀFÀ³FÀB€XD€B€FD€B€GB€#B€-FÀýFÀF€jF€ B€YD€B€FD€B€GB€#B€-FÀýF€F€ÄF€B€ZD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€œD€B€K†€ 7RB€MB€NB€²l€3€B€»F€B€-FÀ8FÀ8FÀFÀ"D€D€B€=D€B€>B€²B€?F€ÂFÀ8FÀ8FÀFÀ"D€D€B€FD€B€GB€#B€-FÀ-FÀ2FÀ%FÀ%B€„D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€œD€B€K†€ íRB€MB€NB€²l€5€B€»F€B€-FÀ7F€)FÀF€?D€D€B€=D€B€>B€²B€?F€ÂFÀ7F€)FÀF€?D€D€B€FD€B€GB€#B€-FÀ,F€/FÀ$F€<B€¡D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€°D€B€K†€ íRB€MB€NB€²D€D€ƒSTEP-VARIABLE-DEFINITIONB€XD€B€fB€¼B€Yì‡let step variable filling-step be not-sure, filling, draining€B€»F€B€-FÀF€)F€!F€?D€D€B€=D€B€>B€²B€?F€ÂFÀF€)F€!F€?D€D€B€FD€B€GB€#B€-FÀ F€/F€F€<B€ÁD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€œD€B€K†€ 7RB€MB€NB€²l€4€B€»F€B€-FÀ8FÀFÀFÀD€D€B€=D€B€>B€²B€?F€ÂFÀ8FÀFÀFÀD€D€B€FD€B€GB€#B€-FÀ-FÀFÀ%FÀB€ßD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€B€K†€ •8B€MB€NB€²D€D€B€(B€ëD€D€B€)B€ÝD€F€ B€+l‡if tank-is-filling then increment fill-time by 10 seconds€B€»F€B€-FÀFÀ8F€üFÀ"D€D€B€=D€B€>B€²B€?F€ÂFÀFÀ8F€üFÀ"D€D€B€FD€B€GB€#B€-FÀ FÀ2F€ôFÀ%B€D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€œD€B€K†€ 7RB€MB€NB€²l€1€B€»F€B€-FÀ9FÀ×FÀFÀÁD€D€B€=D€B€>B€²B€?F€ÂFÀ9FÀ×FÀFÀÁD€D€B€FD€B€GB€#B€-FÀ.FÀÑFÀ&FÀÄB€D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€ B€K†€ õ.B€MB€NB€²D€D€B€(D€C€>€B€ D€B€B€ F€ D€D€B€B€ëD€B€eB€XB€¼D€D€B€B€ëlˆif L1 > L1 as of 10 seconds ago then conclude tank-is-filling and€ì…advance step variable filling-step to filling€l„else conclude not tank-is-filling€B€»F€B€%F€ B€-FÀFÀØF€DFÀ¢D€D€B€=D€B€>B€²B€?F€ÂFÀFÀØF€DFÀ¢D€D€B€FD€B€GB€#B€-FÀ FÀÒF€<FÀÅB€FD€B€FD€B€GB€#B€-FÀýFÀÂF€—FÀµB€GD€B€FD€B€GB€#B€-FÀýFÀ²F€+FÀ¥B€HD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€œD€B€K†€ ’™B€MB€NB€²¬�Solution #13B€»F€B€-FÀ>FÀ÷FÀÀFÀáD€D€B€=D€B€>B€²B€?F€ÂFÀ>FÀ÷FÀÀFÀáD€D€B€FD€B€GB€#B€-FÀ3FÀñFÀÈFÀäB€sD€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€&D€ B€K†€ ýQB€MB€NB€²D€D€B€(D€B€<B€€B€·¬ƒif CLOCK > 0 then do nothingB€»F€ B€%F€ B€-FÀF€¯FÀF€ÅD€D€B€=D€B€>B€²B€?F€ÂFÀF€¯FÀF€ÅD€D€B€FD€B€GB€#B€-FÀF€µFÀF€ÂB€“D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ RB€MB€NB€²D€D€�SIMULATEB€B€·ƒ€TIME,ƒsimulate clock with timeB€»F€ B€-FÀF€�FÀ3F€¥D€D€B€=D€B€>B€²B€?F€ÂFÀF€�FÀ3F€¥D€D€B€FD€B€GB€#B€-FÀF€•FÀ;F€¢B€¶D€B€ D€B€!B€#B€-B€$D€B€%D€B€ID€B€JD€B€±D€B€K†€ ÿQB€MB€NB€²D€D€B€³B€ €D€B€(D€B€B€´F€,D€C€+€B€ Ç€ÿ@D€B€(D€B€B€´F€XF€KD€ƒ€MAX€€D€C€-€B€ Ç€þÌLÍ̬…simulate L1 with 0 then if time < 300 then €¬…(L1 + .25) else if time < 600 then 75 else €l‚max (0, L1 - .15)€B€»F€B€-FÀF€KF€‡F€�D€D€B€=D€B€>B€²B€?F€ÂFÀF€KF€‡F€�D€D€B€FD€B€GB€#B€-FÀF€QF€pF€^B€æD€B€FD€B€GB€#B€-FÀF€aF€F€nB€çD€B€FD€B€GB€#B€-FÀF€qFÀkF€~B€èD€D€C�FLOW-PIPE€B€·B€·F€B€·C‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€·F€B€·ƒƒSENSOR-CONTROLLER-CONNECTIONB€·FÀD€B€B€·F€B€·B€B€·FÀD€B€B€·B€·F€B€·Ã‚ACCUMULATOR-MAIN-INPUTFÀD€B€B€·F€B€·ƒACCUMULATOR-MAIN-OUTPUT€B€·F€D€B€B€·F€F€ƒACCUMULATOR-METER-OUTPUTB€B€·B€·1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2796 :CREATION-DATE 2725588653 :DIRECTORY "PICON-CLASS" :NAME "SOLUTION-14" :TYPE "PIC" :VERSION 5) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€u¢­.F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ]:1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ iS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ]:B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�SOLUTION-14€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Solution 14€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ iSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ iSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ iSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ iSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ iSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ iSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ iSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ iSB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ lSB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ�TANK-BOILINGC�CONDITION€ƒ€NIL€ì„let tank-boiling be a named condition€C‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ Z:B€MB€NB€°l€3€B€¹F€ B€-FÀFÀaFÀüFÀKD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀFÀaFÀüFÀKD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÊB€-FÀ FÀ[FÀFÀNB€ÏD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ Z:B€MB€NB€°D€D€C€IFD€B€±Ã�COOLER-SWITCH€€D€D€ƒ€SENDD€,„Turn on cooler. Tank is boiling.D€ƒ�DESTINATION€�OPERATORlƒif cooler-switch = 0 then ¬†send "Turn on cooler. Tank is boiling." to operator€C‚STATEMENT-KEYWORDSƒ€TANKB€¹F€ B€-FÀõFÀaF€÷FÀ;D€D€B€ÛD€B€ÜB€°B€ÝF€4FÀõFÀaF€÷FÀ;D€D€B€äD€B€åB€ÊB€-FÀêFÀ[FÀFÀNB€ÿD€B€äD€B€åB€ÊB€-FÀÛFÀKF€ïFÀ>B€D€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-ENGINEERING-UNIT€Ã€ON-OFFƒSENSOR-CURRENCY-INTERVALF€F€%F€�F€CF€®B€óD€B€%D€B€&B€-FÀ<F€^FÀF€|C€T1D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ kSB€MB€NB€°D€D€�SIMULATEB€6B€µD€C�PICON-WAVEF€ÈF€F€°,†simulate T1 with wave with central value 200 andl„deviation 25 and period 20 minutesB€¹F€B€-FÀ>F€_F€„F€…D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀ>F€_F€„F€…D€D€B€äD€B€åB€ÊB€-FÀ3F€eF€|F€rB€AD€B€äD€B€åB€ÊB€-FÀ$F€uF€ F€‚B€BD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ rSB€MB€NB€°l€2€B€¹F€B€-FÀFÀ“FÀûFÀ}D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀFÀ“FÀûFÀ}D€D€B€äD€B€åB€ÊB€-FÀ FÀ�FÀFÀ€B€fD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ðD€ B€K†€ \:B€MB€NB€°D€D€B€òD€B€±B€óF€D€D€B€öD€¬„Cooler appears to be malfunctioning.D€B€ùB€úlƒif cooler-switch = 1 then ,‡send "Cooler appears to be malfunctioning." to operator€B€B€B€¹F€B€-FÀöFÀ”F€FÀnD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀöFÀ”F€FÀnD€D€B€äD€B€åB€ÊB€-FÀëFÀŽFÀFÀ�B€‹D€B€äD€B€åB€ÊB€-FÀÜFÀ~F€FÀqB€ŒD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ rSB€MB€NB€°l€1€B€¹F€ B€-FÀFÀÈFÀüFÀ²D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀFÀÈFÀüFÀ²D€D€B€äD€B€åB€ÊB€-FÀ FÀÂFÀFÀµB€°D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ðD€ B€K†€ lSB€MB€NB€°D€D€B€òD€C€>€B€6F€ÔD€D€�CONCLUDEB€²D€ÀFOCUS€B€,…if T1 > 212 then conclude tank-boiling €l‚and focus on TANK€B€¹F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀöFÀÉF€{FÀ£D€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀöFÀÉF€{FÀ£D€D€B€äD€B€åB€ÊB€-FÀëFÀÃF€sFÀ¶B€ÖD€B€äD€B€åB€ÊB€-FÀÜFÀ³FÀDFÀ¦B€×D€C�SURGE-TANKB€µFÀ£F€xFÀgF€ÈB€D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€8D€B€K†€ oSB€MB€NB€°D€D€B€:B€ó€D€B€òD€B€ÍB€6F€ÔF€€ì…simulate COOLER-SWITCH with 0 then if T1 > 212ì�then 1 else 0€B€¹F€B€-FÀ>F€1F€rF€WD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀ>F€1F€rF€WD€D€B€äD€B€åB€ÊB€-FÀ3F€7F€jF€DB€ D€B€äD€B€åB€ÊB€-FÀ$F€GFÀ°F€TB€ D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ ]:B€MB€NB€°¬�Solution #14B€¹F€B€-FÀBFÀòFÀÄFÀÜD€D€B€ÛD€B€ÜB€°B€ÝF€ÂFÀBFÀòFÀÄFÀÜD€D€B€äD€B€åB€ÊB€-FÀ7FÀìFÀÌFÀßB€/D€D€C�FLOW-PIPE€B€µF€ B€µÃ‚SURGE-TANK-MAIN-OUTPUTB€µF€ŒD€B€LB€µB€µF€B€µC‚PORT-SENSOR-INPUT€D€FÀJF€FÀBD€C‚CONTROL-CONNECTIONB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€XB€µF€B€µB€ZB€µFÀD€B€XB€µF€ F€ƒSURGE-TANK-METER-OUTPUT€B€RF€D€B€LB€µB€µF€ B€µÃ‚SURGE-TANK-MAIN-INPUT€FÀdB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2581 :CREATION-DATE 2725589216 :DIRECTORY "PICON-CLASS" :NAME "SOLUTION-15" :TYPE "PIC" :VERSION 4) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€u¢ã0F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ f:1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ iS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ f:B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€ C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�SOLUTION-15€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Solution 15€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ iSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ iSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ iSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ iSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ iSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ iSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ iSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ iSB€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ lSB€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ�TANK-BOILINGC�CONDITION€ƒ€NIL€ì„let tank-boiling be a named condition€C‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ kSB€MB€NB€°D€D€�SIMULATEC€T1B€µD€C�PICON-WAVEF€ÈF€F€°,†simulate T1 with wave with central value 200 andl„deviation 25 and period 20 minutesB€¹F€B€-FÀ?F€lF€ƒF€’D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ?F€lF€ƒF€’D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÊB€-FÀ4F€rF€{F€B€×D€B€îD€B€ïB€ÊB€-FÀ%F€‚F€ F€�B€ØD€ƒ„THERMOCOUPLE-TEMPERATURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-ENGINEERING-UNIT€Ã€ON-OFFƒSENSOR-CURRENCY-INTERVALF€F€UF€�F€sF€­Ã�COOLER-SWITCH€D€B€D€B€B€-FÀF€aF€F€B€ÐD€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ rSB€MB€NB€°l€1€B€¹F€ B€-FÀ FÀ|FÀFÀfD€D€B€åD€B€æB€°B€çF€ÂFÀ FÀ|FÀFÀfD€D€B€îD€B€ïB€ÊB€-FÀFÀvFÀ FÀiB€D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€D€B€K†€ rSB€MB€NB€°l€2€B€¹F€B€-FÀFÀFÀFÀD€D€B€åD€B€æB€°B€çF€ÂFÀFÀFÀFÀD€D€B€îD€B€ïB€ÊB€-FÀFÀFÀ FÀB€2D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ e:B€MB€NB€°D€D€C€IFD€B€±B€ F€D€D€ƒ€SENDD€¬„Cooler appears to be malfunctioning.D€ƒ�DESTINATION€�OPERATORlƒif cooler-switch = 1 then ,‡send "Cooler appears to be malfunctioning." to operator€C‚STATEMENT-KEYWORDSƒ€TANKƒ‚STATEMENT-CATEGORIESƒ�CHECK-COOLERB€¹F€B€-FÀýFÀF€F€D€D€B€åD€B€æB€°B€çF€ÂFÀýFÀF€F€D€D€B€îD€B€ïB€ÊB€-FÀòFÀFÀ FÀB€\D€B€îD€B€ïB€ÊB€-FÀãFÀF€ F€ B€]D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ND€ B€K†€ e:B€MB€NB€°D€D€B€PD€C€>€B€ÐF€ÔD€D€�CONCLUDEB€²D€�ACTIVATED€ƒ€AND€D€B€±�CATEGORYB€bD€B€±‚ASSOCIATED-UNIT€B€`,…if T1 > 212 then conclude tank-boiling €¬†and activate rules with category = check-cooler and€,… associated-unit = tank€B€¹F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀþFÀ|F€îFÀFD€D€B€åD€B€æB€°B€çF€ÂFÀþFÀ|F€îFÀFD€D€B€îD€B€ïB€ÊB€-FÀóFÀvF€kFÀiB€”D€B€îD€B€ïB€ÊB€-FÀäFÀfF€æFÀYB€•D€B€îD€B€ïB€ÊB€-FÀäFÀVF€zFÀIB€–D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€D€B€K†€ f:B€MB€NB€°¬�Solution #15B€¹F€B€-FÀHFÀöFÀÊFÀàD€D€B€åD€B€æB€°B€çF€ÂFÀHFÀöFÀÊFÀàD€D€B€îD€B€ïB€ÊB€-FÀ=FÀðFÀÒFÀãB€ÂD€C�SURGE-TANKB€µFÀ£F€xFÀgF€ÈB€`D€B€ÇD€B€ÈB€ÊB€-B€ËD€B€ÌD€B€ID€B€JD€B€ÍD€B€K†€ oSB€MB€NB€°D€D€B€ÏB€ €D€B€PD€B€…B€ÐF€ÔF€€ì…simulate COOLER-SWITCH with 0 then if T1 > 212ì�then 1 else 0€B€¹F€B€-FÀ>F€1F€rF€WD€D€B€åD€B€æB€°B€çF€ÂFÀ>F€1F€rF€WD€D€B€îD€B€ïB€ÊB€-FÀ3F€7F€jF€DB€ìD€B€îD€B€ïB€ÊB€-FÀ$F€GFÀ°F€TB€íD€D€C�FLOW-PIPE€B€µB€µF€B€µC‚PORT-SENSOR-INPUT€D€FÀ9F€FÀƒD€C‚CONTROL-CONNECTIONB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€B€µF€B€µB€B€µFÀD€B€B€µF€F€ƒSURGE-TANK-METER-OUTPUT€B€F€D€B€B€µB€µF€B€µÃ‚SURGE-TANK-MAIN-INPUT€FÀzD€B€B€µF€B€µÃ‚SURGE-TANK-MAIN-OUTPUTB€µF€jB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2681 :CREATION-DATE 2730896893 :DIRECTORY "PICON-CLASS" :NAME "SOLUTION-17" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€Æ¢ý-F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ”™1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ œS�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ”™B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€ƒ�SOLUTION-17€ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?¬�Solution 17€1€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ œSB€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ œSB€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ œSB€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ œSB€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ œSB€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ œSB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ œSB€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ œSB€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ 0:B€MB€NÃ�STATEMENT-TEXTl€3€C‚STATEMENT-NUMBER?€F€B€-FÀ'F€§FÀ F€½D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€½CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ'F€§FÀ F€½D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€¸B€-FÀF€­FÀF€ºB€¾D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ 0:B€MB€NB€½l€4€B€¿F€ B€-FÀ(F€ÊFÀ F€àD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀ(F€ÊFÀ F€àD€D€B€ÔD€B€ÕB€¸B€-FÀF€ÐFÀF€ÝB€áD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ WB€MB€NB€½l€1€B€¿F€B€-FÀ/FÀoFÀFÀYD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀ/FÀoFÀFÀYD€D€B€ÔD€B€ÕB€¸B€-FÀ$FÀiFÀFÀ\B€þD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ WB€MB€NB€½l€2€B€¿F€B€-FÀ/FÀHFÀFÀ2D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀ/FÀHFÀFÀ2D€D€B€ÔD€B€ÕB€¸B€-FÀ$FÀBFÀFÀ5B€D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ 1:B€MB€NB€½D€D€C€IFD€C€>€C€F1F€dD€D€ƒ�SET-SETPOINTB€;F€yì„if F1 > 100 then set F1 setpoint = 121B€¿F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀ FÀIF€\FÀ3D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀ FÀIF€\FÀ3D€D€B€ÔD€B€ÕB€¸B€-FÀFÀCF€TFÀ6B€CD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€7D€ B€K†€ 1:B€MB€NB€½D€D€B€9D€C€<€B€;F€dD€D€B€>B€;F€Oì„if F1 < 100 then set F1 setpoint = 79€B€¿F€B€FF€B€-FÀ FÀpF€SFÀZD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀ FÀpF€SFÀZD€D€B€ÔD€B€ÕB€¸B€-FÀFÀjF€KFÀ]B€jD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ WB€MB€NB€½D€D€�SIMULATEB€;B€°D€C�PICON-WAVEF€dF€F€à,†simulate F1 with wave with central value 100 andl„deviation 20 and period 8 minutes€B€¿F€B€-FÀF€ÊF€¼F€ðD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀF€ÊF€¼F€ðD€D€B€ÔD€B€ÕB€¸B€-FÀûF€ÐF€´F€ÝB€‘D€B€ÔD€B€ÕB€¸B€-FÀìF€àF€<F€íB€’D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€ˆD€B€K†€ WB€MB€NB€½D€D€B€Šƒ€F1-4F€dD€C‚COMPOUND-VARIABLE€B€;�SETPOINTì…simulate F1 setpoint with 100 then F1 setpointB€¿F€B€-FÀF€¨F€ªF€¾D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀF€¨F€ªF€¾D€D€B€ÔD€B€ÕB€¸B€-FÀûF€®F€¢F€»B€¼D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€LF€CF€jF€~B€;D€ƒ‚ON-OFF-CONTROL-VALVEB€°FÀ™F€ZFÀ{F€|C€V1D€C„R-L-1-IN-1-OUT-FEEDBACK-CONTROLLERD€ ƒ‚SETPOINT-LOW-LIMIT?€F€Oƒ‚SETPOINT-HIGH-LIMIT?F€yC…SETPOINT-MINIMUM-INTERVAL-BETWEEN-CHANGES?F€…SETPOINT-MAXIMUM-CHANGE-PER-ADJUSTMENT?€F€2ƒDISPLAY-SETPOINT-VALUES€B€-FÀ+F€FÀF€Aƒ€F1-XD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ “™B€MB€NB€½D€¬ˆSolution #17 will modify this example such that F1 setpoint will be ¬ˆ79 if F1 is > 100, and 121 if F1 is below 100. Refer to the script €,…for this exercise for more information.€B€¿F€B€-FÀ>FÀ÷F€>FÀÁD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀ>FÀ÷F€>FÀÁD€D€B€ÔD€B€ÕB€¸B€-FÀ3FÀñF€0FÀäB€úD€B€ÔD€B€ÕB€¸B€-FÀ$FÀáF€6FÀÔB€ûD€B€ÔD€B€ÕB€¸B€-FÀ$FÀÑF€:FÀÄB€üD€D€C�FLOW-PIPE€B€°F€B€°ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€°F€D€C‚CONTROL-CONNECTIONB€°F€F€ ƒƒSENSOR-CONTROLLER-CONNECTION‚CONTROLLER-INPUTB€°D€B€&B€°B€°F€ B€°Ã‚VALVE-INPUT-CONNECTIONFÀD€B€&B€°F€ F€ƒVALVE-OUTPUT-CONNECTION€ƒƒTHRU-SENSOR-INPUT-CONNECTIONB€°D€B€+B€°F€ F€ C‚CONTROLLER-OUTPUT€ƒVALVE-CONTROL-CONNECTIONB€°D€B€+B€°B€°F€ B€°Ã�SETPOINT-INPUTFÀB€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2588 :CREATION-DATE 2730897247 :DIRECTORY "PICON-CLASS" :NAME "SOLUTION-3" :TYPE "PIC" :VERSION 4) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€Æ¢e/F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ š™1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ š™B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�SOLUTION-3ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Solution 31€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€ D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ ·³B€MB€NÃ�STATEMENT-TEXTlƒNo rule is requesting P1.€C‚STATEMENT-NUMBER?€F€B€-FÀF€-FÀF€CD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€½CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ïFÀF€-FÀF€CD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€¸B€-FÀúF€3FÀF€@B€¾D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ ™™B€MB€NB€½¬…Answer to Question in Exercise #3 on step 7.B€¿F€B€-FÀF€F€„F€$D€D€B€ËD€B€ÌB€½B€ÍF€ËFÀF€F€„F€$D€D€B€ÔD€B€ÕB€¸B€-FÀF€F€|F€!B€áD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ ´³B€MB€NB€½D€ì†Sensors weren't displaying values because there were €¬ƒno rules requesting values.€B€¿F€B€-FÀFÀ&F€é€D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀFÀ&F€é€D€D€B€ÔD€B€ÕB€¸B€-FÀûFÀ F€áFÀB€þD€B€ÔD€B€ÕB€¸B€-FÀìFÀF€FÀB€ÿD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ ™™B€MB€NB€½¬…Answer to Question in Exercise #3 on step 4.B€¿F€B€-FÀFÀAF€„FÀ+D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀFÀAF€„FÀ+D€D€B€ÔD€B€ÕB€¸B€-FÀFÀ;F€|FÀ.B€#D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ ÞlB€MB€NB€½D€D€C€IFD€C€>€C€F1F€ÈD€D€ƒ€SENDD€¬‚F1 is reading high.€D€ƒ�DESTINATION€�OPERATORl‚if F1 > 200 then €ì„send "F1 is reading high." to operatorB€¿F€ ƒPICON-RULE-SCAN-INTERVALF€B€-FÀúFÀ–F€}FÀpD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀúFÀ–F€}FÀpD€D€B€ÔD€B€ÕB€¸B€-FÀïFÀ�FÀWFÀƒB€OD€B€ÔD€B€ÕB€¸B€-FÀàFÀ€F€uFÀsB€PD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ ™™B€MB€NB€½,ƒSolution to Exercise #3:B€¿F€ B€-FÀFÀ¾FÀ0FÀ¨D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀFÀ¾FÀ0FÀ¨D€D€B€ÔD€B€ÕB€¸B€-FÀFÀ¸FÀ8FÀ«B€vD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€»D€B€K†€ ´³B€MB€NB€½¬�Solution #3€B€¿F€B€-FÀBFÀñFÀÍFÀÛD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀBFÀñFÀÍFÀÛD€D€B€ÔD€B€ÕB€¸B€-FÀ7FÀëFÀÕFÀÞB€“D€CƒGUAGE-PRESSURE-THRU-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-FÀF€—F€F€ÇC€P1D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€B€°B€-FÀ€F€—FÀbF€ÒB€CD€C„CENTRIFUGAL-VARIABLE-COMPUTER-PUMPB€°FÀùF€¡FÀÌF€ÉB€°D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ xlB€MB€NB€½D€D€�SIMULATEB€¶€D€ƒ€MAX€€D€C€*€Ç€ÿ™Yš™B€Cl…simulate P1 with 0 then max (0, .35 * F1)€B€¿F€ B€-FÀðF€F€“F€D€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀðF€F€“F€D€D€B€ÔD€B€ÕB€¸B€-FÀåF€ F€‹F€B€ÐD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€ÅD€B€K†€ wlB€MB€NB€½D€D€B€ÇB€CB€°D€C�PICON-WAVEF€ÈF€2F€X,†simulate F1 with wave with central value 200 andl„deviation 50 and period 10 minutesB€¿F€B€-FÀñF€%F€ÑF€KD€D€B€ËD€B€ÌB€½B€ÍF€ÂFÀñF€%F€ÑF€KD€D€B€ÔD€B€ÕB€¸B€-FÀæF€+F€ÉF€8B€ôD€B€ÔD€B€ÕB€¸B€-FÀ×F€;F€ZF€HB€õD€D€C�FLOW-PIPE€B€°F€B€°ÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€°F€D€C‚CONTROL-CONNECTIONB€°F€B€°ƒƒSENSOR-CONTROLLER-CONNECTIONB€°FÀD€B€B€°F€F€B€ƒƒTHRU-SENSOR-INPUT-CONNECTIONB€°D€B€B€°F€B€°B€ B€°FÀD€B€B€°B€°F€ B€°CƒPUMP-CONTROLLER-CONNECTIONFÀD€B€B€°B€°F€ B€°Ã‚PUMP-INPUT-CONNECTION€FÀD€B€B€°F€ F€ÂPUMP-OUTPUT-CONNECTIONB€%F€B€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "dwr" :CHARACTERS NIL :QFASLP NIL :LENGTH 2131 :CREATION-DATE 2727457380 :DIRECTORY "PICON-CLASS" :NAME "SOLUTION-4" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€¬€dwr€ì€Ralph€†€‘¢j²F€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ´1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ´B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�SOLUTION-4ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Solution 41€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€ƒ€NIL€FÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ ;B€MB€NÃ�STATEMENT-TEXTD€D€�SIMULATEC€L1B€°D€C�PICON-WAVEF€dF€2F€X,†simulate L1 with wave with central value 100 andl„deviation 50 and period 10 minutesC‚STATEMENT-NUMBER?€F€B€-FÀÛF€>F€çF€dD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€½CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀÛF€>F€çF€dD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€¸B€-FÀÐF€DF€ßF€QB€ÆD€B€ÞD€B€ßB€¸B€-FÀÁF€TF€pF€aB€ÇD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ�IF-THEN-RULED€ B€K†€ +;B€MB€NB€½D€D€C€IFC�L1-IS-LOW€D€D€ƒ€SENDD€lƒL1 is reporting low at ~6FB€¿D€ƒ�DESTINATION€�OPERATOR¬†if l1-is-low then send "L1 is reporting low at ***" ¬‚with L1 to operator€B€ÉF€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀÜFÀF€ F€"D€D€B€ÕD€B€ÖB€½B€×F€æFÀÜFÀF€ F€"D€D€B€ÞD€B€ßB€¸B€-FÀÑF€F€F€B€ýD€B€ÞD€B€ßB€¸B€-FÀÂF€FÀF€B€þD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€ðD€ B€K†€ !;B€MB€NB€½D€D€B€òC�L1-IS-HIGHD€D€B€ôD€lƒL1 is reading high at ~6F€B€¿D€B€÷B€ø¬†if l1-is-high then send "L1 is reading high at ***" ¬‚with L1 to operator€B€ÉF€B€F€B€-FÀÝFÀ9F€ FÀD€D€B€ÕD€B€ÖB€½B€×F€ÂFÀÝFÀ9F€ FÀD€D€B€ÞD€B€ßB€¸B€-FÀÒFÀ3F€FÀ&B€+D€B€ÞD€B€ßB€¸B€-FÀÃFÀ#FÀFÀB€,D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€C�DEFINITIOND€ B€K†€ *;B€MB€NB€½D€D€C€=€D€B€óC�CONDITION€D€C€<€B€¿F€dl„let condition l1-is-low = L1 < 100B€ÉF€ƒBACKTRACK-TO-GET-VALUE?€B€-B€-FÀÞFÀdF€fFÀND€D€B€ÕD€B€ÖB€½B€×F€ÂFÀÞFÀdF€fFÀND€D€B€ÞD€B€ßB€¸B€-FÀÓFÀ^F€^FÀQB€YD€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€B€PD€ B€K†€ ;B€MB€NB€½D€D€B€RD€B€$B€SD€C€>€B€¿F€d¬„let condition l1-is-high = L1 > 100€B€ÉF€B€\B€-B€-FÀÞFÀ‹F€oFÀuD€D€B€ÕD€B€ÖB€½B€×F€ÂFÀÞFÀ‹F€oFÀuD€D€B€ÞD€B€ßB€¸B€-FÀÓFÀ…F€gFÀxB€}D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€(ƒSENSOR-TRACING-REQUESTS€B€-FÀFÀÈF€FÀªB€¿D€B€µD€B€¶B€¸B€-B€¹D€B€ºD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ *;B€MB€NB€½¬�Solution #4€B€ÉF€B€-FÀEFÀòFÀÐFÀÜD€D€B€ÕD€B€ÖB€½B€×F€ÂFÀEFÀòFÀÐFÀÜD€D€B€ÞD€B€ßB€¸B€-FÀ:FÀìFÀØFÀßB€¦D€D€C�FLOW-PIPE€B€°B€°F€B€°C‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€°F€B€°ƒƒSENSOR-CONTROLLER-CONNECTIONB€°FÀB€°1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "dwr" :CHARACTERS NIL :QFASLP NIL :LENGTH 3186 :CREATION-DATE 2727463612 :DIRECTORY "PICON-CLASS" :NAME "SOLUTION-6" :TYPE "PIC" :VERSION 2) hưs2€D€p€,€l�FASD-DATA€D€¬€dwr€ì€Ralph€†€‘¢ÁÊF€fF€uD€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ n´1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ n´B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€&C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�SOLUTION-6ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Solution 61€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ b;B€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ‚LEVEL-IS-INCREASING€C�CONDITION€ƒ€NIL€¬…let level-is-increasing be a named conditionC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€B€ID€B€JD€B€®D€ B€K†€ r;B€MB€NB€°D€D€B€±D€ƒ‚LEVEL-IS-DECREASING€B€³B€µ¬…let level-is-decreasing be a named conditionB€¹F€#B€»B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€D€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ t;B€MB€NB€°l€3€B€¹F€%B€-FÀ$F€AFÀ F€WD€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ$F€AFÀ F€WD€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÖB€-FÀF€GFÀF€TB€ÛD€B€ÓD€B€ÔB€ÖB€-B€×D€B€ØD€B€ID€B€JD€ƒ�IF-THEN-RULED€B€K†€ t;B€MB€NB€°D€D€C€IFB€ÂD€D€ƒ€SENDD€,†The tank level is now decreasing - Check limits�D€ƒ�DESTINATION€�OPERATOR,„if level-is-decreasing then send,†"The tank level is now decreasing - Check limitsì�" to operator€B€¹F€$B€-FÀF€@F€ÎF€vD€D€B€çD€B€èB€°B€éF€ÑFÀF€@F€ÎF€vD€D€B€ðD€B€ñB€ÖB€-FÀøF€FF€'F€SB€D€B€ðD€B€ñB€ÖB€-FÀéF€VF€ÆF€cB€ D€B€ðD€B€ñB€ÖB€-FÀéF€fFÀuF€sB€ D€B€ÓD€B€ÔB€ÖB€-B€×D€B€ØD€B€ID€B€JD€B€üD€B€K†€ d;B€MB€NB€°D€D€B€þB€²D€D€B€ÿD€,†The tank level is now increasing - Check limits�D€B€B€,„if level-is-increasing then send,†"The tank level is now increasing - Check limitsì�" to operator€B€¹F€B€-FÀFÀF€ÍF€/D€D€B€çD€B€èB€°B€éF€ÂFÀFÀF€ÍF€/D€D€B€ðD€B€ñB€ÖB€-FÀùFÀF€&F€ B€:D€B€ðD€B€ñB€ÖB€-FÀêF€F€ÅF€B€;D€B€ðD€B€ñB€ÖB€-FÀêF€FÀvF€,B€<D€B€ÓD€B€ÔB€ÖB€-B€×D€B€ØD€B€ID€B€JD€B€ÙD€B€K†€ e;B€MB€NB€°l€2€B€¹F€ B€-FÀ%FÀFÀ F€D€D€B€çD€B€èB€°B€éF€ÂFÀ%FÀFÀ F€D€D€B€ðD€B€ñB€ÖB€-FÀFÀFÀF€ B€fD€B€ÓD€B€ÔB€ÖB€-B€×D€B€ØD€B€ID€B€JD€B€üD€ B€K†€ r;B€MB€NB€°D€D€B€þD€C€>€C€F1C€F2D€D€�CONCLUDEB€²D€D€B€‡B€Âl†if F1 > F2 then conclude level-is-increasing else€¬ƒconclude level-is-decreasingB€¹F€ƒPICON-RULE-SCAN-INTERVALF€B€-FÀFÀAF€ÇFÀD€D€B€çD€B€èB€°B€éF€ÂFÀFÀAF€ÇFÀD€D€B€ðD€B€ñB€ÖB€-FÀùFÀ;F€¿FÀ.B€�D€B€ðD€B€ñB€ÖB€-FÀêFÀ+F€FÀB€ŽD€B€ÓD€B€ÔB€ÖB€-B€×D€B€ØD€B€ID€B€JD€B€ÙD€B€K†€ e;B€MB€NB€°l€1€B€¹F€B€-FÀ&FÀAFÀ FÀ+D€D€B€çD€B€èB€°B€éF€ÂFÀ&FÀAFÀ FÀ+D€D€B€ðD€B€ñB€ÖB€-FÀFÀ;FÀFÀ.B€´D€ƒ„MAGNETIC-FLOWMETER-FLOW-THRU-SENSOR€D€ƒSENSOR-TRACING-REQUESTS€B€-F€íFÀ€F€ FÀEB€…D€…DIFFERENTIAL-PRESSURE-LEVEL-PORT-SENSOR€D€ƒSENSOR-CURRENCY-INTERVALF€B€ÑB€-F€‰FÀÎF€§FÀ°C€L1D€ƒ�ACCUMULATOR€B€µFÀQFÀ‹F€EFÀYƒ€TANKD€B€ÐD€B€ÑB€-FÀ¤FÀÝFÀ†FÀ¢B€„D€B€ÓD€B€ÔB€ÖB€-B€×D€B€ØD€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ w;B€MB€NB€°D€D€�SIMULATEB€„B€µD€C�PICON-WAVEF€sF€ F€h€€F€h,†simulate F1 with wave with central value 115 and,†deviation 12 and period 6 minutes and phase 360€B€¹F€B€-FÀF€pF€©F€–D€D€B€çD€B€èB€°B€éF€ÂFÀF€pF€©F€–D€D€B€ðD€B€ñB€ÖB€-FÀF€vF€›F€ƒB€ûD€B€ðD€B€ñB€ÖB€-FÀF€†F€¡F€“B€üD€B€ÓD€B€ÔB€ÖB€-B€×D€B€ØD€B€ID€B€JD€B€ïD€B€K†€ >;B€MB€NB€°D€D€B€ñB€àF€2D€C€+€D€C€/€D€C€-€B€„B€…F€B€àì…simulate L1 with 50 then (F1 - F2) / 3600 + L1B€¹F€B€-FÀ F€NF€�F€dD€D€B€çD€B€èB€°B€éF€ÂFÀ F€NF€�F€dD€D€B€ðD€B€ñB€ÖB€-FÀF€TF€ˆF€aB€)D€B€ÓD€B€ÔB€ÖB€-B€×D€B€ØD€B€ID€B€JD€B€ïD€B€K†€ w;B€MB€NB€°D€D€B€ñB€…B€µD€B€òF€nF€F€h,†simulate F2 with wave with central value 110 andl„deviation 22 and period 6 minutes€B€¹F€B€-FÀ F€F€¢F€CD€D€B€çD€B€èB€°B€éF€ÂFÀ F€F€¢F€CD€D€B€ðD€B€ñB€ÖB€-FÀF€#F€šF€0B€LD€B€ðD€B€ñB€ÖB€-FÀF€3F€"F€@B€MD€B€ÓD€B€ÔB€ÖB€-B€×D€B€ØD€B€ID€B€JD€B€ÙD€B€K†€ m´B€MB€NB€°¬�Solution #6€B€¹F€B€-FÀFFÀóFÀÑFÀÝD€D€B€çD€B€èB€°B€éF€ÂFÀFFÀóFÀÑFÀÝD€D€B€ðD€B€ñB€ÖB€-FÀ;FÀíFÀÙFÀàB€qD€D€C�FLOW-PIPE€B€µF€B€µÃƒTHRU-SENSOR-OUTPUT-CONNECTION€B€µF€D€C‚CONTROL-CONNECTIONB€µF€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀD€B€“B€µF€B€µB€•B€µFÀD€B€ŽB€µF€F€ƒACCUMULATOR-MAIN-OUTPUT€ƒƒTHRU-SENSOR-INPUT-CONNECTIONB€µD€B€“B€µF€F€ƒACCUMULATOR-METER-OUTPUTC‚PORT-SENSOR-INPUT€F€D€B€ŽB€µB€µF€ B€µB€žFÀD€B€ŽB€µF€ F€B€�ÂACCUMULATOR-MAIN-INPUTB€µD€B€“B€µF€ B€µB€•B€µFÀB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 16 :AUTHOR "DWR" :CHARACTERS NIL :QFASLP NIL :LENGTH 2655 :CREATION-DATE 2730897351 :DIRECTORY "PICON-CLASS" :NAME "SOLUTION-7" :TYPE "PIC" :VERSION 3) hưs2€D€p€,€l�FASD-DATA€D€¬€DWR€ì€Ralph€†€Æ¢È/F€fF€»D€p€,�COMPILER,‚NEW-DESTINATIONSp€ì€GLOBALl€T€p€B€ ¬€SITE¬€LMI€p€B€ ,�PACKAGE€ì€PICON€p€B€ ¬€BASEF€ 1€D€ƒ€SETQ„DATE-AND-TIME-OF-APPLICATION-KB€†€ ›™1€D€C„DEABSORB-ALL-RECORDED-ABSORPTIONS€1€D€ƒ‚CLEAR-KNOWLEDGE-BASE1€D€ÂCLEAR-INFERENCE-ENGINE1€D€B€:ƒ‚ALL-MENU-PARAMETERS€D€C„RECONSTRUCT-FRAME-FROM-DESCRIPTIOND€ÀQUOTE€D€B€HD€Ã�LATEST-CHANGE€†€ ?�AUTHORS€ƒ€DWR€1€D€B€:ƒ„OVERALL-PROGRAM-PARAMETER-STRUCTURE€D€B€ID€B€JD€B€UD€B€K†€ ›™B€MB€NCƒNEXT-NEW-STATEMENT-NUMBER€F€(C„FUNCTION-TO-RUN-ON-RESET-COMMAND?€C‚RESET-PICON-ENGINE„FUNCTION-TO-RUN-ON-RUN-COMMAND?€‚RUN-PICON-ENGINEC‚STANDARD-DIRECTORYì�PICON: PICON;€ƒ„PROTECTED-APPLICATION-KB-FILE-NAMES€D€C�SOLUTION-7ƒFONT-FOR-NAME-OF-PROGRAMp€ì€FONTS€ì€METSI€B€-‚NAME-OF-PROGRAM?l�Solution 71€D€B€:ÂSUPERBLOCK-PARAMETERS€D€B€ID€B€JD€B€nD€B€K†€ ?B€MB€N1€D€B€:ÂCONNECTION-PARAMETERS€D€B€ID€B€JD€B€vD€B€K†€ ?B€MB€N1€D€B€:ÂTEXT-BLOCK-PARAMETERS€D€B€ID€B€JD€B€~D€B€K†€ ?B€MB€N1€D€B€:ƒDATA-SUPPLIER-PARAMETERSD€B€ID€B€JD€B€†D€B€K†€ ?B€MB€N1€D€B€:C‚HISTORY-PARAMETERSD€B€ID€B€JD€B€ŽD€B€K†€ ?B€MB€N1€D€B€:C‚MESSAGE-PARAMETERSD€B€ID€B€JD€B€–D€B€K†€ ÜlB€MB€N1€D€B€:CƒPICON-SIMULATOR-PARAMETERSD€B€ID€B€JD€B€žD€B€K†€ ?B€MB€N1€D€B€:‚RTIME-PARAMETERSD€B€ID€B€JD€B€¦D€B€K†€ ?B€MB€N1€D€B€ID€B€JD€C�DEFINITIOND€ B€K†€ b;B€MB€NÃ�STATEMENT-TEXTD€D€C€=€D€ƒ‚LEVEL-IS-INCREASING€C�CONDITION€ƒ€NIL€¬…let level-is-increasing be a named conditionC‚STATEMENT-NUMBER?€F€ƒBACKTRACK-TO-GET-VALUE?€B€-1€D€ƒREPLACE-OUTERMOST-BLOCK€D€B€ID€B€JD€Ã�BLOCK-DIAGRAM€B€µFÀ¤FÀÛF€¤F€ÛD€D€CƒGUAGE-PRESSURE-PORT-SENSORD€ƒSENSOR-TRACING-REQUESTS€B€-ƒSENSOR-CURRENCY-INTERVALF€ F€óF€¯F€F€Í�PRESSURED€C�SLOT-TABLED€ƒFULL-SCALE-FONT-FOR-TEXTp€B€cì€MEDFNTB€-ÂFRAMES-THIS-REPRESENTSD€ƒ€LISTD€B€ID€B€JD€B€®D€ B€K†€ «;B€MB€NB€°D€D€B€±Ã�DELTA-PRESSURED€C€-€B€ÐD€Ã�DELAYED-VALUE€B€ÐF€¬…delta-pressure = PRESSURE - PRESSURE as of €ì�30 seconds agoB€¹F€'B€»B€-B€-FÀ2F€“F€cF€¹D€D€C�SLOT-CELL€D€ƒ‚SLOT-THIS-REPRESENTSB€°CƒMAXIMUM-LENGTH-FOR-A-LINE€F€ÂFÀ2F€“F€cF€¹D€D€Ã�TEXT-FRAGMENT€D€C„FULL-SCALE-FONT-FOR-TEXT-FRAGMENT€B€ÕB€-FÀ'F€™F€[F€¦B€àD€B€÷D€B€øB€ÕB€-FÀF€©FÀ›F€¶B€áD€B€ÒD€B€ÓB€ÕB€-B€ÖD€B€×D€B€ID€B€JD€ƒ‚SIMULATION-STATEMENTD€B€K†€ ”;B€MB€NB€°D€D€�SIMULATEB€ÐB€µD€C�PICON-WAVEF€èF€dF€Xì…simulate PRESSURE with wave with central value¬…1000 and deviation 100 and period 10 minutesB€¹F€#B€-FÀ0F€ÌF€€F€òD€D€B€îD€B€ïB€°B€ðF€ÂFÀ0F€ÌF€€F€òD€D€B€÷D€B€øB€ÕB€-FÀ%F€ÒF€xF€ßB€D€B€÷D€B€øB€ÕB€-FÀF€âF€uF€ïB€D€B€ÒD€B€ÓB€ÕB€-B€ÖD€B€×D€B€ID€B€JD€ƒ‚FREE-TEXT-STATEMENT€D€B€K†€ ¨;B€MB€NB€°ì‡NOTE 1: use ->> with PRESSURE - PRESSURE as of 30 seconds agoB€¹F€%B€-FÀFFÀ6F€úFÀ D€D€B€îD€B€ïB€°B€ðF€ÂFÀFFÀ6F€úFÀ D€D€B€÷D€B€øB€ÕB€-FÀ;FÀ0F€òFÀ#B€8D€B€ÒD€B€ÓB€ÕB€-B€ÖD€B€×D€B€ID€B€JD€Ã�WHENEVER-RULE€D€ B€K†€ ¬;B€MB€NB€°D€D€�WHENEVERB€ÐD€F€ ƒ€PSIGD€D€ƒ€SENDD€,ƒPressure Increase of ~6FB€ÙD€ƒ�DESTINATION€�OPERATORD€D€B€ZD€,ƒPressure Decrease of ~6FD€ƒ€ABS€B€ÙD€B€]B€^ì„whenever PRESSURE varies by 10 psig: €ì†if increase then send "Pressure Increase of ***" with€,„ delta-pressure to operator; €ì†if decrease then send "Pressure Decrease of ***" with€¬„ abs ( delta-pressure) to operatorB€¹F€$ƒPICON-RULE-SCAN-INTERVALF€B€-FÀ3F€0F€ËF€†D€D€B€îD€B€ïB€°B€ðF€ÂFÀ3F€0F€ËF€†D€D€B€÷D€B€øB€ÕB€-FÀ(F€6F€$F€CB€jD€B€÷D€B€øB€ÕB€-FÀF€FF€ÃF€SB€kD€B€÷D€B€øB€ÕB€-FÀF€VFÀF€cB€lD€B€÷D€B€øB€ÕB€-FÀF€fF€ÃF€sB€mD€B€÷D€B€øB€ÕB€-FÀF€vF€*F€ƒB€nD€B€ÒD€B€ÓB€ÕB€-B€ÖD€B€×D€B€ID€B€JD€B€6D€B€K†€ ®;B€MB€NB€°D€ ¬�Solution #7:lˆ1) One of several approaches may be used here. If you wish to see ¬ˆ values current as of the time the message displays, just call outìˆ the sensor name(s) in the "with" clause of the send (like NOTE 1).€,ˆ2) Or, you may choose to store the value in a variable and just ¬ˆ reference it at the time the message is printed. This is the way€lˆ that the WHENEVER rule has been modified. This method has the €ì‡ advantage of displaying the values which corrospond to the l… message rather than being out of sync.€B€¹F€B€-FÀFFÀóF€HFÀ]D€D€B€îD€B€ïB€°B€ðF€ÂFÀFFÀóF€HFÀ]D€ D€B€÷D€B€øB€ÕB€-FÀ;FÀíFÀÐFÀàB€¦D€B€÷D€B€øB€ÕB€-FÀ,FÀÝF€%FÀÐB€§D€B€÷D€B€øB€ÕB€-FÀ,FÀÍF€7FÀÀB€¨D€B€÷D€B€øB€ÕB€-FÀ,FÀ½F€@FÀ°B€©D€B€÷D€B€øB€ÕB€-FÀ,FÀ­F€FÀ B€ªD€B€÷D€B€øB€ÕB€-FÀ,FÀ�F€.FÀ�B€«D€B€÷D€B€øB€ÕB€-FÀ,FÀ�F€FÀ€B€¬D€B€÷D€B€øB€ÕB€-FÀ,FÀ}F€FÀpB€­D€B€÷D€B€øB€ÕB€-FÀ,FÀmF€DFÀ`B€®D€D€C�FLOW-PIPE€B€µB€µ€B€µC‚PORT-SENSOR-INPUT€FÀD€C‚CONTROL-CONNECTIONB€µ€B€µƒƒSENSOR-CONTROLLER-CONNECTIONB€µFÀB€µ1€D€ƒƒFINISH-INSTALLING-KNOWLEDGE€€€LMFL(:BYTE-SIZE 8 :AUTHOR "dwr" :QFASLP NIL :LENGTH 273 :CREATION-DATE 2725668453 :CHARACTERS T :DIRECTORY "PICON-CLASS" :NAME "SQUARE-ROOT-CODE" :TYPE "LISP" :VERSION 1) ;;; -*- Mode:LISP; Package:PICON; Base:10 -*-���(defun square-root (picon-variable)� (let (value expiration)� (multiple-value (value expiration)� (get-value-of-variable picon-variable))� (if expiration�‰(values (sqrt value) expiration)� (values nil nil))))