:= := SAPI.OperatorAckProvider := SAPI.EnableTestMode waiting on next RequestSPDU from Safet圜onsumer SAPI.SafetyData:= 0SAPI.MonitoringNumber:= 0SAPI.Safet圜onsumerID:= 0 Table 22 – States of SafetyProvider instance Add the SPDU_ID_1, SPDU_ID_2, SPDU_ID_3, Flags, and SafetyData, as well as the calculated CRC. Take the MNR and the Safet圜onsumerID of the received RequestSPDU. Instruction to transfer the whole ResponseSPDU to the OPC UA Mapper Instruction to take the whole RequestSPDU from the OPC UA Mapper. Local Memory for RequestSPDU (required to react on changes). Table 21 – SafetyProvider instance internal items Table 20 – Symbols used for state machines. External events occurring while the state machine is in an action state, are deferred until the next activity state is reached. While activity states may be interruptible by new events, action states are not. Activity states are surrounded by bold lines, action states are surrounded by thin lines. The diagram consists of activity and action states. In case of several possible transitions, so-called guard conditions (refer to in UML diagrams) define which transition to fire The transitions are fired in case of an event, for example receiving a SPDU. Within these non-interruptible "action" states events like new request is deferred until the next "activity" state is reached, see. Within these interruptible "activity" states the SafetyProvider waits for new inputs. It is not required to literally follow the entries given in the tables, if the behavior does not change.įigure 16 – Simplified representation of the state diagram for the SafetyProvider The SafetyProvider shall implement that behavior. The exact behavior is described in Table 21, Table 22, and Table 23. Figure 16 shows a simplified representation of the state diagram of the SafetyProvider. The implementation and error reaction of ConsumerCycleTime is not part of OPC UA Safety it is vendor specific. It is the timeframe from one call of the Safet圜onsumer to the next call of the Safet圜onsumer. The ConsumerCycleTime is the maximum time for the cyclic update of the Safet圜onsumer. ConsumerCycleTime is expected to be smaller than Safet圜onsumerTimeout. To duly check its timer, the Safet圜onsumer is executed cyclically, with period ConsumerCycleTime. Otherwise, the watchdog timer expires, and the Safet圜onsumer triggers a safe reaction. If an appropriate ResponseSPDU is received in time, and the checks for data integrity, authenticity, and timeliness are all valid, the timer will not expire before it is restarted. The watchdog is restarted whenever a new RequestSPDU is generated (transitions T14 and T26 of the Safet圜onsumer). The Safet圜onsumerTimeout is the watchdog time checked in the Safet圜onsumer. when using client/server over TCP) and do not have to be corrected or re-transmitted by OPC UA Safety.įigure 15 – Sequence diagram for OPC UA Safety NOTE: Transmission errors are handled within the OPC UA stack (e.g. In ZenUML, you can create conditional interactions using exact same way you do in your program languages.8.1.2.2 SafetyProvider/-Consumer Sequence diagramįigure 15 shows the sequence of request and response with SafetyData and the timeouts for OPC UA Safety. Only when the condition is true does the sequence of events within that partition occur. The guard condition is a boolean expression that shows when the branch should be taken. Each section represents a branch of execution, and you annotate it with a guard condition.Divide the rectangle into sections for each alternative path.Draw a rectangle called a combined fragment and label it with alt. The alt fragment is used to represent alternative paths it's the UML equivalent of an if-else statement. But how do we illustrate an "if this, then that" scenario in a sequence diagram?Įnter the alt fragment. The same need to represent decision-making processes arises in sequence diagrams. When coding, conditional logic is instrumental in controlling the flow of execution. We'll also dive into the intriguing world of combined fragments such as alt, opt, loop, and break. Today, we're going to kick it up a notch and explore how to represent conditional logic (like if-else statements) and loops (for, while) in sequence diagrams. Welcome back to our series on UML Sequence Diagrams! In our previous posts, we've walked through the basics of sequence diagrams and how they can help us visualize the interactions between objects in our system. Advanced Uses of Sequence Diagrams: Conditions and Loops
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |