fwConfigs  8.4.5
fwPeriphAddressS7.ctl File Reference

Functions

 _fwPeriphAddressS7_set (string dpe, dyn_anytype addressConfig, dyn_string &exceptionInfo, bool setWait=true)
 
private void fwPeriphAddress_parseS7Address_DBx (string addr)
 
private void fwPeriphAddress_parseS7Address_main (string addr)
 
 fwPeriphAddress_checkS7Parameters (dyn_string dsParameters, dyn_string &exceptionInfo)
 
 _fwPeriphAddressS7_get (string dpe, dyn_anytype &addressConfig, bool &isActive, dyn_string &exceptionInfo)
 
 _fwPeriphAddressS7_delete (string dpe, dyn_string &exceptionInfo)
 
 _fwPeriphAddressS7_initPanel (string dpe, dyn_string &exceptionInfo)
 
string _fwPeriphAddressS7_setValuesFromRef (string reference, string sSystemName)
 
int _fwPeriphAddressS7_getTransfo ()
 
string _fwPeriphAddressS7_encodeAddress ()
 
int _fwPeriphAddressS7_getDir (int directionModeS7, int receiveMode)
 
 _fwPeriphAddressS7_setIOMode (int io, int im, string sSystemName)
 

Detailed Description

This library contains function associated with S7 addressing. Functions are provided to set, get and delete the addressing for a dpe

Creation Date
24/04/2005
Modification History

09/07/2014 Marco Boccioli

09/07/2014 Marco Boccioli

  • {FWCORE-3175}: Error when modifying S7 non-polling address if the address is not in polling mode, don't set the polling group

01/08/2014 Marco Boccioli

  • {FWCORE-3150} : S7 Config addresses pollgroups. Added if (pollGroup == "_") pollGroup = ""; to _fwPeriphAddressS7_set()

12/11/2012 Marco Boccioli

  • {FWCORE-3128} : Modified line on fwPeriphAddressS7_set() : if(strlen(pollGroup)>0 && strpos(pollGroup,"</em>")!=0 && dpSubStr(pollGroup,DPSUB_SYS)==0)

12/11/2012 Marco Boccioli

  • {FWCORE-3101} : Modified line on fwPeriphAddressS7_set() : if(strlen(pollGroup) && strpos(pollGroup,"</em>")!=0) pollGroup = "_"+pollGroup;

13/09/2011 Marco Boccioli

  • {49981}: Poll groups for S7 driver: inconsistency in poll group name. On fwPeriphAddressS7_set(), the leading "</em>" is now added automatically if not specified.

Constraints
None
Usage
Public
PVSS managers
VISION, CTRL
Author
Enrique BLANCO (AB-CO)

Function Documentation

_fwPeriphAddressS7_set ( string  dpe,
dyn_anytype  addressConfig,
dyn_string &  exceptionInfo,
bool  setWait = true 
)
Set the S7 addressing

Note: This function should not be called directly. Call the fwPeriphAddress_set instead.

Constraints
None
Usage
Internal
PVSS managers
VISION, CTRL
Parameters
dpeinput, data point element to configure
addressConfiginput, object containing address configuration details
exceptionInfooutput, details of any exceptions are returned here
private void fwPeriphAddress_parseS7Address_DBx ( string  addr)

Parse the DBx part of the address, throwing exceptions as necessary

private void fwPeriphAddress_parseS7Address_main ( string  addr)

Allowed patterns {T,Z}y {DBx.DBX , M , E , I , A , Q}y[.z] {DBx.DB, M , E , I , A , Q}{B,W,D}y {DBx.DB, M}DyF

Note that "DB*y" are supposed to be already truncated to "B*y" and bit-included "Qy.z" are converted to "Q#y.z" (actually "Q#y"), and "DBXy.z" into "X#y.z" (actually "X#y"). similarly Ty and Zy were changed to T::y and Z::y

In short: the "addr" will always have two letters: either padded with "#" on 2nd char, or DBX truncated to BX

fwPeriphAddress_checkS7Parameters ( dyn_string  dsParameters,
dyn_string &  exceptionInfo 
)
Check if data is Ok to set a S7 address

The address is generally a dot-separated string, with:

  • the first item: the name of the S7 Connections as configured in WinCC OA
  • the second item: the identification of the data block (DBx)
  • the third item: the starting address of the data inside the data block, plus some typing information
  • optionally, the fourth: the bit number inside a byte variable In addition, there may be a colon plus a number, telling the length of the (blob) variable. Note that in the PLC-world, the addressing would be the tokens 2,3 (and eventually 4).

