• Main & Pitch Control for Wind Turbines
  • Design & Simulation
  • SCADA
  • Park Power Management
  • Products
  • About
  • Exhibitions
  • Jobs
  • Contact
  • deif.com

Design & Simulation

  • PLC Link - Automated code generation
    • Request a license
    • Download PLC Link
    • System requirements
    • Supported targets
    • Tutorial videos
    • License activation
    • Documentation
      • Release notes
      • Supported Simulink blocks
      • Simulink model code
      • Stateflow code

Release notes 

 

Changes from R2.0 to R2.1

 

Features

>

Added support for external plugins which enables custom made Java classes (jar) to be dynamically loaded and executed in PLC Link at the end of compilation. An interface is supplied to be implemented describing all the data PLC Link makes available to the plugin. See more in the PLC Link help section 'The Plugin interface'.

 

 

 

Bug-Fixes

>

Corrected a bug with constant folding when unary minuses were present

>

Fixed incorrect reuse of variables in some special situations where sample rate was lower for the source

>

Fixed a bug in TestpointDecorator causing incorrect execution order

>

Fixed update execution list bug caused by manual switch

>

Fixed FromWorkSpace name

>

Added Inports to executionorder tp ensure e.g. busses to be executed at the right place

>

Fixed problem with non direct feedtrhough when atomic subsystem with "minimize algebraic loop" has been enabled and two execution order groups exist within that subsystem. Then the lower group must be executed at the update part.

>

Changed resuability for container to avoid reuse when output connects to a non direct feedthrough inport (which mean a subsystem needs the original value in the update part)

>

Fixed multiportswitch boolean probs

>

Fixed a bug causing incorrect execution order in some cases when handling entrypoints and exitpoints

>

Added saturation to some parameter initialization parts missing it (negative uints)

>

Corrected MultiportSwitch to work with boolean indexes

>

Fixed incorrect parsing of negated floating point types, introduced by previous uint type fixes

>

Fixed error in MultiportSwitch where index was missing in some cases

>

Fixed incorrect parsing of wide negated unsigned integers which in some cases should be saturated.

>

Fixed array to array assignments in M conversions

>

Fixed incorrect parsing of negated unsigned integers which in some cases should be saturated.

>

Fixed masked lib incorrect IDAccessTable usage

>

Added missing braces {} to some if/else constructs

>

Fixed Pascal ifthen (Relay) bug causing parameters to be reversed more than once.

 

 

 

Enhancements / Changes

 

 

>

Changed ANSI C structs to be declared in C file and with extern in H file

>

Added CoDeSys V3.x target

>

Modified MultiPortSwitch "Error" check to only occur when inputs are != 1

>

Boolean lookup tables now not allowed

>

Boolean Relay now not supported

>

Changed ANSI C defines

>

Changed Pascal pattern to support direct array assigns

>

Updated unused identifier remover, added decompser function to some IMAST

 

 

Changes from R1.7 to R2.0

 

Features


Main improvements

>

Support for Pascal and ANSI C output

>

Totally rewritten compiler backend with focus on agility and native support for languages outside IEC 61131-3

>

"Strict mode" compile option to avoid implicit data type conversions and saturation

>

Standard blocks implemented in several versions with the specifically used data types enabling faster and more accurate code as well as a minimum of data type conversions

>

64 bit Windows and MATLAB/Simulink support

>

Improved error handling catching most unsupported uses of blocks and providing more informative messages

>

Virtual subsystems are collapsed/removed to ensure behaviour equal to Simulink model

>

Support for MAT files containing the variables used in models

>

Support for variable structures (only in MAT files)

>

Support for use of current variables in MATLAB workspace (IntelliSniff)

>

Complete multi task, multi rate support

>

Broad support of wide signals (vectors) and parameters

 

 

Simulink Codegeneration

>

SubSystems now directly support non-direct feed through Inports

>

Discrete Filter, Discrete Transfer Fcn and Discrete State Space blocks now support non-direct feed through behaviour

>

PLC Link supported blocks are now colored blue in the Simulink Block library for easy model building

>

A simple pre-compile check can be performed from the menu, checking that the model does not contain unsupported blocks

