show the entry list
Search for minimum / maximum values (slave pointer) and averaging.
Part number:

QUESTION:
How can I determine the minimum/maximum values from the values in a data block?

ANSWER:
The search for minimum / maximum values within a data block (slave pointer) can be done by means of loop programming. The attached sample program facilitates the search for minimum / maximum values in a data block and calculates the average.

Description of the function:
The search for the minimum/maximum values, including averaging, is created as a function. An IN parameter is used to define the data block in which the search is to be performed. The data type ID defines the data type of the values in the data block.

Browsing takes place within a loop. The number of loop runs is calculated from the number of bytes in the DB and the data type ID. The number of bytes in the DB is ascertained via the system function SFC 24.

The function presupposes that there are only values of one data type in the DB. The DB is tested from address 0 on in data type increments. The values are totaled at the same time and are divided by the number of values at the end (averaged).

If the length of the DB is incompatible with the data type, the amount remaining (e.g. 2 bytes in the case of the REAL data type) is ignored.
If the DB is smaller than the length of the data type, a parameter assignment error is output. This also happens if the DB doesn't exist (info supplied by SFC 24).

The average is output as a REAL value. The min./max. values are saved for all the data types in DWORD variables. The actual data type is maintained. This means that the OUT parameters for the function can be allocated to variables with the corresponding data types (without conversion functions) (refer to the example).

CALL "MinMax"
DBNumber :=3
DatatypeID :=1 // Identifier for INT
MinValue :=MD20
AverageValue:= #Average
MaxValue :=MD24
PAFE :=#Error
// from DWORD to INT
L MD 20
T #IntegerVariable_Min
L MD 24
T #IntegerVariable_Max

Interface description of the function FC 1 "MinMax":

Declaration

Name

Type

Description

IN

DBNumber

INT

Number of the DB being checked

IN

DatatypeID

INT

Data type identifier: 1=INT; 2=DINT; 3=REAL

OUT

MinValue

DWORD

Minimum value arising in the DB

OUT

AverageValue

REAL

Average value calculated over the number of values

OUT

MaxValue

DWORD

Maximum value arising in the DB

OUT

PAFE

BOOL

Parameter assignment error

N.B.
Address registers are not changed by the function.

Description of the sample program:
In the programming example, "MinMax" is called up in OB 1 via FC 1. In the current example a search is performed for the minimum/maximum values in DB 3. DB 3 contains "INT"-type values.
In order to facilitate further tests, DB 4 is prepared with DINT-type values and DB 5 is prepared with "REAL"-type values, and the requisite FC 1 call is available in OB 1 as a source code.
You can use the variable declaration table to monitor the OUT parameters of the function and to change the values in the DBs.

The attached download contains the STEP 7 project with the function block for determining the minimum/maximum values and for averaging, as well as the prepared data blocks and variable declaration tables.

Min_Max.exe

Copy the "Min_Max.exe" file to a separate folder and then double-click on the file to start it. The STEP 7 project is now automatically extracted along with all its sub-folders. You can now open and process the extracted project using the SIMATIC Manager.

Runnability and test environment:
The example can be used on all the CPU variants of SIMATIC S7-300, S7-400 and WinAC.
The following table lists the components which have been used to create this entry and verify the functions described:

Test environment

Version / Release

PC platform

Pentium III 800 MHz, 264 MB

Operating system

Windows XP

STEP 7

V5.2

S7-CPU

CPU 315-2DP
(6ES7315-2AF03-0AB0)


Filter criteria:
Hardware platform: SIMATIC S7-300/S7-400
Software: STEP 7 up to V5.x
Entry contents: Function blocks/tools
 Entry ID:16772536   Date:2003-08-29 
I regard this article....as helpfulas not helpful                                 
related links
pre-assigning / filling in a data ...
Search for a pattern in a sequenc ...
WinCC: Communication
SIMOTION PLCopen Blocks
SIMOTION PLCopen Blocks
mySupport
My Documentation Manager 
Newsletter 
CAx-Download-Manager 
Support Request
Contact
Support Request
Contacts worldwide
Technical Forum
QuickLinks
Compatibility tool 
Performance Data 
Micro Automation Sets
Help
Online Help
Guided Tour
More info on the AV Card
More info on the AV Card