Manual Sucosoft

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 67

Library Manager

Sucosoft S40
Programming Software

07/01 AWB-C2700-1366GB
1st published 1999, edition 06/99
2nd published 2001, edition 07/01,
see List of Revisions on Page 3
© Moeller GmbH, Bonn
Author: Arno Dielmann
Editor: Thomas Kracht
Translator: Simultrans
Contents

Regarding this manual 3


List of Revisions 3
Conventions used in the manual 4
1 S40 Program Library Manager 5
Overview 5
– Library management with Sucosoft S40 6
2 Application window of the Library Manager 7
Starting the Library Manager 7
Window areas and user elements 8
– Window areas of the Library Manager 8
– Menu bar and toolbar 10
– Status bar 11
– Context-sensitive menus 11
– Keyboard operation 12
– Help 12
3 Functions of the Library Manager 14
Overview 14
Structure of an S40 project 15
Structure of an S40 library 15
– Functions 16
– Function blocks 16
Editing buttons 17
Creating, opening and saving libraries 18
– Creating a new library 18
– Opening a library 20
– Saving libraries 21
Structuring libraries 23
– Creating a new folder 24
– Renaming a folder 25
07/01 AWB-C2700-1366GB

– Deleting folders 25
– Importing a library structure 26
Editing libraries 27
– Inserting project modules in the library 28
– Deleting library modules from the library 29

1
Contents

– Setting attributes for library modules 30


– Displaying information of a library module 33
– Updating libraries 34
Testing libraries 35
– Initial test of library modules 35
– Plausibility check of libraries 36
Protecting libraries 36
– Hiding libraries 37
– Protecting libraries with a password 39
Setting the properties of a library 40
Creating a library report 42
Documenting a library 43
– Documentation with the POU EDITOR 43
– Documentation as a Windows Help file 43
Controlling the use of a library using product
code 45
4 Example Library 49
Example task 49
Creating a new library 50
– Assigning logical library names 51
– Creating library folders 51
– Inserting project modules 52
– Saving the library 53
Protecting the library 54
– Hiding the cntArithmetic folder 54
– Protecting the library from changes 55
Integrating the Windows Help file 56
Working with several libraries 57
5 Naming conventions 58
Naming library elements 59
– Whole words instead of abbreviations 59
– Upper case letters for beginnings of words 59
– Identification with prefixes 60
07/01 AWB-C2700-1366GB

Naming of variables 61
Index 62

2
Regarding this manual

List of Revisions Compared to the 06/99 edition, there have been the
following essential changes:

Editing date Page Heading New Revision Omitted


07/01 Page 4 S40 tools in upper case ҂
letters
Page 9 Object files shown in blue ҂
Page 9 Sorting library modules ҂
Page 10 Arranging bars ҂
Page 12 Keyboard operation, Help ҂
Page 13 Direct Help ҂
Page 14 Opening several instances of ҂
the Library Manager (note)
Page 21 Saving a library ҂
Page 23 Simple folder structure ҂
Page 26 Importing a library structure ҂
Page 29 Multiple selection ҂
Page 30 Procedure for setting ҂
attributes
Page 32 Disabled modules shown in ҂
red
Page 35 External variables ҂
Page 37 Hiding libraries ҂
Page 41 Licence ҂
Page 45 Multiple selection ҂
Page 45 Controlling library use with ҂
product code
07/01 AWB-C2700-1366GB

3
Conventions used in the
manual

Conventions used in “Select ‹ Library ➞ Save ...› ” means: activate the


the manual “Save” command from the “Library” menu.
Lower-case italic letters indicate texts which you
must enter as shown in the text.
Example: c:\projects\example
Upper case letters indicate the tools in the
programming software Sucosoft S40, e. g.
NAVIGATOR.
Instructions for actions you need to perform are
marked with an arrow 왘. All other sections merely
provide you with information and no action is
required on your part.

 Texts marked in this way draw your attention to


additional information and tips on the topic under
discussion.
07/01 AWB-C2700-1366GB

4
1 S40 Program Library Manager

Overview The Library Manager is available to you as a tool for


the programming software Sucosoft S40. It is
intended to help you manage function blocks and
functions without using the source text of the
function blocks.
Until now, you could only create function libraries at
source text level with Program Organisation Units
(POU) of type function block or function. These were
then integrated into a project by inserting the source
file in the project list or via the POU EDITOR.
By using the source text itself, the function is very
likely to be modified in different ways in the course of
time so that after a while it can no longer be used for
further projects. In addition, no protection of know-
how is possible because the source files are open for
inspection by anyone. The S40 Library Manager now
provides you with a number of crucial advantages:
When completed, the source code of a POU is
compiled once and the resultant object code is
added to the library. There is no need to compile
this POU again for subsequent projects.
Short compiling times reduce the development
time. Only POUs which have just been created
have to be compiled.
The know-how of a program library remains
protected. POUs can be used and passed on
without revealing the source code.
Reliable application programs result from the use
07/01 AWB-C2700-1366GB

of tested, standardised modules.

5
Overview

Should you wish to incorporate a library in your


project, this becomes part of the Sucosoft S40
programming software. You can use both newly
compiled function blocks and existing user functions
and function blocks from your own libraries or the
integrated manufacturer function blocks supplied
with the programming software.

Library management with Sucosoft S40


To be able to use the S40 Library Manager, the
Sucosoft S40 programming software must be
installed on your PC.
Before you create your own S40 libraries, you should
familiarise yourself with the basics of Sucosoft
programming. You should be able to create a
Sucosoft program, define data types and use and
create instances of functions and function blocks.
Information on the basic principles of Sucosoft S40
programming can be found in the manuals
“Language Elements for PS4-150/-200/-300 and
PS416” (AWB2700-1306-GB) and “User Interface
Sucosoft S40” (AWB2700-1305-GB).
07/01 AWB-C2700-1366GB

6
2 Application window of the Library
Manager

Starting the Library The Library Manager is installed as an additional tool


Manager of the programming software Sucosoft S40 and can
be opened via the NAVIGATOR – the tool manager of
the programming software:
왘 Open the NAVIGATOR.
The toolbar of the NAVIGATOR contains the icon for
the Library Manager.

Figure 1: Button for the Library Manager

왘 Click on the Library Manager button in the


Sucosoft toolbar.
The Library Manager is started.
07/01 AWB-C2700-1366GB

7
Window areas and user
elements

