Practice English Speaking&Listening with: 4.6 User Libraries (IEC 61131-3 Basics with MotionWorks IEC)

Difficulty: 0



You are watching the IEC 61131 Basics

Video Tutorial Series

This video shows how to work with User Libraries

Hi, I'm Matt Pelletier

and you know probably the

greatest advantage of the IEC 161131-3 Specification

is that it is designed with reusable code in mind

POUs and Data Types that have been designed in

one project can easily be imported into another

these projects are referred to

as User Libraries

and in this video we'll show how to

both create and incorporate them.

I'd like to begin with an overview of the process

of inserting a Library into your project

basically what it comes down to is you have

your project with a Libraries Folder

and you right-click Insert > User Library

this User Library is nothing more than another project

after you Insert that Library,

the data that you get from that project

basically are all of the Functions and Function Blocks

and even Program POUs from that project

you also get the Data Types

what you don't get is the Global Variables

or any hardware-based Variables

then for organization, any imported library

will appear in your Edit Wizard under a New Group

with the name of that library

and it's a good idea to keep version numbers

in those libraries just for a good housekeeping.

So that was real quick I'd like to now is show this

and you could go through and follow along with me

and do this as well it's a best way to learn

and let's say that we're done with this project

and we'll do a final Make

we can then go into Make a New Project

and let's start with the PLC to simulate a template

like we did before

and the basic concept here is that I could

Insert a User Library which my project was called PQS1

now it will automatically look in the Libraries folder

there is a default that can be changed

but I'll have to navigate to

the location of my project

if I want to use it as a Library

and by default that will be up

one level in the Projects folder

and I have created a subfolder for myself

and there it is, PQS1 I can include this and

now this new untitled Project includes this Library

and I can open up the POU from this new project

and here in the Edit wizard

I'll have this area called PQS1 and there

you can see I can pull in the same

Blinker, Force and Temperature

my Functions and Function Blocks

are all here and they can be used again

and the good thing is too that they

can't really be changed

I can double-click to Open them I can see the code

but I wouldn't be able to

to change them because it's in a different project

it's in my other project

so you have some level there of safety

against editing

this project, this Library Project

when you didn't really intend to.

Now this is also a good time

to look at these tabs

that are part of the Project Tree

and if you were to widen this

you'll see that one of these tabs is for Libraries

you can see the detail of any of the libraries

that you've entered

and here I can see

that I've have as I said that

Data Types and Logical POUs

so any of my Data Types from the other

project are included here and also any

of the Logical POUs

the POUs include more than just the Functions

and Function Block they include all

of the Program POUs as well

and so here you can see why it's important

in your project not to use

common words because

for example Main here from the Logical POU

I would not be able to reuse

because I have a Logical POU called Main already

in my Main project I could rename this one

but the names are important

and so that's why we've been pretty strict

about prefixing everything with YTTS.

So while this is the basic way of

inserting and using a library

so this what I just showed you is the main idea

of User Libraries, it's Inserting a Project

and then in the Libraries tab you see

what you have you can use the Function Blocks

and you can even Insert Instances

Program Instances from that library

we could reuse IPCSim and

a QPSim like we had in our other project.

And so the rest of this video is going

to be about the best practice of how to

do this in a controlled and logical way

so that you don't just have a big jumble

of projects being used by each other

we've found from experience

that doing a few steps will really help

clean it up and keep everything organized

and so to outline some of these practices

we do have in our Quick Reference Guide

which is available at

we have a few steps here on

how to best Create a Library

and I'll outline those steps here

the first step would be to Save it

in the Libraries folder

and give it a library sounding type of name

the second step would be to clean up

and re-Make the project with that new name

and then finally Save your project

as a ZIP, it creates a .zwt file

and this is a single file Portable Project

that can be easily stored on a network drive

or shared with others

and then you have a reference place to go back

in case you unintentionally make any changes

to the unzipped version.

So here's an outline of some of the things

that you should do.

Number one is call it with something

with the name Library, we'd recommend

Yaskawa uses the term Toolbox

to market our libraries

and we'd recommend you put the version number

somewhere in that name of that project

we recommend you prefix all the

Data Types we've been good about that

