Frequently Asked Questions

What AC800M code optimization is implemented in Conversion tool?

There are several functions implemented in order to decrease AC800M CPU load and to improve the readability of the converted code:

  • Reduction of Tabs count in Control modules. It is highly recommended to merge as much code blocks as possible into one code Tab in Control modules. Therefore you should assign the same Tab name for as much FUNCM / CONTRM / SLAVEM as possible. Setting is done before conversion in Conversion queue dialog
  • Conversion tool can delete spare AND, OR inputs or even whole dummy AND, OR and timers, if selected in settings (spare PC elements, which just pass on signals)
  • whole Logic expressions are used in Sequence Transitions in place of original single bool variables for more informative HMI of pending conditions in SFC Viewer
  • Descriptions of connected IO signals added into green remarks above function blocks help much to understand original logic.
  • User selection between conversion of Sequence logic into SFC or FBD for better readability
  • User selection between local/global variables priority and many other user options...
  • Usage of AC800M System functions if possible, e.g. in case MOVE(1), SW(1), SW-C(1) are used in original logic, then single MOVE, SEL from standard AC800M library are more efficient than relevant P&P Function block

Can conversion tool perform complete conversion of the whole Advant PLC ?

Automatic conversion can save up to 60-95% of manual AC450 translation, depends on how original code is written. If original control application is built using MOTCON, VALVECON, PIDCON, SEQ mainly, then automated conversion covers almost all egineering efforts.

According opinion of many ABB specialists complete AC450 to AC800M automated conversion is not possible due to significant difference with application handling between AC400 and AC800M. Manual post-conversion job and experience is important part of the conversion process.

Amount of necessary manual programming after automated conversion depends on way how original control logic is written :

- Automated conversion produces nearly working AC800M code if original logic uses standard features of AC450 function blocks and DB elements in case standard MOTCON, VALVECON, PIDCON, SEQ are used.

- On other hand converted code needs manual fixes proportional to amount of GENUSD, GENCON, GENBIN, MMCX used and on how sophistically and tricky is original code written.

From our experience, there is enough room for automated conversion, which can significantly reduce engineering hours and prevent typos, mistakes due to inattention or logic errors.
Manual completion after automated AC400 conversion may take 2-6 weeks. That manual post-conversion job is much easier than at least half-a-year-long manual re-programming of AC400 to AC800M.

Which manual tasks should be performed after automated conversion ?

Following steps should be performed manually after successful import of converted code into 800xA system:

  • Visual check and comparison between new imported code in Control Builder and original code in Function Chart Builder page by page. It is not necessary to check each function block. Focuse on few red connections left and on unconnected inputs of ANDs / ORs mainly.
  • Fixing of all connections, which Control Builder displays in red. Possible reason: original connection to DB element could not be converted. Therefore conversion tool does not create variable for that connection. Examples of usual issues to be fixed: MMCX terminals, SELECTED property od DOC/AOC, rare DB hidden terminals...
  • Fixing of not converted PC elements and all issues identified by green remarks in converted code. Temporary placeholders should be defined as new function blocks in User library. Placeholders instances are already included in FunctionBlocks tab.
  • Task connection to all imported Control Modules (takes 15 minutes)
  • Creation of global variable instances according imported variable types like IO, DAT, TXT, PC program global variables. (30 minutes) E.g. You can move PC program variables from Application to top level Single control modules if you want to minimize global variable count
  • Creation and configuration of the whole hardware structure of AC800M controller (1 day job). Use list of IO variables in CSV file created during importing converted code into CB. CSV file contains IO paths, ranges, units, fractions and inversions ready to copy-paste into IO cards configuration.
  • Testing and fixing HMI inputs by means of DOC / AOC. E.g. selection of one standby pump of several pumps by means of several DOCs
  • In case P&P Library is used, coldretain parameters and texts of objects like AIS, AIC, DIS, DIC, AOC, motors, valves, PIDs, sequences must be configured by help of PP coldretain tool.
  • Texts of P&P Lib sequence Steps, Conditions, Actions must be configured manually in Control structure in each Seq01 object.
  • For better understanding of converted code it is good idea to perform test of the code in simulation mode. Testing is not necessary but can demonstrate 100% functionality of converted code to end-customers before PLC upgrade.