Window areas and user After starting, the application window of the Library
elements Manager is opened.

Figure 2: Application window “Library Manager”

Window areas of the Library Manager


The Library Manager is divided into three window
areas:
Project module window, top part of window
Library structure window, bottom left
Library module window, bottom right.
Project module window
The project module window contains a list of all
object files created for the selected S40 project.
These include the function blocks and functions
which can be drawn on to compile a library.
07/01 AWB-C2700-1366GB

8
Window areas and user
elements

Project modules that are already part of the current


library are shown in blue.
Library structure window
The library structure shows all of the folders used to
create the current library, starting with the logical
name of the library. You use the folders to structure
the library modules and simultaneously create library
groups from modules that are associated by
function.
Library module window
The library module window displays the modules of
a marked folder and lists changes detected by the
Library Manager. When you insert or remove a library
module in a library, the Library Manager displays the
changes in the Library module window.
In the Library Module window, you can sort the
displayed modules on the basis of the criteria “POE
Name”, “POE Type” or “Help ID”. To do so, click on
the corresponding column heading; the arrow that
appears indicates the direction of sorting. Another
click on this column heading reverses the direction of
sorting.

 After a library has been imported in the


NAVIGATOR, the library structure and library
modules are shown as they appear in the Library
Manager.
07/01 AWB-C2700-1366GB

9
Window areas and user
elements

Menu bar and toolbar


The menu bar and toolbar with the editing buttons
are located above the library window.
Both bars can be arranged as desired on your
desktop. Click on the handle of the bar (double
vertical line) and drag it with the mouse button
pressed into the desired position. This position is
saved when you exit from the Library Manager.
You use the menu bar to initiate the commands
available for use with the Library Manager. In
addition to the standard Edit, View, Window and
Help menus, there are Library and Tools menus
giving you access to the special functions of the
Library Manager.
The toolbar is provided for quick access to frequently
used commands of the Library Manager. The toolbar
can be displayed or hidden with the menu item
View ➞ Toolbar. There is an appropriate “tool tip” for
each of the buttons in the toolbar.
07/01 AWB-C2700-1366GB

10
Window areas and user
elements

Status bar
The status bar is displayed right at the bottom of the
Library Manager and shows information on the
status of the program. Displayed from left to right
are:
The status of the Library Manager itself
The current path of the S40 library
The selected type of PLC.
The status bar contains a brief explanation of the
currently selected menu item.
The toolbar can be displayed or hidden using the
menu item ‹ View ➞ Status Bar› .

Context-sensitive menus
Depending on the current position of the mouse
pointer in the library window, you can use the right-
hand mouse button to open a context-sensitive
menu in which you can select frequently used
commands.

Figure 3: Context-sensitive menu items Insert and About...

For example, you can click with the right-hand


mouse button on a module you have marked in the
project module window and add the module to the
library with the context-sensitive command Insert.
07/01 AWB-C2700-1366GB

11
Window areas and user
elements

Keyboard operation
Most commands of the Library Manager can also be
initiated with shortcut keys. For example, you can
use the Ctrl + P key combination to directly print out
the library information.
You will find an overview of all the shortcut keys at
the menu item ‹ Help ➞ Keyboard› or by pressing
the F9 function key.

Help
You can call up Help in various ways in the Library
Manager:
Help on procedures using “Help ➞ Procedures”
The Help topics are listed there under Contents or in
the index.
Context-sensitive Help using F1
Here, you are provided with context-specific Help
regarding the dialog box or menu item on which the
mouse pointer is positioned. Information on how to
use the online Help is provided under “Help ➞ Using
Help”.
Direct Help using the question mark or F1
This is where you are provided with context-related
Help regarding a button, a list selection or another
input element within a dialog box, in so far as a Help
text would be appropriate.
A dialog box that offers Direct Help is indicated by
the question mark to the left of the “Close” box.
07/01 AWB-C2700-1366GB

12
Window areas and user
elements

You are provided with Direct Help


by clicking the question mark button (to the left of
the “Close” button) and then marking the relevant
element or
using the right-hand mouse button.
왘 Click with the right-hand mouse button on the
relevant input element.
왘 Click the Direct Help box that appears with the
left-hand mouse button.
A Help text describing this input element appears
directly.
Online manuals
The menu item ‹ Help ➞ Manuals› enables access to
the Sucosoft S40 documentation in PDF format, in
so far as you requested this during the installation of
Sucosoft S40.
Readme
The menu item ‹ Help ➞ Readme› enables access at
any time to current information that came to light
after completion of the Sucosoft S40
documentation.
07/01 AWB-C2700-1366GB

13
3 Functions of the Library Manager

Overview You create user applications in projects with the


programming software Sucosoft S40. A project is a
collection of files needed to create an application.
Repeatedly used program code is stored in functions
and function blocks. The Library Manager is
designed to gather these functions and function
blocks into libraries so that you can use them over
and over again in different projects.

 For parallel editing of different libraries, you can


open multiple instances of the Library Manager.
If you have opened a library module more than
once with multiple instances of the Library
Manager, changes in the module can be
overwritten. This happens when you later close
the Library Manager with the unchanged module
and in doing so answer the query “Save
changes?” with “Yes”.
This chapter describes the functions of the Library
Manager and shows you how to
Create and modify a library
Structure a library
Insert and modify library modules
Protect and document a library
Control the use of a library using product code.
07/01 AWB-C2700-1366GB

14
Structure of an S40 project

Structure of an S40 In S40 projects, the sources of the program are


project stored in Program Organisation Units (POUs). There
are three possible types of POU:
Programs
Functions
Function blocks.
Simple applications can consist of a single program,
where the entire code of the application is contained
in this program. In order to develop larger and more
complex applications, it is necessary to create
separate functions and function blocks which are
then integrated into the program as modules.

Structure of an S40 The POU function and function blocks are gathered
library together in libraries and structured as modules, with
the S40 Library Manager.
A library uses the PLC-specific object code of the
library modules. The library modules therefore have
to be present and must have been compiled into the
right form for the specific PLC. The type of PLC of a
library is entered when a new library is created.
07/01 AWB-C2700-1366GB

15
Structure of an S40 library

Functions
Functions can be created for frequently used PLC
tasks. A function can contain several input
parameters, but only one output parameter, i. e. the
processing can only return one data element as a
result. Functions cannot store information.

