SA0012: Variable which could be declared as constants
SA0013: Declarations with the same variable name
SA0014: Assignment of instances
SA0015: Access to global data via FB_Init
SA0016: Gaps in structures
SA0017: Non-regular assignments
SA0018: Unusual bit access
SA0020: Possibly assignment of truncated value to REAL variable
SA0021: Transporting the address of a temporary variable
SA0022: (Possibly) unassigned return value
SA0023: Complex return values
SA0024: Untyped literals / constants
SA0025: Unqualified enumeration constants
SA0026: Possible truncated strings
SA0027: Multiple uses of identifiers
SA0028: Overlapping memory areas
SA0029: Notation in code different to declaration
Unused Objects
SA0031: Unused signatures
SA0032: Unused enumeration constants
SA0033: Unused variables
SA0035: Unused input variables
SA0036: Unused output variables
SA0034: Enumerations with incorrect assignment
SA0037: Write access to input variable
SA0038: Read access to output variable
SA0040: Possible division by zero
SA0041: Detect possible loop invariant code
SA0042: Usage of different access paths
SA0043: Use of a global variable in only one POU
SA0044: Declarations with reference to interface
Conversions
SA0019: Implicit pointer conversions
SA0130: Implicit expanding conversions
SA0131: Implicit narrowing conversions
SA0132: Implicit signed/unsigned conversions
SA0133: Explicit narrowing conversions
SA0134: Explicit signed/unsigned conversions
Use of Direct Addresses
SA0005: Invalid addresses and data types
SA0047: Accesses to direct address
SA0048: AT-declarations on direct addresses
Rules for Operators
SA0051: Comparison operations on BOOL variables
SA0052: Unusual shift operation
SA0053: Too big bitwise shift
SA0054: Comparisons of REAL/LREAL for equality / inequality
SA0055: Unnecessary comparisons of unsigned operands
SA0056: Constant out of valid range
SA0057: Possible loss of decimal places
SA0058: Operations on enumeration variables
SA0059: Comparison operations always returning TRUE or FALSE
SA0060: Zero used as invalid operand
SA0061: Unusual operation on pointer
SA0062: Uses of TRUE or FALSE in expressions
SA0063: Possibly not 16-bit-compatible operations
SA0064: Addition of pointer
SA0065: Incorrect pointer addition to base size
SA0066: Uses of temporary results
Rules for Statements
SA0072: Invalid uses of counter variable
SA0073: Uses of inadequate counter variable
SA0080: Loop index variable for array index exeeds array range
SA0081: Upper border is not a constant
SA0075: Missing ELSE
SA0076: Missing enumeration constant
SA0077: Type mismatches with CASE expression
SA0078: Missing CASE branches
SA0090: Return statement before end of function
SA0095: Assignments in conditions
SA0100: Variables greater than <n> bytes...
SA0101: Names with invalid length
SA0102: Access to program/fb variables from the outside
SA0103: Concurrent access on not atomic data
SA0105: Multiple instance calls
SA0106: Virtual method calls in FB_INIT
SA0107: Missing formal parameters
Checking Strict IEC Rules
SA0111: Pointer variables
SA0112: Reference variables
SA0113: Variables with data type WSTRING
SA0114: Variables with data type LTIME
SA0115: Variables with data type UNION
SA0117: Variables with data type BIT
SA0119:Object-oriented features
SA0120: Program calls
SA0121: Missing VAR_EXTERNAL declarations
SA0122: Array index defined as expression
SA0123: Usages of INI, ADR or BITADR
SA0147: Unusual shift operation - strict
SA0148: Unusual bit access - strict
SA0118: Initialisations not using constants
SA0124: Pointer dereferences in declarations
SA0125: References in initializations
SA0140: Statements commented out
Possible Use of Uninitialized Variables
SA0039: Possible null-pointer deferences
SA0046: Possible use of not initialised interface
SA0145: Possible use of not initialised reference
SA0150: Violations of lower or upper limits or the metrics
SA0160: Recursive calls
SA0161: Unpacked structure in packed structure
SA0162: Missing comments
SA0163: Nested comments
SA0164: Multiline comments
SA0165: Tasks calling other POUs than programs
SA0166: Max. number of input/output/in-out variables...
SA0167: Temporary function block instances
SA0168: Unnecessary Assignments
SA0169: Ignored outputs
Multi download tool
Tool Calling Interface (TCI) implementation
Drive composer pro integration
Professional Version Control
SVN integration in CODESYS
Getting Started
Version control
Using an SVN Repository
Using Working Copies
Reference, User Interface
Overlay Icons
Commands
Availability of commands
Command 'SVN Repository Browser'
Command 'Edit SVN working copy'
Command 'Import project to SVN'
Command 'Checkout'
Command 'Commit', Command 'Commit Project'
Command 'Compare'
Command 'Compare with HEAD revision'
Command 'Compare with revision'
Command 'Compare to remote project...'
Command 'Include externals to project', Command 'Include externals'
Command 'Ignore on commit'
Command 'SVN Info'
Command 'Show properties'
Command 'Get lock'
Command 'Steal locks'
Command 'Release lock'
Command 'Release locks recursively'
Command 'Show log', Command 'Show project log'
Command 'Revert', Command 'Revert project'
Command 'Revert to revision', Command 'Revert project to revision'
Command 'Update', Command 'Update project'
Command 'Update to revision'
Command 'Update only this'
Command 'Disconnect project from SVN'
Command 'Switch'
Command 'Un-Ignore on commit'
Command 'SVN Cleanup'
Command 'Clear authentication data'
Command 'Merge changes'
Command 'Connect to existing project'
Command 'Resolve conflict'
Command 'Work in offline mode'
Command 'Copy (Branch/Tag)'
Command 'Pending Changes'
Dialogs
Dialog 'Options' - 'SVN Settings'
Dialog 'Project Settings' - 'SVN Settings'
Dialog 'Select revision'
Dialog 'Subversion Authentication'
Dialog 'Automatic locking failed'
Objects
Object 'SVN_VERSION_INFO'
Subversion
Project Version Control with Subversion
Introduction
Preconditions
Working with Project Version Control
Recommendations on Working with Project Version Control
Known Issues and Troubleshooting
SVN Support Examples
Importing Automation Builder Project to SVN Repository
Logging in User2
Examples
Mail service with SMTP/SMTPS
SNMP
Scripting with Python
Python
Python script support
Working with script objects
Execute Script
Calling Scripts from Menu Commands
Starting Scripts from the Command Line
Calling Scripts from Toolbar Icons
Configuration file
Creating script calls for a toolbar button
Python script editor
Configure port number for python editor server
Creating a Python Script
Getting Started with Python for CODESYS
Tips for Python Programmers about .NET API Documentation
Basic Syntax of Python (with Examples)
Variables and data types
Numeric types and floating points
Strings
Lists and tuples (data sets)
Dictionary
Python Control Structures (with Examples)
Loops
IF / ELSE
Functions, classes, and methods
Modules and standard libraries
Transitioning from Python 2 to Python 3
Comparison of IronPython and cPython
Using Scripts to Access CODESYS Functionalities
Example: Printing the device tree of the current project
Example: Reading of variables
Example: Creating and editing of POUs
Example: User interface / Interaction with the user
Example: Manipulating the “Project Information” object
Example: Calling external commands and importing PLCOpenXML files
Advanced example: Calling a library from SVN and installing it in CODESYS
Human machine interface
Control panels
Panel Builder interface
General
Adding desired AC500 PLC to the project
Creating a Panel Builder project
Configuring Panel Builder
SCADA Integration
General
Creating Workspace and Project
Loading existing Workspace and Project
Checking the Gateway Settings in a Zenon Project
Creating a symbol configuration
Updating Standard Data Types
Creating Data Types
Importing Data Types in zenon Editor
System technology
General
System technology of CPU and overall system
Handling of remanent variables
Introduction
Memory sizes
Adding a global list of persistent/retain variables
Declaring a new variable in global list
Declaring a new persistent/retain variable in local POU
Initialization of %M variables
Behavior of retain variables
PLC shell command for import and export of retain/persistent variables
Import and export of retain/persistent variables by library functions
General
SRAM_IMPORT
SRAM_EXPORT
SRAM_CLEARED
System processing
System
start-up / Program processing
Definitions: PLC system start-up
Start of the user program
User flash memory
Health monitoring
PID controller
Task configuration
General
Watchdog handling in IEC tasks
PLC utilization
General
Managing priorities by selecting the appropriate communication schema
The „Default“ priority schema in “SystemFW” 3.4.1
The “Communication modules” priority schema in “SystemFW” 3.4.1
The “Onboard Ethernet” priority schema in “SystemFW” 3.4.1
The „Default“ priority schema in “SystemFW” 3.5.0
The “Communication modules” priority schema in “SystemFW” 3.5.0
The “Onboard Ethernet” priority schema in “SystemFW” 3.5.0
Communication schema onboard Ethernet/EtherCAT
General
Communication schema “Default”
Communication schema “Communication modules”
Communication schema “Onboard Ethernet”
Communication schema “Onboard EtherCAT” since “SystemFW” 3.4.1
Setting standard configuration
Real-time
clock and battery
Real-time clock
AC500 battery
Data buffering
AC500-eCo processor module, LEDs, RUN/STOP switch on front panel
Features
State LEDs and operating elements
Display, LEDs and function keys on the front panel
Overview
Text outputs of the display
Startup procedure of the PLC
Startup procedure of a new PLC from factory
Startup procedure of a PLC with system firmware
Description of LEDs
Description of the function keys
Overview
RUN - start and stop PLC
VAL - reading out state values
Values with SystemFW 3.1.x and DisplayFW 3.0
Values with SystemFW >=V3.2.0 and DisplayFW >=V4.1
DIAG - reading out diagnosis messages
[CFG] - configuration
Configuration with SystemFW V3.1.x and DisplayFW V3.0
Configuration with SystemFW >=V3.5.0 and DisplayFW >=V4.1
Enable flashing of display
Function blocks
Onboard technologies
Ethernet
Ethernet protocols and ports for AC500-eCo V3 processor modules
General
Default open Ethernet ports of PM50xx-x-xETH
Overview of protocols, sockets
and ports
Limitation of connections per protocol
Ethernet protocols and ports
General
Default open Ethernet ports of PM56xx-2ETH
Overview of protocols, sockets
and ports
Limitation of connections per protocol
Default Ethernet configuration
Online access
SNTP client and server
Using network variables
Onboard CAN configuration
Hot swap
Preconditions for using hot swap
Compatibility of hot swap
Hot swap behavior
KNX IP integration
Introduction
Engineering workflow
Prerequisites
General settings and system behavior
Start-up behavior
Engineering of KNX in Automation Builder
Creation of KNX group objects
Create an application program
Export XML file
Integration of the PLC in KNX
Insert controller
Import configuration
Connect controller with KNX devices
Parameters of the device
Download ETS configuration to controller
Make changes
Data conversion
Further information
Communication
with Modbus RTU
Protocol description
Technical data
Modbus addresses for AC500-eCo processor modules PM50x2
Modbus addresses for processor modules PM56xx
Modbus address table
Peculiarities for accessing Modbus addresses
Areas protect from read/write access by Modbus client
Local data of the Modbus client
Modbus telegrams
General
FCT 1 or 2: Read n bits
FCT 3 or 4: Read n words
FCT 3 or 4: Read n double words
FCT
5: Write 1 bit
FCT
6: Write 1 word
FCT 15: Write n bits
FCT
16: Write n words
FCT
16: Write n double words
FCT 22: Mask write register
FCT 23: Read/Write n words
Exception response by server
Processing bits
General
Modbus client
Modbus server
Using the bit offset
Defining symbolic names for the bit offsets
Defining a data type
Defining a complex data type
Pack/unpack BOOL variables
Function block ModRtuMast
Communication
with ModbusTCP/IP
Protocol description
Technical data
Modbus addresses for AC500-eCo processor modules PM50xx
Modbus addresses for processor modules PM56xx
Modbus address table
Peculiarities for accessing Modbus addresses
Areas protect from read/write access by Modbus client
Local data of the Modbus client
Modbus telegrams
Exception response by server
Processing bits
General
Modbus client
Modbus server
Using the bit offset
Defining symbolic names for the bit offsets
Defining a data type
Defining a complex data type
Pack/unpack BOOL variables
Function block ModTcpMast
Communication with PROFINET redundancy
Fast counters in AC500 devices
Fast counter in AC500-eCo
Onboard I/O on AC500-eCo processor modules
Intended purpose
Functionality
Simple motion
Introduction
Hardware components for motion control
Basic CPU – PM5012-R-ETH and PM5012-T-ETH
Standard and Pro CPU - PM5032-x-ETH/PM5052-x-ETH/PM5072-T-2ETH(W)/PM5082-T-2ETH
System technology
General
Use the onboard I/Os as encoder with A and B signals
Parameter configuration
Function block
Use the onboard I/Os as forward counter
Parameter configuration
Function block
Use the onboard I/Os as interrupt input with dedicated interrupt task
Parameter configuration
Function block
Use the onboard I/Os as output limit switch
Parameter configuration
Function block
Use the onboard I/Os as pulse-train output (PTO)
100 kHz frequency (max. 2 pulse-train outputs using pulse-train output hardware channels)
Parameter configuration
Function block
200 kHz frequency (max. 2 pulse-train output using pulse-train output hardware channels)
and simple motion “OBIOMotionPTO” function block
Parameter configuration
Function block
100 kHz...200 kHz frequency (max. 4 pulse-train output using puls-width modulation
(PWM) hardware channels) and simple motion “OBIOMotionPWM” function block
Parameter configuration
Function block
Use the onboard I/Os as output pulse-width modulation (PWM)
Parameter configuration
Function block
Function block description
AC500-eCo option board slots for processor modules PM50xx
General
Option board for COMx serial communication
Option board for digital I/O extension
Option board for analog I/O extension
Option board for specific function
Access to digital I/Os transferred as bit strings WORD/DWORD
General
Bit strings transferred to PLC in little-endian byte order (Intel)
Access to bit strings transferred to PLC in little-endian byte order
Representation of bitfields in I/O configuration transferred in little-endian byte order
Bit strings transferred to PLC in big-endian byte order (Motorola)
Access to bit strings transferred to PLC in big-endian byte order
Representation of bitfields in I/O configuration transferred in big-endian byte order
System technology of the AC500 communication modules
CANopen communication modules
Triggering of event tasks with CAN-IDs
CM582-DP/CM592-DP PROFIBUS DP communication modules
CM5640-2ETH Ethernet communication module
System technology of the communication interface modules
Modbus communication interface module
Overview
Modbus TCP registers
Register layout for CI52x-MODTCP
Information data section (acyclic data)
General
Module specific information registers
Common device information registers
I/O / Process data and diagnosis section (cyclic data)
General
Module state
Diagnosis data
I/O data
Parameter data (acyclic data)
General
Short description of the CI521-MODTCP parameters
Short description of the CI522-MODTCP parameters
Parameters of connected expansion modules
Special functionality
Behavior
IP address assignment
General
Using the address switches
Using the IP configuration tool
Parameterization
Cyclic I/O data exchange
Diagnosis behavior
Single parameterization
Commissioning example
Hot swap
Introduction
Preconditions for using hot swap
Compatibility of hot swap
Hot swap behavior
System behavior
Mandatory rules for hot swapping
PROFINET communication interface module
Hot swap
Introduction
Preconditions for Using Hot Swap
Compatibility of hot swap
Hot swap behavior
System behavior
Mandatory rules for hot swapping
PROFIBUS communication interface module
Hot swap
Introduction
Preconditions for using hot swap
CI54x-DP, index >= F1
Diagnosis and debugging
The
diagnosis system
General
Access to diagnosis data
Diagnosis in CPU display
Device state
Diagnosis descriptions
DIAG - reading out diagnosis messages
Diagnosis in Automation Builder
Device state
Diagnosis descriptions
System diagnosis
Device diagnosis
Diagnosis history
Diagnosis in IEC application
General
Data types in library AC500_DiagTypes
General
Structure DIAG_VAL_TYPE
Structure DIAG_TXT_TYPE
Enumeration ERROR_ID
Enumeration teClass
Enumeration teEvent
Enumeration teHwId
System diagnosis
Introduction
Device state
General
Method NumTotal
Method NumClass
Diagnosis descriptions
General
Method Ack / DiagAck: acknowledgement
Methods Get... / DiagGet...: get and sort diagnosis messages