There may also be the symbolic addressing. Again, the first item (before the dot) is the connection name, while the second has some specific formatting.

It may also be a timer or a counter, in which name there are again only 2 items.

Alarm addresses ("TestS7.:1:2:3") are not supported.

Here are a couple of examples:

MyS7Connection.DB498.DBB512:200 - data block 498, start at byte 512, take a blob, and extract 200 bytes; the connection is defined as "MyS7Connection" inside WinCC OA

MyS7Connection.DB1.DBX30.3 - data block 1, start at byte 30, take bit 3 in "MyS7Connection"

MyS7Connection.T5 - timer 5

MyS7Connection.Z3 - counter 3

Constraints
None
Usage
Public
PVSS managers
VISION, CTRL
Parameters
dsParametersparameters used to set the _address config (see constants definition)
exceptionInfofor any error. If a parameter is incorrect, exceptionInfo is not empty !
_fwPeriphAddressS7_get ( string  dpe,
dyn_anytype &  addressConfig,
bool &  isActive,
dyn_string &  exceptionInfo 
)
Get the S7 addressing

Note: This function should not be called directly. Call the fwPeriphAddress_get instead.

Constraints
None
Usage
Internal
PVSS managers
VISION, CTRL
Parameters
dpeinput, data point element to read
addressConfigoutput, object containing address configuration details
isActiveoutput, TRUE is addressing is active, else FALSE
exceptionInfooutput, details of any exceptions are returned here
_fwPeriphAddressS7_delete ( string  dpe,
dyn_string &  exceptionInfo 
)
Delete the S7 addressing

Note: This function should not be called directly. Call the fwPeriphAddress_delete instead.

Constraints
None
Usage
Internal
PVSS managers
VISION, CTRL
Parameters
dpeinput, data point element to configure
exceptionInfooutput, details of any exceptions are returned here
_fwPeriphAddressS7_initPanel ( string  dpe,
dyn_string &  exceptionInfo 
)
Initialise the graphics of the address panel symbol.

Note: This function should only be called from fwPeriphAddres.pnl.

Constraints
None
Usage
Internal
PVSS managers
VISION
Parameters
dpeinput, data point element to configure
exceptionInfooutput, details of any exceptions are returned here
string _fwPeriphAddressS7_setValuesFromRef ( string  reference,
string  sSystemName 
)
Set S7 panel values

Note: This function fills the panel fields in funciton of the REFERENCE selected by the user in several fields of the fwPeriphAddressS7.pnl

Constraints
None
Usage
Internal
PVSS managers
VISION, CTRL
Parameters
referenceinput, user introduced reference
sSystemNameinput, system name
Returns
output, encoded S7 address
int _fwPeriphAddressS7_getTransfo ( )
Recuperate transformation type

Note: This function recuperates the selected trasnforamtion type selected by the user in several fields of the fwPeriphAddressS7.pnl

Constraints
None
Usage
Internal
PVSS managers
VISION, CTRL
Returns
output, transformation type: i.e.: "701 --> int 16"
string _fwPeriphAddressS7_encodeAddress ( )
Encode the S7 address

Note: This function encodes the S7 address introduced by the user in several fields of the fwPeriphAddressS7.pnl

Constraints
None
Usage
Internal
PVSS managers
VISION, CTRL
Returns
correct address S7 type. i.e.: "DB100.DBX200.1"
int _fwPeriphAddressS7_getDir ( int  directionModeS7,
int  receiveMode 
)
Get the S7 IO mode

Note: This function gets the IO mode from the user selection in the _fwPeriphAddressS7.pnl. new constants are defined to the In/out modes

Constraints
None
Usage
Internal
PVSS managers
VISION, CTRL
Parameters
directionModeS7input, direction mode (Output, Input, Input/Output)
receiveModeinput, type mode (TSPP, Polling, Single Query)
_fwPeriphAddressS7_setIOMode ( int  io,
int  im,
string  sSystemName 
)
Set the S7 IO mode

Note: This function sets the IO mode from the user selection. There is the case "1" which is also used to set up the INPUT mode when user introduce an PLC peripherial INPUT from the address field.

Constraints
None
Usage
Internal
PVSS managers
VISION, CTRL
Parameters
ioinput, direction mode (Output, Input, Input/Output)
iminput, type mode (TSPP, Polling, Single Query)
sSystemNameinput, system name

!!pollgroup