This ObjectType defines the representation of the machine vision system result management. Figure 17 shows the hierarchical structure and details of the composition. It is formally defined in Table 65.
ResultManagementType provides methods to query the results generated by the underlying vision system. Results can be stored in a local result store. An event of ResultReadyEventType, which is defined in Section 8.3.8.4, shall be triggered when the system generates a new result.
Figure 17 – Overview ResultManagementType
Table 65 – Definition of ResultManagementType
Attribute |
Value |
||||
BrowseName |
ResultManagementType |
||||
IsAbstract |
False |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
Subtype of the BaseObjectType defined in OPC 10000-5 |
|||||
HasComponent |
Method |
GetResultById |
-- |
-- |
Mandatory |
HasComponent |
Method |
GetResultComponentsById |
-- |
-- |
Mandatory |
HasComponent |
Method |
GetResultListFiltered |
-- |
-- |
Mandatory |
HasComponent |
Method |
ReleaseResultHandle |
-- |
-- |
Optional |
HasComponent |
Object |
ResultTransfer |
-- |
ResultTransferType |
Optional |
HasComponent |
Object |
Results |
-- |
ResultFolderType |
Optional |
ResultTransfer is an instance of the ResultTransferType defined in Section 7.12 and it is used to transfer the contents of a result by the temporary file transfer method defined in OPC 10000-5, Annex C.4.
Results is an Object of the ResultFolderType that organizes variables of the DataType ResultDataType which is defined in Section 12.17. If the server chooses to expose result information in the Address Space, it may contain the set of all results available on the system or a filtered subset, e.g. the set of all currently finished results. This is implementation-defined. If a server does not expose result information in the Address Space, this variable is expected to be non-existent.
This method is used to retrieve a result from the vision system. Depending on the design of the vision system, the client may be informed by events of ResultReadyEventType that a new result is available. Then, the client might fetch this result using the information provided by events of ResultReadyEventType which is defined in Section 8.3.8.4.
Since the resultId is supposed to be system-wide unique, this method shall return only a single result. Since there may be additional result content to be retrieved by temporary file transfer, the server should keep result data available, resources permitting, until the client releases the handle ReleaseResult. However, the client cannot rely on the data to remain available until then.
Signature
GetResultById ([in]ResultIdDataTyperesultId[in]Int32timeout[out]HandleresultHandle[out]ResultDataTyperesult[out]Int32error);
Table 66 – GetResultById Method Arguments
Argument |
Description |
resultId |
System-wide unique identifier for the result. |
timeout |
With this argument the client can give a hint to the server how long it will need access to the result data. A value > 0 indicates an estimated maximum time for processing the data in milliseconds. A value = 0 indicates that the client will not need anything besides the data returned by the method call. A value < 0 indicates that the client cannot give an estimate. The client cannot rely on the data being available during the indicated time period. The argument is merely a hint allowing the server to optimize its resource management. |
resultHandle |
The server shall return to each client requesting result data a system-wide unique handle identifying the result set / client combination. This handle should be used by the client to indicate to the server that the result data is no longer needed, allowing the server to optimize its resource handling . |
result |
The result including metadata. |
error |
0 – OK Values > 0 are reserved for errors defined by this and future standards. Values < 0 shall be used for application-specific errors. |
Table 67 – GetResultById Method AddressSpace Definition
Attribute |
Value |
||||
BrowseName |
GetResultById |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
HasProperty |
Variable |
InputArguments |
Argument[] |
PropertyType |
Mandatory |
HasProperty |
Variable |
OutputArguments |
Argument[] |
PropertyType |
Mandatory |
This method is used to retrieve a result from the vision system. It is basically identical to the GetResultById method described in Section 7.10.2.1, but it returns the result not in a single output argument of ResultDataType but in individual output arguments corresponding to the elements of the ResultDataType structure.
The reason for providing this method is to facilitate the use of subtypes to the structures nested inside of ResultDataType. Since the NodeIds of structured DataTypes nested within a structured DataType are not transferred together with the DataType, subtyping these nested structures would then also necessitate subtyping ResultDataType. This is of course possible, but in the absence of such a subtype, the individual components can still be requested by this method.
Signature
GetResultComponentsById ([in]ResultIdDataTyperesultId[in]Int32timeout[out]BooleanhasTransferableDataOnFile[out]HandleresultHandle[out]BooleanisPartial[out]BooleanisSimulated[out]ResultStateDataTyperesultState[out]MeasIdDataTypemeasId[out]PartIdDataTypepartId[out]RecipeIdExternalDataTypeexternalRecipeId[out]RecipeIdInternalDataTypeinternalRecipeId[out]ProductIdDataTypeproductId[out]ConfigurationIdDataTypeexternalConfigurationId[out]ConfigurationIdDataTypeinternalConfigurationId[out]JobIdDataTypejobId[out]UtcTimecreationTime[out]ProcessingTimesDataTypeprocessingTimes[out]BaseDataType[]resultContent[out]Int32error);
Table 68 – GetResultComponentsById Method Arguments
Argument |
Description |
resultId |
System-wide unique identifier for the result |
timeout |
With this argument the client can give a hint to the server how long it will need access to the result data. A value > 0 indicates an estimated maximum time for processing the data in milliseconds. A value = 0 indicates that the client will not need anything besides the data returned by the method call. A value < 0 indicates that the client cannot give an estimate. The client cannot rely on the data being available during the indicated time period. The argument is merely a hint allowing the server to optimize its resource management. |
hasTransferableDataOnFile |
Indicates that TemporaryFileTransfer needs to be used to retrieve all data of the result content. |
resultHandle |
The server shall return to each client requesting result data a system-wide unique handle identifying the result set / client combination. This handle should be used by the client to indicate to the server that the result data is no longer needed, allowing the server to optimize its resource handling. |
isPartial |
Indicates whether the result is the partial result of a total result. |
isSimulated |
Indicates whether the system was in simulation mode when the job generating this result was created. |
resultState |
ResultState provides information about the current state of a result and the ResultStateDataType is defined in Section 12.19. |
measId |
This identifier is given by the client when starting a single or continuous execution and transmitted to the vision system. It is used to identify the respective result data generated for this job. Although the system-wide unique JobId would be sufficient to identify the job which the result belongs to, this makes for easier filtering on the part of the client without keeping track of JobIds. |
partId |
A PartId is given by the client when starting the job; although the system-wide unique JobId would be sufficient to identify the job which the result belongs to, this makes for easier filtering on the part of the client without keeping track of JobIds. |
externalRecipeId |
External identifier of the recipe in use which produced the result. This is only managed by the environment. |
internalRecipeId |
Internal identifier of the recipe in use which produced the result. This identifier is system-wide unique and it is assigned by the vision system. |
productId |
Identifier of the product in use which produced the result. This is only managed by the environment. |
externalConfigurationId |
External identifier of the configuration in use while the result was produced. |
InternalConfigurationId |
Internal identifier of the configuration in use while the result was produced. This identifier is system-wide unique and it is assigned by the vision system. |
jobId |
The identifier of the job, created by the transition from state Ready to state SingleExecution or to state ContinuousExecution which produced the result. |
creationTime |
CreationTime indicates the time when the result was created. |
processingTimes |
Collection of different processing times that were needed to create the result. |
resultContent |
Abstract data type to be subtyped from to hold the actual result content created by the job. |
error |
0 – OK Values > 0 are reserved for errors defined by this and future standards. Values < 0 shall be used for application-specific errors. |
Table 69 – GetResultComponentsById Method AddressSpace Definition
Attribute |
Value |
||||
BrowseName |
GetResultById |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
HasProperty |
Variable |
InputArguments |
Argument[] |
PropertyType |
Mandatory |
HasProperty |
Variable |
OutputArguments |
Argument[] |
PropertyType |
Mandatory |
This method is used to get a list of results matching certain filter criteria.
Signature
GetResultListFiltered ([in]ResultStateDataTyperesultState[in]MeasIdDataTypemeasId[in]PartIdDataTypepartId[in]RecipeIdExternalDataTypeexternalRecipeId[in]RecipeIdInternalDataTypeinternalRecipeId[in]ConfigurationIdDataTypeexternalConfigurationId[in]ConfigurationIdDataTypeinternalConfigurationId[in]ProductIdDataTypeproductId[in]JobIdDataTypejobId[in]UInt32maxResults[in]UInt32startIndex[in]Int32timeout[out]BooleanisComplete[out]UInt32resultCount[out]HandleresultHandle[out]ResultDataType[]resultList[out]Int32error);
Table 70 – GetResultListFiltered Method Arguments
Argument |
Description |
resultState |
If not 0, only results having the specified state are returned. |
measId |
If not empty, only results corresponding to the given measId are returned |
partId |
If not empty, only results corresponding to the given partId are returned. |
externalRecipeId |
If not empty, only results corresponding to the given externalRecipeId are returned. |
internalRecipeId |
If not empty, only results corresponding to the given internalRecipeId are returned. |
externalConfigurationId |
If not empty, only results corresponding to the given externalConfigurationId are returned. |
internalConfigurationId |
If not empty, only results corresponding to the given internalConfigurationId are returned. |
productId |
If not empty, only results corresponding to the given productId are returned. |
jobId |
If not empty, only results corresponding to the given jobId are returned. |
maxResults |
Maximum number of results to return in one call; by passing 0, the client indicates that it does not put a limit on the number of results. |
startIndex |
Shall be 0 on the first call, multiples of maxResults on subsequent calls to retrieve portions of the entire list, if necessary. |
timeout |
With this argument the client can give a hint to the server how long it will need access to the result data. A value > 0 indicates an estimated maximum time for processing the data in milliseconds. A value = 0 indicates that the client will not need anything besides the data returned by the method call. A value < 0 indicates that the client cannot give an estimate. The client cannot rely on the data being available during the indicated time period. The argument is merely a hint allowing the server to optimize its resource management. |
isComplete |
Indicates whether there are more results in the entire list than retrieved according to startIndex and resultCount. |
resultCount |
Gives the number of valid results in ResultList. |
resultHandle |
The server shall return to each client requesting result data a system-wide unique handle identifying the result set / client combination. This handle has to be used by the client to release the result set. |
resultList |
List of results matching the Filter. |
error |
0 – OK Values > 0 are reserved for errors defined by this and future standards. Values < 0 shall be used for application-specific errors. |
Table 71 – GetResultListFiltered Method AddressSpace Definition
Attribute |
Value |
||||
BrowseName |
GetResultListFiltered |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
HasProperty |
Variable |
InputArguments |
Argument[] |
PropertyType |
Mandatory |
HasProperty |
Variable |
OutputArguments |
Argument[] |
PropertyType |
Mandatory |
There are the following cases with the respect to the number of results:
- The number of results to be returned according to the filter is less or equal to MaxResults; the first call, with startIndex =0, returns isComplete =TRUE, so the client knows that no further calls are necessary. resultCount gives the number of valid elements in the resultList array.
- The number of results to be returned is larger than maxResults; the first N calls (N > 0 with N ≤ (number of results) divisor MaxResults), with startIndex =(N-1)*maxResults, return isComplete =FALSE, so the client knows that further calls are necessary. The following call returns isComplete =TRUE, so the client knows, no further calls are necessary. resultCount gives the number of valid elements in the resultList array (on each call, so on the first N calls, this should be maxResults).
This method is used to inform the server that the client has finished processing a given result set allowing the server to free resources managing this result set.
The server should keep the data of the result set available for the client until the ReleaseResultHandle method is called or until a timeout given by the client has expired. However, the server is free to release the data at any time, depending on its internal resource management, so the client cannot rely on the data being available. ReleaseResultHandle is merely a hint allowing the server to optimize its internal resource management. For timeout usage see the description in Section 7.10.2.1.
Signature
ReleaseResultHandle ([in]HandleresultHandle[out]Int32error);
Table 72 – ReleaseResultHandle Method Arguments
Argument |
Description |
resultHandle |
Handle returned by GetResultById or GetResultList, identifying the result set/client combination. |
Error |
0 – OK Values > 0 are reserved for errors defined by this and future standards. Values < 0 shall be used for application-specific errors. |
Table 73 – ReleaseResultHandle Method AddressSpace Definition
Attribute |
Value |
||||
BrowseName |
ReleaseResultHandle |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
HasProperty |
Variable |
InputArguments |
Argument[] |
PropertyType |
Mandatory |
HasProperty |
Variable |
OutputArguments |
Argument[] |
PropertyType |
Mandatory |