Académique Documents
Professionnel Documents
Culture Documents
Users Guide
Kessler-Ellis Products
Phone 800-631-2165 or 732-935-1320 extension 332 Website www.kep.com Licensing website http://infilock.kep.com Email plc@kep.com
2004 KEP
99755REV22SEP04 All Rights Reserved
Return Policy The original licensee of the Software can return it within thirty (30) days of purchase. Please call us for a Return Goods Authorization Number. Warranty KEP does not guarantee that the Software will satisfy your application needs, nor that the Software will be error free. Though the software is tested thoroughly there may be minor defects that may have been missed. As in all software, not every useable application can be performed due to the complexity of the software itself. Disclaimer of Damages Even if the Software does not satisfy the customers needs, or is viewed as failing to perform, in no event will KEP be liable to you for any direct or indirect damages, including lost profits or lost data. KEPs liability shall never exceed the purchase price for the Software. Trademarks Microsoft and Microsoft Excel are registered trademarks, Windows is a trademark of Microsoft Corporation. Users Guide Revision 4.04 (c) 2004 Kessler-Ellis Products, Inc 10 Industrial Way East Eatontown, NJ 07724 1-800-631-2165 (Voice) (732) 935-9344 (FAX) http://www.kep.com plc@kep.com Copyright 2004, KEP, Inc., All rights reserved.
Table of Contents
INFILINK-HMI SOFTWARE FOR W INDOWS ................................................................................................... I Kessler-Ellis Products..............................................................................................................................i 2004 KEP.............................................................................................................................................i TABLE OF CONTENTS .................................................................................................................................... I INTRODUCTION .......................................................................................................................................... 1 W ELCOME .................................................................................................................................................. 1 SYSTEM REQUIREMENTS ............................................................................................................................. 1 SETTING UP ................................................................................................................................................ 2 DIRECTORIES INSTALLED BY THE SETUP PROGRAM ...................................................................................... 2 ICONS INSTALLED BY THE SETUP PROGRAM ................................................................................................. 3 SETTING UP A SERVER ................................................................................................................................ 3 INSTALLING DAO......................................................................................................................................... 4 REGISTERING YOUR SOFTWARE .................................................................................................................. 5 MOVING A LICENSE ..................................................................................................................................... 6 UPGRADING A LICENSE ................................................................................................................................ 7 INFILINK 4.06.01 NEW FEATURES ............................................................................................................ 9 New Features Table of Contents........................................................................................................... 9 UPGRADE COST ........................................................................................................................................ 10 EDIT USERS IN RUN MODE ........................................................................................................................ 11 IMPORTING W INDOWS FROM ANOTHER PROJECT ....................................................................................... 11 RETENTIVE TAGS ...................................................................................................................................... 12 ACTIVE UNACKNOWLEDGED ALARMS FLASHING.......................................................................................... 12 TELEPHONY SCRIPTING COMMANDS........................................................................................................... 13 TEXTTOSPEECH: SPEAKOUT SCRIPTING COMMAND .................................................................................. 15 TREND PRINTING ....................................................................................................................................... 16 ANIMATED GIF OBJECT ............................................................................................................................. 17 MAKING BITMAP OBJECTS FULLY / PARTIALLY TRANSPARENT ....................................................................... 18 W INDOW PRINTING ................................................................................................................................... 19 GRADIENT FILLS AND TRANSPARENCY ....................................................................................................... 20 SENDKEYS SCRIPTING COMMAND .............................................................................................................. 22 LANGUAGE SWITCHING .............................................................................................................................. 25 BACKGROUND IMAGE TO HMI WINDOW ....................................................................................................... 27 SYSTEM TAGS: _FORMATTEDDATE, _FORMATTEDTIME .............................................................................. 28 SCRIPT COMMANDS: _THISW IN.<TREND OBJECT NAME>.PENTAG .............................................................. 28 SCRIPT COMMANDS: LOG2, LOG10 ............................................................................................................ 28 SCRIPT COMMAND: DATATOFILE ............................................................................................................... 29 TREND VIEW INCREASED: .......................................................................................................................... 29 DDE SHARE NAME CHANGE ...................................................................................................................... 29 ROUND SCRIPTING COMMAND ................................................................................................................... 29 ONSCREEN FRENCH KEYBOARD ................................................................................................................ 30 BUG FIXES ................................................................................................................................................ 30 INFILINK OVERVIEW ................................................................................................................................ 31 DESIGN MODE........................................................................................................................................... 31 SHORT CUT MENUS................................................................................................................................... 32 THE INFILINK DOCKABLE TOOLBARS ........................................................................................................... 34
Window Tools.......................................................................................................................................... 34
DESIGN MODE KEYBOARD MAPPING .......................................................................................................... 36 Function Keys...................................................................................................................................... 36 Alphanumeric Keys.............................................................................................................................. 36 Numeric Keypad .................................................................................................................................. 36 Arrow Keys .......................................................................................................................................... 36 Other Keys........................................................................................................................................... 36 DESIGN MODE MOUSE FUNCTIONS ............................................................................................................ 36 Buttons ................................................................................................................................................ 36
Copyright 2004 KEP, Inc. Introduction i
Combinations....................................................................................................................................... 37 RUN MODE ............................................................................................................................................... 37 LESSON 1: LEARNING TO USE INFILINK .............................................................................................. 38 OVERVIEW ................................................................................................................................................ 38 LESSON OBJECTIVES................................................................................................................................. 39 CREATING A PROJECT ............................................................................................................................... 40 THE IMPORTANCE OF OBJECT PROPERTIES ................................................................................................ 43 About Object Properties ...................................................................................................................... 43 The Object Name ................................................................................................................................ 43 A CHANCE TO PRACTICE ........................................................................................................................... 44 Draw and Place a Rounded Rectangle. .............................................................................................. 44 Draw and Place a Text Object............................................................................................................. 46 Draw and Place a Triangle .................................................................................................................. 49 Grouping the Objects........................................................................................................................... 51 SAVE THE PROJECT AND EXIT .................................................................................................................... 54 TAG GROUPS AND TAGS ........................................................................................................................ 56 OVERVIEW ................................................................................................................................................ 56 ABOUT TAG GROUPS................................................................................................................................. 56 ADDING/EDITING TAG GROUPS .................................................................................................................. 57 Creating Tag Groups ........................................................................................................................... 57 Creating a Memory Tag Group............................................................................................................ 58 Creating a DDE Tag Group ................................................................................................................. 58 Creating an OPC Tag Group ............................................................................................................... 61 Creating a Virtual Tag Group............................................................................................................... 62 ABOUT TAGS............................................................................................................................................. 63 Predefined System Tags ..................................................................................................................... 63 ADDING/EDITING USER DEFINED TAGS....................................................................................................... 65 Tag Edit Tools ..................................................................................................................................... 65 Creating a Memory Tag....................................................................................................................... 65 Creating a DDE Tag ............................................................................................................................ 67 Creating an OPC Tag .......................................................................................................................... 68 Creating a Virtual Tag.......................................................................................................................... 69 Tag Edit Advanced Tab ....................................................................................................................... 70
Deadband........................................................................................................................................ 70 Value clamps / Scaling .................................................................................................................... 70
EXPORTING THE TAG DATABASE ................................................................................................................ 71 Tag Database Field Definitions ........................................................................................................... 72 IMPORTING THE TAG DATABASE ................................................................................................................. 75 ANIMATIONS: YOUR PROCESS IN ACTION .......................................................................................... 77 OVERVIEW ................................................................................................................................................ 77 ABOUT ANIMATIONS .................................................................................................................................. 77 ANIMATING AN OBJECT .............................................................................................................................. 78 Making an Object Blink ........................................................................................................................ 78 Showing and Hiding Objects ............................................................................................................... 79 Moving Objects Left and Right (Horizontally) or Up and Down (Vertically) ......................................... 80 Stretching Objects Left and Right (Horizontally) or Up and Down (Vertically)..................................... 81 Rotating a Line..................................................................................................................................... 82 Enter Data Into a Tag .......................................................................................................................... 84 Using Sliders to Input Data.................................................................................................................. 85 Changing the Color of an Object ......................................................................................................... 86 Showing the Value of a Tag................................................................................................................. 88 Executing a Script With a Button Click ................................................................................................ 89 LIBRARIES: THE QUICK PATH TO GREAT LOOKING APPS ............................................................... 91
Copyright 2004 KEP, Inc. Introduction ii
OVERVIEW ................................................................................................................................................ 91 LIBRARY MANAGER TOOLS ......................................................................................................................... 91 Create a New Library........................................................................................................................... 92 Create a New Object Group ................................................................................................................ 92 Open a library ...................................................................................................................................... 92 Save a library....................................................................................................................................... 93 The Library Manager Treebar.............................................................................................................. 93 SAVING OBJECTS TO A LIBRARY ................................................................................................................. 94 Placing an Object or Group from a Library .......................................................................................... 94 Reassigning Tags................................................................................................................................ 95 SCRIPTS: THE FINAL WORD IN FLEXIBILITY ....................................................................................... 97 OVERVIEW ................................................................................................................................................ 97 INTRODUCTION .......................................................................................................................................... 98 PROJECT SCRIPT ...................................................................................................................................... 99 W INDOW SCRIPTS ................................................................................................................................... 100 TAKE ACTION SCRIPTS ............................................................................................................................ 102 TAG DATA CHANGE SCRIPTS ................................................................................................................... 103 ALARM SCRIPTS ...................................................................................................................................... 104 SCRIPT REFERENCE ................................................................................................................................ 106 General.............................................................................................................................................. 106 Comments ......................................................................................................................................... 106 Logical Constants .............................................................................................................................. 106 Conditional Operators........................................................................................................................ 107 Logical Operators .............................................................................................................................. 107 Assignment Operator......................................................................................................................... 108
Virtual Tag assignment ......................................................................................................................... 108
Arithmetic Operators.......................................................................................................................... 109 Flow Control ...................................................................................................................................... 110 Math Functions .................................................................................................................................. 111 String Functions................................................................................................................................. 112 File Functions .................................................................................................................................... 113 Sound Functions................................................................................................................................ 118 Window Functions ............................................................................................................................. 118 System Functions .............................................................................................................................. 119 Miscellaneous Functions ................................................................................................................... 120 Color Constants................................................................................................................................. 121 Object Properties............................................................................................................................... 122
General Object Properties............................................................................................................................. 122 Arc, Pie and Chord Properties ...................................................................................................................... 123 Rounded Rectangle Properties ..................................................................................................................... 123 Alarm Viewer Properties................................................................................................................................ 123 Alarm History Viewer Properties ................................................................................................................... 124 Trend Properties ........................................................................................................................................... 124
LESSON 2: USING INFILINK TO MIMIC A PROCESS........................................................................... 127 OVERVIEW .............................................................................................................................................. 127 LESSON OBJECTIVES............................................................................................................................... 128 CREATING A PROJECT ............................................................................................................................. 129 COPYING LIBRARY OBJECTS .................................................................................................................... 130 Place a Pump from the Library .......................................................................................................... 130 EDIT/ARRANGE THE OBJECTS IN THE W INDOW ......................................................................................... 134 Rotate, Enlarge, and Place the Tank................................................................................................. 134 Copy, Size, and Place a Section of Horizontal Pipe .......................................................................... 135 Resize and Place the Pump .............................................................................................................. 136 Place and Resize the Horizontal Pipe ............................................................................................... 137 Copy, Place and Size a Section of Vertical Pipe ............................................................................... 138 Place and Resize the Control Valve .................................................................................................. 139 Place and Resize the Vertical Pipe.................................................................................................... 140 Add a Fill Meter to the Tank............................................................................................................... 141 DEFINE A TAG TO ASSIGN TO THE FILL LEVEL ANIMATION.......................................................................... 144 ANIMATE THE OBJECT T1_LEVEL ............................................................................................................. 145
Copyright 2004 KEP, Inc. Introduction iii
CREATE A SCRIPT TO SIMULATE AN INCREASING FILL LEVEL ..................................................................... 147 SAVE THE PROJECT................................................................................................................................. 149 RUN THE PROJECT .................................................................................................................................. 149 EXIT RUN MODE ...................................................................................................................................... 149 LESSON 3: CONTROLLING A PROCESS ............................................................................................. 151 OVERVIEW .............................................................................................................................................. 151 LESSON 3 OBJECTIVES............................................................................................................................ 152 CONTINUING FROM LESSON 2 .................................................................................................................. 152 Opening Lesson 2 ............................................................................................................................. 152 ADDING SOME NEW TAGS ....................................................................................................................... 153 Adding Tags ...................................................................................................................................... 153 ADD AND ANIMATE THE NEW OBJECTS ..................................................................................................... 156 Add a Button to Turn the Pump On and Off ...................................................................................... 156 Add a Text Object to Enter and Display the Pump Fill Rate.............................................................. 161 Build a Slider to Control the Tank Drain Rate.................................................................................... 163 Duplicate the Slider Text Object and Modify It to Display the Tank Level ......................................... 166 Duplicate the Pump Control Button and Modify to use as a Valve Control ....................................... 167 Modify the Existing Project Script ...................................................................................................... 168 SAVE AND RUN THE PROJECT .................................................................................................................. 170 LOGGING: DATA AND ALARMS ........................................................................................................... 173 OVERVIEW .............................................................................................................................................. 173 THE ALARM LOGGER ............................................................................................................................... 174 Basic Settings .................................................................................................................................... 175 Log File Timings ................................................................................................................................ 175 Preferences ....................................................................................................................................... 176 DEFINING ALARMS ................................................................................................................................... 177 ALARM VIEWER PROPERTIES ................................................................................................................... 180 ALARM HISTORY VIEWER PROPERTIES..................................................................................................... 183 SETUP ALARM PRINTER ........................................................................................................................... 185 Send Output To ................................................................................................................................. 185 Sample Format .................................................................................................................................. 185 THE DATA LOGGER ................................................................................................................................. 186 Basic Settings .................................................................................................................................... 187 Log File Timings ................................................................................................................................ 187 Preferences ....................................................................................................................................... 188 LESSON 4: ALARMS AND ALARM LOGGING...................................................................................... 189 OVERVIEW .............................................................................................................................................. 189 LESSON OBJECTIVES............................................................................................................................... 190 CREATING A NEW PROJECT ..................................................................................................................... 191 DRAWING THE ALARM VIEWER ................................................................................................................. 191 CREATING ALARM VIEWER CONTROL BUTTONS ........................................................................................ 192 DRAWING THE ALARM HISTORY VIEWER................................................................................................... 193 CREATING ALARM HISTORY VIEWER CONTROL BUTTONS .......................................................................... 194 ENABLING THE ALARM LOGGER................................................................................................................ 195 DEFINING TAGS WITH ALARMS ................................................................................................................. 196 CREATING ANIMATIONS TO GENERATE ALARMS ........................................................................................ 200 DISPLAYING THE ACTIVE ALARM COUNT ................................................................................................... 201 SAVE AND RUN THE PROJECT .................................................................................................................. 202 EXIT RUN MODE ...................................................................................................................................... 204 LESSON 5: REAL-TIME AND HISTORICAL TRENDS........................................................................... 205 OVERVIEW .............................................................................................................................................. 205 LESSON OBJECTIVES............................................................................................................................... 206 CREATING A NEW PROJECT ..................................................................................................................... 207 DEFINING TAGS ....................................................................................................................................... 207 DRAWING THE TREND AND EDITING TREND PROPERTIES .......................................................................... 208 CREATING TREND CONTROL BUTTONS ..................................................................................................... 210 CREATE AND ANIMATE A HISTORICAL CURSOR ......................................................................................... 211
Copyright 2004 KEP, Inc. Introduction iv
ANIMATING TREND CONTROL BUTTONS .................................................................................................... 213 Create an On button down Script for the Mode Button...................................................................... 213 Create an On button down Script for the YRangeInc Button............................................................. 214 Create an On button down Script for the YRangeDec Button ........................................................... 214 Create an On button down Script for the Smooth Button .................................................................. 214 Create an On button down Script for the Discrete Button ................................................................. 215 Create an On button down Script for the Scatter Button ................................................................... 215 Create an On button down Script for the SkipInc Button................................................................... 215 Create an On button down Script for the SkipDec Button ................................................................. 215 CREATE A CURRENT VALUE DISPLAY ....................................................................................................... 216 W RITING A PROJECT SCRIPT ................................................................................................................... 217 SAVE AND RUN THE PROJECT .................................................................................................................. 218 EXIT RUN MODE ...................................................................................................................................... 220 ACTIVEX CONTROLS ............................................................................................................................. 221 OVERVIEW .............................................................................................................................................. 221 INSERTING ACTIVEX CONTROLS INTO A PROJECT ..................................................................................... 222 SCHEDULER............................................................................................................................................ 223 OVERVIEW .............................................................................................................................................. 223 INTRODUCTION ........................................................................................................................................ 224
Using the Calendar Tool........................................................................................................................ 224
PREFERENCES ........................................................................................................................................ 234 USING OPC AND DDE ............................................................................................................................ 235 OVERVIEW .............................................................................................................................................. 235 ABOUT OPC (OLE FOR PROCESS CONTROL) AND DDE (DYNAMIC DATA EXCHANGE)............................... 235 OPC Link Specifications .................................................................................................................... 235 DDE Link Specifications .................................................................................................................... 235 INFILINK AS A DDE CLIENT ...................................................................................................................... 237 Supported DDE Formats ................................................................................................................... 237 Using Infilink as a Local Client.......................................................................................................... 237 Using Infilink as a Remote Client....................................................................................................... 237 INFILINK AS A DDE SERVER ..................................................................................................................... 238 A Note About Discrete Tags .............................................................................................................. 238 Using Infilink as a Local Server ......................................................................................................... 238 MS EXCEL AS A DDE SERVER................................................................................................................. 239 Tag Group setup................................................................................................................................ 239 Tag Addresses .................................................................................................................................. 239 SECURITY................................................................................................................................................ 240 OVERVIEW .............................................................................................................................................. 240 DESIGN MODE SECURITY......................................................................................................................... 240 RUN MODE SECURITY ............................................................................................................................. 242 Logging in to a Project....................................................................................................................... 242 Logging Out as a User....................................................................................................................... 242 Adding/Editing a User List ................................................................................................................. 243 User List Tools................................................................................................................................... 244
Creating a New User ..................................................................................................................... 244
IVIEWER UTILITY .................................................................................................................................... 245 OVERVIEW .............................................................................................................................................. 245 CONNECTING TO A REMOTE PC................................................................................................................ 246 Getting Started .................................................................................................................................. 246
Copyright 2004 KEP, Inc. Introduction v
Connecting ........................................................................................................................................ 246 Disconnect......................................................................................................................................... 246 iViewer Setup..................................................................................................................................... 248 iViewer Setup Dialog ......................................................................................................................... 248 Adding/Editing a Server ..................................................................................................................... 249 Screen Shots ..................................................................................................................................... 249 iViewer Tag Display ........................................................................................................................... 250 Modifying the Tag list display............................................................................................................. 251 iViewer Status Bar ............................................................................................................................. 251 AUTOMATICALLY RUNNING A PROJECT............................................................................................ 252 OVERVIEW .............................................................................................................................................. 252 W INDOWS 95/98..................................................................................................................................... 253 Making Infilink Auto Start in Win 95/98 .............................................................................................. 253 Making KEPServerEX Auto Start in Win 95/98 ................................................................................. 255 W INDOWS NT ......................................................................................................................................... 257 Making Infilink Auto Start in Win NT .................................................................................................. 257 Making KEPServer Auto Start in Win NT .......................................................................................... 259 APPENDIX A: LIBRARY OBJECTS............................................................................................................ 1
LIBRARY FILE: 2D_ISA_1 ............................................................................................................................ 1 LIBRARY FILE: 2D_ISA_2 ............................................................................................................................ 2 LIBRARY FILE: 2D_ISA_3 ............................................................................................................................ 3 LIBRARY FILE: 3D_ISA_1 ............................................................................................................................ 4 LIBRARY FILE: 3D_ISA_2 ............................................................................................................................ 5 LIBRARY FILE: 3D_ISA_3 ............................................................................................................................ 6 LIBRARY FILE: AIRCOND1 .......................................................................................................................... 7 LIBRARY FILE: AIRCOND2 .......................................................................................................................... 8 LIBRARY FILE: AIRCOND3 .......................................................................................................................... 9 LIBRARY FILE: ALARMHST ....................................................................................................................... 10 LIBRARY FILE: ARROWS .......................................................................................................................... 11 LIBRARY FILE: BITMAPS1......................................................................................................................... 12 LIBRARY FILE: BITMAPS2......................................................................................................................... 13 LIBRARY FILE: BITMAPS3......................................................................................................................... 14 LIBRARY FILE: BUTTONS1 ....................................................................................................................... 15 LIBRARY FILE: BUTTONS2 ....................................................................................................................... 16 LIBRARY FILE: BUTTONS3 ....................................................................................................................... 17 LIBRARY FILE: BUTTONS4 ....................................................................................................................... 18 LIBRARY FILE: BUTTONS5 ....................................................................................................................... 19 LIBRARY FILE: BUTTONS6 ....................................................................................................................... 20 LIBRARY FILE: COMPUTER ...................................................................................................................... 21 LIBRARY FILE: CONTROLR ...................................................................................................................... 22 LIBRARY FILE: DATADISP......................................................................................................................... 23 LIBRARY FILE: DIALS1 .............................................................................................................................. 24 LIBRARY FILE: DIALS2 .............................................................................................................................. 25 LIBRARY FILE: DUCTS .............................................................................................................................. 26 LIBRARY FILE: ELECTRC1........................................................................................................................ 27 LIBRARY FILE: ELECTRC2........................................................................................................................ 28 LIBRARY FILE: FACILITY........................................................................................................................... 29 LIBRARY FILE: FLEXTUBE ........................................................................................................................ 30 LIBRARY FILE: FLOWMTRS ...................................................................................................................... 31 LIBRARY FILE: GENERMFG...................................................................................................................... 32 LIBRARY FILE: HEATING1......................................................................................................................... 33 LIBRARY FILE: HEATING2......................................................................................................................... 34 LIBRARY FILE: INDICATR.......................................................................................................................... 35 LIBRARY FILE: INTLSYMS......................................................................................................................... 36 LIBRARY FILE: MAPSFLAG ....................................................................................................................... 37 LIBRARY FILE: MATHANDL ....................................................................................................................... 38 LIBRARY FILE: METERS1.......................................................................................................................... 39 LIBRARY FILE: METERS2.......................................................................................................................... 40 LIBRARY FILE: METERS3.......................................................................................................................... 41 LIBRARY FILE: METERS4.......................................................................................................................... 42 LIBRARY FILE: MISCSYM1 ........................................................................................................................ 43 LIBRARY FILE: MISCSYM2 ........................................................................................................................ 44 LIBRARY FILE: MISCSYM3 ........................................................................................................................ 45 LIBRARY FILE: MISCSYM4 ........................................................................................................................ 46 Copyright 2004 KEP, Inc. Introduction vi
LIBRARY FILE: MIXERS............................................................................................................................. 47 LIBRARY FILE: MOTORS ........................................................................................................................... 48 LIBRARY FILE: NATURE............................................................................................................................ 49 LIBRARY FILE: OP_INTFC......................................................................................................................... 50 LIBRARY FILE: PIPES1 .............................................................................................................................. 51 LIBRARY FILE: PIPES2 .............................................................................................................................. 52 LIBRARY FILE: PIPES3 .............................................................................................................................. 53 LIBRARY FILE: POWER............................................................................................................................. 54 LIBRARY FILE: PROCESS ......................................................................................................................... 55 LIBRARY FILE: PUMPS.............................................................................................................................. 56 LIBRARY FILE: SAFETY............................................................................................................................. 57 LIBRARY FILE: SENSORS ......................................................................................................................... 58 LIBRARY FILE: SHAPES1 .......................................................................................................................... 59 LIBRARY FILE: SHAPES2 .......................................................................................................................... 60 LIBRARY FILE: SLIDERS1 ......................................................................................................................... 61 LIBRARY FILE: SLIDERS2 ......................................................................................................................... 62 LIBRARY FILE: SLIDERS3 ......................................................................................................................... 63 LIBRARY FILE: SLIDERS4 ......................................................................................................................... 64 LIBRARY FILE: SYSCMDS ......................................................................................................................... 65 LIBRARY FILE: TANKCUTS ....................................................................................................................... 66 LIBRARY FILE: TANKS1............................................................................................................................. 67 LIBRARY FILE: TANKS2............................................................................................................................. 68 LIBRARY FILE: TIMEDATE......................................................................................................................... 69 LIBRARY FILE: TRENDHST ....................................................................................................................... 70 LIBRARY FILE: VALVES............................................................................................................................. 71 LIBRARY FILE: VEHICLES......................................................................................................................... 72
Introduction vii
Introduction
Welcome
Welcome to Infilink HMI, an easy-to-use tool for any size HMI application. Infilink HMI provides you with the tools to design and implement a custom interface for any process. Infilink offers interface solutions for PLCs, transmitters, sensors, remote I/O, and other process devices. Infilink HMI runs on Windows 98, NT 4.0, 2000, and XP. This chapter shows you how to set up Infilink HMI on your computer and introduces the documentation set.
System Requirements
To run Infilink HMI, you must have certain hardware and software installed on your computer. The minimum system requirements include the following: An IBM PC or compatible with a 233MHz Pentium microprocessor. 32MB of RAM. 30MB of free hard disk space. At least one free serial port with a 16550 UART if you will be communicating with serial devices. VGA card and color monitor capable of at least 800x600-pixel resolution using 16 colors. The recommended system configuration is the following: An IBM PC or compatible with a 233 MHz Intel Pentium microprocessor. 128MB of RAM 100MB of free hard disk space Accelerator enabled PCI Super VGA card and color monitor capable of at least 1024 x 768 pixel resolution using 256 colors. Microsoft Windows XP.
Introduction 1
Setting Up
If you have a previous version of Infilink installed on the target computer you should perform a backup of all project files created using that version in the event that you decide to return to that version in the future. The program SETUP.EXE on disk #1 (or CD) performs the installation, installing the Infilink HMI executable files, license file, help file, and other components. If you are a Windows NT user you will need to ask your system administrator to perform the Setup. 1. Place the CD into the drive and the setup program should autorun. If not, then browse the CD and run it by double-clicking it. 2. Choose the components you wish to install. 3. Click the Browse button to choose a destination directory. 4. Choose a Program Folder/Program Group for the icons that invoke the executable files and help. 5. Verify your choices. If you want to make a change click on the < Back button. 6. At this point, the file copy process begins. You will be prompted for disks as needed. 7. Upon completion of the file copy process, you will be given the opportunity to view the README.TXT file. This file contains release information specific to this version of Infilink HMI. You can find this file in the Infilink program directory if you want to read it later.
\UTILITIES contains utilites such as the data conversion utility, printscreen, and others.
Introduction 2
Infilink Run Mode Runs a compiled Infilink project. iViewer Internet Utility Applet that allows the user to view Infilink data over the Internet
Help Folder On-line information accessible from Design Mode by pressing the F1 key.
Event Log Viewer The event log viewer captures and displays status output generated by run mode components. Readme README.TXT includes the following major topics: 1) System Requirements 2) New features for V4.0 3) INFILINK Demo Description
Setting up a Server
Servers are used to get DDE data from applications or externally linked devices through drivers. Infilink uses a Server to get data from external applications via OPC or DDE. If you will be using a third party Server with Infilink, you can install it now or wait until you have developed your application and are ready to run it on the PC. KEPwares OPC Server, KEPServerEX, comes with Infilink. You will be able to unlock one driver for use with Infilink.
Introduction 3
Installing DAO
If you will be logging data in MDB format your PC will need DAO support. If you have Microsoft Access installed on your PC there is no need to install DAO support. If you do not have Microsoft Access installed on your PC you will need to install the files needed to support Data Access Objects (DAO). You can select to install DAO support during Infilink installation by selecting the Full Installation option or selecting the Custom Installation option and then selecting it as one of the components from the install list. There are 2 files included in the \DAO folder of the Infilink CD. 1. Run the Mdac_typ.exe utility to install support for OBDC and DAO on your PC. 2. Additionally, run Dcom98.exe if your PC is running Windows95 or 98. You can also download the latest versions of these files from the Universal Data Access Web site at www.microsoft.com/data/. Select the proper download versions for your operating system.
Introduction 4
Send an E-Mail that includes the KEP Sales Order number and a request to unlock the software to unlock@kep.com. Instructions will be included in the reply to receive a Internet Unlock Password. Use it to access the Serial number and unlock codes over the internet at www.kep.coms unlock page. A serial number unlocks the Run Mode for 10 days. Once a Serial number is obtained the Help|Unlock menu item is enabled. Note: You have up to 10 days from the time you entered the serial number in which to unlock the software. If the software is not unlocked within that time, it will cease to operate Use your Internet Unlock Password to access the unlock webpage again and enter the Computer ID. A Password that unlocks Infilink will be generated. Note: The software unlock password is dependent on the number of user tags. 128, 256, 512, 1024 and Unlimited tag unlock passwords are available. Enter the password in the Password field and click OK.
Once a PC is unlocked no further codes are needed for unlimited and continuous operation time. The password you receive is only valid for a single PC. If you want to move the software to another PC you will have to obtain another password for that PC.
Copyright 2004 KEP, Inc. Introduction 5
Moving a License
Accept a License.../Move a License...
This menu item is used to move the license from on PC to another. Once the Move a License procedure is finished, the PC where the license originated will be locked in Demo Mode and the PC that received the license will be unlocked for unlimited time use. A blank floppy diskette is needed for this process. Infilink must also be installed on the PC that will accept the license (target computer).
@ Use a formatted floppy disk. The disk must not have any files on it when starting
step 1. 1. Insert blank floppy disk into target computer. Initiate license activation from target computer by clicking on Help|Accept a License, select a floppy drive, click Step 1, this prepares the floppy disk. Remove the floppy disk.
Introduction 6
Upgrading a License
The Upgrade License feature is provided for users that wish to upgrade a License to a higher tag count or add Internet access with the iViewer utility. Send your request via e-mail with the Serial Number and Computer ID to unlock@kep.com. A new Serial Number and Password that will unlock the Run Mode for the higher tag count will be e-mailed back to you. Alternately, you can Fax the information to KEP. Enter the serial number and password in the appropriate fields and click OK.
@ Use the Copy numbers to clipboard button then paste it into your e-mail request to insure accurate data.
Introduction 7
This document is to provide a description of features new to version 4.06.01; these are all the features added since version 4.02.02. Document updated 16-September-2004
Upgrade Cost
KEP is not increasing prices for these new features, and it is a free upgrade from Infilink version 4.00.20 and later to version 4.06.01. Some of the new features require KEPRUN-0000 (unlimited tag version). Current users, and new purchasers, of KEPRUN-0000 have these features at no additional cost. Text-To-Speech Telephony Iviewer (5 license) If you have one of the lower tag versions now, and want to upgrade, the upgrade price is reasonable. Basically, it is the price difference plus $50. Contact KEP, your manufacturers representative, or your distributor for details. The other new features are available in all tag counts of Infilink.
Retentive Tags
While defining memory tags, check the check box Retentive to make it retentive. Value of that memory tag at project close will be stored and will be assigned to that memory tag on next execution of the project, overriding its initial value setting. Values of retentive tags are stored in file ProjectRetentiveTags.dat in project directory. This file is encrypted and is tied to a particular project. While getting the tag values from the file ProjectRetentiveTags.dat Infilink uses Group name, Tag name and its data type to identify a particular tag. Changing the data type of Tag1 (from Word to Long for example) causes the retentive value to be lost. Error messages are posted to Eventlogger in the following cases: Retentive tags are defined in a project but ProjectRetentiveTags.dat is not found. ProjectRetentiveTags.dat is copied into project directory from different project. ProjectRetentiveTags.dat is corrupt. Runmode is unable to save file ProjectRetentiveTags.dat on project exit.
Description
Make outgoing call. Drop current call Enable incoming calls Disable incoming calls Say a string over phone using text to speech Say contents of file over phone using text to speech Play a wave file over phone Stop playing of wave file or text to speech Enable sensing of digits pressed over remote phone Disable sensing of digits pressed over remote phone
Syntax of all of above script commands is like: Ph_MakeCall(G1); Each command expects a string expression / string constant in the parenthesis. This string is used to identify the memory tag group which is to be associated with that command. Using a tag group name as a parameter to a command allows the user to work with multiple phone lines. Tags used with above telephony commands.
Tag name
LineName PhoneNumber CallStatus CallStatusString IncomingRings VoiceOut VoiceOutStatus
Data type
string string long string long string long
Usage
Specifying line / phone device name Specifying phone number to call Call status code Call status string Number rings after which incoming call should be answered String to use for Ph_TTSString / Ph_TTSFile or file name to use for Ph_PlayWaveFile Code which gives the status of text to speech output or playing of wave file Last digit received from remote touch tone phone Error code indicating last error. String informing about ErrorCode Caller ID received for incoming call Generic timers, automatically incremented by Infilink at every second. Setting 1 to these tags stops incrementing operation.
Infilink 4.06.01 New Features 13
IncomingEnabled Call status codes. Code 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768
Discret e
Description Call state Idle Call state Offering (Incoming call) Call state Accepted (Incoming call) Call state Dialtone Call state Dialing Call state Ringback Call state Busy Call state Special Info Call state Connected Call state Proceeding Call state On Hold Call state Conferenced Call state On Hold Pending Conference Call state On Hold Pending Transfer Call state Disconnected Call state Unknown
Voice out status codes. -1 Voice status undefined 100 Wave file playing in progress 101 Wave file playing completed. 102 Text to speech in progress 103 Text to speech completed Defaults : For each telephone device Infilink assumes the following defaults: Incoming calls disabled, DTMF input enabled.
Script command syntax: SpeakOut (string expression, nRepeatCount); SpeakOut (string tag, nRepeatCount); SpeakOut (string literal, nRepeatCount); The string is spoken using the installed TTS engine. TTS engine is configured through control panel for settings like speed, voice type etc. NRepeatCount has a valid range between 1 and 10 (inclusive). Attempt to program number outside this range results in clamping it to valid range. Attempt to issue more SpeakOut commands before finishing the previous one results in queuing of the SpeakOut commands. StopSpeaking; Stop speaking / TTS. This command terminates any speaking going on and also empties all the queue if built. SpeakOut and StopSpeaking commands operate independent of telephony commands. It is possible to have two different text to speech sessions, both over telephone line and over computer speakers.
Trend Printing
Brief notes about trend printing. Trend printing is done by using script command "_ThisWin.Trend.TrendPrint". Default printer is used for printing. This command prints real time and historical trends, whatever is seen on the screen as a "Trend Object" is printed on the printer. Any drawing objects appearing above or below the trend objects are not included in print. Works for both "Portrait" and "Landscape" modes. For historical trends, the inactive period black rectangles shown on the screen are printed with black cross-hatched brush. This improves appearance and reduces ink or toner usage. While printing the trend object, proper scaling is automatically done to fit the trend on the paper in both "Portrait" and "Landscape" modes. A printer typically offers more resolution (total # of horizontal and vertical dots) than a PC screen. It is likely that more detailed plot is obtained on the printed trend than is seen on the screen. Infilink plots the trend utilizing the higher resolution available on the printer. In the unlikely event that the printer resolution is less than the height and width of the trend, Infilink will not print the trend and it will post an error message in the event logger stating this. Using print spooling (instead of choosing "Print directly to printer") is best; otherwise Infilink program execution will slow while printing.
Select Animated GIF drawing tool, or select menu item Draw-Animated GIF. Draw a rectangle on the window. Animated GIF properties dialog appears. Select the Animated GIF file for this object. Check the check box Animate in design mode if you want to see the animation in design mode. Run mode will always animate the object, design mode gives you the choice. Click OK, you should see the animated picture. This object can be resized, moved, duplicated (etc.) just like other Infilink objects. If the object is being animated and if a zoom level other than 100 % is chosen, animation stops. Coming back to 100 % zoom should restore animation if it was on.
If the selected file does not contain valid Animated GIF (or mis-typing of file name) then you should see following bitmap indicating the failure to load the file.
Following animations are allowed for this object. 1. Show / Hide 2. Take Action 3. Enter Data Animated GIF objects when being animated is always displayed on top of all other objects (irrespective of their Z level).
Used Animated GIF and Mask bitmap files are copied into project sub-directories AnimatedGIFs and BitmapMasks. Ragged Tank Cut-Out has been a typical request which could not be done until this feature was added to Infilink:
Window Printing
In design mode user can print the HMI window by using menu item Window Print or by right clicking on empty portion of HMI window and selecting Print. The window is printed to the default printer. User is able to print three lines of footer information. Infilink before printing presents default print lines and allows the user to edit them. In run mode user prints the HMI window by using script command Print Window <Window Name> The <Window Name> must be a string literal. Only the visible window is printed to the default printer.
Here is an example of a bitmap with a rectangle on top of it. The rectangle has gradient fills and alpha (transparency) properties:
strKeyStrokes
nFlags
Examples: SendKeys (Notepad, helloworld<enter>, 0); SendKeys (strTag1, strTag2, longTag3); SendKeys (strTag1 + strTag2, strTag3 + strTag4, lTag5 lTag6);
Which keystrokes can be sent: Generally all characters found on US English keyboard are sent as keystrokes to target window. To send the keystrokes like: Enter use syntax <enter>. Following table lists the keystrokes which can be sent in this way. Keystroke Required string to be entered, non case sensitive Numpad 0 <Numpad0> Numpad 1 <Numpad1> Numpad 2 <Numpad2> .. .. Numpad 9 <Numpad9> Shift press <Shift_Down> Shift release <Shift_Up> Control press <Ctrl_Down> Control release <Ctrl_Up> Alt press <Alt_Down> Alt release <Alt_Up> Back space <Back> Tab <Tab> Escape <Escape> Home <Home> End <End> Left Arrow <Left> Right Arrow <Right> Up Arrow <Up> Down Arrow <Down> Enter <Enter> Insert <Insert> Delete <Delete> F1 <F1> F2 <F2> . F24 <F24> Examples: 1. String John <home>F <home>Kennedy results in the following string when sent to Notepad application, Kennedy F John 2. String ABC <left><left> DEFGHI results in the following string when sent to Notepad application, A DEFGHI BC
Explanation of nFlags: Two attributes of window caption matching can be controlled: 1 Attempt matching given caption string exactly or non exactly with the target window caption. 2 Attempt matching given caption string to target window caption with case sensitivity of not. Value of nFlag Attempt Exact Case sensitive match matching 0 No No 1 Yes No 2 No Yes 3 Yes Yes 4 or any other value No No Keystrokes are sent to all the top level windows with matching caption. It is possible to send the keystrokes to single or multiple windows simultaneously. Examples of nFlags usage. Sending keystrokes to notepad window with caption Untitled Notepad Value of strCaption Value of nFlags Will keystrokes be sent to notepad ? notepad 0 Yes Notepad 2 No untitled notepad 1 Yes Untitled Notepad 1 Yes ntitled Notepad 1 No Untitled Notepad 3 Yes ntitled Notepad 3 No
Language Switching
General Concept: Assume that the user is looking for creating runtime displays in "English" and "Spanish". (more than two languages are supported). Infilink design mode allows the user to create a string table. It is basically a table with "n" rows and two columns since we are assuming two languages in this example. Row1 contains two strings, 1. "High Temp in English", 2. "High Temp in Spanish". Similarly other rows contains two strings each with same meaning. Currently "Text object" contains a string. With this feature, user is able to assign a row number from string table to the text object. Script command "SelectLanguage (<Language Name>)" is available to the user. Let us assume that user creates 10 text objects on a HMI window. At start of run mode these 10 text objects displays text from string table column 1. User executes script command "SelectLanguage (Spanish)" on a button press. After executing this script command Infilink replaces text of all 10 text objects by picking up strings from the Spanish column. The display which was in English is now in Spanish. Following Infilink objects will assume similar behaviour as of "Text object" because of language switching feature. 1. Button (text displayed on button), 2. Alarm comments. 3. HMI Window caption.. Design mode offers a string table editor. User is able to set required number of columns (Languages) and go on adding / editing rows. Details: User can create user interfaces (HMI windows) in such a way that in run mode the user interface is shown in any one of the configured languages. User creates a string table in design mode using menu item Tools String table, a dialog box similar to following will appear. Multilanguage strings can be import/exported to/from a CSV file. This allows most of the editing to be done within a spreadsheet.
User can create many strings in multiple languages. Each string has a string identifier (String ID). Duplicate String IDs are trapped by Infilink. Text object, button object, Window Caption and Alarm comment can be assigned a string ID instead of a string. While assigning string ID, character # should be put as initial character before actual string ID. To assign a string ID of IDS_GREETING to a text object, #IDS_GREETING should be entered as text. Infilink upon seeing first character as # will treat that string as string ID. At run time string associated with that string ID for currently selected language are assigned to the text object. The script command SelectLanguage <Language Name> should be used to select current language. <Language Name> is expected to be a string expression. Passing an empty string to SelectLanguage command causes Default Language to be selected. The other languages are selected by passing the actual language name, which is the same as the column heading for that language. The string IDs and language names are not casesensitive.
The image can be used in semi transparent form by assigning Image alpha value less than 255. For semi transparent images the background color of the window is seen through the image. Assigning value of 255 to Image alpha value will make the image completely opaque and at that setting background color will not be seen.
Bug Fixes
Flat lines were being displayed on trends if System Time changed; this is now fixed. If HMI windows were created with width and height equal to screen resolution then scrolling to rightmost and bottommost portions of those windows was not possible; fixed. Infilink is now able to respond to iViewer information requests from computers running WindowsXP.
Infilink Overview
Design Mode
Infilink Design Mode is used to create a project that will execute in Infilink Run Mode. A project is a collection of objects that graphically depicts a process or operation. A valid project contains at least one window to display the output for the project. Output is generated by drawing one or more objects in the window and then assigning animations to those objects. Animations are driven by data that is stored in internal memory locations called tags. In addition to object animations, Infilink provides a scripting language to manipulate project components and tag data. Scripts may be assigned at the project level, window level and object level. A script may also be assigned to execute when the value of a tag changes or reaches an Alarm condition. Tags can reference data from external devices such as PLCs, user defined memory variables, or other Windows applications through DDE. Tags are assigned to external devices using a node identifier or alias for each device. This alias identifies the device driver and protocol used to communicate with the device and its network ID. The steps involved in creating a Infilink project are as follows: 1. Identify the hardware that will be accessed and draw up a map to identify each device. This step will help you determine which DDE or OPC server application you need to provide device data. It will also simplify the process of identifying these devices to Infilink. 2. Launch Infilink Design Mode and click cancel on the Open Project dialog that automatically pops up. Use the New... item on the File menu to create an empty Infilink project. A default window will be displayed before moving on. 3. Open the Window Properties dialog box to choose the options that you wish to apply to the window at run time. 4. Use the Tag Groups item on the Project menu to setup OPC and DDE tag groups referring to the device map created in step 1. (If you don't have the appropriate device driver yet you may skip this step for now and assign the tags you will define in the next step to a memory group.) 5. Use the Tag Groups item on the Project menu to assign tags to the groups entered in step 4. This step maps device locations that will be monitored with assigned tags in Infilink that will be referred to when defining scripts and animations.
Copyright 2004 KEP, Inc. Infilink Overview 31
6. Use the drawing tools to create objects on the project window. 7. Use the Animations... item on the Edit menu to assign animations to the created objects. 8. Use the Scheduler Utility to program timing for events to occur on a real time basis. 9. Save the project.
For objects, short cut menu functions provide quick access to common activities such as Cut, Copy, Duplicate, and Delete. The short cut menus also provide the easiest means of accessing an object's properties and animations. Depending on the object selected additional functions such as Reshape, Font, and Reassign tags may be available.
Infilink Overview 32
The short cut menu functions for a window allow you to quickly turn the Grid feature on and off. You can also quickly Save the selected window or Close it altogether. The Last Drawing Tool selection allows you to easily draw multiple objects of the same type without having to reselect the drawing tool from the toolbox. Short Cuts on Tag Groups and Tags
All of the tag management tools are included in the shortcut menus. The only way access Tag Import and Export commands is through the short cut menu.
Infilink Overview 33
Project Tools
Window Tools
- Save project - Open project - Run Project - Tag Groups - Project Properties - Library Manager - Event Viewer
Drawing Tools
- Select objects - Draw line - Draw polyline - Draw polygon - Draw rectangle - Draw rounded rectangle - Draw ellipse/circle - Draw arc - Draw pie
- Draw chord - Draw text - Draw button - Import bitmap - Import metafile - Draw alarm viewer - Draw alarm history viewer - Draw trend view
Line Tools
Fill Tools
Infilink Overview 34
- Line Color - Select single line - Select double line - Select triple line - Select thick line
- Fill Color - Unfilled - Horizontal Hatch - Vertical Hatch - Cross Hatch - Downward Diagonal Hatch - Upward Diagonal Hatch - Diagonal Cross Hatch - Solid Fill
Text Tools
Layout Tools
- Bold text - Italic text - Underline text - Select font - Increment font size - Decrement font size - Text Color
- Move Forward one level - Move Back one level - Rotate Clockwise - Rotate Counter Clockwise - Flip Horizontal - Flip Vertical
Editing Tools
Alignment Tools
- Make Group - Break Group - Remove from Group - Shape Properties - Reassign Tag - Reshape
, to lasso
- Space Equally Horizontal - Space Equally Vertical - Make same Width - Make same Height
*To create a group, use the selector tool, the objects you wish to group.
Infilink Overview 35
Moves the selection to the next object on the window as determined by the z-order. Shift-Tab Moves the selection to the previous object on the window as determined by the z-order. Esc Ends reshape mode or interactive animation definition. Del Deletes the selected object.
Infilink Overview 36
Combinations Shift-Drag Defines a square boundary rectangle when drawing an object. Defines a diagonal line when drawing a line. Ctrl-Drag Ctrl-Click Defines a vertical or horizontal line when drawing a line. Adds/Deletes a node when reshaping a polyline or polygon.
Ctrl-Shift-Double Click Opens grouped objects for editing without breaking apart the group.
Run Mode
The Run Mode application executes an Infilink project created in Design Mode. Run mode consists of six basic components: run time animator, database server, data logger, alarm logger, OPC/DDE server and event logger. Run Time Animator This is the main window that you see when you start Run Mode. The run time animator handles any operator interaction with a running Infilink project. Database Server This is the data management component of Infilink Run Mode. You may see it referred to as the "Data Manager". It handles the exchange of data between the run time animator and the device drivers. It is also responsible for managing active OPC and DDE links, updating the scheduler, animator and data logger when a piece of data changes, and notifying the animator of alarm conditions. Data Logger The data logger processes data changes and records information about the change to a log file. Alarm Logger The alarm logger processes alarm notifications from the database server and records the alarms to a log file. OPC/DDE Server A server provides the interface between Infilink and a specific piece of hardware. Each server knows only how to communicate with a specific device or set of devices. You will need to choose the appropriate server for your application and install this component separately. If Infilink does not provide a native driver for the device that you will be using, you can use any third party OPC or Advanced DDE server in place of the device driver. KEPware's OPC Server application, KEPServerEX, has been provided for you on the Infilink CD. Please refer to the documentation provided with KEPServerEX to determine if an appropriate device driver is available for your application. Event Log Viewer The event log viewer captures and displays status output generated by the other run mode components. Each status message is time stamped and displayed in the Event Logger window. The contents of this window may then be printed or saved to a text file for later review.
Infilink Overview 37
Overview
If you need help, the completed lessons may be found in the Infilink \lessons directory. These lessons are provided to give you a reference of what a project should look like when completed.
Thank you for making Infilink your choice in HMI Software. Infilink has been designed to allow you, the user, to get maximum performance with a minimal amount of effort. This lesson and the lessons that follow are designed to guide you through the process of creating an Infilink project. The lessons will get more complex as they progress. Some lessons, like this one, are designed to teach you about the parts of Infilink. At any time you may jump forward to another lesson or skip lessons entirely.
Lesson Objectives
This lesson is designed to give you a basic understanding of how to navigate within Infilink. When completed you should be able to: Create a new project. Add/Draw objects in a project window using the Toolbars or Main Menu. Edit objects using the Main Menu, Short Cut Menus, or Toolbars. Save a Project If you feel that you know how to navigate in Infilink, please feel free to go to Lesson 2.
This is what your project will look like at the end of the lesson.
Creating a Project
1. Open the Infilink Design Mode application. 2. Click Cancel in the Open Project dialog box
Show at startup, when this box is checked the Open Project window will automatically come up when Infilink Design is started.
4. The New Project dialog box will open. Type a name in the Create Directory field as a project name, we suggest using Lesson1. Click Create to accept the settings and create the project.
5. When the system asks you to verify the name and path of your project, click Yes if it is correct. If not, click No and repeat 3.
6. The design Mode will start with a default window created. Open the Window Properties dialog box by clicking on Properties in the Window menu. Leave Win001 for a window Name and type Drawing and Editing for a Title.
Win001 is the system generated object Name for the first window in a project. You can change this name at any time. Generally we will give a name to a window that indicates its use i.e." Main" or "Pump_room1". The Title text will appear in the title bar of the project window. Show when project starts in run mode, when checked, makes the window open whenever the project is opened in run mode.
7. Click on Show when project starts in run mode, then click OK to create the window.
8. A grid is available to assist in the layout and alignment of objects in the window. If it is not activated, click on the Layout menu and select Enable grid or click the button on the Window Toolbar. When objects are drawn or resized, they will snap to the points on the grid. 9. To make document images clearer we have chosen the color of our window to be white. If you wish to change your window color, click the button on the Window Toolbar and select the desired color from the displayed palette.
Every object has properties that can be modified both at design and run time. The differences in dialog boxes for each object are too numerous to explain in one lesson. You can investigate these differences on your own when you have learned how to create each of the objects and modify their properties. Properties common to every object are name, size and position. Generally you will use the mouse to change an objects size or position. You must however use an objects property dialog to change its name.
When creating objects it is very important that you consider giving a unique name to any object that will be animated. You might have ten to twenty objects grouped together to simulate a panel and have one object that is animated. Naming that object will allow you to immediately know when you have selected that object by seeing its name appear in the status bar. To reference the properties of an object at run time using a script, you must be able to specify that object by name. When you save a project if there are errors in scripts or animations, messages will appear in the event logger. These messages will indicate objects by name and indicate what kind of error has occurred.
A Chance to Practice
You will now take the opportunity to add some objects to our project and learn how to manipulate them. Feel free to deviate from the lesson, its goal is to help you feel comfortable using Infilink
If you make a mistake when drawing an object, you can choose Undo from the Edit menu or select the object and press the DEL key to remove it.
2. Place the pencil cursor in the upper left corner of the project window. 3. Holding the left mouse button down, drag the cursor down and to the right creating a box. Release the mouse button when done.
4. While the object is still selected press the right mouse button and click Properties... from the popup.
6. The Geometry tab allows you to change the shape of the corners. Changing both numbers to 0 will make the rounded rectangle a perfect square. Changing those numbers to 100 will make it a perfect circle. As you will see, these attributes can also be changed visually by invoking a special mode called Reshape.
8. While the object is still selected, press the right mouse button and click Reshape from the short cut menu. 9. Move the cursor over the reshape dot until it becomes a hand. 10. Holding down the left mouse button, move the dot around and see how its different locations effect the corners of the rectangle.
11. When you are through, drag the reshape dot to the center of the bottom line and release the left mouse button as shown below
2. Place the pencil cursor below the rectangle in the center of the project window. 3. Holding the left mouse button down, drag the cursor down and to the right creating a box. Release the mouse button when done.
4. While the object is still selected press the right mouse button and select the Properties... item from the short cut menu.
5. Select the Text tab and type the following text in the Text field: Text can be useful.
6. Click on the General Tab and type My_text in the Name field.
Notice the name of the object changed from none to My_texton the status bar.
7. Click OK to accept the changes and exit the dialog. 8. If the text is too close to the rectangle or is not close enough to the center, place the cursor over the text until it becomes a hand. 9. Holding the left mouse button down, drag the text object so that it is centered in the project window.
2. Place the pencil cursor below the text object in the lower right portion of the project window. 3. Click the left mouse button to set the first corner of your triangle. Drag the cursor to the next point and release. Move the cursor to the last position and double click to finish creating the triangle.
4. While the object is still selected, use the short cut menu as you did above to display the properties dialog or press F4 to do the same thing.
6. Change the fill color of the triangle to bright green by clicking the and the , fill color tools on the Fill Toolbar.
, solid fill
Click somewhere on a blank area of the window to deselect any selected objects. Position the cursor above and to the left of the Rounded rectangle. Holding the left mouse button down, drag the cursor down and to the right creating a bounding box or lasso large enough to enclose all of the objects in the project window and release the mouse button.
3. 4.
5.
Click the button on the Toolbar to align all of the grouped objects to their horizontal centers.
Notice how the objects aligned to the right. Alignment always keys off of the object with the black handles.
6. Click the button on the Toolbar to space all of the grouped objects equally from the top of the group to the bottom.
7. Click on the
8. Use one of the methods described earlier in the lesson to display the properties of the group and name it grpLesson1.
9. Drag the left side of the group to the left to resize the group and the objects contained within it.
10. Double Click while holding the Shift and Ctrl keys down on one of the grouped objects. This selects the group and allows you to edit individual objects in the group.
Note: Variable size is automatically assigned to text objects in a group when the group is resized by dragging a handle.
11. Click on the button in the Alignment Toolbar to align all of the grouped objects to their Horizontal center points.
12. Click the button to undo the last changes until your window returns to the image below.
Clicking on Tag Group icon allows you to add a new Tag Group of that type, double clicking on a defined and highlighted tag group allows you to edit the groups properties. Edit Tag Group Properties Tool Use this tool to bring up the properties window of a Tag Group. Delete Tag Group Tool Use this tool to delete a Tag Group. A Tag Group can only be deleted if it is empty.
2. Name: Enter a name that will identify this Tag Group. The name you enter here will appear in scripts that use Tags from this group.
2. Name: Enter a name that will identify this Tag Group as a link to a DDE server. The name you enter here will appear in scripts that use Tags from this group.
See Using DDE Although KEPware's OPC server is referred to as KEPServerEX, its application name is still KEPDDE.
3. Server name: Enter the name of the program or DDE server application that this Tag Group will use to get to a DDE information source. 4. For a DDE Tag Group, you would enter the name of the server application that will be providing data to your project. If you will be using KEPware's OPC server, you would enter KEPDDE if the server and Infilink will reside on the same PC. Otherwise, you would enter a string of the form \\<computer name>\ndde$ to specify a NETDDE connection to KEPServerEX on the PC identified by <computer name>. 5. Server topic: Enter the name of the server device or program handle that is a DDE information source. 6. If the Tag Group you are defining uses an Infilink device driver then this field identifies the device on the device network. You must enter a number here even if only one device will be used. 7. For a DDE Tag Group you would enter the name of the server topic that the Tag Group will represent. Note: If you will be using KEPware's OPC server then the topic would be "_ddedata" or an Alias name created in the server. When specifying a topic for a remote server you will need to append a $ to identify the topic as a registered NETDDE share. 8. Data format: You may specify the format of a DDE connection for a given node by assigning a format to that node. Available formats are Advanced and CF_TEXT. If you know that a specific server supports both Advanced and CF_TEXT connections (such as KEPServerEX), you can force Infilink to only connect using the format that you choose by assigning the desired connection type. When the format is set to Advanced, Infilink will alternately try Advanced followed by CF_TEXT when attempting to connect with a server. Advanced Tab
9. Initially disabled at run mode start: Allows you to manually start looking for DDE information when you need it. In some cases, the DDE information is not available until the Server Application is started (sometimes this is after Infilink is already running).
10. Wait: Puts a delay in before attempting to reconnect to a broken DDE link. This gives the Server a chance to reestablish a link with its Topic. 11. CF_TEXT DDE These settings apply only when CF_TEXT is the data format. Enable Block data start requests On startup, DDE tag information must be sent to the server so that the server knows what information to give Infilink. When checked, DDE tag information is sent in a high efficiency fashion to the server. Otherwise, each DDE tag's information is sent normally. Check this box to accommodate servers without high efficiency request capabilities. Initialization delay in milliseconds (0-2000) This value causes a communication delay to the DDE server shortly after Infilink starts. This allows servers with a long response after startup to respond properly to Infilink initialization commands. This delay occurs only once when Infilink is started. Data start request delay in milliseconds (0-1000) Use this value to put an additional delay after DDE communications are initialized. Once this delay is over requests for DDE data begin. This allows servers with a long response after initialization to respond properly to Infilink data requests. This delay occurs only once when Infilink is started. Notes: 1. The above two delays can add up to 3 seconds to the startup time of an Infilink project. Making the delay times shorter reduces this additional delay. The delay can be fine-tuned by a trial and error process. The delay is dependent on the server you are using. 2. KEPServerEX will accept high efficiency data requests and requires no delays on startup. 12. Click OK to add the group.
2. Name: Enter a name that will identify this Tag Group as a link to an OPC server. The name you enter here will appear in scripts that use Tags from this group. 3. Description: Enter a brief description. This will help you to identify the purpose of the tags in this group later on. 4. Prog ID: Enter the name of the OPC server or source. Use the tool to browse for OPC applications that are running at design time. If you will be using KEPware's OPC server, you would enter KEPware.KEPServerEX.V4 if the server and Infilink will reside on the same PC. Otherwise, you enter a remote machine name to specify a remote connection to KEPware.KEPServerEX.V4. 5. Remote machine: Enter a remote machine name <computer name> to specify a remote connection to the server, named in the Prog ID field. 6. Update Rate: The update rate specifies how often the Tag Group should request data from the Server. 7. Click OK to add the group.
2. Name: Enter a name that will identify this as a Virtual Tag Group. The name you enter here will appear in scripts that use Tags from this group. 3. Description: Enter a brief but meaningful description. This will help you to identify the purpose of the tags in this group later. 4. Click OK to add the group.
About Tags
A tag is a named object that is used to reference a piece of data. The Tag Group to which the tag is assigned determines the source of the data. The Tag Groups dialog box is used to define new tags and edit the properties of existing tags. You can access this dialog box by pressing F6 or selecting the Tag Groups item from the Project menu while in Design Mode. Any changes that you make to the tags are not saved until you save your project.
Identifies the access level of the current user (0-255). _ActiveAlarmCnt Long Identifies the number of currently active alarms in the running project. _AlarmLogStatus Short Identifies the state of the Alarm Logger where: 0 = Off, 1 = On and -1 = Disabled. _DataLogStatus Short Identifies the state of the Data Logger where: 0 = Off, 1 = On and -1 = Disabled. _Date Short Identifies the day of the month. _Day Short Identifies the day of the week where: 0 = Sunday, 1 = Monday,..., 6 = Saturday. _FileOpStatus Short Holds the result of the most recent file operation. Result codes are defined as follows: 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 Function success File not found Maximum open file count of 8 has been exceeded Unable to create the target file An error occurred during a file read operation An error occurred during a file write operation A memory allocation failure occurred during a read operation The maximum CSV field length of 256 characters has been exceeded. A specified read offset was past the end of the file. An invalid length parameter was specified.
_Hour Short Identifies the current hour in 24 hour format where 0 = 12:00 am, 13 = 1:00 pm, etc.
_MenusVisible Discrete Identifies the visible state of the main program menus at run time where 0 = Off, 1 = On. _Minute Short Identifies the current minute from 0 to 59. _Month Short Identifies the current month from 1 to 12. _Msecond Short Identifies the current millisecond from 0 to 999. _ProjectPath String Identifies the current project path formatted with a trailing backslash character (\) as in C:\Infilink\Projects\test\ _Second Short Identifies the current second from 0 to 59. _User String Identifies currently logged in user. If no user is logged in, this tag will assume the value NOUSER _Year Short Identifies the current year in 4 digit format.
Tag names are not case sensitive and as such "Tag1" is the same as "tag1". You should try to use as descriptive and unique a name as possible for each tag that you define. Doing so will avoid confusion. The tag name can be up to 32 characters in length and must start with a letter.
Displays the name of the currently selected tag. When defining a new tag you will enter the name for that tag in this field. Description Enter a brief but meaningful description. This will help you to identify the purpose of the tag later.
Initial value (Memory Tags only)
Enter the value that you would like this tag to assume when the project is first started.
Data Type
Use this list to select a data type for the value that will be assigned to the tag.
Discrete: Boolean value, False = 0, True = 1
Char: An 8 bit signed value with a range from -128 to 127 that represents one character. Byte: An 8 bit value with a range from 0 to 255.
Short: A 16 bit signed value with range -32768 to 32767 Word: A 16 bit unsigned value with range 0 to 65535 Long: A 32 bit signed value with range -2,147,483,648 to 2,147,483,647
E38 Double: Double precision (8 byte) floating point value with range 1.7976931 E308 to +1.7976931 E308
String: A character array of varying length from 1 to 256 bytes
Security Security is used to restrict the user from changing a tag's value. A tag's value may be changed by a variety of ways. Conditional access can also be implemented by using Access Levels. Internal Access Select Read Only to prevent the value of this tag from being altered. If a tag value is to be modified under project control from either a script or enter data animation then it must be given Read/Write privileges.
DDE client access
Select No Access to prevent OPC/DDE client applications from viewing the value of this tag. Select Read Only to allow OPC/DDE client applications to read it's value but prevent the value from being altered. Select Read/Write to allow any OPC/DDE client application to modify the value of the tag.
Internet client access
Select No Access to prevent Internet client applications from viewing the value of this tag. Select Read Only to allow Internet client applications to read it's value but prevent the value from being altered. Select Read/Write to allow any Internet client application to modify the value of the tag.
See Lesson 5 for more information on logging data.
Log on data change Use the Log on data change check box to have value changes for this tag recorded in a log file. Click OK to add the group.
The Data type should match the value you are retrieving.
Most Settings are the same as a Memory tag. Additional settings are listed below.
Server item The address* of the information in the device or tag name in the server. For a controller this might be a register number (ie. R0012) or in a spreadsheet program a cell location (c3). *Address The address of a Server item is a string of 1 to 30 characters that specifies an item name supported by the topic identified in the DDE Tag group properties. Note: If you will be using KEPServerEX without an Alias as the topic, you must specify the Channel and Device as well as the address for the item name. <Channel Name>.<Device Name>.<Address> You can specify an optional scan rate and/or data type for the item using the format: <item name>@<scan rate> Where: <item name> is the path to the device address or just an address if an alias is used. <scan rate> is the scan rate of the address in milliseconds. Infilink will request the information from the DDE server at this interval. The scan rate specifies how often the device driver should request this piece of data from the device.
The Data type should match the value you are retrieving.
Most Settings are the same as a DDE tag. Additional setting listed below.
Server item The address* of the information in the device or tag name in the server. *Address The address of a Server item is a string of 1 to 32 characters that specifies an item name supported by the Prog ID identified in the OPC Tag group properties. If you will be using KEPServerEX, specify the item using the format: <channel name>.<device name>.<item name> Where: <channel name> is the name of the Channel in the OPC server <device name> is the name of the device in the OPC server <item name> is the device address in the controller or a tag name that was created in the OPC server Use the tool to browse for OPC Server items. This will generate the address for you automatically and put it in the Server item text box. Note: Once a tag name is entered, the browse button will prompt you if you want to change the tag name. Select NO to continue with the browsing.
Design Tip When more than one address in the server is selected, Infilink will make tags for all of the selected addresses. This powerful feature eases the task of creating tags separately in Infilink after they have already been created in the server.
Access path (optional) If the Server accesses two tags or addresses with the same name, a specific path is necessary to determine which value will be returned to Infilink. If you will be using KEPServerEX, specify the item using the format: <channel name>.<device name> Where: <channel name> is the name of the Channel in the OPC server <device name> is the name of the device in the OPC server Engineering Type The Tag will hold the value as scaled by the OPC server. Raw Type The Tag will hold the devices un-scaled value from the OPC server.
Deadband Select the Enable check box to set the minimum raw value change the tag can undergo before Infilink will see the value as changed. Example: If a deadband of 10 is entered, the tags raw value must change by 10 units from that last recorded value before a new value for the tag will be recognized and logged.
If the initial value of the tag is set to a lesser value than the Minimum clamp, an error message will be reported to the Event Logger.
Value clamps / Scaling Clamping Select the Minimum check box to set the minimum raw value the tag can accept. If the value goes below this value the minimum value is returned. Select the Maximum check box to set the maximum raw value the tag can accept. If the value goes above this value, the maximum value is returned. For example, if the clamp values are set to 10 minimum and 40 maximum Infilink will never allow the tag to assume a value less than 10 or greater than 40. Scaling DDE and OPC tags can be scaled. Scaling is a simple linear interpolation between the raw values and the engineering values entered. Engineering Minimum and Maximum are the scaled value range that Infilink will use for scripts and animations. Raw Minimum and Maximum are the data range received from the server. When Infilink writes data back to the server the scaling is backed out or reversed so that the server gets relevant data. For example: The value of a word from the server is a 10-bit A/D converter value with the range of 0 to 1024. You would like to see it displayed as values ranging from 4 to 20. Set the Raw minimum as 0 and the maximum as 1024. Set the Engineering minimum as 4 and the maximum as 20. (Shown above).
Alarm Tabs Displays the alarm definitions. If you have added a tag that has an assigned data type other than string, you may use these tabs to assign alarms to it.
Special Note: This is the best way to create a CSV file. Let Infilink create a template using the Export Tag Database function. Then add to the template and read it back with the Import Tag Database function..
Quick Tip If you intend to use the CSV function to create your tag database in another product such as Microsoft Excel, create a couple of tags using Infilink's normal group and tag editors. Once you have a small tag database established, use the export tag database function to generate a template CSV file. You can then import this file into Excel and add to it as needed.
Max. Value Clamp_Raw The maximum raw input value if scaling is enabled. Deadband The deadband value for the tag if defined. Discrete Alarm Trigger If a discrete alarm is defined, the state that triggers that alarm. 0 = False, 1 = True. Discrete Alarm Comment If a discrete alarm is defined, the text that is assigned to that alarm. 0 to 64 characters. Discrete Alarm Severity If a discrete alarm is defined, the severity that is assigned to that alarm. 0 to 16. Discrete Alarm Access Level If a discrete alarm is defined, the Access level that is assigned to that alarm. 0 to 255. Discrete Alarm Action If a discrete alarm is defined, the actions that are assigned to the alarm. L = Log, P = Print, D = Display "E" = E Mail. Deviation Alarm Target If a deviation alarm is defined, the target value that is assigned to that alarm. Deviation Alarm Min. %% The minor deviation percentage if a deviation alarm is defined. Deviation Alarm Min. Comment If a deviation alarm is defined, the text that is assigned to that alarm. Deviation Alarm Max. %% The major deviation percentage if a deviation alarm is defined. Deviation Alarm Max. Comment If a deviation alarm is defined, the text that is assigned to that alarm. Deviation Alarm Severity If a deviation alarm is defined, the severity that is assigned to that alarm. 0 to 16. Deviation Alarm Access Level If a deviation alarm is defined, the Access level that is assigned to that alarm. 0 to 255. Deviation Alarm Action If a deviation alarm is defined, the actions that are assigned to the alarm. L = Log, P = Print, D = Display "E" = E Mail. High High Alarm Trigger High high alarm activation value if high/low alarm is defined. High High Alarm Comment If a High High alarm is defined, the text that is assigned to that alarm.
High Alarm Trigger High alarm activation value if high/low alarm is defined. High Alarm Comment If a High alarm is defined, the text that is assigned to that alarm. Low Alarm Trigger Low alarm activation value if high/low alarm is defined. Low Alarm Comment If a Low alarm is defined, the text that is assigned to that alarm. Low Low Alarm Trigger Low Low alarm activation value if high/low alarm is defined. Low Low Alarm Comment If a Low alarm is defined, the text that is assigned to that alarm. Level Alarm Severity If a Level alarm is defined, the severity that is assigned to that alarm. 0 to 16. Level Alarm Access Level If a Level alarm is defined, the Access level that is assigned to that alarm. 0 to 255. Level Alarm Action If a Level alarm is defined, the actions that are assigned to the alarm. L = Log, P = Print, D = Display "E" = E Mail. Target The target value if a deviation alarm is defined. Major Dev The major deviation percentage if a deviation alarm is defined. Minor Dev The minor deviation percentage if a deviation alarm is defined. Notes 1. System tags are not included in the CSV output. 2. Data change and Alarm scripts are not included in the CSV output 3. If a tag database that contains scripts is exported, modified and then imported back into the same project, the scripts will remain intact. 4. When importing a tag database, the fields of an identification record are not required to be in any specific order. 5. When importing a tag database, only required fields need be included but each included field must have a matching field in the identification record.
75
Overview
Now that you have learned a little about Infilink, we will take the opportunity to discuss animations. In Infilink, every object can be animated in some fashion to respond either to mouse clicks or changes in the data of an associated control tag. This section discusses all of the Animations available from the Animations Dialog Box.
About Animations
The following types of animation are defined in Infilink: 1. 2. 3. 4. 5. 6. Show/Hide Blink Stretch Horizontally Stretch Vertically Move Horizontally Move Vertically 7. 8. 9. 10. 11. 12. Change Color Rotate Enter Data Show Value Slider Take Action
Not all forms of animation are available for all objects. For example, a Text object can have a Show Value animation whereas a Rectangle object cannot, yet both objects can have a Take Action animation. Objects can have several animations defined at once. Animations are defined using the Animations dialog box accessed from the Animations menu item on the Edit menu, by selecting Animations from the short cut menu or by pressing the F5 key. An object or group must be selected before you can use the Animations dialog box. Once you are in the Animations dialog box, only those animations that are appropriate to the object or group are made available. You will not be able to assign conflicting animations to the same objects or to the groups that contain those objects. For example, you cannot place an Enter Data and Slider animation on the same object.
Animating an Object
Making an Object Blink
The Blink animation cannot be assigned to a group
The Blink Animation is used for Blinking an object; either alternately making it visible, then invisible, or alternately making it one color, then another color. Three blinking speeds are provided. 1. Press the tool or press the Blink button in the Animations dialog box.
2. Press the Tags... button in order to view the Tag List. An Analog tag must be attached to this animation. Select a tag to create a tag name or expression. 3. Check the Substitute zero for input value if tag data is not valid if desired. Checked: Whenever the Tag value is outside of the specified range the move animation puts the object in the zero position. Unchecked: Whenever the Tag value is outside of the specified range the move animation leaves the object in the last valid position.
4. If a Discrete tag is selected, then choose whether to blink the object when the value of the tag is Logical TRUE (ON) or Logical FALSE (OFF). 5. If an Analog tag is selected then choose whether to blink when the value is either Within the Range (Inclusive) or Outside the Range of assigned values you enter under Input value range. If Within the Range is selected, the object will blink when the tag value falls within the given Low to High range. 6. Select a Blink type. Show/hide will alternately show and hide the object when the blink condition is TRUE. Change colors will alternately change the color of the border, interior or text of an object when the blink condition is TRUE. You set the colors by clicking on the colored rectangles and choosing the desired color in the Color Selection Dialog. 7. Select the desired Blink rate Slow, Medium or Fast. The Fast cycle time is approximately 400 ms, Medium is approximately 800 ms and Slow is approximately 1.2 seconds. 8. Choose OK to accept the animation definition.
1. Press the button in the Animations Toolbar. Or, right click on the object and select animations. Then select the Show/Hide animation button. 2. Press the Tags... button in order to view the Tag List. An Analog tag must be attached to this animation. Select a tag to create a tag name or expression. 3. Check the Substitute zero for input value if tag data is not valid if desired. Checked: Whenever the Tag value is outside of the specified range the move animation puts the object in the zero position. Unchecked: Whenever the Tag value is outside of the specified range the move animation leaves the object in the last valid position.
The Show/Hide Animation can be used with overlapping images to show multiple states of an object.
4. If a Discrete tag is selected then choose whether to make the object visible when the value of the tag is Logical TRUE (ON) or Logical FALSE (OFF). 5. If an Analog tag is selected, use the Show when input value is dropdown to choose Within the Range or Outside the Range. Enter the desired value range under Input value range. If the value of the tag is chosen Within the Range, then the object will only be shown when the tag value falls within that Low - High range. 6. Choose OK to accept the animation definition.
1. The Move Left/Right Animation is used to move an object in the x-direction. The Move Up/Down Animation is used to move an object in the y-direction. 2. Press the dialog box Move Horizontal or Move Vertical button in the Animations
Move Left/Right in combination with Move Up/Down, using equal steps, displays a diagonal path of movement.
Tags... button in order to view the Tag List. An Analog 3. Press the tag must be attached to this animation. Select a tag to create a tag name or expression. 4. Check the Substitute zero for input value if tag data is not valid if desired. Checked: Whenever the Tag value is outside of the specified range the move animation puts the object in the zero position. Unchecked: Whenever the Tag value is outside of the specified range the move animation leaves the object in the last valid position.
5. Enter the Input Value Range for Low and High that corresponds to the analog ranges. High limit should always be greater than the low limit. 6. The related position of the object for each tag value can be set either by the keyboard or by clicking the Low or High Related position button . Clicking one of these buttons takes you to the object where you can graphically set the desired initial and final object positions using the mouse. 7. Choose OK to accept the animation definition.
Left/Right stretch and Up/Down stretch used together gives an object a zoom in/out effect.
1. Press the or buttons in the Animations Toolbar. Alternatively, right click on the object and select animations. Then select the Slider animation button. 2. Press the Tags... button in order to view the Tag List. An Analog tag must be attached to this animation. Select a tag to create a tag name or expression. 3. An Analog tag must be attached to this animation. Enter the value that the tag has at the end points of motion in the Input value range Low and High edit fields. The high limit should always be greater than the low limit.
4. Choose the Direction in which to stretch the object. Left/top edge - Vertical Stretch from the top down; Horizontal Stretch from left to right. Center - Vertical Stretch from the center up and down; Horizontal Stretch from the center left and right. Right/bottom edge - Vertical Stretch from the bottom up; Horizontal Stretch from right to left. User Defined - allows the user to set and anchor graphically using the related position button in the Stretch from frame and the mouse. The top and bottom limits of stretch are set graphically using the other related position buttons. 5. The related position of the object can be set for each tag value either by the keyboard or by clicking the Low or High Related position button . Clicking one of these buttons takes you to the object where you can graphically set the desired initial and final size using the mouse. 6. Choose OK to accept the animation definition.
Rotating a Line
The Rotate Animation can be attached to a line object. The center of rotation can be defined anywhere within the window. Typical use is as an indicator needle of a meter or to show the rotation of a wheel. 1. Press the tool or Rotate button in the Animations dialog box
2. Press the Tags... button in order to view the Tag List. An Analog tag must be attached to this animation. Select a tag to create a tag name or expression. 3. Check the Substitute zero for input value if tag data is not valid if desired. Checked: Whenever the Tag value is outside of the specified range the move animation puts the object in the zero position. Unchecked: Whenever the Tag value is outside of the specified range the move animation leaves the object in the last valid position.
4. Enter the Input Value Range for Low and High values that correspond to the tag ranges. High should always be greater than the low value. 5. The Angle of rotation in degrees of the object for each tag value can be set relative position buttons. Clicking either by the keyboard or by clicking the one of these buttons takes you to the object where you can graphically set the desired initial and final object rotations using the mouse. Angles of rotation are measured in degrees as shown in the following diagram:
6. Select the Center of rotation (the pivot point). This can be: Start point - The beginning of where the object was drawn. Center point - The center of the object. End point - The end of where the object was drawn. User defined - If selected, the relative position button is used to graphically set the center of rotation using the mouse. 7. Choose OK to accept the animation definition.
The Enter Data animation can be assigned to a group even if one or more of the objects in the group cannot accept the Enter Data animation.
3. Once the tag is selected, then select the Entry Method you want to use. There are 6 different methods to choose from: Popup - Displays a popup dialog box that allows the operator to make an on/off selection or keypad if the tag is numerical or keyboard if the tag is a string. A plain data entry field is shown if the Keyboard attached option is selected in Project Properties. All data entry is done in signed decimal format. Toggle TRUE/FALSE - The value of the assigned tag will be toggled from TRUE to FALSE or from FALSE to TRUE when the mouse button or assigned key is depressed. Force SET/TRUE (1) - A one will be written to the tag whenever the animation is invoked. Force RESET/FALSE (0) - A zero will be written to the tag whenever the animation is invoked. Momentary - NO - The value of the assigned tag will change to TRUE when the mouse button or assigned key is depressed and back to FALSE when released. Momentary - NC - The value of the assigned tag will change to FALSE when the mouse button or assigned key is depressed and back to TRUE when released. 4. If the tag is a numerical value, select the Significant figures to display (1-12).
5. Check Invoke using a keyboard shortcut if you want to supply a keyboard shortcut to activate the animation. Fill out the shortcut controls as desired. 6. If a Numeric tag is selected, Select to limit the range of entry in one of two ways. Default for data type: Limits entry to the range for that Data type. User defined: Limits the range to the settings entered in the High and Low text fields. 7. If your project supports multi-user security, enter the Access level that the operator must have to activate the animation. 8. Choose OK to accept the animation definition.
button in the Animations Toolbar. Alternatively, right click on the 1. Press the object and select animations. Then select the Show/Hide animation button. 2. Press the Tags... button in order to view the Tag List. An Analog tag must be attached to this animation. Select a tag. 3. Enter the value that the tag should assume at the end points of motion in the Output value range Low and High edit fields.
4. Choose the Direction in which to slide the object, Horizontal (Left/Right) or Vertical (Up/Down). 5. The related position of the object can be set for each tag value either by the keyboard or by clicking the @low value or @high value Related position buttons . Clicking one of these buttons takes you to the object where you can graphically set the desired initial and final location using the mouse. 6. Select While sliding to update the value of the tag while the slider is in motion or On release to update the value of the tag following release of the mouse button. 7. If your project supports multi-user security, enter the Access level that the operator must have to activate the animation. 8. Choose OK to accept the animation definition.
The Change Color animation cannot be assigned to objects of type bitmap, metafile or group.
Tags... button in order to view the Tag List. An Analog 2. Press the tag must be attached to this animation. Select a tag to create a tag name or expression. 3. Check the Substitute zero for input value if tag data is not valid if desired. Checked: Whenever the Tag value is outside of the specified range the move animation puts the object in the zero position. Unchecked: Whenever the Tag value is outside of the specified range the move animation leaves the object in the last valid position. 4. If the object to which you are assigning the animation has a border then you may choose whether to change the border color by selecting the appropriate choice in the Border Ranges dropdown selection list. 5. If the object to which you are assigning the animation has an interior then you may choose whether to change the fill color by selecting the appropriate choice in the Interior Ranges dropdown selection list. 6. Selecting None disables the color change for the corresponding feature, Border or Interior. 7. If a Discrete tag is selected, choose a color for each of the two states, Off and On using the Color Selection Dialog.
If an Analog tag is selected, choose the Range number 2 - 7 and the Color for each range. The first color is assigned when the tag value is below the first value in the range, the next when the tag value is between the first and second values, etc. The last color is assigned when the tag value is greater than the last value given.
1. Press the button on the Toolbar. Or, right click on the object and select animations. Select the Show Value button in the Animations dialog box. Tags... button in order to view the Tag List. Select a 2. Press the tag to create a tag name or expression. 3. Select the Data type that matches the Tag in the Treat value as frame and fill in its format settings. String - Char, String tags. If a String tag is selected then no formatting is required. The string will be displayed as it appears in the tag. Char is displayed as the ASCII character designated by its numeric value. Discrete - Discrete tags. If a Discrete tag is selected then enter the text to show when the tag value is ON and when the tag value is OFF. Integer Byte, Short, Word, Long, DWord. Choose the desired Integer Format from the list. Available formats are Decimal (Signed), Decimal (Unsigned), Hexadecimal, Octal and Binary. Specify the field width and if you want to show leading zeros. Real - Real, Double. Set the Real Format fields. Select to display the value with a given number of significant numbers (a fixed field width with floating DP (decimal point)). Or, select to display the value in a fixed format with a specified number of digits to the Left of the DP and a specified number of digits to the Right of the DP. 4. Choose OK to accept the animation definition.
Formatting examples Value Format String Discrete (On, Off) Short, Decimal (Signed) Word, Decimal (Unsigned) with leading zeros Real, 3 significant figures Real, Fixed field, 3 Left, 3 Right
The Take Action animation cannot be assigned to objects of type line, arc, pie or chord.
1. Press the
3. If your project will support multi-user security, enter the Access level that the operator must have to activate the animation.
See Scripting for more information.
4. If desired, check Invoke using keyboard shortcut and choose an optional Short Cut Key equivalent to the mouse button. 5. Enter the script and Verify that the syntax is correct. 6. Choose OK to accept the animation definition.
Overview
Libraries are files containing previously drawn objects and groups. Infilink has a Library Manager to help you organize objects used in a project. The Library Manager has some tools to help you accomplish this.
Open a library
. All Infilink libraries have an extension of *.kol or *.lib. System Library Click on is the default library that comes with Infilink. Scroll to the library you want to open, click on it, and then press Open.
Save a library
Click on to save an existing library or enter a filename in the popup dialog if this is a new file and click Save to save the current library.
The selected object has its name highlighted in the Treebar. To Rename an object or object group, click on its name then click on the name may be up to 64 characters long. Rename tool. An Object
1. Click on the object or group to save. Right click to the shortcut menu and select Copy. 2. Open the library and object group where you want to save the selected object or group. 3. Right click in the object field of the library and select Paste from the shortcut menu. A new Untitled object will be added to the treebar to the left of the object field. Use Rename to assign an appropriate name, up to 64 characters long, to the object or group. Be sure to save the library so that the new object or group is not lost! Design Tip Note: The object to be saved must be copied from an Infilink window. Objects copied from other programs such as Word or Paint cannot be pasted directly to a library. Paste them to an Infilink window first then copy them from the window and paste them to the library.
1. To place an object or group from a library in a project window, simply click on and drag it on to the project window. Once an object has been placed, it may be moved, edited, or animated. 2. Resize and adjust the object as desired. Objects that have been animated and copied to a library retain these animations and the tags associated with them. If these objects are copied from the library into a project window you will have to supply valid tag names to support the animations. Infilink allows you to reassign the tags in your library objects when you paste them onto your project window. If the object has an animation assigned to it the Reassign Tag dialog pops up.
Using predefined library objects speeds development of a project. Objects from a library can be placed in any Infilink window.
Reassigning Tags
The Reassign Tag function can be invoked at any time on any window by simply right clicking on an object. If the object contains tags, the Reassign Tags selection will be available from the shortcut menu.
The Reassign Tag dialog is used to replace one or more tag names assigned to the selected object. Each animation and script assigned to the object will be scanned for tag usage. You will be shown a dialog box for each different tag that is assigned to the object. The dialog appears as follows:
Design Tip If you duplicate objects which contain tag information such as a display, you can quickly change the tags in the newly duplicated objects using the reassign tags function. The combination of these two functions allows you to create an object once then quickly populate your window with duplicates each attached to their proper tags by the reassign tags function.
The text to the right of Old name: indicates the name of a tag found in the scan. This tag may be assigned to more than one animation or script. To reassign this button tag you can either type in a valid tag name or press the New name: and select a tag from the Tag List dialog. When you press the OK button all occurrences of Old name will be replaced with the tag name shown in the edit control. You can skip reassignment of a tag by pressing OK without making any changes to the name. Press Cancel at any time to stop the reassignment process.
Overview
Scripts provide the additional functionality your application may need. Infilink scripts allow you to perform tasks such as complex scaling operations, file manipulation, string handling, and user interactions with your process. This section is provided as a reference for the script functions.
Introduction
Scripts are automated sequences of commands that are executed by Infilink at run-time. There are five types of scripts: 1. 2. 3. 4. 5. Project Scripts - Assigned at the project level. Window Scripts - Assigned at the window level. Take Action Scripts - Assigned as an animation at the object level. Tag Scripts - Assigned to individual tags. Alarm Scripts - Assigned to individual Alarms
The following buttons are common to all the editors: Opens the Tag Group dialog box. You can select a tag from the tag list and its name will automatically be inserted into the script at the cursor location. Searches the script for errors. If an error is found, a description of the error will appear in the status bar at the bottom of the dialog and the cursor will be placed at the approximate location of the error. Launches help for the type of script you are editing. Quits the current edit. Validates and assigns the script.
Project Script
Access to the project script editor is granted by selecting the Scripts tab in the Project Options dialog box. There are three types of project scripts: On project open, While project running, and On project close. One Script may be written for each type.
Project Scripts will contain those functions and operations that you need to have perform independently to what the operator is doing somewhere else in the project.
You should not attempt to access tags assigned to user defined nodes from an On project open or On project close script because external data may not be available when the script is executed.
On project open Initialization steps that you want to perform when your project starts could be taken care of with a On project open script. This type of script executes once when the project is initially loaded. You might use an On project open script to set the state of some internal memory tags or launch an external application. While project running Periodic operations at the project level can be performed in a While project running script. While project running scripts execute on a user defined Interval anywhere between 100 and 99999 ms. While project running scripts are executed before any On window open scripts if such scripts are defined. On project close Any project level cleanup that you need to perform can be done in an On project close script. Entering a Project Script 1. Press the Scripts tab and select when the script will occur. 2. Enter the script and Verify that the syntax is correct. 3. Choose OK to accept the script definition.
Example: While running script @ 5000 MS scan rate # If the acknowledge bit for the chlorine alarm # is on. Show the Hazard window and beep the speaker # 5 times. If (chlorine_ack == ON) then Show "Hazard"; Beep(5); Chlorine_ack = OFF; Endif;
Window Scripts
Access to the window script editor is granted from the Window Properties dialog. You can display the Window Properties dialog for the selected window by selecting properties from the window's shortcut menu. There are three types of window scripts: On project open, While project running, and On project close. One Script may be written for each type. The types of script that you may define for a window are defined below.
Window Scripts are used for those functions and operations that are only important while the window is opened. For example you may want to show or hide certain objects, or you may wish to perform some calculation that only displays on the window.
On window show Initialization steps that you want to perform prior to showing a window could be taken care of with an On window show. You might use an On window show script to initialize the properties of one or more objects on the window. While window showing Periodic operations at the window level can be performed in a While window showing script. While window showing scripts execute on a user defined Interval anywhere between 100 and 99999 ms. You might use this type of script to cycle the value of a memory tag that is used on the window.
Copyright 2004 KEP, Inc. Scripts: The Final Word in Flexibility 100
On window hide Any window level cleanup that you need to perform when a window is removed from view can be done with an On window hide script. You might use this type of script to show a different window. Entering a Window Script 1. Press the Scripts tab and select when the script will occur. 2. Enter the script and Verify that the syntax is correct. 3. Choose OK to accept the script definition. Example: While showing script # Calculate the percentage of capacity used in the brewing vat. # The vat is 27 feet deep. Each foot equals 4800 gallons or 400 # GPI. Capacity is initialized at 129,600. Level is recorded in # inches and GPI is initialized at 400. percap = (level * GPI) / capacity;
On button down The script assigned to this phase of the button or key press will execute as soon as the mouse button or assigned short cut key is pressed. While button pressed This script executes at the specified Interval from 100 to 99999 ms while the mouse button or assigned short cut key remains pressed. You might use this type of script to change the value of a memory tag at a slightly faster rate than could be attained from repeatedly pressing the key. On button up This script executes when the mouse button or assigned short cut key is released. To emulate a Windows style button that initiates a single action you would use this type of script.
Executing a Script With a Button Click You may assign these scripts in any combination using the following steps. 1. Press the Take Action button on the Animations toolbar. Select when the script will occur. 2. If your project will support multi-user security, enter the Access Level that the operator must have to activate the animation. 3. If desired, check Invoke using keyboard shortcut and choose an optional Short Cut Key equivalent to the mouse button. 4. Enter the script and Verify that the syntax is correct. 5. Choose OK to accept the animation definition.
Example: On button up script # When the button is pressed and released, # the Chlorine Gas Alarm is acknowledged. Chlorine_ack = TRUE; PostMsg ("Acknowledge Chlorine Gas Alarm by operator" +_User);
Access to the data change script editor is granted by selecting the Scripts tab in a Tag's Properties dialog box. You can display the Tag Groups dialog box by pressing F6.
When defining numerical tags, you can assign a Deadband. The Deadband specifies the minimum amount by which the tag value must change before a change event will be triggered.
On data change An On data change script assigned to a tag in the tag database will execute whenever the tag value changes. If the tag has an assigned deadband, the value must change by at least that value before the script will execute. Entering a Tag Script 1. Select a tag by clicking the Tag Group tool button to display the defined tags and then choose one by double-clicking it with the mouse or use the shortcut menu and select Properties. From the Tags Properties dialog box, click on the Scripts Tab. 2. Enter the script and Verify that the syntax is correct. 3. Choose OK to accept the script definition. Example: # If the chlorine sensor detects chlorine the chlorine # acknowledge bit is set on. If (chlorine_detect == 1) then Chlorine_act = 1; Endif;
Alarm Scripts
Access to the alarm script editor is through a Tags properties dialog when you assign an alarm to a tag.
Alarm Scripts are for those functions and operations that you want to perform when an alarm condition is active. You might use an Alarm Script to sound an alarm when a tag exceeds a certain value. The script may take place at any to all of the possible times.
On active transition Actions that you want to perform when the alarm occurs could be taken care of with a On active transition script. This type of script executes once when the alarm initially occurs. You might use a On active transition script to trigger an annunciator or show a diagnostic window. While active Periodic operations while an alarm condition exists can be performed with a While active script. While active scripts execute on a user defined Interval anywhere between 100 and 99999 ms. On acknowledge Periodic operations after an alarm is acknowledged can be performed with an On acknowledge script. On acknowledge scripts execute once when the alarm is acknowledged. Acknowledging an alarm does not stop any While active scripts from executing. On inactive transition Any alarm housekeeping that you need to perform can be done in an On inactive transition script. Entering an Alarm Script 1. Select a tag by clicking the Tag Group tool button to display the defined tags and then choose one by double-clicking it with the mouse or use the shortcut menu and select Properties. From the Tags Properties dialog box, click on the appropriate Alarm Tab then click on the Script button. 2. Enter the script and Verify that the syntax is correct. 3. Choose OK to accept the script definition.
Script Reference
General
The remainder of this chapter deals with the commands and constructs that may be used when writing a script. Here are some basics: A valid script contains at least one statement. Each statement must end with a semicolon (;) Keywords such as IF, THEN, While and _SysCmd are not case sensitive. Window names, tag names and object names are not case sensitive.
Comments
In order to continue a comment on the next line you must place a # at the beginning.
You will find it helpful to include comments in your scripts so that when others review your work (or even you at a later date) the intended operation of the script will be clear. A comment is defined by preceding the comment text with a pound sign (#) as in: # This is a sample comment # # Show the value of a numeric expression by assigning it # to a text object. #
Logical Constants
The following constants are provided for use in expressions involving the discrete data type. They can be used anywhere a logical TRUE or FALSE is required.
ON or TRUE may be used to indicate a logical TRUE (1) OFF or FALSE may be used to indicate a logical FALSE (0)
Example: # Sound a beep from the PC speaker if the value of # DiscreteTag1 is TRUE If DiscreteTag1 == ON Then Beep; EndIf;
Conditional Operators
Conditional operators are used when creating relational expressions for use in IFTHEN-ELSE or WHILE statements. The following operators are available: > Greater than < Less than >= Greater than or equal to <= Less than or equal to = or == Equal to <> Not Equal to
Parentheses may be used to set the desired order of execution of logical operations. Operations written in parentheses are evaluated first from the inside out.
Example: If (tag1 > tag2) then tag3 = 1; elseif (tag1 == tag2) then tag3 = 0; else tag3 = -1; endif;
Logical Operators
Logical operators are used when combining conditional expressions. AND Logical AND Logical expressions involving AND evaluate to TRUE if both sides of the expression are TRUE. OR Logical OR Logical expressions involving OR evaluate to TRUE if either side of the expression is TRUE. NOT Logical Inversion Inverts the result of a logical expression.
Infilink assumes that any non-zero value is TRUE.
Examples: If (tag1 > tag2) OR (tag1 > tag3) then tag4 = tag1; endif; DiscreteTag1 = DiscreteTag2 AND DiscreteTag3; DiscreteTag1 = NOT (DiscreteTag2 AND DiscreteTag3);
Assignment Operator
To make an assignment to a tag or object property you would use the equals sign (=) as in: <tag name> = <expression> <window name>.<object name>.<object property> = <expression> When working with the assignment operator, <expression> can be a literal value, tag name, object property, or any combination of these that have compatible data types. Compatible simply means that all components of the expression must be either string or numeric. The target of the assignment determines the appropriate type.
Examples: # Assign the result of a numeric expression to a tag tag1 = tag2 + tag3; # Assign a numeric constant to a tag tag1 = 5; # Assign a logical constant to a discrete tag DiscreteTag1 = ON; # Assign a string literal to a string tag StringTag1 = This is a string; # Assign another tags value to a virtual tag virTags\virTag1.name="memTags\boolTag";
Arithmetic Operators
Arithmetic operators are used when constructing numeric expressions. The following operators are available:
The addition operator may also be used to concatenate strings. Division by zero evaluates to zero. % may be used with integer data types only.
+ * / %
Addition Subtraction Multiplication Division Modulo division. Returns the remainder from the division of two numbers.
Flow Control
IF-THEN-ELSE conditional construct. Syntax: If <relational expression> Then Statement 1; Statement 2; . Statement n; ElseIf <relational expression> Then Statement 1; Statement 2; . Statement n; Else Statement 1; Statement 2; . Statement n; EndIf; If a <relational expression> resolves to a logical TRUE the statements following the Then keyword are executed followed by a jump to the first statement following the EndIf keyword. If a <relational expression> resolves to a logical FALSE each successive ElseIf condition will be evaluated until a logical TRUE <relational expression> is found. If all ElseIf conditions are found to be FALSE, the Else section will execute if present otherwise execution will jump to the first statement following the EndIf keyword. You may include as many or as few ElseIf sections as are necessary to qualify the set of conditions you are scripting. You may omit the Else section if no default processing is required. While Loop Syntax: While <relational expression> Statement 1; Statement 2; . Statement n; EndWhile; A While Loop can only be used in a While Showing Window Script, While Running Project Script, or While Key Pressed Take Action Script. If the <relational expression> resolves to a logical FALSE, execution jumps to the first statement following the EndWhile keyword. If the <relational expression> resolves to a logical TRUE, the body of the loop will execute up to the EndWhile keyword and the script will be suspended until the next interval as specified in the Interval setting. When execution resumes, the <relational expression> is evaluated again and the process repeated.
Math Functions
Each of the following functions returns and expects arguments of the real data type. Sin (<angle in degrees>) Returns the trigonometric sine of <angle in degrees> Cos (<angle in degrees>) Returns the trigonometric cosine of <angle in degrees> Tan (<angle in degrees>) Returns the trigonometric tangent of <angle in degrees> Asin (<real>) Returns the inverse sine of <real> Acos (<real>) Returns the inverse cosine of <real> Atan (<real>) Returns the inverse tangent of <real> Sqrt (<real>) Returns the square root of <real> (returns zero if <real> is negative) Pow (<number>, <exponent>) Returns <number> raised to the power <exponent> Abs (<real>) Returns the absolute value of <real>
Examples: # Calc the hypotenuse of a right triangle from the lengths # of its other two sides. Hyp = sqrt ((s1 * s1) + (s2 * s2)); # Calc the angle between Hyp and S2 Angle = atan (s1 / s2);
String Functions
String functions operate on string expressions. You can specify a string expression by using a string literal or string tag or by concatenating string literals and string tags in any combination using the + operator.
A string literal can be up to 127 characters in length.
You create a string literal by enclosing the characters you wish to use in double quotation marks as in "This is a string." If you need to include the double quotation character () in the string you can precede it with a backslash character (\). If the literal must end with the backslash character because the string will represent a path name then you should add one additional backslash to prevent the closing quote from being included as part of the string. LTrim (<string expression>) Returns <string expression> with leading spaces removed. RTrim (<string expression>) Returns <string expression> with trailing spaces removed. Trim (<string expression>) Returns <string expression> with leading and trailing spaces removed. Str (<numeric expression>) Returns the string representation of <numeric expression> Val (<string expression>) Returns the numeric value of <string expression>. UCase (<string expression>) Returns <string expression> with all characters converted to upper case. LCase (<string expression>) Returns <string expression> with all characters converted to lower case. Chr (<numeric expression>) Returns a single character string consisting of the ASCII character indicated by <numeric expression>. Len (<string expression>) Returns the number of characters in <string expression>. Equal (<string expression1>, <string expression2>) Returns 1 if <string expression1> is equal to <string expression2>, 0 if not. Left (<string expression>, <num chars>) Returns the leftmost <num chars> characters from <string expression>. Right (<string expression>, <num chars>) Returns the rightmost <num chars> characters from <string expression>. Mid (<string expression>, <first char>, <num chars>) Returns the middle <num chars> characters from <string expression> starting at <first char>.
StrPathName (<string expression>) Returns the path portion of a file specification identified by <string expression>. If <string expression> were given as c:\path\file.ext the return would be c:\path\ StrFileName (<string expression>) Returns the file name portion of a file specification identified by <string expression>. If <string expression> were given as c:\path\file.ext the return would be file.ext Examples: # Simple string assignment StringTag = "My String"; # Assignment of a string containing embedded quotes QuotedStringTag = "This string needs \"quotes\""; # Assignment of a path to string tag (note the extra # backslash) PathStringTag = "c:\dir1\dir2\\"; # Convert a string to a number NumTag = Val (StringTag);
File Functions
The <tag name> passed to the following two functions may be used as <file name> when calling the file read/write functions described below. The tag name supplied must be a string type. FileGetWriteName (<tag name>) Displays a dialog box that allows the operator to select/enter a file specification and assign it to the string tag identified by <tag name>. The string tag will contain a complete file specification including drive, path and filename.
When a selection is made from this dialog, the path is remembered between uses.
FileGetReadName (<tag name>) Displays a dialog box that allows the operator to select/enter a file specification and assign it to the string tag identified by <tag name>. The string tag will contain a complete file specification including drive, path and filename. The difference between this function and FileGetWriteName() is that for this function the operator must choose an existing file.
When a selection is made from this dialog, the path is remembered between uses.
Notes: 1. The file name functions should only be called from a Take Action script (On button down or On button up). 2. The dialog box that is displayed by calling either of these functions will not be displayed until after the function returns. You should not include any statements following FileGetReadName() or FileGetWriteName() that depend on the file name that is to be selected. 3. You should only call these functions from an On button down or On button up Take Action script.
Each of the following functions returns a Large Integer value indicating the byte offset into the file where the operation completed. This return value may be used as the <offset> argument in subsequent calls to the file functions. If an error occurs, the function will return -1 and the system tag _FileOpStatus will contain a value indicating the type of error. FileWriteText (<file name>, <offset>, <string expression>, <length>) Writes <length> characters from <string expression> to the file specified by <file name> starting at byte offset <offset>. e.g. FileWriteText(PathTag, 5, StringTag, LengthTag); Writes StringTag data over existing file data beginning after character 5. If <offset> is given as -1, the characters will be appended to the file. e.g. FileWriteText(PathTag, -1, StringTag, LengthTag); Writes StringTag data to end of existing file data. If <offset> is given as -2, the specified file is completely erased prior to performing the write operation. e.g. FileWriteText(PathTag, -2, StringTag, LengthTag); File will contain only characters from StringTag If an <offset> is given that is past the end of the file, the space between the current file endpoint and the new characters will be padded with spaces. If <length> is given as -1, all characters in <string expression> will be written. No carriage return line feed is appended to the output text. If the text should be terminated with a CR-LF pair you can append +Chr(13)+Chr(10) to <string expression>.
Example: # The string parameters used within the FileWriteText # function can also be entered as literals such as: # FileWriteText #("C:\testfile.txt", -1, "String", Len("String)); PathTag = "C:\temp\testfile.txt"; StringTag = "New Message: " + plc_string + Chr(13) + Chr(10); LengthTag = Len (StringTag); FileWriteText (PathTag, -1, StringTag, LengthTag); if _FileOpStatus <> 0 Then Show "MyErrorWindow"; endif;
FileReadText (<file name>, <offset>, <string tag/object property>, <length>) Reads <length> characters from the file specified by <file name> starting at byte offset <offset> into <string tag/object property> If a read past end of file is attempted, the function will read as much data as it can and return -1. _FileOpStatus will be set to -4. If an <offset> is given that is negative or past the end of the file no action will occur. The tag or object property specified must have write permission and be a string type. Example: # The string parameters used within the FileReadText # function can also be entered as literals such as: # FileReadText("C:\temp\testfile.txt", 0, StringTag, 100); PathTag = "C:\temp\testfile.txt"; FileReadText(PathTag, 0, StringTag, 2000); if _FileOpStatus <> 0 And _FileOpStatus <> -4 Then Show "MyErrorWindow"; endif; FileWriteCSV (<file name>, <offset>, <tag name>, <number of tags>) Generates a record which consists of comma separated data fields from <number of tags> tags starting with <tag name>. <tag name> must be of the form "base name+numeric suffix" i.e. Tag43, DataVal20. <tag name> and <number of tags> must be literals. CSV data fields are limited to 250 characters each. The <offset> is the starting record where new data fields are written to the specified file. If <offset> is given as -1, output is appended to the specified file. If <offset> is given as -2, the specified file is erased prior to performing the write operation.
Example: # The file name parameter used within the FileWriteCSV # function can also be entered as a literal such as: # FileWriteCSV ("C:\temp\testrec.csv", -1, UserTag1, 10); # # # # # In order for this script to compile properly, your tag database would need to contain tags UserTag1, UserTag2,...,UserTag10. The values of these ten tags would then be written to the CSV output file.
PathTag = "C:\temp\testrec.csv"; FileWriteCSV(PathTag, -1, UserTag1, 10); if _FileOpStatus <> 0 Then Show "MyErrorWindow"; endif;
FileReadCSV (<file name>, <offset>, <tag name>, <number of tags>) Reads comma separated data from <file name> starting at <offset> record. The data is read into tags starting with <tag name> and progressing until <number of tags> fields are read. <tag name> must be of the form "base name+numeric suffix" i.e. Tag43, DataVal20. <tag name> and <number of tags> must be literals. The <offset> is the number of records into the file, each record may any number of data fields. Example: # The file name parameter used within the FileReadCSV # function can also be entered a literal such as: # FileReadCSV ("C:\temp\testrec.csv", 0, UserTag1, 10); # # # # # In order for this script to compile properly, your tag database would need to contain tags UserTag1, UserTag2,...,UserTag10. These ten tags would then be loaded with the data read from the CSV input file.
PathTag = "C:\temp\testrec.csv"; FileReadCSV(PathTag, 0, UserTag1, 10); if _FileOpStatus <> 0 Then Show "MyErrorWindow"; endif;
Sound Functions
The function that you will use to generate sound from a Infilink project depends on whether or not the target PC will have an installed sound card and speakers. Beep (<numeric expression>) Issues one or more beep to the PC speaker. If <numeric expression> is given then the result of that expression will determine the beep count, otherwise a single beep will be issued. No special audio hardware is required to use this function. PlaySound (<string expression>) Plays the sound specified by <string expression>. <string expression> can be a .WAV file specification or the name of a system sound as defined in WIN.INI. The size of a .WAV file specified to this function should be < 100 KB in length. This function requires a sound card. Example: # Sound an alarm when the fluid level exceeds our limit if (TankLevel > TankLimit) then TankInlet = OFF; PlaySound (WaveFilePath + "tanklim.wav"); endif;
Window Functions
The argument to each of the following functions is the name of a window (not the window title). In all cases <window name> must be quoted as in "Win001". Hide <window name> Makes a window invisible, but does not unload it from memory. Load <window name> Loads a window into memory, but does not make it visible. Move <window name> To <new left>, <new top> Changes the location of a window. Coordinates are relative to the upper left corner of the main application window. Move <window name> By <horizontal change>, <vertical change> Changes location of a window relative to its current location. Resize <window name> To <new width>, <new height> Changes the size of a window. Resize <window name> By <change in width>, <change in height> Changes size of a window relative to its current size. Show <window name> Makes a window visible. If the window is not already in memory, it will be loaded.
Unload <window name> Removes a window from memory. Examples: # Move this window to the right by 10 pixels (Because we # are operating from Take Action script assigned to a # button on the window we want to move we can use _ThisWin.) # Move _ThisWin by 10, 0; # Hide a window and show a different one Hide MainMenu; Show TrendView;
System Functions
All system functions have the following syntax: _SysCmd.<identifier> Supported identifiers are described below. If a command corresponds to a menu item, the item is given as <Menu>/<Item>. AboutBox Help/About... Displays the Run Mode About Box. AlarmLogStart Logger/Start alarm logger Turns on the Alarm Logger. AlarmLogStop Logger/Stop alarm logger Turns off the Alarm Logger. CloseWin File/Close windows... Displays a list of open windows that may be selectively closed. DataLogStart Logger/Start data logger Turns on the Data Logger. DataLogStop Logger/Stop data logger Turns off the Data Logger. DataLogPulse Logger/Pulse data logger Pulses the Data Logger, causing it to take a snap-shot of all tags that have the Log Data attribute set. DesignMode Project/Design mode Returns the project to Design Mode for editing. EventLog Windows/Show events Brings the Event Logger to the foreground. Exit Project/Exit Exits Infilink Run Mode. HideMenus Causes the menu bar at the top of the main window to be hidden, restricting access to the menu commands.
LogIn Users/Login... Displays the login dialog box. LogOut Users/Log out Logs the current user out of the system. A user must be logged in for this command to succeed. OpenWin Project/Open windows... Displays a list of unopened windows that may be selectively opened. ShowMenus Causes the menu bar at the top of the main window to be shown, allowing access to the menu commands. GroupConnect (<"group name">) Causes the specified OPC tag group to attempt to establish a connection with the server. GroupDisconnect (<"group name">) Causes the specified OPC tag group to break a connection with the server. GroupDisable (<"group name">) Causes the specified DDE tag group to stop communicating with the server. GroupEnable (<"group name">) Causes the specified DDE tag group to resume communications with the server. GroupReset (<"group name">) Causes the specified DDE tag group to break then re-establish a link with the server. Examples: # Initialize the display on start _SysCmd.HideMenus; _SysCmd.Login;
Miscellaneous Functions
Run (<string expression>) Evaluates <string expression> and attempts to launch a Windows application of that name. The return value will be TRUE if the application is launched and FALSE if not. PostMsg (<string expression>) Posts the result of string expression to the Event Logger window. This function can be used when debugging a script or to post messages about the result of an operation. Exit Stops executing the current script.
Exit Application and PulseDataLogger are provided for compatibility with previous versions of Infilink.
Exit Application (same as _SysCommand.Exit () ) Closes the project and exits Infilink Run Mode. PulseDataLogger (same as _SysCommand.DataLogPulse () ) Causes the data logger to take a snapshot of all tags that are being logged.
Scripts: The Final Word in Flexibility 120
Examples: # This example loads Microsoft Excel with a specific # spreadsheet and if successful, sends the values of tags # PlcTagPressure and PlcTagTemp to the spreadsheet by # assigning those values to tags that reference cells R1C1 # and R1C2 if Run ("excel.exe calc.xls") then ExcelTagR1C1 = PlcTagPressure; ExcelTagR1C2 = PlcTagTemp; endif; # Post a message to the event logger PostMsg (Tank filled by operator + _User);
Color Constants
All color constants have the following syntax : _SysColor.<identifier> Color Identifier Aqua Black Blue Fuchsia Green Gray or Grey Lime Maroon Navy Olive Purple Red Silver Teal White Yellow Red Value 0 0 0 255 0 128 0 128 0 128 128 255 192 0 255 255 Green Value 255 0 0 0 128 128 255 0 0 128 0 0 192 128 255 255 Blue Value 255 0 255 255 0 128 0 0 128 0 128 0 192 128 255 0
Object Properties
Access to the properties of an object requires the following syntax: <window name>.<object name>.<property name> When accessing an object from within a Window Script or Take Action Script and that object is on the same window that the script is being assigned to, <window name> may be substituted with the keyword _ThisWin. Example: # Change the fill color of an object to RED _ThisWin.Rect1.FillColor = _SysColor.RED;
General Object Properties Show Discrete Sets/returns the visible state of the object. TRUE = Visible, FALSE = Hidden. Name String Returns the name of the object assigned in Design Mode. LineColor Long Sets/returns the color used to draw the object border. LineStyle Integer Sets/returns the style of lines used to draw the object border. Values are as follows: 0 = solid, 1 = dashed, 2 = dotted, 3 = dash dot, 4 = dash dot dot. Nonsolid line styles are only applied if the LineWidth property is set to 0 or 1. LineWidth Integer Sets/returns the thickness of lines used to draw the object border. Values range from 0 to 7 where 7 is the thickest. FillColor Long Sets/returns the color used to draw the interior of filled objects. FillStyle Word Sets/returns the pattern style used to fill the interior of filled objects. Text String Sets/returns the text assigned to the object TextColor Long Sets/returns the color used to draw text.
The following table shows the accessible properties of each object Line Line Line Show Name Object Color* Width Style R/W R/W R/W R/W RO Line R/W R/W R/W R/W RO Rectangle R/W R/W R/W R/W RO Rounded Rectangle R/W R/W R/W R/W RO Ellipse N/A N/A N/A R/W RO Group N/A N/A N/A R/W RO Button R/W R/W R/W R/W RO Polyline R/W R/W R/W R/W RO Polygon R/W R/W R/W R/W RO Arc R/W R/W R/W R/W RO Pie R/W R/W R/W R/W RO Chord N/A N/A N/A R/W RO Bitmap N/A N/A N/A R/W RO Text N/A N/A N/A R/W RO Trend N/A N/A N/A R/W RO Alarm History Viewer N/A N/A N/A R/W RO Alarm
Fill Color* N/A R/W R/W R/W N/A R/W N/A R/W N/A R/W R/W N/A R/W N/A N/A N/A
Text N/A N/A N/A N/A N/A R/W N/A N/A N/A N/A N/A N/A R/W N/A N/A N/A
Text Color N/A N/A N/A N/A N/A R/W N/A N/A N/A N/A N/A N/A R/W N/A N/A N/A
RO = Read Only, R/W = Read/Write, N/A = Not available * Note: Colors are formed by combining 8 bit Red, Green and Blue intensity values into a 24 bit integer of the form: (Blue * 65536) + (Green * 256) + Red. You can also use one of the predefined color constants when assigning colors at run time. Arc, Pie and Chord Properties StartAngle Integer Sets/returns the angle in degrees between the horizontal centerline of the object and a line drawn from the center point to the point on the border at which drawing begins. EndAngle Integer Sets/returns the angle in degrees between the horizontal centerline of the object and a line drawn from the center point to the point on the border at which drawing ends. Clockwise Discrete Sets/returns the direction in which the object is drawn. TRUE = Clockwise from StartAngle, FALSE = Counterclockwise from StartAngle. Rounded Rectangle Properties CornerWidth Integer Sets/returns the width of the ellipse used to create the rounded corners. CornerHeight Integer Sets/returns the height of the ellipse used to create the rounded corners. Alarm Viewer Properties Severity Integer Sets/returns the severity of alarms that can be displayed in the alarm window. This property has a valid range of 0 to 9. Alarms of severity greater than or equal to this value will be displayed. AckAll Service Acknowledges all current alarms. ScrollUp, ScrollDown Service Scrolls the alarm display up/down by one line.
Copyright 2004 KEP, Inc. Scripts: The Final Word in Flexibility 123
ScrollLeft, ScrollRight Service Scrolls the alarm display left/right by one column. AlarmCount Integer Read only property that identifies the number of alarms displayed in the viewer. Alarm History Viewer Properties Filter Service Displays a dialog box that allows the operator to select filter settings for the viewer. ScrollLeft, ScrollRight Service Scrolls the alarm display left/right by one column. ScrollUp, ScrollDown Service Scrolls the alarm display up/down by one line. PageUp, PageDown Service Scrolls the alarm display up/down by the number of lines that may be viewed at one time. Home Service Positions the first available alarm at the top of the view. End Service Positions the last available alarm at the bottom of the view. AlarmCount Large Integer Read only property that identifies the number of alarms displayed in the window. StartDate, StartTime String Sets/returns the date/time used to determine the first alarm that will be shown by the viewer. The format used when reading input or generating output will be that defined under the [intl] section of the WIN.INI file. Refer to your Windows operating documentation for more information on how to change the format of these items. Print Service Sends the alarm history to the default Windows printer. Trend Properties Mode Discrete Sets/returns the operating mode of the trend where 0 = Real-time and 1 = Historical. TimeSpan Long Sets/returns the time span of a historical trend in seconds. The valid range of this property is from 0 to 2147483. DrawMode Integer Sets/returns the drawing mode for historical data where 0 = Scatter, 1 = Discrete and 2 = Smooth. Scatter plots data points only along the line of the graph. Discrete joins data points assuming the value is constant until the next data point (i.e. a stair step pattern). Smooth joins data points directly, this is the default mode used for trends. Even with this mode set, the graph can appear to be squared if data changes are abrupt.
Copyright 2004 KEP, Inc. Scripts: The Final Word in Flexibility 124
Redraw Service Refreshes the historical trend using the current trend properties. StartDate, StartTime String Sets/returns the start date/time used when displaying historical data. The format used when reading input or generating output will be that defined under the [intl] section of the WIN.INI file. Refer to your Windows operating documentation to change the format if these items.
See also: Logging Data
Path String Sets/returns the DOS path name used when obtaining historical data. It is initialized to the default data logger path when the object is created. MinRange, MaxRange Real Sets/returns the vertical range of data values displayed on a historical trend. Skip Long (Write only) Scrolls a historical trend forward or backward by the specified number of milliseconds. Assigning a positive value scrolls the trend forward in time, a negative value scrolls it backward. Typically you would use this property in a Take Action script assigned to a button. One button would use a script to assign a negative value when pressed and another would assign a positive value.
Overview
If you need help, the completed lessons may be found in the Infilink lessons directory. These lessons are provided to give you a reference of what a project should look like when completed.
In the last lesson, you learned some of the capabilities of Infilink as a graphical tool. You should now be familiar with: How to draw objects in a window. How to access and edit object properties. How to use the Short Cuts and Toolbars. How to create groups. How to reshape objects. In this lesson, you will create a simple process and animate it. As the previous lesson acquainted you with how to navigate in Infilink this lesson will provide an additional foundation for the lessons that follow.
Lesson Objectives
All lesson projects, although written to work with memory tags, will work with PLC's with minimal modification.
This lesson is designed to provide you with the basics needed to create a simple Infilink project that can be applied to a real-world situation. In this project you will learn: How to copy objects from the supplied Libraries. How to enter tags. How to create a Project Script. How to animate an object by associating a tag with it. You will reinforce editing skills learned in Lesson 1.
Creating a Project
You will start by creating a new project as you did in Lesson 1. For this lesson you will need to create a project called Lesson2. Assign properties to the default window as shown. (Name, Title, Type, Background Color)
Although in this lesson you are going to resize the window by the Click and Drag method, you can position and size a window using the dimension settings in the Window Properties Dialog.
menu or click on the Project tools toolbar. In the Library Manager Select Open from the File menu.
Find and open the System Library.kol Infilink library file. 2. Scroll down through the list of library groups until you find the library group named Pumps. Click on Pumps to display the pump objects.
3.
You can use the Library Manager Treebar to expand Library Group trees and find objects as well.
Move the mouse over each of the objects on the library window. You will notice that momentarily holding the mouse cursor over an object will display a description of that object. Use this method to find and select the object identified as Horizontal Pump - left shown below.
4. Once your have selected the object, drag and drop the pump to the upper half of the window and about one third of the way.
If the Library Manager is on top of the Window, you may have to move Library Manager out of the way.
Unchecking Always On Top in the Library Managers View menu will send the Library Manager to the background once the mouse leaves the Library Manger window during drag and drop.
5. Use the procedure from above to drag and drop object Tank 28 from library group Tanks1 into the project window as shown below.
6. Drag and drop object Control Valve - vertical from library group Valves into the project window.
7. Drag and drop object Long horizontal pipe from library group Pipes1 into the project window.
8. Drag and drop object Long vertical pipe from library group Pipes1 into the project window.
4. You will now resize the tank horizontally. Our goal is to stretch the flange on the outlet so that it is slightly larger than the vertical pipe. You can check this by dragging the pipe over next to the flange and comparing the ends. First, resize the Window larger so that it can hold the resized objects.
5. Next place the tank in the upper right corner of the window.
As an alternative to duplicating the section of pipe, you could make a copy of it and paste the copy into the project window.
3. Drag the duplicated pipe to the tank and place it as close to the flange as you can. If the pipe is not aligned properly use the arrow keys on the keyboard to move the object while it is still selected. When the grid is disabled the object will move one pixel width for each key click, otherwise it will move one grid width.
3. Resize the pump until its flanges and pipes are the proper size for the horizontal pipe. 4. Use the keyboard arrow keys to position the pump flanges against the horizontal pipe.
4. Resize the pipe by dragging its left side to the edge of the screen.
2. Drag the duplicated pipe to the tank and place it as close to the outlet flange as you can. 3. Use the keyboard arrow keys to align the pipe to the outlet flange and pipe.
3. Resize the valve until the pipe ends are close to the same size. 4. Use the keyboard cursor keys to align the valve to the bottom of the vertical pipe.
2. Use the keyboard arrow keys to align the pipe with the outlet flange of the valve. 3. Resize the pipe so that it goes to the bottom edge of the window.
You will be writing a script to simulate a level sensor in the tank. If this were a live project you would simply assign a PLC tag to the animation.
2. Draw a black filled rectangle above the outlet flange of the tank as shown below.
3. If the Rectangle is not black then click the Fill Color button and choose black from the color palette.
on the Toolbar
on the Toolbar. A second rectangle should 4. Click the Duplicate button appear below and to the right of the first. 5. Click the Fill Color button color palette. on the Toolbar and choose a light blue from the
6. Resize the rectangle until it is half the size of the black one.
7. Use the keyboard arrow keys to align the rectangle so that it covers the bottom half of the black rectangle.
8. While you have the rectangle selected, you are going to identify it as an important object. Press F4 to display the Rectangle Properties dialog box. 9. Enter "T1_level" in the Name field and click OK to close the dialog box.
It is a good idea to assign a name to an object that will be animated. The name will help you locate the object if you must edit the animation at a later time.
You are now going to create a tag that will be used to drive the animation for the fill level on the tank. You will only go over the steps necessary to build this tag. For details on creating tags see the chapter on Groups and Tags. In a live application that accesses data from a PLC, the tag that you create would be associated with a PLC register connected to a level sensor in the tank. As the tank level increases or decreases, the value in the PLC register would change and the indicator in Infilink would change in proportion. 1. Select the Tag Groups item from the Project menu or click the display the Tag Groups dialog box. 2. Click the Memory. tool to
tool to create a new Memory tag group. Name the tag group
New Tag enter 3. In the Tag Name field right click and select "Tank_level" for the tag name. 4. Choose a Data Type of Word and Security for Internal as Read/write. 5. Click the OK button to add the tag to the database.
button and select the "Tank_level" tag you created 4. Click on the earlier. 5. Click the Stretch from dropdown and select Right/bottom edge.
6. Click the Offset from initial size, Low position button line with the bottom edge of the rectangles.
7. Click the Offset from initial size, High position button and align the cursor line with the top of the black rectangle. 8. Change the Input value range High value to 1000. 9. Click OK to accept the animation and exit the Stretch Vertically dialog box. 10. Click Close to exit the Animations dialog box.
For a complete understanding of scripts and how to use them, See Scripting.
2. Select the Scripts tab. 3. There are 3 possible types of scripts at the project level: On project open, While project running and On project close. If the Script Editor did not open by default to While project running then select it now.
5.
button to verify that the script is correct. If it is, the 6. Click the message No errors. will appear at the bottom of the window.
This script will execute every 100 milliseconds. If the value of "Tank_level" is less than 1001 then it will be incremented by 1. If it is greater than or equal to 1001, the script will do nothing.
7. Click OK to close the Project Properties dialog box and accept the changes.
Now you need to save the project. 1. Select the Save item from the Project menu.
1. Click on the Project menu and select Exit. 2. The Run Mode is now closed.
Overview
If you need help, the completed lessons may be found in the Infilink lessons directory.
You have now learned: How to create a simple animation to monitor a process. How to copy objects from the object libraries. How to add a tag. How to write a simple script. In later lessons you will select and use some library objects that have animations already assigned to them. In this lesson, you will learn: How to create and animate buttons and text. How to create scripts that are more complex. How to control a process from Infilink. You will see that controlling a process is as easy as monitoring it was in the last lesson.
Lesson 3 Objectives
All lesson projects, although written to work with memory tags, will work with PLC's with minimal modification.
Lesson 3 is designed to advance your basic knowledge of creating Infilink applications by building upon Lesson 2. You will build upon the previous lesson by adding button controls for the valve and pump, text objects to display the fill rate, drain rate and tank level, and a slider control to vary the drain rate of the tank. In this lesson you will learn: . How to draw and animate buttons for use in a control environment. How to draw and animate text for use as data output and input. How to create your own slider controls. How to write a script that controls a process and performs some error checking.
Type Pump_on in the tag name field located to the left of the Select Discrete from the Data type drop-down list. Select Read/Write from the Security Internal drop-down list. Click the OK button to add the tag to the database.
7. 8. 9. 10.
As long as you click Add after making a change you can add new tags by modifying the previous one.
Click on to create a new tag. Type Valve_on in the tag name field. Select Discrete from the Data type drop-down list. Click the OK button to add the tag to the database.
Click on to create a new tag. Type Fill_rate in the tag name field. Select Word from the Data type drop-down list. Click the OK button.
Click on to create a new tag. Type Drain_rate in the tag name field. Select Word from the Data type drop-down list. Click the OK button.
1. Click the button on the Toolbar and draw a button in the project window next to the pump. 2. Display the properties dialog for the button and name it ctrlPump. 3. Click OK.
4. Press F5 to display the Animations dialog box for the button you just created.
You may double click a tag name to highlight and select it immediately.
6. In the Enter Data animation dialog box, click the button to open the tag list. 7. Click on the tag Pump_on to highlight it then click the Select button.
You may have noticed the drop down box for Entry Method. Discrete tags offer you 6 ways to enter or change their data. Popup - Displays a popup dialog box that allows the operator to make an on/off selection. Toggle TRUE/FALSE- The value of the assigned tag will be toggled from TRUE to FALSE or from FALSE to TRUE when the mouse button or assigned key is depressed. Force SET/TRUE - A one will be written to the tag whenever the animation is invoked. Force RESET/FALSE - A zero will be written to the tag whenever the animation is invoked. Momentary-NO - The value of the assigned tag will change to TRUE when the mouse button or assigned key is depressed and back to FALSE when released. Momentary-NC - The value of the assigned tag will change to FALSE when the mouse button or assigned key is depressed and back to TRUE when released.
10. Select Toggle from the Entry Method drop-down list. 11. Click OK to accept the animation.
Notice that you can assign short cut keys to this animation. Any animation that requires the operator to perform an action can be assigned a shortcut.
Access level can be used to control which operators have access to this animation.
13. In the Show Value animation dialog box, click the Tags button and select Pump_on. 14. Click on the Discrete radio button. 15. Notice that the Discrete format fields become active: one field to enter the text that should be displayed when the tags value is ON, and one for when the value is OFF.
16. Type "Pump On" in the ON text field and type Pump Off in the OFF text field. 17. Click OK to accept the animation. 18. Click the Change Color button on the Animations dialog box.
19. Select or type in the name of the Pump_on tag. 20. You will notice that there are two Ranges fields and color selection arrays, Border and Interior. Each has two dropdown lists boxes that allow you to select the number of colors for the object. Change both dropdowns to Discrete. 21. You will notice that the labels for the color selection boxes change to Off and On. These color selections will represent the objects color when the tag is ON or OFF. 22. Click on the Interior rectangle labeled ON and select a bright green. 23. Click on the Interior rectangle labeled OFF and select a bright red. 24. Click OK to accept the animation.
25. Click Close at the main Animations dialog to accept all the animations and exit.
Add a Text Object to Enter and Display the Pump Fill Rate
Next, you are going to add a text object that you will interface with the Fill_rate tag to show its value and provide a click point for data entry. 1. Click the button on the Toolbar and draw a text object immediately beneath the pump. 2. Display the properties dialog for the object and name it dspFillrt. The content of the Text field is not important because you will be assigning a Show Value animation to the object. 3. Click OK.
4. Click the Enter Data button in the Animations toolbar or use the Short Cut menu to display the Animations dialog for dspFillrt and click the Enter Data button there. 5. Assign the tag Fill_rate by selecting it from the tag list or typing in the name manually. 6. Click on the Output value range dropdown and select User defined. 7. Type "0" in the Low field and 10 in the High field. These values limit the range of numbers the operator can enter into the assigned tag. 8. Click OK to accept the animation.
9. Click the Show Value button in the Animation toolbar. 10. Assign the tag Fill_rate by either selecting it from the tag list or typing the name manually. 11. Check Field width and type "2" in the Field width text field. This format specifies that the output will have a maximum of two digits. Leaving Leading zeroes unchecked indicates that leading zeroes will not be displayed. 12. Click OK to accept the animation.
13. Click OK to accept all the animations and exit the Animations dialog box.
14. If the text object is no longer centered under the pump then either drag the object with the mouse or align it with the cursor keys until it is.
You are now going to build a slider that you will use to control the drain rate of the tank through the drain valve. You will create a Slider animation to set the value of tag Drain_rate. You will also create a Show Value animation to display the setting assigned to Drain_rate. 1. Click the button on the Toolbar and draw a rectangle in the lower left corner of the project window. 2. Use the button on the Fill Tools Toolbar to set the fill color to light gray.
You may want to enable the grid so you can measure distances using grid lines.
3. Click the button on the Toolbar and draw a line on top of the rectangle about a third of the height from the top. Place the line ends so that they are approximately a cursor width from either end of the rectangle. 4. Use the 5. Click the button on the Line Tolls Toolbar to set the line color to black. button to select a triple thick line.
6. Click the button on the Toolbar and draw a button centered over the left end point of the line. 7. Display the properties dialog for the button and name it sldDrain.
8.
With the button still selected click the Slider button Toolbar.
on the Animations
9.
Assign the tag Drain_rate by either selecting it from the tag list or typing the name manually.
10. Set the slide direction to Horizontal (This should be the default setting.) 11. Type "0" in the Low Tag value field and 10 in the High Tag value field. 12. Click the Related position selector buttons to graphically position the end points of the slider. You will want the low end to be at the left end of the line, and the high end to be at the right end of the line. 13. Click While sliding to allow the Slider to update the tag as you move it. 14. Click OK to accept the animation.
15. Click the button and draw a text object on the rectangle centered below the line. This object will be used to display the setting Drain_rate assigned by the slider. 16. Display the properties dialog for the button and name it dspDrain.
17. Assign a Show Value animation to the object that will display the Integer value of tag Drain_rate using Field width, 2. 18. If the text object is no longer centered below the line then drag it so that it is.
Duplicate the Slider Text Object and Modify It to Display the Tank Level
You are now going to make a duplicate of the text object on the slider and modify it so that you can display the value of tag Tank_level. 1. Select text object dspDrain and right click to Duplicate on the shortcut menu to make a copy of it. 2. Place the duplicated text object just above the tank over the fill indicator. 3. Click on the object with right mouse button to display the Short Cut menu and select Reassign Tags.
Reassign tags allows you to selectively replace one tag name for another in each animation and script assigned to an object.
4. When the Replace Tag dialog appears, change Drain_rate to Tank_level. 5. Click OK to complete the replacement. 6. Display the properties dialog for the object and change the name from dpsDrain1 to dspTnklvl. 7. Click the Show Value button in the Animation toolbar to edit the Show Value animation. 8. Type "4" in the Field width to replace the old width of "2". 9. If the text object is out of position, drag it so that it is in position. 10. Click OK to accept the animation.
Duplicate the Pump Control Button and Modify to use as a Valve Control
You are now going to perform the same process on the button that controls the pump to make a button to control the drain valve. 1. Select the pump control button, ctrlPump and duplicate it. 2. Display the Reassign Tag dialog and change the tag name from Pump_on to Valve_on. 3. Use the properties dialog to change the name of the object from ctrlPump1 to ctrlValve. 4. Edit the Show Value animation assigned to ctrlValve to display Unlocked when Valve_on is ON and Locked when Valve_on is OFF. 5. Your completed project window should appear as shown below.
The pound sign (#) is used in Infilink scripting to allow you to comment your scripts.
1. Click the Check button to verify that there were no typing errors. Fix any errors that may be indicated. 2. Click General tab and click the Use popup keypad for data entry startup option and the Create a project summary compile option. 3. Click OK to accept the script and new project options.
The popup keypad allows you to enter data using the mouse if the project will be run on a system that doesnt support a standard keyboard.
Create project summary causes Infilink to generate a report whenever you save the project. This report contains a detailed listing of every tag, window, and object. The report is stored in a file called COMPILE.TXT located in the project directory. You can use Notepad to view the contents of this file.
3. Once the project window has opened in run mode, click on the Fill Rate text beneath the pump. 4. On the popup keypad, click or type "5". 5. Click OK to accept the new value for Fill_rate.
6. The text object will now display 5. 7. Click on the pump control button above the pump. The button should turn green and the text should change from Pump Off to Pump On.
8. Once the tank level reaches 1000, the color of the pump control button should change to red. 9. Click on the slider button and drag it to the right until the text beneath it displays 8.
10. Click on the valve control button to unlock the valve. 11. The valve should drain the tank in increments of 8. Move the slider and watch this value change. 12. When you are done, select Exit from the Project menu. If you want to make changes select Design Mode.
Overview
This section covers alarm and data logger setup, assigning alarm information to a tag, alarm viewer properties and setup of the alarm printer.
The Project Properties Alarm Logger tab allows you to specify the destination and control the scheduling of alarm log file activity.
Basic Settings
See Lesson4
Logging Only alarms with the Log attribute enabled will be recorded. You can control whether or not the alarm logger should start automatically when the project starts by using the Start logger when project starts option. Directory The Default option saves alarm log files to a directory called ALARMLOG that is appended to the project directory. For example, if your project directory is c:\Infilink\projects\process1 then Infilink will store the alarm log files to c:\Infilink\projects\process1\alarmlog. Infilink will create this directory if it does not already exist. The User specified option allows you to control where logged data will be recorded. You must enter a fully qualified DOS path name consisting of 256 characters or less. Whatever you type here will then have the name ALARMLOG appended to it. If the directory you specify doesn't exist Infilink will create it. To specify a network directory, you must first map the network resource to a logical drive. The naming convention of each log file stored in the chosen directory is YYMMDDHH.ALF. Where YY is the year, MM is the month, DD is the day and HH is the hour when the data in the file begins. If you choose to also generate DBF files you will see files of the same base name but with a .LOG extension.
Preferences
Generate DBF output files Check this option to generate a copy of your logged alarms in DBF format. Many Windows applications recognize this portable format. Generate MDB output files Check this option to generate a copy of your logged alarm data in MDB format. This is the Data Object format used by Microsoft Access and similar programs. Note: Support for Data Objects must be installed on the PC to use the MDB option. See: Installing DAO Buffer size The number you specify here will determine how many records the alarm logger will buffer before performing a disk write. Max holding period The number you specify here will determine how long the alarm logger should hold on to unwritten data waiting for the buffer size number of records to be available. Req. disk space The number you specify here will determine how much disk space must be available for the alarm logger to run. If the amount of free disk space falls below this value while the alarm logger is running, it will stop and post a message to the Event Logger. If the disk space is below this value when Infilink Run Mode is launched, the alarm logger simply will not start. Each alarm log record consumes approximately 100 bytes of disk space. If you are also generating DBF output then this number increases to approximately 300 bytes.
Defining Alarms
One or more alarms can be assigned to a tag from the Tag Group Properties dialog. Select the desired tag and click on one of the Alarm tabs to display the alarm parameters. Level Alarms Level alarms are used to trigger an event when the value of a tag exceeds or goes below an assigned limit.
Comment Text Enter text to describe the alarm. This text will be displayed in the comment column when the alarm is shown in an alarm viewer or an Alarm History Viewer window object. High/Low Alarms
Lo, LoLo
An alarm is triggered for this tag when the value falls below these values. A separate alarm is issued for each case.
Hi, HiHi
An alarm is triggered for this tag when the value rises above these values. A separate alarm is issued for each case.
Deviation Alarms Allows two alarms, minor and major to be defined using percentages of the specified target value to trigger the alarms.
Discrete Alarms For tags defined with the discrete (Boolean) data type, you can specify whether you want an alarm condition to occur when the value is TRUE (1) or FALSE (0) by checking the appropriate box.
Severity All Alarms can be assigned a severity level in the range 0 to 15. The severity level of an alarm determines which alarm window(s) in your project will display the alarm. The default severity is 5.
Access Level Assign an Access level 0 to 255. Only users who are logged in with access levels greater than or equal to the alarm access level can acknowledge the alarm in Run Mode. The default Access level is 0. Actions
Display
Alarm events will be displayed in any active alarm viewer that has a severity level set equal to the severity of this alarm. Events that will cause the display to update are transition from inactive to active, change in value while active, and transition from active to inactive. Acknowledged alarms are deleted from all views upon transition from active to inactive.
Log
Alarm events will be logged to disk and accessible to any active alarm history viewer. Events that will be logged are transition from inactive to active, user acknowledge, and transition from active to inactive.
Print
Alarm events will be sent to the local alarms printer on each transition from inactive to active, user acknowledge and transition from active to inactive. See Setup Alarm Printer later in this section for more information. E Mail When Internet access is enabled, alarm notification is sent via E Mail to the address specified in the Project Properties Internet Tab. Scripts Alarm Scripts are for those functions and operations that you want to perform when an alarm condition is active. You might use an Alarm Script to sound an alarm when a tag exceeds a certain value. The script may take place at any to all of the possible times. On active transition Actions that you want to perform when the alarm occurs could be taken care of with a On active transition script. This type of script executes once when the alarm initially occurs. You might use a On active transition script to trigger an annunciator or show a diagnostic window. While active Periodic operations while an alarm condition exists can be performed with a While active script. While active scripts execute on a user defined Interval anywhere between 100 and 99999 ms. On acknowledge Periodic operations after an alarm is acknowledged can be performed with an On acknowledge script. On acknowledge scripts execute once when the alarm is acknowledged. Acknowledging an alarm does not stop any While active scripts from executing. On inactive transition Any alarm housekeeping that you need to perform can be done in an On inactive transition script.
Name The name that you will use to refer to this viewer when using script commands. X, Y Pos Sets the location of the upper left corner of the object to the specified coordinates. These coordinates are relative to the upper left corner of the window where the object resides. Width Adjusts the horizontal size of the bounding rectangle. Height Adjusts the vertical size of the bounding rectangle.
Text Tab
Alarm Text Colors Text colors may be used to select the color of the column headings and to indicate individual alarm status. When an alarm is triggered, it will appear in the alarm viewer with the text color chosen as Active alarm. Double-clicking the alarm will cause it to change to the Active and acknowledged color. If it is not acknowledged and the tag state that caused the alarm no longer exists, the alarm will change to the Inactive alarm color. Acknowledged alarms disappear when no longer active.
Severities Tab
Minimum Severity Level A number between 0 and 15. The viewer will display alarms with severity greater than or equal to the value specified here. The default is 0.
Other Tab
Sort on: Select from the dropdown: Date/Time, Tag Name, Event type, Alarm type, or Severity heading to sort the listed alarms based on that column. Additionally select to sort in Ascending or Descending order.
Allow acknowledge on double click Check this item to allow alarms to be acknowledged at run time by double clicking on the displayed alarm text.
See Scripting for more information.
Minimum Access Level for Acknowledgment A number between 0 and 255. Users with access level greater than or equal to this number may acknowledge alarms displayed by this window. Alarms may be acknowledged by either clicking, as described above, or invoking the AckAll viewer property from a script.
See Lesson4 for directions on how to use the Alarm History Viewer.
Name The name that you will use to refer to this viewer when using script commands. X, Y Pos Sets the location of the upper left corner of the object to the specified coordinates. These coordinates are relative to the upper left corner of the window where the object resides. Width Adjusts the horizontal size of the bounding rectangle. Height Adjusts the vertical size of the bounding rectangle.
Text Tab
Alarm Text Colors Text colors may be used to select the color of the column headings and to indicate individual alarm status. When an alarm is triggered, it will appear in the alarm viewer with the text color chosen as Active alarm. Double-clicking the alarm will cause it to change to the Active and acknowledged color. If it is not acknowledged and the tag state that caused the alarm no longer exists, the alarm will change to the Inactive alarm color. Acknowledged alarms disappear when no longer active.
Send Output To
Local Printer Check this box to direct alarm output to a local printer specified by the drop-down list. Valid selections are LPT1 through LPT3. Lines per page Specify the number of alarms you would like printed on each page. Once the number of lines is reached, a form feed is sent to the printer. Text file Check this box to direct alarm output to a text file. You specify the file by typing the name into the supplied edit control. When this option is selected, the contents of the file will be reset at project start up. Event Logger Check this box to direct alarm output to the Event Logger window.
See Lesson4 for directions on using the reshape method.
Sample Format
Configure the output format using the reshape method described for an alarm viewer. Available columns are: Date, Time, User, Type, Severity, Event, Tag Name, Value at Event, Comment.
The Setup Data Logger dialog box allows you to specify the destination and control the scheduling of data log file activity.
Basic Settings
Default This option saves log files to a directory called DATALOG that is appended to the project directory. For example, if your project directory is c:\Infilink\projects\process1 then Infilink will store the database files to c:\Infilink\projects\process1\datalog. Infilink will create this directory if it does not already exist.
See Nodes and Tags. See Lesson5 for direction on viewing logged data in a historical trend.
User specified This option allows you to control where logged data will be recorded. You must enter a fully qualified path name consisting of 256 characters or less. Whatever you type here will then have the name DATALOG appended to it. If the directory you specify doesn't exist, Infilink will create it. To specify a network directory, you must first map the network resource to a logical drive. The naming convention of each log file stored in the chosen directory is YYMMDDHH.DLF. Where YY is the year, MM is the month, DD is the day and HH is the hour when the data in the file begins. If you choose to also generate DBF files you will see files of the same base name but with a .LOG extension.
Preferences
Generate DBF output files Check this option to generate a copy of your logged data in DBF format. Many Windows applications recognize this portable format. Generate MDB output files Check this option to generate a copy of your logged data in MDB format. This is the Data Object format used by Microsoft Access and similar programs. Note: Support for Data Objects must be installed on the PC to use the MDB option. See: Installing DAO Buffer size The number you specify here will determine how many records the data logger will buffer before performing a disk write. Max holding period The number you specify here will determine how long the data logger should hold on to unwritten data waiting for the Buffer size number of records to be available. Req. disk space The number you specify here will determine how much disk space must be available for the data logger to run. If the amount of free disk space falls below this value while the data logger is running, it will stop and post a message to the Event Logger. If the disk space is below this value when Infilink Run Mode is launched, the data logger simply will not start. Each log record consumes approximately 40 bytes of disk space. If you are also generating DBF output then this number increases to approximately 130 bytes.
Overview
If you need help, the completed Infilink lesson 4 may be found in the Infilink lessons directory. These lessons are designed to run without the use of a PLC.
Alarms are used to inform the operator that something important has happened in a process that Infilink is monitoring. You can define High/Low and Deviation type alarms for analog values and On/Off alarms for discrete values. When an alarm event is detected for a particular tag, the details of the event can be displayed in an alarm viewer, sent to a local printer, and logged to disk. In this Lesson you will see how to define and view alarm events using Infilink. In Lesson 4, you will learn how to: 1. Draw an Alarm Viewer and add control buttons. 2. Draw an Alarm History Viewer, add control buttons, and enable alarm logging. 3. Define alarms for analog and discrete tags. 4. Create sliders and a button to generate alarms. 5. Display the active alarm count using a Show Value animation. 6. Run a project and manipulate real time and historical alarms.
Lesson Objectives
This lesson will guide you through the utilization of Alarms and Alarm Logging in a Infilink project. In this lesson you will learn: 1. How to design Alarm and Alarm History Displays. 2. How to add control buttons to interface with Alarm and Alarm History Displays. 3. How to enable alarm logging. 4. How to define High/Low, Deviation, and Discrete alarms. 5. How to add previously drawn objects from Infilink libraries to your project. 6. How to manipulate alarms at Runtime. This lesson is intended for intermediate users of Infilink.
4. To modify column widths select Reshape from the Short Cut Menu. Reshape mode can also be invoked from the Infilink Main Menu by selecting Edit then
Reshape, or from the Toolbox by selecting the Reshape tool
5.
6. When in Reshape mode the alarm viewer will appear in a black and white format as seen above. To make changes to column widths, use the mouse to drag the appropriate column divider lines to the left or right. Other column editing options are available from the Short Cut Menu. To view these options place the cursor in the column that you would like to edit, right click, then choose the appropriate option from the menu as shown below.
7. To return from Reshape mode you can double click the mouse or press the Esc key.
4. After you have finished placing in all of the control buttons, minimize the Library Manager window.
3. Next use the Reshape mode to adjust the column format of the Alarm History Viewer. Delete the User and Severity columns and move other columns such that the Alarm History Viewer is formatted as shown below.
4. After you have finished placing in all of the control buttons, minimize the Library Manager.
2. In the Buffer size: text field enter 5, and in the Max holding period: text field enter 1. Accept the defaults for the remaining alarm logger setup properties and click OK.
2. In the Tag Groups dialog box click on named Memory. 3. Click below.
to enter a new tag. Set the tag properties of the first tag as shown
4. Click the Level Alarm tab. Set the alarm properties as shown below.
7. Click OK
Copyright 2004 KEP, Inc. Lesson 4: Alarms and Alarm Logging 196
8. The HighLowTag Attributes column now includes an A indicating that an alarm is assigned to the tag.
11. Click the Deviation Alarms tab. 12. Set the alarm properties of the second tag as shown below.
13. Click OK 14. Add the third tag with the properties shown below.
15. Click the Discrete Alarm tab. 16. Set the alarm properties of the third tag as shown below.
17. Click OK then click Close to close the Tag Groups dialog.
7. Alarms displayed in the Alarm Viewer can be sorted according to Date, Time, Alarm Type, and Tag Name. To sort alarms, position the cursor on one of these Column Headings and click the left mouse once. To reverse the sort order, click again.
8. Alarms displayed in the Alarm Viewer can be Acknowledged one at a time by using the left mouse to double click on individual alarm rows. Or, they can be Acknowledged all at once using the Alarm Viewer object's AckAll service that can be attached to a button or used in a script. 9. Alarms will be logged to disk and viewable in the Alarm History Viewer, according to the Buffer Size and Max Holding Period that were assigned when you enabled the Alarm Logger in the design portion of this lesson. In our example, the alarm log is updated after every five alarm events, or after one minute has elapsed, whichever comes first. For more information on setting up the alarm logger, consult the Infilink help file. 10. The Scrolling, Paging, Home, and End buttons use At Key Down and While Key Pressed animations to invoke Service type object properties of the associated Alarm Viewer or Alarm History Viewer object. See Object Properties in the Infilink help file.
11. The History Filter button allows you to filter out logged alarms that you do not wish to see in the Alarm History Viewer window. Only alarms that meet criteria checked in the Alarm Log Filtering dialog box will be shown.
1. Click on the Project menu, then click Exit. 2. The project is now closed. The Event Logger window is still open. 3. To close the Event Logger, select the Event Loggers File menu and click Exit.
Overview
If you need help, the completed Infilink lesson 5 may be found in the Infilink lessons directory.
These lessons are provided to give you a reference of what a project should look like when completed.
When monitoring process values it is often important to log a history of those values over a period as well as display a portion of the logged data on the screen. Infilink allows you to store the logged data to a file contained in the project directory as well as display real-time and historical data on the screen. In this lesson, you will: Draw a trend object and edit its properties. Toggle a trend between real-time and historical mode. View historical data in scatter, discrete and smooth modes. Scroll through historical data. Increase or decrease the range of the value scale. Create a sliding cursor that will display values chosen graphically from a trend.
Lesson Objectives
Lesson 5 will guide you through the design and utilization of Real Time and Historical trends. In this lesson you will learn: Some basic properties of trends. How to toggle between Real Time and Historical trend data. How to scroll historical data. How to change between historical data modes. How to modify trend value scales. How to determine a pen value at any point on a historical trend. This lesson is intended for intermediate users of Infilink.
Defining Tags
You will need to define four tags for this lesson. These tags will allow you to produce data for a real-time and a historical trend. They will also allow you to display data values as the historical trend is scrolled. 1. Click on the from the Toolbar. to create a
2. In the Tag Groups dialog box click on the Memory Group tool memory tag group named Memory.
3. Click to enter a new tag. In the Name field enter PenData for a tag name. Using the provided drop down list, choose a Data type of Real and an Internal Security of Read/Write. Since you will want to view historical data on this tag, click on the Log on data change selection for this tag. Accept the default values for the other fields. 4. Click OK to add the tag to the Memory tag group. 5. Click . Enter Cursor for a tag name, Long for the Data Type and Read/write for the Internal Security. Click OK. 6. Click . Enter Increment for a tag name, Discrete for the Data Type and Read/write for the Internal Security. Click OK. 7. Click . Enter Value for a tag name, Real for the Data Type and Read/write for the Internal Security. Click OK. 8. Press Close to exit the Tag Groups dialog.
While in Design Mode you can return to the Trend Property dialog at any time by right clicking your mouse on the trend object and selecting Properties.
5. Click on the Time Axis tab. Change the Time span to 8 Seconds. 6. Change the Refresh Rate to 250 Milliseconds. 7. Change the Major grid lines to 3.
If the Enable Historical Display box is not checked, you will not be able to switch to Historical Mode when running the project.
and select "PenData". 11. Click the OK button to exit the Pen Properties dialog box. 12. Click OK to exit the Trend Viewer Properties dialog box.
Here you will create buttons to toggle between Real Time and Historical Trend Modes, increment and decrement the Trend Value Scale, change the Historical Draw Mode, and Scroll through historical data. 1. From the Infilink Main Menu, select Draw, then select Button or click the button on the Toolbar. 2. Draw a Button. 3. Right click on the button and select Properties. 4. In the Button Properties dialog type Mode for the Name and Historical for the button Text. The button text may not be displayed if the button is to narrow. If this occurs, simply widen the button. 5. Either repeat the above steps for the remaining buttons or use the duplicate function to make copies of this button. Change the names and text of the copies to match those below. Name: Name: Name: Name: Name: Name: Name: YRangeInc YRangeDec Smooth Scatter Discrete SkipInc SkipDec Text +Y Range Text: -Y Range Text: Smooth Text: Scatter Text: Discrete Text: +10 Sec Text: -10 Sec.
6. Arrange the buttons by dragging each one to a new location. Place the buttons as shown below.
You can also click on the Fill button on the Fill tools toolbar.
The Cursor position represents the time in milliseconds relative to the start time of the trend. The starting position for a trend is the right hand side. It scrolls from the right to the left.
2. Click . For the Tag select Memory\Cursor. 3. Set the Low value to 0. Set the High value to 7999. This is the range in milliseconds that will be available on the trend at all times. Recall that you set the Trend Time Span to 8 seconds (8000 msec.). 4. Now you need to set the Related positions. Click the Low Related Position cursor . A cursor will appear on the screen. Center this cursor over the right edge of the trend window and click the mouse button. 5. Now click the High Related Position cursor and center the cursor over the left edge of the trend. Again click the mouse button to return to the animations dialog box. 6. Click OK to accept the slider animation.
In place of the window name you can use _ThisWin to refer to an object on the current window.
If you are viewing this document online, simply cut this script out and paste it into the script window. This script also shows how the text on a button can be changed on the fly.
5. Click the Verify button to make sure there are no errors in the script. 6. Click OK to accept the animation.
The YRangeInc Button is the one we assigned the text +Y Range to earlier.
The YRangeDec Button is the one we assigned the text -Y Range to earlier.
If (PenData >= 30) Then Increment = 0; ElseIf (PenData <= -30) Then Increment = 1; Endif; If (Increment) Then PenData = PenData + 2.5; Else PenData = PenData 2.5; Endif; # When in Historical mode, load the historical trend's # cursor position with the position of the marker and # retrieve the value of the data at that position. If (Trend_Lesson.Trend1.Mode) Then Trend_Lesson.Trend1.Cursor = Cursor; Value = Trend_Lesson.Trend1.PenValue; Endif; Click the Verify button to make sure there are no errors in the script. If it is,
6.
No errors will appear at the bottom of the window. 7. Press OK to exit the Project Properties dialog box.
4. Because the default value span was set to 25 to 25, some data will be out of range and will not displayed on the trend. You can correct this by pressing the +Y Range button that you created. Click the +Y Range button and notice the value span increases to 35 to 35. The PenData waveform should now be in complete view on the trend.
Changing the Y value range in the Real Time trend does not change it in the Historical Mode. When you switch to Historical Mode you will have to increase the range again to be able to see all of the data.
5. Wait for a minute to pass, then click the "Historical" button. The historical data will load to the trend window. 6. Click the +10 Sec. Button to scroll 10 seconds forward. The historical data will now come in to view. You can continue to scroll forward in time. At any time you wish to return click -10 Sec. to scroll backward in time.
Trend is in Discrete draw mode. Notice that dspValue is displaying the value of the data beneath the marker.
The draw mode functions (Scatter, Discrete, and Smooth) are only available while a trend object is in historical mode.
7. You can click on the "Scatter", "Discrete", or "Smooth" buttons to change the draw mode of the trend. Scatter will plot individual points only. Discrete plots the points in a squared line, assuming that data is constant until the next data change. Smooth moves the pen in a straight line between points. The figure above and the two that follow show identical data in scatter, discrete, and smooth draw modes. 8. Drag the Marker Cursor that you created. Notice that the value display changes as the marker intersects a data change. 9. You can return to real-time mode by pressing the "Real Time" button.
ActiveX Controls
Overview
Most ActiveX controls are not compatible with Infilink.
Infilink is an ActiveX container. ActiveX controls are independent objects that can be placed into an Infilink Project. These controls come in many varieties. Infilink is designed to handle ActiveX controls with OPC connectivity. In particular, we have tested for compatibility ioCompTM ActiveX controls. These controls are included in the Infilink setup software. ActiveX controls from other vendors have not been verified for operation.
Select the controls to include in your project by checking the box in front of the controls name. Note: Up to 24 ActiveX components may be assigned to a project. Once all the desired controls are selected click OK. The selected controls appear on the tool bar as an icon. Place a control by clicking on its icon and dragging a rectangle in the project window. Access the controls properties by right clicking on the shaded border and selecting Properties from the pop-up shortcut menu. Refer to the help provided with the ActiveX control for further information about the controls properties.
Scheduler
Overview
This section describes how to use the Scheduler to manage tag operations by time and date. The Scheduler allows you to specify a particular time and date a tag is to be modified. There are also features to set tags to be changed on a weekly basis at specified times. Such events are useful for daily or weekly startup and shutdown of equipment, building controls and regularly scheduled maintenance.
Scheduler 223
Introduction
Use the Scheduler to program in actions to occur at desired dates and times or on a regular basis. Use Action groups to make several actions occur at the same time. As actions and times are programmed, they are displayed in list boxes throughout Scheduler. Use Single and Double events to make actions occur on a given date and time. Use Weekly Schedule to make actions occur on a daily basis every week. Use the Holiday settings to override the weekly schedule.
Scheduler 224
Holidays
Use the Holidays dialog box to specify holidays. Holidays cause the Weekly Schedule events to be ignored.
Yearly Add Use this to add a holiday that occurs every year to the list of holidays. For example: January 1st is always a holiday. Holiday Others Add Use this command to enter Holidays that may vary from year to year. For example: Thanksgiving (USA) changes with each passing year. How to define a Holiday 1. Use the calendar scrolling features to get to the dates you need to specify as holidays. 2. As you click on dates, a popup dialog prompts you for a label for the holiday.
3. Enter the label and click OK. The holiday will automatically be listed in the appropriate holiday list box. 4. Continue clicking on dates and assigning labels. 5. Click Done after all desired dates are selected.
Copyright 2004 KEP, Inc. Scheduler 225
Action Groups
Use the Action groups dialog box to create groups of actions. This way, instead of specifying a tag to be changed at a particular time and date you can specify the group of actions to occur at that time. The dates and times that these actions occur are specified in the Single Event, Double Event and Weekly Schedule dialog boxes.
Scheduler 226
2. When the Action Group Dialog pops up enter a name for the group. Group names may be up to 20 characters long.
3. Click on to enter a new Single or Double Action. See following pages entering these actions. 4. Continue to click on New to add more actions, Edit to modify actions highlighted in the list box or Delete to remove the highlighted action from the list box. 5. Click OK when you are done creating the group.
Scheduler 227
1. Enter the Tag to modify. If you do not know the tag name, click on the button to browse for the Tag to modify. 2. Select the type of action to perform on this tag. On/Off forces a 1 or 0 into a tag. Force Value forces a constant into a tag. Modify Value to changes the tags value by a percentage. The percentage is always a positive whole number. 3. Click OK when done
Scheduler 228
Entering a New Double Action This dialog box is used to define what an action does. Because a double action is a duration, two actions need to be specified, a start action and an end action
1. Enter the Tag to modify. If you do not know the tag name, click on the button to browse for the Tag to modify. 2. Select the type of action to perform on this tag when the action is called. On/Off forces a 1 or 0 into a tag. Force Value forces a constant into a tag. Modify Value to changes the tags value by a percentage. The percentage is always a positive whole number. 3. Select the type of action to perform on this tag when the action period is ended. Check the Restore value box to put the tags previous value (before the start action) back into the tag. On/Off forces a 1 or 0 into the tag. Force Value forces another constant into the tag. Modify Value to changes the tags value by another percentage. 4. Click OK when done
Scheduler 229
Events
Use Events to specify when a tag or action group is to be changed. The dates and times that these actions occur are specified in the Single Event, Double Event and Weekly Schedule dialog boxes.
2. When the Single Event Dialog box pops up enter a name for the Event. Event names may be up to 20 characters long 3. Check the Disable execution if you want to suspend this event from happening. Typically this is used in Run Mode to stop an event from happening because it could cause a problem or is no longer necessary.
Scheduler 230
4. Specify the Date and Time that the action is to take place. 5. Select the Action to perform. New Single Tag A single action is defined to occur at the Date and Time specified. New Action Group An Action group is selected. This means that all actions specified in the group will happen at the Date and Time. 6. Use the Edit and Delete buttons to modify the list. 7. Click OK when done creating the single event.
4. When the Double Event Dialog box pops up enter a name for the Event. Event names may be up to 20 characters long 5. Check the Disable execution if you want to suspend this event from happening. Typically, this is used in Run Mode to stop an event from happening because it could cause a problem or is no longer necessary.
Scheduler 231
4. Specify the Date and Time that the action is to take place (Start) and when the action is to cease (End). 5. Select the Action to perform. New Single Tag A double action is defined to occur for the duration specified. New Action Group An Action group is selected. This means that all single actions specified in the group will happen at the Start time and double actions in the group will continue to the End time.Use the Edit and Delete buttons to modify the list. 6. Click OK when done creating the single event.
2. When the Weekly Schedule Dialog box pops up enter a name for the Event. Event names may be up to 20 characters long. 3. Check the Disable execution if you want to suspend this event from happening. Typically, this is used in Run Mode to stop an event from happening because it could cause a problem or is no longer necessary.
Scheduler 232
4. Specify the Dates that this weekly schedule is to be in effect. Check the Forever box to always have this weekly schedule active. 5. Click the Add button to bring up the Schedule dialog box. Select the days of the week and times for actions to occur. Repeat this action until all days and times are entered. 6. Select the Actions to perform during the times in the Schedule list. New Single Tag A single action is defined to occur at the scheduled Days and Times specified. New Action Group An Action group is selected. This means that all actions in the group will happen on the Days and Times of the weekly schedule. Use the Edit and Delete buttons to modify the list. 7. Click OK when done creating the single event.
Scheduler 233
Preferences
Use preferences to change overall operation of the Scheduler.
Because the scheduler is available at run time for review Access can be restricted to prevent unauthorized access and changes. Minimum user level to access scheduler at run time Enter the user level required to access Scheduler once in the Run Mode. Allow run mode editing. Select to allow editing of Scheduler settings. Execute events and schedules on defined second. Scheduler tracks events accurately up to the minute. The scheduler can be made to operate on a per second track if desired. Minimum and Maximum Dates Displays the minimum and maximum dates allowed for use with Scheduler. These dates are fixed and cannot be changed.
Scheduler 234
Overview
This section describes how to use Infilink in a client/server configuration with DDE.
About OPC (OLE for Process Control) and DDE (Dynamic Data Exchange)
Object Linking and Embedding (OLE) for Process Control (OPC) and Dynamic Data Exchange (DDE) allows Infilink to operate in a client/server relationship with other Windows applications. Any application that supports OPC or DDE can be a client to Infilink, in that it can access data from Infilink's tag database, and a server that provides data to Infilink through a link that has been defined by an OPC or DDE tag group. OPC Link Specifications
The general format of a local OPC link specification is: <Application>|<Channel Name>.<Device Name>!<Item> <Application> is the name used to identify the server application. <Channel Name>.<Device Name> is the path to the data set that will be referenced. <Item> is the individual piece of data that is requested. Access to Networked machine data is similar to DDE Link Specifications given below.
A Network DDE link specification takes the form: \\<Computer Name>\ndde$|<Share Name>!<Item> <Computer Name> is the name of the network PC where the DDE server application is located. <Share Name> is a registered DDE share name identifying the application and topic. <Item> is the individual piece of data that is requested. This format is used when the client and the server reside on different PCs connected to the same network.
To use Infilink as a client to a local server (one on the same PC) you will first need to: 1. Create a DDE Tag Group 2. Identify the server 3. Specify the topic 4. Define one or more tags that will be assigned to that tag group. Each tag will identify the item portion of the DDE link in its address field. The item refers to the data that the server should provide. Although any DDE enabled Windows application can be a server to Infilink, let's use KEPServerEX as an example (formerly KEPDDE). Assume you need to get the data from address 40001 of a Modbus device and assign it to a tag called "RegData". You would first create a project in KEPServerEX that identifies the channel as COM1 and device as something like "Modbus1". (Refer to the KEPServerEX online documentation for details.) Next you will define a Infilink DDE Tag Group with KEPDDE as the Server name and _ddedata.COM1.Modbus1 as the topic. Finally, create a tag called RegData with address 40001. Now when you place the server on line and run your Infilink project, the value of "RegData" will be updated every time register 40001 of the Modbus device changes.
Although KEPware's DDE server is now called KEPServerEX, the application name is still KEPDDE.EXE and should be used as the application name in DDE links.
Using the same example from above let's assume that the KEPServerEX will be running on a computer named NETPC. You will define an Infilink node with \\NETPC\ndde$ as the application and _ddedata.COM1.Modbus1$ as the topic. Finally, create a tag called RegData with address 40001 and assign it to this node.
Notes 1. KEPServerEX is a 32-bit application. It must be run on either Windows 95/98,
Windows NT or Windows 2000. 2. A link to a DDE server item will be started and remain active only as long as some
demand is made on the data provided by that link. See The PROJECT.INI File [tuning] section in the Infilink help file for further information.
Tag Addresses
To address spreadsheet locations on sheet1 assign addresses of the form r#c# where the #'s would be replaced by the row and column of the cell you are interested in. Be sure to enter your addresses using only lower case characters.
Security
Overview
The purpose of this section is to explain Design and Run Mode Security options available with Infilink HMI.
1. From the Project menu, select Properties... then click on the Password tab. When entering a password for a project that is currently protected,
enter the Current Password then click OK. 2. When entering a new password for a project that is not currently protected, simply leave the Current Password empty. Enter up to six characters in the New Password field.
Security 240
If you are a systems integrator and are responsible for installation of Infilink and a completed Infilink project at a customer site you should password protect the project to prevent unauthorized editing. You will not be able to prevent design time access to the project any other way because Infilink Design Mode is available free of charge to anyone who visits our web site.
3. Enter the same characters in the Confirm field. 4. Click OK. The new password will be assigned when the project is saved. To remove the password from a project leave the New Password and Confirm fields blank. Click OK for both selections and the password will be removed when the project is saved.
Security 241
Logging in to a Project Access to windows and user triggered animations is based on the access level of the logged in user. The system administrator assigns login names and access levels for an Infilink project. The login dialog allows the operator to enter one of these names thus gaining access to the features of the current project. When the User, Log In menu is selected the Log In dialog appears.
User Name
Type the name of a user that has been defined for the current project.
Password
Enter the password that is assigned for the user name. Click Ok to perform the login or Cancel to return with no further action. Note: - These buttons are used to call up a popup touchscreen or mouse accessible keyboard when a physical keyboard is not attached to the unit.
Security 242
Security 243
Creating a New User 1. Type the Name of a user that has been defined for the current project. 2. Enter a brief but meaningful Description of this user. 3. Enter the Password (up to 16 characters) that is assigned for the user name. 4. Confirm the password by entering it again. 5. Set the Access level. This is the maximum level that this user will be allowed to access. 6. Check if you want the user to have access to this project's run-time tag data via the Internet using the iViewer utility. Note: Infilink software must be licensed for iViewer access before this feature can be used. If this box is checked without the software being licensed, a window displaying an error message will appear when entering Run mode.
Delete a User from the list. Minimum user level to allow move license Assigns an Access level that will allow the user to transfer the Infilink license from one computer to another. We recommend setting this level high.
Security 244
iViewer Utility
Overview
The iViewer utility is available through KEP's website. (www.kep.com). It is used to display screen captures and tag data at a remote location via the Internet. Tags assigned Internet Read/Write permission can be changed; provided the user has an appropriate Access level. Note: The Infilink package must be licensed to allow Internet access. Use the Upgrade License procedure to add Internet capability.
Connecting to a remote PC
Getting Started
Before using iViewer there are some things that need to be done: Make sure the copy of Infilink on the remote PC is licensed for remote iViewer access. Make sure the Project Properties Internet tab has "Enable tag value access over internet" enabled. Make sure the Project Properties, User List tab, has a user defined and that the user has "Allow access using iViewer" enabled. Make sure that both computers have internet connections. Find out the URL (or IP) address of the remote PC that you are trying to access.
@ Design Tip: The IP address of a PC can be determined by running "ipconfig" from the command line or DOS prompt.
Connecting
Start up iViewer and select Connect from the Action Menu. Enter the Remote PC's URL (or IP) address. Enter A valid User Name and password. Click on the "Connect to server button"
iViewer should connect to the Remote PC and display all of the tags designated for internet viewing.
Disconnect
Select Disconnect from the Action menu to end the communications link to the remote Server.
Server The Server is the remote PC that is running Infilink. Enter the URL (or IP) address of the remote PC in this field. Port The port address of the PC that is running iViewer. 9000 is the default for most PC's. if your PC has more than one Port address put the appropriate number of the port in this field. User name and Password Enter the name of a User from the project User List that has Internet access enabled. Enter the corresponding password for that user in the Password field. Enable the check box to remember this User and Password the next time you attempt to connect to the Server.
iViewer Setup
Use the Setup menu to modify how iViewer displays screen shots and tag information. You can also set up a list of frequently accessed URL's.
Adding/Editing a Server
Server name Enter a familiar name for the remote PC acting as a Server. Description Enter a brief and meaningful description of the Server. URL Enter the URL (or IP) address of the Server. The URL is typically given as <Computer name>.<company name> com. Port The port address of the PC that is running iViewer. 9000 is the default for most PC's. if your PC has more than one Port address put the appropriate number of the port in this field.
Screen Shots
iViewer can get a screen shot of the remote PCs display. Use the Action menu Get Screen shot menu item to get a one-time screen shot. Infilink must not be minimized on the remote PC. Sheen shots can be done automatically by making the proper settings in the iViewer Setup Dialog.
Check the box to enable automatic retrieval of screen shots from the Server. If the box is not checked, screen shots can still be done manually using the Get Screen shot menu item from the Action Menu. Set the interval at which screen shots are to be taken. Internet connection speed should be taken into consideration when making this selection. The time to the next screen shot is displayed in the Status Bar. @ Design Tip: Do a screen shot manually first and time how long it takes the screen shot to arrive. Make sure that the minutes setting is longer than the time it takes to actually get a screen shot.
Copyright 2003 KEP, Inc. iViewer Utility 249
If write ability has been assigned to the tag and the user access level for the tag is less than the user level of the iViewer user, the tag's value can be changed. Double click on the tag name in the Tag values dialog. The dialog shown below pops up. Enter the new value for the tag and click the button. If the value entered is valid, the new value will be displayed in the Tag values dialog.
The status bar shows the state of iViewer (Ready), the time until the next Screen Shot (NSS) and the URL (or IP) address of the Server (Connected to:).
Overview
The KEPServerEX is a 32 bit product and cannot run on Windows 3.x.
In this section we will show you how to setup Infilink and the KEPServerEX to start running a project automatically when your PC is started, or when selecting a shortcut or program item.
Windows 95/98
Making Infilink Auto Start in Win 95/98
1. Locate the Startup folder and create a new shortcut. The Startup folder is accessed by right clicking the Windows Start button and selecting Open from the popup menu. You then double click the Programs folder icon from the displayed Start Menu folder to display the Programs folder. You then double click the Startup folder icon to display the Startup folder contents. You then select the File menu and choose New and Shortcut to start the Shortcut wizard. 2. Use the Browse button on the displayed Create Shortcut dialog to find RunMode.exe. Your command line should look something like c:\Infilink\RunMode.exe. 3. Click Next and give your new Shortcut a name.
4. Right click on the new Shortcut and select properties from the popup shortcut menu. 5. Now append a space, quotation marks, the path to the project you wish to load, the words 'project.hmi', and close the quotes. (ie. "c:\Infilink\proj1\project.hmi"). All together it should look something like: "c:\Infilink\RunMode.exe" "c:\Infilink\proj1\project.hmi".
Infilink requires you to provide the full path to the directory where the project is located. It also requires the Working or Start in directory where the Infilink executables are located.
6. Click OK to complete the shortcut. The Infilink Runtime icon should appear in the StartUp folder with the name that you chose in step 4. 7. Restart Windows to test your shortcut.
Quotes (") are needed because of the space between Program and Files in the path.
5. The Target will be as follows: "C:\Program Files\KEPServerEX\ServerMain.exe /run myproject.kdp 6. The Start in directory will be the directory in which the server project is saved: "C:\Program Files\KEPServerEX\Projects " 7. In the Run list box select Minimized.
8. Click Apply to accept the shortcut and click OK to exit the dialog.
Windows NT
Making Infilink Auto Start in Win NT
The only difference between setting up shortcuts in Windows NT and Windows 95/98 is that Windows NT has an extra tab for share permissions. The default is for everyone to have access. 1. Drag the Infilink RunMode from the Infilink Products folder to the Startup folder. This creates a shortcut to RunMode.exe. 2. Right mouse click on the new shortcut and select Properties from the shortcut menu. 3. By default, the dialog will default to general properties. Select the Shortcut tab.
4. In shortcuts, the Target will be the same the Command Line we used in the Windows 95/98 example. You will have the full path to the Infilink executable followed by a space and the full path to the project directory. For example: D:\INFILINK\RunMode.EXE c:\project1\. 5. The Start in directory will be the path to the folder where RunMode.exe is located. For example: D:\Infilink.
6. Click Apply to accept the shortcut and click OK to exit the dialog.
Quotes (") are needed because of the space between Program and Files in the path.
10. For example the Target will be as follows: "D:\Program Files\KEPware\ServerMain.exe" /run myproject.kdp 11. The Start in directory will be the directory in which the server project is saved: "D:\Program Files\KEPware\Projects" 12. In the Run list box select Minimized.
13. Click Apply to accept the shortcut and click OK to exit the dialog.
Technical Support
Kessler-Ellis Products
Phone 800-621-2165 or 732-935-1320 extension 332 Website www.kep.com Licensing website http://infilock.kep.com Email plc@kep.com KEP technical support by telephone or email is free. Information KEP will generally need to provide the best possible technical support includes: Version of Infilink (Help / About) If the problem is related to licensing, we will need serial number, website login code, or at least the approximate date of purchase and the name of the distributor. Company name and phone number. Your email address. A description of the problem. New Features: KEP values user input on what features should be added to the product. Please contact us with any ideas you have which can make our product more useful to you. Updates: Would you like to know when Infilink-HMI updates are available? I suggest that you signup for KEPs enewsletter. You can signup on www.kep.com, or by emailing plc@kep.com.