View Issue Details

IDProjectCategoryView StatusLast Update
000477910000-003: Address SpaceApi Changepublic2022-07-19 16:32
ReporterDavid Levine Assigned ToJeff Harding  
PrioritynormalSeveritymajorReproducibilityalways
Status assignedResolutionopen 
Summary0004779: Define constraints on Variables with ValueRank of 0, -2 and -3, and on data type
Description

Some devices and networks need to know at configuration time what the data payloads will be. e.g. TSN cannot be scheduled without knowing max payload size, PLCs need to know max processing time to copy data around, etc. The current spec allows servers to defer defining array sizes until runtime, and in some cases the client will not know what it is getting until it receives the data.

For example, currently if a Variable has ValueRank = -2 the only reliable way to determine if it is an array or a scalar is to read the entire value and see how big it is. There is no guarantee that it wont change during the session or at the start of a new session.
Some additional constraints could be that when the Variable has ValueRank = -2 and it is instantiated as an array, the ArrayDimensions attribute must be completely defined and the ValueRank set to the number of dimensions of the array. If it is instantiated as a scalar then ValueRank shall be set to -1.

A similar problem would exist with arrays of variants, where each element is a different data type and size.

This could be handled as a new profile/conformance unit, or to create subtypes with the additional behaviors specified.
The advantage of a profile or conformance unit is that it could be tested during certification. The advantage of a subtype is that it can be used with any profile.

Steps To Reproduce

Both the Softing demo server and the UnifiedAutomation demo server provide some examples of the problem. They do not have Variable nodes with ValueRank = -2 or -3, but they demonstrate different aspects of the issue. UAExpert provides a simple means of changing the array or matrix.

The UA demo server allows the user to manually change the size and dimension of an array. When the client writes an array it does not use an IndexRange. When the server receives the array and it is a different size it replaces the current array with the new one - the ArrayDimensions value remains unchanged. You can also change the number and size of a multi-dimension array.

The Softing demo server's dynamic arrays are constantly changing size - each time the Variable is read it returns a different length array. The ArrayDimensions is not updated.

TagsNo tags attached.
Commit Version
Fix Due Date

Activities

Jim Luth

2022-07-19 16:01

administrator   ~0017153

Clarify that the max value in ArrayDimensions must be honored by the server. Also clarify that the ValueRank and DataType cannot be violated and that the DataType NodeId must be valid.

Issue History

Date Modified Username Field Change
2019-06-07 13:34 David Levine New Issue
2021-04-14 17:29 Jim Luth Project UA => Feature Requests
2022-07-19 15:59 Jim Luth Project Feature Requests => 10000-003: Address Space
2022-07-19 15:59 Jim Luth Category Feature Request => Api Change
2022-07-19 15:59 Jim Luth Assigned To => Jeff Harding
2022-07-19 15:59 Jim Luth Status new => assigned
2022-07-19 16:01 Jim Luth Note Added: 0017153