>

The support of Mask initialization code has been improved. Data types of declared variables are now respected

>

Support for signal test points and displays to be logged to a structure

>

Bus object support

>

BusCreator and BusSelector supports partial execution to ensure correct behaviour

>

Struct types are supported in mat files and struct indexing supported in block parameters

>

Added shortcuts for compiling models (Ctrl+L and Ctrl+B)

>

Embedded MATLAB function

>  Declaration of local variables is now supported

>  Used and declared data types are now respected


Naming Convention (CodeConvention.ini)

>

PLC Link now searches for CodeConvention.ini in all parent folders until reaching root. Then the standard convention in the PLC Link install directory will be used

>

Added arrayIndexStart used for specifying at which index arrays should start

>

 Added minNoForSeperateBlockImpl specifying at which array size the following blocks will have their own independent implemetation:

>  Discrete Filter, Discrete Transfer Fcn, Discrete State Space

>  Lookup, Lookup2D, LookupNDDirect

>  Integer Delay

>  Sum

>

Added addIECPIN which causes, if set to 1, a unique ID set for each block and function to enable traceability in case of crashes

>

Added generateANSI_C causing, if set to 1, output also in ANSI C format

>

Added generatePASCAL causing, if set to 1, output also in pascal format

>

Added pascalProgExt to specify the extension of the program files produced if pascal output is enabled

>

Added tunablesCellArray and constantsCellArray to specify the names of cell array variables holding the names of variables to be considered as tunable parameters and constants (only applies to variables in MAT file). Variables not specified will be considered non-tunable.

>

Added nonTunableInstName and nonTunableDeclName specifies the names of the non-tunable structure and instance.

>

Added beginIgnoreTag and endIgnoreTag to be used in m files or other places with M code to specify to PLC Link that the part should be ignored

>

Added blockBeginComment and blockEndComment to enable the possibility to add a custom header and footer in functions and function blocks

>

Added new block names and comments

>

Updated the pre- and suffix settings to be much more flexible and customizable

>

Added possibility to add a custom prefix or path to the location of the code in the IDE (rootPathName)

New Blocks

>

Backlash

>

Bus Creator

>

Bus Selector

>

SR-Flip Flop

>

Rate Transition

 

MATLAB Parser

>

Support of if/else constructs

>

Support for ignoring code parts

>

Improved support of MATLAB/Simulink data type behaviour

General

>

Directly support for MATLAB versions 2007b - 2011b

>

The handling and use of containers (variables) for signals has been updated and improved

>

Unused variables from MATLAB workspace or ini files are now excluded from the generated code.

>

Variables with unsupported data types (strings, classes, cell arrays etc) are now discarded from ini files

>

For loop extraction (if few iterations)

>

Merging of For loops (when concurring for loops have same number of iterations)

>

Signal storage reuse

>

Introduction of temporary variables

>

Automatic generation of co-simulation template model with verification (verification requires Stateflow)

>

Added support for non-tunable parameters to increase execution time when having many variables

>

Progressbar shown during compilation now allows user to abort the operation

 

Bug-Fixes


General

>

Execution order has been updated and improved for certain blocks

>

Blank spaces before and after names is no longer an issue

>

A bug causing PLC Link to run twice in some situation has been fixed

>

A bug causing output folder stated in model options to be ignored has been fixed

>

Parameters are now initialized correctly at the correct place

>

Block output are now always initialized to zero

>

Updated some blocks to ensure no use of uninizalized variables and correct input handling (cycle vs update)

 

 

Specific blocks

>

Embedded MATLAB function

>  For loop issue has been fixed and updated

>

Implementation error in Discrete Filter and Discrete Transfer Fcn has been fixed

> Fcn block has been updated due to a problem with some array indexing

 

 

PLC Link Gateway

>

Minor bug fixes

 


 

Upgrade notes


PLC Link R2.0 install requirements

>

Your license must be updated which requires active update service

>

MATLAB installation 2007b+

 

 

Model and compilation considerations

>

The command enumerator has been changed to a VAR_IN_OUT for targets supporting this

>

Tunable parameters in MAT file must now be specified by name in an cell array in order for parameter update to function

>

