View Issue Details

IDProjectCategoryView StatusLast Update
000987910000-004: ServicesSpecpublic2024-10-10 09:20
ReporterMarcel Patzlaff Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status newResolutionopen 
Product Version1.05.03 
Summary0009879: Clarification needed for the method resolution process in "Call" service
Description

There is some confusion in Part 4 and Part 3 regarding which "objectId" - "methodId" combinations are allowed to be provided to the "Call" service. I will point this out in detail using the following imaginary information model:

  • 2 ObjectTypes ("SuperFooType", "FooType") and 1 Object ("Foo") with the following references "SuperFooType" <-isSubTypeOf- "FooType" <-hasTypeDefinition- "Foo"
  • 3 Methods ("DoSomething") belonging to each of the nodes above:
    • "SuperFooType" -hasComponent-> "DoSomething" (i=111)
    • "FooType" -hasComponent-> "DoSomething" (i=222)
    • "Foo" -hasComponent-> "DoSomething" (i=333)

Now, according to description of parameter "objectId" of the "Call" service (see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.11.2) the following situation is given:

  • Calling i=111 on "Foo" object -> shall work
  • Calling i=222 on "Foo" object -> shall work
  • Calling i=333 on "Foo" object -> shall work

Looking at the description of parameter "methodId" the following situation is given:

  • Calling i=111 on "Foo" object -> shall it work or not?
  • Calling i=222 on "Foo" object -> shall work
  • Calling i=333 on "Foo" object -> shall work

Now switching to Part 3 (see https://reference.opcfoundation.org/Core/Part3/v105/docs/5.7) there is this passage:

"A Method shall always be the TargetNode of at least one HasComponent Reference. The SourceNode of these HasComponent References shall be an Object or an ObjectType. If a Method is called, then the NodeId of one of those Nodes shall be put into the Call Service defined in OPC 10000-4 as parameter to detect the context of the Method operation."

This basically translates to the following situation:

  • Calling i=111 on "Foo" object -> shall not work
  • Calling i=222 on "Foo" object -> shall not work
  • Calling i=333 on "Foo" object -> shall work

Given the intention of Methods in Part 3 (https://reference.opcfoundation.org/Core/Part3/v105/docs/4.8) the wording should be adjusted properly.

My suggestion would be to take the "objectId" description of the "Call" service as truth because it fits best to the desire to have method calls behave like they do in any object-oriented programming language. This shall than be reflected on all the locations above.

TagsNo tags attached.
Commit Version
Fix Due Date

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2024-10-10 09:20 Marcel Patzlaff New Issue