Is it possible to reduce tag count of 800xA license by means of Converter ?


  • All DATs are converted as single variables in global data type DAT. For DAT HMI we suggest to use user defined graphic elements, which have direct access to global DAT variables. We use to use graphic elements which have string input parameter “VariablePath” and value of this parameter is connected by means of LateBound function inside graphic element to the global DAT variable. Graphic element can provide user input as well and therefore Tag with Faceplate is not needed for DATs. These feature may significantly reduce Tag count in 800xA system.
  • There are 2 filters available in Settings in order to indetify IOs like MCC signals or limit switches of valves, which do not need independent P&P Function block, because their information is included in related motor/valve/PID's HMI Faceplate:
    • List of PC elements or TC inputs / outputs, e.g. PIDCON:MV, MOTCON:M1, VALVECON:OPN… If IO signals are connected directly to one of listed terminals, then related P&P function block is not created
    • Second possibility is definition of list of regular expressions. If IO signal name match one of entered regular expression then this related P&P function block is not created. Example: 3 regular expressions \.MSTR$,\.OUT$,\.MV$ match if IO signal name ends with .MSTR or .OUT or .MV .
    • These 2 filters do not apply in case any other DB terminal than VALUE of particular IO signal is used in the logic (e.g. :VALUE>H1)

What is the recommended testing procedure of converted code ?

From our experience, thorough testing significantly reduces commissioning costs and risk. There are various testing methods which differ in terms of effectiveness and quality. Practically, quality of testing is proportional to the working hours needed.

The goal of testing is:

  • startup of the plant in simulation mode
  • Test of all interlocks of motors, valves, control loops…
  • Test of automatic start, stop, open, close commands
  • Test of all sequences
  • Verification of all control loops direction of control, block/unblock control
  • Physical test of communication between PLCs and external devices, IOs if possible

Test of logic can be performed by means of Soft controllers, but testing in real PLCs are important for verification of CPU load ,physical IOs and other communications.

For efficient testing, all motor run feedbacks and limit switches of valves and moving devices should be simulated by temporary code in separate Control module. Simulation code reads DO commands from logic and writes simulated feedbacks to DI signals instead of IO cards. Simulation code preparation takes week or two, but speed up testing much. Analog signals like tank levels, temperatures,... may be changed manually at HMI during testing.

The most effective testing method is Shadowing which is able to discover all issues in the converted code. We recommend to do Shadowing, especially when PLC exchange shall be performed bumplessly within one plant downday or if commissioning is not possible.

The principle of shadowing is automatic on-line comparison of all outputs from Advant and AC800M controllers connected each other by AF100 / MB300 communication (eventually using MB300 connection to 800xA and comparison directly in 800xA system) provided that all AI, DI inputs are copied by communication from AC450 to AC800M AI, DIs .

All possible situations and signal combinations must be tested in parallel in both systems. For example all interlocks and auto commands of all motors/valves and all sequences should be tested in detail. By our experience, there are only little issues in ordinary (lets say non-SEQ) logic after automatic conversion, but SEQences need special attention and must be tested thoroughly before PLC exchange.

There is also another advantage of thorough testing: engineers while testing the converted code in AC800M become familiar with logic of all controlled devices in the plant and therefore will be better prepared to solve quickly any issue during short startup period.

How to upload converted code into 800xA / CCB ?

  • Download Converter_importer script from Download section and copy both files to your 800xA PC where Control Builder M Professional is installed
  • Download recent converted code TXT file from conversion tool Output files section. Copy TXT file into the same directory beside Converter_importer script files. Script will search for and use the recently modified TXT file
  • Open your project in Control Builder
  • Edit file script.vbs in any text editor and modify target Application name at line 12 inside parenthesis , which looks like: Application = "my Application name"
  • Delete corresponding control modules in Control Builder if already present in Application.
  • Execute file import.bat. It will import Data types and Control Modules of converted code

Converter_importer script has been tested in 800xA V6.0.3 and CCB. Script uses standard Control Builder M Open interface.
CSV file is beeing created during importing, which contains IO variables paths, ranges, units and fractions, descriptions and original DB names. That CSV file is of great help in assigning IO variables to IO cards.
Conversion tool cannot create the whole HW structure with IO cards, because usually new IO cards layout is different from the original one.

Is there any record about function blocks, which were not converted or converted partially ?

Yes. If converter discover some rarely occurring PC element in AAX file, which cannot be converted yet, it replaces it with red Placeholder in order to keep all input and output connections of the original PC element. At the same time Placeholder call name is added into FunctionBlocks tab and the remark containing Item address is added above Placeholder. Placeholder FB definition should be added manually in User library.

