46
Building Your HMI Using Visual Basic Technologies - A Tutorial John Weber The Software Toolbox ® [email protected] October 21, 1998 Houston, TX Copyright 1998 Qualitrol International & Software Toolbox.All rights reserved worldwide.The Software Toolbox is a registered trademark of Qualitrol International. Poster Presentation

Building HMI WithVBTutorial

  • Upload
    lue-ook

  • View
    70

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Building HMI WithVBTutorial

Building Your HMI Using Visual Basic Technologies - A Tutorial

John WeberThe Software Toolbox®

[email protected]

October 21, 1998

Houston, TX

Copyright 1998 Qualitrol International & Software Toolbox.All rights reserved worldwide.The Software Toolbox is a registered trademark of Qualitrol International.

Poster Presentation

Page 2: Building HMI WithVBTutorial

Why are we here today ?

• Take the mystery out of objects and VB– Objects & terminology– ActiveX & Containers– VB - The “Glue”

• Sample Applications– Alarming/Logging– Recipes– Networking

– Process Graphics– PLC Connections– Trending/Logging

Page 3: Building HMI WithVBTutorial

Defining the Technologies

Page 4: Building HMI WithVBTutorial

Software Objects What are they ?

• You can’t touch them - except on the disks or CD you load them onto your PC from• You can see them in many cases through their user interface• Are pieces of software for a specific task or family of similar tasks• Are similar to subroutines or functions• May contain numerous subroutines and functions of their own• Used to model software after real-world machine or process components or sections• Are easily transported from one PC to another provided standard interfaces are followed• Much of the software you use on your PC is built of objects

Page 5: Building HMI WithVBTutorial

Objects - The Building Blocks

Example - an object representation of a PLC

PLC Rack

CP

U

Inp

ut

Inp

ut

Inp

ut

Ou

tpu

t

Ou

tpu

t

Ou

tpu

t

Co

mm

s.

Interfaces

Power Supply

Input Modules Class

Output Modules Class

Page 6: Building HMI WithVBTutorial

Object Terminology

• Classes - groupings of similar object types

• Properties - define how the object behaves

• Methods - make things happen

• Events - occur when things happen

Inp

ut

Hypothetical PLC Analog Input Module “class”

Properties - number of channels, voltage level, scaling set points, channel type

Methods - send analog input to CPU, scale value

Events - voltage changed on field input side, scaling updated, updated value sent to CPU, configuration change received from CPU

Page 7: Building HMI WithVBTutorial

Object Terminology

A simple software object - a text box on a VB form

Properties Methods EventsAlignmentBackColorBorderStyleFontHeightNameTextVisibleWidthand 43 others

DragMoveOLEDragRefreshSetFocusShowWhatsThisand 5 others

ChangeClickDblClickDragDropDragOverGotFocusLostFocusKeyPressMousedownMouseupand 13 others

Page 8: Building HMI WithVBTutorial

More Object Terminology

• COM - Component Object Model• DCOM - Distributed Component Object Model =

COM + Networks• ActiveX - a type of COM object

• Container - a place you assemble your objects to form an application – Office productivity applications– Development tools - visual basic, etc.– Web browser

• OLE - Object Linking and Embedding

Page 9: Building HMI WithVBTutorial

Software Objects Examples

Command Button Object

CommandButton

Properties

CellObject

Cell Properties

Everything on your Excel spreadsheet is an object! - the worksheet is a collection of cell objects, a workbook is a collection of worksheet objects

Page 10: Building HMI WithVBTutorial

Software Objects Examples

Invoking the Print Method

The Print Event

Page 11: Building HMI WithVBTutorial

Software Objects Examples

Visual Basic (VB) comes with a lot of free objects that give you the Windows look and feel with minimal work

Page 12: Building HMI WithVBTutorial

Software Objects Examples

ActiveX control objects “plug-in” to VB to let you add functionality

• PLC Communications

• Trends

• Gauges

• Tanks

Page 13: Building HMI WithVBTutorial

Adding an ActiveX Component to the VB Toolbar & To A Form

The Default VB Toolbar

Right Mouse Click with pointer over the toolbar and select “components”

Check the component you want to add “ABCTL OLE Control module” in this case, click the Apply button, click the OK button, and the control is added to the toolbar

Double click the new component on the toolbar and it is added to your form!

Page 14: Building HMI WithVBTutorial

An Automation Software Object

Actual PLC Communciations ActiveX Object “instances” Placed into a

Visual Basic form container

Instance (noun) - a single copy of a type of software object (I.e. text box or ActiveX control) on a form

Instanciate (verb) - the act of placing a single copy of an object onto a form

Page 15: Building HMI WithVBTutorial

Browsing the Object’s Interfaces

Actual PLC ActiveX object in a VB container application

where its properties, methods, and events are browseable using VB’s

Object Browser Function

Methods

Properties

Events

Page 16: Building HMI WithVBTutorial

VB - The Glue to connect objects in your container

• VB - Visual Basic - a full fledged development environment

• VBA - Visual Basic for Applications– It is macro language in the Office applications

– Is licensed by over 100 companies for use as their scripting language for customization

