Library manual M238 system functions | 2 MB - BERGER - POSITEC
Library manual M238 system functions | 2 MB - BERGER - POSITEC
Library manual M238 system functions | 2 MB - BERGER - POSITEC
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
EIO0000000364.06<br />
Modicon <strong>M238</strong> Logic Controller<br />
EIO0000000364 04/2012<br />
Modicon <strong>M238</strong> Logic<br />
Controller<br />
System Functions and Variables<br />
<strong>M238</strong> PLCSystem <strong>Library</strong> Guide<br />
04/2012<br />
www.schneider-electric.com
The information provided in this documentation contains general descriptions and/or<br />
technical characteristics of the performance of the products contained herein. This<br />
documentation is not intended as a substitute for and is not to be used for<br />
determining suitability or reliability of these products for specific user applications. It<br />
is the duty of any such user or integrator to perform the appropriate and complete<br />
risk analysis, evaluation and testing of the products with respect to the relevant<br />
specific application or use thereof. Neither Schneider Electric nor any of its affiliates<br />
or subsidiaries shall be responsible or liable for misuse of the information contained<br />
herein. If you have any suggestions for improvements or amendments or have found<br />
errors in this publication, please notify us.<br />
No part of this document may be reproduced in any form or by any means, electronic<br />
or mechanical, including photocopying, without express written permission of<br />
Schneider Electric.<br />
All pertinent state, regional, and local safety regulations must be observed when<br />
installing and using this product. For reasons of safety and to help ensure<br />
compliance with documented <strong>system</strong> data, only the manufacturer should perform<br />
repairs to components.<br />
When devices are used for applications with technical safety requirements, the<br />
relevant instructions must be followed.<br />
Failure to use Schneider Electric software or approved software with our hardware<br />
products may result in injury, harm, or improper operating results.<br />
Failure to observe this information can result in injury or equipment damage.<br />
© 2012 Schneider Electric. All rights reserved.<br />
2 EIO0000000364 04/2012
Table of Contents<br />
Safety Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
About the Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
Chapter 1 <strong>M238</strong> System Variables . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
1.1 System Variables: Definition and Use. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />
Understanding System Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
Using System Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
1.2 PLC_R and PLC_W Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
PLC_R: Controller Read Only System Variables . . . . . . . . . . . . . . . . . . . 16<br />
PLC_W: Controller Read / Write System Variables . . . . . . . . . . . . . . . . . 18<br />
1.3 SERIAL_R and SERIAL_W Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />
SERIAL_R[0..1]: Serial Line Read Only System Variables. . . . . . . . . . . . 20<br />
SERIAL_W[0..1]: Serial Line Read / Write System Variables . . . . . . . . . . 21<br />
Chapter 2 <strong>M238</strong> System Functions. . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
2.1 <strong>M238</strong> Read Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
GetBatteryLevel: Returns Remaining Power Charge of the Battery . . . . . 25<br />
GetBootProjectStatus: Returns the Boot Project Status . . . . . . . . . . . . . . 26<br />
GetEventsNumber: Returns the Number of External Events Detected. . . 27<br />
GetFirmwareVersion: Returns Information About the Firmware, the Boot<br />
and the Coprocessor Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
GetHardwareVersion: Returns the Hardware Version . . . . . . . . . . . . . . . 30<br />
GetLastStopCause: Returns the Cause Last Stop . . . . . . . . . . . . . . . . . . 31<br />
GetLastStopTime: Returns the Date and Time of the Last Detected Stop 32<br />
GetLocalIOStatus: Returns the Embedded I/O Status . . . . . . . . . . . . . . . 33<br />
GetPlcFault: Returns Detected Errors on the Controller I/O . . . . . . . . . . . 35<br />
GetRightBusStatus: Returns the Status of the Expansion Bus. . . . . . . . . 36<br />
GetSerialNumber: Returns the Serial Number of the Controller . . . . . . . . 40<br />
GetShortCutStatus: Returns the Short-Circuit Status on Embedded<br />
Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />
IsFirstMastColdCycle: Indicates if Cycle is the First MAST Cold Start<br />
Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />
IsFirstMastCycle: Indicates if Cycle is the First MAST Cycle . . . . . . . . . . 43<br />
IsFirstMastWarmCycle: Indicates if Cycle is the First MAST Warm Start<br />
Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />
EIO0000000364 04/2012 3
2.2 <strong>M238</strong> Write Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />
InhibitBatLowLed: Disables or Re-enables the Batt LED. . . . . . . . . . . . . 47<br />
ResetEventsNumber: Resets Events Number. . . . . . . . . . . . . . . . . . . . . 48<br />
SetRTCDrift: Adjust the Real Time Clock Each Week. . . . . . . . . . . . . . . 49<br />
Chapter 3 <strong>M238</strong> PLCSystem <strong>Library</strong> Data Types . . . . . . . . . . . . . . . 51<br />
3.1 PLC_R/W System Variables Data Types. . . . . . . . . . . . . . . . . . . . . . . . . 52<br />
PLC_R_STATUS: Controller Status Codes. . . . . . . . . . . . . . . . . . . . . . . 53<br />
PLC_R_APPLICATION_ERROR: Detected Application Error Status<br />
Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />
PLC_R_BOOT_PROJECT_STATUS: Boot Project Status Codes . . . . . 55<br />
PLC_R_IO_STATUS: I/O Status Codes . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />
PLC_R_STOP_CAUSE: from RUN State to Other State Transition Cause<br />
Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />
PLC_W_COMMAND: Control Command Codes. . . . . . . . . . . . . . . . . . . 58<br />
3.2 System Functions Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />
FIRMWARE_VERSION: GetFirmwareVersion Function Output Type 60<br />
BOOT_PROJECT_STATUS: GetBootProjectStatus Function<br />
Output Codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />
STOP_WHY: GetLastStopCause Function Output Codes . . . . . . . . . 62<br />
LOCAL_IO_GET_STATUS: GetLocalIOStatus Function Parameter<br />
Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />
LOCAL_IO_GEN_STATUS: GetLocalIOStatus Function Output<br />
Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />
RIGHTBUS_GET_STATUS: GetRightBusStatus Function Parameter<br />
Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />
DAY_OF_WEEK: SetRTCDrift Function Day Parameter Codes. . . . . 66<br />
HOUR: SetRTCDrift Function Hour Parameter Type . . . . . . . . . . . . . 67<br />
MINUTE: SetRTCDrift Function Minute Parameter Type . . . . . . . . . . 68<br />
Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />
Appendix A Function and Function Block Representation . . . . . . . . 71<br />
Differences Between a Function and a Function Block . . . . . . . . . . . . . . 72<br />
How to Use a Function or a Function Block in IL Language . . . . . . . . . . 73<br />
How to Use a Function or a Function Block in ST Language . . . . . . . . . 77<br />
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />
4 EIO0000000364 04/2012
Important Information<br />
NOTICE<br />
Safety Information<br />
Read these instructions carefully, and look at the equipment to become familiar with<br />
the device before trying to install, operate, or maintain it. The following special<br />
messages may appear throughout this documentation or on the equipment to warn<br />
of potential hazards or to call attention to information that clarifies or simplifies a<br />
procedure.<br />
EIO0000000364 04/2012 5<br />
§
PLEASE NOTE<br />
Electrical equipment should be installed, operated, serviced, and maintained only by<br />
qualified personnel. No responsibility is assumed by Schneider Electric for any<br />
consequences arising out of the use of this material.<br />
A qualified person is one who has skills and knowledge related to the construction<br />
and operation of electrical equipment and its installation, and has received safety<br />
training to recognize and avoid the hazards involved.<br />
6 EIO0000000364 04/2012
At a Glance<br />
Document Scope<br />
Validity Note<br />
Related Documents<br />
About the Book<br />
This document will acquaint you with the <strong>system</strong> <strong>functions</strong> and variables offered<br />
within the Modicon <strong>M238</strong> Logic Controller. The <strong>M238</strong> PLCSystem library contains<br />
<strong>functions</strong> and variables to get information and send commands to the controller<br />
<strong>system</strong>.<br />
This document describes the data types <strong>functions</strong> and variables of the <strong>M238</strong><br />
PLCSystem library.<br />
The following basic knowledge is required:<br />
basic information on functionality, structure and configuration of the <strong>M238</strong><br />
programming in the FBD, LD, ST, IL or CFC language<br />
System Variables (globales variables)<br />
This document has been updated with the release of SoMachine V3.1.<br />
Title of Documentation Reference Number<br />
<strong>M238</strong> Logic Controller Programming Guide EIO0000000384 (ENG);<br />
EIO0000000385 (FRE);<br />
EIO0000000386 (GER);<br />
EIO0000000387 (ITA);<br />
EIO0000000388 (SPA);<br />
EIO0000000389 (CHS)<br />
You can download these technical publications and other technical information from<br />
our website at www.schneider-electric.com.<br />
EIO0000000364 04/2012 7
Product Related Information<br />
User Comments<br />
LOSS OF CONTROL<br />
WARNING<br />
The designer of any control scheme must consider the potential failure modes<br />
of control paths and, for certain critical control <strong>functions</strong>, provide a means to<br />
achieve a safe state during and after a path failure. Examples of critical control<br />
<strong>functions</strong> are emergency stop and overtravel stop, power outage and restart.<br />
Separate or redundant control paths must be provided for critical control<br />
<strong>functions</strong>.<br />
System control paths may include communication links. Consideration must be<br />
given to the implications of unanticipated transmission delays or failures of the<br />
link.<br />
Observe all accident prevention regulations and local safety guidelines. 1<br />
Each implementation of this equipment must be individually and thoroughly<br />
tested for proper operation before being placed into service.<br />
Failure to follow these instructions can result in death, serious injury, or<br />
equipment damage.<br />
1 For additional information, refer to NEMA ICS 1.1 (latest edition), "Safety<br />
Guidelines for the Application, Installation, and Maintenance of Solid State Control"<br />
and to NEMA ICS 7.1 (latest edition), "Safety Standards for Construction and Guide<br />
for Selection, Installation and Operation of Adjustable-Speed Drive Systems" or their<br />
equivalent governing your particular location.<br />
UNINTENDED EQUIPMENT OPERATION<br />
WARNING<br />
Only use software approved by Schneider Electric for use with this equipment.<br />
Update your application program every time you change the physical hardware<br />
configuration.<br />
Failure to follow these instructions can result in death, serious injury, or<br />
equipment damage.<br />
We welcome your comments about this document. You can reach us by e-mail at<br />
techcomm@schneider-electric.com.<br />
8 EIO0000000364 04/2012
Overview<br />
Modicon <strong>M238</strong> Logic Controller<br />
<strong>M238</strong> System Variables<br />
EIO0000000364 04/2012<br />
<strong>M238</strong> System Variables<br />
EIO0000000364 04/2012 9<br />
1<br />
This chapter:<br />
gives an introduction to the System Variables (see page 10)<br />
describes the System Variables (see page 16) included with the <strong>M238</strong><br />
PLCSystem library<br />
What’s in this Chapter?<br />
This chapter contains the following sections:<br />
Section Topic Page<br />
1.1 System Variables: Definition and Use 10<br />
1.2 PLC_R and PLC_W Structures 15<br />
1.3 SERIAL_R and SERIAL_W Structures 19
<strong>M238</strong> System Variables<br />
1.1 System Variables: Definition and Use<br />
Overview<br />
This section defines System Variables and how to implement them in the Modicon<br />
<strong>M238</strong> Logic Controller.<br />
What’s in this Section?<br />
This section contains the following topics:<br />
Topic Page<br />
Understanding System Variables 11<br />
Using System Variables 13<br />
10 EIO0000000364 04/2012
Understanding System Variables<br />
Introduction<br />
System Variables Naming Convention<br />
<strong>M238</strong> System Variables<br />
This section describes how System Variables are implemented for the controller.<br />
These variables have the following attributes:<br />
System Variables allow you to access general <strong>system</strong> information, perform<br />
<strong>system</strong> diagnostics, and command simple actions.<br />
System Variables are structured variables conforming to IEC 61131 definitions<br />
and naming conventions. They may be accessed using the IEC symbolic name<br />
PLC_GVL.<br />
Some of the PLC_GVL variables are read-only (for example PLC_R), and some<br />
are read-write (for example PLC_W).<br />
System Variables are automatically declared as global variables. They have<br />
<strong>system</strong>-wide scope and must be handled with care because they can be<br />
accessed by any Program Organization Unit (POU) in any task.<br />
The System Variables are identified by:<br />
a structure name which represents the category of System Variable (e.g. PLC_R<br />
represents a structure name of read only variables used for controller diagnosis).<br />
a set of component names which identifies the purpose of the variable (e.g.<br />
i_wVendorID represents the controller Vendor ID).<br />
You can access the variables by typing the structure name of the variables followed<br />
by the name of the component.<br />
Here is an example of System Variable implementation:<br />
VAR<br />
myCtr_Serial : DWORD;<br />
myCtr_ID : DWORD;<br />
myCtr_FramesRx : UDINT;<br />
END_VAR<br />
myCtr_Serial := PLC_R.i_dwSerialNumber;<br />
myCtr_ID := PLC_R.i_wVendorID;<br />
myCtr_FramesRx := SERIAL_R[0].i_udiFramesReceivedOK;<br />
NOTE: The fully qualified name of the <strong>system</strong> variable in the example above is<br />
PLC_GVL.PLC_R.i_wVendorID. The PLC_GVL is implicit when declaring a<br />
variable using the Input Assistant, but it may also be entered in full. Good<br />
programming practice often dictates the use of the fully qualified variable name in<br />
declarations.<br />
EIO0000000364 04/2012 11
<strong>M238</strong> System Variables<br />
System Variables Location<br />
2 kinds of <strong>system</strong> variables are defined for use when programming the Controller:<br />
located variables<br />
unlocated variables<br />
The located variables:<br />
have a fixed location in a static %MW area:<br />
%MW60000 to %MW60199 for Read only System Variables<br />
are accessible through Modbus serial request both in RUNNING and STOPPED<br />
states<br />
are used in SoMachine programs according to the<br />
structure_name.component_name convention explained previously (%MW<br />
addresses between 0 and 59999 can be accessed directly; adresses greater than<br />
this are considered out of range by SoMachine and can only be accessed trough<br />
the structure_name.component_name convention).<br />
The unlocated variables:<br />
are not physically located in the %MW area<br />
are not accessible through any field bus or network requests unless you locate<br />
them in the relocation table, and only then can they be accessed in RUNNING<br />
and STOPPED states. The relocation table uses the following dynamic %MW<br />
areas:<br />
%MW60200 to %MW61999 for Read only Variables<br />
%MW62200 to %MW63999 for Read / Write Variables<br />
are used in SoMachine programs according to the<br />
structure_name.component_name convention explained previously (%MW<br />
addresses between 0 and 59999 can be accessed directly; adresses greater than<br />
this are considered out of range by SoMachine and can only be accessed trough<br />
the structure_name.component_name convention).<br />
12 EIO0000000364 04/2012
Using System Variables<br />
Introduction<br />
<strong>M238</strong> System Variables<br />
This topic describes the steps required to program and use System Variables in<br />
SoMachine.<br />
System Variables can be used in all the Program Organization Units (POUs) of the<br />
application.<br />
System Variables do not need to be declared in the GVL. They are automatically<br />
declared from the controller System <strong>Library</strong>.<br />
Using System Variables in a POU<br />
In the POU, start by entering the <strong>system</strong> variable structure name (PLC_R,<br />
PLC_W...) followed by a dot. The System Variables appear in the Input Assistant.<br />
You can select the desired variable or enter the full name <strong>manual</strong>ly.<br />
NOTE: SoMachine has an auto completion feature. In the example above, once you<br />
have typed the structure name PLC_R., SoMachine offers a pop-up menu of<br />
possible component names/variables.<br />
EIO0000000364 04/2012 13
<strong>M238</strong> System Variables<br />
Example<br />
The following example shows the use of some System Variables:<br />
VAR<br />
myCtr_Serial : DWORD;<br />
myCtr_ID : WORD;<br />
myCtr_FramesRx : UDINT;<br />
END_VAR<br />
myCtr_Serial := PLC_R.i_dwSerialNumber;<br />
myCtr_ID := PLC_R.i_wVendorID;<br />
myCtr_FramesRx := SERIAL_R[0].i_udiFramesReceivedOK;<br />
14 EIO0000000364 04/2012
1.2 PLC_R and PLC_W Structures<br />
Overview<br />
<strong>M238</strong> System Variables<br />
This section lists and describes the different System Variables included in the<br />
PLC_R and PLC_W structures.<br />
What’s in this Section?<br />
This section contains the following topics:<br />
Topic Page<br />
PLC_R: Controller Read Only System Variables 16<br />
PLC_W: Controller Read / Write System Variables 18<br />
EIO0000000364 04/2012 15
<strong>M238</strong> System Variables<br />
PLC_R: Controller Read Only System Variables<br />
Variable Structure<br />
The following table describes the parameters of the PLC_R System Variable<br />
(PLC_R_STRUCT type):<br />
%MW Var Name Type Comment<br />
60000 i_wVendorID WORD Controller Vendor ID.<br />
101A hex = Schneider Electric<br />
60001 i_wProductID WORD Controller Reference ID.<br />
NOTE: Vendor ID and Reference<br />
ID are the components of the Target<br />
ID of the Controller displayed in the<br />
Communication Settings view<br />
(Target ID = 101A XXXX hex).<br />
60002 i_dwSerialNumber DWORD Controller Serial Number<br />
60004 i_byFirmVersion[0..3] ARRAY[0..3] OF BYTE Controller Firmware Version<br />
[aa.bb.cc.dd]:<br />
i_byFirmVersion[0] = aa<br />
...<br />
i_byFirmVersion[3] = dd<br />
60006 i_byBootVersion[0..3] ARRAY[0..3] OF BYTE Controller Boot Version<br />
[aa.bb.cc.dd]:<br />
i_byBootVersion[0] = aa<br />
...<br />
i_byBootVersion[3] = dd<br />
60008 i_dwHardVersion DWORD Controller Hardware Version.<br />
60010 i_dwChipVersion DWORD Controller Coprocessor Version.<br />
60012 i_wStatus PLC_R_STATUS<br />
(see page 53)<br />
State of the controller.<br />
60013 i_wBootProjectStatus PLC_R_BOOT_PROJECT_STATUS<br />
(see page 55)<br />
60014 i_wLastStopCause PLC_R_STOP_CAUSE<br />
(see page 57)<br />
60015 i_wLastApplicationError PLC_R_APPLICATION_ERROR<br />
(see page 54)<br />
Returns information about the boot<br />
application stored in FLASH<br />
memory.<br />
Cause of the last transition from<br />
RUN to another state.<br />
Cause of the last Controller<br />
Exception.<br />
60016 i_lwSystemFault_1 LWORD Bit field FFFF FFFF FFFF FFFF<br />
hex indicates no detected error.<br />
If TM2 error is detected, the bit 1 is<br />
FALSE.<br />
60020 i_lwSystemFault_2 LWORD Not used.<br />
16 EIO0000000364 04/2012
%MW Var Name Type Comment<br />
60024 i_wIOStatus1 PLC_R_IO_STATUS<br />
(see page 56)<br />
60025 i_wIOStatus2 PLC_R_IO_STATUS<br />
(see page 56)<br />
Embedded I/O status.<br />
TM2 I/O status.<br />
<strong>M238</strong> System Variables<br />
60026 i_wBatteryStatus WORD Charge remaining in the battery.<br />
This System Variable can take the<br />
following significant values:<br />
FFFF hex = 100% = 3.5 V<br />
7FFF hex = 50% = 2.75 V<br />
0000 hex = 0% = 2 V<br />
Flashing thresholds of the Batt<br />
LED:<br />
100% = always OFF<br />
50% = periodic flashing<br />
0% = always ON<br />
60028 i_dwAppliSignature1 DWORD 1st DWORD of 4 DWORD signature<br />
(16 bytes total).<br />
The Application Signature is<br />
generated by the software during<br />
build.<br />
60030 i_dwAppliSignature2 DWORD 2nd DWORD of 4 DWORD<br />
signature (16 bytes total).<br />
The Application Signature is<br />
generated by the software during<br />
build.<br />
60032 i_dwAppliSignature3 DWORD 3rd DWORD of 4 DWORD signature<br />
(16 bytes total).<br />
The Application Signature is<br />
generated by the software during<br />
build.<br />
60034 i_dwAppliSignature4 DWORD 4th DWORD of 4 DWORD signature<br />
(16 bytes total).<br />
The Application Signature is<br />
generated by the software during<br />
build.<br />
EIO0000000364 04/2012 17
<strong>M238</strong> System Variables<br />
PLC_W: Controller Read / Write System Variables<br />
Variable Structure<br />
The following table describes the parameters of the PLC_W System Variable<br />
(PLC_W_STRUCT type):<br />
%MW Var Name Type Comment<br />
n/a q_uiOpenPLCControl UINT When Value pass from 0 to 6699, The<br />
command previously written in the following<br />
PLC_W.q_wPLCControl is executed.<br />
n/a q_wPLCControl PLC_W_COMMAND<br />
(see page 58)<br />
Controller RUN / STOP command executed<br />
when the <strong>system</strong> variable<br />
PLC_R.q_uiOpenPLCControl value pass<br />
from 0 to 6699.<br />
NOTE: n/a means that there is no predefined %MW mapping for this System<br />
Variable.<br />
18 EIO0000000364 04/2012
1.3 SERIAL_R and SERIAL_W Structures<br />
Overview<br />
<strong>M238</strong> System Variables<br />
This section lists and describes the different System Variables included in the<br />
SERIAL_R and SERIAL_W structures.<br />
What’s in this Section?<br />
This section contains the following topics:<br />
Topic Page<br />
SERIAL_R[0..1]: Serial Line Read Only System Variables 20<br />
SERIAL_W[0..1]: Serial Line Read / Write System Variables 21<br />
EIO0000000364 04/2012 19
<strong>M238</strong> System Variables<br />
SERIAL_R[0..1]: Serial Line Read Only System Variables<br />
Introduction<br />
Variable Structure<br />
SERIAL_R is an array of 2 SERIAL_R_STRUCT type. Each element of the array<br />
returns diagnostic System Variables for the corresponding Serial Line.<br />
For <strong>M238</strong>:<br />
Serial_R[0] refers to the Serial Line 1<br />
Serial_R[1] refers to the Serial Line 2 (only for T<strong>M238</strong>LFDC24DT• and<br />
T<strong>M238</strong>LFAC24DR )<br />
The following table describes the parameters of the SERIAL_R[0..1] System<br />
Variables:<br />
%MW Var Name Type Comment<br />
Serial Line<br />
n/a i_udiFramesTransmittedOK UDINT Number of frames successfully transmitted.<br />
n/a i_udiFramesReceivedOK UDINT Number of frames received without any<br />
detected errors.<br />
n/a i_udiRX_MessagesError UDINT Number of frames received with detected<br />
errors (checksum, parity).<br />
Modbus Specific<br />
n/a i_uiSlaveExceptionCount UINT Number of Modbus exception responses<br />
returned by the Controller.<br />
n/a i_udiSlaveMsgCount UINT Number of messages received from the Master<br />
and addressed to the Controller.<br />
n/a i_uiSlaveNoRespCount UINT Number of Modbus Broadcast requests<br />
received by the Controller.<br />
n/a i_uiSlaveNakCount UINT Not used<br />
n/a i_uiSlaveBusyCount UINT Not used<br />
n/a i_uiCharOverrunCount UINT Number of Character overrun.<br />
NOTE: n/a means that there is no predefined %MW mapping for this System<br />
Variable.<br />
NOTE:<br />
The SERIAL_R Counters are reset on:<br />
Download.<br />
Controller Reset.<br />
SERIAL_W[x].q_wResetCounter command.<br />
Reset command by Modbus request function code #8.<br />
20 EIO0000000364 04/2012
SERIAL_W[0..1]: Serial Line Read / Write System Variables<br />
Introduction<br />
Variable Structure<br />
<strong>M238</strong> System Variables<br />
SERIAL_W is an array of 2 SERIAL_W_STRUCT type. Each element of the array<br />
forces the SERIAL_R System Variables for the corresponding Serial Line to be<br />
reset.<br />
For <strong>M238</strong>:<br />
Serial_W[0] refers to the Serial Line 1<br />
Serial_W[1] refers to the Serial Line 2 (only for T<strong>M238</strong>LFDC24DT and<br />
T<strong>M238</strong>LFAC24DR )<br />
The following table describes the parameters of the SERIAL_W[0..1] System<br />
Variable:<br />
%MW Var Name Type Comment<br />
n/a q_wResetCounter WORD Transition from 0 to 1 resets all<br />
SERIAL_R[0..1] counters.<br />
To reset the counters again, it is necessary to<br />
write this register to 0 before another transition<br />
from 0 to 1 can take place.<br />
NOTE: n/a means that there is no predefined %MW mapping for this System<br />
Variable.<br />
EIO0000000364 04/2012 21
<strong>M238</strong> System Variables<br />
22 EIO0000000364 04/2012
Overview<br />
Modicon <strong>M238</strong> Logic Controller<br />
<strong>M238</strong> System Functions<br />
EIO0000000364 04/2012<br />
<strong>M238</strong> System Functions<br />
EIO0000000364 04/2012 23<br />
2<br />
This chapter describes the <strong>functions</strong> included in the <strong>M238</strong> PLCSystem library.<br />
What’s in this Chapter?<br />
This chapter contains the following sections:<br />
Section Topic Page<br />
2.1 <strong>M238</strong> Read Functions 24<br />
2.2 <strong>M238</strong> Write Functions 46
<strong>M238</strong> System Functions<br />
2.1 <strong>M238</strong> Read Functions<br />
Overview<br />
This section describes the read <strong>functions</strong> included in the <strong>M238</strong> PLCSystem library.<br />
In many cases, similar information returned by these <strong>functions</strong> can also be obtained<br />
through System Variables (see page 11). System Variables are common across the<br />
control platforms, and therefore it is recommended to use them where possible for<br />
the portability of your applications. The information contained in the System<br />
Variables is often similar, though not always exactly the same as that returned by<br />
the <strong>functions</strong>. If you are replacing these <strong>functions</strong> in your program to favor the use<br />
of System Variables, be sure to understand the differences in the information<br />
offered.<br />
The following function descriptions indicate when a System Variable is available for<br />
similar information.<br />
What’s in this Section?<br />
This section contains the following topics:<br />
Topic Page<br />
GetBatteryLevel: Returns Remaining Power Charge of the Battery 25<br />
GetBootProjectStatus: Returns the Boot Project Status 26<br />
GetEventsNumber: Returns the Number of External Events Detected 27<br />
GetFirmwareVersion: Returns Information About the Firmware, the Boot and<br />
the Coprocessor Versions<br />
28<br />
GetHardwareVersion: Returns the Hardware Version 30<br />
GetLastStopCause: Returns the Cause Last Stop 31<br />
GetLastStopTime: Returns the Date and Time of the Last Detected Stop 32<br />
GetLocalIOStatus: Returns the Embedded I/O Status 33<br />
GetPlcFault: Returns Detected Errors on the Controller I/O 35<br />
GetRightBusStatus: Returns the Status of the Expansion Bus 36<br />
GetSerialNumber: Returns the Serial Number of the Controller 40<br />
GetShortCutStatus: Returns the Short-Circuit Status on Embedded Outputs 41<br />
IsFirstMastColdCycle: Indicates if Cycle is the First MAST Cold Start Cycle 42<br />
IsFirstMastCycle: Indicates if Cycle is the First MAST Cycle 43<br />
IsFirstMastWarmCycle: Indicates if Cycle is the First MAST Warm Start Cycle 45<br />
24 EIO0000000364 04/2012
GetBatteryLevel: Returns Remaining Power Charge of the Battery<br />
<strong>M238</strong> System Functions<br />
Function Description<br />
This function returns the remaining power charge of the external backup battery (in<br />
percent).<br />
For more information about internal and external batteries, refer to the <strong>M238</strong><br />
Hardware Guide (see <strong>M238</strong> Logic Controller, Hardware Guide).<br />
NOTE: The similar information is also available through the System Variable<br />
PLC_R.i_wBatteryStatus (see page 16)<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variables Description<br />
The following table describes the output variable:<br />
Output Type Comment<br />
GetBatteryLevel WORD Percentage of charge remaining in the battery.<br />
Range: 0..100:<br />
100%= 3.5 V<br />
50% = 2.75 V<br />
0%= 2 V<br />
Flashing thresholds of the Batt LED:<br />
100%= always OFF<br />
50%= periodic flashing<br />
0%= always ON<br />
EIO0000000364 04/2012 25
<strong>M238</strong> System Functions<br />
GetBootProjectStatus: Returns the Boot Project Status<br />
Function Description<br />
This function returns the boot project status.<br />
NOTE: The similar information is also available through the System Variable<br />
PLC_R.i_wBootProjectStatus (see page 16).<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Output Type Comment<br />
GetBootProjectStatus BOOT_PROJECT_STATUS<br />
(see page 61)<br />
Status of the Boot Project.<br />
26 EIO0000000364 04/2012
GetEventsNumber: Returns the Number of External Events Detected<br />
<strong>M238</strong> System Functions<br />
Function Description<br />
This function returns the number of events that have occurred since the last cold<br />
start, including those detected on inputs and HSC threshold compare events.<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Output Type Comment<br />
GetEventsNumber DWORD The value representing the number of events that<br />
have occurred since the last cold start. Reset to 0<br />
with a call of the function ResetEventsNumber<br />
(see page 48).<br />
EIO0000000364 04/2012 27
<strong>M238</strong> System Functions<br />
GetFirmwareVersion: Returns Information About the Firmware, the Boot and the<br />
Coprocessor Versions<br />
Function Description<br />
Graphical Representation<br />
This function returns the following information about the Controller:<br />
Firmware version<br />
Boot version (Kernel for firmware update)<br />
Coprocessor version (ASIC dedicated to embedded I/O management)<br />
NOTE: The similar information are also available through the System Variables<br />
PLC_R.i_byFirmVersion, PLC_R.i_byBootVersion and<br />
PLC_R.i_byChipVersion (see page 16)<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Output Type Comment<br />
GetFirmwareVersion FIRMWARE_VERSION<br />
(see page 60)<br />
Firmware, Boot and Coprocessor<br />
version.<br />
28 EIO0000000364 04/2012
Example<br />
<strong>M238</strong> System Functions<br />
This example describes how to use the structured variable to get the versions<br />
values:<br />
VAR<br />
MyFirmwareVersion : FIRMWARE_VERSION;<br />
MyFwVersion : DWORD;<br />
MyBootVersion : WORD;<br />
MyCoProcVersion : WORD;<br />
END_VAR<br />
MyFirmwareVersion := GetFirmwareVersion();<br />
MyFwVersion := MyFirmwareVersion.FwVersion;<br />
MyBootVersion := MyFirmwareVersion.BootVersion;<br />
MyCoProcVersion := MyFirmwareVersion.AsicVersion;<br />
EIO0000000364 04/2012 29
<strong>M238</strong> System Functions<br />
GetHardwareVersion: Returns the Hardware Version<br />
Function Description<br />
This function returns the hardware version of the Controller.<br />
NOTE: The similar information are also available through the System Variables<br />
PLC_R.i_dwHardVersion (see page 16)<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Output Type Comment<br />
GetHardwareVersion WORD Hardware version of the Controller.<br />
30 EIO0000000364 04/2012
GetLastStopCause: Returns the Cause Last Stop<br />
<strong>M238</strong> System Functions<br />
Function Description<br />
This function returns the cause of the last transition from RUN to another state.<br />
NOTE: The similar information value is also available through the System Variable<br />
PLC_R.i_wLastStopCause (see page 16).<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Output Type Comment<br />
GetLastStopCause STOP_WHY<br />
(see page 62)<br />
Cause of the last transition from RUN to<br />
another state.<br />
EIO0000000364 04/2012 31
<strong>M238</strong> System Functions<br />
GetLastStopTime: Returns the Date and Time of the Last Detected Stop<br />
Function Description<br />
This function returns the date and time of the last transition from RUN to another<br />
state.<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Output Type Comment<br />
GetLastStopTime DWORD The time of the last detected STOP in seconds<br />
beginning with January 1, 1970 at 00:00.<br />
32 EIO0000000364 04/2012
GetLocalIOStatus: Returns the Embedded I/O Status<br />
<strong>M238</strong> System Functions<br />
Function Description<br />
This function returns the embedded I/O status.<br />
NOTE: The similar information is also available through the System Variable<br />
PLC_R.i_wLocalIOStatus (see page 16).<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variables Description<br />
The following table describes the input parameter:<br />
Example 1<br />
Input Type Comment<br />
Mode LOCAL_IO_GET_STATUS<br />
(see page 63)<br />
The following table describes the output variable:<br />
Parameter of the function:<br />
currently only<br />
LOCAL_IO_GET_GEN_STATUS<br />
(00 hex) (see page 63) is<br />
available.<br />
Output Type Comment<br />
GetLocalIOStatus LOCAL_IO_GEN_STATUS<br />
(see page 64)<br />
Status of the embedded I/O.<br />
This example shows a direct use of LOCAL_IO_GET_GEN_STATUS enumerator of<br />
the LOCAL_IO_GET_STATUS enumeration type for the Mode input parameter:<br />
VAR<br />
MyLocalIOStatus : LOCAL_IO_GEN_STATUS;<br />
END_VAR<br />
MyLocalIOStatus := GetLocalIOStatus(LOCAL_IO_GET_GEN_STATUS);<br />
EIO0000000364 04/2012 33
<strong>M238</strong> System Functions<br />
Example 2<br />
This example shows the use of an intermediate variable for Mode input parameter.<br />
VAR<br />
MyLocalIOStatus : LOCAL_IO_GEN_STATUS;<br />
MyMode : LOCAL_IO_GET_STATUS;<br />
END_VAR<br />
MyMode := LOCAL_IO_GET_GEN_STATUS;<br />
MyLocalIOStatus := GetLocalIOStatus(MyMode);<br />
34 EIO0000000364 04/2012
GetPlcFault: Returns Detected Errors on the Controller I/O<br />
<strong>M238</strong> System Functions<br />
Function Description<br />
This function returns a generic diagnostic of the Controller I/O in a bit field (FFFF hex<br />
means no error detected):<br />
NOTE: The similar information is also available through the System Variable (bit0<br />
and bit1) PLC_R.i_lwSystemFault_1 (see page 16).<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Output Type Comment<br />
GetPlcFault WORD Diagnostic of controller’s I/O in a bit field (FFFF hex means<br />
no error detected).<br />
The following table details the bits contained in the output bit field:<br />
Bit Meaning<br />
0 FALSE = detected error on the I/O expansion bus.<br />
Use the GetRightBusStatus (see page 36) function to get detailed<br />
diagnostic information.<br />
1 FALSE = detected error on the embedded I/O.<br />
Use the GetLocalIOStatus (see page 33) function to get detailed<br />
diagnostic information.<br />
2..15 reserved, always 1<br />
EIO0000000364 04/2012 35
<strong>M238</strong> System Functions<br />
GetRightBusStatus: Returns the Status of the Expansion Bus<br />
Function Description<br />
This function returns the I/O Expansion Bus status in a bit field. Following the input<br />
parameter (Mask), the function returns a configuration diagnostic on the I/O<br />
expansion bus (I/O expansion bus configuration mismatch with plugged modules) or<br />
a detailed diagnostic of the requested expansion analog I/O module.<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variables Description<br />
The following table describes the input parameter:<br />
Input Type Comment<br />
Mask RIGHTBUS_GET_STATUS<br />
(see page 65)<br />
The following table describes the output variable:<br />
Defines the type of I/O<br />
expansion bus diagnostic<br />
returned by the function:<br />
bus configuration or one of<br />
the 7 possible expansion<br />
modules.<br />
Output Type Comment<br />
GetRightBusStatus WORD I/O expansion bus<br />
diagnostic.<br />
see details below<br />
36 EIO0000000364 04/2012
<strong>M238</strong> System Functions<br />
I/O Expansion Bus Configuration Diagnostic<br />
The table below describes the bit field returned by the function GetRight-<br />
BusStatus when the input parameter (Mask) is RIGHT_BUS_GET_GEN_STATUS<br />
(see page 65) for a configuration diagnostic of the expansion bus (0000 hex if no<br />
detected error):<br />
Bit Description<br />
0 Reserved (always 0)<br />
1 TRUE if the TM2 module 1 configuration mismatches with plugged module.<br />
2 TRUE if the TM2 module 2 configuration mismatches with plugged module.<br />
3 TRUE if the TM2 module 3 configuration mismatches with plugged module.<br />
4 TRUE if the TM2 module 4 configuration mismatches with plugged module.<br />
5 TRUE if the TM2 module 5 configuration mismatches with plugged module.<br />
6 TRUE if the TM2 module 6 configuration mismatches with plugged module.<br />
7 TRUE if the TM2 module 7 configuration mismatches with plugged module.<br />
8...15 Reserved (always 0)<br />
I/O Expansion Bus Modules Diagnostic<br />
The tables below describe the bit field returned by the function GetRight-<br />
BusStatus when the input parameter (Mask) is RIGHTBUS_GET_STATUSx<br />
(see page 65) (where x=1 to 7) for a detailed diagnostic of the expansion module<br />
"x".<br />
NOTE: The detailed diagnostic is valid for analog I/O modules only and the bit field<br />
meaning depends on the type of the concerned analog module.<br />
When the associated module is a standard analog I/O module (up to 2 input<br />
channels):<br />
TM2AMM3HT<br />
TM2ALM3LT<br />
TM2AMI2HT<br />
TM2AMI2LT<br />
TM2AVO2HT<br />
TM2AMO1HT<br />
Bit Description<br />
0 All analog channels in normal state<br />
1 Module in initialization state<br />
2 Power supply not operating correctly<br />
3 Incorrect configuration - analysis needed<br />
4 Conversion process for input channel 0<br />
EIO0000000364 04/2012 37
<strong>M238</strong> System Functions<br />
Bit Description<br />
5 Conversion process for input channel 1<br />
6 Invalid parameter for input channel 0<br />
7 Invalid parameter for input channel 1<br />
8 Not used<br />
9 Not used<br />
10 Overflow value for input channel 0<br />
11 Overflow value for input channel 1<br />
12 Underflow value for input channel 0<br />
13 Underflow value for input channel 1<br />
14 Not used<br />
15 Invalid parameter for output channel<br />
When the associated module is one of the 4 or 8 analog input channels modules:<br />
TM2ARI8HT<br />
TM2AMI8HT<br />
TM2ARI8LT<br />
TM2ARI8LRJ<br />
TM2AMI4LT<br />
TM2AMM6HT<br />
Bit Description Meaning<br />
0, 1 Channel 0 state 00: Analog channel in normal state<br />
01: Invalid parameter for input channel<br />
10: Unavailable input value (module in initialization state,<br />
conversion process)<br />
11: Invalid value for input channel (overflow or underflow<br />
value)<br />
2, 3 Channel 1 state see bit 0, 1<br />
4, 5 Channel 2 state see bit 0, 1<br />
6, 7 Channel 3 state see bit 0, 1<br />
8, 9 Channel 4 state see bit 0, 1 (for 8 input channels modules only)<br />
10, 11 Channel 5 state see bit 0, 1 (for 8 input channels modules only)<br />
12, 13 Channel 6 state see bit 0, 1 (for 8 input channels modules only)<br />
14, 15 Channel 7 state see bit 0, 1 (for 8 input channels modules only)<br />
NOTE: When the targeted expansion module is a Digital I/O module, a High Speed<br />
Counter module or an AS-Interface Master Module, the diagnostic returned is invalid<br />
(0000 hex).<br />
38 EIO0000000364 04/2012
Example<br />
<strong>M238</strong> System Functions<br />
To obtain a diagnostic on HSC and AS-Interface Expansion modules, you can use:<br />
HSCGetDiag (see Modicon <strong>M238</strong> Logic Controller, High Speed<br />
Counting, <strong>M238</strong> HSC <strong>Library</strong> Guide) Function Block for the<br />
TM200 HSC206D module<br />
ASI_MasterStatusCheck (see Modicon <strong>M238</strong> Logic Controller,<br />
Programming Guide) for the TWDNOI10M3 module<br />
The following example describes a method using GetRightBusStatus for I/O<br />
expansion bus and analog modules diagnostic:<br />
VAR<br />
(*Modules 1 to 7 conf diag = MyRightBusStatus bits 1 to 7*)<br />
MyRightBusStatus: WORD;<br />
(*Modules 1 to 7 diag codes*)<br />
ModuleError:Array [1..7] of WORD;<br />
END_VAR<br />
(*Conf diagnostic on expansion bus*)<br />
MyRightBusStatus:=GetRightBusStatus<br />
(RIGHTBUS_GET_GEN_STATUS);<br />
IF MyRightBusStatus0 THEN<br />
(*Conf mismatch detected => set an alarm, check bit values...*)<br />
END_IF;<br />
(*Get modules diagnostic; detected error if diag 0*)<br />
(*Limit the list to analog modules configured only*)<br />
ModuleError[1]:=GetRightBusStatus(RIGHTBUS_GET_STATUS1);<br />
ModuleError[2]:=GetRightBusStatus(RIGHTBUS_GET_STATUS2);<br />
ModuleError[3]:=GetRightBusStatus(RIGHTBUS_GET_STATUS3);<br />
ModuleError[4]:=GetRightBusStatus(RIGHTBUS_GET_STATUS4);<br />
ModuleError[5]:=GetRightBusStatus(RIGHTBUS_GET_STATUS5);<br />
ModuleError[6]:=GetRightBusStatus(RIGHTBUS_GET_STATUS6);<br />
ModuleError[7]:=GetRightBusStatus(RIGHTBUS_GET_STATUS7);<br />
EIO0000000364 04/2012 39
<strong>M238</strong> System Functions<br />
GetSerialNumber: Returns the Serial Number of the Controller<br />
Function Description<br />
This function returns the serial number of the Controller.<br />
NOTE: The similar information is also available through the System Variable (bit0<br />
and bit1) PLC_R.i_dwSerialNumber (see page 16).<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Output Type Comment<br />
GetSerialNumber DWORD Controller Serial number.<br />
40 EIO0000000364 04/2012
<strong>M238</strong> System Functions<br />
GetShortCutStatus: Returns the Short-Circuit Status on Embedded Outputs<br />
Function Description<br />
This function returns the short-circuit or overload diagnostic on embedded outputs.<br />
NOTE: For more information about embedded outputs management, refer to the<br />
<strong>M238</strong> Hardware Guide (see <strong>M238</strong> Logic Controller, Hardware Guide).<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Parameter Type Comment<br />
GetShortCutStatus WORD see bit field description below<br />
The following table describes the bit field for the T<strong>M238</strong>LDD24DT and<br />
T<strong>M238</strong>LFDC24DT :<br />
Bit Description<br />
0 TRUE = short-circuit on outputs group 1 (Q0 to Q3).<br />
1 TRUE = short-circuit on outputs group 2 (Q4 to Q6).<br />
2 TRUE = short-circuit on outputs group 3 (Q7 to Q9).<br />
The following table describes the bit field for the T<strong>M238</strong>LDA24DR and<br />
T<strong>M238</strong>LFAC24DR :<br />
Bit Description<br />
0 TRUE = short-circuit on outputs group 1 (Q0 to Q3).<br />
EIO0000000364 04/2012 41
<strong>M238</strong> System Functions<br />
IsFirstMastColdCycle: Indicates if Cycle is the First MAST Cold Start Cycle<br />
Function Description<br />
This function returns TRUE during the 1st MAST cycle after a cold start (first cycle<br />
after download or reset cold).<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Example<br />
Output Type Comment<br />
IsFirstMastColdCycle BOOL TRUE during the first MAST task cycle after<br />
a cold start.<br />
Refer to the function IsFirstMastCycle (see page 43).<br />
42 EIO0000000364 04/2012
IsFirstMastCycle: Indicates if Cycle is the First MAST Cycle<br />
Function Description<br />
This function returns TRUE during the 1st MAST cycle after a start.<br />
Graphical Representation<br />
<strong>M238</strong> System Functions<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
Example<br />
Output Type Comment<br />
IsFirstMastCycle BOOL TRUE during the first MAST task cycle after<br />
a start.<br />
This example describes the three <strong>functions</strong> IsFirstMastCycle, IsFirstMast-<br />
ColdCycle and IsFirstMastWarmCycle used together.<br />
This example must be used in MAST task otherwise might be run several time or<br />
never (an additional task might be called several times or not called during 1 MAST<br />
task cycle):<br />
VAR<br />
MyIsFirstMastCycle : BOOL;<br />
MyIsFirstMastWarmCycle : BOOL;<br />
MyIsFirstMastColdCycle : BOOL;<br />
END_VAR<br />
MyIsFirstMastWarmCycle := IsFirstMastWarmCycle();<br />
MyIsFirstMastColdCycle := IsFirstMastColdCycle();<br />
MyIsFirstMastCycle := IsFirstMastCycle();<br />
IF (MyIsFirstMastWarmCycle) THEN<br />
(*This is the first Mast Cycle after a Warm Start: all<br />
variables are set to their initialization values except the<br />
Retains variables*)<br />
EIO0000000364 04/2012 43
<strong>M238</strong> System Functions<br />
(*=> initialize the needed variables in order your application<br />
to run as expected in this case*)<br />
END_IF;<br />
IF (MyIsFirstMastColdCycle) THEN<br />
(*This is the first Mast Cycle after a Cold Start: all<br />
variables are set to their initialization values including the<br />
Retains Variables*)<br />
(*=> initialize the needed variables in order your application<br />
to run as expected in this case*)<br />
END_IF;<br />
IF (MyIsFirstMastCycle) THEN<br />
(*This is the first Mast Cycle after a Start, i.e. after a Warm<br />
or Cold Start as well as STOP/RUN commands*)<br />
(*=> initialize the needed variables in order your application<br />
to run as expected in this case*)<br />
END_IF;<br />
44 EIO0000000364 04/2012
<strong>M238</strong> System Functions<br />
IsFirstMastWarmCycle: Indicates if Cycle is the First MAST Warm Start Cycle<br />
Function Description<br />
This function returns TRUE during the 1st MAST cycle after a warm start.<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Example<br />
Output Type Comment<br />
IsFirstMastWarmCycle BOOL TRUE during the first MAST task cycle after<br />
a warm start.<br />
Refer to the function IsFirstMastCycle (see page 43).<br />
EIO0000000364 04/2012 45
<strong>M238</strong> System Functions<br />
2.2 <strong>M238</strong> Write Functions<br />
Overview<br />
This section describes the write <strong>functions</strong> included in the <strong>M238</strong> PLCSystem library.<br />
In many cases, similar information returned by these <strong>functions</strong> can also be obtained<br />
through System Variables (see page 11). System Variables are common across the<br />
control platforms, and therefore it is recommended to use them where possible for<br />
the portability of your applications. The information contained in the System<br />
Variables is often similar, though not always exactly the same as that returned by<br />
the <strong>functions</strong>. If you are replacing these <strong>functions</strong> in your program to favor the use<br />
of System Variables, be sure to understand the differences in the information<br />
offered.<br />
The following function descriptions indicate when a System Variable is available for<br />
similar information.<br />
What’s in this Section?<br />
This section contains the following topics:<br />
Topic Page<br />
InhibitBatLowLed: Disables or Re-enables the Batt LED 47<br />
ResetEventsNumber: Resets Events Number 48<br />
SetRTCDrift: Adjust the Real Time Clock Each Week 49<br />
46 EIO0000000364 04/2012
InhibitBatLowLed: Disables or Re-enables the Batt LED<br />
<strong>M238</strong> System Functions<br />
Function Description<br />
This function disables or re-enables the display of the low battery LED indicator<br />
(Batt).<br />
It may be used when the controller is used without external battery, to avoid having<br />
a persistent error signal. The display of the low battery LED indicator (Batt) is<br />
automatically restored after a Reset to Origin command or a download from the<br />
programming panel to the controller.<br />
NOTE: For more information about the external battery, refer to the <strong>M238</strong> Hardware<br />
Guide (see <strong>M238</strong> Logic Controller, Hardware Guide).<br />
NOTE: For more information about the LED indicator, refer to the <strong>M238</strong> Hardware<br />
Guide (see <strong>M238</strong> Logic Controller, Hardware Guide)<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the input parameter:<br />
Input Type Comment<br />
Inhibit BOOL TRUE = Disables the Display of the Batt LED.<br />
FALSE = Re-enables the display of the Batt LED.<br />
The following table describes the output parameter:<br />
Output Type Comment<br />
InhibitBatLowLed WORD 00 hex = operation successful<br />
else = operation unsuccessful<br />
EIO0000000364 04/2012 47
<strong>M238</strong> System Functions<br />
ResetEventsNumber: Resets Events Number<br />
Function Description<br />
This function resets the number of events that have occurred since the last cold<br />
start, including those detected on inputs and HSC threshold compare events.<br />
NOTE: The number of events detected on inputs or HSC threshold detection is<br />
returned by the function GetEventsNumber (see page 27).<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variable Description<br />
The following table describes the output variable:<br />
Output Type Comment<br />
ResetEventsNumber BOOL TRUE if the counter has been reset to 0 with<br />
success.<br />
48 EIO0000000364 04/2012
SetRTCDrift: Adjust the Real Time Clock Each Week<br />
<strong>M238</strong> System Functions<br />
Function Description<br />
This function adds or subtracts to the Real Time Clock a specified amount of<br />
seconds, each week, at the specified day of the week and time (hour:minute).<br />
NOTE: The SetRTCDrift function must be called at least once to update the<br />
parameters.<br />
Graphical Representation<br />
IL and ST Representation<br />
To see the general representation in IL or ST language, refer to the chapter Function<br />
and Function Block Representation (see page 71).<br />
I/O Variables Description<br />
The following table describes the input parameters:<br />
Inputs Type Comment<br />
RTCDrift SINT(-59..59) Correction in seconds (-59 ... +59)<br />
Day DAY_OF_WEEK<br />
(see page 66)<br />
Day of the week the day will be executed.<br />
Hour HOUR (see page 67) Hour of change.<br />
Minute MINUTE (see page 68) Minute of change.<br />
NOTE: If RTCDrift > 0, the execution of the change takes place at Hour:Minute:00<br />
seconds.<br />
If RTCDrift < 0, the execution of the change takes place at Hour:Minute:59 seconds.<br />
NOTE: If the values entered for RTCDrift, Day, Hour, Minute exceed the limit<br />
values, the controller Firmware will set all values to their maximum values.<br />
EIO0000000364 04/2012 49
<strong>M238</strong> System Functions<br />
Example<br />
The following table describes the output variable:<br />
Output Type Comment<br />
SetRTCDrift WORD Returns 00 hex if command is okay<br />
otherwise returns the ID code of the<br />
detected error.<br />
In this example, the function is called only once during the first MAST task cycle, 20<br />
seconds is added to the RTC every Tuesday at 5:45:00 a.m.:<br />
VAR<br />
MyRTCDrift : SINT (-59..59) := 0;<br />
MyDay : DAY_OF_WEEK;<br />
MyHour : HOUR;<br />
MyMinute : MINUTE;<br />
END_VAR<br />
IF IsFirstMastCycle() THEN<br />
MyRTCDrift := 20;<br />
MyDay := TUESDAY;<br />
MyHour := 5;<br />
MyMinute := 45;<br />
SetRTCDrift(MyRTCDrift, MyDay, MyHour, MyMinute);<br />
END_IF<br />
50 EIO0000000364 04/2012
Overview<br />
Modicon <strong>M238</strong> Logic Controller<br />
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
EIO0000000364 04/2012<br />
<strong>M238</strong> PLCSystem <strong>Library</strong> Data<br />
Types<br />
EIO0000000364 04/2012 51<br />
3<br />
This chapter describes the DataTypes of the <strong>M238</strong> PLCSystem <strong>Library</strong>.<br />
Two kinds of Data Types are available:<br />
System Variable Data types are used by the System Variables (see page 9) of<br />
the <strong>M238</strong> PLCSystem <strong>Library</strong> (PLC_R, PLC_W,...).<br />
System Function Data Types are used by the read/write System Functions<br />
(see page 23) of the <strong>M238</strong> PLCSystem <strong>Library</strong>.<br />
What’s in this Chapter?<br />
This chapter contains the following sections:<br />
Section Topic Page<br />
3.1 PLC_R/W System Variables Data Types 52<br />
3.2 System Functions Data Types 59
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
3.1 PLC_R/W System Variables Data Types<br />
Overview<br />
This section lists and describes the System Variables Data Types included in the<br />
PLC_R and PLC_W structures.<br />
What’s in this Section?<br />
This section contains the following topics:<br />
Topic Page<br />
PLC_R_STATUS: Controller Status Codes 53<br />
PLC_R_APPLICATION_ERROR: Detected Application Error Status Codes 54<br />
PLC_R_BOOT_PROJECT_STATUS: Boot Project Status Codes 55<br />
PLC_R_IO_STATUS: I/O Status Codes 56<br />
PLC_R_STOP_CAUSE: from RUN State to Other State Transition Cause<br />
Codes<br />
57<br />
PLC_W_COMMAND: Control Command Codes 58<br />
52 EIO0000000364 04/2012
PLC_R_STATUS: Controller Status Codes<br />
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
Enumerated Type Description<br />
The PLC_R_STATUS enumeration data type contains the following values:<br />
Enumerator Value Comment<br />
PLC_R_EMPTY 00 hex Controller is not programmed.<br />
PLC_R_STOPPED 01 hex Controller is stopped.<br />
PLC_R_RUNNING 02 hex Controller is running.<br />
PLC_R_HALT 04 hex Controller is in a HALT state. (see the Controller<br />
State Diagram in your controller Programming<br />
Guide).<br />
PLC_R_BREAKPOINT 08 hex Controller has paused at breakpoint.<br />
EIO0000000364 04/2012 53
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
PLC_R_APPLICATION_ERROR: Detected Application Error Status Codes<br />
Enumerated Type Description<br />
The PLC_R_APPLICATION_ERROR enumeration data type contains the following<br />
values:<br />
Enumerator Value Comment<br />
PLC_R_APP_ERR_UNKNOWN FFFF hex Unknown error.<br />
PLC_R_APP_ERR_NOEXCEPTION 0000 hex No detected error.<br />
PLC_R_APP_ERR_WATCHDOG 0010 hex Application watchdog of task expired.<br />
PLC_R_APP_ERR_HARDWAREWATCHDOG 0011 hex Hardware watchdog expired.<br />
PLC_R_APP_ERR_IO_CONFIG_ERROR 0012 hex Incorrect I/O configuration parameters detected.<br />
PLC_R_APP_ERR_UNRESOLVED_EXTREFS 0018 hex Unknown <strong>functions</strong> detected.<br />
PLC_R_APP_ERR_IEC_TASK_CONFIG_ERROR 0025 hex Incorrect Task configuration parameters detected.<br />
PLC_R_APP_ERR_ILLEGAL_INSTRUCTION 0050 hex Unknown instruction detected.<br />
PLC_R_APP_ERR_ACCESS_VIOLATION 0051 hex Access to reserved memory area.<br />
PLC_R_APP_ERR_DIVIDE_BY_ZERO 0102 hex Integer division by zero detected.<br />
PLC_R_APP_ERR_PROCESSORLOAD_WATCHDOG 0105 hex Processor overloaded by Application Tasks.<br />
PLC_R_APP_ERR_DIVIDE_REAL_BY_ZERO 0152 hex Real division by zero detected.<br />
54 EIO0000000364 04/2012
PLC_R_BOOT_PROJECT_STATUS: Boot Project Status Codes<br />
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
Enumerated Type Description<br />
The PLC_R_BOOT_PROJECT_STATUS enumeration data type contains the following<br />
values:<br />
Enumerator Value Comment<br />
PLC_R_NO_BOOT_PROJECT 0000 hex not used<br />
PLC_R_BOOT_PROJECT_CREATION_IN_PROGRESS 0001 hex Boot project is being created.<br />
PLC_R_DIFFERENT_BOOT_PROJECT 0002 hex Boot project in Flash is different from the<br />
project loaded in RAM or does not exist.<br />
PLC_R_VALID_BOOT_PROJECT FFFF hex Boot project in Flash is the same as the<br />
project loaded in RAM.<br />
EIO0000000364 04/2012 55
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
PLC_R_IO_STATUS: I/O Status Codes<br />
Enumerated Type Description<br />
The PLC_R_IO_STATUS enumeration data type contains the following values:<br />
Enumerator Value Comment<br />
PLC_R_IO_OK FFFF hex Inputs / Outputs are operational.<br />
PLC_R_IO_NO_INIT 0001 hex Inputs / Outputs are not initialized.<br />
PLC_R_IO_CONF_FAULT 0002 hex Incorrect I/O configuration parameters<br />
detected.<br />
PLC_R_IO_SHORTCUT_FAULT 0003 hex Inputs / Outputs short-circuit detected.<br />
RESERVED 0004 hex not used<br />
PLC_R_IO_COM_LOST 0005 hex Communication error detected with<br />
Coprocessor.<br />
The embedded I/O are not updated.<br />
56 EIO0000000364 04/2012
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
PLC_R_STOP_CAUSE: from RUN State to Other State Transition Cause Codes<br />
Enumerated Type Description<br />
The PLC_R_STOP_CAUSE enumeration data type contains the following values:<br />
Enumerator Value Comment<br />
PLC_R_STOP_REASON_UNKNOWN 00 hex Initial value or stop cause is undefined.<br />
PLC_R_STOP_REASON_HW_WATCHDOG 01 hex Stopped after hardware watchdog.<br />
PLC_R_STOP_REASON_RESET 02 hex Stopped after reset.<br />
PLC_R_STOP_REASON_EXCEPTION 03 hex Stopped after exception.<br />
PLC_R_STOP_REASON_USER 04 hex Stopped after a user request.<br />
PLC_R_STOP_REASON_IECPROGRAM 05 hex Stopped after a program command request (e.g.:<br />
control command with parameter<br />
PLC_W.q_wPLCControl:=PLC_W_COMMAND.PLC_<br />
W_STOP;).<br />
PLC_R_STOP_REASON_DELETE 06 hex Stopped after a remove application command.<br />
PLC_R_STOP_REASON_DEBUGGING 07 hex Stopped after entering debug mode.<br />
PLC_R_STOP_FROM_NETWORK_REQUEST 0A hex Stopped after a request from the network (USB key or<br />
PLC_W command).<br />
PLC_R_STOP_FROM_INPUT 0B hex Stop required by a controller input.<br />
PLC_R_STOP_REASON_RETAIN_MISMATCH 0C hex Stopped after an unsuccessful check context test<br />
during rebooting.<br />
PLC_R_STOP_REASON_BOOT_APPLI_MISMATCH 0D hex Stopped after an unsuccessful compare between the<br />
boot application and the application that was in the<br />
memory prior to rebooting.<br />
PLC_R_STOP_REASON_POWERFAIL 0E hex Stopped after a power interruption.<br />
EIO0000000364 04/2012 57
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
PLC_W_COMMAND: Control Command Codes<br />
Enumerated Type Description<br />
The PLC_W_COMMAND enumeration data type contains the following values:<br />
Enumerator Value Comment<br />
PLC_W_STOP 01 hex Command to stop the controller.<br />
PLC_W_RUN 02 hex Command to run the controller.<br />
PLC_W_RESET_COLD 04 hex Command to initiate a Controller cold reset.<br />
PLC_W_RESET_WARM 08 hex Command to initiate a Controller warm reset.<br />
58 EIO0000000364 04/2012
3.2 System Functions Data Types<br />
Overview<br />
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
This section describes the different System Function Data Types of the <strong>M238</strong><br />
PLCSystem library.<br />
What’s in this Section?<br />
This section contains the following topics:<br />
Topic Page<br />
FIRMWARE_VERSION: GetFirmwareVersion Function Output Type 60<br />
BOOT_PROJECT_STATUS: GetBootProjectStatus Function Output<br />
Codes<br />
61<br />
STOP_WHY: GetLastStopCause Function Output Codes 62<br />
LOCAL_IO_GET_STATUS: GetLocalIOStatus Function Parameter Codes 63<br />
LOCAL_IO_GEN_STATUS: GetLocalIOStatus Function Output Codes 64<br />
RIGHTBUS_GET_STATUS: GetRightBusStatus Function Parameter<br />
Codes<br />
65<br />
DAY_OF_WEEK: SetRTCDrift Function Day Parameter Codes 66<br />
HOUR: SetRTCDrift Function Hour Parameter Type 67<br />
MINUTE: SetRTCDrift Function Minute Parameter Type 68<br />
EIO0000000364 04/2012 59
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
FIRMWARE_VERSION: GetFirmwareVersion Function Output Type<br />
Structure Description<br />
The data structure contains the following variables:<br />
Variable Type Description<br />
FwVersion DWORD Contains the firmware version (e.g.: 2.0.20.4= 02001404 hex).<br />
BootVersion WORD Contains the boot version (e.g.: 1.4= 0104 hex).<br />
AsicVersion WORD Contains the Coprocessor version.<br />
60 EIO0000000364 04/2012
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
BOOT_PROJECT_STATUS: GetBootProjectStatus Function Output Codes<br />
Enumerated Type Description<br />
The enumeration data type contains the following values:<br />
Enumerator Value Description<br />
VALID_BOOT_PROJECT 0000 hex Boot project in Flash is the same as the<br />
project loaded in RAM.<br />
INVALID_BOOT_PROJECT 0001 hex Boot project in Flash is different from the<br />
project loaded in RAM or does not exist.<br />
CREATE_BOOT_PROJECT_IN_<br />
PROGRESS<br />
0002 hex Boot project is being created.<br />
EIO0000000364 04/2012 61
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
STOP_WHY: GetLastStopCause Function Output Codes<br />
Enumerated Type Description<br />
The enumeration data type contains the status with the following values:<br />
Enumerator Value Description<br />
STOP_FROM_POWER_FAIL 00 hex Stop after a power outage.<br />
STOP_FROM_INTERNAL_ERROR 01 hex Stop due to internal error detection.<br />
STOP_FROM_APP_WATCHDOG 02 hex Stop after a Task or a System Watchdog<br />
(see Modicon <strong>M238</strong> Logic Controller,<br />
Programming Guide).<br />
STOP_FROM_STOP_REQUEST 03 hex Stop after a user request.<br />
STOP_FROM_POWER_FAIL_BAD_RETAINS 04 hex The Retain Variables have been lost after a<br />
power outage.<br />
This may happen if the internal battery has<br />
no charge and external battery has no<br />
charge or is not present.<br />
STOP_FROM_POWER_FAIL_INVALID_BOOT_PROJECT 05 hex The Boot Application project not valid at<br />
power off because of an online change<br />
without updating the boot application.<br />
62 EIO0000000364 04/2012
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
LOCAL_IO_GET_STATUS: GetLocalIOStatus Function Parameter Codes<br />
Enumerated Type Description<br />
The LOCAL_IO_GET_STATUS enumeration data type contains the following value:<br />
Enumerator Value Description<br />
LOCAL_IO_GET_GEN_STATUS 00 hex Value used to request the general status of<br />
embedded I/Os<br />
EIO0000000364 04/2012 63
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
LOCAL_IO_GEN_STATUS: GetLocalIOStatus Function Output Codes<br />
Enumerated Type Description<br />
The LOCAL_IO_GEN_STATUS enumeration data type contains the status of local<br />
I/Os with the following values:<br />
Enumerator Value Description<br />
LOCAL_IO_OK 00 hex Inputs / Outputs are operational.<br />
LOCAL_IO_NO_INIT 01 hex Wrong I/O configuration parameters<br />
detected.<br />
LOCAL_IO_COM_LOST 02 hex Communication error with Coprocessor.<br />
The embedded I/O are not updated.<br />
LOCAL_IO_CONF_FAULT 03 hex Wrong I/O configuration parameters<br />
detected.<br />
64 EIO0000000364 04/2012
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
RIGHTBUS_GET_STATUS: GetRightBusStatus Function Parameter Codes<br />
Enumerated Type Description<br />
The enumeration data type contains the following values:<br />
Enumerator Value Description<br />
RIGHTBUS_GET_GEN_STATUS 00 hex Parameter for expansion bus<br />
configuration diagnostic<br />
RIGHTBUS_GET_STATUS1 01 hex Parameter for expansion bus Module 1<br />
diagnostic<br />
RIGHTBUS_GET_STATUS2 02 hex Parameter for expansion bus Module 2<br />
diagnostic<br />
RIGHTBUS_GET_STATUS3 03 hex Parameter for expansion bus Module 3<br />
diagnostic<br />
RIGHTBUS_GET_STATUS4 04 hex Parameter for expansion bus Module 4<br />
diagnostic<br />
RIGHTBUS_GET_STATUS5 05 hex Parameter for expansion bus Module 5<br />
diagnostic<br />
RIGHTBUS_GET_STATUS6 06 hex Parameter for expansion bus Module 6<br />
diagnostic<br />
RIGHTBUS_GET_STATUS7 07 hex Parameter for expansion bus Module 7<br />
diagnostic<br />
NOTE: For more information on using the RIGHTBUS_GET_STATUS parameter<br />
type, refer to the function GetRightBusStatus (see page 36).<br />
EIO0000000364 04/2012 65
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
DAY_OF_WEEK: SetRTCDrift Function Day Parameter Codes<br />
Enumerated Type Description<br />
The enumeration data type contains the following values:<br />
Enumerator Value Comment<br />
MONDAY 01 hex Set the day of week to Monday<br />
TUESDAY 02 hex Set the day of week to Tuesday<br />
WEDNESDAY 03 hex Set the day of week to Wednesday<br />
THURSDAY 04 hex Set the day of week to Thursday<br />
FRIDAY 05 hex Set the day of week to Friday<br />
SATURDAY 06 hex Set the day of week to Saturday<br />
SUNDAY 07 hex Set the day of week to Sunday<br />
66 EIO0000000364 04/2012
HOUR: SetRTCDrift Function Hour Parameter Type<br />
Data Type Description<br />
The data type contains the hour values from 0 to 23.<br />
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
EIO0000000364 04/2012 67
<strong>M238</strong> PLC System <strong>Library</strong> Data Types<br />
MINUTE: SetRTCDrift Function Minute Parameter Type<br />
Data Type Description<br />
The data type contains the minute values from 0 to 59.<br />
68 EIO0000000364 04/2012
Modicon <strong>M238</strong> Logic Controller<br />
EIO0000000364 04/2012<br />
Appendices<br />
EIO0000000364 04/2012 69
70 EIO0000000364 04/2012
Overview<br />
Modicon <strong>M238</strong> Logic Controller<br />
Function and Function Block Representation<br />
EIO0000000364 04/2012<br />
Function and Function Block<br />
Representation<br />
Each function can be represented in the following languages:<br />
IL: Instruction List<br />
ST: Structured Text<br />
LD: Ladder Diagram<br />
FBD: Function Block Diagram<br />
CFC: Continuous Function Chart<br />
A<br />
This chapter provides <strong>functions</strong> and function blocks representation examples and<br />
explains how to use them for IL and ST languages.<br />
What’s in this Chapter?<br />
This chapter contains the following topics:<br />
Topic Page<br />
Differences Between a Function and a Function Block 72<br />
How to Use a Function or a Function Block in IL Language 73<br />
How to Use a Function or a Function Block in ST Language 77<br />
EIO0000000364 04/2012 71
Function and Function Block Representation<br />
Differences Between a Function and a Function Block<br />
Function<br />
Function Block<br />
A function:<br />
is a POU (Program Organization Unit) that returns one immediate result<br />
is directly called with its name (not through an Instance)<br />
has no persistent state from one call to the other<br />
can be used as an operand in other expressions<br />
Examples: boolean operators (AND), calculations, conversion (BYTE_TO_INT)<br />
A function block:<br />
is a POU (Program Organization Unit) that returns one or more outputs<br />
is always called through an Instance (function block copy with dedicated name<br />
and variables)<br />
each Instance has a persistent state (outputs and internal variables) from one<br />
call to the other<br />
Examples: timers, counters<br />
In the example below, Timer_ON is an instance of the Function Block TON:<br />
72 EIO0000000364 04/2012
How to Use a Function or a Function Block in IL Language<br />
Function and Function Block Representation<br />
General Information<br />
This part explains how to implement a Function and a Function Block in IL language.<br />
Functions IsFirstMastCycle and SetRTCDrift and Function Block TON are<br />
used as examples to show implementations.<br />
Using a Function in IL Language<br />
The following procedure describes how to insert a function in IL language:<br />
Step Action<br />
1 Open or create a new POU in Instruction List language.<br />
NOTE: The procedure to create a POU is not detailed here. For more information, refer to the SoMachine<br />
global help.<br />
2 Create the variables that the function requires.<br />
3 If the function has 1 or more inputs, start loading the first input using LD instruction.<br />
4 Insert a new line below and:<br />
type the name of the function in the operator column (left field), or<br />
use the Input Assistant to select the function (select Insert Box in context menu).<br />
5 If the function has more than 1 input and when Input Assistant is used, the necessary number of lines is<br />
automatically created with ??? in the fields on the right. Replace the ??? with the appropriate value or<br />
variable that corresponds to the order of inputs.<br />
6 Insert a new line to store the result of the function into the appropriate variable: type ST instruction in the<br />
operator column (left field) and the variable name in the field on the right.<br />
To illustrate the procedure, consider the Functions IsFirstMastCycle (without<br />
input parameter) and SetRTCDrift (with input parameters) graphically presented<br />
below:<br />
Function Graphical Representation<br />
without input parameter:<br />
IsFirstMastCycle<br />
with input parameters:<br />
SetRTCDrift<br />
EIO0000000364 04/2012 73
Function and Function Block Representation<br />
In IL language, the function name is used directly in the Operator Column:<br />
Function Representation in SoMachine POU IL Editor<br />
IL example of a function<br />
without input parameter:<br />
IsFirstMastCycle<br />
IL example of a function<br />
with input parameters:<br />
SetRTCDrift<br />
74 EIO0000000364 04/2012
Function and Function Block Representation<br />
Using a Function Block in IL language<br />
The following procedure describes how to insert a function block in IL language:<br />
Step Action<br />
1 Open or create a new POU in Instruction List language.<br />
NOTE: The procedure to create a POU is not detailed here. For more information,<br />
refer to the SoMachine global help.<br />
2 Create the variables that the function block requires, including the instance name.<br />
3 Function Blocks are called using a CAL instruction:<br />
Use the Input Assistant to select the FB (right-click and select Insert Box in<br />
context menu).<br />
Automatically, the CAL instruction and the necessary I/O are created.<br />
Each parameter (I/O) is an instruction:<br />
Value to inputs are set by ":=".<br />
Values to outputs are set by "=>".<br />
4 In the CAL right-side field, replace ??? with the instance name.<br />
5 Replace other ??? with an appropriate variable or immediate value.<br />
To illustrate the procedure, consider this example with the TON Function Block<br />
graphically presented below:<br />
Function Block Graphical Representation<br />
TON<br />
EIO0000000364 04/2012 75
Function and Function Block Representation<br />
In IL language, the function block name is used directly in the Operator Column:<br />
Function<br />
Block<br />
TON<br />
Representation in SoMachine POU IL Editor<br />
76 EIO0000000364 04/2012
How to Use a Function or a Function Block in ST Language<br />
Function and Function Block Representation<br />
General Information<br />
This part explains how to implement a Function and a Function Block in ST<br />
language.<br />
Function SetRTCDrift and Function Block TON are used as examples to show<br />
implementations.<br />
Using a Function in ST Language<br />
The following procedure describes how to insert a function in ST language:<br />
Step Action<br />
1 Open or create a new POU in Structured Text language.<br />
NOTE: The procedure to create a POU is not detailed here. For more information,<br />
refer to the SoMachine global help.<br />
2 Create the variables that the function requires.<br />
3 Use the general syntax in the POU ST Editor for the ST language of a function. The<br />
general syntax is:<br />
FunctionResult:= FunctionName(VarInput1, VarInput2,..<br />
VarInputx);<br />
To illustrate the procedure, consider the function SetRTCDrift graphically<br />
presented below:<br />
Function Graphical Representation<br />
SetRTCDrift<br />
The ST language of this function is the following:<br />
Function Representation in SoMachine POU ST Editor<br />
SetRTCDrift PROGRAM MyProgram_ST<br />
VAR myDrift: SINT(-29..29) := 5;<br />
myDay: DAY_OF_WEEK := SUNDAY;<br />
myHour: HOUR := 12;<br />
myMinute: MINUTE;<br />
myRTCAdjust: RTCDRIFT_ERROR;<br />
END_VAR<br />
myRTCAdjust:= SetRTCDrift(myDrift, myDay, myHour, myMinute);<br />
EIO0000000364 04/2012 77
Function and Function Block Representation<br />
Using a Function Block in ST Language<br />
The following procedure describes how to insert a function block in ST language:<br />
Step Action<br />
1 Open or create a new POU in Structured Text language.<br />
NOTE: The procedure to create a POU is not detailed here. For more information,<br />
refer to the SoMachine global help.<br />
2 Create the input and output variables and the instance required for the function<br />
block:<br />
Input variables are the input parameters required by the function block<br />
Output variables receive the value returned by the function block<br />
3 Use the general syntax in the POU ST Editor for the ST language of a Function<br />
Block. The general syntax is:<br />
FunctionBlock_InstanceName(Input1:=VarInput1,<br />
Input2:=VarInput2,... Ouput1=>VarOutput1,<br />
Ouput2=>VarOutput2,...);<br />
To illustrate the procedure, consider this example with the TON function block<br />
graphically presented below:<br />
Function Block Graphical Representation<br />
TON<br />
78 EIO0000000364 04/2012
Function and Function Block Representation<br />
The following table shows examples of a function block call in ST language:<br />
Function Block Representation in SoMachine POU ST Editor<br />
TON<br />
EIO0000000364 04/2012 79
Function and Function Block Representation<br />
80 EIO0000000364 04/2012
1-phase counter<br />
2-phase counter<br />
BOOL<br />
Boot application<br />
Modicon <strong>M238</strong> Logic Controller<br />
Glossary<br />
EIO0000000364 04/2012<br />
Glossary<br />
0-9<br />
A 1-phase counter uses 1 hardware input as counter input. It usually counts up or<br />
counts down when there is pulse signal in the input.<br />
A 2-phase counter uses the phase difference between 2 input counter signals to<br />
count up or count down.<br />
B<br />
A Boolean type is the basic data type in computing. A BOOL variable can have one<br />
of these values: 0 (FALSE), 1 (TRUE). A bit that is extracted from a word is of type<br />
BOOL, for example: %MW10.4 is a fifth bit a memory word number 10.<br />
Files that contain machine dependent parameters:<br />
machine name<br />
device name or IP address<br />
Modbus Serial Line address<br />
Routing table<br />
EIO0000000364 04/2012 81
Glossary<br />
BOOTP<br />
BYTE<br />
CAN<br />
CANopen<br />
CFC<br />
controller<br />
The Bootstrap Protocol is a UDP network protocol that can be used by a network<br />
client to automatically obtain an IP address (and possibly other data) from a server.<br />
The client identifies itself to the server using the client’s MAC address. The server—<br />
which maintains a pre-configured table of client device MAC addresses and<br />
associated IP addresses—sends the client its pre-configured IP address. BOOTP<br />
was originally used as a method that enabled diskless hosts to be remotely booted<br />
over a network. The BOOTP process assigns an infinite lease of an IP address. The<br />
BOOTP service utilizes UDP ports 67 and 68.<br />
When 8 bits are grouped together, they are called a BYTE. You can enter a BYTE<br />
either in binary mode or in base 8. The BYTE type is encoded in an 8-bit format that<br />
ranges from 16#00 to 16#FF (in hexadecimal format).<br />
C<br />
The Controller Area Network protocol (ISO 11898) for serial bus networks is<br />
designed for the interconnection of smart devices (from multiple manufacturers) in<br />
smart <strong>system</strong>s for real-time industrial applications. CAN multi-master <strong>system</strong>s<br />
ensure high data integrity through the implementation of broadcast messaging and<br />
advanced diagnostic mechanisms. Originally developed for use in automobiles,<br />
CAN is now used in a variety of industrial automation control environments.<br />
CANopen is an open industry-standard communication protocol and device profile<br />
specification.<br />
The Continuous Function Chart (an extension of the IEC61131-3 standard) is a<br />
graphical programming language that works like a flowchart. By adding simple<br />
logicals blocks (AND, OR, etc.), each function or function block in the program is<br />
represented in this graphical format. For each block, the inputs are on the left and<br />
the outputs on the right. Block outputs can be linked to inputs of other blocks in order<br />
to create complex expressions.<br />
A controller (or “programmable logic controller,” or “programmable controller”) is<br />
used to automate industrial processes.<br />
82 EIO0000000364 04/2012
expansion bus<br />
E<br />
Glossary<br />
The expansion bus is an electronic communication bus between expansion modules<br />
and a CPU.<br />
expansion I/O module<br />
An expansion input or output module is either a digital or analog module that adds<br />
additional I/O to the base controller.<br />
FBD<br />
firmware<br />
Function Block<br />
F<br />
A Function Block Diagram is a graphically oriented programming language,<br />
compliant with IEC 61131-3. It works with a list of networks whereby each network<br />
contains a graphical structure of boxes and connection lines which represents either<br />
a logical or arithmetic expression, the call of a function block, a jump, or a return<br />
instruction.<br />
The firmware represents the operating <strong>system</strong> on a controller.<br />
(FB) A Program unit of inputs and variables organized to calculate values for outputs<br />
based on a defined function such as a timer or a counter.<br />
Function Block Diagram language<br />
(FBD) A function block diagram describes a function between input variables and<br />
output variables. A function is described as a set of elementary blocks. Input and<br />
output variables are connected to blocks by connection lines. An output of a block<br />
may also be connected to an input of another block.<br />
GVL<br />
G<br />
The Global Variable List manages global variables that are available in every<br />
application POU.<br />
EIO0000000364 04/2012 83
Glossary<br />
HMI<br />
HSC<br />
IEC 61131-3<br />
IL<br />
LD<br />
located variable<br />
H<br />
A human-machine interface is an operator interface (usually graphical) for industrial<br />
equipment.<br />
high-speed counter<br />
I<br />
The IEC 61131-3 is an international electrotechnical commission standard for<br />
industrial automation equipment (like controllers). IEC 61131-3 deals with controller<br />
programming languages and defines 2 graphical and 2 textual programming<br />
language standards:<br />
graphical: ladder diagram, function block diagram<br />
textual: structured text, instruction list<br />
A program written in the Instruction List language is composed of a series of<br />
instructions executed sequentially by the controller. Each instruction includes a line<br />
number, an instruction code, and an operand. (IL is IEC 61131-3 compliant.)<br />
L<br />
A program in the Ladder Diagram language includes a graphical representation of<br />
instructions of a controller program with symbols for contacts, coils, and blocks in a<br />
series of rungs executed sequentially by a controller. IEC 61131-3 compliant.<br />
A located variable has an address. (See unlocated variable.)<br />
84 EIO0000000364 04/2012
Modbus<br />
NEMA<br />
PLC<br />
PLI<br />
POU<br />
PTO<br />
M<br />
The Modbus communication protocol allows communications between many<br />
devices connected to the same network.<br />
N<br />
Glossary<br />
The National Electrical Manufacturers Association publishes standards for the<br />
performance of various classes of electrical enclosures. The NEMA standards cover<br />
corrosion resistance, ability to protect from rain and submersion, etc. For IEC<br />
member countries, the IEC 60529 standard classifies the ingress protection rating<br />
for enclosures.<br />
P<br />
The Programmable Logic Controller is the “brain” of an industrial manufacturing<br />
process. It automates a process, used instead of relay control <strong>system</strong>s. PLCs are<br />
computers suited to survive the harsh conditions of the industrial environment.<br />
Pulse Latch Input<br />
A Program Organization Unit includes a variable declaration in source code and the<br />
corresponding instruction set. POUs facilitate the modular reuse of software<br />
programs, <strong>functions</strong>, and function blocks. Once declared, POUs are available to one<br />
another. SoMachine programming requires the utilization of POUs.<br />
Pulse Train Outputs are used to control for instance stepper motors in open loop.<br />
EIO0000000364 04/2012 85
Glossary<br />
PWM<br />
reflex output<br />
retained data<br />
RTC<br />
SFC<br />
Structured Text<br />
<strong>system</strong> variable<br />
Pulse Width Modulation is used for regulation processes (e.g. actuators for<br />
temperature control) where a pulse signal is modulated in its length. For these kind<br />
of signals, transistor outputs are used.<br />
R<br />
In a counting mode, the high speed counter’s current value is measured against its<br />
configured thresholds to determine the state of these dedicated outputs.<br />
A retained data value is used in the next power-on or warm start. The value is<br />
retained even after an uncontrolled shutdown of the controller or a normal switch-off<br />
of the controller.<br />
The real-time clock option keeps the time for a limited amount of time even when the<br />
controller is not powered.<br />
S<br />
A program written in the Sequential Function Chart language can be used for<br />
processes that can be split into steps. SFC is composed of steps with associated<br />
actions, transitions with associated logic condition, and directed links between steps<br />
and transitions. (The SFC standard is defined in IEC 848. It is IEC 61131-3<br />
compliant.)<br />
A program written in the structured text (ST) language includes complex statements<br />
and nested instructions (such as iteration loops, conditional executions, or<br />
<strong>functions</strong>). ST is compliant with IEC 61131-3.<br />
A <strong>system</strong> variable structure provides controller data and diagnostic information and<br />
allows sending commands to the controller.<br />
86 EIO0000000364 04/2012
U<br />
unlocated variable<br />
An unlocated variable does not have an address. (See located variable.)<br />
Glossary<br />
EIO0000000364 04/2012 87
Glossary<br />
88 EIO0000000364 04/2012
Modicon <strong>M238</strong> Logic Controller<br />
Index<br />
EIO0000000364 04/2012<br />
Index<br />
B<br />
BOOT_PROJECT_STATUS<br />
Data Types, 61<br />
D<br />
Data Types<br />
BOOT_PROJECT_STATUS, 61<br />
DAY_OF_WEEK, 66<br />
FIRMWARE_VERSION, 60<br />
HOUR, 67<br />
LOCAL_IO_GEN_STATUS, 64<br />
LOCAL_IO_GET_STATUS, 63<br />
MINUTE, 68<br />
PLC_R_APPLICATION_ERROR, 54<br />
PLC_R_BOOT_PROJECT_STATUS, 55<br />
PLC_R_IO_STATUS, 56<br />
PLC_R_STATUS, 53<br />
PLC_R_STOP_CAUSE, 57<br />
PLC_W_COMMAND, 58<br />
RIGHTBUS_GET_STATUS, 65<br />
STOP_WHY, 62<br />
DAY_OF_WEEK<br />
Data Types, 66<br />
F<br />
FIRMWARE_VERSION<br />
Data Types, 60<br />
Functions<br />
Differences Between a Function and a<br />
EIO0000000364 04/2012 89<br />
CBA<br />
Function Block, 72<br />
GetBatteryLevel, 25<br />
GetBootProjectStatus, 26<br />
GetEventsNumber, 27<br />
GetFirmwareVersion, 28<br />
GetHardwareVersion, 30<br />
GetLastStopCause, 31<br />
GetLastStopTime, 32<br />
GetLocalIOStatus, 33<br />
GetPlcFault, 35<br />
GetRightBusStatus, 36<br />
GetSerialNumber, 40<br />
GetShortCutStatus, 41<br />
How to Use a Function or a Function<br />
Block in IL Language, 73<br />
How to Use a Function or a Function<br />
Block in ST Language, 77<br />
InhibitBatLowLed, 47<br />
IsFirstMastColdCycle, 42<br />
IsFirstMastCycle, 43<br />
IsFirstMastWarmCycle, 45<br />
ResetEventsNumber, 48<br />
SetRTCDrift, 49<br />
G<br />
GetBatteryLevel<br />
Functions, 25<br />
GetBootProjectStatus<br />
Functions, 26<br />
GetEventsNumber<br />
Functions, 27
Index<br />
GetFirmwareVersion<br />
Functions, 28<br />
GetHardwareVersion<br />
Functions, 30<br />
GetLastStopCause<br />
Functions, 31<br />
GetLastStopTime<br />
Functions, 32<br />
GetLocalIOStatus<br />
Functions, 33<br />
GetPlcFault<br />
Functions, 35<br />
GetRightBusStatus<br />
Functions, 36<br />
GetSerialNumber<br />
Functions, 40<br />
GetShortCutStatus<br />
Functions, 41<br />
H<br />
HOUR<br />
Data Types, 67<br />
I<br />
InhibitBatLowLed<br />
Functions, 47<br />
IsFirstMastColdCycle<br />
Functions, 42<br />
IsFirstMastCycle<br />
Functions, 43<br />
IsFirstMastWarmCycle<br />
Functions, 45<br />
L<br />
LOCAL_IO_GEN_STATUS<br />
Data Types, 64<br />
LOCAL_IO_GET_STATUS<br />
Data Types, 63<br />
M<br />
MINUTE<br />
Data Types, 68<br />
P<br />
PLC_R<br />
System Variable, 16<br />
PLC_R_APPLICATION_ERROR<br />
Data Types, 54<br />
PLC_R_BOOT_PROJECT_STATUS<br />
Data Types, 55<br />
PLC_R_IO_STATUS<br />
Data Types, 56<br />
PLC_R_STATUS<br />
Data Types, 53<br />
PLC_R_STOP_CAUSE<br />
Data Types, 57<br />
PLC_W<br />
System Variable, 18<br />
PLC_W_COMMAND<br />
Data Types, 58<br />
R<br />
ResetEventsNumber<br />
Functions, 48<br />
RIGHTBUS_GET_STATUS<br />
Data Types, 65<br />
S<br />
SERIAL_R<br />
System Variable, 20<br />
SERIAL_W<br />
System Variable, 21<br />
SetRTCDrift<br />
Functions, 49<br />
STOP_WHY<br />
Data Types, 62<br />
90 EIO0000000364 04/2012
System Variable<br />
PLC_R, 16<br />
PLC_W, 18<br />
SERIAL_R, 20<br />
SERIAL_W, 21<br />
System Variables<br />
Definition, 11<br />
Using, 13<br />
Index<br />
EIO0000000364 04/2012 91
Index<br />
92 EIO0000000364 04/2012