beautypg.com

Watlow LogicPro User Manual

Page 197

background image

LogicPro User’s Guide

Chapter 11: User Defined Function Blocks

Doc.# 28002-00 Rev 3.00

Watlow Anafaze

181

functions. The structure and these three functions are listed in
the following example as they are generated by LogicPro.

#ifndef PCADD1UDFBHeader

#define PCADD1UDFBHeader

#define bool char

#define Int16 short

typedef struct {

Int16 A;

Int16 B;

Int16 C;

bool EN;

bool Q;

}ADD1Struct;

extern int ADD1(bool EN,bool *Q,ADD1Struct *ADD1StructA);

extern void InitADD1(ADD1Struct *ADD1StructA,Int16 A,Int16 B);

extern void ResetADD1(ADD1Struct *ADD1StructA);

extern void ExitADD1(ADD1Struct *ADD1StructA);

#endif

Let’s take a closer look at the main function and how to write
C code.

int ADD1(bool EN,bool *Q, ADD1Struct *ADD1StructA);

This function is called in the evaluation loop of your Program.
It is called when the rung of Ladder logic that it resides on, or
a Function Block diagram, is being evaluated.

All Boolean inputs are given to the function passed by their
copies. All other inputs are passed by reference through the
structure. In our example, ADD1, use the structure pointer

ADD1 StructA

to get the value of either

A

or

B

.

Any output can use a pointer to exchange the value from the
Function Block to the variable specified by the Ladder
diagram. In this example, we use a pointer

C

to pass the value

of our arithmetic operation to the variable assigned in the
Ladder diagram.

The final parameter that is passed to the function is a pointer
to a structure.