Remote Automation Solutions Guide: Bristol ACCOL Translator User's Guide Manuals & Guides

User’s Guide
A
s
D5086 October, 2007
ACCOL Translator User’s Guide
Remote Automa tion Solution
www.EmersonProcess.com/Remote
BLANK PAGE
SECTION 2 – ODD HEADER
Table of Contents
What is the ACCOL Translator? .................................................................................................... 1
How the Translation Works – An Overview .................................................................................. 1
Does everything get translated?.............................................................................................. 1
What happens when the ACCOL Translator encounters an unsupported structure? ............. 2
Tips for Simplifying the Translation Process................................................................................. 2
Consider the Complexity of What You Are Trying to Translate ........................................... 2
Reverse Compile Your ACCOL Load Prior to Translation ................................................... 2
Rename Signals which are IEC 61131-3 Reserved Words Prior to Translation.................... 3
Numerical Values Must Begin with a Whole Number........................................................... 3
Starting the ACCOL Translator...................................................................................................... 4
Starting the Translation................................................................................................................... 4
Choosing Translation Options................................................................................................ 5
Sections of the ACCOL Source File Which are NOT Translated.................................................. 6
Translation of Data Arrays ............................................................................................................. 7
Translation of Signals................................................................................................................... 11
Signal Names........................................................................................................................ 11
Signal Definition................................................................................................................... 12
System Signals...................................................................................................................... 14
Translation of Signal Lists............................................................................................................ 16
Translation of Process I/O ............................................................................................................ 17
Translation of Tasks, Modules, and Control Statements.............................................................. 18
Tasks..................................................................................................................................... 18
Control Statements................................................................................................................ 20
Modules ................................................................................................................................ 20
Syntax of ACCOL II Modules/Structures and Corresponding ACCOL III Structure.................. 22
Application Notes on Module Translations.................................................................................. 38
List of ACCOL II Modules / Structures NOT Translated............................................................ 54
Getting Help on Correcting Errors................................................................................................ 61
SECTION 2 – EVEN HEADER
SECTION 2 – EVEN FOOTER
Using the ACCOL Translator
What is the ACCOL Translator?
The ACCOL Translator is a Windows™
-based utility which translates an ACCOL II source (*.ACC) file into a ControlWave Designer project file (*.MWT). This translation process allows re-use of existing ACCOL II logic during development of new IEC 61131 projects for the ControlWave controller.
How the Translation Works – An Overview
The ACCOL Translator parses the existing ACC file, and generates a new project file from it. ACCOL II structures are converted to equivalent structures which can be used in ControlWave Designer with ACCOL III. At the completion of the translation, the new project is automatically opened within ControlWave Designer.
Each ACCOL Task is converted to a program organization unit (POU). Each program POU
is defined in the structured text (ST) language of IEC-61131-3.
Each ACCOL signal is converted to an IEC 61131-3 variable. Logical and logical alarm
signals become variables of type BOOL, and analog and analog alarm signals become variables of type REAL or UINT (unsigned INTEGER). String signals are converted to STRING variables.
Any ACCOL II module which has a counterpart in the ControlWave Designer ACCOL III
firmware library is converted to the equivalent function block in structured text (ST).
Does everything get translated?
No. However, most ACCOL II modules are converted to IEC 61131-3 function blocks and included in the ACCOL III Firmware Library.
Often, the functionality of the untranslated ACCOL II modules, can be re-created by the user, if desired, using a combination of user-defined function blocks, and pre-defined ControlWave Designer functions, function blocks, and keywords.
1
Using the ACCOL Translator
What happens when the ACCOL Translator encounters an unsupported structure?
Any ACCOL II module or structure which is unsupported in IEC 61131-3 is converted to a comment, e.g. (* COMMENT *).
If an entire section of the ACCOL II source file cannot be converted, a WARNING message will be displayed in the output window of the ACCOL Translator.
Tips for Simplifying the Translation Process
Consider the Complexity of What You Are Trying to Translate
The ACCOL Translator is best for translating small ACCOL source files, or task-sized segments of them. Most users will obtain better results by stripping out modules that cannot be translated, and excess sections of the ACCOL source file prior to attempting the translation.
Complex files containing many unsupported modules tend to result in considerable work in the post-translation phase in order to remove large commented blocks of unusable code, as well as corrections of errors.
Reverse Compile Your ACCOL Load Prior to Translation
We recommend that after you edit the ACCOL source file in ACCOL Workbench, and you have compiled it, that you reverse compile it, prior to running the ACCOL Translator.
SECTION 2 – EVEN FOOTER
2
Using the ACCOL Translator
Rename Signals which are IEC 61131-3 Reserved Words Prior to Translation
NOTE: Some valid ACCOL II signal names may be invalid in IEC 61131-3 or may be converted to IEC 61131-3 keywords. You should rename these signals prior to translation. Particular examples of this include single character basename signals with no extension or attribute such as:
S.. R..
as well as other signal names such as:
DATE.. TIME.. CALC..
Some reserved words, such as ADD or SUB will automatically be changed by the ACCOL Translator to “ADDRWORD’ or “SUBRWORD”. When this is done, it may be necessary to modify any HMI packages that have been programmed to use the reserved words as variable names, especially if the “_USE_ACCOL_NAME” system variable has been turned on.
As of this writing, ACCOL Translator does not convert the words TRUE and FALSE. If these names are used for signals, the programmer will have to rename all usages of those names to #ON and #OFF, or to other names, as appropriate, in the ACCOL source file, prior to running the ACCOL Translator.
Numerical Values Must Begin with a Whole Number
If your code in ACCOL Workbench includes numerical values or calculator expressions that do NOT begin with a whole number to the left of the decimal point, for example,
.5
.732
etc., you must add the leading whole number, before performing the translation i.e.
0.5
0.732
or else your code will NOT be translated correctly.
3
Using the ACCOL Translator
anslatio
Starting the ACCOL Translator
Click on StartÆ Programs Æ OpenBSI Tools Æ Utility Programs Æ ACCOL Translator
Starting the Translation
Type the path and filename of the ACCOL source file (*.ACC) to be translated into the “Input File” field, or use the [Browse] button to locate and specify the file. A name for the project will
be chosen based on that name, with an extension of *.MWT. You can change the path and basename, but do not change the extension.
If desired, choose translation options by clicking on the [Options] button. (See ‘Choosing Translation Options’ later in this section.)
Finally, click on the [Translate] button to start the translation. The progress bar shows the amount of translation which is complete. Messages detailing the sections being translated will also be displayed.
ControlWave Designer will automatically be opened with the new project when the translation is complete. Click on [Exit] to close the ACCOL Translator.
Enter the path and filename of the ACCOL source file to be converted (or use the
[Browse]
button to select it.
Path and filename of the resulting ControlWave project.
Messages detailing the status of the translation are displayed here.
Progress of the translation is shown here.
SECTION 2 – EVEN FOOTER
Click here to start the tr
Click here to specify translation options.
n.
4
Using the ACCOL Translator
Choosing Translation Options
Click on the [Options] button in the Acctrans dialog box to specify translation options:
Signal Names Reserved for future use.
Remove Temp Files Causes temporary files created in the ACCOL directory during the
translation to be deleted after translation is complete. The default is to leave the temporary files.
5
Using the ACCOL Translator
Sections of the ACCOL Source File Which are NOT Translated
Several sections common to all ACCOL loads are NOT translated into IEC 61131-3. Typically, this is because the corresponding structures in IEC 61131-3 or the ControlWave controller are handled differently. The table, below, outlines the sections which are not translated.
ACCOL Section Name Reason why the section is NOT translated into IEC 61131-3
structured text
*TARGET The target controller, by definition, must support IEC 61131-3.
The firmware libraries available determine which types of controllers can be used; not any specific identifier.
*SECURITY-CODES Security is handled differently in the ControlWave controller;
security is configured via the Flash Configuration Utility. *MEMORY Memory does NOT need to be explicitly allocated. *BASENAMES IEC 61131-3 variables do not use basename descriptive text. *LOW-LEVEL The Low-Level Analog Input board is supported for CW_10 and
CW_30 only. *FORMAT Format codes are NOT supported in the ControlWave controller. *COMMUNICATIONS Communication ports are configured via the Flash Configuration
Utility.
SECTION 2 – EVEN FOOTER
6
Using the ACCOL Translator
Translation of Data Arrays
Analog Data Array Declaration (both Read Only RO and Read Write RW)
Each analog data array is defined in the DATATYPE section as a new data type. The new data type consists of a one dimensional array of one dimensional arrays. This allows an equivalent set of row, column elements to be defined.
ACCOL Workbench (.ACC) File Structure
*A-ARRAY x Rt (r,c)
where x = array number r = number of rows c= number of columns
t = O – read only = W – read write
Example:
*A-ARRAY 1 RO (5,7)
NOTE: The actual array variables (which are of the type defined in the DATATYPE section) appear in the Global_Variables section.
Equivalent Construct in ControlWave Designer DATATYPE section
TYPE ANAx_C : ARRAY[1..c] OF REAL; (or UINT) ANAx_R : ARRAY[1..r] OF ANAx_C; END_TYPE
Where x = array number r = number of rows c= number of columns
Equivalent Example:
TYPE ANA1_C : ARRAY[1..7] OF REAL; ANA1_R : ARRAY[1..5] OF ANA1_C; END_TYPE
7
Using the ACCOL Translator
Analog Array Initialization (Read-Only Arrays)
Each read-only array is initialized in the system task called Inittsk. Inittsk runs once, on cold start.
NOTE: The same general syntax for initialization in ControlWave Designer is also valid for setting array values after initialization in read-write arrays.
ACCOL Workbench (.ACC) File Structure
*A-ARRAY x RO (m,n) r1c1 r1c2 r1c3 …. r1cm r2c1 r2c2..r2c3… r2cm : : : : rnc1 rnc2 rnc3… rncm
where x = array number m = number of rows n= number of columns
r1c1 through rncm = initial values
Example:
*A-ARRAY 1 RO (2,3)
17.5 3.4 8.2
8.3 7.3 4.1
Equivalent Construct in ControlWave Designer
(* Beginning of Array Section *) Ana_x_Array[r1] [c1] := r1c1 Ana_x_Array[r1] [c2] := r1c2 : : : : Ana_x_Array[rn] [cm] := rncm
where x = array number r = number of rows c= number of columns
r1c1 through rncm = initial values
Equivalent Example:
Ana_1_Array[1] [1] := 17.5000000; Ana_1_Array[1] [2] := 3.4000000; Ana_1_Array[1] [3] := 8.2000000; Ana_1_Array[2] [1] := 8.3000000; Ana_1_Array[2] [2] := 7.3000000; Ana_1_Array[2] [3] := 4.1000000;
SECTION 2 – EVEN FOOTER
8
Using the ACCOL Translator
Logical Data Array Declaration (both Read Only RO and Read Write RW)
Each logical data array is defined in the DATATYPE section as a new data type. The new data type consists of a one dimensional array of one dimensional arrays. This allows an equivalent set of row, column elements to be defined.
ACCOL Workbench (.ACC) File Structure
*L-ARRAY x Rt (r,c)
where x = array number r = number of rows c= number of columns
t = O – read only = W – read write
Example:
*L-ARRAY 1 RW (12,16)
NOTE: The actual array variables (which are of the type defined in the DATATYPE section) appear in the Global_Variables section.
Equivalent Construct in ControlWave Designer DATATYPE section
TYPE LOGx_C : ARRAY[1..c] OF BOOL; LOGx_R : ARRAY[1..r] OF LOGx_C; END_TYPE
Where x = array number r = number of rows c= number of columns
Equivalent Example:
TYPE LOG1_C : ARRAY[1..16] OF BOOL; LOG1_R : ARRAY[1..12] OF LOG1_C; END_TYPE
9
Using the ACCOL Translator
Logical Array Initialization (Read-Only Arrays)
Each read-write array is initialized in the system task called Inittsk. Inittsk runs once, on cold start.
NOTE: The same general syntax for initialization in ControlWave Designer is also valid for setting array values after initialization in read-write arrays.
ACCOL Workbench (.ACC) File Structure
*L-ARRAY x RO (m,n) r1c1 r1c2 r1c3 …. r1cm r2c1 r2c2..r2c3… r2cm : : : : rnc1 rnc2 rnc3… rncm
where x = array number m = number of rows n= number of columns
r1c1 through rncm = initial values
Example:
*L-ARRAY 1 RO (4,3) 1 0 0 1 1 0 0 0 1 1 0 1
Equivalent Construct in ControlWave Designer
(* Beginning of Array Section *) Log_x_Array[r1] [c1] := r1c1 Log_x_Array[r1] [c2] := r1c2 : : : : Log_x_Array[rn] [cm] := rncm
where x = array number r = number of rows c= number of columns
r1c1 through rncm = initial values
Equivalent Example:
Log_1_Array[1] [1] := TRUE; Log_1_Array[1] [2] := FALSE; Log_1_Array[1] [3] := FALSE; Log_1_Array[2] [1] := TRUE; Log_1_Array[2] [2] := TRUE; Log_1_Array[2] [3] := FALSE; Log_1_Array[3] [1] := FALSE; Log_1_Array[3] [2] := FALSE; Log_1_Array[3] [3] := TRUE; Log_1_Array[4] [1] := TRUE; Log_1_Array[4] [2] := FALSE; Log_1_Array[4] [3] := TRUE;
SECTION 2 – EVEN FOOTER
10
Using the ACCOL Translator
Translation of Signals
Signal Names
Signals are converted to IEC 61131-3 variables. IEC 61131-3 does NOT support periods embedded in variable names, therefore, the periods separating the basename and extension, and the extension and the attribute of an ACCOL signal name are converted to underscores.
ACCOL Workbench (.ACC) File Structure
basename.extension.attribute
where:
basename= up to 8 characters
extension = up to 6 characters
attribute = up to 4 characters
Example:
COMPRSR3.FLOW.TOT
NOTE: ControlWave Designer allows variable names up to 30 characters in length. If, however, you will be using a version of Open BSI Utilities older than Version 4.1 to collect data, you should limit your variable names to no more than 20 characters.
NOTE: If you have an ACCOL II signal with a basename and attribute, but no extension, the extension will be replaced with the word ‘dot’. For example:
COMPRSR3..TOT will be translated to COMPRSR3_dot_TOT
Equivalent Construct in ControlWave Designer
basename_extension_attribute
where:
basename= up to 8 characters
extension = up to 6 characters
attribute = up to 4 characters
Example:
COMPRSR3_FLOW_TOT
11
Using the ACCOL Translator
Signal Definition
All ACCOL logical and logical alarm signals are converted to IEC 61131-3 variables of type BOOL. All ACCOL analog and analog alarm signals are converted to IEC 61131-3 variables of type REAL or UINT (unsigned Integer). By default, the variables are stored in the Global_Variables section of the project. When ACCOL signals are converted to IEC 61131-3 variables, certain characteristics of the signal are NOT translated, because they have no direct counterpart in IEC 61131-3.
The following characteristics of ACCOL signals are NOT translated to IEC 61131-3:
Basename descriptive text (except in the case of alarms)
Questionable data flag.
Initial values for manual inhibit/enable, alarm inhibit/enable, control inhibit/enable flags.
However, CALCULATOR statements making use of these flags are translated. See VAR­ATTRIB_GET, VAR_ATTRIB_SET, and VAR_CI_PROC.
Units text for analog signals. Will be supported for analog alarms, however.
ON/OFF text for logical signals (other than TRUE or FALSE) which are NOT alarms.
ACCOL Workbench (.ACC) File Structure
Logical Signals, Logical Alarm Signals
name type read_sec write_sec mi ci [ai] initial onoff [alarmtype] priority
where:
name= signal name type = L for logical or LA for logical alarm read_sec = security level for read access write_sec = security level for write access mi = manual inhibit/enable flag ci = control inhibit/enable flag [ai] = alarm inhibit/enable flag (alarm
signals only) initial = initial value of signal 0 = OFF 1 = ON.
onoff = ON and OFF text [alarmtype] = condition which generates
Equivalent Construct in ControlWave Designer variable declaration section
Boolean Variables
name : BOOL := initial;
where
name = the variable name
initial = the initial value of the variable
SECTION 2 – EVEN FOOTER
12
Using the ACCOL Translator
ACCOL Workbench (.ACC) File Structure
alarm (either TRUE or FALSE or CHANGE). (alarm signals only) priority = C – Critical (alarm signals only) N – Non-critical O – Operator Guide E – Event
Example:
PUMP1.START.CMD LA R1 W3 ME CE AE 0 RUN HALT TRUE C
ACCOL Workbench (.ACC) File Structure
Analog Signals, Analog Alarm Signals
name type read_sec write_sec mi ci [ai] initial units [deadband] [limits] priority
where:
name= signal name type = A for analog or AA for analog alarm read_sec = security level for read access write_sec = security level for write access mi = manual inhibit/enable flag ci = control inhibit/enable flag [ai] = alarm inhibit/enable flag (alarm
signals only)
initial = initial value of signal. units = units text e.g. HOURS [deadband] = alarm deadband value (alarm
signals only) [limits] = alarm limit value(s) (alarms signals only) priority = C – Critical (alarm signals only) N – Non-critical O – Operator Guide
Equivalent Construct in ControlWave Designer variable declaration section
Example:
PUMP1_START_CMD : BOOL := FALSE;
Equivalent Construct in ControlWave Designer variable declaration section
REAL Variables
name : REAL := initial;
- or­name : UINT := initial;
where
name = the variable name
initial = the initial value of the variable
13
Using the ACCOL Translator
ACCOL Workbench (.ACC) File Structure
E – Event
Example:
F101.FLOW.TOT AA R1 W3 ME CE AE 0.0000000 GPM HDB: 20 LDB: 5 HALM: 100 LALM: 10 C
System Signals
Many ACCOL II system signals do NOT have counterparts in ControlWave Designer with ACCOL III.
Certain similar variables, for example, for measuring time like #TIME.00x ACCOL signals, etc. are created in the SYS_VAR_WZ_DATA section of the Global_Variables, when you run the System Variable Wizard in ControlWave Designer. These system variables are distinguished from other variables by an underscore at the front of the variable name. For example, _TIME_005. A list of these appears below:
Equivalent Construct in ControlWave Designer variable declaration section
Example:
F101_FLOW_TOT : REAL := 0.0000000;
VAR_GLOBAL _TS_INHIB AT %MX 3.0.3 : BOOL; _TS_REQ AT %MX 3.0.2 : BOOL; _TIME_000 AT %MD 3.4 : DWORD; _TIME_001 AT %MD 3.8 : DINT; _TIME_002 AT %MW 3.12 : INT; _TIME_003 AT %MB 3.14 : SINT; _DAY_OF_WEEK AT %MB 3.15 : SINT; _TIME_004 AT %MB 3.16 : SINT; _TIME_005 AT %MB 3.17 : SINT; _TIME_006 AT %MB 3.18 : SINT; _TIME_007 AT %MB 3.19 : SINT; _TIME_008 AT %MW 3.4 : INT; _CPU_OUT_ERR AT %MD 3.24 : DINT;
SECTION 2 – EVEN FOOTER
14
Using the ACCOL Translator
_T0_SLIP AT %MD 3.1000 : DINT; _T1_SLIP AT %MD 3.1032 : DINT; _T1_FPERR AT %MD 3.1036 : DINT; _T2_SLIP AT %MD 3.1064 : DINT; _T2_FPERR AT %MD 3.1068 : DINT; _P1_TYPE AT %MB 3.3000 : SINT; _P1_RECEIVES AT %MD 3.3004 : DINT; _P1_TRANSMIT AT %MD 3.3008 : DINT; _P1_POLLS AT %MD 3.3012 : DINT; END_VAR
Certain other ACCOL II system signals are translated to system variables with similar names in ACCOL III, and stored in the SYSTEM_VARIABLES group in the Global Variables worksheet (as opposed to the SYS_VAR_WIZ_DATA group.) If there are counterpart system signals with different names, the translated names based on the original name will be mapped to point to memory location for the actual system variable.
If there is no corresponding system variable, the translated variable will only be a variable, NOT a system variable.
They do NOT, however, have the same functionality of the ACCOL II equivalents; they are simply variables. Users can choose to rename them or otherwise change the logic they are used with.
15
Using the ACCOL Translator
Translation of Signal Lists
ACCOL signal lists are converted into lists in the Inittsk section of the project. The Inittsk section only executes once.
ACCOL Workbench (.ACC) File Structure
*LIST listnumber
listlinenum1 signal1 listlinenum2 signal2 listlinenum3 signal3 : : listlinenumn signaln
where:
listnumber = the number identifying this
signal list
listlinenum1… n = line numbers for the list signal1 … signaln = ACCOL signals
Example:
*LIST 5 10 PUMP1.RUN. 20 PUMP2.RUN. 30 PUMP3.RUN.
Equivalent Construct in ControlWave Designer Structured Text (ST)
(* Beginning of Lists Section *) LIST_size_id ( iiListnumber := number, ianyElement1 := variable1, ianyElement2 := variable2, ianyElement3 := variable3,
: :
ianyElementn := variablen; (* * INT * :=LIST_id.odiStatus; *)
where:
size = maximum number of items in the list. Can
be 10, 20, 30, 50, or 100.
id = a number identifying this list
number = a number identifying the iilistnumber.
variable1…variablen = the variable name
Example:
(* Beginning of Lists Section *) LIST_10_5 ( iiListNumber := number, ianyElement1 := PUMP1_RUN, ianyElement2 := PUMP2_RUN, ianyElement3 := PUMP3_RUN); (* * INT * := LIST_10_5.odiStatus; *)
SECTION 2 – EVEN FOOTER
16
Using the ACCOL Translator
Translation of Process I/O
Because of direct access to I/O through variables, process I/O modules such as ANIN, DIGIN, DIGOUT are not converted.
The ANOUT module is converted, since it has a special usage with some function blocks, e.g. PID3TERM.
I/O points associated with process I/O boards are converted to global variables in the IO_GLOBAL_VARIABLES section of the Global_Variables page in the project tree.
Once you have opened the project in ControlWave Designer, you must make I/O assignments using the I/O Configurator (accessible in ControlWave Designer through ViewÆIO Configurator).
17
Loading...
+ 46 hidden pages