• Both Use simple object.property, object.method, object_event syntaxes

• VB known by 3,000,000 people worldwide

Page 17: Building HMI WithVBTutorial

Properties - ObjectName.Property = variable or value

Methods - Objectname.Methodname (parameters)

Events - Private Sub Objectname_EventName( ) user LogicEnd Sub

Assembling the Objects in a Container

Simple Visual Basic Syntax for referring to objects

Example StatementsText1.Text = “Hello World”

ABCTL1.FileAddr = “N7:0”

displays text in a text box by setting the .Text property on the Text1 text box object

Sets a PLC memory address property (.FileAddr) to read using a plug-in ActiveX control object

ABCTL1.Autopoll(500) Invokes the .Autopoll Method to read data every 500ms using a plug-in ActiveX control object

Page 18: Building HMI WithVBTutorial

Human Machine Interface Apps

• HMI = Human Machine Interface

• Process Graphics

• PLC Connectivity for Data

• Trending and Logging

• Alarming and Logging

• Recipe Loading

• Networking

Page 19: Building HMI WithVBTutorial

Process Graphics - Static

Step 1- Select the VB image control from the VB toolbar and add to the form

Step 2 - Paste an image from a Symbol Library to the image control, set the stretch property on the image control to true and size to fit your needs

Page 20: Building HMI WithVBTutorial

Process Graphics - Dynamic

Add an instance of a dynamic gauge ActiveX plug in to your VB toolbar and then to your form

Right click on the object with your mouse, select “properties” on the pull down menu that appears and use this properties page to set your look and feel. Here we’ve used a pre-configured look and feel from the object’s library to get setup quick

Page 21: Building HMI WithVBTutorial

PLC Connectivity and Data - adding the ActiveX Control

Add an off-the-shelf ActiveX control for PLC connectivity to your VB toolbar and then add instances of the control to your VB form

• Use multiple instances of the PLC ActiveX control to keep code to a minimum• Give the each instance an intuitive name such as PLCMachine1 and PLCMachine2 in your applications• Use separate instances for reading and writing to keep your code to a minimum, even though most PLC Communications ActiveX controls don’t require you to use separate instances for reading and writing

Page 22: Building HMI WithVBTutorial

PLC Connectivity and Data - setting properties

This particular PLC communications ActiveX control represents each physical hardware adapter as a “logical adapter”. You run a simple config program shown here to set the hardware settings and communications parameters. By doing this, the developer of this control gives you the ability to change the hardware interfaces to your PLC without recompiling your program.

When you right click on each instance of the PLC control, you bring up this properties page to set the properties on the control for whether you are reading or writing (.function), the PLC node address (.node), the PLC memory address (.Fileaddr), and the number of points to read/write.

Page 23: Building HMI WithVBTutorial

PLC Connectivity and Data - Making the read happen

• Reading occurs when the .Trigger or .Autopoll methods are invoked• In this example when the Form Loads, (Form_Load() Event) the Autopoll method on the instance of the PLC ActiveX control called ABCTL1 is invoked.• The PLC control does its job and when it is done, it fires the “OnReadDone()” event• Displays are updated using the 3 lines of code shown above in the ABCTL1_OnReadDone() Event

• Data is accessed in the PLC ActiveX control using the WordVal and BitVal methods to properly format the data• Other methods such as floatval, stringval, longval, etc. are available for other data types

Page 24: Building HMI WithVBTutorial

Trending and Logging

Builds upon what you’ve already learned by adding 2 new controls

• Trending ActiveX control

• VB’s standard Data control for database connectivity

Setup a single instance of the PLC ActiveX control and its properties like before but this time use the standard VB command button’s On_Click() event to start the polling of the PLC based on user input

Properties Page for the Trending ActiveX Control

Page 25: Building HMI WithVBTutorial

Trending and Logging - VB Code

Invoke the PLC ActiveX Controls’ .Autopoll method to start/stop polling when user clicks on command buttons

Update text boxes on screen with data from the PLC ActiveX Control

Plot data on the trending ActiveX control

Log the data to the database using the VB data controls methods

This OnReadDone Event fires every time a poll

completes - the autopoll rate sets your trend update rate

for you

These lines setup the timebase and variables on the trend chart ActiveX control when the form is loaded

Page 26: Building HMI WithVBTutorial

Trending and Logging

The Finished Product in Run Mode

Page 27: Building HMI WithVBTutorial

Alarming and Logging - Building the Form

• Uses same controls and adds

one new • Uses new methods and events

on PLC ActiveX control to provide alarm generation capability

PLC ActiveX Communications

Control

VB Data Control for Database Connectivity

VB List Box Control for simple alarm

display - new to this project

Page 28: Building HMI WithVBTutorial

Alarming and Logging Generating the Alarms

• Watchpoint Methods– Method included in PLC ActiveX control

– User specifies high, low limits and type of alarms desired (on high, on low, on change, on normal, on discrete change)

– Autopoll method used to tell control how often to check the points

• Could all be done with VB If-then structures

• Using the ActiveX controls’ methods instead saves code and troubleshooting time

Page 29: Building HMI WithVBTutorial