we also recommend you prefix all of the

POUs that you plan to keep

and finally we found that it's usually not

the Program POUs that are of interest

to the Library but rather the

Functions and Function Blocks

so you'd like to have a minimum

of POUs required in order for the project to compile

probably INIT POU and some

type of we call it Palette POU

where you can put each Block in

so that it compiles

and then have a very minimum

number of Tasks and Instances within that Task.

So again, follow along with me

as we attempt to build our first Library Project

so that we can have access to these

three Function Blocks that exist in our Project.

So first we'll go to File

and go back here to our project

I'd called the PQS1

I'm not going to save the UNTITLED project

I don't need that that was just a temporary

and step number one was to Save

under a new name in the Libraries folder.

So we will do Save Project As

and then we'll go up

to the Libraries folder

and I will call it IECbasicsLibrary_V001

version control is very important

and that new project name

and the path of that project

is also shown here in the Project Tree window.

So now the idea is that I'm not thinking of this project

as an application solution for a

a parking gate anymore

I'm thinking of it as a library of Functions

and Function Blocks

that I can use for future applications

perhaps parking gates or perhaps other

and so I'll keep the Blinker

I'll keep this Force and Temperature

but I don't really need to have Timers

I can delete that one

I don't need this Task here

called Lowest Priority I don't need INIT

I really don't need any of these here

I think I can select several of them

and I'll just delete them

however now you can see that I've tasks in my list

for which there are no Logical POUs

so I'll need to start

deleting some of these

remember be sure that that Resource is Closed

not minimized but Closed

and I think I'll delete everything but Fast

and all of the Instances

and now if the code would compile

like this I could leave it

but it says I'm missing a Program Instance

so you have to have one Program POU

so I will insert one

call it YTTS_Palette

as a Ladder Diagram

and then in this Palette

we typically put in

each of the Function Blocks

just to be sure they compile

so Blinker

put in some test Variables

Force, so I think I'll leave EN/ENO alone

we can accept these default names

and there's Temperature

and none of the Global Variables will be used

so we don't really care about these

there's not any reason to remove them

they will not be imported

and let's see if this is enough to Make

Oops, we didn't do the Instance yet so

so the Fast should Insert a Program Instance

of YTTS_Palette

and now we can Make it

so I have an error let's go to see the error

it says Invalid data type 'BOOL'

let's see I guess this V004 turned out to be BOOL

we needed LREAL

okay missed that I guess

still have zero errors and two warnings

it is a good idea to get rid of any of the warnings

because you'll see those warnings

in any of the projects.

So anything about

Instance is never used

let's get rid of that

zero errors, zero warnings you know I

even like to do a Rebuild Project

that sometimes shakes out a few other

errors and warnings that may have

been accepted.

Alright, Rebuild even gave me zero errors,

zero warnings

so I believe that I've prepared this project

now properly

I have only one Program POU

I have my Function in Function Blocks

each of them are tested here in this

Palette, I have Compiled

I have one task only

and I've gotten rid of everything else that is

not part of what I'm expecting in this Library.

Now it's time to Zip the Libraries

I'll just have to do Save As Zip

my next step is to Zip the library

and when I do that

there will be some options

and one of them is to Zip User Libraries

and another one is to Zip Frontend Code

this is important so that you don't have to

Recompile the Library

it takes the result of my last build there

that Make and includes that and it's also

a good idea to Zip the Firmware Libraries

and the User Libraries

anything that you may have added to the project

and it will see that in ours

we don't have anything there

so that won't apply for our case

there's also an Option called Page Layouts

but that is not used

so let's do a Zip here

File > Save Project As >Zip Project As

we're in our Libraries folder

I will change it to Zipped Project File

and I don't have any any User or Firmware Libraries

but if I did it doesn't hurt

to check these boxes anyway.

So we'll Zip it now and we now have officially

we're going to be officially making Version 001

Alright, let me just show you where

they put that in Windows Explorer

it's not a Windows library, it'll be under C

this is Windows 7 here

C > Users > Public > Public Documents

and you'll see MotionWorks IEC Pro Libraries

so I have some other libraries that I've

downloaded from Yaskawa are also in here