Function blocks
Function blocks can also be created for frequently
used tasks. In contrast to functions, function blocks
can supply several output operands as results and
store the values of variables from one call to the next.
Stored values can be reused when the function block
is called next time or can be overwritten by new
values.

 Function blocks which contain EXTERNAL


variables cannot be used in libraries. A variable
declared as ‘external’ is a reference to a global
variable which has been declared in a POU of
type ‘Program’. Program POUs, however, cannot
be part of a library.
Other information on functions and function blocks
can be found in the S40 manual “Language Elements
for PS4-150/-200/-300 and PS416“
(AWB2700-1306-GB).
07/01 AWB-C2700-1366GB

16
Editing buttons

Editing buttons Frequently used actions for editing a library can be


started directly with the editing buttons in the
toolbar.

Figure 4: Toolbar buttons

New: creates a new library. The ‘Create a library’


dialog box for basic settings of the new library is
displayed.
Open: opens an existing library and displays the S40
library modules and the library structure.
Save: saves the changes to the open library with all
associated library properties on the floppy disk or
hard disk.
Print: prints out information on the open library.
Page View: displays a preview of the printed page.
07/01 AWB-C2700-1366GB

17
Creating, opening and
saving libraries

Creating, opening and The commands in the Library menu control the
saving libraries library functions at file level. Commands are provided
to create a new library, open an existing library or
save changes to an open library.

 A new library must not be saved in a


Sucosoft S40 folder named ‘LIB’!

Creating a new library


Requirement: So that you can create a new library,
there must be an S40 project. The modules in the
project must be present in compiled form for the type
of PLC for which you wish to create a library.
왘 Select ‹ Library ➞ New...› or click on the “New”
button.
The “Create New Library” dialog box is displayed.

Figure 5: “Create New Library” dialog box


07/01 AWB-C2700-1366GB

18
Creating, opening and
saving libraries

If a library is already open, this is first closed. If the


open library contains unsaved data, the program
asks you to save any changed library data first.
왘 Under PLC Type, set the type of PLC for which a
new library is to be created.
왘 In a file path, select an S40 project and click on
the “OK” button or click on the “Browse” button
to select an S40 project for the library.
The “Create New Library” dialog box is displayed.

Figure 6: “Open Project” dialog box

왘 Mark an existing S40 project in the list and click


on the OK button or double click on a previously
opened project.
All the function blocks and functions are displayed in
the project module window.
07/01 AWB-C2700-1366GB

19
Creating, opening and
saving libraries

A folder named ‘untitled’ is displayed in the library


structure window.
왘 Give the folder a logical library name of up to
32 characters.
The programming software Sucosoft S40 uses this
logical library name to identify a library and uses it
after the import to display a library in the “Tree View“
window of the NAVIGATOR.
왘 Save the inputs made so far as described in
Section “Saving libraries”.

Opening a library
Requirement: there is already a library with project
files.
왘 Select ‹ Library ➞ Open› ... or click on the Open
button.
The dialog box “Open” is displayed.

Figure 7: Dialog box “Open Library“


07/01 AWB-C2700-1366GB

20
Creating, opening and
saving libraries

If a library is already open, this is first closed. If the


open library contains unsaved data, the program
asks you to save any changed library data first.
왘 Choose a library name and click on OK. Library
files have the file name extension ‘.lib’.
The Library Manager displays the library structure of
the open library.
If a library is protected, a window is displayed
requesting a password to enable the library. For
information on password protection and the
protection functions, refer to the chapter from
Page 39.
The four libraries most recently edited are displayed
in the Library menu and can be opened directly by
clicking on the appropriate menu item.

Saving libraries
Requirement: A library must be open.
왘 Select ‹ Library ➞ Save› or click on the “Save”
button.
The current settings of the library are saved under the
file name you have assigned to the library and the file
name extension ‘lib’. This physical file name is what
you use for later import of a library in the
NAVIGATOR.
When the library is saved, a file with the library
structure is also created automatically. It is given the
same physical file name as the library and has the file
name extension “grs”. This file can be reused when
07/01 AWB-C2700-1366GB

you create a new library (see next Section


“Structuring libraries”).

21
Creating, opening and
saving libraries

A dialog box for selecting the path and for entering


the library name appears.

Figure 8: Dialog box “Select library name and path”

 Note
When updated libraries are saved, it can occur
that the system issues a warning under the
following circumstances:
A library that was created using a Library
Manager of version 1.x contains POUs with
more than 8 characters (long name).
The POUs of the library are retranslated using
the programming software Sucosoft S40
V5.0 or higher.
If you use the Library Manager Version 2.0 or
higher to update the library, this also uses long
names. For this reason, the library can then no
longer be edited using a Library Manager of
version 1.x.
07/01 AWB-C2700-1366GB

22
Structuring libraries

Structuring libraries You structure the library modules of a library in order


to achieve a better overview of folders which you
have created for various themes. Only a simple folder
structure can be created, i. e. no folder can be
created as a subfolder of another folder.
The folder structure is edited using the submenu
Library ➞ Folders or with commands in the context-
sensitive menu. You can create, delete or rename
folders. When creating a new library, you can also
use folder structures that have already proved
effective; you import these as a library structure (see
Page 26).
You open the context-sensitive menu by clicking
with the right-hand mouse button in the library
structure window.

Figure 9: Context-sensitive menu for the menu item


“Folder”
07/01 AWB-C2700-1366GB

23
Structuring libraries

Creating a new folder


왘 Select the Library ➞ Folder ➞ New menu item or
click on “New” in the context-sensitive menu.The
new folder appears in the library structure
window with the temporary name ‘untitled’.

Figure 10: Creating a new folder

왘 Give the folder a name of up to 32 characters.


Select the folder name – do not double click on
it – then shortly after click on the folder name
again. The cursor is positioned in the name field
of the folder.
왘 Change the name and press the Enter key. The
folder is displayed with the new name.
07/01 AWB-C2700-1366GB

24
Structuring libraries

Renaming a folder
왘 In the library structure window, mark the folder
you wish to rename.
왘 Shortly after, click on the folder name again - do
not double click -
or
Select the menu item Library ➞ Folder ➞ Rename
or click on “Rename” in the context-sensitive
menu.
The cursor is positioned in the name field of the
folder.
왘 Enter the new name and press the Enter key. The
folder is displayed with the new name.