List of not converted PC elements is attached in the end of output TXT file.

In case standard AC800M libraries are selected for conversion, possibly some rarely used terminals of PC elements are not converted, then green remark is added above new function block.

How can I evaluate conversion ?

There are 3 possibilities:

  • Download examples of original AC450 code and raw converted AC800M code printout from 800xA in Word documentation format
  • Send us your AAX, BAX files and we will send you back raw converted code printout from 800xA in Word format
  • You can choose conversion evaluation for free, in this case only 5 function blocks of every code block will be converted. You can import converted code into your 800xa system by vbs script which is available at download section

Why Control Modules are used in converted code and why not Programs?

new update: Conversion to CBM Diagrams is available since October 2019.

Control Modules have many advantages in comparison with Programs:

  • Structure of SW more correspond to AC450 / AC110 / APC structure - Control Modules can be organized in tree structure, which looks more tidy than long list of Programs
  • It is more flexible to shift / move control modules between applications and controllers by drag-and-drop in Control Structure
  • Control modules compiler makes by itself some kind of execution optimization and therefore it is expected to have better CPU performance by using Control Module concept compared to Application built in Programs
  • Control Module compiler does not allow the same variable names for local and global variables. Contrary, there is high risk by using Programs that local variables with the same names as global variables are left in Programs by mistake. In that case logic in Programs read from/write to local variables instead of global variables without any warning and signals are not transferred to other Programs.

Converted code is organized under empty Single Control Modules, which represent original PC programs. For every particular cycle time of CONTRMs/MASTERs, Single Control Module is created one level below.

Control Module concept

Usually original PC programs were built as per plant/technology parts. Also maintenance people are used to original program structure. Therefore it is good idea to keep it, if customer does not have different opinion.

On the other hand there are exceptional cases when it is advised to change original Advant PC program structure:

  • Sometimes complex logic was split into several PC programs because it did not fit PC program memory limit.
  • Other similar case is a separate PC program containing Motcons,Valvecons, Pidcons, which receive SEQ/Auto commands through DATs from several other PC programs containing sequential logic

There is no sense to keep this splitted code in AC800M. After successful import of converted code, Control Modules of the same task may be merged by copy-paste of the code and variables, Tab by Tab. Manual merger may take several hours, but it can significantly increase readability of the code.

Why is important to select appropriate Libraries for AC450 / MP200 conversion ?

Advant Controllers AC450 and MP200 are robust and reliable DCS systems equipped with standard library containing about 170 PC element types. End users like Advant controllers because of their robustness, easy operation and solid standards. During upgrade projects end-users mostly insist on and require the same functionality and similar HMI from the new system as they use on Advant systems. Example of DCS features required after conversion:

  • Block and force of IO signals directly from HMI
  • Interlocks at motors, valves faceplates with block option from HMI and text description
  • Control modes of objects like E1, E2, E3, Central, Sequence
  • History of first interlocks which caused motor trip or plant shutdown

New ABB system 800xA AC800M is also equipped with standard libraries, but these are not compatible with Advant controllers in terms of HMI graphic elements, faceplates, object control modes and functionalities. However, there are some similarities.

Therefore it is essential to select suitable library in 800xA / AC800M system to meet customer needs and prevent any disappointment of customer.

It is also recommended to consider code readability and engineering efforts needed during conversion process, while some libraries require more or less time for Advant function blocks replacement.

Which Libraries are the most suitable for my AC450 conversion ?

For selection of suitable AC800M library it is important to consider whether old Advant Controller is used as DCS or PLC control system :

  • Typical configuration of DCS system are AC450/AC410/MP200 controllers connected to Unix HMI stations AS500 / AS520. In this case P&P Library is the best and recommended library for conversion. If Sequences are not used, BMI Minerals Library is also good choice, however BMI Lib does not contain basic function blocks like those in PPElement Lib (which is part of P&P Lib). User Lib must be used instead. User Lib is available at download section.
  • PLC system: If Advant controllers are installed without AS500 HMI unix stations and if customer does not insist on P&P Lib usage, then it is possible to use standard AC800M libraries together with User Lib. That option fits very well to AC110, AC160 and APC conversion.

