===== Interfaces ===== The modeling of intra-system interfaces is of great importance as it is often the case the failure of systems occurs at such interfaces. SysML allows for different interface semantics: * Port * Full Port * Proxy Port To create nested ports, e.g. live, neutral and ground pins on an AC plug, create a Block for Pin, create a Block for AC Plug. Add three ports to AC Plug, type each with Pin but call each a different usage (live, neutral and ground). {{ :bok:eng:mbse:sysml:bbd-ibd:ports1.png?600 |}} In the block that you want to own the AC Plug port, add a port and type it with AC Plug. Right clock the port and go Features->Interaction Points. Select the 3 pins and click ok. Now you're seeing nested ports {{ :bok:eng:mbse:sysml:bbd-ibd:port2.png?600 |}} In the above example Full Ports are used for nested parts but Proxy Ports can also be nested as below {{ :bok:eng:mbse:sysml:bbd-ibd:ports3.png?600 |}} ==== Full Port ==== Full ports are used for the design of physical ports. Use if part is on the BOM * Equivalent to a physical port on the boundary of the parent block * Can have nested parts and own behavior * Can modify incoming/outgoing flows * Can represent a physical part * Other blocks can connect to a Full Port even if the owning block isEncapsulated=true ==== Proxy Port ==== Proxy ports are used to specify the enclosed system as a black box. Used as a model construct (e.g. for interfacing of non-BOM parts, e.g. torque) * Proxy ports are not a part of the owning block * Provides access (or act as a window) to selected owning block's features without modifying inputs/outputs * Typed by **interface block** that specifies what features can be accessed * **Behavior Ports** are a subset of proxy ports which only provide access to the owning block's behavior (as opposed to the owning block's internal structure). How to use interface blocks to map onto properties of parent blocks ==== Connecting Proxy Ports ==== If connecting proxy ports to parts/full ports then the connection must be a **binding connection**. Internal connections connect a port (port A) to a port/part (entity B) that is owned by the same block that owns by initiating port (port A). Internal connections between proxy ports to other ports/parts must be in the same direction (i.e. proxy port A is IN, proxy port B is also IN). ==== Conjugating Ports ==== Conjugating ports reuse a single interaction block for proxy ports that exchange similar items but in the opposite direction. One port is made conjugate to another, meaning that the direction of behavior features and flow properties are reversed relative to the other 'base port'. {{ :bok:eng:mbse:sysml:bbd-ibd:ports4.png?600 |}} ==== Decomposing Ports and Connectors ==== Connectors can be used to connect directly to nested ports. Alternatively, an association block can be used to specify the details of a connection. Not forgetting that the association block is connected from block to block the resulting association block (in the below case "DB-9 Straight Cable") can be white boxed with an ibd of the association block. {{ :bok:eng:mbse:sysml:bbd-ibd:ports5.png?600 |}} In the ibd of the parent block (Block1) the connection appears as :db-9 straight cable and only gives a high level view of the connection. {{ :bok:eng:mbse:sysml:bbd-ibd:ports7.png?600 |}} If you wanted to white box the connection itself then in the ibd of the association block the ports of the participating properties can be made to appear and connectors drawn between them. {{ :bok:eng:mbse:sysml:bbd-ibd:ports6.png?600 |}}