07.03.2014 Views

Introduction.

Introduction.

Introduction.

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Edition: 26/732E5<br />

USERS GUIDE PCD PG5


Workshop PG5<br />

Welcome<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Welcome<br />

<strong>Introduction</strong>.<br />

Welcome<br />

Thanks a lot for your interest in our product. Soon from now you’ll discover<br />

how to write programs for the SAIA PCD as did many developers before<br />

you. In fact there are 250000 PCD’s running today!<br />

Programming a PCD is not hard at all. Although knowledge of PCD programming<br />

is of some help it isn’t required for this Workshop. You’ll learn how<br />

to solve simple problems step by step. Each chapter has some exercises at it’s<br />

end so you can check yourself the progress you have made. We believe that<br />

learning without practice is worthless. Therefore we strongly recommend to get<br />

a PCD with a digital input card and a digital output card before you start. Further<br />

you’ll need a cable PCD8.K111 for the examples.<br />

We wish you good fun. PCD Support Team<br />

What is PG5 all about?<br />

Much like the programming languages C++, Prolog, Assembler were built for<br />

special applications in science and industry, there are different kind of languages<br />

which are widely used in the automation industry.<br />

The languages are very similar from label to label, though the name for one and<br />

the same language may change. The languages are:<br />

• IL Instructionlist<br />

• Graftec<br />

• Fupla<br />

• Kopla also called Ladder<br />

We will see soon exactly how they work. PG5 now is a tool which allows us<br />

create programs for a wide range off applications. But PG5 not only is an editor<br />

for these different languages it will also help us to solve other problems we<br />

may encounter during a project. Tasks like:<br />

• Creating a documentation<br />

• Debugging the program once it runs on the PCD<br />

• Debugging the PCD<br />

• Set-up the configuration of the PCD<br />

• Write the program on an EPROM.<br />

During this course we will go through all these topics and do so by using a step<br />

by step approach. If you feel unsure about some points, then refer to the online<br />

help included in the PG5. You will see that you wont need much more then a<br />

little time and some cups of coffee to get familiar with the programming of<br />

PCD's.<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Welcome<br />

Icons used in this book<br />

Each chapter contains pictures to help you make sense of the material you are<br />

reading. An other important graphical elements are the icons which highlight<br />

specific information so you can find the most important stuff at a glance.<br />

Warning or special<br />

help Never ignore this<br />

icon. Even if you skip<br />

the other icons, you<br />

don't want to miss this<br />

one.<br />

Technical stuff. If<br />

you are ready for<br />

some additional information,<br />

then read<br />

these points.<br />

Remarks. General<br />

information's about a<br />

topic.<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Welcome<br />

System requirements<br />

Your PC:<br />

• SVGA or higher resolution monitor<br />

• Pentium 150MHz processor or better<br />

• 32MB of RAM or better<br />

• 30 MB free hard-disk space<br />

• Additional 5 MB free hard-disk space for HMI Editor<br />

• CD-ROM drive<br />

• Microsoft Mouse or compatible pointing device<br />

• TCP/IP Protocol installed for Online connections<br />

• TAPI 2.0 for modem connection<br />

• Microsoft Data Access Components (MDAC) 2.5 for HMI Editor<br />

and/or for Symbol Import/Export from/to Excel.<br />

MDAC 2.5 is automatically installed by the HMI Editor Setup or can<br />

be installed by running d:\pg5\mdac_typ.exe (assuming that d: is your<br />

CD-ROM drive)<br />

For Windows 98 Users: DCOM98 needs to be installed before installing<br />

MDAC 2.5. Run d:\pg5\dcom98.exe to install (assuming that<br />

d: is your CD-ROM drive)<br />

Supported operating<br />

systems:<br />

• Windows 95 B or higher<br />

• Windows 98 Second Edition<br />

• Windows NT 4.0 SP5 or higher<br />

• Windows 2000 Professional<br />

• Windows Me<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Welcome<br />

Your PCD:<br />

You can write programs for any of the existing PCD’s:<br />

PCD1<br />

PCD2<br />

PCD4<br />

PCD6<br />

Have a look into the hardware manuals for further information about any of the<br />

PCD’s. Programs written with the PG5 will run on any of the PCD’s.<br />

All the examples are written for a PCD2 or PCD1 with:<br />

• 1 digital input card (E110 or E111 type) in slot 1 (equals address 0..7)<br />

• 1 digital output card (A400 type) in slot 2 (equals address 16..23)<br />

• 1 analogue input card (W100 type) in slot 3 (equals address 32..39)<br />

Further you’ll need a cable PCD8.K111 in order to download the program<br />

into the PCD.<br />

Further<br />

Documentation:<br />

For information about existing hardware refer to:<br />

Documentation CD-Rom: Ordernumber 26/801<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Welcome<br />

1. Getting Started<br />

PROJECT MANAGER 1 - 1<br />

OPEN A NEW PROJECT: 1 - 3<br />

CONNECT YOUR PC TO THE PCD 1 - 6<br />

CONFIGURE THE HARDWARE (TABLE MEMORY CHIPSIZE): 1 - 8<br />

SUMMARY : 1 - 12<br />

ADDITIONAL NOTES: 1 - 13<br />

Exercise<br />

2. Write your first program<br />

MANAGE YOUR PROGRAM FILES. 2 - 1<br />

WRITE YOUR FIRST PROGRAM 2 - 5<br />

BUILD YOUR PROGRAM 2 - 6<br />

LOAD THE PROGRAM 2 - 7<br />

TEST YOUR PROGRAM 2 - 8<br />

SUMMARY 2 - 9<br />

ADDITIONAL NOTES: 2 - 11<br />

3. PCD Resources<br />

HARDWARE RESOURCES 3 - 1<br />

INTERNAL (SOFTWARE) RESOURCES 3 - 4<br />

SYMBOL EDITOR 3 - 13<br />

WORKING WITH SYMBOLS: 3 - 17<br />

ADD SEVERAL SYMBOLS AT ONCE 3 - 18<br />

IMPORT SYMBOLS FROM "EQU" STATEMENTS (PG3): 3 - 19<br />

ADD SYMBOLS DIRECTLY FROM THE PROGRAMEDITOR (ENTER): 3 - 20<br />

REPLACE A FIX ADDRESS BY IT'S SYMBOL (SHIFT + SPACEBAR): 3 - 20<br />

AUTO COMPLETE SYMBOLS (CTRL + SPACEBAR): 3 - 22<br />

AUTO ALLOCATION (WORK WITHOUT FIX ADDRESSES): 3 - 22<br />

FILTER THE SYMBOL VIEW: 3 - 25<br />

RESERVED NAMES: 3 - 26<br />

RESOURCE TABLE: 3 - 27<br />

Exercise<br />

4. FUPLA programming<br />

CREATE A NEW PROJECT AND A NEW FUPLA FILE 4 - 1<br />

THE FUPLA EDITOR 4 - 2<br />

EDIT YOUR FUPLA PROGRAM: 4 - 3<br />

EDIT PAGES 4 - 5<br />

BASIC INSTRUCTIONS: 4 - 7<br />

WRITE YOUR FIRST FUPLA PROGRAM 4 - 10<br />

BUILD AND DEBUG YOUR PROGRAM 4 - 13<br />

DEBUG YOUR PROGRAM ONLINE 4 - 14<br />

SOME RULES: 4 - 17<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Welcome<br />

Exercise<br />

5. Program Structure<br />

CYCLIC ORGANIZATION BLOCK (COB 0 TO 15) 5 - 1<br />

PROGRAM BLOCKS (PB 0 TO 299) 5 - 3<br />

FUNCTION BLOCKS ( FB 0 TO 999 ) 5 - 5<br />

STRUCTURE VIEW AND EXECUTION PATH 5 - 6<br />

EXCEPTION BLOCK (XOB) 5 - 7<br />

TABLE OF XOB’S 5 - 8<br />

HISTROY TABLE 5 - 9<br />

SEQUENTIAL BLOCKS (SB 0 TO 31) 5 - 10<br />

6. GRAFTEC<br />

SEQUENTIAL BLOCKS (SB 0 ... 31) 6 - 1<br />

OPEN A NEW GRAFTEC FILE 6 - 3<br />

ORGANIZATION OF THE SB’S 6 - 6<br />

GENERAL STRUCTURE OF AN SB 6 - 7<br />

BASIC RULE: ALTERNATE STEPS & TRANSITIONS 6 - 7<br />

TRANSITIONS 6 - 8<br />

STEPS 6 - 9<br />

TYPICAL SEQUENTIAL BLOCK STRUCTURES. 6 - 10<br />

EDIT A SEQUENCE 6 - 11<br />

WRITE YOUR FIRST SEQUENTIAL BLOCK 6 - 15<br />

BUILD AND DEBUG YOUR PROGRAM 6 - 21<br />

HOW TO STRUCTURE GRAFTEC USING PAGES. 6 - 23<br />

7. Instruction List Programming<br />

CREATE A NEW PROJECT AND A NEW INSTRUCTION LIST PROGRAM FILE 7 - 1<br />

THE INSTRUCTION LIST EDITOR "SEDIT" 7 - 3<br />

IL SYNTAX 7 - 5<br />

BASIC INSTRUCTIONS: 7 - 10<br />

WRITE YOUR FIRST IL PROGRAM 7 - 17<br />

BUILD AND DEBUG YOUR PROGRAM 7 - 21<br />

DEBUG YOUR PROGRAM ONLINE 7 - 23<br />

SYNCHRONOUS VIEW 7 - 26<br />

Exercise<br />

8. Additional Tools<br />

DATA TRANSFER UTILITY 8 - 1<br />

CUSTOMIZE MENU 8 - 7<br />

WATCH WINDOW 8 - 9<br />

ONLINE CONFIGURATOR 8 - 13<br />

UPLOAD THE PCD CONTENT AND CREATE A PROJECT 8 - 17<br />

PROGRAM AN EPROM 8 - 22<br />

DOWNLOAD A NEW FIRMWARE VERSION 8 - 23<br />

© Saia-Burgess Controls Ltd.


1. Getting Started<br />

INTRODUCTION: 1<br />

1.1 PROJECT MANAGER 1<br />

1.2 OPEN A NEW PROJECT: 3<br />

1.3 CONNECT YOUR PC TO THE PCD 6<br />

1.4 CONFIGURE THE HARDWARE: 8<br />

1.5 SUMMARY: 12<br />

1.6 ADDITIONAL NOTES: 13<br />

<strong>Introduction</strong>:<br />

Welcome.<br />

In the first Chapter you will learn how to:<br />

♦ Open a new project.<br />

♦ Connect your PC to the PCD.<br />

♦ Configure the PCD.<br />

If you already have some experience with our other programming tools like PG4<br />

or PG3, we suggest that you do not skip this chapter because it will provide some<br />

basic information on how you can manage your projects today.


Workshop PG5<br />

Getting Started - Project management<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Getting Started - Project management<br />

1.1 PROJECT MANAGER<br />

PROJECT<br />

DEFINITION<br />

In contrast to PG4 or S5, PG5 doesn't handle one PCD, but a whole project<br />

with a multitude of PCD's and Networks.<br />

An entity of several PCD's is called a Project. Project files have the ending<br />

*.5pj<br />

Project<br />

Network<br />

© Saia-Burgess Controls Ltd Page 1-1


Workshop PG5<br />

Getting Started - Project management<br />

© Saia-Burgess Controls Ltd Page 1-2


Workshop PG5<br />

Getting Started - Project management<br />

1.2 OPEN A NEW PROJECT:<br />

Before we start to write our first program we will have to open a new project<br />

with one or several PCD's:<br />

1. Open the PG5 Project manager.<br />

2. Click on File.<br />

3. Click on New Project.<br />

4. Enter a project name.<br />

5. Enter a description about the project.<br />

Enter a project<br />

name.<br />

Enter a description<br />

of<br />

the project.<br />

Click on OK<br />

to confirm<br />

entries.<br />

Don’t activate this<br />

option. We will<br />

manually add a CPU<br />

the first time. If it is<br />

active, just click on<br />

it to deactivate.<br />

© Saia-Burgess Controls Ltd Page 1-3


Workshop PG5<br />

Getting Started - Project management<br />

Now that you have opened a project, your project tree should match the display.<br />

The next step is to add a CPU.<br />

1. Highlight the Project, and right click on it. Then click on New CPU.<br />

2. Or, you can click on CPU in the menu bar, and then click on New.<br />

OR<br />

Enter a<br />

name<br />

Enter a description<br />

about<br />

the CPU.<br />

Click on OK<br />

to confirm<br />

ti<br />

© Saia-Burgess Controls Ltd Page 1-4


Workshop PG5<br />

Getting Started - Project management<br />

Your project tree should match the display below.<br />

Highlight Settings and double click on it. This shows you the three areas where<br />

you can configure your PCD. As you can see, there is Online, Hardware, and<br />

Software.<br />

The first setting is Online. Highlight Online and double click on it.<br />

Or Click on Online from the Tool Bar.<br />

OR<br />

© Saia-Burgess Controls Ltd Page 1-5


Workshop PG5<br />

Getting Started - Project management<br />

Select<br />

PGU<br />

Click on setup<br />

to select protocol<br />

The baudrate and protocol<br />

settings are fixed for<br />

PGU. The port depends<br />

on what is available on<br />

your PC.<br />

Click on OK to<br />

confirm entries<br />

Now the communication protocol is set. Next, we will connect the PCD to<br />

your PC.<br />

1.3 Connect your PC to the PCD<br />

Basic connection:<br />

The standard connection is the direct connection between the PGU port on the<br />

PCD, and the Com1 port on the PC. Use SAIA cable #K111. There is other<br />

configurations available, but this is the one we are going to use with this<br />

workshop. Refer to your hardware manual for the power connection to the<br />

PCD. Now you should be connected to the PC and the PCD should be on.<br />

© Saia-Burgess Controls Ltd Page 1-6


Workshop PG5<br />

Getting Started - Project management<br />

Confirm<br />

connection:<br />

The simplest way to check the connection between the PCD and the PC, is by<br />

clicking on the Online icon. Click on this now.<br />

You will receive this message.<br />

Click<br />

on Yes.<br />

Displays the<br />

connection<br />

tt<br />

Run and Stop are<br />

active when you have<br />

a program downl<br />

Your display should have a HALT<br />

d d<br />

status. Halt is online, but since you have<br />

not downloaded a program, it goes into the halt mode.<br />

If you receive this message:<br />

1. Click on OK.<br />

2. Check that the PCD is on.<br />

3. Check the cable connection between the PCD & PC.<br />

© Saia-Burgess Controls Ltd Page 1-7


Workshop PG5<br />

Getting Started - Project management<br />

1.4 CONFIGURE THE HARDWARE:<br />

Default Hardware<br />

Settings:<br />

There is two areas you can use to enter the hardware settings.<br />

1. Default settings. (will be used if no individual settings are not downloaded)<br />

2. Individual settings. (Custom to the project that is currently active)<br />

To get to the default settings, click on Tools, Options, and then the General<br />

tab.<br />

General<br />

tb<br />

Click on<br />

Default<br />

Hardware<br />

Settings<br />

Enter the<br />

memory.<br />

Enter PCD<br />

type.<br />

Enter the extension<br />

memory, if<br />

Confirm with<br />

OK.<br />

© Saia-Burgess Controls Ltd Page 1-8


Workshop PG5<br />

Getting Started - Project management<br />

Individual<br />

Hardware Settings:<br />

We just covered the entry of the default hardware settings. These would be<br />

useful if you had several PCD’s with the same configuration. You could set the<br />

default settings once, and all the others would be configured via the default<br />

settings.<br />

For projects with one or several different PCD’s, we have the individual hardware<br />

settings.<br />

Highlight Hardware, and double click on it.<br />

Enter the PCD type, the memory and the<br />

extension memory. If you are not sure on<br />

on the memory, you can click on Upload<br />

and the PCD will fill in the memory and the<br />

extension memory for you. This is only available<br />

with the individual settings, it is not<br />

available when setting the default settings.<br />

If you are not sure of the<br />

memory of your PCD,<br />

click on Upload, and it<br />

will enter the data for you.<br />

Click on<br />

Upload<br />

again.<br />

When Upload<br />

is complete<br />

click on<br />

l<br />

© Saia-Burgess Controls Ltd Page 1-9


Workshop PG5<br />

Getting Started - Project management<br />

Download<br />

Settings:<br />

Once you have the settings entered, you need to download the settings. Follow<br />

the steps below:<br />

Once you have the<br />

settings entered,<br />

click on Download<br />

Click on<br />

Download<br />

again.<br />

When the Download<br />

is complete,<br />

click on Close.<br />

The PCD is now configured to your settings.<br />

The software settings file, will be covered in Chapter 3. The next step is to<br />

write your first program. Chapter 2 will take you through this procedure.<br />

© Saia-Burgess Controls Ltd Page 1-10


Workshop PG5<br />

Getting Started - Project management<br />

Important<br />

JUMPERS:<br />

There are several jumpers<br />

on the PCD where you<br />

can choose the kind of memory<br />

chip you are using. (Examples:<br />

EPROM, RAM and some times<br />

Flash).<br />

There is a jumper to indicate if<br />

the memory is > < 1Mbit.<br />

Before the settings are<br />

downloaded, the PG5 reads the<br />

position of these jumpers and<br />

compares it with the setting you<br />

have chosen from the list.<br />

2<br />

1<br />

2<br />

Example PCD2:<br />

If you use an additional memory<br />

chip in the socket 1 and you<br />

encounter problems at this stage,<br />

then check the position of these<br />

jumpers!<br />

2<br />

For further information, please refer to the hardware manual.<br />

© Saia-Burgess Controls Ltd Page 1-11


Workshop PG5<br />

Getting Started - Project management<br />

1.5 SUMMARY:<br />

In this chapter you have learned how to:<br />

♦ Open a new project.<br />

♦ Setup the communication between the PC and the PCD.<br />

♦ Set the default and individual hardware settings.<br />

Additional Notes:<br />

♦ Overview of the Project Manager structure.<br />

♦ Overview of the File Manager structure.<br />

♦ Some information about memory.<br />

© Saia-Burgess Controls Ltd Page 1-12


Workshop PG5<br />

Getting Started - Project management<br />

1.6 ADDITIONAL NOTES:<br />

Project Manager<br />

Structure:<br />

Tool Bar:<br />

All operations are<br />

handled from here.<br />

Message Window: :<br />

Displays Disdd error messages, and the<br />

entire protocol from the assembler.<br />

You can scroll in the protocol<br />

and edit it as you wish.<br />

Data Window:<br />

Displays the content of several<br />

files, such as the Symbol Editor<br />

files, listing files in 3 views:<br />

Data view, Block view, and<br />

Block structure view, and all<br />

map files. Displayed is the<br />

Symbol editor.<br />

File Manager:<br />

Stores all the program and configuration<br />

files for the project. Also can<br />

store files from other programs such<br />

as Word or ElektroCAD. When you<br />

backup the project, all the files are<br />

stored.<br />

© Saia-Burgess Controls Ltd Page 1-13


Workshop PG5<br />

Getting Started - Project management<br />

FILE MANAGER Structure:<br />

Contains all the program files,<br />

which are used by multiple<br />

CPU’s. The modifications in<br />

these files are automatically<br />

reported to all the CPU’s in the<br />

project which reference to the<br />

file in the “Common Files”<br />

folder.<br />

Project Title, and number<br />

of CPU’s in the<br />

Here you can set how<br />

you are going to<br />

communicate with<br />

your PCD. Default is<br />

“PGU direct connec-<br />

Active Project:<br />

There is always one CPU<br />

that is active at any given<br />

time.<br />

All the operations you<br />

execute (build, hardware<br />

settings, download, ect )<br />

corresponds to this project.<br />

A project becomes active<br />

by right clicking on<br />

”<br />

the<br />

CPU and choose “Make<br />

Active”<br />

.<br />

Contains all your<br />

listing and map<br />

files.<br />

Configure your<br />

PCD<br />

hardware and softi<br />

Contains all your<br />

program files.<br />

Files which are<br />

only referenced are<br />

displayed as<br />

shown with<br />

..\filename<br />

© Saia-Burgess Controls Ltd. Page 1-14


Workshop PG5<br />

Getting Started - Project management<br />

MEMORY INFORMATION:<br />

Chips you<br />

can use:<br />

Chips we<br />

support and<br />

supply:<br />

PCD<br />

type<br />

Memory chip<br />

PCD1 Empty socket<br />

1 RAM 256kBit<br />

1 RAM 1Mbit<br />

1 Flash 1Mbit<br />

1 EPROM 512kBit<br />

1 EPROM 1Mbit<br />

PCD2 Empty socket<br />

1 RAM 256kBit<br />

1 RAM 1Mbit<br />

1 RAM 4Mbit<br />

1 Flash 1Mbit<br />

1 Flash 4Mbit<br />

1 EPROM 512kBit<br />

1 EPROM 1Mbit<br />

1 EPROM 4Mbit<br />

PCD4 2 RAM 62256<br />

2 RAM 1MBit<br />

2 EPROM 256kBit<br />

2 EPROM 512kBit<br />

2 EPROM 1Mbit<br />

Order<br />

number<br />

4 502 5414 0<br />

4 502 7013 0<br />

4 502 7141 0<br />

4 502 3958 0<br />

4 502 7126 0<br />

4 502 5414 0<br />

4 502 7013 0<br />

4 502 7175 0<br />

4 502 7141 0<br />

4 502 7224 0<br />

4 502 3958 0<br />

4 502 7126 0<br />

4 502 7223 0<br />

4 502 5414 0<br />

4 502 7013 0<br />

4 502 5327 0<br />

4 502 3958 0<br />

4 502 7126 0<br />

Usable Bytes<br />

in the PCD<br />

17 KB<br />

32 KB<br />

128 KB<br />

112 KB<br />

64 KB<br />

128 KB<br />

32 KB/128KB<br />

32 KB<br />

128 KB<br />

512 KB<br />

112 KB<br />

448 KB<br />

64 KB<br />

128 KB<br />

512 KB<br />

64 KB<br />

256 KB<br />

64 KB<br />

128 KB<br />

256 KB<br />

Extension<br />

memory<br />

(RAM)<br />

None<br />

13 KB<br />

13 KB<br />

13 KB<br />

13 KB<br />

None<br />

24 KB<br />

24 KB<br />

24 KB<br />

24 KB<br />

24 KB<br />

24 KB<br />

24 KB<br />

24 KB<br />

13 KB<br />

None<br />

128 KB if you use<br />

PCD2.M120 Version<br />

J or M150<br />

172 KB if you use<br />

the memory<br />

PCD7.R310<br />

If you order a chip of a certain size, you might receive different types of chips.<br />

Memory chip size Order number Chip type<br />

RAM 256kBit 4 502 5414 0 SRM 2B256SLCX70<br />

HY62256ALP-70<br />

GM76C256CLL-70<br />

M5M5256DP-70LL<br />

TC55257DPL-70L<br />

RAM 1Mbit 4 502 7013 0 LP621024D-70LL<br />

SRM20100LLC70<br />

HY628100ALP-70<br />

GM76C8128CLL-70<br />

M5M51008BP-70L<br />

RAM 4Mbit 4 502 7175 0 HM628512LP-5<br />

KM684000ALP-5L<br />

Flash 1Mbit 4 502 7141 0 AM29F010-70PC<br />

Flash 4Mbit 4 502 7224 0 chip AM29F040 on socket<br />

EPROM 256kBit 4 502 5327 0 UPD27C256AD-10<br />

M27C256B-10F1<br />

TMS27C256-10JL<br />

EPROM 512kBit 4 502 3958 0 AM27C512-15XF1<br />

AMC27C512-15XF1<br />

EPROM 1Mbit 4 502 7126 0 AM27C010-90DC<br />

NM27C010Q-90<br />

M27C1001-10F1<br />

EPROM 4Mbit 4 502 7223 0 AM27C040-100DC<br />

M27C4001-10F1<br />

© Saia-Burgess Controls Ltd. Page 1-15


Workshop PG5<br />

Getting Started - Project management<br />

EXTENSION MEMORY?<br />

Although this point is handled automatically by the configurator, it might<br />

be interesting to know what extension memory is all about:<br />

All the PCD's have sockets where the user can place additional memory.<br />

The user has three options; RAM, EPROM, or FLASH. Some PCD's<br />

have RAM (PCD1 and PCD2 ) already soldered on the PC-Board itself. In<br />