Deleting folders
A marked folder can be deleted from the library
structure window along with all of the library modules
contained in it.
왘 In the library structure window, click on the folder
you wish to delete.
왘 Select the menu item ‹ Library ➞ Folder ➞
Delete› or click on “Delete” in the context-
sensitive menu.
The folder structure is deleted from the library. The
basic project data is retained unmodified on the
diskette or hard disk.
07/01 AWB-C2700-1366GB

25
Structuring libraries

Importing a library structure


For simple and rapid design of a new library, you can
use the library structure of an existing library.
왘 Select the menu item ‹ Tools ➞ Import...› .
A dialog box for importing a library structure
appears.

Figure 11: Importing a library structure

왘 In the folder in which your library is filed, select


the ‘grs’ file of the same name and click the
“Open” button.
The imported library structure is displayed in the
library structure window.
왘 In the library structure window, now mark a target
folder for your module and insert it. Repeat the
procedure for all the required modules, whereby
multiple selection of modules is possible.
07/01 AWB-C2700-1366GB

26
Editing libraries

Editing libraries You can use the commands from the “Edit” menu to
Insert project modules in the library
Delete library modules from the library
Set attributes for library modules and groups of
library modules
Display information from library modules and
Update libraries
Notes on editing
If you wish to select project or library modules for the
above editing steps, please proceed as follows.
Mark the project or library modules of your library in
the project module or in the library module window
by clicking with the mouse pointer. You can select
several modules at once by clicking on them while
pressing and holding the “Ctrl” or “Shift” key:
Hold down the Shift key if you wish to mark all
modules lying between the first module you
select and the second one.
Hold down the Ctrl key to individually switch on
and off the marking of each selected module.
07/01 AWB-C2700-1366GB

27
Editing libraries

Inserting project modules in the library


To build up a library, the project modules from the
project module window must be inserted in the
folders of the library structure.
왘 In the library structure window, mark a
destination folder for the modules.
왘 In the project module window mark all modules
you wish to insert in a folder.
왘 Select the menu item Edit ➞ Insert or click on
“Insert” in the context-sensitive menu.

Figure 12: “Insert” command in the context-sensitive menu

The selected project modules are transferred to the


marked folder.
You can also drag and drop project modules into the
library folder.
왘 In the library structure window, mark a
destination folder for the modules.
왘 In the project module window, mark all modules
you wish to add to a folder.
왘 Press and hold down the left-hand mouse button
and drag the market project modules into the
library module window.
07/01 AWB-C2700-1366GB

28
Editing libraries

Deleting library modules from the library


To remove a module from a folder, the folder in which
the module is located must be open. The modules
are then displayed in the library module window and
can be deleted.
왘 In the library structure window, open the folder
from which you wish to delete the modules.
왘 In the library module window, mark one or more
library module(s).
왘 Select the menu item ‹ Edit ➞ Delete› or click on
“Delete” in the context-sensitive menu.

Figure 13: Context menu item “Delete”

The selected modules are deleted from the library


structure. The basic project data is not changed on
the floppy disk or hard disk.
07/01 AWB-C2700-1366GB

29
Editing libraries

Setting attributes for library modules


Attributes define how library modules or entire
groups of modules are presented to the
Sucosoft S40 user. In this way, for example, modules
can be hidden or enabled before the finished library
is used without the need to change elements or
structures of the library. All you have to do is change
the “Hidden” or “Deactivated” protective attributes
of the library modules.
Procedure
왘 In the library structure window, open a folder and
mark the module in the library module window. To
accelerate the change in attributes, you can also
mark several library modules.
왘 Select the menu item ‹ Edit ➞ Attributes...› or
click on “Attributes” in the context-sensitive
menu.

 If you want to set attributes for an entire module


group, only mark the corresponding folder and
then click in the context-sensitive menu on
“Attributes”.
The following dialog box appears.
07/01 AWB-C2700-1366GB

Figure 14: Dialog box for setting attributes for marked


library modules or groups

30
Editing libraries

왘 Set the attributes you require. Clicking “OK”


accepts the attributes for the marked library
module or for a group of library modules.

 If you have marked a number of library


modules, the dialog box “Properties” remains
open until you have set the attributes for each
marked library module and confirmed by clicking
“OK”. The name of the library module currently
being edited is displayed in the title bar of the
dialog box.

Explanation of the attributes


Visible: a library module can be made visible for the
Sucosoft S40 user.
Hidden: a library module or a group of library
modules can be switched to hidden for the
Sucosoft S40 user. They then have the following
properties:
Modules and folders can be seen neither in the
selection window of the POU EDITOR, nor in the
instance tree of the TEST & COMMISSIONING,
nor in the NAVIGATOR.
Hidden library modules can only be used by other
library modules within this library.
The attribute “Hidden” for a library overwrites the
setting of the groups (folders) it contains. The
attribute “Hidden” for a group overwrites the
setting of the library modules it contains (see
Page 38).

 If you hide a group of library modules, the


corresponding folder is shown as dark blue in the
07/01 AWB-C2700-1366GB

library structure window.

31
Editing libraries

Example:
You offer the user only those library modules for
selection which are publicly available and
documented. Subordinate auxiliary modules are
made invisible with the attribute “Hidden”.
Deactivated: a library module or a group of library
module can be deactivated.
The functions of deactivated modules can no
longer be used by the Sucosoft S40 user, but the
modules remain in the library (invisible).
The deactivated modules of a library can no
longer be called by the activated modules.
The attribute “Deactivated” for a group overwrites
the setting of the library modules it contains (see
Page 38).

 If you deactivate a group of library modules, the


corresponding folder is shown as red in the
library structure window.
Example:
You have created a library folder containing basic
controllers such as PID, two-position and three-
position controllers. In addition, there is a library
folder for crane controllers and one for building
services with special controllers which use the basic
controllers.
Deactivate the entire group of crane controllers
without making any other changes in the library. The
full functions of the controllers in the library can now
be used for the building services.
Help ID: using the Help Identifier (ID), a Help text for
07/01 AWB-C2700-1366GB

the module can be called up from the Help file of the


library (see Page 43).

32
Editing libraries

Displaying information of a library module


왘 Select the menu item ‹ Edit ➞ Info...› or click on
“Info...” in the context-sensitive menu.
The dialog box “Info” appears.

Figure 15: Dialog box “Info”

You can select the following information blocks for


each library module with the appropriate tab:
General: code size and data size
Prototype: prototype of the function block or
function
POU Info: information on the POU
왘 Select the appropriate tab to display the
information.
07/01 AWB-C2700-1366GB

