View Issue Details

IDProjectCategoryView StatusLast Update
000987910000-004: ServicesSpecpublic2025-02-18 17:20
ReporterMarcel Patzlaff Assigned ToMatthias Damm  
PrioritynormalSeveritymajorReproducibilityalways
Status assignedResolutionopen 
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 Version1.05.06 RC1
Fix Due Date2025-04-15

Relationships

related to 0009880 assignedMatthias Damm Clarification needed which RolePermissions to apply when using the "Call" service 

Activities

Marcel Patzlaff

2025-01-21 07:40

reporter   ~0022317

Is there anything new to this issue? It would be great if someone at least can point to a direction.

Jim Luth

2025-01-28 18:25

administrator   ~0022346

Last edited: 2025-01-28 18:27

Agreed to clarify the description of methodId in the Call service change "the ObjectType of the Object" to "the ObjectType of the Object or a super type of that ObjectType". And any other text that needs to be updated to be consistent.

So for all cases in the example:

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

Issue History

Date Modified Username Field Change
2024-10-10 09:20 Marcel Patzlaff New Issue
2025-01-21 07:40 Marcel Patzlaff Note Added: 0022317
2025-01-28 18:25 Jim Luth Note Added: 0022346
2025-01-28 18:26 Jim Luth Note Edited: 0022346
2025-01-28 18:27 Jim Luth Note Edited: 0022346
2025-01-28 18:27 Jim Luth Assigned To => Matthias Damm
2025-01-28 18:27 Jim Luth Status new => assigned
2025-01-28 18:28 Jim Luth Commit Version => 1.05.06 RC1
2025-01-28 18:28 Jim Luth Fix Due Date => 2025-04-15
2025-02-18 17:20 Jim Luth Relationship added related to 0009880