BWO Software
- BWO SERVER
- BWO XPLC
- BWO WINBV
© BWO 06 / 2014 Technical subject to change
STEUERUNGSSYSTEM 900
Configuration the SERVER.EXE 8.2
In our example a CNC is to be connected with a host PC.
On the host PC SERVER.EXE is installed.
The CNC is to be able to access data of the host PC.
1. Adjustments in the CNC
1.1 Define the host PC IP address in the CNC
In the NETCONF of the CNC with the command host the IP address of the host PC is defined.
In our example the IP address host PC of the:172.16.20.40 are and via CNC ETH - Interface-E2 are
reached (see route 1)
Example: /NETCONF.
# lines starting with # in the first column are a comment
#
# define the local network address of CNC
#
local 172.16.20.43
netmask 255.255.0.0
#
# define file server adress (don't forget the route)
host 172.16.20.40
#
# define the control panel(s)
#control_panel 172.16.20.44 255.255.0.0 000000000000
#
route 172.16.20.40 255.255.0.0 0.0.0.0 1
1.2 Adapt the /BP/CNC900C/CNC900X.CFG
In the file cnc900x.cfg the paths are defined, which are offered in the I/O mask under selection
(SELECT E/A directory).
Example: /bp/cnc900c/cnc900x.cfg
DRIPFEED:/ ncdata
NCDATA1:/ ncdata
NCDATA2:// server/ ncdata_1
NCDATA3:// server/ ncdata_2
In our example is this:
NCDATA1 / ncdata
local directory in the panel
NCDATA2 // server/ ncdata_1
directory ncdata_1 in the host PC below the server Mount point of SERVER.EXE
NCDATA3 .. the same
STEUERUNGSSYSTEM 900
2. Adjustments at the host PC
2.1 Provide a link for Server.exe
- right mouse button on the desktop-link
- then on "characteristics" - it opens the following window
- target: program name / server Mount point
- target: C:\Programs\BWO\Server.exe "C:\CNC of programs"
- program name: server.exe
- Server Mount point: "C:\CNC of programs"
2.2 Directory structure of the host PC
© BWO 06 / 2014 Technische Änderungen vorbehalten
Working with XPLC
Contents
4 Installing and using the software
4.1 Installing / Uninstalling
4.2 Menu
4.2.1 File menu
4.2.2 Edit
4.2.3 View
4.2.4 Window
4.2.5 Options
4.2.6 Help
4.3 Open project / Save as
4.3.1 Open project
4.3.2 Save as
4.4 Compare – compare two projects
4.4.1 Open
4.4.2 Compare
4.5 Project tree
4.5.1 General
4.5.2 Context menus
4.6 CPU monitor
4.6.1 Explanation
4.7 Memory map
4.7.1 Status displays
4.7.2 Functions
4.8 Editors
4.8.1 Symbol editor
4.8.2 Structure of symbol editor
4.8.3 Line types
4.8.4 Editing functions
4.8.5 Text editors
4.8.6 Instruction list editor
4.8.7 Logicode editor
4.8.8 Operation
4.8.9 Editing functions in online mode
4.8.10 Ladder diagram editor
4.9 Sequence
4.9.1 General
4.9.2 Editing options
4.9.3 Editing options in online mode
4.10 Extended editing functions
4.10.1 Auto-complete
4.11 Launch and close XPLC with WINBV
4.11.1 Version and path
4.11.2 Load XPLC project file
4.11.3 Edit and save XPLC project file
4.12 Simulator
4.13 Key combinations
XPLC programming language
4.23.12 Read parameter from CNC and write to PLC register LPARC
This function module does not require any internal variables, but does require
16 flags (bytes) for storing the complete parameter content
in a PLC register
(see below)
Inputs: _cname Index to the 1st byte of the
parameter receipt flag block byte
(Addressing: &"symbolic name")
_pkan Selection of channel no. 1 - 8 byte
1: P parameter of channel 1
2: P parameter of channel 2
|
8: P parameter of channel 8
0: q parameter
All-channel system parameter
_pnum Parameter number to be read long
_enable Activate read parameter bit
(may only be H for a PLC program cycle;
as otherwise the PLC <-> CNC interface would be
blocked by a permanent transfer)
Output: (out) Map of "_enable"
(Can be used to reset an
"enable flag")
Structure receipt block: The assigned flag block for reading and storing
a parameter requires 16 flags (bytes)
Receive parameter OK byte
Parameter number long
Parameter value long
Parameter status long
Parameter exponent word
Channel number byte
Call: LPARC(&_cname, _pkan, _pnum, _enable)
Working with XPLC
XPLC_Setup.exe
4.1 Installing XPLC 10.01
- Double-click on the Setup.exe file
- The language selection window opens
- Select language and click on OK
- Installation start screen
- Click on Continue
Working with XPLC
- By default the target folder is C:\Program Files\BWO\XPLC
- But you can change this in the dialog shown below
- Then click on Install and the software is installed
- The installation has been successfully completed
- A BWO folder is created in the start menu
- A link is created on the desktop
- The BWO folder contains the links XPLC and Uninstall
- This means there is also an uninstall routine
Working with XPLC
Uninstalling XPLC
- Program Files / BWO / Uninstall
- Select language, then click OK
- Then click on Uninstall
- All folders and files are removed from the system
- Link on desktop is removed
Working with XPLC
4.2 Menu
4.2.1 File menu
New Create new XPLC project
Open Open existing XPLC project
Close Close XPLC project
Save Save XPLC project
Save as Save XPLC project as
Compare Compare two XPLC projects
Exit Exit editing
Fig 1
4.2.2 Edit
Undo Undo a change previously made
Cut Cut selected blocks
Copy Copy selected blocks
Paste Paste cut or copied blocks
Fig 2
Working with XPLC
4.2.3 View
Toolbar Show / hide toolbar
Status bar Show / hide status bar
Fig 3
4.2.4 Window
Cascade Arranges all open windows in a
staggered pattern on top of one another
Tile Arranges all open windows so they all
appear the same size on the screen
1cnc... Show all open windows; the active
window is marked by a tick
Fig 4
Working with XPLC
4.2.5 Options
Optimizer Turn LogiCode optimisation on/off
IO size 32 Toggle size of input / output blocks between
8 and 32
Font kplan Define font for ladder diagram
(Standard MS Shell Dlg, size 9)
Font text Define font / font size
(Standard MS Shell Dlg, size 9)
Fig 5
4.2.6 Help
Handbook Help file (opens in new window)
Fig 6
Working with XPLC
4.3. Open project
4.3.1 Open XPLC project
File Open or ⇒ Select project and open
Fig 7
4.3.2 Save as
Fig 8
Save the current project using either File – Save as or
Select folder and save
Working with XPLC
4.4 Compare - compare two projects
4.4.1 Open
File open – Select projects
Fig 9
File - Compare
- The two source codes are compared
- The Differences window shows the program modules that are different or do not exist in
one of the projects ("only").
Fig 10
Working with XPLC
4.4.2 Compare
- Double-click on a program module
- The two different networks open
- The cursor jumps to the first point where a difference is found, in this example
sh 2 a2.1.2
Fig 11
Working with XPLC
4.5 Project tree
4.5.1 General
CPU CPU monitor (control element)
Memory map Online status displays
Inputs / outputs
Flags / registers
Symbols Symbol editor
Types Library of combined
types (see 4.5 Type definition)
Documentation Program information
Version, history etc.
Programs Program modules
User User program modules
Bwo BWO standard modules
System BWO standard function modules
run All program modules running in the
current project
tasks Background task
This is the interface between the CNC
and PLC and includes the rapid transfer
of parameters, Fig 12
M functions, messages,
bit information and clock pulse
Start task
This contains calls of the various
standard and user modules and the
program start
Working with XPLC
4.5.2 Context menus
The available options are shown on the right
new
klpan New module in the klpan
programming language
logicode New module in the logicode
programming language
awl New module in the awl
(instruction list) programming
language
graph New module represented as
sequence
text Text module
folder Folder
delete Delete
cut Cut
copy Copy
paste Paste
find Search function (opens in new
window)
If you right-click on Types you will see the context menu
new symbol type
For a detailed explanation, please refer to the ladder diagram description in 3.8.11
Working with XPLC
4.6 CPU monitor
4.6.1 Explanation
Fig 13
The CPU monitor is the hardware control element
IP address IP address of the CPU
Connect Connect to the CPU (go online)
Disconnect Offline mode
Update Update program in the CPU; compiler is started.
Only modules that have been edited and actually changed are updated
All All modules are transferred to the CPU
New All modules in the CPU are deleted
Save Binary program from the RAM is written to the EEPROM
Chk Project is compiled, check function between source code and binary code,
source code is compared with the object code in the control unit
AWL test functions (instruction list)
CTX Context register, module address
PC Program counter, address counter
SF Stack frame for function module parameter transfer
IS Internal status register for AWL (instruction list)
X X index register for AWL (instruction list)
Y Y index register for AWL (instruction list)
TSP Arithmetic stack pointer (number of registers in arithmetic stack)
PSP Program stack pointer (used for UP)
SIZ Number of set word width or byte
TOS First stack element in the arithmetic stack
TOS-1 Second stack element in the arithmetic stack
CPU control
Stop Stop program
Start Start program
Step Single-step operation
Reset Reset program step counter
Working with XPLC
4.7 Memory map
4.7.1 Status display: Inputs, outputs, flags, registers in online mode
Block selection
Fig 14
Symbolic address Value L / H status Comment
Hex address Symbolic name
Symbolic address Input, output, flag, register
Hex address Hexadecimal address of value
Value Content of memory address
Status Low or High / LSB bit status
Symbolic name Symbolic name assigned to address
Comment Description of variables
Working with XPLC
4.7.2 Functions
In the block selection input field you can select an input, output or flag block.
When the cursor is in the block selection input field you can scroll forwards or backwards a block at a
time using page up and page down.
Depending on I/O size 32, an I/O block consists of either 8 or 32 inputs / outputs.
(E1.1.1 – E1.1.8 or E1.1.1 – E1.1.32)
A flag block consists of 16 flags. (M1.1 – M1.16)
In online mode the current memory content is shown in the Value column. This can be overwritten.
4.8 Editors
4.8.1 Symbol editor
The symbol editor is used to assign symbol names to defined symbolic addresses and the associated
comments.
With symbolic addressing the desired memory address,
input or output is represented by an easily comprehensible, low-level combination of letters and
digits. Addresses are shown in accordance with the following definitions:
4.8.2 Structure of symbol list
.def E[st].[sl].[e]
Symbolic address Example
Flag M[g].[n] M1.2
Input E[st].[sl].[e] E1.3.17
Output A[st].[sl].[a] A1.1.9
.def = Definition label
[g] = Group number (1 ... 3840)
[n] = Bit or register number (1 ... 16)
[st] = Station number (1)
[sl] = Slot number (1 ... 32)
[e] = Input number (1 ... 32)
[a] = Output number (1 ... 32)
A symbol name represents a meaningful abbreviation for the use of a flag, input
or output.
Definition labels are used to define the symbolic addresses of the following inputs, outputs and flags.
They are used for assignment to particular modules.
Working with XPLC
Structure of symbol list (continued)
Type Symbolic name Comment Definition label
Fig 15
4.8.3 Line types
Comment line
// or * Comment
Symbol definition line
(optional)
Type definition Tab Symbolic name[20] Comment
Control line
Tab .def Symbolic address
Percentage line
%256 ⇒ Advances by 256 lines (incremental shift)
All addresses highlighted in green are used in the current project.
All symbols are saved when you close.
For type definition, see XPLC programming language in item 4.
Working with XPLC
4.8.4 Editing functions
- Input in accordance with above syntax
- The general key combinations apply (see page...)
- Everything highlighted in green is used in the current project
- If you delete one of the symbols, a security query appears (see Fig 16)
- A highlighted symbol is not overwritten (this only applies in the symbol editor)
- If you change a symbol that is being used, a message appears (see Fig 17)
- undo function (right-click) reverses all changes one at a time
- Replace function in the symbol editor is slightly different from in the other editors
- (in other editors, some selection fields have a grey background / cannot be selected)
Fig 16 Fig 17
4.8.5 Text editors
The text editor is used to create program and function modules in either AWL (instruction list) or
Logicode. These differ from the symbol editor and ladder diagram in a number of functions.
4.8.6 AWL (instruction list) editor
Fig 18
Working with XPLC
4.8.7 Logicode editor
Fig 19
4.8.8 Operation
If you hover the mouse pointer over a symbol, the description defined in the symbol editor
is displayed. (Fig 20)
Fig 20
undo = undo
redo = redo
cut = cut
copy = copy
paste = paste
clear = clear
select all = select all
find = opens the search window (Fig 21)
replace = opens the rename window (Fig 22)
Working with XPLC
4.8.8 Operation (continued)
Example:
Search with Ctrl+L
Fig 21
Replace
Search text = Search text
New text = New text
Whole text = Whole text
Ignore upper / = Ignore upper /
lower case lower case
Whole words = Whole words
Whole project = Whole project
Ask before = Ask before
replace
Fig 22
Whole Project is open in the symbol editor
4.8.9 Editing functions in online mode
In online mode you can use the force function, which allows you to define the value according to the
current project. (This can be reset by the program.)
Fig 23
Access the force function in online mode by right-clicking on the symbol. The presetting is always 0.
You can also change the value on the left, which allows you to operate more than one timer
simultaneously, as shown in the example above.
The force function can be used in the instruction list, Logicode and ladder diagram languages.
Working with XPLC
4.8.9 Editing functions in online mode (continued)
If you hover the mouse pointer over a symbol, detailed information will appear including the symbolic
name, comment, type and current value.
Fig 24
You also have the option of single-step diagnostics. You can use the run until here function (access by
right-clicking in online mode) to run the program step by step to perform a diagnosis.
Fig 25
- You can use the STEP button in the CPU monitor to analyse the network line by line
- In the Register field you can thus refer to the individual values
- The green bar on the left (Fig 25) shows you which line is currently being run
Working with XPLC
4.8.10 Ladder diagram
Fig 26
The ladder diagram editor enables you to create networks graphically and incorporate them into the
project.
To create a new network in the ladder diagram editor, proceed as follows.
- Right-click in the project tree
- ⇒ new ⇒ kplan
- A new network is created with
the name
new_kplan_function_1
- Rename if required
- Double-click and edit
Fig 27
Working with XPLC
4.8.10 Ladder diagram (continued)
Double-click to open an empty editor window
Fig 28
- Right-click and select New line
- A new line is inserted
Fig 29
- On the left you will see the conditions, on the right the output or flag
- You can edit these by right-clicking on the relevant area
Fig 30
- Edit = Edit Function modules
- Invert = Invert 0 / 1
- Parallel = Insert parallel module
- Serial = Insert serial module
- Function = Call function (drop-down menu opens)
- Delete = Delete module
Working with XPLC
4.8.10 Ladder diagram (continued)
The context menu behaves somewhat differently for outputs, flags and registers
Fig 31
- Edit = Edit
- Invert = Invert 0 / 1
- Set = Set (S)
- Reset = Reset (R)
- Assign = Assign
- New = Insert new module
If you want to insert a new line or a comment ⇒ right-click on the left-hand editor window
If the mouse pointer is positioned above the current line, a new line or comment is added above; if you
want to insert below, position the mouse pointer just beneath the line.
Fig 31
- New line = Insert new line
- Conditional = Insert condition function
- Comment = Comment
- Copy = Copy line
- Delete = Delete line
Working with XPLC
4.8.10 Ladder diagram (continued)
To edit a comment ⇒ right-click – Edit - Edit comment – Exit by pressing "Esc" key
Fig 32
In editing mode you also have the same context menu as in the AWL (instruction list) editor, Logicode
etc.
Fig 33
- Every time you edit a module you must complete the process by pressing the Enter / Return
key
- When you exit the network, you will be asked whether you want to apply the changes
Fig 34
Working with XPLC
4.9 Sequence
4.9.1 General
The sequence editor enables you to create sequences graphically and incorporate them into the
program. Each sequence has a sequence name. A sequence consists of a
series of steps and transitions. Steps are sections of programs, and transitions are the conditions
between one program section and the next.
Each step includes at least one transition, and each transition is followed by just one step.
So when the program moves from one step to the next, it only goes through one transition. (Fig 35)
In the symbol list the sequence is defined by a symbolic name.
e.g.: g-state SK_state_1
- The status defines which sequence is used
- In Run you can start and stop the current sequence
- Use Reset to reset the sequence
Fig 35
Steps Transitions
Steps and transitions can be placed wherever you like in the editor.
Working with XPLC
4.9.2 Editing options
Right-click to open a context menu
- New state Insert a new step (positionable anywhere)
- New comment Insert a new comment
Fig 36
The step circled in bold is the start of the sequence; in online status this is highlighted in green.
A context menu allows you to define any step as the start.
Each step can trigger several actions.
- S Set Set flags and outputs
- R Reset Reset flags and outputs
- = Assign flags and outputs
- A Action Call a function
- D Display Display additional inputs, flags or outputs
As in the other editors, a comment appears when you hover the mouse over a symbol. (see Fig 20)
Working with XPLC
4.9.2 Editing options (continued)
Fig 37
Right-click – see figure above
- Edit name Give step the name of your choice
- New transition New condition
- Set start state Set as start of sequence
- Edit timeout The step must be executed within this time, otherwise the system will
branch out after the timeout and the actions in this step will be
triggered
- Edit delay The delay time is the amount of time the transition must be pending
before the step is triggered
- Cut Cut / Delete
4.9.3 Editing options in online status
- In online mode the active step / transition is highlighted in green
- The FORCE function is available as with the other editors discussed previously
- RUN is shown in green
- On the left are actions that are triggered (can be defined for each step)
Working with XPLC
4.10 Extended editing functions
4.10.1 Auto-complete
Auto-complete enables you to see which symbols in the project have been agreed on.
This function applies to all editing functions.
As soon as you enter a letter, a submenu opens showing all the agreed symbol names starting with
this letter. The more letters you enter, the smaller the list becomes.
Example
Explanation using the example of the memory map
Fig 38
If you enter the letter M, a drop-down menu automatically appears showing all symbols defined
starting with M. The more letters you specify, the smaller the list becomes.
ME ⇒ Only those symbols with ME in the symbol name appear
If you enter a symbol name in full, it will no longer appear in the drop-down list, only the symbols below
it.
Example
There are messages ME10 to ME19, but only ME11 – ME19 appear in the drop-down list because
ME10 is already in the block selection field
Press the "Esc" key to exit auto-complete
The order in which symbol names appear in the list depends on the order in which they were created;
they are not sorted alphabetically.
Working with XPLC
4.11 Launch and close PLC with WINBV
4.11.1 Version and path
Requirement: WINBV software version 5.5 or higher and path for XPLC specified in the file
WINBV.INI.
cnc_address = 172.16.50.17
iservice = 217.6.206.178
grafik_editor = c:\program files\gimp\bin\gimp.exe
xplc_editor = c:\program files\bwo\ xplc\xplc.exe ∗
identification = bwo.winbv
German
plc_path = c:\plc900
xplconlinedata = c:\program files\bwo\data\xplc\online/ ∗
∗ Path for XPLC software
∗ Path to XPLC working directory
4.11.2 Load XPLC project file
Select XPLC project file (source) in the main folder of CNC-CPU (by left-clicking)
Right-click to open the context menu and click on Edit. XPLC is launched and the project is opened.
For this to work the correct path details must be in WINBV.INI!!
Fig 39
The XPLC project file (source) is loaded from the CNC-CPU memory to the PC's XPLC working
directory.
Working with XPLC
4.11.3 Edit and save XPLC project file
Fig 40
XPLC project open
You can now edit the project as normal as described in previous chapters. When you close XPLC
again, the project is written back to the CNC-CPU memory in the same way.
Ensure that the correct address for the CNC is entered under the IP address.
Fig 41
Save the XPLC project file (source) to the Save the XPLC project file (object code)
PC's working directory to EEPROM using the Save button.
using the diskette symbol or by clicking on
File – Save as – Folder
Working with XPLC
4.12 Simulator
The XPLC 10 features an integrated simulator. This allows you to test various actions and modules.
The simulator is launched via the CPU monitor with the IP address 127.0.0.1
Fig 42
Click on CONNECT to start VPLCSIM. This is added to the taskbar and you can now test online
functions.
Once VPLCSIM has been started, click on ALL and then START. You can now perform online tests
and diagnostics.
With the FORCE function you can set or reset flags, inputs and outputs.
When you exit XPLC the VPLCSIM simulator automatically closes too.
Working with XPLC
4.13 Key combinations
Backspace Delete the character to the left of the cursor
Delete Delete the character to the right of the cursor
Ctrl+A Select all text
Ctrl+B Move the cursor one character left
Ctrl+C Copy the marked text to the clipboard (also Ctrl+Insert in Windows)
Ctrl+D Delete the character to the right of the cursor
Ctrl+E Move the cursor to the end of the line
Ctrl+F Search text
Open the search window
Ctrl+L Continue search text
Continue search with the same word
Ctrl+R Replace text
Replace text (a new window opens)
Ctrl+H Delete the character to the left of the cursor
Ctrl+K Delete to end of line
Delete everything between cursor and end of line
Ctrl+N Move the cursor one line down
Move the cursor one line down
Ctrl+V Paste the clipboard text into line edit (also Shift+Insert)
Paste the clipboard text at the selected point
Ctrl+X Cut the marked text, copy to clipboard (also Shift+Delete)
Cut the marked text
Ctrl+Z Undo the last operation
Ctrl+Y Redo the last operation
Left arrow Move the cursor one character left
Ctrl+left arrow Move the cursor one word left
Right arrow Move the cursor one character right
Ctrl+right arrow Move the cursor one word right
Up arrow Move the cursor one line up
Ctrl+up arrow Move the cursor one word up
Down arrow Move the cursor one line down
Ctrl+down arrow Move the cursor one word down
Page up Move the cursor one page up
Page down Move the cursor one page down
Home Move the cursor to the beginning of the line
Ctrl+Home Move the cursor to the beginning of the text
End Move the cursor to the end of the line
Ctrl+End Move the cursor to the end of the text
Ctrl+I Insert the marked block
Ctrl+U Reset block
Working with XPLC
Contents
4 XPLC programming language
4.14 Range of functions
4.15 Syntax
4.16 Symbols and constants (symbolic names)
4.17 Symbolic names
4.18 Type definition
4.18.1 Simple (predefined) types
4.18.2 Combined types
4.19 Mathematical and logical operators
4.19.1 Mathematical expressions
4.19.2 Comments
4.20 Commands in Logicode
4.21 Editor for programming with instruction list
4.21.1 Introduction
4.21.2 Language elements in instruction list
4.21.3 Registers
4.22 AWL commands (instruction list)
4.22.1 General commands
4.22.2 Commands for Boolean algebra
4.22.3 Commands for memory influence
4.22.4 Commands for register influence
4.22.5 Arithmetic commands
4.22.6 Logical 32-bit commands
4.22.7 Jump commands
4.22.8 Comparative commands
4.22.9 BCD conversion commands
4.22.10 Function module definition commands
4.22.11 Result management function modules
4.23 Standard function modules
4.23.1 Up counter CTU
4.23.2 Down counter CTD
4.23.3 Activation delay TON
4.23.4 Deactivation delay TOFF
4.23.5 Oscillator OSZ
4.23.6 Edge detection TRIG
4.23.7 Flip-flop with priority reset input RS
4.23.8 TOGGLE FLIP-FLOP with a set-reset input TOGGLE
4.23.9 TOGGLE-FLIP-FLOP with toggle input and priority reset input TOGGLE_RS
4.23.10 Read n flags or I/Os and convert using 32-bit operand LEA
4.23.11 Convert / save from one 32-bit data word to n flags or I/Os STEA
4.23.12 Read parameter from CNC and write to PLC register LPARC
4.23.13 Write / send parameter to CNC SPARC
XPLC programming language
4. XPLC programming language
4.14 Range of functions
XPLC is a programming software package for the BWO control system CNC 900 .
The software runs on all WINDOWS (XP / VISTA) and LINUX PCs. The connection is via
the Ethernet port (UDP/IP).
XPLC has the following range of function:
- PLC programming in LogiCode, AWL (instruction list), ladder diagram, graphic sequence
- Symbolic addressing and assignment of symbol names
- Function editor
- Symbol editor
- Standard function modules (in LogiCode, AWL)
- Creation of user-specific functions
- Online test and diagnostic functions
- Programming of the EEPROM memory
4.15 Syntax
The syntax of the programming language is a subset of the C language.
The elements used are:
- Symbols
- Symbolic addresses
- Types
- Mathematical and logical operators
- Separators
- Comments
- Some C commands
4.16 Symbols and constants (symbolic names)
A symbol or symbol name is a series of letters and numbers that is not permitted to contain
separators and must begin with a letter.
Symbols are created with the aid of the symbol editor
For example:
bit i
byte test
alfa
long foo123
bit ABLINK
SIMUL
123foo is not permitted!
XPLC programming language
Numerical constants, on the other hand, always take the following form:
Decimal
12
1024
-5
Hexadecimal
0x22
$22
Fixed point
123.055
123.1
123.22
-256.3
4.17 Symbolic addresses
are fixed addresses for
Inputs: E1.1.1 ⇒ E1.32.32
Outputs: A1.1.1 ⇒ A1.32.32
Flags: M1.1 ⇒ M3840.16
Symbolic addresses can be assigned free symbol names. These are used
like symbolic addresses in the program.
Symbolic addresses Symbolic names
Inputs: E1.1.1 ⇒ ELTEIN Comment
Outputs: A1.1.1 ⇒ ABLINK Comment
Flags: M200.3 ⇒ SIMUL Comment
XPLC programming language
4.18 Type definition
4.18.1 Simple (predefined) types
bit , bool Only use the LSB bit, occupy 1 byte
char 1 byte with algebraic sign (limit values: -128 to +127)
byte 1 byte without algebraic sign (limit values: 0 to 255)
int 2 bytes with algebraic sign (limit values: -32768 to +32767)
short 2 bytes with algebraic sign (limit values: -32768 to +32767)
word 2 bytes without algebraic sign (limit values: 0 to 65535)
long 4 bytes with algebraic sign (limit values: -2147483648 to 2147483647)
fixed 4 bytes (limit values: -2000000 to +2000000) Type for fixed-point arithmetic
Each symbol without a specified type is of type bit or byte.
4.18.2 Combined types
May only consist of simple types and can be produced as required.
To do this, a file is created in the Types folder.
Example:
counter Up / down counter
bit out
bit trig
long value
The counter type consists of the above subtypes and occupies 6 bytes.
XPLC programming language
4.19 Mathematical and logical operators
+ Addition
- Subtraction
* Multiplication ⇒ or content of ... with index operations
/ Division
% Remainder of division
& Bitwise AND ⇒ or address of ... with index operations
| Bitwise OR
^ Bitwise XOR
! Negation
&& Logical AND
|| Logical OR
== equal to
!= not equal to
> greater than
| less than
>= greater than or equal to
<= less than or equal to
++ pre / post increment
-- pre / post decrement
= assignment (note the difference from the "equal to" operator)
Separators:
all operators and the following characters
; Separator for commands
, Separator for function transfer parameters
. Introduction of subtypes
-> Index to
(
)
{
}
[ Brackets for indexed addressing
]
blank space
tabulator
Used to separate variables and commands in a program.
XPLC programming language
4.19.1 Mathematical expressions
Mathematical expressions consist of a series of constants and/or variables
separated by mathematical or logical operators.
Examples:
a+5
a+(5-b)*3
!( (a + b) <= ( 10 – c++ ) )
4.19.2 Comments
// Line comment
/*
Comment block
*/
XPLC programming language
4.20 Commands in LogiCode
A program module in LogiCode consists of one or more compound commands.
Simple commands are terminated with the character ' ; '.
Compound commands are combined into a block using brackets { }.
The brackets may enclose individual or compound commands.
In the following section, the term logoCode command refers to a simple or compound command.
Simple commands include:
Assignments, tests and loops.
Simple assignment:
Variable = Mathematical expression ;
LED1 = 1 ;
The variable LED1 is assigned the value 1.
FOO = ZOO + 5 ;
The variable FOO is assigned the result of the mathematical expression ZOO + 5.
Assignments with conditional setting and resetting of variable:
LED1 #S E1 & E2 ; // conditional set
The variable LED1 is set to the value 1 if the result of E1 & E2 is true;
LED1 #R E1 & E2 ; // conditional reset
The variable LED1 is set to the value 0 if the result of E1 & E2 is true;
LED1 #!S E1 & E2 ; // conditional set
The variable LED1 is set to the value 1 if the result of E1 & E2 is not true;
LED1 #!R E1 & E2 ; // conditional reset
The variable LED1 is set to the value 0 if the result of E1 & E2 is not true;
XPLC programming language
Assignments with mathematical operator:
Written as follows
COUNTER = COUNTER + 5;
Can be abbreviated as follows
COUNTER += 5 ;
In place of the operator += it is also possible to use the following:
-= Assignment with subtraction A -= 2; A=A - 2;
*= Assignment with multiplication A *= 2 ; A=A * 2;
/= Assignment with division A /=2; A=A / 2;
%= Assignment with remainder of division A %=2; A=A % 2;
&= Assignment with bitwise AND A &=3; A=A & 3;
|= Assignment with bitwise OR A |=3; A=A | 3;
^= Assignment with bitwise XOR A ^=3; A=A ^ 3;
Program-controlling commands:
if , if else
if: Conditional execution if fulfilled
if ( mathematical / logical expression )
logiCode command ;
if else: Conditional execution if fulfilled / not fulfilled
if ( mathematical / logical expression )
logiCode command ; // This command is executed if the
// mathematical expression is true
else
logiCode command ; // This command is executed if the
// mathematical expression is false
XPLC programming language
Examples:
if ( a >= 1 ) // b=1 if a >= 1
b=1;
if ( a >= 1 ) // b=1 if a>=1 otherwise b = 0
b=1;
else
b=0;
Program-controlling commands:
switch case default
switch Multiple branching
switch ( mathematical expression )
{
case constant_1 :
logiCode command;
break;
case constant_2 :
logiCode command;
break;
...........................
...........................
...........................
default :
logiCode command;
break;
}
The command sequence that corresponds to the result of the expression
is executed.
The command break ends the code sequence
XPLC programming language
Example:
a=2;
b=1;
c=0;
switch ( a + b )
{
case 1:
c=11;
a=5;
break;
case 2:
c=12;
a=1
break;
case 3:
c=13;
a=0;
break;
default :
c=14;
a=6;
break;
The code sequence for section case 3 is executed.
If the value of the expression does not match any case
the default code section is executed.
XPLC programming language
Program-controlling commands:
while , do while
while: Loop with test at beginning
while ( logical expression )
logiCode command ;
do while: Loop with test at end
do
{
logiCode command ;
} while ( logical expression ) ;
As long as the logical expression accepts the value as true, the program loops will run.
PLEASE NOTE:
IN THE LOOP BODY THE LOGICAL EXPRESSION MUST BE MANIPULATED SUCH
THAT THE LOOP IS ENDED AFTER A FEW CYCLES.
Example:
i=0; // initialise run variable i
while ( i < 10 ) // check run variable i
{
...........
...........
i++; // increment run variable i
}
XPLC programming language
Program-controlling commands:
for
for : Loop with start command, test, and manipulation of run variable at end
for ( start command ; logical expression ; end command )
Example:
for ( i=0 ; i < 10 ; i++ )
{
a[i] = i;
}
This loop is run through 10 times.
The loop described above is equivalent to:
i=0;
while ( i < 10 )
{
a[i] = i;
i++;
}
XPLC programming language
Function modules in LogiCode
To make the program more straightforward it is split up into small function units that describe
simple tasks.
In the explanation that follows these are referred to as function modules.
Examples of function module calls include:
module name () ; // without parameter transfer
module name ( a , b , 5 ); // with parameter transfer
a=module name ( a , c ); // with parameter transfer and return value
The function module is created with the aid of the module editor and is added to the
project tree as an individual file.
This allows the function module to be used by other parts of the program.
Structure of the function module:
The general structure of a module is:
Transfer parameter agreement,
module body with agreement of local variables, the logiCode commands and return value
As a simple example, an addition module add should be defined in which two parameters par1 and
par2 are added together and can then be called:
c= add ( a,b );
To do this, the add file is created in the project tree with the following content:
long par1; // definition of the first transfer parameter as a 32-bit value
long par2; // definition of the second transfer parameter as a 32-bit value
// definition of the function body
{
long res; // definition of the local variables
res = par1 + par2; // The function
return ( res ); // return value
}
XPLC programming language
4.21 Editor for programming with instruction list (AWL)
4.21.1 Introduction
The XPLC programming software enables you to create program modules and function modules in
instruction list language (AWL). The user can use simple bit-oriented commands, complex word- or
double-word-oriented commands, arithmetic and logical commands, and subprogram techniques.
This section explains the basic principles of programming in instruction list language and provides a
list of all AWL commands.
4.21.2 Language elements in instruction list (AWL)
One program line in AWL may contain a variety of language elements in the following order:
[Label] [Index][Code] [Sym] [*Line com]
or
*[Comment]
Explanations:
[Label] = Jump label (optional)
[Index] = Index (optional)
[Code] = Command code
[Sym] = Symbol name
[*Line com] = Comment (optional)
Refer to next page for example
XPLC programming language
Example
4.21.3 Registers
The CNC central units use various internal registers in order to perform arithmetic functions and bit
operations.
Internal status register (IS register), 1 bit
The internal status register is used for interim storage of the result of a logical
link with Boolean commands, e.g. L,U,ON,=,UN. IS is written and read by the central unit only. It can
however be viewed for diagnostic purposes.
Index register X and index register Y (X register and Y register), 16 bit
Index registers X and Y enable indirect addressing of flags, inputs and outputs in System 900. The
actual address is only calculated as the program is running. The content of one or both index registers
is added to the address in operand 2 when the command is executed. Using this method, it is simple
to create program loops or variable subprograms, for example.
XPLC programming language
Example:
START X LAD 64 *Load X register with 64
Y LAD 16 *Load Y register with 16
LOOP X DCR 6 *Decrement X register to 0,
*then jump to +6
Y DCR 5 *Decrement Y register to 0,
*then jump to +5
X LDH M98.1 *Load M98.1+(X register value)
Y LDH M200.1 *Load M200.1+(Y register value)
XY LDL A1.1.1 *Load A1.1.1+(X register value+Y *register value)
JMP LOOP *Jump back
4.21.3 Registers (continued)
Top-of-stack register (TOS register), 32 registers with 32 bits
The TOS register is available for arithmetic operations and bitwise logical and memory-oriented
commands. It consists of 32 registers of 32 bits each, split into two 16-bit subregisters (high-word and
low-word) that can be written separately. Write and read operations are performed with the aid of a
stack pointer (SP).
XPLC programming language
4.22 Instruction list (AWL) commands
All usable instruction list (AWL) commands are listed below.
The following notation is used:
Const = Numerical or time constant (decimal: 534, hexadecimal: $A436, octal: ’346
paddr = Program address (absolute: $F9B2, symbolic: START, relative: *+39)
maddr = Memory address (absolute: $610, symbolic: M98.1)
4.22.1 General commands
NO OPERATION NOP
No-op command. NOP is always to be found in a program line (placeholder).
WORD SIZE SIZE [4.2]
Toggle word size for certain commands between 4 and 2 bytes.
COUNT ADDRESS FORWARD, COUNT ADDRESS BACKWARD FWD, BWD
After the FWD or BWD command, with certain memory commands the address is advanced in
ascending or descending order.
4.22.2 Commands for Boolean algebra
Load IS operand 2 L maddr, LN maddr
Load the content of operand 2 to IS register. Used with negation N and brackets
IS AND operand 2 U maddr, UN maddr
Logical AND link IS register with the content of operand 2. Used with negation
N and brackets. The result of the link is stored in the IS register.
IS OR operand 2 O maddr, ON maddr
Logical OR link IS register with the content of operand 2. Used with negation
N and brackets. The result of the link is stored in the IS register.
LOAD operand 2 IS = maddr, = N maddr
Assign the content of the IS register to operand 2. Used with negation N.
SET operand 2 S maddr, SN maddr
Set the content of operand 2 if the IS register contains a 1. If used with
negation N: set the content of operand 2 if the IS register contains a 0. maddr may
only be a flag or output address.
RESET operand 2 R maddr, RN maddr
Reset the content of operand 2 if the IS register contains a 1. If used with
negation N: reset the content of operand 2 if the IS register contains a 0. maddr
may only be a flag or output address.
XPLC programming language
4.22 Instruction list commands (continued)
4.22.3 Commands for memory influence
LOAD MEMORY HIGH, LOAD MEMORY LOW LDH maddr, LDL maddr
Load a memory byte with 1 or 0. maddr may only be a flag address or output
address.
LOAD operand 2 X, LOAD operand 2 Y LX maddr, LY maddr
Assign the content of the X register or Y register to operand 2.
Cross-reference: Y LAD
LOAD operand 2 XY LXY maddr
Assign the total of the content of the X and Y registers to operand 2.
Cross-reference: LX,LY,X LAD,Y LAD
LOAD [X] IS ISRX
Load the memory byte whose address is stored in the X register with the content of the IS register.
The address in the X register may only be a flag or output address. The value in the X register
is then incremented.
Cross-reference: XISR
FILL MEMORY [X] FILL const n
Load n memory bytes with const, starting with the memory address stored in the X register.
The memory address in the X register may only be a flag or output address.
Cross-reference: EFILL,FWD,BWD,X LAD
FILL MEMORY [TOS] EFILL
Load n memory bytes with a constant stored in the TOS register. The address
of the first memory byte and the number (n) of memory bytes to be filled can be found
in the TOS register:
n = TOS
maddr = TOS-1
const = TOS-2
SP is decremented by three registers. maddr may only be a flag or output address.
Cross-reference: FILL,FWD,BWD,LCS,LCHS
MOVE MEMORY [X,Y] MOVE const
Copy the content of the const memory byte. Source address and target address are stored in the
index registers:
Source address = Y register
Target address = X register.
Target address may only be a flag or output address.
Cross-reference: FWD,BWD
MOVE MEMORY [TOS] EMOVE
Copy the content of n memory bytes. n, source address and target address can be found in the TOS
register:
n = TOS
Target address = TOS-1
Source address = TOS-2
SP is decremented by three registers. Target address may only be a flag or output
address.
Cross-reference: LCS,LCHS,FWD,BWD
XPLC programming language
4.22 Instruction list commands (continued)
4.22.4 Commands for register influence
LOAD X REGISTER, LOAD Y REGISTER X LAD const, Y LAD const
Load the X or Y register with the value const.
Cross-reference: LSX,LSY
LOAD STACK TO X, LOAD STACK TO Y LSX, LSY
Load the X or Y register with the value found in the low byte of the TOS register.
SP is decremented by one register.
Cross-reference: LCS,XLAD,YLAD
EXCHANGE X Y EXY
Exchange the content of the X register and Y register.
Cross-reference: LCS,XLAD,YLAD,LSX,LSY
LOAD INDIRECT IS [X] XISR
Load the IS register with the content of the memory byte whose address is stored in the X
register. The value in the X register is then decremented.
Cross-reference: ISRX,XLAD
LOAD CONSTANT TO STACK LCS const
Load the lower 16 bits of the TOS register (low word) with const. The high word remains unaffected.
SP is incremented by one register.
LOAD CONSTANT TO HIGH STACK LCHS const
Load the higher 16 bits of the TOS register (high word) with const. The low word and SP remain
unaffected.
LOAD X TO STACK, LOAD Y TO STACK LXS,LYS
Load the content of the X register or Y register to the TOS register. The high word remains
unaffected. SP is incremented by one register.
LOAD REGISTER TO STACK LRS maddr
Load the content of maddr to maddr+3 (4 bytes) or maddr and maddr+1 (2 bytes) to
TOS register. Whether 2 or 4 bytes are loaded depends on the setting made using the
SIZE command. SP is incremented by one register.
Cross-reference: SIZE,LSR,BLRS
LOAD STACK TO REGISTER LSR maddr
Load the memory bytes maddr to maddr+3 (4 bytes) or maddr and maddr+1 (2 bytes) with
the content of the TOS register. Whether 2 or 4 bytes are loaded depends on the setting made
using the SIZE command. SP is decremented by one register. maddr may only
be a flag or output address.
Cross-reference: SIZE,LRS,WLSR,BLSR
WORD LOAD REGISTER TO STACK WLRS maddr
Load the content of maddr to maddr+1 (2 bytes) to the TOS register. SP is incremented by one
register.
Cross-reference: SIZE,LSR,WLRS,BLRS
WORD LOAD STACK TO REGISTER WLSR maddr
Load the memory bytes maddr to maddr+1 (2 bytes) with the content of the TOS register. SP is
decremented by one register. maddr may only be a flag or output address.
Cross-reference: SIZE,LRS,BLSR
XPLC programming language
4.22 Instruction list commands (continued)
BYTE LOAD REGISTER TO STACK BLRS maddr
Load the TOS register with the content of maddr (1 byte). SP is incremented by one
register.
Cross-reference: SIZE,BLSR,LRS,LSEA
BYTE LOAD STACK TO REGISTER BLSR maddr
Load the memory byte maddr with the content of the TOS register. SP is decremented by one
register. maddr may only be a flag or output address.
Cross-reference: SIZE,BLRS,LSR,LEAS
LOAD EA TO STACK LEAS
Load the TOS register with n input or output bits. Of the content of the input and output addresses,
only the lowest value bit (bit 0, LSB) is used and stored in bit-oriented fashion in the TOS register. n
and source address can be found in the TOS register:
n = TOS
Address input1/output1 = TOS-1
n<=32. SP is incremented by one register.
Cross-reference: FWD,BWD,LRS,BLRS
LOAD STACK TO EA LSEA
Copy n bits from the TOS register to n output addresses. Each bit in the TOS register is
assigned to one output address. n and target address can be found in the TOS register:
n = TOS
Target address = TOS-1
Bit 1 = TOS-2
n<=32. SP is decremented by one register.
Cross-reference: LCS,LCHS,FWD,BWD,LSR,BLSR
DUPLICATE TOS DUP
Copy from TOS-1 to TOS. SP is incremented by one register.
Cross-reference: POP
SWAP TOS SWAP
Swap TOS-1 and TOS. SP remains unchanged.
DECREMENT SP POP
Separate out TOS. SP is decremented by one register.
Cross-reference: DUP
LOAD EEPROM-CHECKSUM CKS
Load the EEPROM checksums to the TOS register. SP is incremented by one register.
LOAD STACK POINTER LSP
Load from SP to the TOS register. SP is incremented by one register.
XPLC programming language
4.22 Instruction list commands (continued)
4.22.5 Arithmetic commands
INCREMENT MEMORY INC maddr
Increment the 32-bit memory word stored in the memory at addresses maddr to
maddr+3 (4 bytes).
Cross-reference: DEC
DECREMENT MEMORY DEC maddr
Decrement the 32-bit memory word stored in the memory at addresses maddr to
maddr+3 (4 bytes)
Cross-reference: INC
ADD TOS WITH TOS-1 ADD
32-bit addition of the value in the TOS register to the value in TOS-1. The result is stored in the TOS
register, SP is decremented by one register.
Cross-reference: LCS,LCHS
SUBTRACT TOS-1 WITH TOS SUB
32-bit subtraction of the value in the TOS register from the value in TOS-1. The result is stored in the
TOS register, SP is decremented by one register.
Cross-reference: LCS,LCHS
MULTIPLY TOS WITH TOS-1 MUL
32-bit multiplication of the value in the TOS register by the value in TOS-1. The result is stored in the
TOS register, SP is decremented by one register.
Cross-reference: LCS,LCHS
DIVIDE TOS-1 WITH TOS DIV
32-bit division of the value in TOS-1 by the value in the TOS register. The result is stored in the TOS
register, SP is decremented by one register.
Cross-reference: LCS,LCHS,REM
MODULO DIVISION TOS-1 WITH TOS REM
32-bit modulo division of the value in TOS-1 by the value in the TOS register. The result is
stored in the TOS register, SP is decremented by one register.
Cross-reference: LCS,LCHS,DIV
NEGATION TOS NEG
Algebraic sign in front of value in TOS register is reversed. SP remains unchanged.
Cross-reference: LCS,LCHS
ADD CONSTANT TO X, ADD CONSTANT TO Y XIADD const, YIADD const
16-bit addition of the value in the X register or Y register to the const value The result is
stored in the X or Y register.
Cross-reference: XLAD,YLAD,ADD
XPLC programming language
4.22 Instruction list commands (continued)
4.22.6 Logical 32-bit commands
LOGIC AND TOS-1 WITH TOS AND
Bitwise logical AND link of the bit pattern in the TOS register with the bit pattern in TOS-1.
The result is stored in the TOS register, SP is decremented by one register.
Cross-reference: LCS,LCHS
LOGIC OR TOS-1 WITH TOS OR
Bitwise logical OR link of the bit pattern in the TOS register with the bit pattern in TOS-
1. The result is stored in the TOS register, SP is decremented by one register.
Cross-reference: LCS,LCHS
LOGIC NOT TOS NOT
Bitwise logical NOT link of the bit pattern in the TOS register with the bit pattern in TOS-
1. The result is stored in the TOS register, SP is decremented by one register.
Cross-reference: LCS,LCHS
LOGIC EXCLUSIVE OR TOS-1 WITH TOS XOR
Bitwise logical exclusive OR link of the bit pattern in the TOS register with the bit pattern
in TOS-1. The result is stored in the TOS register, SP is decremented by one
register.
Cross-reference: LCS,LCHS
LOGIC SHIFT TOS LEFT SFTL
Bitwise shift to the left of the bit pattern in TOS-1 by that in the TOS register. The result
is stored in the TOS register, SP is decremented by one register.
Cross-reference: LCS,LCHS,SFTAR
LOGIC SHIFT TOS RIGHT SFTR
Bitwise shift to the right of the bit pattern in TOS-1 by that in the TOS register. The result
is stored in the TOS register, SP is decremented by one register.
Cross-reference: LCS,LCHS,SFTAR
LOGIC SHIFT TOS ARITHMETIC RIGHT SFTAR
Bitwise arithmetic shift to the right of the bit pattern in TOS-1 by that in the TOS register.
The TOS register contains a value prefixed by an algebraic sign. The result is stored in the TOS
register, SP is decremented by one register.
Cross-reference: LCS,LCHS,SFTL,SFTR
XPLC programming language
4.22 Instruction list commands (continued)
4.22.7 Jump commands
JUMP IMMEDIATE JMP,SP paddr
Unconditional jump to paddr (absolute, relative or symbolic address).
Cross-reference: JMPT,JMPF,SPB,SH,SL
JUMP IF TOS TRUE JMPT paddr
Conditional jump to paddr (absolute, relative or symbolic address) if the lowest
bit (bit0, LSB) of the TOS register is 1
Cross-reference: JMP,JMPF,SPB,SH,SL
JUMP IF TOS FALSE JMPF paddr
Conditional jump to paddr (absolute, relative or symbolic address) if the lowest
bit (bit0, LSB) of the TOS register is 0
Cross-reference: JMPT,JMP,SPB,SH,SL
SKIP IF MEMORY HIGH SH n maddr
Conditional jump of n commands if the content of the memory byte maddr 1 is (High).
Cross-reference: JMPT,JMPF,JMP,SPB
SKIP IF MEMORY LOW SL n maddr
Conditional jump of n commands if the content of the memory byte maddr 0 is (Low).
Cross-reference: JMPT,JMPF,JMP,SPB
CONDITIONAL JUMP IS SPB paddr, SPBN paddr
Conditional jump to paddr (absolute, relative or symbolic address) if the IS register
contains the value 1 or 0.
Cross-reference: JMPT,JMPF,JMP,SH,SL
DECODER [TOS] DCD paddr
Indirectly calculated jump. The target address results from the content of the TOS register and
paddr (absolute or symbolic address). SP is decremented by one register.
DECREMENT X AND JUMP IF ZERO XDCR n
Conditional jump of n commands. The content of the X register is first decremented. A
test is then run to see whether the X register contains the value zero. If this is the case, n following
commands
are skipped.
DECREMENT Y AND JUMP IF ZERO YDCR n
Conditional jump of n commands. The content of the Y register is first decremented. A test is then run
to see whether the Y register contains the value zero. If this is the case, n following commands are
skipped.
XPLC programming language
4.22 Instruction list commands (continued)
4.22.8 Comparative commands
TEST IF TOS-1 EQUAL TO TOS TEQ
Comparison of the TOS register contents TOS and TOS-1. The result is stored in TOS:
TOS = TOS-1: TOS=1
TOS <> TOS-1: TOS=0
SP is decremented by one register.
TEST IF TOS-1 GREATER THAN TOS TGT
Comparison of the TOS register contents TOS and TOS-1. The result is stored in TOS:
TOS-1 > TOS: TOS=1
TOS-1 <= TOS: TOS=0
SP is decremented by one register.
TEST IF TOS-1 LESS THAN TOS TLT
Comparison of the TOS register contents TOS and TOS-1. The result is stored in TOS:
TOS-1 < TOS: TOS=1
TOS-1 >= TOS: TOS=0
SP is decremented by one register.
4.22.9 BCD conversion commands
CONVERT INTEGER TO BCD TOS IBCD
Converts the content of the TOS register from integer format to BCD format.
SP remains unchanged.
Cross-reference: BCDI
CONVERT BCD TO INTEGER TOS BCDI
Converts the content of the TOS register from BCD format to integer format. SP remains unchanged.
Cross-reference: IBCD
4.22.10 Function module definition commands
STACK FRAME INIT SFIN maddr
Definition of stack pointers for data transfer to function modules
START TRANSFER TABLE .interface n
Start interface transfer parameters to function modules
n = number of local variables
The variables used can only be read/written with the
LRS; LSR;
BLRS; BLSR;
WLRS; WLSR;
commands.
END TRANSFER TABLE .end
End interface transfer parameters to function modules
4.22.11 Result management function modules
WRITE TOS Æ RESULT_REG TOSRES
Write content TOS Æ Result_Register
WRITE RESULT_REG Æ TOS RESTOS
Write content Result_Register Æ TOS
XPLC programming language
4.23 Standard function modules
BWO provides a range of standard function modules.
These can be used in the Logicode or ladder diagram programming
languages.
The function modules are stored in the kfunctions folder system.
Counters
Up counter CTU
Down counter CTD
Timers
Activation delay TON
Deactivation delay TOFF
Oscillator OSZ
Memory elements
Edge detection TRIG
Flip-flop with priority reset input RS
Toggle flip-flop with toggle input TOGGLE
Toggle flip-flop with toggle and priority reset input TOGGLE_RS
Transfer operations
Read n flags or I/Os and convert LEA
to 32-bit operand
Store a 32-bit data word STEA
to n flags or I/Os
NC interpreter
Write parameter (q or P) PLC -> CNC SPARC
Read parameter (q or P) PLC <- CNC LPARC
XPLC programming language
4.23.1 Up counter CTU
This function module uses the combined type "counter"
It requires 6 flags (bytes) and has the following structure:
Type: counter bit out Counter output
bit trig Edge detection
long display Counter actual value
Inputs: * cp Index to the counter's address type
(Addressing: & "symbolic name")
enable Cycle input bit
With an increasing edge the count value is increased by 1,
at 0 the count value remains unchanged
reset Reset input bit
with H the counter is set to 0
max Counter nominal value long
Maximum up count value
Output: (out) H, if counter actual value >= nominal value bit
(Addressing: "symbolic name".out)
Display: display Counter actual value long
(Addressing: "symbolic name".display)
Call: CTU(&counter, enable, reset, max)
Example of ladder diagram :
Example of Logicode:
output_1 = CTU(&Z1, input_1, input_2, 20)
XPLC programming language
4.23.2 Down counter CTD
This function module uses the combined type "counter"
It requires 6 flags (bytes) and has the following structure:
Type: counter bit out Counter output
bit trig Edge detection
long display Counter actual value
Inputs: * cp Index to the counter's address type
(Addressing: & "symbolic name")
enable Cycle input bit
With an increasing edge the count value is decreased by 1,
at 0 the count value remains unchanged
reset Load input bit
with H the nominal value at the "max" input
is adopted as the counter actual value
max Counter nominal value long
Start value for counting down
Output: (out) H, if counter actual value <= 0 bit
(Addressing: "symbolic name".out)
Display: display Counter actual value long
(Addressing: "symbolic name".display)
Call: CTD(&counter, enable, reset, max)
Example of ladder diagram :
Example of Logicode:
output_1 = CTD(&Z2, input_1, input_2, 50)
XPLC programming language
4.23.3 Activation delay TON
This function module uses the combined type "timer"
It requires 12 flags (bytes) and has the following structure:
Type: timer bit out Timer output
bit enabled Timer enabled
byte type Timer type
bit state Timer status
long display Actual time
long max Nominal time
Inputs: * tp Index to the timer's address type
(Addressing: & "symbolic name")
enabled Start of time as activation delay bit
H: Start timer
L : Reset timer
time_base Nominal delay time (in ms) long
Output: (out) Timer status bit
H: "enabled" = H and time elapsed
L: "enabled" = L
(addressing:"symbolic name".out)
Display: display Actual time (in 1/100 s) long
(addressing:"symbolic name".display)
Call: TON(&timer, enabled, time_base)
Example of ladder diagram :
Example of Logicode:
output_2 = TON(&TIMER10, input_1, 5000)
XPLC programming language
4.23.4 Deactivation delay TOFF
This function module uses the combined type "timer"
It requires 12 flags (bytes) and has the following structure:
Type: timer bit out Timer output
bit enabled Timer enabled
byte type Timer type
bit state Timer status
long display Actual time
long max Nominal time
Inputs: * tp Index to the timer's address type
(Addressing: & "symbolic name")
enabled Start of time as deactivation delay bit
H: Reset timer
L : Start timer
time_base Nominal deactivation delay time (in ms) long
Output: (out) Timer status bit
(Addressing: "symbolic name".out)
H: "enabled" = H
H: "enabled" -> L and time in progress
L: "enabled" = L and time elapsed
Display: display Actual time (in 1/100 ms ) long
(Addressing: "symbolic name".display)
Call: TOFF(&timer, enabled, time_base)
Example of ladder diagram :
Example of Logicode:
output_3 = TOFF(&TIMER11, input_2, 5000)
XPLC programming language
4.23.5 Oscillator OSZ
This function module uses the combined type "timer"
It requires 12 flags (bytes) and has the following structure:
Type: timer bit out Timer output
bit enabled Timer enabled
byte type Timer type
bit state Timer status
long display Actual time
long max Nominal time
Inputs: * tp Index to the timer's address type
(Addressing: & "symbolic name")
enabled Oscillator enabled bit
H: Oscillator on
L: Oscillator off
time_base Total period duration (in ms) long
(e.g. :1000: pulse 500 ms / pause 500 ms)
Output: (out) Oscillator status bit
H: during pulse
L: during pause
(Addressing: "symbolic name".out)
Display: display Pulse time elapsed (in 1/100 ms) long
(Addressing: "symbolic name".display)
Call: OSZ(&timer, enabled, time_base)
Example of ladder diagram :
Example of Logicode:
output_2 = OSZ(&TIMER12, input_1, 1000)
XPLC programming language
4.23.6 Edge detection TRIG
This function module requires a flag (byte) as an internal variable
Inputs: * tp Index to the trigger flag's address bit
(Addressing: & "symbolic name")
in positive or negative edge bit
Output: (out) Trigger status bit
H: for one program cycle
after a positive or negative edge
at the "in" input
Call: TRIG(&trigger, in)
Example of ladder diagram :
Example of Logicode:
output_1 = TRIG(&TRIG12, input_1)
XPLC programming language
4.23.7 Flip-flop with priority reset input RS
This function module requires a flag (byte) as an internal variable
Inputs: * bp Index to the flip-flop flag's address
(Addressing: & "symbolic name")
set Set input bit
reset Reset input bit
Output: (out) Flip-flop status bit
Call: RS(&rs, set, reset)
Example of ladder diagram :
Example of Logicode:
output_2 = RS(&RS1, input_1, input_2)
XPLC programming language
4.23.8 TOGGLE FLIP-FLOP with a set-reset input TOGGLE
This function module uses the combined type "toggle"
It requires 2 flags (bytes) and has the following structure:
Type: toggle bit out T flip-flop output
bit trig Edge detection
Inputs: * tp Index to the T flip-flop's address type
(Addressing: & "symbolic name")
in toggle / set-reset input bit
Output: (out) Flip-flop status bit
dependent on a positive or negative
edge at the "in" input
(Addressing: "symbolic name.out")
Call: TOGGLE(&toggle, in)
Example of ladder diagram :
Example of Logicode:
output_3 = TOGGLE(&TOGG10, input_3)
XPLC programming language
4.23.9 TOGGLE FLIP-FLOP with toggle input and TOGGLE_RS
priority reset input
This function module uses the combined type "toggle"
It requires 2 flags (bytes) and has the following structure:
Type: toggle bit out T flip-flop output
bit trig Edge detection
Inputs: * tp Index to the T flip-flop's address type
(Addressing: & "symbolic name")
in toggle / set-reset input bit
set Set input bit
reset Reset input bit
Output: (out) Flip-flop status bit
dependent on:
Set input "set"
Reset input "reset"
Toggle / set-reset input "in"
(Addressing: "symbolic name.out")
Call: TOGGLE_RS(&toggle, in, set, reset)
Example of ladder diagram :
Example of Logicode:
output_4 = TOGGLE_RS(&TOGG11, input_1, input_2, input_3)
XPLC programming language
4.23.10 Read n flags or I/Os and convert LEA
to 32-bit operand
This function module does not require any internal variables
Inputs: ad Index to start flag or I/O address long
of the area to be converted
(Addressing: & "symbolic name")
n Number of elements to be read long
(flags, inputs, outputs)
fb Read direction long
1: forward upward from start address
0: backward downward from start address
Output: (out) Target register long
(Addressing: "symbolic name")
Call: LEA(&ad, n, fb)
Example of ladder diagram :
Example of Logicode:
Register_1 = LEA(&input_1, 8, 1)
XPLC programming language
4.23.11 Convert / store a 32-bit data word STEA
to n flags or I/Os
This function module does not require any internal variables
Inputs: v Register (for converting and storing) long
(Addressing: "symbolic name")
ad Index to flag or I/O address long
of the area to be stored
(Addressing: & "symbolic name")
n Number of elements to be stored long
(flags, inputs, outputs)
fb Memory direction long
1: forward upward from start address
0: backward downward from start address
Output: (out) Map of converted register ("v")
(Addressing: "symbolic name") long
Call: STEA(v, &ad, n, fb)
Example of ladder diagram :
Example of Logicode:
register_2 = STEA(register_1, &output_1, 8, 1
XPLC programming language
4.23.12 Read parameter from CNC and write to PLC register LPARC
This function module does not require any internal variables, but does require
16 flags (bytes) for storing the complete parameter content
in a PLC register
(see below)
Inputs: _cname Index to the 1st byte of the
parameter receipt flag block byte
(Addressing: &"symbolic name")
_pkan Selection of channel no. 1 - 8 byte
1: P parameter of channel 1
2: P parameter of channel 2
|
8: P parameter of channel 8
0: q parameter
All-channel system parameter
_pnum Parameter number to be read long
_enable Activate read parameter bit
(may only be H for a PLC program cycle;
as otherwise the PLC <-> CNC interface would be
blocked by a permanent transfer)
Output: (out) Map of "_enable"
(Can be used to reset an
"enable flag")
Structure receipt block: The assigned flag block for reading and storing
a parameter requires 16 flags (bytes)
Receive parameter OK byte
Parameter number long
Parameter value long
Parameter status long
Parameter exponent word
Channel number byte
Call: LPARC(&_cname, _pkan, _pnum, _enable)
XPLC programming language
Example: Read parameter 400
Receipt block for parameter 400:
byte P400E P400 receive
long P400N P400 number
long P400WE P400 value
long P400S P400 status
word P400X P400 exponent
byte P400K P400 channel
Ladder diagram:
Example of Logicode:
LPARC( &P400E, 1, 400, TRIG( &TRIG15, input_1))
XPLC programming language
4.23.13 Write / send parameter to CNC SPARC
This function module does not require any internal variables
Inputs: _pkan Selection of channel no. 1 - 8 byte
1: P parameter to channel 1
2: P parameter to channel 2
|
8: P parameter to channel 8
0: q parameter
All-channel system parameter
_pnum Parameter number to be written long
_pvalue: Parameter value long
_pexp: Parameter exponent long
_pstatus Parameter status long
_pcmd Parameter command long
0: Write parameter without status
(value and exponent)
1: Write parameter with status
(value, exponent and status)
2: Write parameter status
3: Parameter status with "OR" mask
4 Delete parameter status bits
Mask (set bits are deleted in P status)
_enable Activate write parameter bit
(may only be H for a PLC program cycle;
as otherwise the PLC <-> CNC interface would be
blocked by a permanent transfer)
Output: (out) Map of "_enable"
(Can be used to reset an
"enable flag")
Call: SPARC(_pchan, _pnum, _pvalue, _pexponent, _pstatus, _pcommand, p_enable)
XPLC programming language
Example: Describe parameter 100 with value from a PLC register
Variables and registers used:
Channel: 1 constant
Parameter number: 100 constant
Parameter mantissa: register_3 long
Parameter exponent 0 constant
Parameter status: 0 constant
Parameter command: 0 constant
Enable: input_2
Ladder diagram:
Logicode:
SPARC(1, 100, register_3, 0, 0, 0, c_TRIG(&TRIG15, input_2))
Programmiersprache XPLC
Beispiel: Parameter 100 mit Wert aus einem PLC-Register beschreiben
Verwendete Variable und Register:
Kanal: 1 Konstante
Parameter-Nummer: 100 Konstante
Parameter-Mantisse: Register_3 long
Parameter-Exponent 0 Konstante
Parameter-Status: 0 Konstante
Parameter-Kommando: 0 Konstante
Enable: Eingang_2
Kontaktplan:
Logicode:
SPARC(1, 100, Register_3, 0, 0, 0, c_TRIG(&TRIG15, Eingang_2))
copyright by BWO Elektronik GmbH 12 - 2007 73 von 73
© BWO 06 / 2014 Technische Änderungen vorbehalten
Operating system management program WINBV
7. Operating system management program WINBV Version 5.5 and more highly
7.1 WINBV install 7-2
7.2 WINBV start 7-4
7.3 Directories 7-6
7.3.1 Directory CNC 7-6
7.3.2 Directory PANEL 7 -11
7.3.3 Directory PC 7 -12
7.4 System functions 7 -13
7.5 Remote diagnostics 7 -16
7.6 Display of the operating panel 7 -18
7.6.1 Switching on 7 -18
7.6.2 I/O circulation 7 -20
7.6.3 Diagnosis 7 -21
7.6.4 Remote diagnostics 7 -22
Edition 01.2004 7-1
Operating system management program WINBV
7. Operating system management program WINBV
WINBV is actual a tool for:
• System maintenance
• Data adminstration
• Data protection
• NC archiving
• On-line remote diagnostics
7.1 WINBV install
WINBV becomes
over on by BWO
supplied SETUP
program installed.
WINBV puts
one linkage and
the following
directories on
In the subdirectory
CNC are already all
directories and
files for those
standard CNC
contained.
For further
applications
it is advisable,
the directories
and files after
the same sample
to create.
7-2 Edition 01.2004
Operating system management program WINBV
7.1 WINBV install (continuation)
Special files
WINBV.ini
Language selection:
without specification
> English
deutsch > German
For the remote diagnostics into the winbv.ini must be the Iservice address.
As graphic editior Micrografx\picture publisher one recommends.
WINBVhosts
Definition of
symbolic addresses
WINBV.his
WINBV.pro
Log of the
connections
Edition 01.2004 7-3
Operating system management program WINBV
7.2 WINBV start
Connection makes to
controller CNC CPU
with IP No. xxx.xxx.xxx.xxx
or with symbolic address
(determining with WINBVhosts)
Selection of CNC
Connection makes to
operating panel
(only with started operating panel)
7-4 Edition 01.2004
Operating system management program WINBV
7.2 WINBV start (continuation)
View after
the start
Connections
to the CNC CPU
and to
operating panel
are maked
Total directory
structure
CNC CPU,
operating panel 1
operating panel 2
as well as PC
Edition 01.2004 7-5
Operating system management program WINBV
7.3 Directories
7.3.1 Directory CNC
Files in
general directory
CNC
bs912.100 CNC operating system
netconf Ethernet configurations
# lines starting with # in the first column are a comment
# define cnc network adres
local 172.16.60.185
netmask 255.255.0.0
#
# define panel network adres
control_panel 172.16.60.186 255.255.0.0 000000000000
#
# define file server adress
host 172.16.60.189
#
# define route to file servers
route 172.16.60.189 255.255.0.0 0.0.0.0 1
#
Identification * mycompany.mycnc.mynum
#
gateway * xxx.xxx.xxx.xxx
#
iservice * xxx.xxx.xxx.xxx
#
mail1 * to: sub: msg:
#
serial2 * 9600 8 e 1
Note: * = optionally
7-6 Edition 01.2004
Operating system management program WINBV
7.3.1 Directory CNC (continuation)
param Installation related parameters / machine datas
plcobj Installation related PLC programm
system link on the active CNC operating system / link—>bs912.100
Notes to the Ethernet configuration
local own CNC address
netmask own network mask
control_panel Control panel address, network address, Ethernet address.
Ethernet address 0 means: each operating panel is accepted.
Control_panel can be indicated up to 4 times.
host file server address (must be equipped with SERVER.EXE).
route commands for the integrated rooter
PC address, gateway address, Ethernet connection number 0 (E1), 1 (E2)
identification symbolic term of the controller
The recommended sequence: machine producer. user. machine no.
gateway Address of computer in the house network, which makes the acces to internet.
iservice Address of the BWO central internet computer for on-line remote diagnostics
(inquire address please from BWO).
mail1 to: [email protected] sub: concern msg: messages
: In the concern and in the message contents of parameters can be transmitted.
mail9
to it control characters are to 3 at the disposal : % $ #
% the total parameters transmit
$ only the lower 16 bits of the parameter transmit
# the identification of the machine transmits
Example:
mail1 to: [email protected] sub: # msg: machine is with message $:8509
Clearing by an error message at the machine. Max. 256 characters.
serial1 / serial2 configuration of the serial interfaces 1 and 2
baudrate bits parity stopbit
parity: e (even) / o (odd) / n (no)
Edition 01.2004 7-7
Operating system management program WINBV
7.3.1 Directory CNC (continuation)
Bit-map files in
the directory
CNC \ BP \ BMP8
BP actual the
subdirectory for the
operating panel.
All files off this
directory are read
with ‘ boot ‘ by the
operating panel.
axkeys.bmp layout for the axis selection keys
keyboard.bmp key board for inserting on toach screen
keylayout keyboard layout for BWO virtual keyboard
lampegruen.bmp PLC keys T1 –T8 ‘ key actuates ‘ inserted green box
lamperot.bmp PLC keys T1 –T8 ‘ key actuates ‘ inserted red box
lampeweiss.bmp PLC keys T1 –T8 ‘ key does not actuate ‘ inserted box off
lampeon.bmp PLC keys T1 –T40 ‘ key actuates ‘ inserted red square
lampeoff.bmp PLC keys T9 –T40 ‘ key does not actuate ‘ inserted red square off
plckeys2.bmp Layout for PLC keys T9 – T40
Note:
The files axkeys.bmp and plckeys2.bmp can be provided by the customer with installation
related letters or layouts. For this BWO recommends the program ‘ Micrografx Picture Publisher ‘.
7-8 Edition 01.2004
Operating system management program WINBV
7.3.1 Directory CNC (continuation)
Files in the
directory
CNC \ BP \ CNC900C
BP actual the
subdirectory for
the operating panel.
All files off this
directory are read
with ‘ boot ‘ by the
operating panel.
cnc900x.cfg Configuration file for releasing from directories with path specification
(here NCDATA).
beep:off ‘bleeper‘ ON / OFF
DRIPFEED://server/ncdata drippfeed mode
NCDATA1:/ncdata flash disk (operating panel)
NCDATA2://server/ncdata peripheral file server
ppcimage operating system operating panel CNC910 / CNC920
show_e installation related user surface / pictures
Edition 01.2004 7-9
Operating system management program WINBV
7.3.1 Directory CNC (continuation)
Files in the directory
CNC \ NCRAM
NC programs in the
RAM memory of the
CNC
7 - 10 Edition 01.2004
Operating system management program WINBV
7.3.2 Directory PANEL
Files in the directory
PANEL \ CNC900C
PANEL actual the
general directory on
the Flash disk of the
operating panel
These are installation related files (secured on the flash disk)
NC programs
zero points
tool datas
parameter (axis machine data)
parameter (SERCOS final drive data)
The directory PANEL on the flash disk of the operating panel can cover still further directories,
which contain various configuration files as well as user-referred files or texts due to application.
Edition 01.2004 7 - 11
Operating system management program WINBV
7.3.3 Directory PC
Structure of the
directory PC
The subdirectories can be selected and organized freely however are recommended it
to structure the organization of the subdirectories after the following system.
For each application on subdirectory, which again all subdirectories for total application contains
(CNC CPU, PANEL) .
7 - 12 Edition 01.2004
Operating system management program WINBV
7.4 System functions
WINBV System functions
Directories and files can be created, copied, inserted, deleted as well as processed by
comfortable functions.
Thus the possibility consists to create backup on the PC by each application on.
Menü File
Functions with
directory CNC
(right mouse button)
Edition 01.2004 7 - 13
Operating system management program WINBV
7.4 System functions (continuation)
Functions with
directory panel
(right mouse button)
Functions with
directory PC
(right mouse button)
7 - 14 Edition 01.2004
Operating system management program WINBV
7.4 System functions (continuation)
Functions with file
(right mouse button)
Example copying
the file SHOW_E
from
PC\CNC\BP\CNC900C
to
CNC\BP\CNC900C
Edition 01.2004 7 - 15
Operating system management program WINBV
7.5 Remote diagnostics
Mode of operation of the BWO remote diagnostics with internal firm network
➊ CNC control of the machine user.
➋ The CNC control of the machine user goes with an incident (at the request of the operator)
on-line and sends over internet a message with the own CNC address
(e.g. bwo.cnc.demo) to the internet PC by BWO (Iservice address).
➌ Program WINBV on PC of the machine producer.
➍ The program WINBV asks the BWO internet PC whether the CNC of the machine user is
on-line actual.
➎ The BWO internet PC links the CNC directly with programm WINBV. Now can of the
machine producer remote diagnostics of the machine to be executed.
On the Firewall computer of the machine user the IP masquerading must for
suitable devices de-energised. Bond BWO with questions please
BW O
P C Ise rvice
➋ ➍
In te rn e t ➎
G a te w a y / G a te w a y /
g ate
F irewway
a ll / F ire w a ll /
R o o te r R o o te r
PC
PC CNC ➊ ➌ W IN B V PC
O p e ra t. P a n e l
M a ch in e u se r M a ch in e p ro d u ce r
7 - 16 Edition 01.2004
Operating system management program WINBV
7.5 Remote diagnostics (continuation)
Mode of operation of the BWO remote diagnostics with modem
➊ CNC control of the machine user.
➋ The CNC control of the machine user goes with an incident (at the request of the operator)
on-line and sends over internet a message with the own CNC address
(e.g. bwo.cnc.demo) to the internet PC by BWO (Iservice address).
➌ Program WINBV on PC of the machine producer.
➍ The program WINBV asks the BWO internet PC whether the CNC of the machine user is
on-line actual.
➎ The BWO internet PC links the CNC directly with programm WINBV. Now can of the
machine producer remote diagnostics of the machine to be executed.
BW O
P C Ise rvice
➋ ➍
In te rn e t ➎
IS D N -R o u te r M odem
CNC
PC
O p e ra t. P a n e l ➊ ➌ W IN B V
M a ch in e u se r M a ch in e p ro d u ce r
Edition 01.2004 7 - 17
Operating system management program WINBV
7.6 Display of the operating panel
7.6.1 Switching on
Function Screen
(right mouse button)
7 - 18 Edition 01.2004
Operating system management program WINBV
7.6.1 Switching on (continuation)
The display is illustrated. The sceen contents actual black-and-white.
Edition 01.2004 7 - 19
Operating system management program WINBV
7.6.2 I/O circulation
7 - 20 Edition 01.2004
Operating system management program WINBV
7.6.3 Diagnosis
Switching on with the key „!“
Edition 01.2004 7 - 21
Operating system management program WINBV
7.6.4 Remote diagnostics
Switching on with the keys „!“ and „ remote diagnostics „
7 - 22 Edition 01.2004
Operating system management program WINBV
7.6.4 Remote diagnostics (continuation)
Switching with the keys „ on-line “ / „ off-line “
XXX.XXX.XXX.XXX
Edition 01.2004 7 - 23