Library selection according various types of PC elements used in AC 450:

  • Basic PC elements without HMI – here is P&P Lib very helpful because it contains function blocks with the same inputs/outputs and same functionality as Advant controllers standard lib elements. There is an option of using AC800M standard function blocks instead. In this case, one Advant PC element may be converted as one or combination of several standard AC800M function blocks. Several extensible function block types shall be used from User Lib (available in download section) for elements like MOVE, REG, REG-RET,… which are not included in AC800M standard libs.
  • Objects with DCS oriented HMI like MOTCON, VALVECON, PIDCON, SEQ, RATIOSTN, ... again there is P&P Lib the best choice. For MOTCON, VALVECON, PIDCON and GROUP function blocks BMI Library can be used. There is a way also for SEQ conversion into BMI library but it require a some manual programming after automatic conversion.

What is the aim of UserLib ?

If it is not planned to use P&P Library in conversion project, we suggest to use as much Function blocks as possible from standard AC800M libraries like BasicLib and ControlSimpleLib.

However several complex / extensible Advant PC elements cannot be easily replaced by standard Function blocks. For these PC elements we have prepared and tested compatible Function blocks in UserLib available for download. These function blocks were already used and verified in the real migration project.

Following priority is applied for function blocks selection during conversion:

1. P&P Lib function blocks

2. Standard AC800M function blocks

3. User_Lib function blocks

UserLib is open, there is no password protection. Whole code inside function blocks is visible and available for modifications. UserLib is available for download after your first conversion.

Which Libraries are the most suitable for AC110 / AC70 / AC80 conversion ?

Since AC110, AC70, AC80, APC are typically used as PLC without DCS HMI , is possible to use standard AC800M libraries together with User Lib. If these Advant controllers shall be part of 800xA HMI system, it is better to use P&P Lib or BMI lib because Analog and Digital IO, PID, SEQ should be converted to objects with Faceplates and DCS HMI.

Is it possible to use own library during automatic conversion?

Yes. If you want to use any another library for Advant controllers conversion, we can implement your library into Conversion tool. We need just all Function blocks inputs/outputs detailed description.

Is there a possibility to modify code distribution into Control modules before conversion?

Yes. After AAX file(s) upload and after pressing Analyse button all structure code blocks and their suggested target Control Modules are displayed in Conversion queue table. Here you can modify target Control Module names and Tab names. Converted code will be distributed into Control modules according your CM names modifications. For every particular CM name one new Single Control Module will be created.

CM name

In order to reduce AC800M CPU load it is very important to minimize number of code Tabs inside Control Modules. Therefore you should merge as much code blocks as possible into one code Tab. All code blocks with the same Tab name entered will be converted and merged into one particular code Tab.

Tab name

Is there any possibility somebody else may obtain uploaded source files?

No. All uploaded files are stored inside Database table at our private server. Access to the database is protected. Converter tool web application is protected against misuse and download of source files by third party.
We are not sharing uploaded files with anybody else.

Since BAX file is not required for conversion, nobody can open uploaded AAX files in FCB editor nor download them to Advant PLC.

Is there any risk during import of converted code to the 800xA system ?

Converted code can be imported to 800xA by VB script. We decided for code import by means of VB script, because its code is open and therefore is completely safe.

  • VB script is text file. You can check script code in any text editor
  • VB script access 800xA through Control Builder Open Interface, which is ABB standard interface to the Control Builder
  • VB script does not access or change any file in your 800xA system or Operating system
  • VB script does not contain any virus because it is text file and does not contain any compiled / hidden code
  • VB script does not change or delete existing Control modules, Function blocks, Applications, Libraries or PLCs in your 800xA project
  • VB script insert/replace Control modules and Data types only created during conversion
  • VB script is available for download at Converter web site for free

Can Conversion tool convert Type Circuits?

Yes. There are 2 necessary conditions for conversion of Type circuits:

  • AAX files must contain patterns like (* Begin of Type Circuit -and- (* End of Type Circuit
  • TCS source files are available and uploaded at your Input files before conversion.

Type circuits are translated as Function blocks instances in FBD code. Note that Function block types should be prepared manually in the current version of the Conversion tool.

Is there a way to recover missing symbolic names in AAX file?

In case symbolic names are lost in uploaded .AA files from Advant controller , it is possible to recover original symbolic names by script. In that case ask customer for older AAX files, which still contain symbolic names.Send us these AAX files and we will extract symbolic names and transfer them into your latest AAX files. This automatic symbolic names recovery has been used successfully in the real project already.
In case symbolic names are not available at all, conversion tool creates variable names according original PC item address: e.g. PC5_21_2_I1_lt_I2 or global variable PC5._21_2_12_O .
Descriptions of IO signals added into green remarks above function blocks help much to understand logic without original symbolic names and remarks.