but here's ours IECbasicsLibrary_V001

and this is the MotionWorks IEC2 project

the .zwt

you can see that icon Zwt version

a little compression icon there

this is the zipped portable all-in-one project

the unzipped version

is also called IECbasicsLibrary

but that's just a 4k file which has all of

its data here within this folder

and the many subfolders and pieces of

information that are there

this is the working project

and then the Zip project

one level up

wraps that into one

and by the way

you always want to use MotionWorks IEC

to make Zips and to Unzip them

never try to use WinZip

or WinRAR they that will not

reconstruct directory structure appropriately.

So now this Zip library

can be ported over to another computer

maybe it's like a computer that does not have

this IECbasicsLibrary and so to

simulate that I will delete this confidently.

So now I no longer have this

maybe I shouldn't have done that with

the project open but I'll just do a

close this project

and let's check that again

so I don't have a IEC Basics

I'll delete it again

and so now if this was a new computer

and a different computer

you could send that Zip file to somebody

they could put it into their Libraries folder

and then you could go here

to Open Unzip Project

get that Library

and Unzip it

and it asks you do you want to

Unzip the project to the folder

containing the .zwt file

well in my case, that is the the Libraries folder

so I would click Yes

if you had the. zwt file on your desktop

I would answer No

in any case, you can always answer No

and then find the folder that you want to Unzip to

and that would be the Libraries folder.

You Save it, that Unzips it

and now here I'm looking at the restored unzipped


now what I always tell people to do is when

you look at this Unzipped version

take a little note of what the Data Types are

of this library

because that'll be important in the next step here

YTTS_CustomTypes and PLCTaskingInfoType

and so this is a library you really

don't need to change it or remake it

what we want to do is to use this

library in another project.

so let's make a New Project again

the PLC Simulator in this case

so now I have a new Untitled Project

and we'd like to start with

those three Function Blocks so we'll insert a

User Library

now it looks right in the Libraries folder

and I see it here

IECbasicsLibrary let's include it

and your first step might be to say okay

I've got a New Project here I've got a Library

let's be sure that I can Make this

and it seems that almost instantly

it says there are 10 errors and zero warnings

this is a little gotcha here because

there are these Data Types

defined more than once

you see what happens when you do

File > New Project and

you choose one of the Templates

the Template gives you some default Data Types

and some POUs and some hardware

it's usually to your advantage but in

the case of a library that already

includes those Data Types

it's a double definition

and so you can look in the library

and look at the Data Types

that are in it

and if the Data Type worksheet already exists

in the library you don't

need to have it again in your project

and so you can delete it

and this is all you need to do now in order to Make

successfully your project

and so my empty project now has compiled

with the library in it

and finally I'd like to demonstrate what happens

when you use a library to make another library.

So let's say that I'm using this project

Untitled, and I want to

use it to create yet another library

first of all I would ask you why not instead include

these new Blocks in the IECbasicsLibrary

if you can that would be better

not to have so many levels but

perhaps you have a library that is based on the

IEC Basics but goes beyond it

and just to show an example here I'll create a

Function Block

and this will be something very simple


and in the interest of time this one will have a

very easy Function is this going to take an Input

and I'm going to move it to a CustomOutput

you can do this, this means move one into the other

I'll Compile this sheet

I'll Rename this to YTTS_CustomPalette

and maybe I added other Functions and

Function Blocks the concept that I'm demonstrating

will be the same

so that I can Insert a YTTS_CustomBlock

into here, just to show that it works

Okay, so I have a library within a library

and to make it interesting and I could even put in

another Data Type

and also being careful not to use the same name

as the the Library Data Type name

and I'll even quickly make a simple Array

maybe I'll make an Array of 9 LREALS

and now let's Save this Project As a Library project

IECbasics and I'll use this word Custom


okay it wants to Save everything

it is important to Make or Build after

you change a name

so I'll do Rebuild Project got an error

what's a leftover

and so now I have one Library Project

that uses another Library and I have Data Types

in this Custom Library Project

my next step then would be to create a Zip

go down here to Zip the project

and here's where it makes sense to check the box

for a User Libraries

it means I would like to include this library

