CNCT (FB) ¶ FUNCTION_BLOCK CNCT This function block establishes a Profinet DeviceAccess-AR or a Profibus-DPV2 connection. Supervisors need this connections to access a Field Device, e.g. for writing parameters. One instance of a CNCT function block provides one instance of a peer-to-peer connection to a Field Device. Only one connection to the same Field Device can be established. A connection is established when the REQ input is equal to TRUE. The IO Subsystem remains connected as long as the function block is called with REQ = TRUE or an error is indicated. The variable given D_ADDR input shall identify the destination Field Device. The ID output identifies the established connection to this Field Device (used for the functions blocks RDREC and WRREC . If the connection is established successfully, the VALID output indicates that the connection can be used. Note In case of inactivity, which means there are no read-/write-services transfered on the established connection, the connection may be aborted by the IO subsystem (e.g. after 20 sec.) Note The CNCT function block defines a connection to a slot or subslot of a Field Device and returns a handle via the ID output. This connection establishes an Application Relationship (AR) to the Field Device. If another connection and handle is needed to the same Field Device the existing AR may be used. Code-Example: establish a Supervisor connection PROGRAM PLC_PRG VAR cnct : CommFB.CNCT ; startConnect : BOOL ; //establish a Supervisor connection rdrec : CommFB.RDREC ; loadData : BOOL ; buffer : ARRAY [0..255] OF BYTE ; END_VAR cnct.D_ADDR.SYSTEM := CommfB.IO_SYSTEM_TYPE.PROFINET_IO ; cnct.D_ADDR.PN.D.STATIONNAME := 'pnDevice' ; cnct.D_ADDR.PN.D.VENDOR := 16#011D ; //get this data from GSDML or DCP_Identify / Scan cnct.D_ADDR.PN.D.DEVICE := 16#02EE ; cnct.D_ADDR.PN.D.INSTANCE := 0 ; cnct.D_ADDR.PN.SLOT := 0 ; cnct.D_ADDR.PN.SUBSLOT := 1 ; cnct.REQ := startConnect ; cnct (); IF ( cnct.VALID ) THEN loadData := TRUE ; ELSIF ( cnct.ERROR ) THEN //re-connect, if connection timed out startConnect := ( cnct.STATUS = CommFB.ErrorCode.TIMEOUT ); END_IF // Read Diagnosis-Data rdrec.REQ := loadData ; rdrec.ID := cnct.ID ; rdrec.INDEX := TO_INT ( ProfinetCommon.DiagnosisRecordIndex.Device ); rdrec.MLEN := TO_INT ( SIZEOF ( buffer )); rdrec.RECORD := ADR ( buffer ); rdrec (); IF ( rdrec.REQ ) THEN IF ( rdrec.VALID ) THEN loadData := FALSE ; startConnect := FALSE ; //Release connection END_IF END_IF rdrec.REQ := rdrec.BUSY ; InOut: Scope Name Type Initial Comment Input REQ BOOL Start Request D_ADDR ADDR_TYPE Data structure to define the address of a slot of a PROFIBUS DP-slave or a subslot of a PROFINET IO Device Output VALID BOOL Connection is valid ERROR BOOL Error detected BUSY BOOL FB is busy STATUS DWORD Last detected status ID DWORD Constants.INVALID_ID Identifier of a PROFIBUS DP-slave or a subslot of a PROFINET IO Device. Use for RDREC or WRREC (Class 2 / Supervisor Access)
Constants (GVL) ¶ Attributes: qualified_only InOut: Scope Name Type Initial Constant INVALID_ID UDINT 16#FFFFFFFF MAX_PN_ALARM_DATA UDINT 198
DP Address ¶ ADDR (Function) ID (Function) SLOT_ID (Function)
ADDR (FUN) ¶ FUNCTION ADDR : DWORD This function converts a handle which addresses a slot or a DP-slave into its physical address. InOut: Scope Name Type Initial Comment Return ADDR DWORD Input EN BOOL TRUE ID DWORD Slot or device handle Output ENO BOOL
ID (FUN) ¶ FUNCTION ID : DWORD This function converts the physical identification of a slot or a DP-slave to a handle which can be used with Communication Function Blocks. InOut: Scope Name Type Initial Comment Return ID DWORD Input EN BOOL TRUE MASTER BYTE ID of the DP system SEGMENT BYTE Number of the DP segment STATION BYTE Number of the DP-slave(station address) SLOT BYTE Slot number
WRREC (FB) ¶ FUNCTION_BLOCK WRREC Write Data Record (WRREC) This function block executes an acyclic write of user or system record-data. The ID parameter identifies the slot or subslot of the Field Device the process data record is written to. The INDEX input of the WRREC function block contains an integer which identifies the data record to be written. The data record shall be stored in the variable given at the RECORD parameter. The LEN input contains the length of the data record to be written in byte. The variable given as RECORD parameter shall be at least of LEN byte. The values of the RECORD and LEN parameters shall not be changed as long as the BUSY output is true. If the data record is written successfully, the DONE output indicates that the read data record is written to the Field Device. If an error occurred, the ERROR output indicates an error and the STATUS output contains the error code. InOut: Scope Name Type Comment Input REQ BOOL Request ID DWORD Identifier of a slot / subslot of a Field Device (see: AddressConcept ) INDEX INT Index of the data record LEN INT Length of the data record RECORD POINTER TO BYTE Data record Output DONE BOOL Data record written BUSY BOOL FB is busy ERROR BOOL Error detected STATUS DWORD Last detected status
File and Project Information ¶ Scope Name Type Content FileHeader creationDateTime date 29.03.2022, 09:31:49 companyName string 3S-Smart Software Solutions GmbH libraryFile CommFB.library primaryProject True productName CODESYS productProfile CODESYS V3.5 SP16 Patch 3 contentFile CommFB.clean.json version version 2.0.0.0 ProjectInformation IsEndUserLibrary bool True OnlineHelp True Released False LastModificationDateTime date 29.03.2022, 09:31:49 LibraryCategories library-category-list Application|Fieldbus Author string 3S - Smart Software Solutions GmbH Company 3S - Smart Software Solutions GmbH CompiledLibraryCompatibilityVersion CODESYS V3.5 SP15 DefaultNamespace CommFB Description See: Description DocFormat reStructuredText LanguageModelAttribute qualified-access-only Placeholder CommFB Project CommFB Title CommFB Version version 3.5.18.0
AsyncBase.LastActionFailed (PROP) ¶ PROPERTY LastActionFailed : BOOL Returns whether the execution of the last action failed due to reasons of the AsyncHandling
ErrorSituationTests (GVL) ¶ Attributes: qualified_only InOut: Name Type Helper ErrorSituationHelper