Devices and resources conforming to this specification shall fulfill the following interoperability requirements.
The physical layer shall be Ethernet cabling and signalling per ISO/IEC 8802-3, preferably installed according to the guidelines established by IAONA.
Data link layer services shall be Ethernet per ISO/IEC 8802-3.
The Network layer services shall be Internet Protocol (IP) as defined in IETF RFCs 791, 792 and 950. Transport and Session layer services shall be Transmission Control Protocol (TCP) as defined in IETF RFC 761 or multicast User Datagram Protocol (UDP) as defined in IETF RFC 768, with packet lifetime limited to a single hop.
In order to avoid conflict with addresses reserved by IETF RFCs 1112 and 1700, the following restrictions shall be observed:
The services of these layers shall be provided by the functional equivalent of encapsulating an instance of the appropriate class from the package java.net, in an appropriate instance of an IEC 61499-1 Communication Service Interface Function Block (CSIFB). The encapsulated class corresponding to each generic CSIFB type is listed in Table 5.3. Implementation-specific details of CSIFB types are given in subclause 5.5.
Table 5.3 - Equivalent encapsulated
Java™ classes
|
Generic CSIFB type |
Encapsulated class |
| PUBLISH | java.net.DatagramSocket |
| SUBSCRIBE | java.net.MulticastSocket |
| CLIENT | java.net.Socket |
| SERVER | java.net.Socket |
Data shall be exchanged among devices using the IEC61499-FBDATA syntax and the COMPACT encoding defined in Annexes E.3.2 and E.3.3.2 of IEC 61499-1, respectively. The data transferred shall correspond to the ASN.1 expression
CHOICE{NULL, FBData, FBDataSequence}.
The encoding of an FBDataSequence element shall be constructed, and shall not include a type or length field. That is, this type shall be encoded simply as a sequence of FBData elements.
The NULL element shall be encoded as a single byte containing the tag of the NULL type (16#05) as defined in ISO/IEC 8825.
Since many run-time systems do not support unsigned 64-bit integer values, it is not required that the ULINT type be supported.
It is not required that the data types DATE and TIME_OF_DAY be supported, since strings representing their values can always be derived as substrings of a full string representation of the corresponding DATE_AND_TIME type.
The values of elementary data type elements shall be transferred according to the following modified ASN.1 syntax:
ElementaryData ::= CHOICE{
BOOL,
FixedLengthInteger,
FixedLengthReal,
TIME,
AnyDate,
AnyString,
FixedLengthBitString,
ARRAY}
Values of the time-related data types shall be encoded as specified in the syntax of Annex E.3.2 and the encoding rules of Table E.1 of IEC 61499-1, with the exception that the value of DATE_AND_TIME type shall be encoded as for type LINT rather than ULINT (see 5.4.3).
The length field of STRING and WSTRING elements shall be encoded as for the UINT type, i.e., a 16-bit unsigned integer.
NOTE - This would appear to restrict the maximum number of elements of a STRING or WSTRING to 65535. However, the actual length may be further restricted by the maximum number of octets that can be transferred by the underlying transport protocol. For UDP, this number is 65508. Thus, the maximum transmittable length of a STRING element using UDP would be (maximum octets - tag octets - length octets)/(character length) = (65508-1-2)/1 = 65505 characters, and the maximum transmittable length of a WSTRING element would be (65508-1-2)/2 = 32752 characters.
The encoded character sequence for both STRING and WSTRING values shall be such that the first character in the string is the first encoded value, e.g., for the string "ABC" the first encoded character shall be "A" and the last shall be "C". The values of the individual character elements of the STRING and WSTRING types shall be encoded in the same way as the values of the USINT and UINT types, respectively.
ARRAY elements shall be transferred according to the following modified ASN.1 syntax:
ARRAY ::= [APPLICATION 22] IMPLICIT SEQUENCE OF FBData
NOTE - Since ARRAY is a subclass of FBData, a multidimensional ARRAY may be encoded recursively as an ARRAY whose elements are ARRAY elements.
The encoding of ARRAY elements shall be constructed in the sense of ISO/IEC 8825, with the following provisions for COMPACT encoding:
NOTE - This would appear to restrict the maximum number of elements of an ARRAY to 65535. However, the actual length may be further restricted by the maximum number of octets that can be transferred by the underlying transport protocol. For UDP, this number is 65508. Then, for instance, the maximum transmittable length of an ARRAY of BYTE elements using UDP would be (maximum octets - tag octets - length octets - element type octets)/(element length) = (65508-1-2-1)/1 = 65504 elements.
Values of derived data types shall be transferred according to the following modified ASN.1 syntax:
DerivedData ::= CHOICE{
DirectlyDerivedData,
EnumeratedData,
SubrangeData,
ArrayData,
STRUCT}
The encoding of instances of structured data types shall be constructed in the sense of ISO/IEC 8825, with the following provisions for COMPACT encoding:
The encoding of values of enumerated data types shall use the COMPACT encoding rules, according to the following modified ASN.1 syntax:
EnumeratedData ::= [typeID] IMPLICIT USINT
The encoded value zero (0) shall correspond to the first enumerated value, with subsequent encoded values corresponding to the subsequent enumerated values.
NOTE - This limits the maximum number of enumerated values to 256.
The encoding of values of subrange data types shall use the COMPACT encoding rules, according to the IEC61499-FBDATA syntax given in IEC 61499-1-F.3.1.1.
Values of array data types shall be transferred according to the following modified ASN.1 syntax:
ArrayData ::= [typeID] IMPLICIT ARRAY
The encoding of values of array data types shall follow the rules given in 5.4.4.3, where the [APPLICATION 22] tag is replaced by the assigned tag of the array type.
Table 5.5 - STATUS output values
| Value | Corresponds to | Semantics |
| "OK" | INITO+, CNF+, IND+ | Valid operation |
| "INVALID_ID" | INITO- | Invalid ID input |
| "TERMINATED" | INITO- | Service termination |
| "INVALID_OBJECT" | CNF-, IND- | Invalid object type received or requested to be sent |
| "DATA_TYPE_ERROR" | CNF-, IND- | Received object type does not match actual output type |
| "INHIBITED" | CNF- | Caused by REQ- |
| "NO_SOCKET" | CNF- | No socket available to serve REQ+ |
| Other values | INITO-, CNF-, IND- | Socket service errors |