the case of PCD2, the RAM has a content of 32kByte or 128kByte depending<br />

on the hardware version. Depending on your program size, it<br />

may not be necessary to place a memory chip into the empty socket. You<br />

can load your programs into this RAM and work without an additional<br />

RAM or EPROM chip.<br />

If you want your program to be stored on an EPROM, FLASH, or if you<br />

have a large program which is to large for the standard RAM, then you<br />

will have to add an additional memory chip. As soon you place a memory<br />

chip into the empty socket, this memory becomes the main memory and<br />

the small RAM becomes the extension memory. Complicated? A little?<br />

Why bother? Well for one, you now know what this extension memory is<br />

and, if for example, you have your program on an EPROM and you want<br />

to change the content of a DB in the run mode. In such a situation the DB's<br />

in the EPROM can't be changed and the only RAM you'll have will be this<br />

small extension memory. DB stands for Data Blocks, and will be covered<br />

in chapter 3.<br />

© Saia-Burgess Controls Ltd. Page 1-16


EXERCISE<br />

INTRODUCTION: 1<br />

QUESTIONS 1-3: 1<br />

SOLUTION 1: 2<br />

SOLUTION 2&3: 3<br />

<strong>Introduction</strong>:<br />

You have learned to setup a project and how to configure a PCD in the first chapter.<br />

You’ll need to consult the PCD hardware manual for some of the questions.


Workshop PG5<br />

Exercise Chapter1<br />

EX-01-E<br />

© Saia-Burgess Controls Ltd


Workshop PG5<br />

Exercise Chapter1<br />

Questions 1-3:<br />

Memory Configuration<br />

1. You have a PCD 1 with a memory chip like:<br />

JAPAN 9845<br />

HM628512ALP-5<br />

1.1 What does HM628512ALP-5 say?<br />

1.2 What’s the order number of this chip?<br />

1.3 What are jumper settings on your PCD like?<br />

1.4 What are the settings you have to choose in the Hardwareconfigurator?<br />

Firmware<br />

2. Open the PCD and try to find the firmware chip:<br />

3. The label on the firmware chip is:<br />

PCD1. M....<br />

V008<br />

3.1 What does it say?<br />

3.2 Control firmware version on your PCD online.<br />

EX-01-E © Saia-Burgess Controls Ltd. Page 1E-1


Workshop PG5<br />

Exercise Chapter1<br />

Solution 1:<br />

1.1<br />

HM628512ALP-5 for :<br />

HM = Chip provider<br />

62 = RAM<br />

512 = capacity in kByte (Sometimes the capacity is given in kBits)<br />

5 = access time 50 nanoseconds<br />

1.2<br />

The order number is: 4 502 7224 0<br />

(List is in the hardware manual PCD2 and at the beginning of this chapter)<br />

1.3<br />

Memory Configuration<br />

HM62256LP-<br />

R E<br />

WP<br />

As this is a RAM, we have to put the jumper<br />

on R. The E stands for EPROM.<br />

The jumper underneath stands for WP = write<br />

protect. You can’t download your program<br />

anymore it this jumper is set. Set both<br />

jumpers as shown on the picture.<br />

1.4<br />

EX-01-E © Saia-Burgess Controls Ltd. Page 1E-2


Workshop PG5<br />

Exercise Chapter1<br />

Solution 2&3:<br />

Firmware:<br />

2.<br />

Take the hardware manual:<br />

PCD1/2 manual 26/737<br />

PCD 4 manual 26/734<br />

PCD 6 manual 26/735<br />

and you’ll find a drawing in the first<br />

chapter showing the PCD and the FW.<br />

Firmware<br />

RAM<br />

uP<br />

68340<br />

User Memory<br />

24 VDC<br />

RUN<br />

ERR<br />

SPACE A<br />

SUPPLY<br />

3.1 The label says:<br />

PCD1. M....<br />

V008<br />

The firmware is for a PCD1 and will run on any type of PCD1 ( M110,M120<br />

and M130)<br />

Further the firmware is an official one (indicated by the V) and it’s the version<br />

008.<br />

3.2<br />

Connect yourself to the PCD using the K111 cable as shown in the chapter1.<br />

Start the menu: “Online” “ PCDStatus”<br />

And you’ll get the<br />

firmware version:<br />

D1 = PCD1<br />

M1 = M110,<br />

M120<br />

Version 008<br />

EX-01-E © Saia-Burgess Controls Ltd. Page 1E-3


Workshop PG5<br />

Exercise Chapter1<br />

EX-01-E © Saia-Burgess Controls Ltd. Page 1E-4


2. Write your first program<br />

INTRODUCTION: 1<br />

2.1 MANAGE YOUR PROGRAM FILES. 1<br />

2.2 WRITE YOUR FIRST PROGRAM 5<br />

2.3 BUILD YOUR PROGRAM 6<br />

2.5 TEST YOUR PROGRAM 8<br />

2.6 SUMMARY 9<br />

2.7 ADDITIONAL NOTES: 11<br />

<strong>Introduction</strong>:<br />

Now it's time to write our first program. A proper introduction to the FUPLA and<br />

IL programming will follow in the next chapter. It does not matter if you do not<br />

know the difference between FUPLA, KOPLA, IL, etc. (The names change<br />

from company to company ). The main goals of this chapter are:<br />

♦ See how easy a simple program can be done.<br />

♦ Write and download your first program.<br />

♦ Observe the states of your inputs and outputs on the PCD and your PC<br />

monitor.


Workshop PG5<br />

Write your first program<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Write your first program<br />

2.1 Manage your program files.<br />

There are a lot of different kinds of files in a project. Here, we will cover<br />

program files. There is three editors, and the format you choose to program<br />

in, determines the editor you will use.<br />

S-EDIT is the editor for programs written in IL ( Instruction list or AWL<br />

in German ). IL is a kind of assembler code with 127 different instructions,<br />

which work in combination with very powerful assembler directives.<br />

This will be your tool if you plan to make very fast programs or if<br />

you start to implement your own communication protocols into the PCD.<br />

FUPLA is the editor for all the guys who like to edit their programs in a<br />

graphical environment. ( Like ladder or logic)<br />

The only difference between LADDER and LOGIC is in the way you draw<br />

binary combinations. As soon as you use integer or floating decimal values,<br />

both LADDER and LOGIC become very similar to work with. We<br />

have implemented both LOGIC and LADDER into the same editor.<br />

In addition to the large basic library, a large number of libraries for applications<br />

like HVAC or communications via a modem, ( pager, modem … )<br />

can be purchased.<br />

GRAFTEC is the name of the editor in which you can draw<br />

SEQUENTIAL BLOCS. It is a way to structure and display your program<br />

in a sequential format. This is useful if you want to solve sequential problems<br />

where you have to wait on some internal or external events before<br />

starting the next program step.<br />

© Saia-Burgess Controls Ltd. Page 2-1


Workshop PG5<br />

OPEN A<br />

PROGRAM-<br />

FILE:<br />

Write your first program<br />

In order to start programming you have to know how to open a new program<br />

file:<br />

1. Highlight the folder called " Program Files"<br />

2. Click on the " New File" button or click the right mouse button<br />

OR<br />

3. Fill in the dialog-box as shown below:<br />

Add a name to<br />

your file<br />

Choose to open a new<br />

INSTRUCTION LIST<br />

program<br />

Activate this option<br />

in this example..<br />

Don’t activate<br />

this option in<br />

this example.<br />

We will open<br />

the file later.<br />

© Saia-Burgess Controls Ltd. Page 2-2


Workshop PG5<br />

Write your first program<br />

4. Look at the File Manager and you'll see this program file:<br />

Technical<br />

stuff:<br />

Highlight the file, click<br />

the right mouse button,<br />

then click on Linked to<br />

link or unlink the file<br />

LINKED/<br />

NOT LINKED<br />

An arrow indicates that the file will be linked to the program.<br />

This means the file is part of your project and will be<br />

downloaded to the PCD.<br />

No arrow indicates the file will not be linked to the program.<br />

This can be useful if you have several program files,<br />

which you link for testing purposes, but will not be included in<br />

the final version of your program.<br />

© Saia-Burgess Controls Ltd. Page 2-3


Workshop PG5<br />

Write your first program<br />

© Saia-Burgess Controls Ltd. Page 2-4


Workshop PG5<br />

Write your first program<br />

2.2 Write your first program<br />

Goal:<br />

We will just program one simple equation:<br />

O 32 = I 1+ I 2<br />

(Turn the Output32 on if Input 1 or 2 has an input signal)<br />

Open the<br />

editor:<br />

Highlight and double click the file to open the editor. Enter the six program<br />

lines as shown.<br />

Enter the program<br />

code:<br />

The cursor will start in the<br />

upper left corner. Just type<br />

in COB 0 and enter. The<br />

editor will position the<br />

string for you automatically.<br />

Next don’t move the<br />

cursor, just type in 0 and<br />

enter. Follow this format<br />

for your entries.<br />

© Saia-Burgess Controls Ltd. Page 2-5


Workshop PG5<br />

Write your first program<br />

2.3 BUILD your program<br />

What’s the BUILD<br />

function?<br />

BUILD your program:<br />

The functionality of BUILD is one of the most powerful features of the PG5<br />

package. It provides an automated and optimized procedure to take you from<br />

edit mode into online mode. The PCD system is updated with all the modifications<br />

that have been made to the project files.<br />

.<br />

Compile the program by clicking on the "Build Project" icon.<br />

As soon as you click on the "Build " icon, the program goes through all the<br />

files and assembles one after the other. This process is documented in the message<br />

window, so you'll always know which files are actually assembled. Once<br />

all the files are done, the linking starts. This also is documented in the message<br />

window. If everything is ok, the message window will tell you:<br />

Output to the<br />

MESSAGE<br />

WINDOW:<br />

The program " Inputoutput<br />

combination.src "<br />

has no errors.<br />

All the files that are<br />

linked. (We only<br />

have one file in this<br />

example plus the<br />

basic file called<br />

"~projpg4" which is<br />

always there.)<br />

The build was<br />

successful.<br />

Upon a successful build, your program is ready to be downloaded to the PCD.<br />

© Saia-Burgess Controls Ltd. Page 2-6


Workshop PG5<br />

Write your first program<br />

Download your files<br />

Execute the download by clicking on the "Download" icon.<br />

DOWNLOAD<br />

YOUR<br />

PROGRAM-<br />

FILES:<br />

As soon as you activate Download, the memory settings and the program are<br />

downloaded into the PCD. The current program in the PCD will be erased and<br />

the new program will be downloaded.<br />

As soon as the program is downloaded, the status bar (see picture) will indicate<br />

“Complete. Press close to continue.<br />

© Saia-Burgess Controls Ltd. Page 2-7


Workshop PG5<br />

Write your first program<br />

2.5 Test your program<br />

1. Go online. click on the icon and the start and stop icons will illuminate.<br />

2. Click on the start icon and the PCD is now in the run mode. Confirm<br />

that the run led is on. (The led is located on the front of the PCD).<br />

3. Click on the stop icon and the PCD is now in the stop mode. Confirm<br />

that the run led is off.<br />

4. Click on the start icon to go back into the run mode.<br />

5. Double click on the Input output combination file.<br />

View your program<br />

online:<br />

6. Click on the Asynchronous Data Mode icon. Your program is now<br />

displayed.<br />

7. Activate input 1 and confirm it’s state changes to a high, along with the<br />

state of Output 32. Deactivate Input 1 and activate Input 2. Output 32<br />

should go high again.<br />

8. You have completed your first program!!!<br />

Click on the “Asynchronous<br />

Data Mode” icon.<br />

If you turn on and<br />

off you input 1, the<br />

state will change<br />

on the screen<br />

© Saia-Burgess Controls Ltd. Page 2-8


Workshop PG5<br />

Write your first program<br />

2.6 Summary<br />

You have learned how to:<br />

• Open a new program file.<br />

• Edit a very simple program with one program block. (Program blocks will<br />

be defined later).<br />

• Build your program.<br />

• Download your program.<br />

• Test the program online.<br />

Additional notes in the following pages....<br />

• Build options<br />

• Download options<br />

• Code view mode<br />

© Saia-Burgess Controls Ltd. Page 2-9


Workshop PG5<br />

Write your first program<br />

© Saia-Burgess Controls Ltd. Page 2-10


Workshop PG5<br />

Write your first program<br />

2.7 ADDITIONAL NOTES:<br />

You don't have to know or understand the build options in order to successfully<br />

make a program. However, they are<br />

available if you want to customize the way<br />

your program is built and documented.<br />

Technical<br />

stuff:<br />

To access the options window, activate Tools =><br />

Options.<br />

BUILD<br />

OPTIONS<br />

Each time you build the project you will be asked whether or not you want to<br />

save the project. (We recommend you keep this activated until you become<br />

familiar with PG5)<br />

Stops the build after the first error appears. (If disabled the build will finish the<br />

build process to the end and list all the errors {up to 100}. In any case a<br />

download will be refused).<br />

Downloads the program automatically after a successful build.<br />

Creates a *.MAP file. The MAP file contains statistical information about your<br />

project like lines of code from each program file and the number of text bytes.<br />

Creates a *.lst (list file) during the build process. ( Useful to debug tricky instruction<br />

list programs)<br />

© Saia-Burgess Controls Ltd. Page 2-11


Workshop PG5<br />

Write your first program<br />

Technical<br />

stuff:<br />

You can:<br />

1. Download everything (default)<br />

2. Download only the program blocks that have been changed.<br />

3. Download only the Text or DB segments that have been changed.<br />

DOWNLOAD<br />

The download options can be called from the menu “TOOLS =><br />

OPTIONS” or from the “OPTIONS” button in the “Download Program”<br />

window. (the window above)<br />

DOWNLOAD<br />

OPTIONS<br />

© Saia-Burgess Controls Ltd. Page 2-12


3. PCD Resources<br />

INTRODUCTION: 1<br />

3.1 HARDWARE RESOURCES 1<br />

3.2 INTERNAL (SOFTWARE) RESOURCES 4<br />

3. 3 SYMBOL EDITOR 13<br />

3.4 WORKING WITH SYMBOLS: 17<br />

<strong>Introduction</strong>:<br />

It’s now time to give you a more global view over the elements you can make use<br />

of while writing your application.<br />

The first part is a summary over all the elements we know in SAIA PCD such as<br />

input/outputs or flags, their usage and their address range.<br />

The second part shows you how to use these elements inside the symbol editor.


Workshop PG5<br />

PCD Resources<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Resources<br />

3.1 Hardware resources<br />

Each program is made up of functions, which allow the user to read, write, and<br />

manipulate different kinds of resources. The resources which allow us to interact<br />

with our environment, are called hardware resources.<br />

3.1.1 Digital<br />

inputs and<br />

outputs<br />

I / O<br />

1 bit (0/1) of information<br />

max. number of I/O<br />

PCD1 32 (*64)<br />

PCD2 64/96/128 (*265)<br />

PCD4 512<br />

PCD6 5120<br />

* Only if the PCD is equipped with the input modules E160 or output modules<br />

A460<br />

Inputs and outputs represent signals which are going to, or coming from the<br />

PCD. Inputs show the state of end-switches, pushbuttons, proximity detectors,<br />

sensors, ect. With outputs you can activate valves, lamps, turn on A/C motors,<br />

ect.<br />

You can read and write outputs. Inputs can only be read.<br />

Inputs and outputs are added to the PCD by placing I/0 cards into one of the<br />

designated slots on the PCD. The start address of a slot is defined either by it's<br />

position (PCD1/2 and 4 ) or by switches (PCD 6 ).<br />

The following example turns the output O 64 on if the inputs number I1 and I2<br />

are both high.<br />

Another way to show such functions is by using boolean equations: O 64 =<br />

I 1 * I 2<br />

Instruction list program:<br />

COB 0<br />

0<br />

STH I 1<br />

ANH I 2<br />

OUT O 64<br />

ECOB<br />

FUPLA program:<br />

(FBox: Binary, AND 2 to 10 inputs)<br />

© Saia-Burgess Controls Ltd. Page 3-1


Workshop PG5<br />

Resources<br />

3.1.2 Time<br />

Most of the PCD's have a built in RTC (real time clock ). ( PCD1.M120/130<br />

and all the PCD2/4/6). You can load the date and time into a register with a<br />

special instruction.<br />

The example shows you how to read the time in your program.<br />

Instruction list program:<br />

COB 0<br />

0<br />

RTIME R 1<br />

ECOB<br />

FUPLA program:<br />

(FBox: Time Related, Time )<br />

This program reads the time from the clock and copies the value into register<br />

R1. Look what the value represents:<br />

R 1 = 093510<br />

09 o'clock 35 minutes and 10 seconds<br />

R 2 = 073990210<br />

week 07, day no. 3 ( Wednesday ), the<br />

10th of Feb 99<br />

© Saia-Burgess Controls Ltd. Page 3-2


Workshop PG5<br />

Resources<br />

3.1.3 Interrupt<br />

inputs<br />

Some of our PCD’s have two inputs called INB1 and INB2. Each time you<br />

have a rising edge on one of these inputs, the normal program cycle will be<br />

interrupted and the PCD will execute a special program block called XOB20 or<br />

XOB25 ( XOB20 for INB1 and XOB25 for INB2 ). These interrupt inputs are<br />

on the following PDC's: PCD1.M120/130, PCD2.M120 and PCD6.M3.<br />

These inputs are capable of a frequency up to 1000 times per second.<br />

Instruction list program:<br />

FUPLA program:<br />

COB 0 ; Main program<br />

0<br />

ECOB<br />

XOB 20 ; interrupt INB1<br />

INC R 2 ; increment the register<br />

; R 2<br />

EXOB<br />

( FBox: Integer, Addition )<br />

Normal input cards have special filters on their inputs. These filters protect the<br />

pin from noise with frequencies higher than 50Hz. Therefore you might have a<br />

situation where you can't react on a signal because it is either to short, or<br />

repeated to fast. In this situation, you can use these inputs as an interesting<br />

alternative to expensive special counter cards like the PCD2.H1XX or<br />

PCD4.H1XX. ( these cards count at speeds between 10 and 160 kHz )<br />

© Saia-Burgess Controls Ltd. Page 3-3


Workshop PG5<br />

Resources<br />

3.2 Internal (software) resources<br />

3.2.1 Flags<br />

How to use<br />

Flags in your<br />

program:<br />

1 bit (0/1) of information<br />

F NV ( non volatile )<br />

0 8191<br />

A flag memorizes one bit of information. There is 8192 flags. (0 is a valid<br />

flag). By default, the flags are non volatile. This means that if you turn off the<br />

PCD, and the flag is a 1, when you turn the PCD back on, it will still be a 1.<br />

(Considering that your battery is good). All volatile flags would be reset to a 0,<br />

if the PCD was turned off). If you want a volatile flag or flags, they can be<br />

configured in the software settings. This is explained below.<br />

The following example writes a high (1) into the Flag number 11 as soon as<br />

inputs 1 or 3 is high. Boolean equation: F 11 = I 1 + I 3<br />

Instruction list program:<br />

COB 0<br />

0<br />

STH I 1<br />

ORH I 3<br />

OUT F 11<br />

ECOB<br />

FUPLA program:<br />

(FBox: Binary, OR 2 to10 inputs)<br />

Setup flags:<br />

By default the flags aren’t volatile. If you want them to be volatile, then you<br />

have to specify so in the software settings. (See example)<br />

© Saia-Burgess Controls Ltd. Page 3-4


Workshop PG5<br />

Resources<br />

3.2.2 Registers<br />

32 bit value<br />

Integer : -2 147 483 648 to +2 147 483 647<br />

Floating decimal : -9.22337E+18 to +9.22337E+18<br />

R<br />

NV<br />

0 4095<br />

A register can contain floating decimal or integer values. Registers are extremely<br />

useful for arithmetic operations or operations with analogue values like<br />

measurements and regulation tasks. You can have up to 4096 Registers. They<br />

are non volatile.<br />

In FUPLA, the lines connected to a register have different colors depending on<br />

their content. If they contain a floating decimal value the lines are yellow, if<br />

they contain an integer value, they are green. You can't interact an integer<br />

value, with a floating decimal values. For example you can't add the two together.<br />

One of the values has to be converted into the other’s value, and then<br />

added.<br />

How to use<br />

Registers in<br />

your program:<br />

The following example adds the number 113 to the content of register 12 and<br />

puts the result into register 54:<br />

R 54 = R 12 + 113<br />

Instruction list program:<br />

COB 0<br />

0<br />

ADD R 12<br />

113<br />

R 54<br />

FUPLA program:<br />

(FBox: Integer, ADD)<br />

Setup<br />

Registers:<br />

Dynamic resources allocation is a powerful feature introduced to free you from<br />

having to specify a fixed address for every resource that you need.<br />

Dynamic resources are used by defining a symbol name for a resource without<br />

specifying an address. You won’t need to change these settings until you start<br />

to write large programs with a large number of registers.<br />

You must increase the dynamic space settings in case of assembling errors like<br />

"Auto allocation overflow for type: R".<br />

© Saia-Burgess Controls Ltd. Page 3-5


Workshop PG5<br />

Resources<br />

3.2.3 Constants<br />

32 bit value<br />

Integer: -2 147 483 648 to +2 147 483 647<br />

Floating decimal: -9.22337E+18 to +9.22337E+18<br />

Constants are fixed values that do not change during the program. They are<br />

written into a register.<br />

Example: fix coefficients like PI = 3.1415.<br />

The next example loads the register R 4 with a fixed value of ( 100 ). Then the<br />

register R 4 is divided by 0.25. Because the register R 4 contains an integer<br />

value and we want to divide it by a decimal value ( 0.25 ), you have to convert<br />

R4 into a decimal value. We copy R4 into R3500 (register we are sure is not<br />

being used), convert R3500 into a decimal value, and then divide R3500 by<br />

0.25. The result of the division is placed into R 5. R5 is then copied into R 6,<br />

and R6 is then converted into an integer value.<br />

How to use<br />

constants in<br />

your program:<br />

Instruction list program:<br />

FUPLA program:<br />

COB 0 ;Cyclic organization<br />

0 ; block<br />

LD R 4 ;load 100 into R 4<br />

100<br />

COPY R 4 ;convert the integer value<br />

R 3500 ;from integer to<br />

IFP R 3500 ;floating decimal<br />

0<br />

FDIV R 3500 ;divide the value by 0.25<br />

2.5e-1<br />

R 5 ; and place the result<br />

;into R5<br />

FBoxes: Integer: Move<br />

Converter: Int to float<br />

Floating decimal: Divide<br />

Converter: Float to Int<br />

COPY R 5<br />

R 6<br />

FPI R 6<br />

0<br />

ECOB<br />

;convert the result back to<br />

; integer<br />

© Saia-Burgess Controls Ltd. Page 3-6


Workshop PG5<br />

Resources<br />

3.2.4 Counters<br />

& Timers<br />

31 Bit value ( 0 … 2 147 483 648)<br />

T/C V NV<br />

0 31 1599<br />

Timers and counters can have a value between 0 and 2 147 483 648 (31Bit) and<br />

they share the same address range: 0 to 1599. Usually addresses 0 to 31 is<br />

dedicated to the timers, and addresses 32 to 1599 are dedicated to the counters.<br />

Of course, you can configure this to your own personal settings. The timers by<br />

default, have a time-base of 100ms. (This means that the system will decrease<br />

every timer by one, every 100ms): The time base can be changed in the<br />

“Software Settings”, along with configuring the timer/counter addresses.<br />

Timers are volatile, counters are not.<br />

Timers and Counters can only contain positive values. Their value can be<br />

changed by loading a new value with the LD instruction.<br />

Timer values decrease only. Counters can count up or down, using the instruction<br />

INC/DEC. (Inc Dec ).<br />

Timers and counters can also be used with binary instructions<br />

When a timer or counter contains a non-zero value its state is High (1), when<br />

its content is zero its state is Low (0).<br />

Setup<br />

Timer/Counters:<br />

The distribution of the address range between timers and counters can be altered<br />

in the " Software Settings ". This is also where you can change the timebase<br />

of 100ms<br />

The more timers you declare, the greater the load on the CPU. This is<br />

also true if you lower the timebase. Take this into consideration before<br />

you change the number of timers or lower the timebase.<br />

Example: 100 timers will take about 2% of the CPU’s capacity.<br />

© Saia-Burgess Controls Ltd. Page 3-7


