Introduction.
Introduction.
Introduction.
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