Tunable parameters in M file must now be succeeded by a comment tag "%TUNABLE" or "%T" similar to defining constants

>

SFC generation from Stateflow has been discontinued

 

 


Changes from R1.6 to R1.7
 

Features


Simulink Code generation

>

Multi task multi rate systems are now supported for targets allowing it. The strategy for creation is the following:
The smallest sample times are used as task intervals up to the maximum allowed number of tasks. The rest of the sample times (programs) will be scheduled under the task with the least common multipla

>

In- and/or outputs on multirate subsystems are supported if they are connected directly to source or sink blocks

>

Parameter tuning is supported with multi task systems

>

Indexing parameters (either arrays or matrices) is now supported generally in blocks where parameters are used

>

The STEP keyword has been changed to CYCLE

>

The PLC Link menu option "Generate code" has been changed to "Build Only". "Build model" has been changed to "Build and Import" where import is supported

 

New Blocks

>

"Raw Inclusion" custom code block have been added allowing text/code to be inserted directly in the generated file(s)

>

Old custom code blocks have been replaced with revised and more dynamic ones

>

Old custom code blocks will no longer work and have to be ported to the new ones

>

Integrator and Discrete-Time Integrator are now supported with both wide and slim signals. The saturation feature is however not supported at the moment

>

Fcn block is now supported with input signal as wide or slim

>

Lookup Table (2-D) is now supportedThe PLC Link menu option "Generate code" has been changed to "Build Only". "Build model" has been changed to "Build and Import" where import is supported


PLC Link Gateway

>

A new gateway is now included with PLC Link allowing communication to various PLC types and protocols

>

A scope viewer is included used for viewing realtime signals from the PLC

>

Tools for easy creation of MATLAB GUIs for viewing/updating parameters are now included

>

New easier to use To/From blocks are included for use in co-simulation to send and retrieve data from the PLC

>

New easier way to monitor and change parameters/variables using the MATLAB command window has been added

>

Model options design has been updated and some new options have been added


PLC Link demo models

>

All demo models have been revised and updated to fit the new Gateway Control


 

Bug-Fixes 


Specific blocks

>

Custom code blocks have been revised such that empty windows/statements no longer generate errors

>

Custom code "Function" has been fixed such that no instance is tried declared

>

Custom code blocks now support all shown data types

>

An initial value is now possible also for data type STRING in custom code blocks

>

A bug with the Multiport switch when optimization was enabled has been corrected

 

Wide signals

>

Integer Delay is now supported with wide signals

>

Wide signals used with Goto/From blocks are now correct in size

 

General

>

Handle map creation was moved to an earlier stage to ensure correct execution order calculation whenever a path is not found (linked subsystems)

>

M-files are now pcoded with backward compatibility to MATLAB R2007a

>

Unsupported circular references in Simulink models are now caught and thrown as exceptions instead of PLC Link running until out of memory

>

A bug which caused PLC Link to crash when block names were to long or contained character "'" has been fixed

>

A bug causing crash at symbol table creation has been fixed. The problem was with the Compare To Constant block enumerator data type

> Symbol table fixed with regards to I/O variables and trigger variable
> Only when co-simulation is enabled will the generated symbol file will include I/O sections
> When using multi rate systems, the variable PLCLinkCurrentTime is now reset in the INIT section
> When multi rate systems are used, the variable currentTS is now correctly set. Note that different sample times in library systems are not supported

 

MATLAB Parser

>

A data type bug caused by some functions having more than one argument has been
fixed

>

Derived type declarations are now set to their correct type where before always had
the STRUCT type

>

A bug with the data type for MOD calculations has been fixed. Input and output data
type was not the same when optimization was enabled

 

Pending Issues

>

Circular references to subsystems are only supported when a delay or equivalent is
inserted on the circular signal outside the subsystem. Otherwise the subsystem must
be removed. A solution preserving the subsystems do not exist due to the nature of IEC
61131-3. A solution will be provided to remove virtual subsystems.


 

DEIF A/S, DEIF Wind Power Technology | Frisenborgvej 33 | DK-7800 Skive | Denmark - +45 96 14 96 14 | info@deif.com
  • Terms of use