応用例: VXI11 の発展

10. 応用例: VXI11 の発展#

graphvizで作成した、VXI11規約とその他の規約との関係をしめした図を、 PlantUMLで書き直して見ました。

digraph VXI11 { graph[page="8,3"] node [shape=rect] edge [samehead=false] HPIB [label="HP-IB"] GPIB [label="GP-IB"] IEEE488 [label="IEEE-488"] IEEE488_1 [label="IEEE-488-1"] IEEE488_2 [label="IEEE-488-2"] USB SCPI USBTMC USBTMC_ [shape=point label="" height=0] ONCRPC [label="ONC-RPC"] VXI11 VXI11_1 [label="VXI11-1"] VXI11_2 [label="VXI11-2"] VXI11_3 [label="VXI11-3"] VXI11_1_ [shape=point height=0 label=""] VXI11_2_ [shape=point height=0 label=""] VXI11_3_ [shape=point height=0 label=""] VXI11_1_ -> VXI11_1 VXI11_2_ -> VXI11_2 VXI11_3_ -> VXI11_3 VME VXI HPIB -> GPIB -> IEEE488 -> {IEEE488_1 IEEE488_2} ONCRPC -> VXI11 VME -> VXI VXI -> VXI11_1_ [arrowhead=none weight=2] VXI11 -> VXI11_1_ [arrowhead=none weight=2] IEEE488_1 -> VXI11_2_ [arrowhead=none weight=2] VXI11 -> VXI11_2_ [arrowhead=none weight=2] VXI11 -> VXI11_3_ [arrowhead=none weight=2] IEEE488_2 -> VXI11_3_ [arrowhead=none weight=2] {rank=same VXI11_1_ VXI11_2_ VXI11_3_ USBTMC_ } IEEE488_2 -> SCPI -> USBTMC_ [arrowhead=none weight=3] USB ->USBTMC_ [arrowhead=none weight=3] USBTMC_ -> USBTMC {rank=same HPIB ONCRPC VME} {rank=same USB IEEE488 VXI} {rank=same IEEE488_1 IEEE488_2 VXI11} {rank=same USBTMC VXI11_1 VXI11_2 VXI11_3} }

図 10.1 graphviz による#

digraph VXI11 { graph[page="8,3"] node [shape=rect] edge [samehead=false] HPIB [label="HP-IB"] GPIB [label="GP-IB"] IEEE488 [label="IEEE-488"] IEEE488_1 [label="IEEE-488-1"] IEEE488_2 [label="IEEE-488-2"] USB SCPI USBTMC ONCRPC [label="ONC-RPC"] VXI11 VXI11_1 [label="VXI11-1"] VXI11_2 [label="VXI11-2"] VXI11_3 [label="VXI11-3"] VME VXI HPIB -> GPIB -> IEEE488 -> {IEEE488_1 IEEE488_2} ONCRPC -> VXI11 VME -> VXI VXI -> VXI11_1 VXI11 -> VXI11_1 IEEE488_1 -> VXI11_2 VXI11 -> VXI11_2 VXI11 -> VXI11_3 IEEE488_2 -> VXI11_3 IEEE488_2 -> SCPI -> USBTMC USB ->USBTMC {rank=same HPIB ONCRPC VME} {rank=same USB IEEE488 VXI} {rank=same IEEE488_1 IEEE488_2 VXI11} {rank=same USBTMC VXI11_1 VXI11_2 VXI11_3} }

図 10.2 graphviz による#

'skinparam linetype polyline
'skinparam linetype ortho

skinparam package{
          Style rectangle
}

skinparam component {
    Style rectangle
    backgroundColor<<vme>> #DarkKhaki
    backgroundColor<<gpib>> #lightgreen
    backgroundColor<<usb>> #plum
    backgroundColor<<serial>> #Pink
    backgroundColor<<IP>> #LemonChiffon
    backgroundColor<<serial/IP>> #Pink/#LemonChiffon
    backgroundColor<<IP/VXI>> #DarkKhaki/#LemonChiffon
}


package "start "{

[serial] <<serial>>

component HPIB <<gpib>> [
    1900代後半: HP-IB
]

[VME] <<vme>>

[ONCRPC]  <<IP>>
[raw socket]  <<serial/IP>>
component USB  <<usb>> [
   1996:USB
]

}

component Ethernet <<IP>> [
   1973: Ethernet
]

[Ethernet] --> [raw socket]
[Ethernet] --> [ONCRPC]

package "1995: VXI11" as VXI11 {
   [VXI11_1] <<IP/VXI>>
   [VXI11_2] <<IP/VXI>>
   [VXI11_3] <<IP/VXI>>
}

component HISLIP <<IP>> [
2011: HiSLIP 1.1
]

VXI11_2 -[hidden]d-- HISLIP
VXI11 -[norank]down-> HISLIP

component VXI <<vme>> [
  1987: VXI
]
[GP-IB] <<gpib>>
component USBTMC <<usb>> [
   2003: USB-TMC
]

component IEEE488 <<gpib>> [
   1975: IEEE488
]

component IEEE488_1 <<gpib>> [
   1987: IEEE-488.1
   電気的/機械的規格
]
component IEEE488_2 <<gpib>> [
   1987: IEEE-488.2
   デジタル通信規格
]

component  SCPI [
 1990: SCPI
 機器制御命令の文法と標準コマンド
]
component  [SCPI over serial] <<serial>>
component  [SCPI over raw socket] <<serial/IP>>

[SCPI] --> [SCPI over serial]
[serial] --> [SCPI over serial]
[SCPI] --> [SCPI over raw socket]
[raw socket] --> [SCPI over raw socket]


HPIB --> [GP-IB]
[GP-IB] --> IEEE488

IEEE488 --> IEEE488_1
IEEE488 --> [IEEE488_2]
IEEE488_1 -r[hidden]- [IEEE488_2]

[VME] --> [VXI]
[VXI] --> [VXI11_1]
[VXI] --> [VXI11_2]
[VXI] --> [VXI11_3]

[ONCRPC] --> [VXI11_1]
IEEE488_1 --> [VXI11_2]
[SCPI] --> [VXI11_3]
[IEEE488_2] --> [SCPI]
[SCPI] --> [USBTMC]
[USB] --> [USBTMC]

図 10.3 plantUML/コンポーネント図 による 表示( stereotype <<>> を使って、種類ごとに色をかえています。)#

skinparam component {
    backgroundColor<<static_lib>> DarkKhaki
    backgroundColor<<shared_lib>> Green
}

skinparam node {
borderColor Green
backgroundColor Yellow
backgroundColor<<shared_node>> Magenta
}
skinparam databaseBackgroundColor Aqua

[AA] <<static_lib>>
[BB] <<shared_lib>>
[CC] <<static_lib>>

node node1
node node2 <<shared_node>>

database Production