왘 Close the window with OK.

33
Editing libraries

 With multiple selection, you also receive


information on several library modules listed in
the library module window. The dialog box “Info”
remains open until you have confirmed the
information on the last marked library module
with the “OK” button. The name of the library
module currently on display is shown in the title
bar of the dialog box.

Updating libraries
All modules of a library can be compared with the
data of the current S40 project and updated. If the
modules in the S40 project are of a more recent date
than those in the library, the Library Manager
replaces all modules on request.
왘 Open an existing library and select a library
folder.
왘 Select ‹ Edit ➞ Update› or click on “Update” in
the context-sensitive menu.
The library modules are updated.
If there are library modules missing in the associated
S40 project, or the interfaces of the newer functions
and function blocks do not match those of the library
modules, an error message is output and the
updating process is aborted. The library modules are
then not updated.
07/01 AWB-C2700-1366GB

34
Testing libraries

Testing libraries During editing and after completion of a library, the


functioning of the library and modules is tested.
The Library Manager offers two methods for testing
libraries.
Before inserting a library module, the Library
Manager automatically performs an initial test.
After completion of a library, a plausibility check
covers all still unresolved references.

Initial test of library modules


Before inserting a library module, module and library
are automatically tested for the following conditions:
No duplicated module names
Same PLC type for module and library
Library module only of POU type “function” and
“function block”, not of type “program”
Version of project module and Library Manager
are compatible.
No external variables in the module.
If the Library Manager finds an error during the initial
test, an error message is output. Only modules
without errors are inserted, all others are not.
07/01 AWB-C2700-1366GB

35
Protecting libraries

Plausibility check of libraries


The Library Manager performs the plausibility check
to reveal unresolved references. This enables you to
determine whether there are any library modules
missing which are called in the library.
왘 Start the plausibility check with the menu item
‹ Tools ➞ Plausibility Check› .
If a module is missing in the library, a message is
output.
Missing modules may well be contained in another
library.
If the module is in fact present, check that the
Deactivate attribute is switched off.

 The program does not check modules that have


been switched off with the Deactivate attribute.

Protecting libraries The Library Manager provides the following


protective functions.
Hide: Protective function for libraries. The entire
library becomes invisible to the Sucosoft S40
user. The modules retain their function.
Password: Protective function for libraries. A
library is protected from unauthorised access
with a password.
07/01 AWB-C2700-1366GB

36
Protecting libraries

Hiding libraries
To suit the specific application for a finished S40
library, you can hide the entire library without having
to modify elements or structures of the library.
Merely the attribute “Hidden” of the library has to be
changed.
Procedure
왘 In the library structure window, mark the library
folder and then click in the context-sensitive
menu on “Attributes”. Or double-click in the
library structure window on the logical library
name.
The “Properties” dialog box appears.
왘 Select the attributes option “Hidden”.

Figure 16: Library property “Hidden”

왘 Confirm your choice with the “OK” button.


To indicate a hidden library, their folders are shown
as dark blue in the library structure window.

 The attribute identification of the individual


modules in the library module window of a
07/01 AWB-C2700-1366GB

hidden library is not subjected to additional


changes.

37
Protecting libraries

Priorities
The flow diagram below shows the priorities in
assigning attributes. For example, if you have
assigned the attribute “Hidden” to your library, the
groups of library modules or the individual library
modules will also be hidden. Otherwise, this priority
does not apply. A library module with the attribute
“Hidden” is always hidden, even if the associated
group or library is not hidden.

No
Library module
hidden/deactivated?

Yes
Group of library No
modules hidden/
deactivated?

Yes
No
Library hidden?

Yes

Library modules not accessible to the user Library modules


07/01 AWB-C2700-1366GB

accessible to the user

Figure 17: Priorities for attribute settings

38
Protecting libraries

Protecting libraries with a password


In the Library Manager, you can protect libraries with
a password against unauthorised access and
undesirable changes:
The library is protected against opening and
alteration. Without specifying the password, it is
then no longer possible to add or exchange
library modules or to change attributes.
A hidden library can only be unlocked and altered
with the right password.
The password can extend to a maximum of 15
characters and consist of any combination of letters,
numbers, spaces and special characters. The
correct case of letters must be adhered to. When you
type in a password, the characters appear on the
screen as asterisks (*) to conceal the password. At
least 4 characters must be entered.
Here is how to protect your library with a password:
왘 Click on the menu item ‹ Library ➞ Properties...› .
A dialog box for specifying the library properties
appears (see Page 40).
왘 Enter the password in the text field and confirm
with the “OK” button. Make sure you adhere to
the correct case of letters.

 Should you assign password protection to a


library and then forget the password, you will not
be able to alter the library or remove the
password protection.
Make a list of your passwords and the
associated library names and keep it in a safe
07/01 AWB-C2700-1366GB

place.

39
Setting the properties of a
library

Setting the properties The library properties contain all of the information
of a library required to identify a library. This includes the library
and author name as well as company name and
version number. In addition, a library can be
assigned its own help file via the properties and a
function for protection against unauthorised access
can be activated.
Displaying and changing library properties
왘 Click on ‹ Library ➞ Properties...› .
A dialog box for specifying the library properties
appears.

Figure 18: Library Properties dialog box


07/01 AWB-C2700-1366GB

왘 Enter the desired information in the fields and


confirm with OK.
The library properties are assigned to the library after
they have been saved.

40
Setting the properties of a
library

Author: for entering the name of the library creator.


Version: for assigning a version number.
Type of PLC: displays the type of PLC. The library
can be used for this type of PLC.
Help file: a Windows Help file can be created for a
library. The name of the Help file is entered here.
You can assign an appropriate Help text to an
individual module via the Help ID attribute option.
Password: prevents changes to the protected library
by unauthorised users. Enter a password here.
Licence: This button opens the dialog box “Licence
text and product code”. Here, you can create the text
of a licence agreement that the user of your library
must accept.
You can also activate a query of the product code. It
is only possible for users to import your library if they
know this code.
07/01 AWB-C2700-1366GB

41
Creating a library report

Creating a library The Library Manager can print a formatted report of