Workshop PG5<br />

Resources<br />

Timer Example:<br />

You have a high signal on Input 4. On the rising edge of this signal you want<br />

to send a high signal out, output 65. This signal will have a duration of 2,5<br />

seconds.<br />

Integer value:<br />

Load the timer:<br />

LD T 1<br />

25<br />

Value displayed by the<br />

output "t" of the<br />

XPluse FBox<br />

Binary value:<br />

Value displayed by the output Q<br />

Instruction list program: FUPLA program:<br />

Solution:<br />

COB 0 ;organization block 0<br />

0 ; time out time<br />

STH I 4 ;If input 4<br />

DYN F 12 ;sees a rising edge<br />

LD T 1 ; load the timer1<br />

25 ; with 2,5 seconds<br />

STH T 1 ;copy timer state<br />

OUT 0 65 ;to the output O65<br />

ECOB<br />

(FBox: Time related, Exlusive Pulse)<br />

Technical stuff:<br />

Time constants<br />

Timers in the SAIA PCD are decremented at a rate defined by the “Software<br />

settings” “Timer” “Timebase”(normally 100ms). The actual time defined by a<br />

constant which is loaded into a Timer changes if the “Timebase” is changed.<br />

This means that if the “Timebase” setting is changed, then all Timer load values<br />

must also be changed. To overcome this problem, the “time” data type can<br />

be used to declare Timer load values. If a time value is used, then the linker<br />

calculates the actual Timer load value according to the “Timebase” settings.<br />

Format:<br />

T#nnnS|MS<br />

Examples: DelayTime EQU T#100MS ;100 milliseconds<br />

OneDay EQU t#86400s ;86400 seconds<br />

© Saia-Burgess Controls Ltd. Page 3-8


Workshop PG5<br />

Resources<br />

Counter Example:<br />

We will program a counter which counts up each time the input 5 receives a<br />

signal. Each time input 6 receives a signal, the counter will count down. (the<br />

counts will be activated on the rising edge of the input signal). The counter can<br />

be set to zero with a high on input 2. We will load the initial count with 3.<br />

This is just an example. If you are a little confused, don’t worry you will understand<br />

it better once we start actually writing some programs.<br />

Load the counter:<br />

LD C 35<br />

3<br />

Integer value:<br />

Increment the counter:<br />

INC C 35<br />

Read the counter content<br />

and display it on the output<br />

LD C 35<br />

0<br />

Binary value:<br />

Q equals high if the counter content<br />

is not zero.<br />

STH C 35<br />

Solution:<br />

Instruction list program: FUPLA program:<br />

COB 0 ;Cyclic organization block<br />

0 ;<br />

STH I 1 ;If input 1 equals 1<br />

LD C 35 ;then load the counter 35<br />

3 ; with 3<br />

STH I 2 ; If input 2 equals 1<br />

LD C 35 ; then load the counter<br />

0 ; with zero<br />

STH I 5 ;If there's a rising edge<br />

DYN F 13 ;on input 5<br />

INC C 35 ;then increment the counter 35<br />

STH I 6 ;If there's a rising edge<br />

DYN F 14 ;on input 6<br />

DEC C 35 ;then decrement the counter<br />

ECOB<br />

( FBox:<br />

Counters, UP-Down pre-set and<br />

clear)<br />

© Saia-Burgess Controls Ltd. Page 3-9


Workshop PG5<br />

Resources<br />

3.2.5 Texts &<br />

Data blocks<br />

TEXT/DB<br />

Main memory<br />

NV<br />

0 3999<br />

Extension memory NV<br />

4000 (PCD4/6) 7999<br />

(PCD2) 5999<br />

(PCD1) 4999<br />