Alarming and Logging

• You setup the watchpoints and go on doing other things in your applications

• Handle the events when they happen

• OnAnalogHigh

• OnAnalogLow

• OnAnalogChange

• OnAnalogNormal

• OnDiscreteChange

Page 30: Building HMI WithVBTutorial

Alarming and Logging- VB Code Setting up the watchpoint by invoking the .WatchPointAdd method in the PLC Comms

ActiveX Control

Use the .Autopoll method to start polling the PLC when the command buttons are clicked - also clear the alarms display when polling

starts

Build the high alarm message text string,

display it in the list box, then log the data to the database using the data

controls methods

Page 31: Building HMI WithVBTutorial

Alarming and Logging- VB Code

Build the low alarm message text string,

display it in the list box, then log the data to the database using the data

controls methods

Page 32: Building HMI WithVBTutorial

Alarming and Logging- VB Code

Build the normal alarm message text string,

display it in the list box, then log the data to the database using the data

controls methodsUpdate a text box on the screen each time a new value is read from the

PLC

Do some simple data validation when the user enters a PLC

memory address

Page 33: Building HMI WithVBTutorial

Alarming and Logging - Finished Product

Page 34: Building HMI WithVBTutorial

Alarming and Logging - Advanced Displays

For more advanced alarm displays, ActiveX plug-ins are available to provide the needed functionality

Page 35: Building HMI WithVBTutorial

Recipe Loading - Setting up the Data Control

Use VB’s standard Data Control to

connect to a database

• Don’t let all the properties confuse or worry you

• Key properties to set on data control:

• DatabaseName = pathname and filename of the database

• RecordSource = table name or query name to get records from in the database - data control gives you a pull-down list

Page 36: Building HMI WithVBTutorial

Recipe Loading - Data Binding

Text box properties page has 2 key properties that allow the user to connect or “bind” the value shown in the field to a column in a database table or query

• DataSource - the name of the data control that you setup to connect to the database

• DataField - the actual column, pulled from an auto-generated pulldown list, whose data will be bound to the text box

Each text box field on the form is “bound” using the DataSource and DataField properties to a column in the database

Page 37: Building HMI WithVBTutorial

Recipe Loading - In Action

When the user clicks on the next or previous recipe buttons, the code shown below advances the database pointer forward or backward one record while checking to make sure the beginning or end of the database table is not passed

Page 38: Building HMI WithVBTutorial

Recipe Loading - In Action

When user clicks on “Download to PLC”, the code below loads the displays values into the PLC ActiveX control and invokes its trigger method to write the data to the PLC. When the OnWriteDone event fires, the user is notified with a message box

Page 39: Building HMI WithVBTutorial

Networking - Leveraging Newer Ethernet Aware PLCs

TCP/IP Ethernet Network

PLCs with built-in Ethernet Interfaces

Client PCs running your VB HMI Application and using a PLC ActiveX control that supports direct Ethernet connections to the PLC

Page 40: Building HMI WithVBTutorial

Networking - Retrofitting to Proprietary PLC Networks

Client PCs running your VB HMI Application and utilizing a PLC ActiveX control that provides with it an EXE application for your server to bridge from Ethernet to the PLC networks or an ActiveX control that is an OPC client and can talk to an OPC server

Remote user via Windows Dial-Up Networking

TCP/IP Ethernet Network

Proprietary PLC Network

Gateway Server running a software bridge between the PLCnetworks and

TCP/IP Ethernet

• Provides a solution when the investment to replace PLCs with Ethernet Based CPUs is too high or the PLC network interface cards for each client are cost-prohibitive

• The gateway software bridge can be either an EXE program that is included with some PLC communications ActiveX controls or an OPC server

Page 41: Building HMI WithVBTutorial

Transfer Line Application

Page 42: Building HMI WithVBTutorial

Transfer Line Application

Page 43: Building HMI WithVBTutorial

Microbrewery Application

Page 44: Building HMI WithVBTutorial

Benefits of Using Visual Basic for HMI Applications

• Use the right tool for the right job– Simple to moderately complex apps– Don’t reinvent a pre-configured HMI in VB if that’s really what you

need

• Support for wide range of ActiveX plug-ins• Widely known scripting language • Flexibility - you control the application

• Cost – you can distribute your VB code royalty free– ActiveX components have low or no royalty fees for runtime

distribution

Page 45: Building HMI WithVBTutorial

Resources for further learning

• Understanding ActiveX & OLE - David Chappel, Microsoft Press

• Office97 Visual Programmers Guide - Microsoft Press• Microsoft Websites - msdn.microsoft.com/vba

• Download copy of this presentation and other presentations and technical papers at www.softwaretoolbox.com/isaexpo98

Page 46: Building HMI WithVBTutorial

Where do I find ActiveX controls and tools for Industrial HMI Applications ?

Although this presentation is a non-commercial, sharing of knowledge presentation, we added this slide after show because so many of you at the show were asking this question!

The Software Toolbox is a company that provides you with a single place to look to find all the software tools you need for automation applications, including Visual Basic based HMI applications. Visit our website today for more product information.

www.softwaretoolbox.com