report the open library containing all relevant data of the
library, including the function block prototypes, i. e.
the call interface.
Setting print options and starting printing
왘 Activate the library structure window
왘 Click on ‹ Library ➞ Print...› . A dialog box for
selecting the printer and for setting the print
options appears.
왘 Click on “OK” to start printing.
You can also start printing with the “Print” button in
the window of the Library Manager.
Printer setup
왘 Click on ‹ Library ➞ Printer setup...› .
The standard Windows dialog box for selecting the
printer and for setting the paper format appears.
Page view
왘 Activate the library structure window
왘 Click on ‹ Library ➞ Page view› or on the “Print
Preview” button.
The library information is displayed just as it will be
printed.
07/01 AWB-C2700-1366GB

42
Documenting a library

Documenting a library So that the Sucosoft S40 user can effectively use
your library functions, the library has to be
documented. There are two ways of integrating a
description of the library modules into your library:
In the form of a description block of the POU
EDITOR
As a Windows Help file.

Documentation with the POU EDITOR


In the POU EDITOR of Sucosoft S40, you can
supplement your own functions and function blocks
with a description block via the “POU Info” dialog
box in the File menu. The information entered there is
also stored in the object file of the project module.
When inserting the project module in the library, this
information is kept with it. Users of your library can
view the descriptions in the POU EDITOR. If a
Windows Help file is also present, this is displayed
instead of the description block.

Documentation as a Windows Help file


The Library Manager allows you to integrate a
Windows Help file in order to describe the library and
library modules. In this way, you can provide the user
with integrated documentation for your library.
To create a Help file, you need a Help text editor.
07/01 AWB-C2700-1366GB

43
Documenting a library

 There are a great many products on the market


for creating Help files which help you to enter
text, insert control codes and test the Help file.
Write a Help text for each library module. The Help
text should at least describe the function of the
module and state the input and output operands with
their meaning and type.
Combine the Help texts into a Help file using a
suitable Help text program. In doing so, assign a
unique Help ID for each help topic.
You then have to make the finished Help file known
in the Library Manager:
왘 Click on ‹ Library ➞ Properties...› to enter the
Help file. The Properties dialog box is opened.
왘 In the “Help file” field, enter the name of the Help
file you have created for your library.
A Help topic must now be assigned to each library
module via the Help ID.
왘 In the library module window, mark a library
module and select ‹ Edit ➞ Attributes...› . To
accelerate the assignment of Help IDs, you can
also mark several library modules.
The dialog box “Attributes” is opened.
왘 Enter the ID in the “Help ID” field.
The ID ensures that the correct point of the text is
opened in the Help file when help is called for. It is
specified in the Help file at the description of the
corresponding module.
07/01 AWB-C2700-1366GB

44
Controlling the use of a
library using product code

 In the case of multiple selection, the dialog box


“Properties” remains open until you have entered
the Help ID for each marked library module and
confirmed each entry with the “OK” button. The
name of the library module currently being edited
is displayed in the title bar of the dialog box.
왘 Save the library.
When the Sucosoft S40 user marks a library module
in the selection list for function modules in the POU
EDITOR and requests Direct Help, the matching Help
text is displayed on the basis of the Help ID.

 For this reason, make sure that the name of the


library Help file differs from the names of the
Sucosoft Help files.

Controlling the use of a You can use a product code to protect your S40
library using product library against unauthorised use. You identify your
code library in such a way that a later import into a
customer project is only possible after input of the
specific product code.
The product code that you create using the Product
Code Generator is given to the customer together
with the library and added to your internal customer
file.
You identify the library in the Library Manager using
the option “Query product code”.
More information on this topic can be found in the
Sucosoft S40 manual “Product Code Generator”
(AWB-C2700-1375D). The manual is only available
07/01 AWB-C2700-1366GB

as an online version in PDF format.

45
Controlling the use of a
library using product code

Requirement: Your library is open.


왘 Click on ‹ Library ➞ Properties...› .
A dialog box for specifying the “Library Properties”
appears.

Figure 19: “Library Properties” dialog box.

왘 Work through the text fields in the window for


general identification of a library.
The input in the text field “Version” must match the
input in the text field of the same name in the Product
Code Generator when the product code is created.
The entries in the other fields are optional.
07/01 AWB-C2700-1366GB

왘 Click on the “Licence...” command button.

46
Controlling the use of a
library using product code

The dialog box “Licence text and product code”


appears.

Figure 20: Licence text and product code

왘 Enable the check box “Query product code”.


This is where you specify that a product code will be
queried when the library is imported at a later date.
왘 In the input field “Encryption text”, enter the same
text as in the text field of the same name in the
Product Code Generator.
A text that has been entered once appears again in
the text field when you start the Library Manager
again.
왘 In the text field, write the text for your licence
07/01 AWB-C2700-1366GB

agreement (optional).
Your licence agreement can be written in up to five
languages.

47
Controlling the use of a
library using product code

Select the corresponding tab for this purpose.


This licence agreement will appear in the
NAVIGATOR in the “Licence agreement” window
when the library is imported later. There, it must be
accepted before the import can continue.
If you do not write a licence text, the “Licence
agreement” window is skipped and the window for
the product code query is displayed right away.
왘 Confirm with “OK”.
왘 On returning to the “Library Properties” window,
confirm again by clicking “OK”.
The library properties are only assigned to the library
after they have been saved.
07/01 AWB-C2700-1366GB

48
4 Example Library

In this chapter, you will learn step by step how to


create a library. You will see how the individual
project modules are combined into library groups
and managed in library folders. In addition, you will
learn how to set library properties and protect the
library from changes.

Example task Below, we explain the process of creating a library


using project modules from the area of control
engineering. The existing project modules are
arranged in three library groups:
Group 1: cntArithmetic
Group 2: cntBasicController
Group 3: cntLinearController.
07/01 AWB-C2700-1366GB

Figure 21: Library groups

49
Creating a new library

Creating a new library 왘 Select ‹ Library ➞ New...› .


A dialog box for selecting the type of PLC and the
project path appears.
왘 Select the type of PLC for which the library is to
be created.
왘 Select the S40 project which contains the
controller function blocks.
In the Project window, you will now see all of the
project modules.

Figure 22: Project module window


07/01 AWB-C2700-1366GB

50
Creating a new library

Assigning logical library names


In the Sucosoft S40 programming software, a library
is identified by its “Logical name”. Assign the library
a “Logical name”.
왘 To do so, switch to the library structure window.
A folder named 'untitled' is displayed here.
왘 Enter the logical library name here, e. g. “control
engineering”.

Creating library folders