Texts and DataBlocks (DB's ) are non volatile. Texts ( string of characters ) are<br />

used for: Messages on displays, texts you want to send to a pager, initial<br />

strings for modems and so on.<br />

DB's are used for data logging, tables and so on.<br />

Technical stuff:<br />

Where are<br />

Text/DB’s saved?<br />

Register, flags, timers, and counters are handled by the system and stored in a<br />

small RAM apart from the main memory.<br />

DB's and texts on the other hand are stored in the main memory, together with<br />

the user program. If you want to use a FLASH Eprom or a normal EPROM for<br />

your main memory, remember that if you are in run mode, you can read from<br />

this memory but not write to it. Therefore you can't alter the content of your<br />

DB’s ( for example your Data login ). In most cases you won’t bother with<br />

this, but if you know that you are going to read and write from your DB's, then<br />

make sure to use DB's which are stored in the extension memory => address<br />

4000 and up. (This is the extension memory and it is always RAM, which<br />

means you can read and write to it).<br />

See how a Text or DB is declared in a Instruction list program:<br />

Example:<br />

Declaration of<br />

BD’s & Text<br />

TEXT 10 "Bonjour!"<br />

TEXT 11 [7]"Hello"<br />

DB 12 45,46,78,999,0<br />

DB 13 [10]<br />

DB 14 [4] 2,3<br />

;Text number 10 contains the string Bonjour!<br />

;Text number 11 is 7 characters long were from<br />

the last 5 are Hello and the first two are spaces.<br />

;DB number 12 with the 5 integer values:<br />

;45.46,78,999,0<br />

;DB number 13 is 10 values long and they are<br />

zero at start up.<br />

;DB 14 is four values long. The first two are 2 &<br />

3 the second ;two are 0<br />

© Saia-Burgess Controls Ltd. Page 3-10


Workshop PG5<br />

Resources<br />

Example:<br />

Data-logger in<br />

FUPLA<br />

See how you can easily log values from an analogue card into the DB 4010.<br />

Every time the signal "Store" comes up, the analogue value is read and then<br />

written into the DB with the number 4010.<br />

© Saia-Burgess Controls Ltd. Page 3-11


Workshop PG5<br />

Resources<br />

© Saia-Burgess Controls Ltd. Page 3-12


Workshop PG5<br />

Resources<br />

3. 3 SYMBOL EDITOR<br />

Before we start programming we have to make a list of all the elements we are<br />

planning to use (number of inputs and outputs, number of timers and so on).<br />

All these elements have to be known by PG5. This is very helpful to find<br />

elements inside the program files, tell us we have committed a programming<br />

error, or help during the debugging process. Therefore we list all the elements<br />

we are going to use in a central tool called “Symbol Editor”.<br />

We use the expression Symbol rather than element because we want to emphasize<br />

that each element has a name (a symbol). Also, giving all your resources<br />

a name makes it easier to read the program.<br />

Elements of a<br />

resource:<br />

Name of the resource:<br />

(can be up to 80<br />

characters long)<br />

Type of the symbol:<br />

Here you specify what<br />

kind of resource you<br />

are using. For example<br />

Input or Register….<br />

Comment:<br />

ADD a long comment<br />

to every resource.<br />

It makes the<br />

program easier to<br />

read.<br />

Filename where<br />

your symbols belong<br />

too. The symbols<br />

are not known<br />

to files other then<br />

this one.<br />

Address/Value:<br />

You have to tell the PG which input or<br />

output you want to assign to this Symbol.<br />

In the case of internal resources (everything<br />

but inputs and outputs) you don’t<br />

have to specify an address. The system<br />

will choose one for you. This is called<br />

auto allocation.<br />

© Saia-Burgess Controls Ltd. Page 3-13


Workshop PG5<br />

Resources<br />

Group your Symbols:<br />

You can group your symbols if you would like to. It makes the program easier<br />

to read. Just use the right mouse button to add a new group to your symbol<br />

editor and then drag ‘n’ drop the symbols you want into this folder:<br />

EXAMPLE: The Group named “Wastepump” contains several symbols:<br />

Within the program file the group name<br />

will be added in front of the symbol<br />

name. The group name and the symbol<br />

name are separated by a dot (see picture):<br />

© Saia-Burgess Controls Ltd. Page 3-14


Workshop PG5<br />

Resources<br />

Scope of symbols:<br />

Symbols are normally known to one file only (their scope is local). As soon as<br />

you open a program file in an editor, the symbol editor with the appropriate<br />

symbol list is opened too:<br />

Example:<br />

Opening the program file named “Pump Management.src”, automatically<br />

opens the “Pump Management” Symbol Editor.<br />

LOCAL, CPU Global<br />

& Symbols from a<br />

Network Editor:<br />

Local Symbols are only know to the one file they belong to.<br />

© Saia-Burgess Controls Ltd. Page 3-15


Workshop PG5<br />

Resources<br />

Global symbols:<br />

CPU 1<br />

GLOBAL SYMBOLS<br />

Global symbols are know to all the files in the CPU.<br />

Make locak symbols<br />

global:<br />

If you want to use the same symbols in several files, then you have to move the<br />

symbols from the local list to the “GLOBAL” list (just mark some symbols in<br />

the list use the “Make Global” function (right mouse click)). Once a symbol is<br />

listed as “GLOBAL”, you can access it from any file within your project.<br />

Sharing data between two different PCD’s is more complicated than sharing<br />

information between files. You need some kind of network connection between<br />

the two PCD’s. This network connection can be designed in our network editor<br />

(to date we support: Sbus, Profibus DP, Profibus FMS and LON Networks).<br />

The “Network Editor” lists all the symbols in the “Network” list, and you can<br />

use them in your program in order to move data from one PCD to the other.<br />

© Saia-Burgess Controls Ltd. Page 3-16


Workshop PG5<br />

Resources<br />

3.4 Working with symbols:<br />

Writing a Symbol<br />

list:<br />

Open the file you are going to work with. This will also open the Symbol<br />

Editor. Click on Group/Symbol, and then press the “INSERT” button. A new<br />

symbol field is added to the list instantly. Enter the symbol name, type,<br />

address/value, and a comment. Press Enter to confirm your entry, and then for<br />

the next symbol, simply press the insert button. Note: The editor automatically<br />

enters the previous symbol name and address but increments them by 1.<br />

(See the picture below). You can change the comment and accept the name,<br />

type, and address/value, or you can overwrite the entry with a new name,<br />

type, address/value, and comment.<br />

If you already have a list started, and would simply like to add a symbol, just<br />

click on the last symbol, press the “INSERT” button and this will open another<br />

symbol field.<br />

© Saia-Burgess Controls Ltd. Page 3-17


Workshop PG5<br />

Resources<br />

Add several symbols<br />

to the Symbol<br />

editor:<br />

You can add a range of symbols to your list if you want. Just enter the symbol<br />

name with the first and the last element number as shown, (Drainpumps1..8 O<br />

32 ;Pumps in building F). 8 is the number of symbols, O is for output, and 32<br />

is the starting address of the range you are entering. Press the “Enter” button,<br />

and the symbol editor will complete the list.<br />

Another option is to enter a symbol<br />

and address in the symbol editor,<br />

open the options window, (click on<br />

Symbols, then Options) enter the<br />

symbol and select “ Create reference<br />

for symbol”.<br />

Click OK, and then highlight the<br />

symbol in the editor. Press the<br />

Insert button, the symbol is entered<br />

but incremented by one. This can be<br />

helpful if you have a string of inputs<br />

or outputs and you want or need to<br />

change the physical address location,<br />

in the software, you would just<br />

change the first one, and all the<br />

others would follow.<br />

© Saia-Burgess Controls Ltd. Page 3-18


Workshop PG5<br />

Resources<br />

Import the Symbols<br />

from the<br />

“EQUATE” statements:<br />

If you have old PG4/3 “Instruction List” files with “equ” statements, then simply<br />

mark the statements and import the elements by clicking on the right mouse<br />

button and choose the option:<br />

The symbols are then moved from the program file into the symbol list.<br />

Import the Symbols<br />

from an other<br />

application:<br />

Or you can import your symbols from another program (Electro CAD) and use<br />

these symbols inside your project. This makes your documentation consistent<br />

over the entire project, and your electrical drawings will have the same labels<br />

in electrical drawing as well as in the program code. Simply use the export<br />

function in your CAD to export the symbols into a text file and import them<br />

into the symbol editor again.<br />

© Saia-Burgess Controls Ltd. Page 3-19


Workshop PG5<br />

Resources<br />

Add a symbol<br />

while typing your<br />

program in Instruction<br />

list:<br />

You can simply write your program and each time you use a new symbol, add<br />

type address and comment to the program (The option in „Tools“ => „Options“<br />

must be activated). Once you press “ENTER” the symbol will be moved into<br />

the list.Example:<br />

ENTER<br />

An other nice thing you can do in Instruction List is replacing an element with<br />

a fix address by the symbol from the table:<br />

SHIFT+SPACEBAR<br />

© Saia-Burgess Controls Ltd. Page 3-20


Workshop PG5<br />

Resources<br />

Add a symbol<br />

while typing your<br />

program in<br />

FUPLA:<br />

The FUPLA Editor works exactly the same. You can enter new symbols to the<br />

Symbol List directly from the FUPLA input/output field.<br />

SYNTAX:<br />

<br />

Write the Symbolname, the<br />

type, a comment and press<br />

“ENTER”<br />

And evidently you can also replace fix addresses by the symbol name by using<br />

the “SHIFT + SPACEBAR” key shortcut.<br />

© Saia-Burgess Controls Ltd. Page 3-21


Workshop PG5<br />

Drag-n-drop symbols:<br />

Resources<br />

You can drag-n-drop symbols from the symbol editor into any editor.<br />

Auto complete<br />

symbols:<br />

If you use long symbol names your program will become easier to read. On the<br />

other hand it will be annoying if you have to re-enter the long symbol name<br />

each time you use it in the program. Therefore you can simply enter the first<br />

letters of a symbol, and then lookup all the symbols which match those letters,<br />

by using the keys “CTRL and SPACEBAR”:<br />

Example:<br />

ENTER<br />

CTRL + SPACE<br />

This works in Instruction list as well as in the FUPLA editor.<br />

Auto allocation:<br />

Until now weve always declared the elements like this:<br />

Symbol name Type Address<br />

Comment<br />

Example: Pumpspeed R 2000 ;Speed in l/min<br />

If you are entering any symbol type, other than an input or an output, you do<br />

not have to enter an address for them. If you don’t enter an address then the<br />

PG5 will give an address to your element at build time. We call this autoallocation.<br />

The PG5 will look up in the software settings the address range<br />

configured for that element, and assign one during the build process.<br />

Example:<br />

You declare a register in your program and you don’t give an address to it:<br />

The register will get a number between 3500 and 4095 during the build process<br />

because in the “Software” settings we declared the dynamic space between<br />

3500 and 4095 for registers.<br />

© Saia-Burgess Controls Ltd. Page 3-22


Workshop PG5<br />

Resources<br />

Enter Texts:<br />

In order to add a text to your PCD you have first to declare a text. You can do<br />

so by entering x after the symbol name. Example:<br />

Double click on the symbol icon to open the text editor:<br />

Don’t forget to use “ “ otherwise your text won’t be valid.<br />

Enter DB’s:<br />

DBs have a special editor too. Read the help for more information<br />

© Saia-Burgess Controls Ltd. Page 3-23


Workshop PG5<br />

Resources<br />

Search for a<br />

symbol:<br />

Often a symbol will be used several times inside the program file or even in<br />

several different files. After a successful build of your program you can “right<br />

mouse button click“ on any symbol and start the “Cross reference” function.<br />

The cross-reference will<br />

list you the<br />

(filename and line number) and how many times a certain symbol was used.<br />

Double-click on any of the listed locations and the program file will open and<br />

the cursor will be on the symbol.<br />

The place where the<br />

symbol was defined.<br />

(Normally<br />

the Symbol editor)<br />

Program filename and<br />

line where the symbol<br />

OILPUMP was used.<br />

Written means<br />

that the symbol<br />

on this line contains<br />

the result of<br />

an operation<br />

The cross-reference tool not only works in SEdit and Fupla but also in the different<br />

views which are available in the project manager.<br />

Example: Block-Structure view<br />

© Saia-Burgess Controls Ltd. Page 3-24


Workshop PG5<br />

Resources<br />

Arrange your<br />

symbols:<br />

Rearrange in the<br />

“List View”:<br />

Symbols are listed in the order you enter them. This way, the symbols you enter<br />

at the same time will stay together even if you add new symbols some time<br />

later.<br />

You can rearrange your symbols by simply changing from “Group view” to<br />

“List view”. Simply click on one of the tabs in order to arrange them by: Name,<br />

Type, Address or Comment<br />

Display with filter:<br />

Once you change back to “Group View” the old order is re-established.<br />

If you have a lot of symbols in your list it’s sometimes convenient to display<br />

only certain types or only symbols with a certain name.<br />

The filter function selects the view. As soon as the filter is active your symbols<br />

will have a different icon.<br />

Example: Symbol editor shows all Elements<br />

Filter is active>Not all the symbols are displayed<br />

© Saia-Burgess Controls Ltd. Page 3-25


Workshop PG5<br />

Resources<br />

Symbol names:<br />

Symbol names are names which can be assigned to elements in the PCD (inputs,<br />

outputs, flags, registers, COBs etc). Symbol names can be up to 80 characters<br />

long and are not case sensitive unless they contain foreign characters.<br />

MotorOn is the same as MOTORON, but GRÜN is not the same as grün.<br />

Symbols have to start with a letter ( a-z, A-Z) a number won't be accepted.<br />

Within the symbol you can mix numbers, letters and underlines "_" as you<br />

wish. You cannot have a space in a symbol name.<br />

Reserved Words cannot be used as symbol names.<br />

Reserved Words:<br />

The following words are reserved, and cannot be used as symbol names:<br />

♦ Assembler declarators, e.g. PUBL, EXTN, EQU, DEF, LEQU, LDEF,<br />

MACRO, ENDM, EXITM etc.<br />

♦ Medium control codes and data types (I, O, F, R, C, T, K, M, COB, FB,<br />

TEXT, X, SEMA, DB).<br />

♦ MOV instruction special codes (N, Q, B, W, L, D).<br />

♦ Condition codes (H, L, P, N, Z, E).<br />

♦ All instruction mnemonics.<br />

♦ Pre-defined symbols.<br />

♦ Internal symbols used for automatic resource allocation, which begin with<br />

underscores, e.g.<br />

______TEXT, _________F.<br />

Internal __CSTART__ symbol, used for $$ assignments.<br />

© Saia-Burgess Controls Ltd. Page 3-26


Workshop PG5<br />

Resources<br />

Summary:<br />

In the PCD we have the following elements to work with :<br />

Element:<br />

Shortform:<br />

Amount:<br />

Specialities:<br />

Inputs I Depends on PCD.<br />

Max = 8191<br />

Outputs O Depends on PCD.<br />

Max = 8191<br />

Registers R 4095<br />

Share the same addresses<br />

Flags F 8191 You can set a range of<br />

volatile flags if you like<br />

to.<br />

Constants K 16383(32Bit) or<br />

8191 (13Bit(##)<br />

Timers T 0 to X<br />

Counters C X to 1599<br />

Texts X 0 to Y<br />

DataBlocs DB Y to 3999<br />

RAM Texts RAM X 3990 to Z<br />

RAM Data RAM DB Z to 4999<br />

Blocs<br />

Share the same addresses.<br />

First timers<br />

then Counters<br />

Share the same addresses.<br />

First texts then<br />

DB’s<br />

Share the same Address<br />

range.<br />

PCD 2 goes up to 5999<br />

PCD 4/6 go up to 7999<br />

Every element ( input / output / register / timer/ ect) in your project can have a<br />

name, these names are called SYMBOLS. There are:<br />

• Symbols from a Network editor<br />

These symbols are known to all the PCD’s in the Workspace. They are created<br />

in one of the network editors like “S-Net”.<br />

• GLOBAL Symbols<br />

These Symbols can be used in every file of the current project. Each project<br />

has it’s own project-shared symbols.<br />

• LOCAL Symbols<br />

These symbols can only be used inside the active program file. Each program<br />

file has it’s own local symbols.<br />

You can search for symbols. You can drag and drop symbols from one editor to<br />

the other. And you can import/export symbols.<br />

© Saia-Burgess Controls Ltd. Page 3-27


Workshop PG5<br />

Resources<br />

© Saia-Burgess Controls Ltd. Page 3-28


EXERCISE<br />

INTRODUCTION: 1<br />

GENERAL QUESTIONS “RESOURCES” 1<br />

<strong>Introduction</strong>:<br />

You have learned a lot about resources now. We will start using them right away<br />

in the next chapters. Therefor we will limit ourselves to three questions of more<br />

general nature.


Workshop PG5<br />

Exercise Chapter3<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Exercise Chapter3<br />

General questions “Resources”<br />

Question1:<br />

What’s the difference between a counter and a timer once you load them with a<br />

value?<br />

Question2:<br />

What happens if you decrement a counter which contains the value 0 ?<br />

Question3:<br />

What went wrong when you build your program and you’ll get the error message:<br />

Fatal Error 368: Auto-allocation overflow for type: R<br />

Solution2:<br />

Timers are decreased by the system every X milliseconds. (Time can be set in<br />

the Softwaresettings).<br />

Counters are decreased/increased in the user program using the DEC / INC<br />

instruction.<br />

Solution:<br />

Nothing. Timer/Counters only contain positive values. Therefore the counter<br />

value will stay unchanged at 0.<br />

Solution:<br />

The dynamic range for registers in the “Software” settings is too small.<br />

There are too little<br />

addresses in the dynamic<br />

space. Put the<br />

first address to 3000.<br />

In such a situation the<br />

field called “Free”<br />

will be at 0.<br />

© Saia-Burgess Controls Ltd. Page 3E-1


Workshop PG5<br />

Exercise Chapter3<br />

© Saia-Burgess Controls Ltd. Page 3E-2


4. FUPLA programming<br />

INTRODUCTION: 1<br />

4.0 CREATE A NEW PROJECT AND A NEW FUPLA FILE 1<br />

4.1 THE FUPLA EDITOR 2<br />

4.2 EDIT YOUR FUPLA PROGRAM: 3<br />

4.3 EDIT PAGES 5<br />

4.4 BASIC INSTRUCTIONS: 7<br />

4.5 WRITE YOUR FIRST FUPLA PROGRAM 11<br />

4.6 BUILD AND DEBUG YOUR PROGRAM 14<br />

4.7 DEBUG YOUR PROGRAM ONLINE 15<br />

4.8 SOME RULES: 19<br />

<strong>Introduction</strong>:<br />

The most straight forward way to introduce someone to the world of PLC programming is to start<br />

with Fupla programming. Fupla (FUnction PLAn) is a graphical environment which enables you<br />

to draw your programs rather then write them.<br />

Every instruction is represented by an icon which we call an FBox (Function BOX). The programming<br />

itself is simply done by drawing the connection between these different FBoxes. We<br />

do have several hundred of these boxes available. These boxes are organized by libraries. The<br />

basic library is installed standard with the PG5. Other libraries can be added later:<br />

The other libraries you can buy are:<br />

HVAC library: A set of over 200 FBoxes for heating applications.<br />

MODEM library: Enables you to use one or several modems with your PLC. This enables<br />

you to build a network of PLC’s, exchanging data over the telephone line. You can<br />

send SMS or pager messages, and you can even use a remote control with your PLC<br />

using the dial tone of your telephone.<br />

FBoxes for special I/O modules. A lot of our I/O cards such as motor control cards<br />

(Hxx) are delivered with a set of Fboxes. With the help of these FBoxes you can set up<br />

your hardware within minutes.<br />

© Saia-Burgess Controls Ltd. Page 4-1


© Saia-Burgess Controls Ltd. Page 4-2


Workshop PG5<br />

FUPLA programming<br />

4.0 Create a new project and a new FUPLA file<br />

Choose to open a<br />

new project:<br />

Open a new program<br />

file:<br />

To open a new program file in this project, click on the " New File" button or use<br />

the right mouse button.<br />

OR<br />

© Saia-Burgess Controls Ltd. Page 4-1


Workshop PG5<br />

FUPLA programming<br />

Open the editor:<br />

Double-click the new file and the “FUPLA” editor will open.<br />

4.1 The FUPLA editor<br />

Note: FUPLA files have the extension “filename.FUP”<br />

The editor:<br />

Let’s have a quick look at the editor. The program is executed from the top to the<br />

end and from left to right. The input symbols are on the left and the results are written<br />

to the right. Each FUPLA file can have several program blocks and up to 200<br />

pages total.<br />

Program page:<br />

You can draw your programs<br />

inside this field. The program is<br />

organized by pages. The<br />

FUPLA file can have up to 200<br />

pages.<br />

Input fields:<br />

All the input values<br />

are listed on the left.<br />

Output fields:<br />

All the results are<br />

transferred to the<br />

symbols on the right.<br />

The block type (COB, PB,<br />

XOB, ST or TR) and number<br />

are shown on the top.<br />

The page name and number<br />

are shown also.<br />

Symbol Editor :<br />

The input and output<br />

fields interact with the<br />

symbol editor.<br />

© Saia-Burgess Controls Ltd. Page 4-2


Workshop PG5<br />

FUPLA programming<br />

4.2 Edit your Fupla program:<br />

Toolbar:<br />

File handling and<br />

FBox editing tools<br />

Drawing tools<br />

Build your program<br />

and change to project<br />

manager<br />

Block, Page and Symbol<br />

organisation windows<br />

Go Online,<br />

Run, Stop,<br />

Step-by-<br />

Step<br />

Go from page to page.<br />

Insert page. Grid. Zoom<br />

Page<br />

Edit a contact:<br />

1. Click on the "LADDER" icon<br />

2. Choose your function.<br />

3. Place your contact on the drawing area and<br />

click the left mouse button in order to release it.<br />

4. For more information double-click on the<br />

specific function.<br />

1.<br />

2.<br />

4.<br />

© Saia-Burgess Controls Ltd. Page 4-3


Workshop PG5<br />

FUPLA programming<br />

Edit a FUPLA<br />

function:<br />

1. Start the Fbox mode by clicking on the "FBox" icon.<br />

2. Choose a family and then a function within<br />

the family.<br />

3. Place the Fbox on the drawing area by<br />

clicking the left mouse button.<br />

2. Family<br />

1.<br />

4. For further information right-click the Fbox<br />

or the FBox Name on the selection window<br />

Function<br />

4.<br />

Connect the<br />

functions<br />

(first solution)<br />

Connect the<br />

functions<br />

(second solution)<br />

Erase a line or<br />

a function.<br />

1. Click on the “Select” icon.<br />

2. Move your pointer on the Fbox and push the left<br />

mouse button. ( keep the button pressed )<br />

3. Now you may move the Fbox to the desired location.<br />

4. Once two connection points touch each other they<br />

are connected.<br />

1. Click on the “Lines” icon.<br />

2. Place the pointer on the departure point of your<br />

connection and click the left mouse button.<br />

3. Click the left mouse button each time you want to<br />

change direction.<br />

4. Once you arrive to the other connection point just<br />

press the left mouse button a last time and the two<br />

points are connected.<br />

5. If you want to stop editing the line then just press the right<br />

mouse button.<br />

Click on the "Eraser" icon, and click on the part you<br />

would like to delete.<br />

3.<br />

2. 3.<br />

1.<br />

2.<br />

4.<br />

1.<br />

4.<br />

© Saia-Burgess Controls Ltd. Page 4-4


Workshop PG5<br />

FUPLA programming<br />

4.3 Edit Pages<br />

The FUPLA editor organises it’s programs in pages. Each file can have up to<br />

200 pages.<br />

Adding a page to<br />

your program:<br />

When you need to add a page to your program click on Page of the tool bar or<br />

place the curser in the middle of the page (in a blank area) and click the right<br />

mouse button. The pull down menu’s are displayed below. There is two options<br />

here, you can insert the page before the current page, or you can insert a<br />

page after the current page. Simply click on the one you want.<br />

You can also use the PageNavigation Window.<br />

Document<br />

your pages:<br />

Document the pages as you<br />

complete them. It only takes a moment, and can really be useful when you want to<br />

move between different areas of the program file. You will activate the pull down<br />

menu’s as you did to add a page, then highlight and click on Page Properties.<br />

Give the page a name and a comment that lets you know what part of the program is<br />

on the page. Under description you can go into a little more detail about the operation<br />

of the page.<br />

© Saia-Burgess Controls Ltd. Page 4-5


Workshop PG5<br />

FUPLA programming<br />

Navigate<br />

from page to<br />

page:<br />

There is a couple of ways to move from page to page in a program file.<br />

The last three icons on the far right of the tool bar are for this process.<br />

The 2 arrows will scroll you through the pages one at a time. The arrow pointing to<br />

the left goes to a previous page, and the arrow pointing to the right goes to the next<br />

page. When an arrow is white, this is an indication that there is another page in that<br />

direction. If the arrow is gray, than that means there are no pages in that direction.<br />

If you have many pages, then it’s easier to use the Page Navigation Window.<br />

If you have documented your pages, they will be listed in the Page Index. Our display<br />

only shows one page, but if you have several pages, simply highlight the one<br />

you want to bring up and either double click on it, or click on Goto.<br />

© Saia-Burgess Controls Ltd. Page 4-6


Workshop PG5<br />

FUPLA programming<br />

4.4 Basic Instructions:<br />

It would take too long to explain each and every instruction inside the Standard Library<br />

(there are over 200 FBoxes). With time you’ll get to know more and more of<br />

these FBoxes. Read the Technical Information 26/367 E1 for a complete overview.<br />

Still there are two or three Families you have to know right from the start.<br />

The Binary functions:<br />

Word functions:<br />

Analogue values:<br />

You will learn, that there are two different ways to<br />

draw your Programs. (Using FBoxes from the binary<br />

family “FUPLA” or using Contacts “Ladder”)<br />

You’ll learn to know the most important families for<br />

basic register handling and basic arithmetic.<br />

Read and write analogue values from and to your<br />

Wxxx cards.<br />

FBoxes are grouped in different libraries and each library has different families with<br />

FBoxes.<br />

FBOX Selection:<br />

The family selection lists five to twenty<br />

FBoxes in logical order.<br />

PG5 is delivered with a standard library containing<br />

over 200 FBoxes. You can add other<br />

libraries such as Modem or HVAC<br />

Binary Instructions:<br />

Today every PLC Company has some kind of graphical programming tools. There<br />

are basically two different ways to write your programs in graphical environment:<br />

FUPLA or LADDER<br />

(FUPLA vs.<br />

LADDER):<br />

There are no differences between FUPLA and LADDER (also known as Contact<br />

and Logic). FUPLA and LADDER are just two different ways to represent the<br />

same functionality. Whereas LADDER comes from the time we use to work with<br />

relays and hard wire our functions. FUPLA shows the same thing in a logical approach.<br />

In Anglo-Saxon countries you'll usually find that LADDER is more common.<br />

In the continental countries FUPLA is more common. PG5 has implemented<br />

the two into the same editor.<br />

© Saia-Burgess Controls Ltd. Page 4-7


Workshop PG5<br />

FUPLA programming<br />

FUPLA<br />

LADDE R<br />

In FUPLA you always have all the inputs<br />

of an operation on the left side of the<br />

drawing and the outputs on the right side<br />

of the drawing. Boxes then represent the<br />

function inside the drawing area. These<br />

boxes are called FBoxes (FUNCTION<br />

BOX)<br />

In LADDER you'll find a power rail on<br />

the left side and a ground rail on the right<br />

side. The inputs and outputs are represented<br />

by contacts and coils, which are<br />

situated inside the drawing. The logical<br />

functions then are realized by the way you<br />

connect the contacts.<br />

Although the power rails are not shown in<br />

the editor, the LADDER works like<br />

every other LADDER editor. As soon as<br />

you connect a contact to the left, the<br />

input box is considered as a power rail.<br />

Turn on the output number 32 (O 32) as soon as the inputs number 1 (I 1) and 0 (I 0)<br />

are high.<br />

Input<br />

fields<br />

Program<br />

area<br />

Output<br />

fields<br />

The input field is<br />

considered as a<br />

power rail as<br />

soon as a contact<br />

is connected to it.<br />

If you wish<br />

you can connect<br />

the coil to<br />

the right<br />

These two examples have the same functionality. As soon as it comes to data types<br />

other than binary, you won’t have this distinction anymore. (This is also true for RS<br />

Logic or S7).<br />

Note: Lines and connections which represent binary values are always drawn red.<br />

© Saia-Burgess Controls Ltd. Page 4-8


Workshop PG5<br />

FUPLA programming<br />

Besides binary, the most important families are:<br />

INTEGER:<br />

All the FBoxes you’ll ever need for arithmetic with integer values. Also functions<br />

such as compare values or move register content from one register to the next.<br />

Note: Lines which contain an integer value are green.<br />

FLOATING<br />

DECIMAL:<br />

FBoxes for arithmetic operations such as Sinus Log etc. Note: Lines which contain<br />

decimal values are yellow.<br />

CONVERTER:<br />

COUNTERS:<br />

These FBoxes not only convert Integer values to decimal values and vice versa, but<br />

also convert the content of your register into formats such as BCD, IEEE, decimal<br />

and so on.<br />

Groups all the basic counters as specified in the norm IEC 1131.<br />

TIME RELATED:<br />

Groups all the basic timers as specified in the norm IEC 1131 plus some nice additional<br />

timers time related FBoxes like “Chronometer”; “Cycle Time measurement”<br />

and functions for the build in real time clock.<br />

© Saia-Burgess Controls Ltd. Page 4-9


Workshop PG5<br />

FUPLA programming<br />

© Saia-Burgess Controls Ltd. Page 4-10


Workshop PG5<br />

FUPLA programming<br />

4.5 Write your first FUPLA program<br />

Open the file:<br />

At the beginning of this chapter (4), we made a new file called: "Blink with output".<br />

We will write our first code in this file.<br />

GOAL:<br />

We will turn on a pump (Oilpump signal O 32), if the oil level becomes too high<br />

(OilHigh signal Input I 0) and if the machine is in conditional Run (Cond_Run signal<br />

Input I 2) or normal run (NormalRun signal Input I 1). The pump must not run if<br />

there is a emergency stop (Emergency signal Input I 7).<br />

As long as the pump is running a signal lamp will blink. The lamp is connected to the<br />

output 33 (PumpRun_Signal O 33)<br />

Double-click on the file called: "Blink with output.fup" and the FUPLA editor will<br />

open.<br />

Prepare the symbols:<br />

Before we start to write our program, we have to make a list of the symbols we are<br />

planning to use. Enter the following symbols into the Symbol Editor: (Refer to page<br />

3-13 if you need help on entering symbols)<br />

Now the programming<br />

begins:<br />

The pump runs if the machine is in conditional run OR normal run:<br />

Select the “OR” FBox from the family “Binary” and draw the first combination:<br />

© Saia-Burgess Controls Ltd. Page 4-11


Workshop PG5<br />

FUPLA programming<br />

Now we make the connections to turn on the pump if one of the above signals is<br />

active, AND if the oil level is too high, AND if there is NO emergency signal.<br />

Select the “AND” FBox from the “Binary” family and place the FBox behind the OR<br />

function and click ONCE with the left mouse button:<br />

The “AND” FBox is now placed behind the OR function. Move the mouse pointer<br />

downward and the FBox stretches, giving you the choice of two to ten inputs. If<br />

you click a second time the FBox is drawn to the board. Draw a FBox with three<br />

inputs:<br />

Add the symbols to the drawing and connect the missing links:<br />

Drag-n-Drop these<br />

from your symbol<br />

list.<br />

© Saia-Burgess Controls Ltd. Page 4-12


Workshop PG5<br />

FUPLA programming<br />

Invert binary signals:<br />

In the event of an emergency stop, the motor must not run. To achieve this,<br />

we have to invert the emergency stop signal.<br />

Activate the “Invert” tool and click on the line pin of the AND FBox:<br />

Calling the help on<br />

FBoxes:<br />

The only thing missing, is the blinking lamp.<br />

Add a blinker from the “Blinker” family (For more information on the different blinkers,<br />

right click on the FBox Name in the FBox Selection Window or place the<br />

FBox on the drawing board and double click on the FBox:<br />

Take the FBox “Blink dely T” and add it to the drawing.<br />

The "Time Value" is always given in 100<br />

ms.<br />

Example: If you enter a 10 in the column<br />

“Address/Value", of your symbol list that<br />

means that the Blinker will blink in 1.0 second<br />

intervals. Add this to your symbol<br />

editor list.<br />

An “En” input on a FBox<br />

always stands for Enable.<br />

Example:<br />

The output Q will only blink<br />

if the signal connected to En,<br />

stays high.<br />

© Saia-Burgess Controls Ltd. Page 4-13


Workshop PG5<br />

FUPLA programming<br />

4.6 BUILD and debug your program<br />

BUILD:<br />

Once you have finished the drawing, you can compile the entire program by clicking<br />

on the BUILD button.<br />

You can use the build button from the<br />

program editor or from the<br />

Project Manager. It is on both tool<br />

bars.<br />

Message Window:<br />

The message window will show you all the information you'll need:<br />

If you have entered the<br />

program correctly then the<br />

message window should<br />

now tell you:<br />

Build successful. Total<br />

errors: 0 Total warnings: 0<br />

If there are any errors in the drawing, then it will be displayed in red letters. Click<br />

on the red letters, and it will take you to the error in your program.<br />

© Saia-Burgess Controls Ltd. Page 4-14


Workshop PG5<br />

FUPLA programming<br />

4.7 Debug your program online<br />

Believe it or not but programs tend to have errors. ( this is also true for our competitors<br />

). Therefore we have prepared a number of online functions which come in<br />

handy when you debug your program. Following is an explanation of these functions.<br />

Start/Stop your<br />

PCD:<br />

1. Download your program<br />

2. Go online.<br />

3. Start and stop your PCD.<br />

As you start and stop the PCD,<br />

observe the run led on the front of<br />

the PCD.<br />

View your program<br />

online:<br />

The logical state of binary values is displayed by thick and thin lines. Highlighted<br />

(thick) lines are high and logic zero is displayed by a thin line.<br />

You cannot edit your program while you are online.<br />

© Saia-Burgess Controls Ltd. Page 4-15


Workshop PG5<br />

FUPLA programming<br />

Display values<br />

while your online:<br />

If you have programs with integer or decimal values, you can monitor the content of<br />

the line by inserting a probe.<br />

Just click on a line and the actual value will be displayed.<br />

By double clicking on a probe you can activate the "Probe Display Format" window,<br />

where you can choose the format you would like to have displayed.<br />

Step by step<br />

Tests:<br />

Once your online with a program, you can also set break points in your program.<br />

1. Go online<br />

2. Choose the menu "MODE" and switch from "Set Probe " to " Set Breakpoints"<br />

3. Your pointer changes and you can set breakpoints where you wish. The program<br />

will stop at the break points and will wait for further instructions.<br />

4. Each time you press "F11" or the menu "Online" "step by step", the PCD executes<br />

one single instruction.<br />

© Saia-Burgess Controls Ltd. Page 4-16


Workshop PG5<br />

FUPLA programming<br />

F11<br />

F11<br />

5. F12 will start the PCD and will execute nonstop all the instructions until the<br />

next break point.<br />

6. Clicking on the breakpoint for a second time makes the breakpoint disappear.<br />

© Saia-Burgess Controls Ltd. Page 4-17


Workshop PG5<br />

FUPLA programming<br />

© Saia-Burgess Controls Ltd. Page 4-18


Workshop PG5<br />

FUPLA programming<br />

4.8 Some rules:<br />

1. Each type has it's own color. Binary => Red<br />

Integer => Green<br />

Floating decimal => Yellow<br />

2. You cannot connect different data types together but, you can convert<br />

values from one type to the other.( see FBox Family " Converter" )<br />

3. You cannot draw loops.<br />

4. Your not allowed to define outputs without connecting them to a function.<br />

5. You cannot connect an input field directly to an output field. To do this,<br />

you would use a "MOVE" FBox.<br />

There are "MOVE" FBoxes for binary, integer and decimal values.<br />

( See corresponding family )<br />

© Saia-Burgess Controls Ltd. Page 4-19


Workshop PG5<br />

FUPLA programming<br />

6. Dynamic inputs are marked with a triangle on the inputs:<br />

Dynamic inputs are inputs which only react on a rising edge. If you want<br />

an input to react on the rising edge and the specific input isn't dynamic,<br />

then you can add a "Dynamize" FBox in front of the input<br />

( Family Binary )<br />

In LADDER a dynamic contact looks like this:<br />

( rising edge )<br />

7. The program is read from the top left corner of the 1 st page, to the bottom right<br />

corner of the last page. You can never jump inside a FUPLA program. If you wish<br />

to execute program parts conditionally then you have to structure your program in<br />

blocks. (Read the chapter Program structures)<br />

If you want to know which FBox is executed in which order then click the menu<br />

"Page" "FBox Priorities”<br />

8. A couple of notes on the symbols in the left and right columns of the program page<br />

(input and output fields). As space is limited, the details of the symbol cannot be<br />

displayed all the time. You can view the details by placing the cursor on the symbol<br />

field for one second.<br />

Also, if you change the symbol name in the drawing (input or output field) then the<br />

symbol in the symbol editor won’t be affected. If you change the symbol name,<br />

type, address, or comment in the symbol editor, then this will change the name,<br />

type, address, or comment of all the input/output fields which hold this symbol<br />

name.<br />

© Saia-Burgess Controls Ltd. Page 4-20


EXERCISE<br />

INTRODUCTION: 1<br />

FUPLA PROGRAMING EXAMPLES: 1<br />

TIMERS AND COMPARE FUNCTIONS 13<br />

COUNTERS AND BLINKER : 17<br />

<strong>Introduction</strong>:<br />

The time has come to start with the real programming. In each example we'll try to<br />

reach a new goal. Refer to the manual if you run into problems.


Workshop PG5 Exercise Chapter 4<br />

© Saia-Burgess Controls Ltd.


Workshop PG5 Exercise Chapter 4<br />

Fupla Programing Examples:<br />

In chapter 4, you learned how to open a Fupla file, and enter the program content.<br />

The following is some examples to help you get comfortable with drawing a program,<br />

and to introduce you to a few of the F-boxes and their function.<br />

AND Gates:<br />

1. Open the project “Chapter 4” ( this is the project you opened at the begining of<br />

chapter 4).<br />

2. Create a new file and name it AND_GATES. Then open it.<br />

3. Enter the following symbols into the Symbol Editor list:<br />

4. Click on the F-box selector.<br />

Available F-<br />

box families.<br />

Click here to display<br />

all the available<br />

functions of active<br />

the family.<br />

© Saia-Burgess Controls Ltd. Page 4E-1


Workshop PG5 Exercise Chapter 4<br />

Highlight and<br />

click on Binary<br />

Hightlight and<br />

click on “And”<br />

You should now have the “And” symbol on the program page. You can move it to<br />

any location on the page by moving your mouse. When you have it where you want<br />

it, click the left mouse button one time, and this will paste the symbol to this location.<br />

Move the mouse vertically to choose the number of inputs you want. Minimum<br />

is 2 and maximum is 10. Once you have the inputs you want, click on the left mouse<br />

button, and the symbol is set. You can now highlight the symbol, and move it horizontally<br />

but only horizontally. (You have to click and hold the button on)<br />

Place one AND gate with 2 inputs and one AND gate with 4 inputs on the program<br />

page.<br />

© Saia-Burgess Controls Ltd. Page 4E-2


Workshop PG5 Exercise Chapter 4<br />

In the symbol list, highlight each symbol and drag and drop them in the columns on<br />

the sides of the program page. Left side or column is for inputs and the right side is<br />

for outputs.<br />

You should now have a display that matches the one above.<br />

Now we can draw the connections. Click on the Line Mode Icon<br />

This will activate a black dot on the page. You can move this dot to the starting<br />

point of your connection, click the left mouse button one time, this will paste the<br />

beginning point. Move the mouse to the next point where you want to make a connection<br />

or change direction. Click left mouse button. (note: you can only move horizontally<br />

or vertically). Follow this format until you get to the final destination of the<br />

connection. Double click the left mouse button and the connection is complete.<br />

Follow this format until all the connections are complete. Your display should be<br />

similar to the one below.<br />

© Saia-Burgess Controls Ltd. Page 4E-3


Workshop PG5 Exercise Chapter 4<br />

Next:<br />

1. Build and donwload the program. (If you need a little help with<br />

building or downloading, refer back to chapter 2).<br />

2. Go on line.<br />

3. Activate the run mode. (refer to chapter 2 for help)<br />

Observing the led’s on your PCD, activate input 0 and input 1. Led 0 and led one<br />

should be on. Also, Output 0 (led 32) should be on.<br />

Turn input 0 and input 1 off, and activate input 2 and input 3. Led 2 and led 3<br />

should be on, but no output leds should be on.<br />

Leave input 2 and input 3 on, and activate input 0 and input 1. Now input led 0,<br />

led 1, led 2, and led 3, should be on, along with output 0 and output 1. (led 32<br />

and led 33)<br />

Binary Inverter:<br />

Using the same program, we will introduce the binary inverter. The binary inverter,<br />

converts the logic 1 or high, to a logic 0 or low, and vice-versa.<br />

1. Deactive the run mode, and go offline.<br />

2. The binary inverter is located on the toolbar of the Fupla editor. The icon is<br />

.<br />

3. Click on the icon and this symbol will be displayed.<br />

4. Position the tip of the arrow where you would like to insert the inverter.<br />

Click the left mouse button one time and this will paste the invert symbol<br />

to the pin. Position the pointer on the symbol and click the left button to<br />

remove the symbol.<br />

Place an inverter symbol to the AND gate of your program to match the display<br />

above. Build and download the program, go online, and activate the run mode. In<br />

the previous exercise, All the inputs had to be high to activate output 1. (Led 33).<br />

Now, input 1, input 2, and input 3 have to be high, and input 0 has to be low, to<br />

activate output 1. (Led 33)<br />

Spend a little time inserting the inverter symbol, creating different scenarios.<br />

Confirm the operation of the different scenarios by testing your programs. You will<br />

find that this symbol is a very useful and commonly used symbol.<br />

Below are a few examples.<br />

© Saia-Burgess Controls Ltd. Page 4E-4


Workshop PG5 Exercise Chapter 4<br />

Comparaters:<br />

Comparaters are used to compare two values. These values can be two integer<br />

values, or two decimal values. The output is a binary value of a 1 or a 0.<br />

There are several options for comparaters:<br />

1. two values are equal<br />

2. one value is greater than another.<br />

3. one value is greater than or equal to another.<br />

4. one value is smaller than another.<br />

5. one value is smaller or equal to another.<br />

These are your choices.<br />

Create a new file, and name it Comparaters. Open the file, and click on the F-<br />

box selector icon. (If you don’t remember this icon, refer back to the AND gates<br />

segment). Now activate the pull down menu for the F-box family selections.<br />

(again, refer to the AND gates segment for help).<br />

Highlight and click on integers. Next, activate the pull down menu for the funtions.<br />

Highlight and click on “is equal to”. Your display should look like this:<br />

Position and paste four comparaters on the program page. Do this in a vertical<br />

format.<br />

Now the symbols are in place, so we need to create the symbol list.<br />

Enter into the list the following:<br />

Drag and drop the MainControl symbol and all the input symbols into the left column<br />

of your program page. Drag and drop the output symbols into the right column<br />

of your program page.<br />

© Saia-Burgess Controls Ltd. Page 4E-5


Workshop PG5 Exercise Chapter 4<br />

Draw your connections, to match the drawing below.<br />

Position these in the center of<br />

the page. We will be adding<br />

to this program<br />

Build and download the program. (Make sure that the AND_GATE file is unlinked).<br />

Go online and observe the ouput Leds. Led 32 and 35 should be on.<br />

Led 33 and 34 should be off. The comparaters are comparing their value to 0. If<br />

their value is equal to zero, then their output is high.<br />

Counters:<br />

Using this same program, we will add a counter to it.<br />

1. Make sure you are offline.<br />

2. Click on the Eraser icon<br />

Place this on what you want<br />

to delete and click the left<br />

mouse button.<br />

3. Erase all the lines that connect to the left column. (there should be no lines<br />

left of the comparaters).<br />

4. Open the pull down menu for Families, and select “Counters”.<br />

5. Open the pull down menu for function and select “Up wrap around with<br />

clear”<br />

6. Paste the counter where all the lines were, left of the comparaters.<br />

7. Add to the Symbol list, Input4 and Input5. Both will be inputs, with there<br />

address being the same as their input number. Comment for Input4 is “resets<br />

counter to zero” and for Input5, “toggle to activate count”. Change the<br />

Address/Value of Input3 from 0 to 3.<br />

© Saia-Burgess Controls Ltd. Page 4E-6


Workshop PG5 Exercise Chapter 4<br />

8. Remove MainControl from the left column. This can be done by highlighting<br />

the symbol in the left column and pressing delete. It will still be listed in the<br />

symbol list. If you highlight it in the symbol list and delete, it will delete it<br />

completely. (Note: symbols in the symbol list, do not have to be used in the<br />

program).<br />

9. Click on the line mode icon and make the connections as follows:<br />

A. Connect input4 to Clr of the counter.<br />

B. Connect input5 to Up of the counter.<br />

C. Connect input3 to Max of the counter.<br />

D. Connect Cnt of the counter to the top pin of all 4 comparaters.<br />

E. Connect Input0 to the other pin of the first comparater, Input1 to the<br />

open pin of the second comparater ect. Yes, Input3 goes to both Max<br />

of the counter and to the comparater.<br />

Your program should look similar to the drawing below.<br />

Build and download the program. Go online and activate the run mode.<br />

Toggle input 5 on and off, and observe the Leds, 32, 33, 34, and 35.<br />

Every time you toggle input 5 on and off, the counter increments and the comparater<br />

that matches the counter number, activates it’s output. The counter is set up to<br />

count 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, ect,<br />

XOR Gates:<br />

The next function we are going to cover, is the exclusive OR gate. This is in the<br />

binary family. Open the F-box selector, and activate the exclusive OR symbol.<br />

© Saia-Burgess Controls Ltd. Page 4E-7


Workshop PG5 Exercise Chapter 4<br />

The function of the exclusive OR gate is that when one of the inputs are high,<br />

then the output is high. If more than one of the inputs is high, then the output is<br />

low. You can have 2 to 10 inputs, but only one can be high, to activate the output.<br />

Erase the lines that are connected to the right column. Paste 2 exclusive OR<br />

gates between the comparaters and the right column. Each gate should have 2<br />

inputs. Delete Output1 and Output3 from the right column. Connect the outputs<br />

from the 2 top comparaters to the inputs of the top exclusive OR gate. The outputs<br />

from the bottom 2 comparaters should then be connected to the bottom exclusive<br />

OR gate. The output of the top exclusive OR gate should be connected<br />

to Output0 and the bottom one should be connected to Output2. Something<br />

similar to the drawing below.<br />

Build and downloadBuidBuild<br />

Build and download the program. Go online and activate the run mode. Toggle<br />

input 5 on and off. When the counter is at 0 or 1, Led 32 will be on. When the<br />

counter is at 2 or 3, the Led 34 will be on.<br />

FLIP-FLOPS:<br />

The last F-box family we are going to cover, is the Flip-Flop.<br />

Open the file AND_GATES, make sure to link this file, and unlink the Comparaters<br />

file.<br />

Open the F-box selector, and choose the Flip-Flop family and the function of the<br />

Type RS dynamized.<br />

© Saia-Burgess Controls Ltd. Page 4E-8


Workshop PG5 Exercise Chapter 4<br />

The function of the RS dynamized Flip-Flop is that of a latch. When there is a<br />

signal going from low to high on the R input, the latch is said to be reset, and the<br />

output Q will be low, and stay in this state, until a signal going from low to high<br />

on the S input occurs, and then the latch is said to be set, and the output Q will<br />

be high. If both receive a low to high signal at the same time, the output will be<br />

low.<br />

Erase all the connections to both the right and left column. You will have just two<br />

AND gates on the page. Change the AND gate that has 4 inputs from 4 to 2.<br />

(you will have to erase it and put a new one on the page) Remove any binary<br />

inverter symbols from the inputs of the AND gates. Paste the RS Flip-Flop between<br />

the AND gates and the right column. Connect Input0 and Input1 to the<br />

top AND gate and Input2 and Input3 to the bottom AND gate. Connect the<br />

output of the top AND gate to the R input of the Flip-Flop and the output of the<br />

bottom AND gate to the S input of the Flip-Flop. Connect the Q output of the<br />

Flip-Flop to the Output0 of the right column. Delete Output1 from the right column.<br />

Your program should look similar to the drawing below.<br />

Build and download the program. Go online and activate the run mode.<br />

When Input0 and Input1 go high, this will reset the flip-flop and Q will be low.<br />

Turn on Input2 and Input3, and Q will be high. Led 32 should be on. Turn Input0<br />

and Input1 on again, and Q will go low. Set and reset the Flip-Flop several times<br />

to see the operation. Remember this is a dynamized Flip-Flop, so it operates on<br />

the rising edge of the signals. There are a few different versions of this Flip-Flop<br />

available.<br />

FINAL<br />

PROJECT:<br />

The purpose of this project is to give you some practice writing/drawing a program.<br />

Create a new file and give it a title. Open the file and fill in the symbol editor list to<br />

match the list below.<br />

© Saia-Burgess Controls Ltd. Page 4E-9


Workshop PG5 Exercise Chapter 4<br />

Here is a list of the F-boxes we are going to be using:<br />

Integer………… “is equal to” comparater<br />

Binary………… “AND” gate<br />

Binary………… “XOR” gate<br />

Flip-Flop……… “Type RS dynamized”<br />

Blinker………… “Blink Delay T”<br />

Counter………… “Up Down with preset and clear”<br />

This program will be a counter that counts 0 – 50 and when it reaches 50, it will<br />

reset back to 0 and continue to count, each time reaching 50 and resetting. You<br />

can also select to have it count from 50 – 0, and resetting to 50 each time it<br />

reaches 0.<br />

A drawing of the program is on the next page. Draw the program, build and<br />

download it. Go online and activate the run mode. Activate count up or count<br />

down, depending on which direction you wish to count. Activate Count_Run.<br />

The counter is now running. To see the counter working, click on Mode in the<br />

tool bar, and activate “Set Probes” Then take the curser and place it where you<br />

want a probe, and then click the left mouse button. A probe will display the value<br />

of the selected location.<br />

© Saia-Burgess Controls Ltd. Page 4E-10


Workshop PG5 Exercise Chapter 4<br />

© Saia-Burgess Controls Ltd. Page 4E-11


Workshop PG5 Exercise Chapter 4<br />

© Saia-Burgess Controls Ltd. Page 4E-12


Workshop PG5 Exercise Chapter 4<br />

Timers and Compare functions<br />

Working with registers, constants, timers and flags<br />

This time the types are not limited to binary values and you can use all the resources<br />

we saw like Registers, flags and so on.<br />

Open a new FUPLA file in the Project Manager and call it TIMER.<br />

This is what we are going to do:<br />

Example:<br />

Daily-Timer<br />

Create a small program where you can turn on and off a machine every day at the<br />

same time.<br />

Use the following symbols:<br />

HMS = hours, minutes and seconds (current time)<br />

ONTime =Time where you want to turn the machine on<br />

OFFTime=Time where you want to turn the machine off<br />

© Saia-Burgess Controls Ltd. Page 4E-13


Workshop PG5 Exercise Chapter 4<br />

In the Family “Time related” you will find a Fbox called “TIME” this Fbox reads the<br />

time from the PCD. The output shows the time as an integer value off six digits.<br />

HHMMSS. The color off the output is different to the color off the lines we had in<br />

our first example. That is because each and every type has its own color like:<br />

• RED lines are binary value<br />

• GREEN lines are integer and so on.<br />

You can’t connect two lines that have different types and you can’t connect two<br />

outputs either.<br />

Goal:<br />

You learn the difference between different types ( binary, integer,…. )<br />

You learn how to read the time from the internal clock<br />

You learn to how to compare values.<br />

You learn to work with symbols rather then with fix addresses.<br />

You learn how to document your program.<br />

You learn to set the internal clock.<br />

Quite a lot for one example I know.<br />

© Saia-Burgess Controls Ltd. Page 4E-14


Workshop PG5 Exercise Chapter 4<br />

Solution:<br />

1. Open a new FUPLA file ( You don’t need to open a new project ) called<br />

Time.fup<br />

2. Add a comment to your file!!!<br />

3. If there are any other files in your project, then mark them as "notlinked". This way<br />

the file will not be taken into considerations and will not be downloaded to the PCD.<br />

4. Open the FUPLA editor and place the FBox "Time related: Time" and copy the<br />

time to a Register called HMS. You have now the time as an integer value in a register<br />

called HMS<br />

5. Now you have to compare the content of this register with the time where you<br />

want to turn the heating on ONTIME and the time you want to turn the heating off<br />

again OFFTime. ONTime and OFFTime are for the moment just constants. Turn the<br />

heating on at 1 o clock PM => (ONTime=10000) and turn it of at noon (OF-<br />

FTime=120000)<br />

There are several ways to solve the problem. I used the FBox ( "Integer: Is greater<br />

or equal to" and Binary: Xor 2-10 inputs )<br />

I first compare the actual time with the ONTime. If the actual time is bigger than then<br />

the ontime, then you know that its later than OnTime and can basically start the<br />

heating. Except if its already too late, and the OFF time has come. This is then tested<br />

in the next FBox (TurnOFF ) ON_OFF Turns the heatin only on, if TurnON command<br />

is there but the TurnOff command has not arrived yet.<br />

DAY_NIGHT then inverses the signal in the case were you turn on the heating in the<br />

evening but you turn off the heating in the morning.<br />

6. You can add nice names on every FBox if you like to. Just move the pointer on<br />

the FBox press the right mouse button and click on "FBox Properties" and add a<br />

name.<br />

OFF<br />

© Saia-Burgess Controls Ltd. Page 4E-15


Workshop PG5 Exercise Chapter 4<br />

7. Build and download your program.<br />

8. In order to test your program, you have to go online and set the clock to different<br />

times.<br />

8.1 Go online.<br />

8.2 start the Online configurator from the project manager<br />

Click on the button called “Clock” and the second window comes up.<br />

On the left you'll see the time of your PC on the right the time of the PCD. You can<br />

edit PCD time<br />

directly in the<br />

fields. Once<br />

you press ok,<br />

the time is<br />

downloaded<br />

into your PCD.<br />

Try it and test<br />

your<br />

program.<br />

© Saia-Burgess Controls Ltd. Page 4E-16


Workshop PG5 Exercise Chapter 4<br />

Counters and blinker :<br />

Example:<br />

Parking lot<br />

Output 17<br />

(red light) is<br />

lit as soon as<br />

the parking<br />

lot is full<br />

(Lot_full)<br />

Input 0<br />

( NewCar )<br />

Input 1<br />

( Car_leaving )<br />

You have a parking lot with 8 parking slots.<br />

You have to sensors : One at the entrance gate which gives a pulse each time a car<br />

enters. Input 0 (NewCar ) a second one tells you when a car is leaving (input 1<br />

Car_leaving ).<br />

A signal ( output 17 Lot_full ) starts blinking as soon as 8 cars are in the parking lot.<br />

Cars can enter the lot even if the lot is already full !!<br />

Set the counter to 0 when you start up.<br />

Goal:<br />

You learn to know the different types of counters we have.<br />

You learn to document the program.<br />

You'll use a blinker.<br />

You learn how to create a reset signal at start up.<br />

© Saia-Burgess Controls Ltd. Page 4E-17


Workshop PG5 Exercise Chapter 4<br />

© Saia-Burgess Controls Ltd. Page 4E-18


Workshop PG5 Exercise Chapter 4<br />

Solution:<br />

1. Open a new FUPLA file ( You don’t need to open a new project ) called<br />

Lot.fup<br />

2. Add a comment to your file!!!<br />

3. If there are any other files in your project, then mark them as "notlinked". This<br />

way the file will not be taken into considerations and will not be downloaded to<br />

the PCD.<br />

4. Open the FUPLA and enter the input signals at the left and the out put signal at<br />

the right.<br />

5. Place a up- down counter on your sheet and make it count up with each pulse<br />

from Input 0 ( NewCar ) and down with each pulse from input 1 ( Car_leaving<br />

).<br />

FBOX:<br />

Counters: up down with preset<br />

Binary : Dynamize<br />

When you start up your PCD, the counter might already contain a value. So we must<br />

reset the counter at start-up.<br />

The small FBox on the side may be found in the family: ( Binary: Dynamize )<br />

If you start up your PCD, then the input of the FBox "Dyn" goes from 0 to 1 ( When<br />

the constant 1 is loaded into the input ) and stays at one from then on. This change<br />

from 0 to 1 makes the output go to 1 at start-up. The signal is connected to the input<br />

"Set" which then loads "0" into the counter. Cool trick he?<br />

© Saia-Burgess Controls Ltd. Page 4E-19


Workshop PG5 Exercise Chapter 4<br />

Double-clcking on a FBox with triangle on the lower left side always opens a parameter<br />

window.<br />

Inside this parameter window you can set the behaviour of the FBox (Example: PID<br />

regulator or Communication ) . In the case of the "Dynamize" FBox we can choose<br />

how exactly we want the FBox to behave. Set the option "Accept power up edge "<br />

to "Always"<br />

6. Read the counter value and compare it with 8.<br />

7. If the counter value is higher then 8, then make the output 17 blink.<br />

FBox: integer :Is greater than<br />

Blinker:Blink delay T<br />

8. Add a long comment to the Fupla page, explaining what your program does.<br />

9. Print your file<br />

© Saia-Burgess Controls Ltd. Page 4E-20


5.Program structures<br />

INTRODUCTION: 1<br />

5.1 CYCLIC ORGANIZATION BLOCK (COB 0 TO 15) 1<br />

5.2 PROGRAM BLOCKS (PB 0 TO 299) 3<br />

5.3 FUNCTION BLOCKS ( FB 0 TO 999 ) 5<br />

5.4 STRUCTURE VIEW AND EXECUTION PATH 6<br />

5.5 EXCEPTION BLOCK (XOB) 7<br />

5.6 SEQUENTIAL BLOCKS (SB 0 TO 31) 10<br />

<strong>Introduction</strong>:<br />

The key to fast programs, lies in the structure of a program. The structure is the<br />

most important part of your entire project, because it makes your program readable<br />

to others, makes it portable, easier to extend and to maintain. Before you start to<br />

write your program you need to have an idea about all the different tasks your installation<br />

will have to solve. PG5 organizes the program parts in different kinds of<br />

blocks, each with it's special function:<br />

There are five different types of blocks:<br />

CB's ( Cyclic Organization Blocks)<br />

FB's ( Function Blocks )<br />

PB's ( Program Blocks )<br />

XOB's ( Exception Blocks )<br />

SB's ( Sequential Blocks ) called Graftec


Workshop PG5<br />

Program structures<br />

© Saia-Burgess Controls AG


Workshop PG5<br />

Program structures<br />

5.1 Cyclic Organization Block (COB 0 to 15)<br />

What’s a COB:<br />

COB's (Cyclic organization blocks) are foreseen for program parts which are<br />

executed nonstop, without ever waiting stopping. (For example in order to wait<br />

for internal or external events to happen). After Startup of the PCD, the program<br />

starts executing the first COB in the program file and then executes one COB after<br />

the other. If needed you may create up to 16 COB’s. All the COB's are called<br />

automatically one after the other in a never ending cycle.<br />

All signals which need to be treated on a regular basis (for example end-switches for<br />

motor movements, external power-cut or emergency-stop signals, human protection<br />

devices ect) have to be inside a COB.<br />

There has to be at least one COB in the PCD!<br />

It is very important to understand, that the notion of the blocks which<br />

are always executed, is the most important aspect of all PLC's. The<br />

lack of waiting loops is not a failure in the concept of PLC programming,<br />

but a very important security feature. It's the only way you can<br />

guarantee your client that important signals are checked on a regular<br />

basis.<br />

If you write your programs with the “FUNCTION BLOCK EDITOR”, a new file in<br />

a COB is automatically opened for you.<br />

You can then change the block type or comment as you wish.<br />

In instruction list programs, the block is defined by instructions which surround the<br />

program code.<br />

© SAIA-Burgess Controls AG Page 5-1


Workshop PG5<br />

Program structures<br />

Example COB:<br />

Here you have an example program ( once in IL and once in FUPLA) which makes<br />

the output 64 blink at a rate of 1,5 seconds. The program is written in the COB 0.<br />

The COB 0 is followed by the COB 15.<br />

Instruction list program:<br />

LADDER or FUNCTION BLOCK program:<br />

COB 0 ;COB 0 starts here<br />

0<br />

STL T 1 ;If timer 1 equals 0<br />

LD T 1 ;then load it with 1.5 s.<br />

15<br />

COM O 64 ;and toggle the output 64<br />

ECOB ;COB 0 ends here<br />

START UP<br />

COB 15 ;Next block<br />

0<br />

NOP<br />

ECOB<br />

(FBox: Blinker, Blink delay T)<br />

COB’s have<br />

different qualities:<br />

1: COB’s have a number. You can choose between 0 and 15.<br />

2: They can have a name.<br />

3: They have a SUPERVISION TIME. This time (in 10th’s of a ms), says<br />

how long the execution of the COB is allowed to take. If the supervision<br />

time elapses before the COB has finished execution (ECOB reached), the<br />

Exception bloc XOB 11 (will be explained right away) is executed. If there<br />

is no XOB11 programmed, the next COB is started. A supervision time of<br />

0 means that the supervision time is not activated.<br />

4: A comment can also be added.<br />

Example: FBD editor<br />

Example: IL-editor (Instruction list)<br />

2.<br />

1.<br />

3.<br />

4.<br />

3.<br />

2.<br />

1.<br />

4.<br />

© SAIA-Burgess Controls AG Page 5-2


Workshop PG5<br />

Program structures<br />

5.2 Program Blocks (PB 0 to 299)<br />

What’s a PB:<br />

You may also work with PB’s (Program Blocks). PB’s offer a good way to organize<br />

your program in a hierarchical manner. PB’s are only activated if they are<br />

called. They may be called from a COB or from another PB.<br />

There are two ways to call a PB: Conditional call or unconditional call. Conditional<br />

calls depend on the result of a logical operation. You can call the same PB several<br />

times in the program. If one PB calls another PB and so on, then you can do so<br />

up to seven levels.<br />

A PB call can<br />

be conditional<br />

or unconditional:<br />

COB 7<br />

Enable input is always<br />

high. Therefore the PB2<br />

will be called in every<br />

cycle => It's an unconditional<br />

call<br />

PB<br />

PB<br />

PB<br />

PB<br />

When the signal "move"<br />

becomes high the PB is<br />

called. This is a conditional<br />

call.<br />

Program blocks can not only be called from COB's, but also from PB’s, FB’s, or<br />

SB’s.<br />

© SAIA-Burgess Controls AG Page 5-3


Workshop PG5<br />

Program structures<br />

Technical<br />

stuff:<br />

Process image<br />

.<br />

Unlike the PLC's from SIEMENS or Rockwell, our PLC does not<br />

work with a so-called process image. If you work with a process image,<br />

then the PLC reads the state of all connected inputs and outputs at the<br />

beginning of the program cycle. Then during the cycle the PLC doesn't<br />

read and write to the inputs and outputs anymore, but to the image. At<br />

the end of the program cycle the PLC then writes all the results at once<br />

from the image to the outputs. Changes at the inputs which appear during<br />

the program cycle are not taken into consideration. If you want to write<br />

directly to an output during the program cycle you can still do so, but<br />

you have to configure the output consequently.<br />

SAIA PLC’s, always read and write directly from and to the inputs &<br />

outputs. This can be used if you want some program parts (and their<br />

Inputs & Outputs) to be treated more often then the rest of the program.<br />

You just have to put this part of the program into a PB and call the PB<br />

several times during the main cycle. Another nice solution would be to<br />

use an "Exception block" (XOB 14 or 15)<br />

© SAIA-Burgess Controls AG Page 5-4


Workshop PG5<br />

Program structures<br />

5.3 Function Blocks ( FB 0 to 999 )<br />

What’s a FB:<br />

FB's ( Function blocks ) are nearly the same as PB's. Similar to PB's, FB's contain<br />

program parts which can be called from other blocks. This call can be conditional or<br />

unconditional.<br />

The unique difference is that FB's give you the possibility to call the block with parameters,<br />

as where with PB’s, you cannot.<br />

FB's with parameters can only be called from an IL program.<br />

The following example shows a FB which makes an output blink.<br />

The FB is called twice. First it makes the output 64 blink at a rate of 1.5 seconds<br />

and the second output 65 at a rate of 3 seconds.<br />

Call a FB:<br />

; Function block program<br />

FB 1 ; Function Block 1<br />

STL =2 ;If timer = L<br />

LDL =2 ; then load the time<br />

=3<br />

COM =1<br />

EFB<br />

; and toggle the output<br />

;The FB ends here<br />

; End function block<br />

; Main program<br />

;-------------------<br />

COB 0 ;Program start<br />

0<br />

;Call function block<br />

CFB 1 ;Call the FB 1<br />

O 64<br />

T 1<br />

15<br />

;Call function block<br />

CFB 1 ; Call the FB 1<br />

O 65<br />

T 2<br />

30<br />

ECOB<br />

;End main program<br />

© SAIA-Burgess Controls AG Page 5-5


Workshop PG5<br />

Program structures<br />

5.4 Structure View and Execution Path<br />

Once you have built your program, you can view the block structure of the program. Click on<br />

the Block structure view icon, located in the tool bar of the project manager. This will display<br />

the structure, and show you which COB is calling which PB, FB, or SB. The display below is<br />

for the FB example on the preceding page. It shows that FB1 is being called by COB 0 twice.<br />

Block structure<br />

view icon.<br />

Block structure<br />

view<br />

To display the execution path, you need to be online and the program running. Stop<br />

the program and place the curser in the center of the page and right click the mouse.<br />

This will display the pull down menu below. Click on Execution path, and it will<br />

display the path. This works with the above program because it consists of only<br />

FB’s. For a program with several segements, you would have to set break points to<br />

ensure you stop within a FB, PB, or SB. Setting break points is explained in<br />

chapter 7.<br />

The display shows that the FB 1 was called from<br />

the COB 0. (25) is the line number that we return<br />

to when the FB is finished. (10) is the line<br />

that we stopped on in the FB.<br />

© SAIA-Burgess Controls AG Page 5-6


Workshop PG5<br />

Program structures<br />

5.5 Exception Block (XOB)<br />

What’s a XOB:<br />

The exception blocks are treated automatically once a special event occurs. These<br />

events are defined by the firmware, and they cannot be modified by the user. It’s<br />

up to the user whether he want’s to program these events or not.<br />

START-UP PCD<br />

XOB 16<br />

The moment an event occurs,<br />

the PLC stops the task it is<br />

working on, and it starts to<br />

treat the XOB which corresponds<br />

to the event.<br />

When a XOB is<br />

called, the current<br />

program is<br />

stopped.<br />

Once the XOB is<br />

finished, the<br />

program continues:<br />

COB 2<br />

XOB 20<br />

Once the PLC has finished the<br />

XOB, it returns to the program<br />

point where the event appeared<br />

COB 5<br />

If an event appears but there is no program in the corresponding XOB, then the<br />

error LED on the PCD is lit and the PLC continues to run.<br />

Example:<br />

Turn on your PCD, take out the battery and the error LED will come up. If there<br />

was a XOB 2 ( see table on the next page ) in your program, then the LED won’t<br />

come up and the XOB 2 is executed instead.<br />

© SAIA-Burgess Controls AG Page 5-7


Workshop PG5<br />

Program structures<br />

All the XOB’s of<br />

the PCD family:<br />

XOB Description Priority Cold Start<br />

0 Power problem in the main rack (PCD6) or<br />

4 *<br />

WatchDog (PCD1/2)<br />

1 Power problem in the extension rack (PCD 6 ) 2<br />

2 Battery low 2<br />

4 Parity error on the I/O bus (PCD6) 1<br />

5 No response on a module I/O (PCD4/6) 1<br />

6 External error 1<br />

7 Over load of the system due to multiple events. 1<br />

8 Instruction not valid 4 *<br />

9 To many active tasks (Graftec) 1<br />

10 To many PB/FB levels 1<br />

11 Watch dog COB 3<br />

12 To many index registers used 1<br />

13 Error Flag 1<br />

14 Interruption cyclic 3<br />

15 Interruption cyclic 3<br />

16 Cold start 4<br />

17 S-Bus telegram 3<br />

18 S-Bus telegram 3<br />

19 S-Bus telegram 3<br />

20 Interrupt input INB1 3<br />

25 Interrupt input INB2 3<br />

30 No connection with RIO 1<br />

Use of XOB’s:<br />

- Helps to find errors in your program configuration<br />

- Errors in the addresses of the modules<br />

- More then seven program levels<br />

- More then 32 active transitions in a Graphtec structure<br />

- Never ending loop<br />

- Error in a mathematical operation<br />

- Errors in the communication<br />

- Maintenance of your PLC:<br />

- Surveillance of the batteries (needs to be changed every 3 to 4 years)<br />

- Surveillance of special events or very fast reactions on external signals:<br />

- Interrupt inputs<br />

- Interruption of the program every once and awhile<br />

- Interruption of the program when a telegram arrives<br />

- Cold start. Initial values<br />

© SAIA-Burgess Controls AG Page 5-8


Workshop PG5<br />

Program structures<br />

History Table:<br />

In the history table you may find all the hardware and software errors which have<br />

occurred.<br />

This table is updated even if the XOB’s are not programmed. You may find<br />

Time and date<br />

Programme line<br />

Error counter<br />

Text<br />

Very last error<br />

You have to consider the following points:<br />

- Every CPU has his own history<br />

- The line (BATT FAIL) only exists on the CPU 0<br />

- IF the error can be assigned to a program line then the line is indicated. If not,<br />

then it is displayed in hexidecimal.<br />

- - The XOB 0 is never listed.<br />

© SAIA-Burgess Controls AG Page 5-9


Workshop PG5<br />

Program structures<br />

5.6 Sequential Blocks (SB 0 to 31)<br />

Sequential blocks are a collection of so called STEPS and TRANSITIONS.<br />

In the step you execute a part of your program and in the transition you wait for a<br />

condition to appear in order to continue with a following step.<br />

Sequential blocks are created in a special editor. We call this editor GRAFTEC and<br />

the files have the extension *.sfc. The Graftec editor is explained in the next chapter.<br />

It is an excellent tool if you have to solve programming tasks, where your installation<br />

deals with a situation in a sequential manner.<br />

SB's can be called from any other block.<br />

© SAIA-Burgess Controls AG Page 5-10


6. GRAFTEC<br />

INTRODUCTION: 1<br />

6.1 SEQUENTIAL BLOCKS (SB 0 ... 31) 1<br />

6.2 CYCLIC BLOCKS (COB 0 ... 15) 2<br />

6.3 OPEN A NEW GRAFTEC FILE 3<br />

6.4 ORGANIZATION OF THE SB’S 7<br />

6.5 GENERAL STRUCTURE OF AN SB 8<br />

6.6 BASIC RULE: ALTERNATE STEPS & TRANSITIONS 8<br />

6.7 TRANSITIONS 9<br />

6.8 STEPS 10<br />

6.9 TYPICAL SEQUENTIAL BLOCK STRUCTURES . 11<br />

6.10 EDIT A SEQUENCE 12<br />

6.11 WRITE YOUR FIRST SEQUENTIAL BLOCK 17<br />

6.12 BUILD AND DEBUG YOUR PROGRAM 23<br />

6.13 HOW TO STRUCTURE GRAFTEC USING PAGES. 25<br />

<strong>Introduction</strong>:<br />

This chapter covers Sequential Blocks. (also referred to as SB’s). SB’s are made up<br />

of 2 basic elements. Transitions and Steps. Programing SB’s is done using the Graftec<br />

editor. In this chapter, you will learn:<br />

♦ What a SB’s is.<br />

♦ How to call a SB’s.<br />

♦ How to organize several SB’s.<br />

♦ Some typical SB’s structures.<br />

♦ How to program SB’s.<br />

♦ How to structure the program into a pages format.


Workshop PG5<br />

Project management<br />

PG5-06-E.doc<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Project management<br />

6.1 Sequential Blocks (SB 0 ... 31)<br />

SB’s (Sequential Blocks) work different then the program blocks we learned about<br />

previously. SB’s are very efficient if you have an application where you have to do<br />

several things in a defined sequence.<br />

Example Elevator: “close the door” => “wait until the door is closed” => “move the<br />

elevator to the first floor” => “wait until the elevator has reached the first floor” =><br />

“open the door again”<br />

Because we don’t know how long your program will wait on a particular event (<br />

milliseconds, minutes, days?) before it can continue with the next STEP, you can’t<br />

know the cycle time of an SB. Therefore it’s important to analyze your program and<br />

separate sequential problems in your application from parts which absolutely have to<br />

be in a cyclic block.<br />

Example: If you have an emergency switch on your application, then you want to be<br />

sure that this information is updated regularly. Therefore such information would<br />

never be put into a SB but into a COB.<br />

Typical Graftec Chart<br />

SB sequence<br />

starts here.<br />

The SB number.<br />

(each SB is assigned<br />

a number)<br />

SB sequence<br />

ends here.<br />

SB page<br />

number.<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-1


Workshop PG5<br />

Project management<br />

6.2 Cyclic Blocks (COB 0 ... 15)<br />

The fact that your SB is waiting on an event must under no circumstances block the<br />

rest of the program from being executed continuously. To prevent you from programming<br />

such a structure, a SB must be called from a COB. You can’t have a SB<br />

without a COB!<br />

The SB then will be called once a cycle and the state will be tested. If the SB is<br />

waiting on an event, then the program simply returns to the COB and continues to<br />

execute the COB. The next step of the SB will not be executed until the next cycle<br />

in which it is not in a waiting state.<br />

Cycle starts<br />

here<br />

Cyclic<br />

programs:<br />

Cycle time:<br />

Cycle<br />

ends here<br />

Until now our programs have been executed in an endless loop. They always started<br />

at the beginning of a COB and then one COB after the other was executed until the<br />

program reached the last COB. Once the program reaches the end, it automatically<br />

returns to the beginning of the first COB and starts the cycle all over again.<br />

The time it takes to execute all the COB’s from the beginning of the first COB to the<br />

end of the last COB, depends on the number and type of instructions and FBOX’s<br />

you use in your program. This time is called Cycle time.<br />

The cycle time is typically in the millisecond range. If you know the cycle time, then<br />

you know how long it takes for a PCD output to react on the change of the state of<br />

an input.<br />

Cyclic programs are built with program blocks like COB’s, PB’s, FB’s, SB’s or<br />

XOB’s.<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-2


Workshop PG5<br />

Project management<br />

6.3 Open a new GRAFTEC file<br />

Sequential Blocks are drawn in the Graftec editor. As already mentioned, a SB<br />

must always be called from a COB. Therefore we need to open two new files:<br />

• First we need to create a file containing a COB which calls the SB. This can be<br />

a FBD file for a graphical program (chapter 4) or the COB can be programmed<br />

in an Instruction list program (chapter 7)<br />

• Second we have to open a Graftec file.<br />

Open a new<br />

project:<br />

Start with a new project:<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-3


Workshop PG5<br />

Project management<br />

Open a FUPLA<br />

or a new IL file:<br />

Choose to open<br />

either a new Instruction<br />

List file<br />

or a Fupla file.<br />

Call the SB<br />

from a COB:<br />

Depending on the way you intend to write your program (Instruction list or FUPLA)<br />

you call the SB using a Call SB (CSB) instruction or a Call SB FBOX There is no<br />

difference between the two examples. Open the file you just created, and write the<br />

program as shown below.<br />

Instruction list program:<br />

FUPLA program:<br />

COB 1 ;Cyclic Block starts<br />

0<br />

CSB 0 ; calls the SB 0<br />

ECOB<br />

;Cyclic Block ends<br />

(FBOX: User definable, Call SB)<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-4


Workshop PG5<br />

Project management<br />

Open a new<br />

Graftec file:<br />

If you forget to add a COB, then the message window will tell you during<br />

the build process:<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-5


Workshop PG5<br />

Project management<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-6


Workshop PG5<br />

Project management<br />

6.4 Organization of the SB’s<br />

The SB List:<br />

When you create a graftec file, the graftec editor opens a Sequential Block 0 with an<br />

initial step for you. The SB 0 then is automatically entered into the SB list. To access<br />

this list, open the graftec file, and either click on the SB list icon, or click on<br />

File, then click on SB lists. This will display the list of SB’s in the opened file. You<br />

can have several SB’s in one file. (The maximum number of SB’s in a PCD is 32).<br />

Click on Edit and the SB number is displayed. (don’t confuse this number with the<br />

numbers of the individual elements. This number refers to the entire string of elements<br />

in the SB). Also there is a place to enter a name. We recommend that a<br />

name be entered for the SB. This will be helpful when navigating through your SB’s.<br />

If you don’t enter a name, the list will just display the number.<br />

Add SB’s to<br />

the list:<br />

As mentioned, you can have several SB’s in one file. To add additional SB’s to a<br />

file, open the SB list window, (displayed above) and click on Create. The Edit<br />

SB window will be displayed with the next available SB number.<br />

Enter a name for the SB and click on OK. This will add the SB to the list. You can<br />

then select the SB you want by highlighting it and clicking on Load. This will display<br />

the initial step for the selected SB. Now we can structure the sequence elements for<br />

the SB.<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-7


Workshop PG5<br />

Project management<br />

6.5 General structure of an SB<br />

Initial STEP<br />

Transition<br />

STEP<br />

Sequential blocks are built out of different elements which are called:<br />

Initial Step<br />

Step<br />

Transition<br />

SB’s start with an Initial STEP. When you call the SB for the very first time, then the<br />

SB will execute the program code inside the Initial Step.<br />

6.6 Basic rule: Alternate STEPS & Transitions<br />

Sequential blocks have a strict syntax.<br />

A sequential block always starts with an “Initial Step”<br />

Thereafter transitions and steps must alternate all the time.<br />

You must never have two Steps or two Transitions in a row.<br />

Right<br />

Wrong<br />

In contrast to other PLC's, SAIA PCD’s have implemented the SequentialBlockengine<br />

in the firmware which makes the sequential blocks extremely fast.<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-8


Workshop PG5<br />

Project management<br />

6.7 Transitions<br />

In a transition you put program parts which only have to run until a certain<br />

situation occurs.<br />

For example, you could read the characters from a serial port until a special<br />

character arrives, or you heat-up the dryers of a machine until they are<br />

warm enough to start the installation.<br />

The transition is always finished by an ETR command. The transition is repeated<br />

endlessly as long as the ETR is low.<br />

Example: The Flag 2 is toggled with each program cycle until the input 0 is<br />

high.<br />

FUPLA:<br />

IL:<br />

The " “End Transition"<br />

FBox is called here<br />

The STH instruction sets the ACCU to<br />

a high state, once the input I 0 goes<br />

high. The transition is considered finished<br />

as soon as the ACCU is high at<br />

the end of the transition.<br />

• You don't have to insert a program in every transition. A transition without a<br />

program is always true and will be skipped.<br />

• Transitions written in Instruction List: The ACCU is always high at the beginning<br />

of a transition or a step.<br />

• 2000 steps and transitions can be used to build up to 32 Sequential Blocks.<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-9


Workshop PG5<br />

Project management<br />

6.8 Steps<br />

Steps typically contain program parts which prepare the application for the next task.<br />

The task itself then often is inside a transition.<br />

You want to make your motor move from A to B.<br />

Typically you would first set the speed and direction<br />

of the movement. Second you would start the<br />

movement. Both tasks are non repetitive tasks which<br />

can be in a step since the step is only executed once.<br />

Once the movement is on its way, you'll have to<br />

monitor the movement and stop the motor as soon as<br />

it arrives at the destination B. This monitoring ( For<br />

example: read the end-switch ) has to be done over<br />

and over again until the motor arrives. This would<br />

ideally be done in a transition because transitions are<br />

executed cyclically.<br />

• A Step without a program goes directly to the next transition.<br />

• A Step is only treated once! A step is not cyclic!<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-10


Workshop PG5<br />

Project management<br />

6.9 Typical Sequential Block structures.<br />

Simple<br />

sequence<br />

Simple steps and transitions. There cannot be two steps or<br />

two transitions in a row.<br />

Or function<br />

- maximum 32 tasks in a row.<br />

An OR Task always begins with several transitions in parallel.<br />

The transitions are then executed one after the other<br />

(from the right to the left) until one of the transitions are fulfilled.<br />

After that, only this branch is executed and the execution<br />

of the other transitions stop. An OR function always<br />

ends with several transitions ending up in one step. The<br />

maximum number of transitions in a row is 32.. If there are<br />

more then the XOB 9 is called (read chapter 5)<br />

Simultaneous<br />

Tasks (AND)<br />

Jump over a<br />

sequence<br />

Starts several sequences at once and resynchronizes in one<br />

final transition.<br />

- The common start is given by a transition, which<br />

launches several steps.<br />

- Ends with several steps which are connected to the<br />

same transition.<br />

- You can have up to 32 branches. If there are more<br />

then the XOB 9 is called (read chapter 5)<br />

The two transitions are executed until one or the other is<br />

fulfilled. If the transition on the right is fulfilled first, then<br />

the sequence on the left will be bypassed.<br />

Repeat a<br />

sequence<br />

This example is similar to the preceding example except<br />

that one of the transitions will be fulfilled every cycle. It will<br />

repeat the same step 5 times and then move on to the next<br />

step.<br />

C = 5<br />

C = C - 1<br />

( C = 0 ) ( C > 0 )<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-11


Workshop PG5<br />

Project management<br />

6.10 Edit a Sequence<br />

Once you open a new sequential chart file, the initial step is displayed. The execution<br />

of a step always starts from here. In order to add new elements to the drawing<br />

you can either use the toolbar or the keyboard.<br />

Select<br />

mode<br />

IStep mode<br />

Add a<br />

Transition<br />

Add a<br />

page<br />

Zoom<br />

Toolbar:<br />

Mixed<br />

mode<br />

Add a<br />

Step<br />

Connect<br />

two<br />

points<br />

Edit a simple<br />

sequence:<br />

At the beginning of this chapter we created<br />

the file Pulse.sfc. Open this file and go to<br />

the SB list and load the SB “OpenMain-<br />

Gate”. Do the following exercises:<br />

1. Select the " Mixed Mode "<br />

2. Move the pointer under the the initial<br />

step and click the left mouse button.<br />

3. Move the pointer under the new transition<br />

and click the left mouse button<br />

again.<br />

4. Follow this format.<br />

1. 2.<br />

3.<br />

Draw a connection:<br />

Once the sequence is finished the program<br />

is finished also. If you want the program to<br />

restart, then add a loop. You cannot draw<br />

a connection between two steps or between<br />

two transitions. A loop always starts<br />

at a transition and goes to a step.<br />

1. Select the "Select Mode"<br />

2. Mark the transition you start from.<br />

3. Select the "Link Mode"<br />

4. Click on the step that you want to connect<br />

to the transition.<br />

3.<br />

1.<br />

4.<br />

2.<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-12


Workshop PG5<br />

Project management<br />

Draw an alternative<br />

(OR)<br />

task.<br />

1. Select “Transition mode”<br />

2. Click on a transition which is already<br />

followed by a step.<br />

3. An additional transition is drawn with<br />

each click.<br />

Close an alternative<br />

task<br />

In order to resynchronize your simultaneous<br />

task:<br />

1. Select "Select Mode"<br />

2. Mark the transition you want to close<br />

3. Select "Link Mode"<br />

4. Click on the Step you want to connect.<br />

1.<br />

3.<br />

4.<br />

2.<br />

Edit a simultaneous<br />

Task<br />

(AND)<br />

1. Select “STEP mode”<br />

2. Click on a step which is already followed<br />

by a transition.<br />

3. An additional step is drawn with each<br />

click.<br />

Close simultaneous<br />

task<br />

(AND).<br />

In order to close your OR task:<br />

1. Select "Select Mode"<br />

2. Mark the step you want to close<br />

3. Select "Link Mode"<br />

4. Click on the Transition you want to<br />

connect.<br />

1.<br />

3.<br />

4.<br />

2.<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-13


Workshop PG5<br />

Project management<br />

Add a comment<br />

1. Activate "Select Mode"<br />

2. Use the right mouse button to click on<br />

an element. Choose "Edit" "Element…"<br />

3. Insert your comment.<br />

3.<br />

Insert a sequence<br />

1. Select "Transition Mode"<br />

2. Click on a step which is already followed<br />

by a transition. The editor will<br />

insert a new transition and a new step.<br />

Delete a sequence<br />

3. Activate “Select Mode”<br />

4. Click on the first transition of your<br />

sequence.<br />

5. Click on the last step of the sequence<br />

you want to delete while holding the<br />

“Shift” key down.<br />

6. Press the “Del” key.<br />

Click +<br />

“SHIFT”<br />

“DEL<br />

” key<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-14


Workshop PG5<br />

Project management<br />

Copy/paste a<br />

sequence:<br />

1. Activate "Select Mode"<br />

2. Mark start of sequence.<br />

3. Click on the last step of the sequence<br />

while holding the “Shift” key down.<br />

4. Select the menu "Edit" " Copy"<br />

5. Activate "Select Mode"<br />

6. Click on the point where you want to<br />

insert the sequence.<br />

7. Select the menu "Edit" " Paste"<br />

1.<br />

2.<br />

3.<br />

Insert a sequence:<br />

Remark:<br />

Depending on the position of the element<br />

(transition or step) you select to insert, the<br />

sequence might be inserted underneath or<br />

beside the selected element.<br />

7.<br />

4.<br />

Insert sequence<br />

on a<br />

transition.<br />

Insert sequence<br />

on a<br />

step.<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-15


Workshop PG5<br />

Project management<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-16


Workshop PG5<br />

Project management<br />

6.11 Write your first Sequential Block<br />

Open the file:<br />

Open the file pulse.sfc. Go to the SB list and load the SB called “Pulse”<br />

GOAL:<br />

We will make a program which makes a digital output (Three_ pulses O 33) blink<br />

three times each time we have a digital input (Start_3_pulses I 2) going to high.<br />

Diagram:<br />

Input START_3_pulses:<br />

Output Three_pulses:<br />

1s<br />

1s<br />

Time<br />

Draw the basic<br />

structure:<br />

We always start with the Initial step, where we initialize our elements. Once the<br />

initialization is done we can wait for the start signal. Draw the elements as shown<br />

and add the comment to the fields:<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-17


Workshop PG5<br />

Project management<br />

Once we start the sequence, we are going to turn the output “ Three_pulses” on for<br />

1 second. After a second we turn the output off for a second. We do so three times<br />

and then we restart the sequence:<br />

Choose the SEdit<br />

or FUPLA editor<br />

for your program<br />

code:<br />

Our sequence is finished now. We only have to fill in the program code in each step<br />

and transition. We can edit each Step and transition in Instruction list or FUPLA<br />

which ever you prefer. We will program our Initial step using the FUPLA editor.<br />

Double-click on the Initial step and choose the FUPLA editor:<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-18


Workshop PG5<br />

Project management<br />

Prepare the symbols:<br />

First we will establish a list with all the elements we are going to use in the<br />

SymbolEditor. Enter the elements as shown in the picture below.<br />

Edit the program<br />

code:<br />

Next load the counter (named: PulseCounter) with the constant 3 (named: Number_of_pulses).<br />

To do so we take the “Load counter” FBox from the “Graftec family”).<br />

Remember, do not take counters or timers from the other families. They are<br />

designed to run in a cyclic program only.<br />

How to program<br />

a Transition:<br />

A transition is repeated endlessly until the “End of Tansition” is active. In transition<br />

number 0 we will wait inside the transition until the “Start_3_pulses” input goes high.<br />

Open the Transition 0 and add this Fupla program:<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-19


Workshop PG5<br />

Project management<br />

Use Timers in a<br />

SB:<br />

Timers and Counters from the Standard Library<br />

aren’t made for the use in SB’s. They are designed<br />

for use in COB’s which are executed cyclically over<br />

and over again. If you want to use timers or counters<br />

inside a SB, use the ones from the “Graftec” family.<br />

They are especially designed for Sequential Blocks,<br />

because you can load them in one step and question<br />

the state later on in another step or transition.<br />

What we do in our program is:<br />

Turn the output on and load the timer in the step and<br />

then we go on to the transition where we wait and<br />

question the timer until the time elapsed and the timer<br />

has come to zero.<br />

Repeat the step<br />

and transition for<br />

the time were the<br />

pulse is off:<br />

The Step 2 and Transition 2 are the same as step1 and transition 1:<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-20


Workshop PG5<br />

Project management<br />

Decrement a<br />

counter:<br />

The counter is decremented each time the program<br />

passes by. The counter is only decremented if the<br />

binary input is high (read help on FBox)<br />

Remember: An empty input field is always set to<br />

high! (Chapter 4)<br />

The last two Transitions then are a piece of cake:<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-21


Workshop PG5<br />

Project management<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-22


Workshop PG5<br />

Project management<br />

6.12 BUILD and debug your program<br />

BUILD:<br />

Once you have finished the drawing, you can compile the entire program by clicking<br />

on the BUILD button. (Make sure that the COB file and the Pulse.sfc file are the<br />

only linked files before you activate the build process. You may also want to delete<br />

the SB “OpenMainGate”).<br />

The message window will show you all the information you'll need:<br />

Message Window:<br />

If you have entered the<br />

program correctly then the<br />

message window should now<br />

tell you:<br />

Build successful. Total errors:<br />

0 Total warnings: 0<br />

If there are any errors in the drawing, then the FUPLA will indicate the error in red<br />

letters. Double-clicking on the error message will take you to the error.<br />

Now download the program and go online.<br />

Online tools:<br />

The sequential block can be observed online. The red point always tells you which<br />

transition or step is active.<br />

RUN<br />

STOP<br />

STEP BY<br />

STEP<br />

Active<br />

Transition<br />

(red point)<br />

You can stop the<br />

PLC at any given<br />

moment and<br />

continue the<br />

execution in a step<br />

by step mode.<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-23


Workshop PG5<br />

Project management<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-24


Workshop PG5<br />

Project management<br />

6.13 How to structure GRAFTEC using pages.<br />

What are pages?<br />

In PG5 you can structure your big programs by creating a simple overall structure<br />

which then calls subpages.<br />

Symbol of a page.<br />

Create a page by using<br />

the "page-tool"<br />

Input Step off the page.<br />

A page always starts and<br />

ends with a step.<br />

Navigate from<br />

page to subpage<br />

Output step<br />

off the page<br />

It’s possible to<br />

create pages<br />

within other<br />

pages<br />

Roles while using<br />

pages<br />

- A page always starts and ends with a Step.<br />

- A page can have only one “Input Step” and only one “Output Step”<br />

- You can have pages within pages. (As many as you like)<br />

- You can neither move nor delete an “Input/Output Step”<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-25


Workshop PG5<br />

Project management<br />

Create a page<br />

1. Activate "Select Mode"<br />

2. Click on the first step of your sequence.<br />

3. Press the “Shift” key and click on<br />

the last Step of your sequence.<br />

4. Execute “Page” => “Create”.<br />

1.<br />

2.<br />

3.<br />

Go into a page:<br />

1. Activate "Select Mode"<br />

2. Click on the page.<br />

3. Execute “Page” "Calling Page"<br />

or "Subpage"<br />

1.<br />

Undo a page:<br />

1. Activate "Select Mode"<br />

2. Click on the page.<br />

3. Execute " Page" "Expand"<br />

2.<br />

PG5-06-E.doc © Saia-Burgess Controls Ltd. Page 6-26


7. Instruction list programming<br />

(IL)<br />

INTRODUCTION: 1<br />

7.0 CREATE A NEW PROJECT AND A NEW INSTRUCTION LIST PROGRAM FILE 1<br />

7.1 THE INSTRUCTION LIST EDITOR "SEDIT" 3<br />

7.3 IL SYNTAX 5<br />

7.4 BASIC INSTRUCTIONS: 10<br />

7.5 WRITE YOUR FIRST IL PROGRAM 17<br />

7.6 BUILD AND DEBUG YOUR PROGRAM 21<br />

7.7 DEBUG YOUR PROGRAM ONLINE 23<br />

7.8 SYNCHRONOUS VIEW 26<br />

<strong>Introduction</strong>:<br />

The programming of SAIA PCD’s is based on a very powerful instruction set<br />

which is implemented in every PCD.<br />

Note: Unlike other products, the different SAIA PCD’s products all use the same<br />

instructions. Therefore you can port program files without problems from one<br />

PCD type to the other.<br />

The instruction list editor “S-Edit” will not only help you edit your programs, it<br />

also includes a whole range of powerful troubleshooting and online visualisation<br />

functions which will be a topic at the end of the chapter.<br />

You’ll learn the very basics of PG5 programming in this chapter. You’ll also learn<br />

how to debug your program once it runs on your PCD.<br />

Don’t start this chapter before reading chapter 3. “PCD Resources”.


Workshop PG5<br />

Instructionlist<br />

PG5-07-E<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Instructionlist<br />

7.0 Create a new project and a new Instruction list program file<br />

Choose to open a<br />

new project:<br />

Open a new program<br />

file:<br />

To open a new program file in this project, click on the " New File" button or<br />

use the right mouse button.<br />

OR<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-1


Workshop PG5<br />

Instructionlist<br />

Open the editor:<br />

Double-click the new file and the “Instruction List” editor will open.<br />

Note: Instruction list files have the extension “filename.SRC”<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-2


Workshop PG5<br />

Instructionlist<br />

7.1 The Instruction list editor "SEdit"<br />

The editor:<br />

The editor opens once you double-click a file with the extension *.src. With<br />

SEdit you can edit your source code. The programs are saved in a text format<br />

and can be viewed and edited by any text editor.<br />

File handling and<br />

text editing tools<br />

Search<br />

tools<br />

Bookmark<br />

Online<br />

tools<br />

Auto-format settings:<br />

Unlike a normal text editor, SEdit will analyse your code and format your inputs<br />

in a user friendly structure. We recommend to use this special function.<br />

( see settings in the picture below ).<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-3


Workshop PG5<br />

Instructionlist<br />

General Syntax:<br />

When you write your program you have to respect a certain syntax which is<br />

described below.<br />

In order to edit your program you can enter the code like you would in any<br />

other windows based text-editor. The code arranges itself in four rows once<br />

you press the enter key, The colors can be changed. ( menu: "TOOLS" =><br />

"OPTIONS" => "COLORS" )<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-4


Workshop PG5<br />

Instructionlist<br />

7.3 IL Syntax<br />

Comments:<br />

IL programs are read by two kinds of entities: humans and compilers. The<br />

compiler requires the source code text to conform exactly to its syntax rules.<br />

For example a COB command demands two parameters. One behind the<br />

command COB itself and the second on the line below it. Humans are not so<br />

particular about how instructions are given, but they often need more explanation<br />

about what the function of the instructions are. Such explanation can be<br />

added to the source code. We call them comments and they are displayed in<br />

green. There are two ways to add a comment.<br />

; All the text from the semicolon to the end of the<br />

line is considered as comment and will be green.<br />

$skip $endskip All the text between the two instructions is<br />

skipped by the compiler and therefore is a comment.<br />

Comments can be added to every line.<br />

Structure:<br />

The code itself is structured in several rows. You can jump from row to row by<br />

using the TAB key.<br />

1. ROW: LABELS, General comments and TEXT<br />

2. ROW: Mnemo code. In this row you insert the actual instruction.<br />

3. ROW: The operands for the instruction. Also called media code.<br />

4. ROW: Comments to the specific program line.<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-5


Workshop PG5<br />

Instructionlist<br />

Case sensitivity:<br />

Instructions and operands are not case sensitive.<br />

Symbols are not case sensitive unless they contain foreign characters, MotorOn<br />

is the same as MOTORON, but GRÜN is not the same as grün.<br />

Labels are symbol names given to locations in a program (program lines),<br />

which are used as destinations for jump instructions or to provide debug information.<br />

Characters allowed in labels are the same as those of symbols.<br />

Texts are case sensitive. ( Example: TEXT 20<br />

"UART:4800,8,N,1;MODE;MC2;DIAG:F0,R100;" ).<br />

Writing programs<br />

with symbols:<br />

Please make sure you have read the chapter "3. PCD Resources ".<br />

Why should we use symbols and name our input and outputs after all?<br />

Couldn’t we simply write our programs directly using the element address like<br />

shown?<br />

COB 0<br />

0<br />

ACC H<br />

STH I 0<br />

ANH I 4<br />

OUT O 33<br />

ECOB<br />

In fact you could write your programs like this if you like to. But:<br />

First symbols make your program easier to read.<br />

Second, imagine you have a program, which is 4000 lines long. The output O<br />

64 was used 30 times (for exp OUT 0 64, SET 0 64 etc.). During the start-up<br />

of your machine you break the output. For one reason or the other you don't<br />

have a spare card handy but lucky you, the output number O 67 off this card is<br />

available. You decide to use this one instead.<br />

You have changed the address of your output from O 64 to O 67. And you<br />

have to do so 30 times!!!!<br />

Had you declared O 64 by a symbol, you would only have to change the address<br />

one time in the symbol editor.<br />

That’s one of the reasons why its better to use symbols rather then fixed addresses<br />

in your program.<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-6


Workshop PG5<br />

Instructionlist<br />

Writing programs<br />

with symbols:<br />

Take the symbol Timer1 for example. This timer is declared in the SymbolEditor:<br />

If you want to use the Timer 11 instead of Timer 12 then you can do so in<br />

one single step directly in the Symbol editor.<br />

Note that the Timer2 has no number at all! You don’t have to give an address<br />

to your elements if you don’t want to. The PG5 will auto allocate all<br />

symbols for you.<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-7


Workshop PG5<br />

Instructionlist<br />

Technical stuff<br />

Addressing<br />

symbols &<br />

using arrays:<br />

By the way:<br />

If you work with symbols, you can add constants or other symbols to your<br />

symbol. Like this you can define a basis address and then refer to an element in<br />

perspective to this basis element.<br />

Example:<br />

An output card PCD2.A400 with 8 outputs is placed into the slot with the start<br />

address 80. We then want to set the third output (output 82):<br />

Definition:<br />

We can simply write: SET OutputMotor1+2 in our program.<br />

A more elegant way is to reserve an array of 8 outputs:<br />

In the program we then set the output 82 like this:<br />

SET OutputMotor1[2]<br />

Auto complete<br />

symbols:<br />

If you use long symbol names your program will become easier to read. On the<br />

other hand it will be annoying if you have to re-enter the long symbol name<br />

each time you use it in the program. Therefore you can simply enter the first<br />

letters of a symbol, and then lookup all the symbols which fit the first letters<br />

by using the keys “CTRL and SPACEBAR”:<br />

Example:<br />

CTRL + SPACE<br />

ENTER<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-8


Workshop PG5<br />

Instructionlist<br />

Labels:<br />

You can make conditional and unconditional jumps in your programs. When<br />

you jump in your program, you have to tell the assembler where you want to<br />

jump to. Labels are symbol names given to locations in a program (program<br />

lines), which are used as destinations for jump instructions.<br />

Characters allowed in labels are the same as those of symbols. Labels can appear<br />

anywhere in the source file, but should be within a code block (COB, PB<br />

etc.), and must not be inside a multi-line instruction.<br />

The value assigned to a label is its offset within the code block where it is defined.<br />

All labels are local to the block in which they are defined, and the same<br />

label can be used many times in the same source module, providing it is always<br />

in a different block. Jumps to labels defined in another block are not allowed.<br />

Example:<br />

Range of symbols<br />

and labels:<br />

Symbols are always "local". Which means that the symbol name is only known<br />

to instructions, which are in the same file as the declaration (see chapter 3). If<br />

you have a symbol with the same name in another file, then the data of the two<br />

symbols won’t get mixed up.<br />

Labels are always local to the block. You can't jump from one file to the other<br />

or from one block to the other. Even if the two blocks are in the same file.<br />

All COB’s, XOB’s, PB’s, FB’s, SB’s, IST’s, ST’s, TR’s, TEXT’s, and<br />

DB’s, are globally known<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-9


Workshop PG5<br />

Instructionlist<br />

7.4 Basic Instructions:<br />

Binary Instructions:<br />

Binary instructions work with inputs, outputs, flags, the state of timers/counters,<br />

and the ACCU.<br />

The ACCU is nothing more then an internal System flag, which memorizes the<br />

result of the last instruction. It can be either high or low.<br />

We have three different types of binary instructions:<br />

1. Type 2. Type 3. Type<br />

The first group of instructions<br />

alters the ACCU<br />

state<br />

In the second group of<br />

instructions, the execution<br />

of the instruction<br />

depends on the ACCU<br />

state.<br />

The third group of instructions<br />

depend on the<br />

ACCU state and alters the<br />

ACCU state.<br />

Input<br />

Output<br />

Or Flag<br />

Instructions:<br />

ACC<br />

STH<br />

STL<br />

Input<br />

Output<br />

Or Flag<br />

Instructions:<br />

DYN<br />

OUT<br />

SET<br />

RES<br />

COM<br />

Input<br />

Output<br />

Or Flag<br />

Instructions:<br />

ANH<br />

ANL<br />

ORH<br />

ORL<br />

XOR<br />

LU<br />

ACCU<br />

ACCU<br />

LU Input<br />

Output<br />

Or Flag<br />

LU<br />

ACCU<br />

LU= Logic Unit<br />

Example:<br />

STH I 14<br />

Sets the ACCU to high if<br />

Input 14 is high.<br />

Example:<br />

RES F 10<br />

Sets the flag 10 to 0 if the<br />

ACCU is high.<br />

Example:<br />

ANH I 23<br />

The ACCU is AND linked<br />

with the logical state of<br />

input 23, the ACCU is set<br />

to the result.<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-10


Workshop PG5<br />

Instructionlist<br />

Word Instructions:<br />

Word Instructions work with registers, counters, timers, constants, texts, and<br />

db's. Although there are some instructions which depend on the state of the<br />

ACCU, the ACCU isn't that important here. ( see Instruction set booklet ).<br />

Not all the instructions allow you to use all the possible elements ( register<br />

counter ect) as parameters. Please refer to the booklet or the online help.<br />

A lot of the instructions not only write a result to the element ( register, counter<br />

ect), but they also note some general information about the result into four<br />

special flags called arithmetic flags. The flags are:<br />

1. Zero flag ( Example: Z flag is set if the copy instruction copies an empty<br />

register )<br />

2. Error flag (Example: The Error (E) flag is set if the definition text of a<br />

SASI instruction is missing or invalid). SASI=SAIA Assigned Serial Interface.<br />

3. Negative flag ( Example: is set if the result of a calculation was negative )<br />

4. Positive flag ( always inverse to the negative flag )<br />

Example:<br />

ADD R 1<br />

R 33<br />

R 46<br />

The values of register R 1 and register R 33 are<br />

added. The result is in register R 46.<br />

The flags N,P , Z are set according to the value in<br />

register R 46<br />

ACCU<br />

Register<br />

Constant<br />

Timer<br />

Counter<br />

Register<br />

Constant<br />

Timer<br />

Counter<br />

?<br />

COPY<br />

ADD…<br />

..<br />

Word<br />

Instructions:<br />

ALU<br />

32Bit<br />

?<br />

JR<br />

ACC…<br />

Register<br />

Constant<br />

Timer<br />

Counter<br />

E Z N P<br />

Error<br />

Arithmetic Flags<br />

Other Instructions (mainly the Control instruction family) are only executed, if<br />

the mentioned Arithmetic flag is set to high.<br />

Example: JR Z Label ;The Jump is only done, if the Zero flag is<br />

high.<br />

Most Word-Instructions are executed unconditionally.<br />

Zero<br />

Negative<br />

Positive<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-11


Workshop PG5<br />

Instructionlist<br />

Jumps and calls:<br />

We make the difference between jumps and calls. When you want to go from<br />

one point in your block to another point within the same block, then you use a<br />

jump command. If you want to go from one block ( COB, PB, FB, or SB ) to<br />

another block, then you use a call the block.<br />

Another important difference is that if you call a block then the system will<br />

execute the called block and will then return to point where the block was<br />

called from. A jump doesn't return.<br />

WARNING: Jumps are potentially dangerous. This is because you can<br />

end up programming programs with endless loops. Therefore never ever<br />

jump backwards in a program.<br />

Jump instructions<br />

JR Jump relative<br />

JPD Jump direct<br />

JPI Jump indirect<br />

Block calls:<br />

CPB Call program block<br />

CPBI Call program block indirect<br />

CFB Call function block<br />

CSB Call Sequential block<br />

Unconditional<br />

jumps and calls:<br />

If you don't add a condition to your jump or call, then they will be done every<br />

time the program execution arrives to the jump instruction.<br />

COB 0<br />

0<br />

COB 0<br />

0<br />

PB 3<br />

JR<br />

Lablename<br />

CPB 3<br />

CPB 4<br />

PB 4<br />

Lablename:<br />

EPB<br />

EPB<br />

ECOB<br />

ECOB<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-12


Workshop PG5<br />

Instructionlist<br />

Conditional<br />

jumps and calls:<br />

Jumps and calls can contain a condition code. A condition code is a flag which<br />

( depending on it's state ) executes a call or a jump. There are different condition<br />

codes.:<br />

1. You can activate a jump or a call depending on the state of the ACCU.<br />

Example: If you use the condition code H, then the instruction will be<br />

executed only if the ACCU is high ( equal 1 ). Condition code L executes<br />

the instruction if the ACCU is low.<br />

2. Another way to influence the behaviour of your program are the arithmetic<br />

flags Negative, Positive, Zero, and Error. All the arithmetic instructions<br />

and some of the communication instructions alter the state of the four flags.<br />

The booklet with the instruction set summary, lists all the instructions and indicates<br />

which of these instructions alter the ACCU or the arithmetic flags.<br />

Examples:<br />

We want to stop the acceleration of<br />

the motor once the speed is, equal to<br />

or higher than 200. Therefore we<br />

compare the speed with 200. If the<br />

value in the register called Motor<br />

speed is equal or higher than 200,<br />

then the Positive flag is set after the<br />

CoMPare instruction.<br />

The Jump Relative instruction checks<br />

the Positive flag and jumps over the<br />

program part which normally accelerates<br />

the motor.<br />

In this example we have a surveillance<br />

flag which is used somewhere else in<br />

the program. As soon as this flag is<br />

set ( flag content equals 1 ) we want to<br />

call the Program Block named Alarm.<br />

The STart High instruction sets the<br />

ACCU to 1 if the content of the surveillance<br />

flag is 1. The Call Program<br />

Block instruction on the next line<br />

checks the ACCU and calls the Program<br />

Block named Alarm as soon as<br />

the ACCU is High.<br />

MotorSpeed equ R<br />

MinimumSpeed equ 200<br />

COB 0<br />

0<br />

CMP<br />

MotorSpeed<br />

MinimumSpeed<br />

JR P NoAcceleration<br />

~<br />

~<br />

NoAcceleration:<br />

~<br />

~<br />

ECOB<br />

Surveillance equ F<br />

Alarm equ PB<br />

COB 0<br />

0<br />

STH Surveillance<br />

CPB H Alarm<br />

ECOB<br />

PB Alarm<br />

EPB<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-13


Workshop PG5<br />

Instructionlist<br />

Index Register:<br />

Each and every COB has an internal register which is called an index register.<br />

The content of this register can be manipulated by five instructions:<br />

SEI<br />

SEt Index register<br />

INI<br />

INcrement Index register<br />

DEI<br />

DEcrement Index register<br />

STI<br />

STore Index register<br />

RSI<br />

ReStore Index register<br />

Most of the instructions can work with the content of this register and perform<br />

indirect commands with it. (these instructions are indicated in the booklet). If<br />

you add an X to the command name ( Example LD =>LDX ) you tell the PCD<br />

that you are using the index register in this program line.<br />

Example:<br />

COPY<br />

Normally an instruction like COPY would work like this:<br />

COPY R 10<br />

R 40<br />

The content of R 10 is COPIED into R 40<br />

COPYX<br />

COPYX works different:<br />

SEI K 2<br />

COPYX R 10<br />

R 40<br />

The Index register is set to 2<br />

R 10 is not copied into R 40, but the content of<br />

register R 12 is copied into R 42 ( add the content<br />

of the index register to R 10 and R 40).<br />

So now that you know the basics, we can start to write our first program.<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-14


Workshop PG5<br />

Instructionlist<br />

$Instructions:<br />

$skip<br />

Until now we have only talked about instructions which are downloaded to the<br />

PCD. The PCD family has a set of instructions (called directives), which can<br />

change the way the build process is done. These directives aren’t downloaded<br />

to the PCD at all. Here’s a short list of the most common directives:<br />

One of these directives was already presented at the beginning of this chapter it<br />

was : $Skip => $endskip<br />

This directive tells the build process to skip the code between these symbols.<br />

The code is considered as a comment.<br />

$include<br />

When an include statement is encountered, the given file is read and processed<br />

as though it is part of the source file being assembled.<br />

Format:<br />

$INCLUDE ["][d:][path]filename[.ext]["]<br />

SEdit can open these files for you. If you have an $include directive in your<br />

code simply click on the statement using the right mouse button, and the specified<br />

file will be opened for you:<br />

$group<br />

All symbols defined between these directives are automatically prefixed with<br />

the group_name. This makes it easier to work with symbols which are inside<br />

groups. To reference a symbol in a group, either the group name can be used<br />

as a prefix to the symbol (separated by a full stop "."), or another $GROUP<br />

directive can be used to define the default group name.<br />

For example:<br />

STH FRED.SYMBOL1 ; SYMBOL1 in group FRED<br />

$GROUP FRED<br />

; select group FRED<br />

STH SYMBOL1 ; references FRED.SYMBOL1<br />

$ENDGROUP<br />

These are just a few of the available directives. Using these directives takes a<br />

lot of experience and explaining all these techniques would go way beyond the<br />

goal of this starter workshop. Please refer to the help for a complete list.<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-15


Workshop PG5<br />

Instructionlist<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-16


Workshop PG5<br />

Instructionlist<br />

7.5 Write your first IL Program<br />

Open the file:<br />

At the beginning of this chapter (7.0) we made a new file called : "Oilpump.src"<br />

We will write our first code into this file.<br />

GOAL:<br />

Lets start with a simple binary combination.<br />

We will turn on a pump ( Oilpump signal O 32 ) if the oil level becomes too<br />

high ( OilHigh signal input I 0 ) and if the machine is in conditional Run (<br />

Cond_Run signal input I 1 ) or normal run ( NormalRun signal input I 2 ). But<br />

the pump must not run if there is an emergency stop ( Emergency signal input I<br />

7 )<br />

This is what the program would look like in LADDER:<br />

Double-click on the file called: "Oilpump.src" and Sedit will open.<br />

Before we start to write our program, we have to make a list of the symbols we<br />

are planing to use. Enter the following symbols into the Symbol Editor:<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-17


Workshop PG5<br />

Instructionlist<br />

Now we can start programming. For a good program you should always add<br />

some lines of comments explaining what this program does, by whom it was<br />

written and when the last modifications were done.<br />

After that you'll need to place your program inside a block. Since this is the<br />

only block in our project, the program must be inside a COB :<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-18


Workshop PG5<br />

Instructionlist<br />

Now the programming<br />

begins:<br />

Input<br />

Input Input Output<br />

Input<br />

The ACCU is always set to high at the start of a block, therefore we don't have<br />

to set the ACCU first.<br />

A combination always starts with STH , STL, ACC L or<br />

ACC H:<br />

sth<br />

Cond_Run<br />

orh NormalRun<br />

out IntermediateFlag<br />

sth IntermediateFlag<br />

anl Emergency<br />

anh OilHigh<br />

out OilPump<br />

Set the ACCU to the state of the NormalRun signal ( =<br />

IF NormalRun )<br />

If the ACCU was set by Cond_Run OR NormalRun<br />

Save the result in an intermediate flag and start a new<br />

combination:<br />

If the result of the Or function was high<br />

AND The Emergency signal is Low<br />

AND the OilHigh signal is active<br />

Then the ACCU is set and we just copy the ACCU state<br />

to the signal OilPump<br />

Why did we solve the OR combination ( the parallel contacts NormalRun<br />

Cond_Run ) first, before we tested the AND combinations ( Serial contacts<br />

Emergency, OilHigh, and (NormalRun or Cond_Run))?<br />

One important thing you have to remember is that an OR function<br />

has absolute priority over the AND ( ANd High or ANd Low )<br />

function.<br />

If an OR function sets the ACCU, then the results of the following AND & OR<br />

functions don't matter anymore until you start a new combination with STH. or<br />

ACC H/L.<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-19


Workshop PG5<br />

Instructionlist<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-20


Workshop PG5<br />

Instructionlist<br />

7.6 BUILD and debug your program<br />

BUILD:<br />

Once you have entered the program lines, you can compile the whole program<br />

by pressing the BUILD button.<br />

Message Window:<br />

The message window will show you all the information you'll need:<br />

If you have entered the program<br />

correctly then the message<br />

window should now tell you:<br />

Make successful. Total errors: 0<br />

Total warnings: 0<br />

Create and find an<br />

error:<br />

Open the IL program once again and change the instruction:<br />

sth Cond_Run to stx Cond_Run<br />

and make the program a second time. This time the message window will signal<br />

an error:<br />

Assembling: oilpump.src<br />

Error 32: oilpump.src: Line 34: Invalid<br />

expression<br />

1 errors, 0 warnings<br />

Assembly complete. Errors: 1 Warnings:<br />

0<br />

If you double-click on the<br />

error message, then the editor<br />

will open and the faulty line<br />

itself will be highlighted with<br />

a red bar, so you can instantly<br />

locate the error inside your<br />

code.<br />

instruction stx back to sth and make the program a last time.<br />

Change the<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-21


Workshop PG5<br />

Instructionlist<br />

CODE-VIEW:<br />

Now that the program was built successfully, we can see the code created by<br />

the assembler:<br />

The View Code button ( short cut F5 ) will display the final code inside the<br />

original program code:<br />

Original<br />

code<br />

(white)<br />

Resulting code<br />

after the Build<br />

(grey)<br />

Program line<br />

inside the PCD<br />

Hardware<br />

address of<br />

the symbol<br />

Cond_Run<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-22


Workshop PG5<br />

Instructionlist<br />

7.7 Debug your program online<br />

Start/Stop your<br />

PCD:<br />

1. Download your program<br />

2. Go online.<br />

3. Start and stop your PCD.<br />

Look at the front of the PCD,<br />

and observe the RUN LED.<br />

It should turn on and off with the<br />

start and stop of the PCD.<br />

View your program<br />

online:<br />

The state of each input<br />

and output is shown<br />

online. Turn on and off<br />

the inputs in order to<br />

see the changes.<br />

Using the right mouse<br />

button you can change the<br />

program online<br />

Example : Change a instruction<br />

from STH to<br />

STL or directly change<br />

the state of the media (<br />

register content input,<br />

flag state ect)<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-23


Workshop PG5<br />

Instructionlist<br />

Trace Mode:<br />

In Trace Mode the PCD is stopped and you just execute one line after the other.<br />

In order to stop your process at a given program line you just have to place the<br />

cursor on a line in your program and click on the :<br />

"GO TO CURSOR" button. The PCD will then stop at this program<br />

line and you can execute one line after the other by pressing the function-key<br />

"F11".<br />

If you have PB's or FB's in your program you can choose to “trace into”<br />

these blocks or “step over” these blocks.<br />

If you are inside a block, then you may leave the block with the<br />

"STEP OUT OF" button.<br />

COB 0<br />

0<br />

= PCD is in Run<br />

= PCD is in Stop<br />

(Trace mode)<br />

PB 7<br />

If you step over a block,<br />

then the PCD goes into<br />

RUN, executes all the<br />

elements inside the block<br />

and STOPs at the first<br />

instruction after the block<br />

call.<br />

PB 2<br />

CPB 7<br />

CPB 2<br />

EPB<br />

If you step out of a block,<br />

then the PCD goes into<br />

RUN, executes all the<br />

elements inside the active<br />

block and STOPs at the<br />

EPB<br />

first instruction after the<br />

block call.<br />

Like in the normal online mode, you can change the state of every program by<br />

selecting the active line and using the right mouse button and the commands:<br />

Edit Media/Status or Code<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-24


Workshop PG5<br />

Instructionlist<br />

Break points:<br />

Often you would like your program to stop at a given event, say you want to<br />

stop the machine as soon as the EndSwitch is activated or as soon as the temperature<br />

stored in the Register 200 reaches the value 23.<br />

The “break point function window allows you to do just that.<br />

While your online with the PCD press the BreakPoint icon :<br />

In the window select the conditions you want to set.<br />

Example: Run the PCD until the register R 200 has the value 23.<br />

As soon as you press “<br />

the PCD does go into conditional run.<br />

Conditional run means that the PDC isn’t running at full speed but it executes<br />

every instruction and after each program step the PCD checks whether the condition<br />

was met or not. The condition is saved in the list so you don’t have to reenter<br />

the same conditions over and over again.<br />

So in our example the PCD will continue to run in conditional run unti the<br />

register reaches the value 23.<br />

The “RUN” LED on the PCD blinks if it’s in conditional run.<br />

In the PG5 a conditional run is indicated by the RUN ICON<br />

which changes between red and green.<br />

Clear-Stop clears the conditional run and puts the PCD in stop.<br />

Clear-Run clears the conditional run and keeps the PCD running.<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-25


Workshop PG5<br />

Instructionlist<br />

7.8 Synchronous view<br />

Synchronous view is a new feature in the PCD and you’ll need a new firmware<br />

for this function:<br />

Minimum FW:<br />

PCD1<br />

PCD2<br />

PCD4<br />

Synchronous view is an enhancement of the asynchronous view. Once you are<br />

online in SEdit simply click on the icon:<br />

The state of the ACCU,<br />

the MediaCode and the<br />

IndexRegister is shown<br />

for every line while the<br />

PCD continues to run.<br />

The screen freezes and you cant scroll anymore. The state of the systemflags<br />

and the content of the index register is shown in addition to the state of the<br />

element. A view which you can normaly only achieve in trace mode, is created<br />

here while the PCD continues to run! You can visualize the exact state of every<br />

element at any given line.<br />

PG5-07-E © Saia-Burgess Controls Ltd. Page 7-26


EXERCISE<br />

INTRODUCTION: 1<br />

GENERAL QUESTIONS 1 TO 7 1<br />

SOLUTIONS 1 TO 7: 3<br />

BINARY OPERATIONS & COUNTERS 7<br />

<strong>Introduction</strong>:<br />

In order to solve these examples it’s helpful to print the file “Instructions.pdf”<br />

which is installed with your PG5.<br />

The file is designed for double-sided printing.<br />

Otherwise if you need help on one of the Instructions, then place the cursor on the<br />

instruction and press F1


Workshop PG5 Exercise Chapter 7<br />

© Saia-Burgess Controls Ltd.


Workshop PG5 Exercise Chapter 7<br />

General questions 1 to 7<br />

1. Which of the following instructions are executed only if the ACCU is<br />

high?<br />

SET RES COM INC STH<br />

2. How can you set / reset and flip the ACCU state?<br />

3. Load the state of the Error-Flag into the ACCU<br />

4. Write a program that corresponds to these two ladder diagrams<br />

Example 4.1: Example 4.2:<br />

I 1 * I 2 + I 3 = O32<br />

I 1 + I 3 * I 2 = O32<br />

5. What would the result in example 4.2 be, if the result of the first logic<br />

combination wouldn’t be saved in a flag:<br />

STH I 1<br />

ORH I 3<br />

ANH I 2<br />

OUT O 32<br />

Instead of =><br />

STH I 1<br />

ORH I 3<br />

OUT F 0<br />

STH F 0<br />

ANH I 2<br />

OUT O 32<br />

Draw the solution as electrical drawing.<br />

© Saia-Burgess Controls Ltd. Page 7E-1


Workshop PG5 Exercise Chapter 7<br />

6. Which arithmetic flags are set after these instructions?<br />

LD R 10<br />

100<br />

LD R 11<br />

90<br />

CMP R 10<br />

R 11<br />

7. How would the example 2 work, if there would be an “ACC L” instruction<br />

at the beginning?<br />

ACC L<br />

LD R 10<br />

100<br />

LD R ..... and so on<br />

© Saia-Burgess Controls Ltd. Page 7E-2


Workshop PG5 Exercise Chapter 7<br />

Solutions 1 to 7:<br />

Solution:<br />

1:<br />

SET RES COM INC<br />

How can you know?<br />

• Look up the instruction in the Instruction-List booklet. The instructions<br />

marked with a D, are only executed if the ACCU is high.<br />

• Enter the instruction in the S-Edit, place the cursor on the instruction<br />

and press “F1”=> A online help will tell you everything about<br />

the instruction.<br />

2:<br />

ACC H<br />

ACC L<br />

ACC C<br />

Sets the ACCU to high<br />

Set the ACCU to low<br />

Complements the ACCU state high<br />

becomes low, low becomes high<br />

3:<br />

ACC E<br />

4:<br />

4.1<br />

STH I 1 ; Copy the state of I 1 into the ACCU<br />

ANH I 2 ; AND link the ACCU with the state of<br />

;I 2 & then set the ACCU according to<br />

;the result.<br />

ORH I 3 ; Set the ACCU if I 3 is high.<br />

; (Or function)<br />

OUT O 32 ; Set output 32 to the ACCU state.<br />

© Saia-Burgess Controls Ltd. Page 7E-3


Workshop PG5 Exercise Chapter 7<br />

4.2<br />

(I 1 + I 2 ) * I 3 = O 32<br />

{<br />

F 0<br />

STH I 1 ; Copy the state of I 1 into the ACCU<br />

ORH I 2 ; OR link the ACCU with the state of I 2<br />

; & then set the ACCU according to the<br />

; result.<br />

OUT F 0 ; Set a flag to the ACCU state.<br />

STH F 0 ; AND link the result of the first logic<br />

ANH I 3 ; combination whit I 3<br />

OUT O 32 ; Set output 32 to the ACCU state.<br />

5:<br />

© Saia-Burgess Controls Ltd. Page 7E-4


Workshop PG5 Exercise Chapter 7<br />

6:<br />

Result = CMP 100<br />

90<br />

100 > 90<br />

=><br />

ZerroFlag = L<br />

PositiveFlag = H<br />

NegativeFlag = L<br />

ErrorFlag = Not changed<br />

How can you know?<br />

1. Solution: Enter the program into the Instructionlist editor, place the<br />

cursor on the instruction CMP and press the button F1 => A help on<br />

the instruction will come up.<br />

2. Solution: Built and download the program and trace online to the<br />

instruction CPM => you’ll see the state of all the Arithmetic flags:<br />

3. Solution: Have a look into the instruction booklet for more information<br />

about the instruction CMP.<br />

7:<br />

If you load a constant into a register, then the execution of the “load” instruction<br />

doesn’t depend on the ACCU state. Therefore the program<br />

would work the same. Have a look into the booklet for some help on the<br />

instruction “LD”. Note: An instruction LD T (load timer) or LD C (load<br />

counter) would depend on the ACC state but not a load register!<br />

© Saia-Burgess Controls Ltd. Page 7E-5


Workshop PG5 Exercise Chapter 7<br />

© Saia-Burgess Controls Ltd. Page 7E-6


Workshop PG5 Exercise Chapter 7<br />

Binary operations & counters<br />

Example:<br />

Parking lot<br />

Output 17<br />

(red light) is<br />

lit as soon as<br />

the parking<br />

lot is full<br />

(Lot_full)<br />

Input 0<br />

( NewCar )<br />

Input 1<br />

( Car_leaving )<br />

You have a parking lot with 8 parking slots.<br />

You have to sensors : One at the entrance gate which gives a pulse each time a<br />

car enters (Input 0 NewCar ) a second sensor at the exit tells you when a car is<br />

leaving (input 1 Car_leaving ).<br />

A signal ( output 17 Lot_full ) is lit as soon as 8 cars are in the parking lot.<br />

Cars can enter the lot even if the lot is already full !!<br />

Set the counter to 0 when you start up.<br />

Goal:<br />

This is a example you already know from the FUPLA examples.<br />

You learn to use counters in IL<br />

You learn to document the program.<br />

You learn how to reset values at start up.<br />

© Saia-Burgess Controls Ltd. Page 7E-7


Workshop PG5 Exercise Chapter 7<br />

© Saia-Burgess Controls Ltd. Page 7E-8


Workshop PG5 Exercise Chapter 7<br />

Solution:<br />

1. First create a new project and open a new IL ( Instructionlist ) file.<br />

2. Make a list of all the elements you think you are going to use ( inputs, outputs<br />

....)<br />

2. First you have to tell the PCD that you want this program to run in the COB<br />

0. Enter the COB 0 ECOB instruction as shown underneath.<br />

3. Add some comments.<br />

So. Now you already have a program. Although it wouldn't do anything yet,<br />

you could assemble and download it down to your PCD.<br />

4.Back to our parking lot program.<br />

The counter content always tells us how many empty places there are inside the<br />

parking lot. Once the counter comes to zero ( = 0 empty places ) we know that<br />

we have to turn on the red light.<br />

We presume that the parking lot is empty at the moment we turn on the PCD.<br />

So we load the counter with 8.<br />

When we want to do something at start up, we have to do so in XOB 16. Therefore<br />

add an XOB 16 in front of the existing COB and load the counter “NumberOFreeSlots”<br />

with 8.<br />

© Saia-Burgess Controls Ltd. Page 7E-9


Workshop PG5 Exercise Chapter 7<br />

In the case of a counter, the LoaD instruction depends on the state of the<br />

ACCU. As we want this load to be an unconditional one, we have to be sure<br />

the ACCU is H. So set the ACCU to H first.<br />

XOB 16<br />

; Code executed at start up<br />

ACC H<br />

; Load the counter with<br />

LD NumberOfFreeSlots ; the value 8 ( unconditionally )<br />

8<br />

EXOB<br />

; end of start-up program<br />

5. We then simply decrement the counter 100 each time a car enters the lot and<br />

increment the counter as soon as one leaves the lot.<br />

Each time we have a rising edge on the input 0 ( Sensor at the parking lot entrance<br />

) we want to decrement the counter “NumberOfFreeSlots”:<br />

STH NewCar_Signal<br />

DYN DynamiseNewCar<br />

DEC NumberOfFreeSlots<br />

The DYN instruction memorises the state of the Input 0 in a flag (Dynamise-<br />

NewCar)from one program cycle to the next. The ACCU is then set as soon as<br />

the DYN instruction sees that the Input 0 has gone from 0 to 1.<br />

The DECrement instruction is only executed, if the ACCU is set. Do the same<br />

thing for the parking lot<br />

Exit.<br />

STH Car_leaving_Signal<br />

DYN DynamiseCar_leaving<br />

INC NumberOfFreeSlots<br />

© Saia-Burgess Controls Ltd. Page 7E-10


Workshop PG5 Exercise Chapter 7<br />

6. Turn on the light ( red_light Output 17 ) if the counter comes to zero ( no<br />

free parkingslots ).<br />

STH NumberOfFreeSlots<br />

OUT red_light<br />

STH sets the ACCU to high if the counter comes to zero. OUT gives the AC-<br />

CUstate to the Output 17.<br />

So that’s it.<br />

See how your program looks at the end.<br />

© Saia-Burgess Controls Ltd. Page 7E-11


Workshop PG5 Exercise Chapter 7<br />

© Saia-Burgess Controls Ltd. Page 7E-12


8. Additional tools<br />

INTRODUCTION: 1<br />

8.1 DATA TRANSFER UTILITY 1<br />

8.2 CUSTOMIZE MENU 7<br />

8.3 WATCH WINDOW 9<br />

8.4 ONLINE CONFIGURATOR 13<br />

8.5 UPLOAD THE PCD CONTENT AND CREATE A PROJECT 17<br />

8.6 PROGRAM AN EPROM 22<br />

8.7 DOWNLOAD A NEW FIRMWARE VERSION 23<br />

<strong>Introduction</strong>:<br />

PG5 has implemented some utilities which come in handy for situations like Battery-change;<br />

maintenance or documentation and others. This chapter explains the<br />

different tools.


Workshop PG5<br />

Additional tools<br />

PG5-08-E<br />

© Saia-Burgess Controls Ltd.


Workshop PG5<br />

Additional tools<br />

8.1 Data transfer utility<br />

When you will<br />

use a DATA<br />

TRANSFER<br />

utility:<br />

The Data transfer tool can be used as a stand-alone tool. You can not only upload<br />

the program of a PCD but also the content of registers, flags, counters,<br />

ect.<br />

This comes in handy for different occasions:<br />

• If you change the battery and you make a backup for safety reasons. (In case<br />

of a power loss during the battery change and you loose information)<br />

• If you make data-logs with your PCD and you want to upload the data from<br />

time to time.<br />

• If you want to save the state of your installation at a given moment.<br />

Backup your<br />

PCD :<br />

In case you don’t have the original source file of your PCD or in case you want<br />

to backup all the PCD content (program as well as element content) use the<br />

upload all function:<br />

In case you have such a message<br />

:<br />

This might be because of:<br />

Your K111 cable is connected<br />

to a different COM port =><br />

Or the PCD is not running.<br />

(Change the port in Setup).<br />

Use “PGU<br />

direct connection”<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-1


Workshop PG5<br />

Additional tools<br />

Choose a name:<br />

Start the<br />

UPLOAD:<br />

Once you have started the “Upload All” and you have chosen a name for the<br />

uploaded file, press “Upload” to start the process:<br />

Depending on your program size, this can be a lengthy process.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-2


Workshop PG5<br />

Additional tools<br />

Download the<br />

saved file:<br />

If you want to download a file you uploaded previously, then simply connect<br />

your PC to the PCD and start the download all function:<br />

NOTE:<br />

After the download your PCD won’t go into RUN. Even if you turn off the<br />

PCD and restart it again, it won’t. This is due to the cable PCD8.K111. As<br />

long as the cable is connected to the PCD, the PCD waits for a start signal from<br />

the programming tool. Disconnect the cable from the PCD to restart or start<br />

the PCD from the programming tool.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-3


Workshop PG5<br />

Additional tools<br />

Upload some<br />

Data’s only:<br />

There are two ways to upload a selection of Data.<br />

• The Quick save.<br />

• The upload of a prepared file.<br />

Quick save:<br />

With Quick save you can easily upload a collection of elements.<br />

The Data is then loaded and saved in<br />

a text file called “filename.DT5”<br />

You can change the way the elements<br />

are saved in the file:<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-4


Workshop PG5<br />

Additional tools<br />

Upload elements<br />

using a script<br />

file:<br />

In case you want to download or upload one or several elements, you can prepare<br />

a list with all the element’s you want (see picture) and then start the Upload-button.<br />

Prepare the<br />

script:<br />

You can test the syntax of your list<br />

of elements to assure the uploader<br />

After the upload starts, a new file will be opened will recognize and all the all the elements elements: will be<br />

shown.<br />

This example list<br />

will upload three<br />

different registers<br />

and three flags<br />

Upload:<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-5


Workshop PG5<br />

Additional tools<br />

Technical stuff:<br />

Use Data Transfer<br />

in command<br />

line mode<br />

There is much more to this last example then simple uploading of elements<br />

using this tool. Another plus of this list of elements lies in the<br />

fact that the Data-Transfer tool can be started in the command line mode<br />

too! You can write a batch file which uploads the data from time to<br />

time into a file and you can then display this data in an application such<br />

as EXCEL, or others you may prefer.<br />

Read the online help for more information on the possible commands<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-6


Workshop PG5<br />

Additional tools<br />

8.2 Customize Menu<br />

You can add links to you favourite programs via the tools menu. Example:<br />

}<br />

These three applications were added to the<br />

“Tools” menu with the help of the “Customize<br />

Menu...” function.<br />

How to add an application to the “Tools” menu:<br />

Create a new<br />

menu item.<br />

Delete a<br />

menu item.<br />

Arrange the<br />

menu items<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-7


Workshop PG5<br />

Additional tools<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-8


Workshop PG5<br />

Additional tools<br />

8.3 Watch Window<br />

The watch window is a great tool for debugging an installation. You can list<br />

your most important signals in the window and display and alter these signals<br />

online.<br />

To open a new program file in this project, click on the " New File" button or<br />

use the right mouse button.<br />

OR<br />

Open the<br />

WatchWindow:<br />

Double-click the new file and the “WatchWindow” will open.<br />

Note: WatchWindow files have the extension “filename.5WW”<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-9


Workshop PG5<br />

Additional tools<br />

Add elements to<br />

the WatchWindow:<br />

Now drag-n-drop symbols from the program or symbol editor to the Watch-<br />

Window. You can also enter elements directly to the watchwindow. Press the<br />

“Insert” key while the window is active and enter the address of the element<br />

you would like to see online. Example: R 200<br />

View elements<br />

online:<br />

As soon as your online you’ll see the content of each element. Go online:<br />

Change date online:<br />

You can not only view elements but also write to the symbols. Right-click on<br />

any element and alter the content. Example: Change the content of Register<br />

200 from 300 to 4444:<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-10


Workshop PG5<br />

Additional tools<br />

If you don’t like the format which is used to display the elements then use the<br />

right-click menu to change it.<br />

Example: Change the display of the Register from Decimal to Hex.<br />

Not only display output 32 but all the outputs of the card from O<br />

32 to O 39.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-11


Workshop PG5<br />

Additional tools<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-12


Workshop PG5<br />

Additional tools<br />

8.4 Online configurator<br />

The “Online configurator” let’s you set the most important parameters while<br />

your online with the PCD.<br />

You’ll need this<br />

tool if:<br />

• If you want to update the firmware.<br />

• Your PCD came to a halt and you want to read the history in order to see<br />

the cause of the halt<br />

• You want to set the clock in the PCD.<br />

• You want to set a password<br />

• Set the serial ports<br />

Calling the main<br />

window:<br />

Provided the PCD is properly connected to the PC via a PCD8.K111 cable,<br />

and the PCD is switched on, double click on the 'Online Configurator' in the<br />

program manager, under “Tools”:<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-13


Workshop PG5<br />

Additional tools<br />

NOTE:<br />

In case you have this message :<br />

Make certain that:<br />

1. Your K111 cable is connected to the right COM port => change the<br />

port in the SETUP.=><br />

1. The PCD is running<br />

Clarification of<br />

each field in the<br />

Online-Configurator:<br />

• PCD type: Identification of the CPU (Hardware)<br />

• Version: Current firmware version of the connected PCD.<br />

• Program name: Current project in the PCD program memory<br />

• Date: Current date of the PCD hardware clock (if there<br />

is no hardware clock then the date will be 1/1/92<br />

• Time: Current time by the hardware clock<br />

• Day: Current day of week: 1 = Monday, ... 7 =Sunday<br />

• Week: Current week number of current year<br />

• Status: RUN, STOP, HALT or Conditional Run<br />

• CPU: for PCD2 always 0,<br />

for PCD4 0 or 1<br />

for PCD6 0 - 6<br />

• Protocol: PGU direct or S-BUS<br />

• Baud: Transmission speed:<br />

for PGU direct: always 9600 Baud<br />

for S-BUS: 110 – 38,400 Baud<br />

• Station: Station number:<br />

for PGU direct: not relevant<br />

for S-BUS: 0 - 254<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-14


Workshop PG5<br />

Additional tools<br />

Clarification of<br />

each button in<br />

the Online-Configurator:<br />

'Memory...' function<br />

This is basically the same function as the Memory setting in the Hardware-<br />

Configurator, but online.<br />

'S-BUS...' function<br />

Same as the “Memory” function.<br />

'Clock...' function<br />

Most of the PCD’s have a built in RTC (real time clock).<br />

The "PC Clock" on the left contains the current date and time in the IBM PC,<br />

The "SAIA PCD Clock" on the right shows the date, time, day of week and<br />

week of year of the connected PCD.<br />

Clicking on the "Copy to PCD >>>" button copies the date and time from the<br />

IBM PC to the PCD.<br />

The values in the "SAIA PCD Clock" window can also be entered individually.<br />

The entered values are checked for validity.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-15


Workshop PG5<br />

Additional tools<br />

'History' function<br />

The History function is a great help after a system error. It may happen that<br />

you program a situation, which makes it impossible for the PCD to react on it.<br />

Example: You have signal on the interrupt input but no exception block,<br />

which handles the signal.<br />

The fact that there is an entry in the history doesn’t necessarily mean that there<br />

is a problem. Read the help for more information.<br />

After clicking on "History" in the main window, the following dialog box appears:<br />

Very last<br />

error<br />

The 4 most<br />

common<br />

messages<br />

The history table is displayed for the chosen CPU in the connected PCD.<br />

With one click on the "Clear history" button, this memory can be deleted.<br />

'Password' function<br />

This is basically the same function as the “Password” setting in the Hardware-<br />

Configurator, but online.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-16


Workshop PG5<br />

Additional tools<br />

8.5 Upload the PCD content and create a project<br />

One day you might be confronted by a situation where you must debug a machine<br />

where the source code has been lost. In such situations you need to upload<br />

the program from the PLC and recreate the project.<br />

Please note that you can upload programs which where written in FUPLA but<br />

you’ll only get the “Instruction List” code which was created by the FUPLA<br />

and not the drawings.<br />

The four steps<br />

for uploading a<br />

project:<br />

So. how can you upload the code then?<br />

1: You have to upload the code from the PLC. The PG5 will create a file with<br />

the extension *.upl<br />

2: You can then disassemble the code and choose to either make a project or<br />

3: Then analyze the new project and handle the system information.<br />

4: At last you can make your changes to the program and rebuild the project<br />

again.<br />

STEP 1: Open a<br />

new Project and<br />

upload the code<br />

First open a new project.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-17


Workshop PG5<br />

Additional tools<br />

Then go to the menu “Tools” => “Upload Program” and start the uploader. By<br />

default the uploaded file will be put into the project folder.<br />

You can define the way<br />

you connect yourself to<br />

the PLC here. Default<br />

is PGU Mode.<br />

Once the upload is finished close the window by pressing “CLOSE”.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-18


Workshop PG5<br />

Additional tools<br />

STEP 2: Disassemble<br />

your<br />

code and create<br />

the project.<br />

The disassembler<br />

will by default list<br />

the latest file you<br />

have uploaded.<br />

Tell the PG5 to<br />

create a new CPU<br />

in the current project.<br />

Specify how you want your program<br />

to be saved;<br />

All Blocks in one file<br />

One file for each block type<br />

Or a file per block (can be<br />

many)<br />

The result will be a new CPU in your project with all the source files (*.src)<br />

you need to recreate the project.<br />

STEP 3: Analyze<br />

the new project<br />

and handle the<br />

system information.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-19


Workshop PG5<br />

Additional tools<br />

PG5 does add some instructions into the program code in order to configure<br />

the PCD.<br />

If you upload your code and you make a project, then these instructions will<br />

be uploaded too. Therefore if you build your program again, then the PG5<br />

tries to add these instructions again and this will create an error like:<br />

The instruction concerned are:<br />

DEFVM<br />

DEFTB<br />

DEFTC<br />

Another error you can get is :<br />

Error 369: Absolute address in auto allocation segment: F 7500<br />

You can tell the Software settings not to add<br />

the DEF-Instructions and not to use auto allocation.<br />

With this setting activated the project will<br />

build without errors.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-20


Workshop PG5<br />

Additional tools<br />

Change the<br />

source code in<br />

order to use the<br />

software configurations:<br />

If you want to use the Software settings tool, then you have to erase the DEF-<br />

Instructions in the XOB 16.<br />

You can simply mark them out:<br />

Another thing you might change are the “Auto allocation” ranges of the<br />

FLAGS, REGISTERS, TIMERS, and COUNTERS.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-21


Workshop PG5<br />

Additional tools<br />

8.6 Program an EPROM<br />

If your client has no PG5 installed then you can send him an EPROM containing<br />

the user program instead. PG5 can create the most common EPROM formats<br />

for your EPROM burner.<br />

In order to create an EPROM you must build your program first.<br />

Choose the “Output File Format:” and press “Create Files”<br />

The HEX files are then created and you can use the files in your EPROM<br />

burner software.<br />

Technical stuff:<br />

The EPROM not only contains the user program but also the hardware configuration.<br />

So if you plug in a EPROM into the PCD system then at start-up the<br />

system is configured and only then the PCD starts to run. Make sure that you<br />

change the jumper on the PCD from R (RAM) to E (EPROM) if you use an<br />

EPROM. The jumper location is explained in the hardware manual of every<br />

PCD.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-22


Workshop PG5<br />

Additional tools<br />

8.7 Download a new Firmware version<br />

With the new generation of SAIA PCD’s (starts with PCD2.M170) the firmware<br />

can be changed by the PG5. There is no need to burn the firmware anymore.<br />

In order to change the firmware just open the “Online Configurator” and go<br />

online.<br />

Once the “Online Configurator” is running, start the “Firmware Updater” from<br />

the menu :<br />

“Tools “ => “ Update Firmware”<br />

Firmware loader:<br />

Add the new FW<br />

you want to download<br />

here.<br />

“Start” downloads<br />

the Firmware to<br />

the PCD.<br />

PG5-08-E © Saia-Burgess Controls Ltd. Page 8-23

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!