so Zip it

now back to the Libraries folder here in Windows

I've got IECbasics unzipped

IECustom Library unzipped

I've got that Zip here

so let's say that I want to close this project

I'll do it right this time

and I'm gonna delete everything of my

libraries let's say that we have sent only

the IECustomLibrary

from one computer to another

so the unzipped folder

the MWT Project

and even that original IECbasicsLibrary

I can confidently delete

and all I have now is IECustomLibrary

and it has the other of the first library in it

so let's see how this works here

I'll do a New Project

so let's see how this works now

the first step would be to Open that Library Project

assuming that somebody had sent this to me

IECustomLibrary Unzip it

this time also say yes Unzip to that Library folder

good idea to keep those .zwts

also a copy of them in the in the Library folder

and now here we see we

have that CustomLibraryV001

and we see the dependent library.

Very good, let me show you also what

happens here in Windows.

Do you notice that it gave me back IECbasicsLibrary

as well as IECustomLibrary

so those two that I deleted now reappeared

when I unzipped the library that included

that CustomLibrary

but now here's the here's the catch

if we go to a New Project

and I'll have to do two library inserts

the first one

can be the one that I that I wanted

the CustomLibrary

that's the second one that I created

that includes IECbasicsLibrary

but notice it doesn't automatically pull

in that other library

you might think that it's hidden in there somewhere

but it's not

so it's up to you to do a Manual Insert

you can right-click on that library

itself to include its User Library

called IECbasicLibrary

and now we have IECbasics and IECustomLibrary

CustomLibrary uses BasicsLibrary

when you have one project that uses

another project as the library

when you create a new project

you'll need to use all of the libraries

and they're dependent libraries

and that was that my point of showing this

is there's two inserts required in order to Make

of course, if I Make now I'll have these

same ten errors from the Data Types

of the Template

which I can delete

Make now gives me zero errors

and you'll see that in one of the POUs

the Edit wizard now has a group

for each of the libraries

the CustomLibrary and the

BasicLibrary and I can use these again

as I would use any other Function Block.

So I hope I seen these little demonstrations

here that you can be

convinced of the the power

and the flexibility and the way that you could

really start to create your own

Functions and Function Blocks for your

type of application

and then reuse them

and in this way have a very rapid

deployment of any machines that you create

in the special area that you're in

if you can use different libraries

at different levels of application even

things like your Help here

will make their way through the libraries.

I think a good conclusion would be to

show Yaskawa's libraries

these can be found by going to

we use the term TB Toolbox

is our marketing term for the User Libraries

that Yaskawa has created

and you can see we have a whole host of

User Libraries for both the

Pro and the Express versions

for example one of the most common ones

might be a PLCopen

you can download them

and there's that .zwt file

along with the version number

but we've even made it easier

we've wrapped a lot of these into an Installer

and if you Download and Run this Installer

as you would any software installation

it will give you all of those libraries

like the ones that you see here

Cam_Toolbox all these that say Toolbox

are from the Toolbox Installer

and of course they have to do with Motion

since Yaskawa products are Motion Controllers

but in any case, we have these Libraries

available for free

to all who use MotionWorks IEC

they are also well documented

with the Toolbox manual and

the Installer here

which I showed the Download page

that has the advantage of installing the Help

in such a way that we can right-click on it

I'll show this here as User Library

and so here I did not show the steps

in the interest of time

but I have now PLCopen_Toolbox_v203

and you could use any of these

and you can use any of these Blocks here

and right-click on them for Help

and brings up a beautiful Help

that shows exactly how to use

the Inputs and Outputs.

So I leave you with this idea

and to let you know that there are

also videos on PLCopen_Toolbox

and Cam_Toolbox

where we highlight some of the Blocks

and explained a few examples really

quickly how to use them

and finally where to go from here and your training

you might try Yaskawa Toolbox videos

and you'll see that we have quite a few

webinars and videos

on the PLCopenToolbox

many videos on YouTube and in our website.

So with this we conclude User Libraries.

We hope that this has been useful to you

and worth your time and effort

thank you for your attention.

The Description of 4.6 User Libraries (IEC 61131-3 Basics with MotionWorks IEC)