The structure of the library is created with folders. For
this example, we will create three folders entitled
cntArithmetic, cntBasicController and
cntLinearController.
왘 Click on ‹ Library ➞ Folder ➞ New› . The new
folder is displayed with a preset name.
왘 Enter the name “cntArithmetic” for the new folder
and press the Enter key.
왘 Select ‹ Library ➞ Folder ➞ New› . A new folder is
displayed. Give it the name “cntBasicController”.
왘 Create the third folder “cntLinearController” in the
same way.
When completed, the library structure appears as
follows:
07/01 AWB-C2700-1366GB

51
Creating a new library

Figure 23: Library Structure window with folder structure

Inserting project modules


You now insert the individual project modules in the
library folder.
왘 In the library structure window, mark the first
library folder, entitled cntArithmetic.
왘 In the project module window, mark the project
modules you wish to insert in the folder.
왘 Select ‹ Edit ➞ Insert› .
All marked project modules are now accepted in the
library folder. They are shown in blue.
You can also insert the project modules individually
in the library folder by double clicking on them.
The following picture shows the new content of the
cntArithmetic library folder:

Figure 24: Modules in the cntArithmetic library folder


07/01 AWB-C2700-1366GB

52
Creating a new library

왘 Now transfer the project modules destined for the


cntBasicController and cntLinearController
folders in the same way.
Transferred a module to the wrong folder?
If you accidentally transfer a module to the wrong
folder, simply delete it and re-transfer it to the right
one.
왘 Click on the folder in which the module has been
wrongly transferred. All modules of the folder are
displayed in the library module window.
왘 Mark the module and open the context-sensitive
menu with the right mouse button.
왘 Select Delete. The module is removed from the
folder.

Saving the library


You have now performed all the necessary steps for
creating a library.
왘 Select ‹ Library ➞ Save› or use the “Save”
button.
A dialog box for entering the library name appears.
왘 Select a library path and give the library the name
LControl.lib. Confirm with “OK”.
The library settings are saved and the library
generated.
07/01 AWB-C2700-1366GB

53
Protecting the library

Protecting the library The user of the library is only to have use of library
modules in the folders cntBasicController and
cntLinearController, but not those in the folder
cntArithmetic.
To achieve this, the “cntArithmetic” folder must be
marked as “Hidden” and the completed library
protected against unauthorised access.

Hiding the cntArithmetic folder


왘 In the library structure window, click on the
“cntArithmetic folder”.
왘 Select ‹ Edit ➞ Attributes...› and enable the
“Hidden” option.
The “rgtMathematik” folder is now shown in dark
blue.
07/01 AWB-C2700-1366GB

54
Protecting the library

Protecting the library from changes


왘 Click on ‹ Library ➞ Properties...› . The dialog box
for entering the library properties appears.
왘 In the “Password” field, enter a password for your
library. Make sure you adhere to the correct case
of letters.

Figure 25: Properties of the library


07/01 AWB-C2700-1366GB

55
Integrating the Windows
Help file

Integrating the The Help file is created in two steps.


Windows Help file
Write a Help text for each library module. Use a
suitable tool designed for creating Help texts for
this. The Help text should describe at least the
function of the module and state the input and
output operands with their meaning and type.
Start the program you are using to create Help
texts and specify a unique Help identifier (Help ID)
for each help topic. Combine the Help texts into a
Help file with the Help text program.
You then have to make the finished Help file known
in the Library Manager:
왘 Click on ‹ Library ➞ Properties...› to enter the
Help file. The “Properties” dialog box is opened.
왘 In the Help File field, enter the name of the Help
text you have created for your library.
A Help topic must now be assigned to each library
module via the Help ID.
왘 In the library module window, mark a library
module and select ‹ Edit ➞ Attributes...› .The
“Attributes” dialog box is opened.
왘 In the Help ID field, enter the identifier to which
the Help text of the module is assigned in the
Help file.
If you have marked a number of library modules,
these are offered to you one after the other every
time you click on the “OK” button in the “Properties”
dialog box.
07/01 AWB-C2700-1366GB

56
Working with several
libraries

왘 Assign a Help ID to all the library modules for


which you have written a Help text.
왘 Save the library.
왘 Use the NAVIGATOR to import the library and
Help file into the current project and test the Help
function.

Working with several You can also distribute project modules from the
libraries same field of application to several libraries. This
allows you to develop the libraries separately and
also operate them separately. The file names of
the libraries must be different from each other. The
logical library name and the folder names, on the
other hand, can be the same.
Example
In addition to your LControl.lib library, you should
create a further library from the field of control
engineering with discontinuous controllers, e. g. with
two-position and three-position controllers.
왘 To do this, create a new library under the name
“UControl.lib” and assemble the library.
왘 As folder name, enter “cntUControl”.
왘 Use “control engineering” again for the logical
library name.
If the libraries in Sucosoft are used, the functions and
function blocks of both libraries appear in the
Function Block dialog box of the POU EDITOR and in
the NAVIGATOR under the same tab.
07/01 AWB-C2700-1366GB

57
5 Naming conventions

When naming libraries, structures and modules, it


makes sense to follow the naming conventions of
Sucosoft S40. Sucosoft users are already familiar
with the naming conventions of Sucosoft S40 and
therefore, get used to a strange library more easily.
If the names correspond to those of the
Sucosoft S40 convention, new libraries are more
readily accepted and less effort is involved in
integrating and standardising library elements.
Use the naming conventions for all program
elements the user may come into contact with when
using your libraries. These include
Library folders
Functions and function blocks
Logical library names
Your own data types
Variables of functions and function blocks.
This chapter gives a variety of recommendations to
help you choose suitable names.
07/01 AWB-C2700-1366GB

58
Naming library elements

Naming library Whole words instead of abbreviations


elements
Use whole words, not abbreviations. Whole words
are unique and more easily accepted by the user.
The following table gives a few examples:
Recommended Not recommended
InitialValue InitV
MeanValue MeanV
Temperature Temp, Tmp

If an abbreviation is unavoidable because the name


would be too long, use complete first syllables.

Upper case letters for beginnings of words


Specify names with a mixture of upper and lower
case letters. The upper case letter then identifies the
beginnings of words. That is, if a name consists of
several words, identify the beginning of each word
with an upper case letter. Do not use an underline
( _ ) character to connect words.

Recommended Not recommended


BoilerTemperature Boiler_Temperature
SwitchesOnMotor Switches_On_Motor
07/01 AWB-C2700-1366GB

