POWER-KI
®
©
a programming language
XPLAB research in automation
Preludio
POWER-KI Ⓡ - a programming language. Preludio Author: C.A.Perani Copyright Ⓒ 2012 by XPLAB s.a.s - Brescia - Italy All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of the publisher. Information in this document is subject to change without notice and does not represent a commitment on the part of XPLAB s.a.s.. The software described in this document is an original creation of the Author; it is furnished under a license agreement or nondisclosure agreement. The software may be used or copied only in accordance with the terms of the agreement. No licenses, express or implied, are granted with respect to any of the technology described in this document. XPLAB retains all intellectual property rights associated with the technologies described in this document. POWER-KI Ⓡ is a registered trademark of XPLAB s.a.s. ISBN 978-88-907392-0-0
Even though XPLAB has reviewed this document, XPLAB MAKES NO WARRANTY OR REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS DOCUMENT, ITS QUALITY, ACCURACY, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. AS A RESULT, THIS DOCUMENT IS PROVIDED “AS IS,” AND YOU, THE READER, ARE ASSUMING THE ENTIRE RISK AS TO ITS QUALITY AND ACCURACY. IN NO EVENT WILL XPLAB BE LIABLE FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES RESULTING FROM ANY DEFECT OR INACCURACY IN THIS DOCUMENT, even if advised of the possibility of such damages. THE WARRANTY AND REMEDIES SET FORTH ABOVE ARE EXCLUSIVE AND IN LIEU OF ALL OTHERS, ORAL OR WRITTEN, EXPRESS OR IMPLIED. No XPLAB dealer, agent, or employee is authorized to make any modification, extension, or addition to this warranty. Some states do not allow the exclusion or limitation of implied warranties or liability for incidental or consequential damages, so the above limitation or exclusion may not apply to you. This warranty gives you specific legal rights, and you may also have other rights which vary from state to state.
preludio
a
X
Symbols are substitutes of entities, real or abstract. Thought is the processing of symbols. A language consists of symbols, structures, and rules. Programming languages differ from natural languages in that they involve explicitly the concept of flow. They must not only describe a model, but also set the flow of the elaboration. They must tell the computer how to think. Programming is considered by many to be a work of technicians that, in strict compliance with rules, generate applications that often make us feel a little stupid. Instead it requires high creativity, especially to develop Intelligent Applications. The developer is however conditioned by the language used, which often implement simple paradigms: lists, objects, structures, and thus force him to comply with this view. Reality is multifaceted and can only be properly described with a language that is equally versatile. POWER-KI arises from a very long work, with the purpose to provide such a language, to allow the programmer not to deform his/her thought patterns to fit a tool, but freed from many constraints, can explore new ways of thinking, to develop, in less time, powerful applications. We are just at the prelude, many things have yet to emerge. From our experience of these last two years of development of important POWER-KI projects, we are confident that those who will approach this language, will find a new world: powerful, comfortable, relaxing, more fun. Enjoy. Cesare A. Perani
The intended audience of this book, is that of software architects, engineers, programmers. It is not intended as a tutorial for beginners. It should preferably be read from beginning to end. Without the anxiety of having to understand everything at once. The concepts included in gray blocks can be read in no particular order. The color becomes darker when a sequential read is instead preferable. We hope that this book will become your mentor, in the early stage of your use of POWER-KI.
Introduction Components and Software WorkBench Executor GUI Graphic User Interface The many ways to say “Hello World” The Language
introduction
POWER-KI is an innovative language, thanks to the sum of the many original ideas and features that characterize it.
These concepts, the basis for the use of POWER-KI as a platform for Intelligent Applications development, are inspired by the functionality of the human brain.
The Language A POWER-KI Assembly is a data structure, in the form of a forest of items, each one of them capable to contain other items, growing in this way like a tree. The execution engine, depending on the Item type, will run it as an instruction or will treat it as a data container. To each item can be associated attributes containing untyped data.
WorkBench Unlike traditional programming languages it is not possible to write applications without using the PWK's development environment: the WorkBench. A great effort has been done to make it comfortable, productive and complete with everything required by the programmer to manage any aspect of the production cycle.
From editing, code and user interfaces, testing, debugging, documentation to distribution steps. The professional version is also provided for the management of user licenses. WorkBench supports and assists the programmer with a number of active instruments such active parser, assistant editor and assistant function, which can dramatically reduce the amount of typed code and the greater part of common grammatical or syntactical errors. The code entry can be made almost entirely from the keyboard with a minimal use of the mouse. Test mode can be activated for individual components of the code, allowing for immediate work verification. Debug Tool, multithreading oriented, provides, easily, immediate feedback useful for troubleshooting.
POWER-KI Applications , in the form of packages, are easily manageable in distribution and installation. All these elements together ensure high productivity with minimum levels of stress, both mentally and physically.
GUI The decoupling between the execution engine and the User Interface allows to easily create native CLOUD applications, providing a viable alternative to web applications, often limited, difficult to maintain and manage, as constituted by a set of technologies not entirely homogeneous. (howerer HTTP LIB provides powerful functions for web app).
AGILE Developers using the AGILE methodology, w i l l fi n d i n P O W E R - K I a p e r f e c t development tool.
Components and Software
© PTW
PDC
Ⓒ 2012 XPLAB - Research in Automation - Page 11
.PKA
Files extensions identify POWER-KI components. Executable code
Assembly
.PKI
Graphic User Interface Code
Interface
.PWK Package
.BSK Basket Š
Executable Package: executable code + graphic user interface + resources
WorkBench Reusable code
.PTW
Tool & Wiz definition file
Tool & Wiz
.PDC Debug conf
Debug configuration
Wo r k B e n c h i s t h e I n t e g r a t e d PWK-WBK-01 Developing Environment for POWER-KI applications. It contains all the functions for WorkBench editing both Assembly and GUI, Package manager, Wiz&Tool, test and debug, generation of documentation. WorkBench is highly ergonomical.
The Executor is the run time engine of POWER-KI applications. PWK-EXC-00 It is started automatically by clicking on a PKA or PWK component or Executor with a direct command line invocation. In the last case the User must provide the name of the executable as parameter and the additional required parameters.
The GUI Graphics User Interface PWK-GUI-X01 provides its services both to Executor and to the WorkBench. Due to loose coupling, the GUI can Graphic User Interface be located on a different hardware with respect with the invoker. Started directly, with the right parameters, it can act as a client interface for applications like PWK Enterprise Server. â’¸ 2012 XPLAB - Research in Automation - Page 13
WorkBench
WorkBench
Package
manager
GUI Editor
Assembly Editor
Tools & Wiz
Test & Debug
Doc Creator
PTW
©
Ⓒ 2012 XPLAB - Research in Automation - Page 15
License type and purpose
ACCEPT Button
License ID
Developer ID
Starting WorkBench, the window of the license , clearly indicating its type and purpose, appears. Below is shown the license and User ID, needed for upgrades. Clicking the ACCEPT button, you accept our EULA (End User License Agreement) so you can start using WorkBench. Clicking the DECLINE button you exit from WorkBench.
MAIN Menu
Alive
Minimize
Show License
Rearranges windows
Close
Close windows
WorkBench Main menu usually appears on the top left of the screen.
â’¸ 2012 XPLAB - Research in Automation - Page 17
Package Manager
package name Add new Section
Main Assembly System Sections
User added Section
Package Directory
Attrubutes/ Values
Commercial Options
Double Click to open directory window
Package is an executable product of WorkBench, containing all that is needed by the application.
Package manager has three parts: directory, attribute/values and, for commercial licenses, commercial options.
The default Directory contains three system sections: - ASSEMBLY (.pka), - UserInterface (.pki) - Resources used within .pki. The User can add new sections for application use.
Double clicking on a directory item, open it with the default manager: Editor for Assemblies, GUI Editor for user interface, specific application, if available, for resources and others.
To each file is associated a symbolic name and that name is used inside Assemblies.
The MAIN item of the directory, defines the Assembly to start at application launch.
SAVE button and AutoSave option store the package in the default work directory at “C:\PWK-PRG” and , if defined, in the StorageDirectory.
SAVE VERSION button stores in the StorageDirectory a copy of the package with the file name extended with date and time.
DEPLOY button, if DeployDirectory is defined, publishes the package.
EXPORT PSC saves in the default directory the POWER-KI SECURE CERTIFICATE (PSC). Ⓒ 2012 XPLAB - Research in Automation - Page 19
GUI Editor
Selected Item
Usable Items
Item path
Item Name
Click To GoTo Package Mng
Item type double click to change
Default Tree Level expansion
Attribute/value doubleClick to edit window
Page Tree Drag & Drop sub items Wizard
Basket for Item re-use
Lock autoselection of item after insertion
A root item of type FORM, is inserted by default in page tree.
To p o p u l a t e t h e F O R M , DragAndDrop usable or basket item on the insert area or, if the FORM is not empty, on the tree.
FORM Tree
Inside Assembly, an Item Attribute can be referred with the syntax:
FORM ELM1
ELM11 ELM12
Usable items
Resource
ELM21 ELM22
path: \FORM\ELM2\ELM22
attribute@ItemPath
Data Item Container
ELM2
The Item that you add to another will appear in the s e l e c t i o n . To a v o i d t h i s behavior, use LOCK botton.
Double Click on an attribute value to open the window to edit it.
Property Component
Wizard are programs that automate the making of parts or elements of the GUI. Wiz product is poured in the basket.
â’¸ 2012 XPLAB - Research in Automation - Page 21
LIVE
Mouse position
Event
key Code
Signal
Mouse item LIVE panel Active item
Selected item
GUI OnLive
Press the LIVE button to show the GUI and the live panel.
In LIVE you can’t add or delete Item.
Attribute
Value
GUI
Live Action
+ Action
CLICK LEFT
Changes of attribute values are reflected in realTime on the GUI. Changes made on the GUI are reflected in the attribute value.
Effects Select the Item
CLICK LEFT
MOUSE MOVE
Select and Move the item
CLICK RIGHT
MOUSE MOVE
Select and change Item size
CLICK LEFT
UP ARROW
Select the parent Item
CLICK RIGHT
UP ARROW
Select the parent Item
CLICK RIGHT
Edit Text (if Item with Text)
If SNAP is enabled, changes in size or position of the items, made on the GUI are rounded with snap XY values.
Ⓒ 2012 XPLAB - Research in Automation - Page 23
ASSEMBLY Editor
Update for changes of GUI or LIB
Click To GoTo Package Mng
Usable Items
ASSEMBLY Tree
Basket for item re-use
Wizard
To populate the Assembly Tree, DragAndDrop usable or basket item on the tree or on the insert area, in this case the Item will be added to the end of the tree.
REFRESH EXTERNAL button update GUI or LIB reference inside the Assembly for changes occurred after its opening.
Mouse Action
+ Action
Wizard are programs that automate the making of parts or elements of the Assembly. Wiz product is poured in the basket.
Condition
Effects
Click to Expand CLICK LEFT
when not selected
CLICK LEFT
when selected
Open Item Editor
when selected (wait till a new label appears)
item Move
CLICK LEFT
HOLD and MOVE
CLICK RIGHT
Select the Item
Open Option Put a copy in the Basket Open Item Editor Test (EXO only)
Index
Delete Item Item Type
CLICK RIGHT Item Options â’¸ 2012 XPLAB - Research in Automation - Page 25
Item Editor
Item Identification and comment
Click To GoTo Assembly
Attribute / Value
Usable Item
Code editor
Item Tree
To populate the Item tree, DragAndDrop usable or basket item on the tree or on the insert area to add to the tree end.
KEYBOARD ITEM INSERTION Select a row in the tree, keep ALT pressed and digit a few letters of the Item that you want to insert, in the same order as they appear in the item name. When only ONE usable element name is visible, press ENTER and it will be added to the tree.
â’¸ 2012 XPLAB - Research in Automation - Page 27
ITEM NAME
Only Item with PUBLIC clause are visible from external Assembly.
ITEM TYPE
PUBLIC PRIVATE clause
Comment can be inserted directly or, doubleClicking, from an edit page.
Name: PREFIX
Name: LABEL
Item Name can be in the form: PREFIX:LABEL
Comment
DoubleClick to Insert a new Row or to delete an empty one
Value and Comment: DoubleClick to edit in a separate window
for MATRIX type, Label contains the dimensions
TYPE column appears only for Item of type: EXO, EXO_SYNC, MTHD The choice is between: SET, GET, SET+GET, DAT , “ ”(as SET+GET)
Include Lib and Gui in the search
ITEM NAME
LOCAL / GLOBAL
Symbol Search Window is displayed when:
You add items of the type: TRUE, FALSE, ONERR, GOTO, SWITCH, CALL, EXEC, EXEC_SYNC, THREAD You double click on Item Name and the type is: TRUE, FALSE, ONERR, GOTO, SWITCH, CALL, EXEC, EXEC_SYNC, THREAD
You press INDIR button (types: EXEC, EXEC_SYNC, THREAD)
Ⓒ 2012 XPLAB - Research in Automation - Page 29
CODE Editing
Mouse Action
+ Action
Condition
Effects
CLICK LEFT
when not selected
CLICK LEFT
when selected
Open Item Editor
when selected (wait till a new label appears)
Item Move
CLICK LEFT CLICK RIGHT
HOLD and MOVE
Select the Item
Open Option
Automatic Syntax Highlight
CODE in editing
comment Function
Constant ÂŁitteral Constant
comment Unrecognized
â’¸ 2012 XPLAB - Research in Automation - Page 31
ALT+ UP/DOWN Arrow matching symbols list
Function Help
Library
Library functions
Board
Effects Navigate inside matching symbol List
RIGHT arrow
Add to the editing symbol one char from the current matching symbol
LEFT arrow
Remove from the editing symbol the last added char
SPACE
Add to the editing symbol all letters up to the first PATH delimiter
ENTER
Select current symbol in list
B
Break the code in two
C
Copy the selection in EA board
V
Paste from EA Board
F
Open the Function Editor Assistant
G
Show GLOBAL symbol
L
Show LOCAL symbol
DoubleClick Function Parameters to edit window
â’¸ 2012 XPLAB - Research in Automation - Page 33
TEST Debug Enabled
Exec/Stop
DoubleClick Function Attributes to edit window Program Consolle output
Select TEST from EXO option or press TEST button and DragAndDrop the EXO in test textbox.
ERROR : doubleClick on the $index$
Chat provides an iteractive way of data exchange with the executing program.
LOAD button reloads EXO attributes/values from code.
In TEST mode: the program tree will be expanded to show the code. In EDIT mode: the Item editor will be opened
STOP button END program execution
â’¸ 2012 XPLAB - Research in Automation - Page 35
DEBUG Control Panel
Program trace
Break Point
Threads
Console Messages
Errors
POWER-KI DEBUG is a powerful tool designed to provide the Programmer with an instrument to help in the debugging of a complex multi-thread environment.
Enable/Disable Step mode
Thread in STEP
In STEP mode program is executed line by line. In DELAY mode each line is executed with the ms delay specified GO button: execution of the next line
Delay Execution
ms
Line Index
SKIP button : inner ITEM code lines are executed continuosly.
â’¸ 2012 XPLAB - Research in Automation - Page 37
Thread ID
Line in execution
TRACE: enable trace mode, (only one thread at a time). The line in execution is traced on the program tree. STEP: enable step mode, (only one thread at a time). BREAK: enable break.
BREAK POINTS can be set manually or with CTRL CLICK on the program tree.
ALWAYS : any thread that reaches the index is stopped, even if it does not have break checked.
GS (GO STEP): automatically enable STEP mode for the breaked thread.
GO: program execution resume.
DoubleClick on a tree line to open the CODE or the Item INSPECTOR, from which one can see the values of the attributes of all item instances.
â’¸ 2012 XPLAB - Research in Automation - Page 39
DOCUMENTATION
POWER-KI DOCUMENTATION generate a complete printable document of the developed application. DOC windows provides also an alternative way to navigate inside the application. In fact its interactive nature allows not only the standard operation, like search, but also , with a doubleclick or pressing ENTER on a line, to open the relative ITEM editor. Use the REFRESH button to update after code changes.
â’¸ 2012 XPLAB - Research in Automation - Page 41
Tools & Wiz
Tools & Wiz are POWER-KI applications that extend or automate the functions of WorkBench.
USER TW are searched in : C:\PWK-PRG\TW
Show PTW builder
Scan for new
WIZ products are purged in the basket.
If you choose one “Tool Ask For” option, when the tool will be started you will be asked to select a file of that type.
Path of ASSEMBY or Package
Ⓒ 2012 XPLAB - Research in Automation - Page 43
strange things
Adding a SWITCH type item causes the opening of its editor, with the _DEFAULT_ case already inserted. Any addition of CASEs.
new attributes determines the automatic insertion of new
A Commercial License gives you the opportunity to protect your work and to distribute it safely.
If the Package or ASSEMBLY is protected by a PASSWORD (function obtainable only with a Commercial License), you will be prompted to its insertion when you will try to open it.
Check PassWord and insert it to enable password protection. Checking License File and giving the file name, enables your application to be executed only if the User has a license file. If Unique is checked for each installation a specific license must be used. If Demo is checked the program can be enabled to work in demo mode. Licenses are built with PWK-LIC-MNG-xx.pwk provided as tool to Commercial Licensees.
â’¸ 2012 XPLAB - Research in Automation - Page 45
Executor
User/Program
PWK-EXC-00
OS
â’¸ 2012 XPLAB - Research in Automation - Page 47
POWER-KI EXECUTOR can be directly invoked from the command line, or indirectly by clicking the .PWK or .PKA applications through the service provided by operative System. In direct invocation the name of the application to start should be inserted in the command line.
Package
MAIN If .PWK EXECUTOR search the main .PKA GUIs declared in .PKA with _AUTOLOAD_= ON are loaded.
LIB
\pwk\Executor
LIBraries declared in .PKA are loaded.
EXO GUI
The EXO declared in EXO@\pwk\Executor is started.
EXECUTOR behavior is mainly controlled by the values of the attributes of the \pwk\Executor VAR
Message Box
StartUp Logo is displayed if enabled STARTLOGO@\pwk\Executor or if an error is detected.
StarUp Errors Code
Description
Meaning
0
General Error
1
Empty parameter list
EXECUTOR has been invoked without parameters
2
Error loading: wrong program
The program (first command line parameter) is not a valid POWER-KI Assembly
3
EXECUTOR ITEM not found
\pwk\Executor was not found in the Assembly
4
EXECUTOR EXO not defined
EXO@\pwk\Executor is not defined
5
EXO main not found
The EXO specified in EXO@\pwk\Executor does not exists in the Assembly
6
Already executing
Another instance is executing and LIMIT_ONCE@\pwk\Executor is set
7
LIC file not found or invalid
The application needs a license
XXX
LIC for XXX code required
The application needs a Unique license for XXX code
â’¸ 2012 XPLAB - Research in Automation - Page 49
POWER-KI RunTime Console is displayed if : CONS@\pwk\Executor = YES CONS@\pwk\Executor = PROG programmatically when the function CONS(ÂŁSHOW) is executed Chat Output
Chat Input
Message Console
With : KEEPOPEN@\pwk\Executor = YES after the end of the execution the Console remains visible.
Error Console
End The program
With: CONS_OS@\pwk\Executor = YES Operative System console is shown.
For POWER-KI command line application, you can control parent console behavior setting CONS_OS_PARENT@\pwk\Executor
CONS_OS_PARENT@\pwk\Executor CONTINUE
Parent continues execution
SUSPEND
Parent execution is suspended
TERMINATE
Parent execution is terminated
â’¸ 2012 XPLAB - Research in Automation - Page 51
GUI Graphic User Interface
â’¸ 2012 XPLAB - Research in Automation - Page 53
GUI Graphic User Interface provides its services both to WorkBench and to Executor, but can also be used as a client to connect to POWER-KI cloud applications.
GUI Command Line PWK-GUI-X01.EXE
Open on Port
Remote Address
Remote Port
Type
GUI Command Line Parameters #
Description
Meaning
0
GUI Executable
PWK-GUI-X01.EXE
1
Open on Port
The port number on which the gui will be opened. 0 = use default port
2
Remote Address
3
Remote Port
Peer connection parameter. Address can be a dotted IP or URL. If % an intranet broadcast search or PWK-EnterpriseServer is dispatched
4
Connection Type
Choose ACT, for intranet connection, PSV for internet (PWK-ES)
5
...
...
Using % as remote address, activates broadcast search of PWK-ES. If more than one are discovered, a Server List is proposed to make the choice.
2012 XPLAB PWK-ES-01 1332007611 : READ, WRITE, EXECUTE
In remote mode, peer request to READ, WRITE, EXECUTE are signaled to the User. This way he/she has the option to block any unwanted or malicious action. To allow remote peer operations in a trusted way, a POWER-KI Secure Certificate (PSC) of the requesting application could be installed on the GUI computer in PWK-PRG directory.
To restore the standard GUI behavior the User has only to delete the PSC. To limit peer allowed actions, simply remove from PSC the unwanted one.
â’¸ 2012 XPLAB - Research in Automation - Page 55
O L L E H D L R O W the many ways to say “Hello World”
â’¸ 2012 XPLAB - Research in Automation - Page 57
1
On OS console
2
On PWK chat
1 2 3
1
3
On PWK console
2
3
â’¸ 2012 XPLAB - Research in Automation - Page 59
4
On a window
5
On a web page
4
4
5
4
4 5
â’¸ 2012 XPLAB - Research in Automation - Page 61
POWER-KI® ©
The Language
â’¸ 2012 XPLAB - Research in Automation - Page 63
ITEM
A POWER-KI Assembly can be thought of as s forest of trees.
ITEM ITEM
Each tree is an Item which in turn contains other Items.
ITEM ITEM
ITEM ITEM ITEM ITEM
ITEM ITEM
ITEM
POWER-KI eXecutable ITEMs (XI):
EXO
EXO sync
MTHD
Item Category data
MTHD
executable MTHD
execution container unconditional flow conditional flow
EXO EXO sync
comment support
MTHD
allowed entries
code â’¸ 2012 XPLAB - Research in Automation - Page 65
Names of ITEMs beginning and ending with “_” (underscore) are reserved
Each ITEM can have attributes to contain :
SYMBOL
A SYMBOL can be: Numerical value Not Numerical Value
ITEMs inside assemblies are indicated by PATH which can be ABSOLUTE or RELATIVE to the item in which they are considered.
NV NNV
ABSOLUTE
\item\item\item
RELATIVE
item\item\item
A V1
1
E V3
V1=1; !! IMPLICIT; V2@C=2; !! RELATIVE; V3@\E=3;!! ABSOLUTE;
B
@
C 3 V2
2
V1=1; !! IMPLICIT; V4=4; V3@\E=3;!! ABSOLUTE;
D V4
In Assemblies attributes can be referenced as:
ABSOLUTE
att@\item\item\item
RELATIVE
att@item\item\item
IMPLICIT
att
4
RELATIVE and IMPLICIT references are resolved with respect to the XI under which the containing Item falls.
If the XI is a MTHD, the resolution process is extended to the parent ITEM (types: EXO, VAR, GUI, MTX).
â’¸ 2012 XPLAB - Research in Automation - Page 67
A V1
B
X
V1
1
D V2
2 B
D V2
X
A B S O L U T E a n d R E L AT I V E references are solved TOP/DOWN with the first found item.
V1
V1@B=1; V2@\D=2; V1=3;
C X
V1
3
IMPLICIT references are solved BOTTOM/UP with the first found item.
Curly braces indicate an indirect reference, the level of indirection is equal to the number of couples of braces.
A V1
1
B
{V2@C}=2;
Indirection can be set for only the path or, if indicating an attribute, for all. C
att@{xxx}
V2 V1
{xxx}
RunTime Reference can be created and then used whith REF function.
A A
V3
P
\E
B
REF(A++’@’++P)=3
E V3
3
V3@\E
Ⓒ 2012 XPLAB - Research in Automation - Page 69
ITEM TYPES
VAR
DATA can be stored in VAR Item.
When an Assembly is created an ITEM of type VAR named pwk is inserted by default. It contains two VAR: Editor - controlling editor behavior, Executor - with execution setting.
MATRIX
MTX are expanded by Executor and addressable by index.
In the example info Item has three dimensions, the size of the first is two, of the second is four, of the third is five.
v1@\info:[1,a,2]= 10;
Square Brackets operator transforms the expression item:[1,2,3] in item_1_2_3 . Any inside expression is solved before transformation.
At runTime Executor expands the MTX in copies of the declared Item.
â’¸ 2012 XPLAB - Research in Automation - Page 71
GUI
Maps the Graphics User Interface in the assembly
When a GUI Item is added to the assembly tree, the Editor prompts you to choose the .PKI from the package or from the default PWK-PRG directory.
GUI Item is pre-filled with attributes to control GUI loading, event management, and in which status informations are posted. A trig MTHD item is inserted as skeleton for event management,
If _AUTOLOAD_= ON Executor tries to load the GUI before starting the execution of the program.
If _AUTOLOAD_ Is empty the GUI should be loaded programmatically using GUI_ library functions.
GUI _AUTOLOAD_
trig
_ADDR_ _PORT_ _TRIG_ _PTR_
FORM B
_EVT_ _SIGNAL_ Events Status
C
_PTH_ITEM_ _ITEM_ _PTH_ITEM_ACT_
DATA link
FORM data are mapped and exist on Assembly when (and while) the GUI is loaded. After this, they are connected so any change to FORM data is sent to GUI and viceversa.
â’¸ 2012 XPLAB - Research in Automation - Page 73
EXO
EXO_Sync
EXecutable Object
EXecutable Object Synchronous
EXOs , the workhorse of POWER-KI, are the entry point of Assembly execution.
MTHD
Method
Method is executable code usable within EXOs and DATA item that have the local visibility of the container Item.
XI (eXecutable Item) attributes are tagged with a TYPE that define they use in invocation (see EXEC).
EXEC
Execution invocation
EXEC_Sync
Execution invocation Synchronous
A D1
DAT
D2
DAT
B
B set
V1=D1;
get
D2=V2;
B
V1
SET
V2
GET
V3
DAT
â’¸ 2012 XPLAB - Research in Automation - Page 75
THREAD
Thread invocation. A new execution flow is started.
A D1
DAT
D2
DAT
B set
B V1
B SET
V1=D1;
Synchronization
POWER-KI provides “SYNC” for sinchronization. Within CODE Items User can use SYS_ library functions to manage SEMAPHOREs, DOORs and wait for conditions.
If EXO is invoked for execution, a new copy of the EXO is created. NO ASSUMPTIONS should be made with respect to values of attributes other than those set from the calling. Attributes are NOT ADDRESSABLE outside the EXO.
EXO_sync is statically available so it retains attribute values between calls.
Access to EXO_sync is allowed on one thread at a time basis.
Invoking EXO with EXEC_sync allows only one thread at a time to execute it.
Threads waiting for sync are served on first arrived order.
Ⓒ 2012 XPLAB - Research in Automation - Page 77
CALC
Execute a computation
Item name must be an attribute containing the code. _SET_. Current XI item is assumed for reference.
BREAK
Result is put in the attribute referenced by
Break the execution flow
When the execution reaches this Item and _LEVEL_ attribute is not defined: Inside a WHILE or a SWITCH item, break the item and flow resume to the next item. Inside an XI break it.
if _LEVEL_ is defined, the flow resumes to the next item, which follows the first item, of type _LEVEL_, found going up the path.
END
End execution
When the execution reaches this Item, END.
A
D1
D1
D2+1
D2
1
D3
2
(Calc)
_SET_
while
D3
do break
break LBL
while
do
break _LEVEL_
LBL
END â’¸ 2012 XPLAB - Research in Automation - Page 79
LBL
Label
LBLs provide explicit target point for unconditional flow command. They also give a way to group related parts of the assembly. The content of the LBL is in the program execution flow.
BLOCK
Block
The contents of BLOCKs is NOT in the program execution flow. They can be reached by means of the execution of an unconditional flow command.
GOTO
Unconditional Flow change
Any visible item inside the current XI can be the target of a GOTO jump.
CALL
Unconditional Flow change with Return
The Item BLOCK is the usual target of the CALL. After the CALL, execution resumes with the next item.
block
call
goto
LBL
â’¸ 2012 XPLAB - Research in Automation - Page 81
FALSE = 0 or NULL
ERROR = < 0 or NULL
NNV are FALSE if NULL or EMPTY
NNV used as NV gives always 0
TRUE
Conditional Execution
The name of the TRUE should be the reference of a visible attribute, if its value is TRUE contained are executed.
FALSE
Items
Conditional Execution
The name of the FALSE should be the reference of a visible attribute, if its value is FALSE Items contained are executed.
ONERR
Conditional Execution
The name of the ONERR should be the reference of a visible attribute, if its value is ERROR Items contained are executed.
â&#x2019;¸ 2012 XPLAB - Research in Automation - Page 83
WHILE
Conditional loop
WHILE the value of the attribute _COND_ is TRUE the items belonging to DO are executed.
SWITCH
Conditional branch
The name of the SWITCH should be the reference of a visible attribute. Its value is compared with the values of the SWITCH attributes. For each equality, the contained item that has the same name of the attribute is executed. If no match is found the _DEFAULT_ item is executed instead.
IF
Conditional Execution
IF the value of the attribute _COND_ is TRUE the items contained in THEN are executed, if FALSE the ELSE items are executed instead.
WHILE and IF have equivalents in the SYS_ LIB functions. #WHILE(X); ............;#END; #IF(X); ....; #ELSE; ...#END; For IF there is also a conditional assignement function: a=If( X, true, false);
â&#x2019;¸ 2012 XPLAB - Research in Automation - Page 85
COMMENT
Comment
With this you can document your Assembly.
TEMPLATE
To ease code writing
The TEMPLATE purpose is to give a way to add prebuilt structures of ITEMs. Its use is very simple: 1) add the TEMPLATE to the Assembly tree; 2) add to the TEMPLATE the needed items; 3) When you will add a TEMPLATE to an item, only its content, in the proper order, is inserted.
LIBRARY
External code
LIBRARY provides the way to use external developed Assemblies. Only ITEMs declared with the clause PUBLIC are visible. If protected by PASSWORD there is no way to open it with WorkBench. External LIBRARY ITEMs are mapped under the LIBRARY item.
CODE
The code
Within ITEM CODE, the developer can use LIB functions and operators documented in: PWK-MAN-LIB-CORE PWK-MAN-GUI
â&#x2019;¸ 2012 XPLAB - Research in Automation - Page 87
CODE SAMPLE
Each Statement ends with semicolon. Comments begin with double or triple exclamation points, and end with semicolon.
Functions names, usually begin with the name of the LIB, with the exception of functions belonging to SYS_.
Symbols beginning with £ are literal: £TRUE = “TRUE”
Ⓒ 2012 XPLAB - Research in Automation - Page 89
GUI
Simple GUI
The package contains the .PKI which is mapped in the Assembly in a GUI item called HW with _AUTOLOAD_ = ON. To manage GUI message the TRIG attribute point to the trig MTHD of HW.
72
The £SHOW message tells GUI to show.
74
The text of the label is set to “Hello World!”.
81
The thread will loop until stop is not FALSE.
28
35
The trig is invoked by any GUI message.
When _EVT_ = WIND_CLS stop attribute at main is set to 1, in this way the assembly can exit from the while and thus terminate.
â&#x2019;¸ 2012 XPLAB - Research in Automation - Page 91
HTTP
Create a Web Server
In the example web pages are contained in the package, in the user section dati with name WEB.
77
Build the real path, linking package path with the path of inside web folder.
79
Web server is created on port 80, then the pointer(PTR) web is used to start the service.
SYS
References
+1
â&#x2019;¸ 2012 XPLAB - Research in Automation - Page 93
DB Search inside a Data Base table.
Sql Data Base
28
In the example we assume that the Client table has at least three columns: NAME, SURNAME, AGE
Open the Data Base type SQLite
34
39
Get number of rows
49
For each row, print results.
â&#x2019;¸ 2012 XPLAB - Research in Automation - Page 95
DOC Fill a table in a Open Document.
Open Document Format (ODF)
141
From a template create a new document.
146
Search the table: ”Table1”
151
Fill Table cells.
Ⓒ 2012 XPLAB - Research in Automation - Page 97
KB1
knowledge base
Insert and extract information from a KB1
209
Open the KB
214
Insert and extract data
219
Print query result on the chat
â&#x2019;¸ 2012 XPLAB - Research in Automation - Page 99
I: “Why don’t you read me the last story? “ X: “Because it’s not there” I: “But there must be the 101’s !” X: “No, it’s a zen book. They are one hundred”. ®
(X and I , an age ago)
XPLAB s.a.s. Acknowledgments The thoughtful criticisms and suggestions of coleagues, in particular eng. Luca Trevisson, have helped to improve POWER-KI. For the friendly help in the review of this book we thanks eng. C. Benzon and dr. Maurizio Annibaletto.
research in automation brescia - italy www.xplab.net www.power-ki.com © 2012 - XPLAB all rights reserved POWER-KI®, XPOLYPLUS®
Cover concept: Waves on piano, CAP 2012 pag.6-7 Incisioni rupestri, Val Camonica, BS, Italy pag.10 concept: Blocks, CAP 2012
XPLAB actively support :
BLIND EYES APPLICATIONS
BEA
XPLAB
research in automation
brescia - italy www.xplab.net www.power-ki.com â&#x2019;¸ 2012 - XPLAB