View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0007715 | Part 81: UAFX Connecting Devices and Information Model [sg.BaseFacet] | Spec | public | 2022-02-10 13:46 | 2022-05-30 21:49 |
| Reporter | David Puffer | Assigned To | Paul Hunkar | ||
| Priority | normal | Severity | major | Reproducibility | have not tried |
| Status | closed | Resolution | won't fix | ||
| Product Version | 1.00.00 RC2 | ||||
| Summary | 0007715: 6.7.4 ProcessConnectionConfigurationSets Method: ActionEstablishConnections | ||||
| Description | Status quo: ProcessConnectionConfigurationSets accepts the enumeration constant "ActionEstablishConnections", which will cause the CM to deploy PubSubConfiguration to the ACs in question "as-is", i.e. without modifying the Enabled flag of PubSub configuration elements. This Action was introduced for the following reason: 1) Use-Case: A client may want to establish connections on an AC, but not enable all of them at once. The interface on the AC (EstablishConnections) permits this use-case (establish all connections without setting the EnableCommunicationCmd bit, then selectively enable the connections in question using a 2nd call with that bit set). The interface on the CM (ProcessConnectionConfigurationSets) allows this use-case only if multiple ConnectionConfigurationSets are used, e.g.: 10 connections shall be configured on AC1, but only 5 of them being enabled (with the other 5 possibly being enabled at a later point in time). Problem: ActionEstablishConnections will apply PubSubConfiguration as-is, without modifying the Enabled flag of PubSub configuration elements.
Proposal: 1) Remove ActionEstablishConnections for release 1.00.00 completely. Use-Case is solvable as described above. If vendors do not want to split CCS to enable this use-case, they may provide vendor-specific configuration information in the configuration that is deployed from the ET to the CM, to indicate which connections within a CCS shall only be deployed. They may then simply use the EstablishConnections interface on the AC to enable this use-case. 2) Specify this use-case in detail for C2D (e.g. by Kuka and other vendors who require this use-case), and add a corresponding interface in the CM IM for C2D. Followup-Proposal: If the above proposal is accepted, there is no more reason for EstablishConnections to accept PubSubConfiguration elements with the Enabled flag set to anything else than false. | ||||
| Tags | No tags attached. | ||||
|
|
Use case described in 1) does not take into account that none of the connection are to be create if any of them fails. ConnectionConfigurationSets are processed as a unit, so separating them into enable and not enable break this unit and could cause multiple other problems. This option is one of three enumeration, it is the one that would be used by a knowledgeable configuration expert /well designed tool. This is not about an engineer making a mistake, there are many other mistakes an engineer could make, such as setting intervals incorrectly (keep alive vs handshake etc.) again a well designed engineering tool would prevent this - so we do not add code to AC or CM to to check or overwrite this. If we are worried about being able to debug what configuration is pushed down - the simpler solution is to require CommunicationModelConfigurationType be exposed instead of leaving it as optional (this could be done in a profile, if not in the specification). Actually the more I look at this I think leaving it as optional is a mistake, and maybe your entire discussion on diagnostic would go away. I can actually think of many other diagnostic difficulties that could result if this is not exposed. I think the additional interface does not help matter and I don't believe it is only a C2D issue, in the process world that are many case where communication is configured, but not enable until needed (for example in batch processing). [note enabling a single writer or reader is something that one can already do via the PubSub interfaces, if they are exposed, so again maybe the solution is to require that these interface be exposed, so that an application could enable communication or disable it as needed - i..e not just a connectionmanager.] This issue can be discussed, but I would not change the numeration option, but if diagnostics is a major issue I would instead mandate the communicationconfiguration be exposed and optionally the PubSub configuration . I would also feel that this issue has been discussed for a long time when the enumeration was decided and revisiting that issue again, when no actual problem exist may be counter productive to getting the specification actually released, so the best solution is a "No Change Required" |
|
|
Correct. And yet, this use-case has never been discussed in detail, and we may be even missing more requirements. It only came up when we discussed the value of the enabled flag for PubSub elements when we discovered that this use-case was not possible with the current CM interface. Even considering that an automatic rollback for CCS that are split into multiple ones, will not work, this use-case could be solved for C2C MVS by other means: 1) An application (e.g. standard OPC UA client or vendor-specific tool) using the methods of the CM, may be aware of the requirement, that 2 distinct CCSs are supposed to be treated as 1 (e.g. the system integrator may know this) - and call CloseConnections(Remove = true) on both CCs, if 1 or both fail to establish. A subsequent version of the specification may solve this use-case like so: 1) Use existing method ProcessConnectionConfigurationSet(ActionEstablishConnectionsDisabled, Ccs) to establish all connections in the CCS in a disabled state, making use of potential rollback.
The expert using the (engineering) tool may not be the same as the one using an OPC UA Client to call methods on the CM. This is not about relying that experts dont make mistakes. It is about avoiding the consequences if mistakes do happen despite experts using a system. We may inquire at the FA/PA team and/or SC, WG Arch, about whether this use-case is important enough for C2C MVS to warrant potential problems in the field.
I support the proposal of making it mandatory to expose the PubSubConfiguration used, but if, then only as binary file that can be downloaded on demand (RAM). At least for B&R, RAM consumption in combination with OPC UA is an issue - we'd have to find a solution that does not require the whole file to be loaded into RAM upon download.
ad C2D vs C2C: If this is a use-case that must be solved for C2C, then there should be or should have been an explicit document requirement for it (I am not aware of one). As of now, we are discussing a use-case that has not been considered in the design, when we are already at the stage of an RC2. We should not sacrifice design for a use-case that was not considered from the beginning.
I do not agree: members of the group have pointed out the problem / design issue with allowing this, from the time when this was first discussed. I propose to remove this enum constant completely for v1.0, and extend the CM interface with the outlined Method (or something similar to be discussed) to solve this use-case in a subsequent version. |
|
|
Agreed to no changes to this issue |
|
|
reviewed in call - agreed to close this issue |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2022-02-10 13:46 | David Puffer | New Issue | |
| 2022-02-14 04:33 | Paul Hunkar | Note Added: 0015999 | |
| 2022-02-17 13:04 | David Puffer | Note Added: 0016036 | |
| 2022-04-29 13:54 | Paul Hunkar | Assigned To | => Paul Hunkar |
| 2022-04-29 13:54 | Paul Hunkar | Status | new => resolved |
| 2022-04-29 13:54 | Paul Hunkar | Resolution | open => won't fix |
| 2022-04-29 13:54 | Paul Hunkar | Note Added: 0016658 | |
| 2022-04-29 13:55 | Paul Hunkar | Status | resolved => closed |
| 2022-04-29 13:55 | Paul Hunkar | Note Added: 0016659 | |
| 2022-05-30 21:49 | Paul Hunkar | Target Version | 1.00.00 Release => |