59
Naming library elements

Identification with prefixes


Identify associated modules and folders of a library
with a prefix consisting of three or four lower case
letters. The prefix then allows you to identify all
modules that belong by function to one library group.
At the same time, the use of a prefix minimises the
risk of name conflicts between the modules of
different libraries – a problem that frequently occurs
with short names.
For example, identify the modules of a control
engineering library with the prefix “cnt”.

 Never use the abbreviations for data types given


in the table below as a prefix for a library element.
They are reserved for identifying the types of
variables.
In addition, you can provide your modules with a
company prefix consisting of three or four
characters. The Moeller Group of Companies uses
the prefix “ma_” for its application modules.
07/01 AWB-C2700-1366GB

60
Naming of variables

Naming of variables In addition to the library folders, functions and


function blocks, it is particularly important to identify
variable names as the direct interface of the user to
the library.
For that reason, with variables make sure you use the
agreements on word length and upper/lower case
letters. Use the prefix to identify the data type of a
variable, however.
Use an underline character (“_”) to connect the data
type and variable name.
The table below shows the prefix for all data types
supported by the Sucosoft S40 programming
software.

Data type Prefix Example


BOOL x x_MotorActivated
BYTE b b_ValveState
DATE DATE date_StartTag
DATE_AND_TIME dt dt_ChangeoverTime
DINT di di_ActualTemperature
DWORD dw dw_PresetPosition
INT i i_Setpoint
REAL r r_FlowRate
SINT si si_DisplayStatus
STRING str str_ErrorText
TIME TIME time_OnPeriod
TIME_OF_DAY tod tod_OffPeriod
UDINT udi udi_PieceCount
UINT ui ui_TraverseDistance
USINT usi usi_Rangeability
07/01 AWB-C2700-1366GB

WORD w w_DigitalOutput

61
Index

A
Assign Help ID ............................................................... 32
Attributes
“Deactivated” ............................................................. 32
“Help ID” ..................................................................... 32
“Hidden” ..................................................................... 31
Author, entering name of ............................................... 41

C
Code .............................................................................. 41
Context-sensitive menus ............................................... 11
Conventions used in the manual ..................................... 4
Creating documentation ................................................ 43

D
Deactivated, see Attributes
Deactivating, see Protective function
Desktop .......................................................................... 10
Direct Help ..................................................................... 12

E
Entering the version number .......................................... 41
Example task ................................................................. 49
EXTERNAL variables, Use of ......................................... 16

F
File name
Logical .................................................................... 8, 58
logical ......................................................................... 20
Physical ...................................................................... 21
File name extension
grs .............................................................................. 21
lib ................................................................................ 21
Folders that you have created for various topics, see
07/01 AWB-C2700-1366GB

Library folders
Function ......................................................................... 16
Function block ............................................................... 16

62
Index

H
Help ................................................................................ 12
Help file
Integrating .................................................................. 43
Integrating (example) .................................................. 56
Specifying path and name ......................................... 41
Hidden, see Attributes
Hiding, see Protective function

I
ID, see Help ID
Importing a library structure ........................................... 26
Initial test of modules ..................................................... 35
Inserting project modules .............................................. 28
Inserting project modules (example) .............................. 52

K
Keyboard operation ....................................................... 12

L
Library
Creating ...................................................................... 18
Creating a new (example) ........................................... 50
Documentation ........................................................... 43
Example task .............................................................. 49
Naming conventions ................................................... 58
Opening ...................................................................... 20
Password protection (example) .................................. 55
Properties ................................................................... 40
Saving ......................................................................... 21
Selecting projects ....................................................... 19
Structuring .................................................................. 23
Structuring (example) ................................................. 51
Test of references ....................................................... 36
Updating ..................................................................... 34
Using several libraries ................................................ 57
Library folder
Creating ...................................................................... 24
07/01 AWB-C2700-1366GB

Deleting ...................................................................... 25
Length of name .......................................................... 24
Renaming ................................................................... 25
Library groups .................................................................. 9

63
Index

Library Manager
Multiple opening ......................................................... 14
Overview ....................................................................... 5
Start window ................................................................ 8
Library manager
Creating documentation ............................................. 43
Printing a report .......................................................... 42
Protective functions ................................................... 36
Library module
Hiding ......................................................................... 31
Object code ................................................................ 15
Library module window .................................................... 9
Library modules
Deactivating ................................................................ 32
Deleting ...................................................................... 29
Displaying code size ................................................... 33
Function ...................................................................... 16
Function block ............................................................ 16
Hiding (example) ......................................................... 54
Identifying by function with prefix .............................. 60
Information on ............................................................ 33
Initial test .................................................................... 35
Selecting ..................................................................... 27
Setting attributes ........................................................ 30
Updating ..................................................................... 34
Library name
Logical .............................................................. 8, 20, 58
Physical ...................................................................... 21
Library property ............................................................. 37
Library structure
Importing .................................................................... 26
Saving ......................................................................... 21
Window ........................................................................ 9
Licence ........................................................................... 41

M
Manuals .......................................................................... 13
Menu bar ........................................................................ 10
07/01 AWB-C2700-1366GB

N
Naming conventions ...................................................... 58
Library names ............................................................. 58

64
Index

O
Object files ....................................................................... 8
Operands, see variables

P
Password ....................................................................... 39
Password protection, see Protective function
Plausibility check of libraries .......................................... 36
Printing library data ........................................................ 42
Product code ................................................................. 45
Program POU ................................................................. 15
Project Module window ................................................... 8
Properties
Dialog window ............................................................ 40
Protective function
Overview ..................................................................... 36
Prototype of a module ................................................... 33

R
Readme .......................................................................... 13

S
S40 project ..................................................................... 14
Display path ................................................................ 11
Selecting ..................................................................... 19
Saving
Library ........................................................................ 21
Library structure ......................................................... 21
Shortcut keys ................................................................. 12
Sorting library modules .................................................... 9
Status bar ....................................................................... 11
Structuring, library ......................................................... 23
Symbol bar
Displaying ................................................................... 10

T
Test of references .......................................................... 36
Toolbar
07/01 AWB-C2700-1366GB

Buttons ....................................................................... 17
Type of PLC ................................................................... 41

65
Index

V
Variables, data types of ................................................. 61
Version ........................................................................... 41
07/01 AWB-C2700-1366GB

66

You might also like