YAMLプロジェクト形式

irBoardのプロジェクトはYAMLテキストファイルで作成・編集できます。 この形式は人間にもAIにも読みやすく設計されており、プロジェクトの自動生成が可能です。

プロジェクトは編集画面の プロジェクト設定 インスペクター、またはプロジェクト一覧画面のツールバーからインポートします。 「YAMLからインポート」を選択して、YAMLプロジェクトファイルを含むフォルダー、 またはproject.yamlファイルを直接選択してインポートしてください。


YAMLの基本

YAML(YAML Ain't Markup Language)は構造化データを表現するテキスト形式です。 インデント(スペース)で階層を表現するため、特別なツールなしで読み書きできます。

キーと値のペア

基本的なデータはキー: 値のペアで記述します:

name: "My Project"
rotation_type: 1
enabled: true

インデント = ネスト(入れ子)

ネスト構造はスペースによるインデントで表現します(1レベルにつき2スペース):

plc:
  provider: KEYENCE
  config:
    ip_or_hostname: "192.168.0.10"
    port_no: 8501

リスト(配列)

リストの各要素は-(ハイフン + スペース)で始めます:

pages:
  - uuid: "page-001"
    page_no: 1
    title: Main
  - uuid: "page-002"
    page_no: 2
    title: Settings

データ型

備考
文字列 "Hello" または Hello 値に:#、特殊文字を含む場合はクォートが必要。
整数 42 クォートなしで記述。
浮動小数点 3.14 クォートなしで記述。
真偽値 true / false クォートなしで記述。

コメント

#で始まる行はコメントとして無視されます:

# これはコメントです
name: "My Project"   # インラインコメントも可能

フォルダー構成

YAMLプロジェクトはproject.yamlファイルとオプションのimages/サブフォルダーを含むフォルダーです:

ProjectName/
  project.yaml       # プロジェクト設定(必須)
  images/             # 画像ファイル(オプション)
    {uuid}.png        # UUIDで参照される背景画像

project.yamlファイルにはすべてのプロジェクト設定、ページ、アイテム、各種設定が含まれます。 プロジェクト、ページ、アイテムの背景画像はimages/フォルダーにUUIDで命名されたPNGファイルとして格納されます。


最小構成の例

ラベルとボタンを1つずつ含む1ページの最小構成プロジェクトです:

uuid: "00000000-0000-0000-0000-000000000001"
name: "My Project"
screen_size_string: "768x1024"
rotation_type: 1

plc:
  model: KV-8000
  provider: KEYENCE
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 8501

pages:
  - uuid: "00000000-0000-0000-0000-100000000001"
    page_no: 1
    title: Main
    items:
      - uuid: "00000000-0000-0000-0000-200000000001"
        class: Label
        frame_string: "{{50, 50}, {200, 40}}"
        title: Temperature
        text_color_name: "RGBA,0.0,0.0,0.0,1.0"
      - uuid: "00000000-0000-0000-0000-200000000002"
        class: Button
        frame_string: "{{50, 120}, {120, 50}}"
        title: Start
        switch_device_name: MR100
        switch_mode: momentary

必須フィールド: plcpagesは必須です。 plcセクションがないとインポート時にエラーになります。 uuidnameは省略可能で、省略時は自動生成されます。 各ページのuuidpage_noも省略時は自動補完されます。 各アイテムのuuidframe_stringも省略可能(デフォルト値が適用されます)。 classは必須ですが、小文字や別名(例: gauge, slider, alarm, grid等)も使用できます。


プロジェクトプロパティ

プロジェクト全体を構成するトップレベルのプロパティ:

プロパティ 説明
uuid String 自動 一意の識別子(UUID形式)。省略時は自動生成。
name String 自動 プロジェクト名。省略時は自動生成。
plc Object 必須 PLC設定。省略するとインポートエラー。
pages Array 必須 ページのリスト。
screen_size_string String 画面サイズ「幅x高さ」(例: "768x1024")。
rotation_type Integer 画面回転。0=縦向き、1=横向き。
style String プロジェクトスタイル。"default"または"dark"。
background_color_name String デフォルト背景色。色形式のセクションを参照。
launch_page_no Integer 起動時に表示するページ番号。
page_scale_type Integer 画面スケーリング。0=中央、1=フィット、2=フィル。
transition String ページ遷移アニメーションスタイル。
text_font_name String デフォルトテキストフォント名。
text_font_size Float デフォルトテキストフォントサイズ。
number_font_name String 数値表示のデフォルトフォント。
number_font_size Float 数値表示のデフォルトフォントサイズ。

グリッド設定

grid:
  style: 1
  enabled: 1
  pixel: 10.0
プロパティ 説明
style Integer グリッドスタイル。0=ドット、1=ライン。
enabled Integer 1=グリッド表示、0=非表示。
pixel Float グリッド間隔(ポイント)。

PLC設定

plcセクションでPLC接続を設定します。このセクションは必須です。省略するとインポートエラーになります。 対応PLCプロバイダーとモデルについては PLC接続 のドキュメントを参照してください。

KEYENCE の例

plc:
  model: KV-8000
  provider: KEYENCE
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 8501

三菱電機(MCプロトコル)の例

plc:
  model: iQ-R
  provider: MITSUBISHI
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 5000

オムロン(FINS)の例

plc:
  model: NJ
  provider: OMRON
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 9600
      self_node: 0
      destination_node: 0

MODBUS/TCPの例

plc:
  model: MODBUS
  provider: MODBUS
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 502
      unit_id: 1

PLCプロバイダー / モデル / チャンネル一覧

プロバイダー モデル デフォルトポート
キーエンス KV-8000, KV-7500, KV-5500, KV-5000, KV-3000, KV-1000, KV-Nano 8501
三菱電機 iQ-R, iQ-F, Q, L, FX5, FX3 5000
オムロン NJ, NX, CJ2, CJ1, CP1, CP2 9600
横河電機 FA-M3 12289
MODBUS MODBUS 502

設定オプション

プロパティ 説明
monitor_interval Float ポーリング間隔(秒、デフォルト: 0.5)。
button_default_delay Float ボタン押下時のデフォルト遅延(秒)。
slider_default_delay Float スライダー操作時のデフォルト遅延(秒)。
area_permission String 権限領域のデバイスアドレス。
use_area_permission Boolean 権限領域を有効にする。
area_to_plc_screen_no String 現在の画面番号をPLCに送信するデバイスアドレス。
use_area_to_plc_screen_no Boolean 画面番号のPLC通知を有効にする。
area_to_plc_status String irBoardのステータスをPLCに送信するデバイスアドレス。
use_area_to_plc_status Boolean ステータスのPLC送信を有効にする。
area_from_plc_screen_no String PLCから画面番号を受信するデバイスアドレス。
use_area_from_plc_screen_no Boolean PLCからの画面番号受信を有効にする。
area_from_plc_status String PLCからステータスを受信するデバイスアドレス。
use_area_from_plc_status Boolean PLCからのステータス受信を有効にする。

ページプロパティ

pages:
  - uuid: "page-uuid-1"
    page_no: 1
    title: Main
    background_color_name: "RGBA,0.95,0.95,0.95,1.0"
    items:
      - ...
プロパティ 説明
uuid String 自動 一意の識別子。省略時は自動生成。
page_no Integer 自動 ページ番号(1始まり)。省略時は自動補完。
title String ページタイトル。
background_color_name String ページ背景色。
locked Integer 1=ロック(実行時編集不可)、0=アンロック。
rotation_type Integer ページ固有の回転設定。
background_image Object 背景画像参照 ({uuid, kind})。
items Array ページアイテムのリスト。

ページナビゲーション(スワイプ)

ページ間のスワイプナビゲーションをUUID参照で設定できます:

プロパティ 説明
above_page_uuid String 上スワイプ時のページUUID。
below_page_uuid String 下スワイプ時のページUUID。
left_page_uuid String 左スワイプ時のページUUID。
right_page_uuid String 右スワイプ時のページUUID。

アイテムタイプ

各アイテムにはclassフィールドでタイプを指定します:

class 説明 主要プロパティ
Label テキスト表示 title, text_color_name
Button ランプ付きボタン switch_device_name, switch_mode, lamp_device_name
Button(スイッチなし) 状態表示インジケーター lamp_device_name, lamp_color_name
ValueField 数値/テキストの表示・入力 device_name, editable, decimal_place, unit
SteppedValueField +/-ボタン付き値(スライダー/進捗) device_name, step_value, min_value, max_value
Meter アナログゲージ表示 device_name, min_value, max_value, figures
Message メッセージリスト表示 message_set_uuid
Matrix 表/グリッドレイアウト matrix_rows, matrix_columns, matrix_device_offset
WebPage 埋め込みWebブラウザ url

アイテム共通プロパティ

すべてのアイテムに共通するプロパティ:

プロパティ 説明
uuid String 自動 一意の識別子。省略時は自動生成。
class String 必須 アイテムタイプ。アイテムタイプの表を参照。 小文字や別名も使用可能(例: gauge→Meter、alarm→Message、grid→Matrix、slider→Slider、progress_bar→Progress、value_field→ValueField、web_page→WebPage)。
frame_string String 自動 位置とサイズ。省略時はクラスに応じたデフォルトサイズ。形式: "{{x, y}, {width, height}}" または "x, y, width, height"
title String 表示テキスト。
device_name String メインPLCデバイスアドレス。
background_color_name String 背景色。
line_color_name String 枠線の色。
line_width Float 枠線の幅。
corner_radius Integer 角丸の半径。
style String ビジュアルスタイル(アイテムタイプにより異なる)。
font_name String フォント名のオーバーライド。
font_size Float フォントサイズのオーバーライド。
alignment Integer テキスト配置。0=左、1=中央、2=右。
padding Integer 内部パディング。
locked_frame Integer 1=フレームロック、0=編集可能。
visible_device_name String 表示/非表示を制御するデバイス。
visible_negative Integer 1=表示条件を反転。
alternate_title String 代替タイトル(トグル状態用)。

ラベル

静的テキストまたはデバイス値に基づくテキストを表示します。

- uuid: "label-uuid"
  class: Label
  frame_string: "{{50, 50}, {200, 40}}"
  title: Temperature
  text_color_name: "RGBA,0.0,0.0,0.0,1.0"
  background_color_name: "RGBA,0.9,0.9,0.9,1.0"
  alignment: 1
  font_size: 18.0
プロパティ 説明
text_color_name String テキスト色。
alternate_text_color_name String 代替状態でのテキスト色。
label_device_name String ラベル状態(ON/OFF外観)を制御するデバイス。
label_negative Integer 1=ラベルデバイス条件を反転。

ボタン

PLCデバイスをON/OFFでき、ランプ状態を表示する対話型ボタンです。 スイッチデバイスを指定しない場合はランプインジケーターとして動作します。

- uuid: "button-uuid"
  class: Button
  frame_string: "{{50, 100}, {120, 50}}"
  title: Start
  alternate_title: Stop
  switch_device_name: MR100
  switch_mode: momentary
  lamp_device_name: MR100
  lamp_color_name: "RGBA,0.0,0.8,0.0,1.0"
  style: irPanel

スイッチプロパティ

プロパティ 説明
switch_device_name String 押下時にON/OFFするビットデバイス。
switch_mode String "momentary"(押下中ON)または"alternate"(トグル)。
switch_negative Integer 1=スイッチ出力を反転。
delay_time Double コマンド送信前の遅延(秒)。
interlock_device_name String ボタンを有効にするために必要なデバイス。
interlock_negative Integer 1=インターロック条件を反転。

ランププロパティ

プロパティ 説明
lamp_device_name String ランプ状態を監視するビットデバイス。
lamp_color_name String ランプON時の色。
alternate_lamp_color_name String ランプOFF時の色。
lamp_negative Integer 1=ランプ条件を反転。

ページナビゲーション

プロパティ 説明
page_uuid String 押下時に遷移するページのUUID。
page_no Integer 遷移先のページ番号。

ボタンスタイル

プロパティ 説明
style String "irPanel"、"Square"、"Circle"、"Touch"、"Plane"、"Toggle"。大文字小文字は自動補正されます。

値フィールド

PLCデバイスの数値やテキストを表示・編集するフィールドです。

- uuid: "value-uuid"
  class: ValueField
  frame_string: "{{300, 100}, {150, 40}}"
  title: Temperature
  device_name: DM100
  editable: 0
  decimal_place: 1
  unit: "\u00B0C"
  number_type: 2
  min_value: 0.0
  max_value: 999.0
  text_color_name: "RGBA,0.0,0.0,0.0,1.0"
  field_background_color_name: "RGBA,1.0,1.0,1.0,1.0"
プロパティ 説明
device_name String 値を読み書きするワードデバイス。
editable Integer 0=読み取り専用、1=実行時に編集可能。
number_type Integer 0=符号なし16bit、1=符号付き16bit、2=符号なし32bit、3=符号付き32bit、4=float、5=double、6=BCD、10=文字列。
decimal_place Integer 小数点以下の桁数。
unit String 単位(例: "\u00B0C"、"kg"、"%")。
coefficient Float スケーリング係数(表示値 = 生値 * 係数 + オフセット)。
offset Float 値オフセット。
min_value Double 最小値。
max_value Double 最大値。
field_background_color_name String 入力フィールドの背景色。
text_color_name String 表示値のテキスト色。
unit_color_name String 単位テキストの色。
border_style Integer 0=なし、1=ライン、2=ベゼル、3=丸角。
encoding Integer 文字列型のエンコーディング。1=UTF-8。
text_length Integer 文字列型の最大文字数。
secret Boolean true=入力を隠す(パスワードフィールド)。

ステップ値フィールド(スライダー/進捗)

+/-ボタン付きの値フィールド、またはスライダーやプログレスバーとして表示されます。

- uuid: "slider-uuid"
  class: SteppedValueField
  frame_string: "{{50, 200}, {300, 40}}"
  title: Speed
  device_name: DM200
  step_value: 1.0
  min_value: 0.0
  max_value: 100.0
  style: slider
プロパティ 説明
step_value Double 1ステップあたりの増減量。
style String "default"(ボタン)、"slider"、"progress"。
vertical Boolean true=縦方向。
continuous Boolean true=ボタン長押し中に連続変更。

値フィールドのすべてのプロパティ(device_namemin_valuemax_valuenumber_typeなど)を継承します。


メーター

PLCデバイスの値をアナログゲージで表示します。

- uuid: "meter-uuid"
  class: Meter
  frame_string: "{{50, 300}, {200, 200}}"
  title: Pressure
  device_name: DM300
  min_value: 0.0
  max_value: 100.0
  figures: 5
  major: 20
  minor: 10
  unit: MPa
  decimal_place: 1
プロパティ 説明
min_value Double スケールの最小値。
max_value Double スケールの最大値。
figures Integer スケールラベルの数。
major Integer 主目盛りの間隔。
minor Integer 副目盛りの間隔。
meter_zones Array メーター上のカラーゾーン。

メーターゾーン

meter_zones:
  - color_name: "RGBA,0.0,0.8,0.0,1.0"
    from_value: 0.0
    to_value: 60.0
  - color_name: "RGBA,1.0,0.8,0.0,1.0"
    from_value: 60.0
    to_value: 80.0
  - color_name: "RGBA,1.0,0.0,0.0,1.0"
    from_value: 80.0
    to_value: 100.0

ランプ(状態表示インジケーター)

スタンドアロンの状態表示インジケーター。ボタンと同じクラス(Button)で、スイッチデバイスを指定しないことでランプとして動作します。

- uuid: "lamp-uuid"
  class: Button
  frame_string: "{{300, 50}, {60, 60}}"
  title: Running
  lamp_device_name: MR200
  lamp_color_name: "RGBA,0.0,0.8,0.0,1.0"
  alternate_lamp_color_name: "RGBA,0.5,0.5,0.5,1.0"
  style: Circle

ボタンと同じランププロパティ(lamp_device_namelamp_color_namelamp_negativeなど)を使用します。 switch_device_nameを省略すると、ランプインジケーターになります。


メッセージ

メッセージセットからのメッセージリストを表示します。メッセージはPLCデバイス値に基づいてアクティブになります。

- uuid: "message-uuid"
  class: Message
  frame_string: "{{50, 400}, {400, 200}}"
  message_set_uuid: "msgset-uuid-1"
  active_color_name: "RGBA,1.0,0.0,0.0,1.0"
  inactive_color_name: "RGBA,0.9,0.9,0.9,1.0"
  active_only: true
プロパティ 説明
message_set_uuid String 表示するメッセージセットのUUID。
active_color_name String アクティブメッセージの背景色。
inactive_color_name String 非アクティブメッセージの背景色。
active_text_color_name String アクティブメッセージのテキスト色。
inactive_text_color_name String 非アクティブメッセージのテキスト色。
active_only Boolean true=アクティブメッセージのみ表示。
row_height Integer メッセージ行の高さ。
show_detail Boolean true=詳細テキストを表示。
show_title Boolean true=メッセージセットタイトルヘッダーを表示。

マトリックス

テンプレートアイテムを行列で繰り返し、デバイスアドレスオフセットで展開する表/グリッドレイアウトです。 詳細は マトリックス のドキュメントを参照してください。

- uuid: "matrix-uuid"
  class: Matrix
  frame_string: "{{50, 50}, {600, 400}}"
  matrix_rows: 5
  matrix_columns: 3
  matrix_device_offset: 10
  matrix_add_borders: true
  matrix_border_color_name: "RGBA,0.7,0.7,0.7,1.0"
  matrix_has_column_header: true
  matrix_has_row_header: true
プロパティ 説明
matrix_rows Integer データ行数。
matrix_columns Integer データ列数。
matrix_device_offset Integer 行間のデバイスアドレス増分。
matrix_add_borders Boolean true=セル周りに枠線を追加。
matrix_border_color_name String 枠線の色。
matrix_border_width Float 枠線の幅。
matrix_has_column_header Boolean true=列ヘッダーを含む。
matrix_has_row_header Boolean true=行ヘッダーを含む。
matrix_cell_bg_color_name String デフォルトセル背景色。
matrix_alt_bg_color_name String 交互行の背景色。
matrix_column_header_bg_color_name String 列ヘッダーの背景色。
matrix_row_header_bg_color_name String 行ヘッダーの背景色。

マトリックステンプレート

マトリックスはセルテンプレートを定義でき、インポート時に全行列にわたって自動展開されます。 テンプレートは各セルに表示するアイテムを定義し、デバイスオフセットルールがグリッド全体のデバイスアドレスの増分を制御します。

テンプレートはmatrix_template_jsonで定義します。 YAML形式でアイテム定義の配列として直接記述できます(JSON文字列でも可)。 座標はセル原点(0, 0)からの相対位置です。 テンプレートがあるが未展開のマトリックスは、YAMLインポート時に自動的に展開されます。

- uuid: "matrix-uuid"
  class: Matrix
  frame_string: "{{50, 50}, {600, 300}}"
  matrix_rows: 3
  matrix_columns: 4
  matrix_add_borders: true
  matrix_border_color_name: "RGBA,0.7,0.7,0.7,1.0"
  matrix_template_cell_width: 140.0
  matrix_template_cell_height: 60.0
  matrix_template_json:
    - class: Label
      uuid: "tpl-001"
      frame_string: "{{2, 2}, {60, 26}}"
      title: CH1
      font_size: 12.0
      text_color_name: "RGBA,0.3,0.3,0.3,1.0"
    - class: ValueField
      uuid: "tpl-002"
      frame_string: "{{2, 30}, {136, 28}}"
      device_name: DM100
      number_type: 2
      decimal_place: 1
      unit: "\u00B0C"
      text_color_name: "RGBA,0.0,0.0,0.0,1.0"
      field_background_color_name: "RGBA,1.0,1.0,1.0,1.0"
      border_style: 3
  matrix_device_offset_rules:
    - id: "rule-1"
      itemUUID: "*"
      property: device_name
      rowOffset: 10
      colOffset: 1
プロパティ 説明
matrix_template_json 配列 1セル分のアイテム定義の配列。通常のアイテムと同じプロパティを使用。
matrix_template_cell_width Float テンプレートアイテムの基準セル幅。
matrix_template_cell_height Float テンプレートアイテムの基準セル高さ。

デバイスオフセットルール

matrix_device_offset_rulesは行・列間でデバイスアドレスをどのように変化させるかを制御するルールの配列です。

プロパティ 説明
id String ルールの一意の識別子。
itemUUID String 適用先のテンプレートアイテムUUID。"*"は全アイテムに適用。
property String デバイスプロパティ名。"*"は全デバイスプロパティに適用。選択肢: device_name, switch_device_name, lamp_device_name, visible_device_nameなど。
rowOffset Integer 行あたりのデバイスアドレス増分。
colOffset Integer 列あたりのデバイスアドレス増分。

各セルのデバイスアドレスは以下の式で計算されます:
offset = row * rowOffset + col * colOffset

テンプレート例の説明

上記の例は3x4の温度監視グリッドを作成します:

  • 各セルにはラベル("CH1")とDM100を読み取る値フィールドが含まれます
  • タイトルテキストは自動的にインクリメント: CH1, CH2, CH3, ...
  • デバイスオフセットルール: rowOffset: 10, colOffset: 1
    セル(0,0)はDM100、セル(0,1)はDM101、セル(1,0)はDM110を読み取ります。

Webページ

ページ内にWebブラウザビューを埋め込みます。

- uuid: "web-uuid"
  class: WebPage
  frame_string: "{{50, 50}, {600, 400}}"
  url: "https://example.com"
プロパティ 説明
url String 読み込むURL。
user_agent String カスタムUser-Agent文字列。

ローカライズ文字列

アイテムテキストの翻訳はプロジェクトレベルのlocalizedStrings配列で定義します。 各エントリはアイテムUUIDとフィールドキーを特定のロケールの翻訳文字列にマッピングします。

localizedStrings:
  - localeIdentifier: ja
    key: "item-uuid-1.title"
    text: "\u30B9\u30BF\u30FC\u30C8"
  - localeIdentifier: ja
    key: "item-uuid-1.alternate_title"
    text: "\u30B9\u30C8\u30C3\u30D7"
  - localeIdentifier: fr
    key: "item-uuid-1.title"
    text: "D\u00E9marrer"
プロパティ 説明
localeIdentifier String ロケールコード(例: "ja"、"en"、"fr"、"de"、"zh-Hans")。
key String 形式: "{item_uuid}.{field_name}"(例: "xxx.title"、"xxx.unit")。
text String 翻訳テキスト。

ローカライズ可能なフィールド

  • title — アイテムタイトル
  • alternate_title — 代替タイトル(ボタンのトグル状態)
  • unit — 単位テキスト(ValueField、Meter)
  • message_ — メッセージテキスト(MessageItem)
  • detail_message — 詳細メッセージテキスト(MessageItem)
  • title_ — メッセージセットタイトル

メッセージセット

メッセージセットはメッセージアイテムで表示されるメッセージのグループを定義します。 各メッセージはPLCデバイス値によってトリガーされます。

messageSets:
  - uuid: "msgset-uuid-1"
    no: 1
    title_: Alarms
    order_style: 0
    messageItems:
      - device_name: DM500
        value: 1.0
        number_type: 0
        message_: "Motor overload"
        detail_message: "Motor overload detected. Check motor wiring."
        disabled: false
        order_style: 0
      - device_name: DM500
        value: 2.0
        number_type: 0
        message_: "Temperature high"
        detail_message: "Temperature exceeds the limit."
        disabled: false
        order_style: 1
プロパティ 説明
uuid String 一意の識別子。
no Integer メッセージセット番号。
title_ String メッセージセットタイトル(末尾のアンダースコアは必須)。
order_style Integer ソート順。
messageItems Array メッセージアイテムのリスト。

メッセージアイテムのプロパティ

プロパティ 説明
device_name String メッセージをトリガーするデバイス。
value Double メッセージをトリガーする値。
number_type Integer データ型(ValueFieldと同じ)。
message_ String メッセージテキスト(末尾のアンダースコアは必須)。
detail_message String 詳細メッセージテキスト。
disabled Boolean true=メッセージを無効化。

色形式

色はRGBA形式の文字列で指定します:

"RGBA,R,G,B,A"

R、G、B、Aは0.0から1.0の浮動小数点値です。

"RGBA,0.0,0.0,0.0,1.0"
"RGBA,1.0,1.0,1.0,1.0"
"RGBA,1.0,0.0,0.0,1.0"
"RGBA,0.0,0.8,0.0,1.0"
"RGBA,0.0,0.0,1.0,1.0"
"RGBA,1.0,1.0,0.0,1.0"
"RGBA,0.5,0.5,0.5,1.0"
薄灰 "RGBA,0.9,0.9,0.9,1.0"
透明 "RGBA,0.0,0.0,0.0,0.0"

フレーム形式

アイテムの位置とサイズはCGRect文字列形式で指定します:

"{{x, y}, {width, height}}"

値はポイント単位です。原点(0, 0)はページの左上隅です。 座標系はscreen_size_stringの寸法に対応します。

"{{0, 0}, {768, 1024}}"      # フルページ(縦向き)
"{{50, 50}, {200, 40}}"       # 左上付近の小さなアイテム
"{{384, 512}, {100, 50}}"     # 中央付近のアイテム(概算)

screen_size_string: "768x1024"rotation_type: 1(横向き)のプロジェクトでは、 座標空間は幅1024ポイント、高さ768ポイントになります。


背景画像

プロジェクト、ページ、アイテムの背景画像を使用するには:

  1. images/フォルダーにUUIDで命名されたPNG画像ファイルを配置します(例: abc-123.png)。
  2. YAMLでbackground_imageオブジェクトを使って画像を参照します:
background_image:
  uuid: "abc-123"
  kind: page_background

画像の種類

種類 説明
page_default_background 全ページのデフォルト背景。
page_background 特定ページの背景。
lamp_background ランプ/ボタン状態の背景画像。
page_item_background ページアイテムの背景画像。

PLCデバイス名

デバイス名はPLCプロバイダーによって異なります。各プロバイダーの一般的なデバイス名は以下の通りです:

キーエンス(KVシリーズ)

デバイス 種類 説明
DM0DM100 ワード データメモリ
MR0MR100 ビット 内部リレー
R0R100 ビット リレー
FM0FM100 ワード ファイルメモリ
CM0CM100 ワード カウンター
T0T100 ワード タイマー

三菱電機(MCプロトコル)

デバイス 種類 説明
D0D100 ワード データレジスタ
M0M100 ビット 内部リレー
Y0Y10 ビット 出力(16進アドレス)
X0X10 ビット 入力(16進アドレス)
W0W100 ワード リンクレジスタ(16進アドレス)
R0R100 ワード ファイルレジスタ

オムロン(FINS)

デバイス 種類 説明
D0D100 ワード DMエリア
CIO0CIO100 ワード CIOエリア
W0W100 ワード ワークエリア
H0H100 ワード 保持エリア

MODBUS/TCP

デバイス 種類 説明
HR0HR100 ワード 保持レジスタ (40001+)
CO0CO100 ビット コイル (00001+)
IR0IR100 ワード 入力レジスタ (30001+)
DI0DI100 ビット ディスクリート入力 (10001+)

注意: ビットデバイス(MR、M、COなど)はswitch_device_namelamp_device_namevisible_device_nameに使用します。 ワードデバイス(DM、D、HRなど)はdevice_name(値の読み書き)に使用します。


完全な例

KEYENCE KV-8000 PLCを使用した、2ページ、各種アイテム、メッセージセット、日本語ローカライズを含む完全なプロジェクトの例:

uuid: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
name: "Factory Monitor"
screen_size_string: "768x1024"
rotation_type: 1
style: default
background_color_name: "RGBA,0.95,0.95,0.95,1.0"

grid:
  style: 1
  enabled: 1
  pixel: 10.0

plc:
  model: KV-8000
  provider: KEYENCE
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 8501

pages:
  - uuid: "page-0001"
    page_no: 1
    title: Main
    right_page_uuid: "page-0002"
    items:
      - uuid: "item-0001"
        class: Label
        frame_string: "{{20, 20}, {300, 40}}"
        title: Factory Monitor
        text_color_name: "RGBA,0.0,0.0,0.0,1.0"
        font_size: 24.0
        alignment: 0
      - uuid: "item-0002"
        class: Button
        frame_string: "{{20, 80}, {150, 60}}"
        title: Start
        alternate_title: Stop
        switch_device_name: MR100
        switch_mode: alternate
        lamp_device_name: MR100
        lamp_color_name: "RGBA,0.0,0.8,0.0,1.0"
        style: irPanel
      - uuid: "item-0003"
        class: Button
        frame_string: "{{200, 80}, {60, 60}}"
        title: Run
        lamp_device_name: MR200
        lamp_color_name: "RGBA,0.0,0.8,0.0,1.0"
        alternate_lamp_color_name: "RGBA,0.5,0.5,0.5,1.0"
        style: Circle
      - uuid: "item-0004"
        class: Label
        frame_string: "{{20, 170}, {120, 30}}"
        title: Temperature
        text_color_name: "RGBA,0.3,0.3,0.3,1.0"
      - uuid: "item-0005"
        class: ValueField
        frame_string: "{{150, 160}, {150, 50}}"
        device_name: DM100
        number_type: 2
        decimal_place: 1
        unit: "\u00B0C"
        min_value: 0.0
        max_value: 999.0
        text_color_name: "RGBA,0.0,0.0,0.0,1.0"
        field_background_color_name: "RGBA,1.0,1.0,1.0,1.0"
        border_style: 3
      - uuid: "item-0006"
        class: Meter
        frame_string: "{{20, 230}, {280, 280}}"
        title: Pressure
        device_name: DM200
        number_type: 2
        min_value: 0.0
        max_value: 100.0
        figures: 6
        major: 20
        minor: 10
        unit: MPa
        decimal_place: 1
        meter_zones:
          - color_name: "RGBA,0.0,0.8,0.0,1.0"
            from_value: 0.0
            to_value: 60.0
          - color_name: "RGBA,1.0,0.8,0.0,1.0"
            from_value: 60.0
            to_value: 80.0
          - color_name: "RGBA,1.0,0.0,0.0,1.0"
            from_value: 80.0
            to_value: 100.0
      - uuid: "item-0007"
        class: SteppedValueField
        frame_string: "{{350, 160}, {300, 50}}"
        title: Speed
        device_name: DM300
        step_value: 5.0
        min_value: 0.0
        max_value: 100.0
        number_type: 2
        unit: "%"
        style: slider
      - uuid: "item-0008"
        class: Button
        frame_string: "{{850, 20}, {120, 40}}"
        title: "Alarms >>"
        page_uuid: "page-0002"

  - uuid: "page-0002"
    page_no: 2
    title: Alarms
    left_page_uuid: "page-0001"
    items:
      - uuid: "item-0009"
        class: Label
        frame_string: "{{20, 20}, {200, 40}}"
        title: Alarm List
        text_color_name: "RGBA,0.0,0.0,0.0,1.0"
        font_size: 24.0
      - uuid: "item-0010"
        class: Message
        frame_string: "{{20, 80}, {600, 400}}"
        message_set_uuid: "msgset-0001"
        active_color_name: "RGBA,1.0,0.9,0.9,1.0"
        inactive_color_name: "RGBA,0.95,0.95,0.95,1.0"
        active_text_color_name: "RGBA,0.8,0.0,0.0,1.0"
        inactive_text_color_name: "RGBA,0.3,0.3,0.3,1.0"
        show_detail: true
        show_title: true
      - uuid: "item-0011"
        class: Button
        frame_string: "{{850, 20}, {120, 40}}"
        title: "<< Main"
        page_uuid: "page-0001"

messageSets:
  - uuid: "msgset-0001"
    no: 1
    title_: Alarms
    order_style: 0
    messageItems:
      - device_name: DM500
        value: 1.0
        number_type: 0
        message_: "Motor overload"
        detail_message: "Motor overload detected. Check wiring."
        disabled: false
        order_style: 0
      - device_name: DM500
        value: 2.0
        number_type: 0
        message_: "Temperature high"
        detail_message: "Temperature exceeds limit."
        disabled: false
        order_style: 1
      - device_name: DM500
        value: 3.0
        number_type: 0
        message_: "Emergency stop"
        detail_message: "Emergency stop activated."
        disabled: false
        order_style: 2

localizedStrings:
  - localeIdentifier: ja
    key: "item-0001.title"
    text: "\u5DE5\u5834\u30E2\u30CB\u30BF\u30FC"
  - localeIdentifier: ja
    key: "item-0002.title"
    text: "\u30B9\u30BF\u30FC\u30C8"
  - localeIdentifier: ja
    key: "item-0002.alternate_title"
    text: "\u30B9\u30C8\u30C3\u30D7"
  - localeIdentifier: ja
    key: "item-0003.title"
    text: "\u904B\u8EE2\u4E2D"
  - localeIdentifier: ja
    key: "item-0004.title"
    text: "\u6E29\u5EA6"
  - localeIdentifier: ja
    key: "item-0006.title"
    text: "\u5727\u529B"
  - localeIdentifier: ja
    key: "item-0007.title"
    text: "\u901F\u5EA6"
  - localeIdentifier: ja
    key: "item-0009.title"
    text: "\u30A2\u30E9\u30FC\u30E0\u4E00\u89A7"

AIプロジェクト生成のヒント

  • 自動補完: プロジェクト・ページ・アイテムのuuidは省略可能で、インポート時に自動生成されます。 namepage_noframe_stringも省略時にデフォルト値が自動補完されます。
  • PLC設定は必須: plcセクションは必ず指定してください。省略するとインポートエラーになります。 providermodelを指定すれば、PLC内部のclass_nameは自動解決されます。
  • クラス名の別名: classは大文字小文字を問いません。また以下の別名が使えます: gauge→Meter、alarm→Message、grid→Matrix、slider→Slider、progress_bar→Progress、value_field→ValueField、web_page→WebPage。
  • frame_stringの代替形式: "{{x, y}, {width, height}}" の他に "x, y, width, height" 形式も使用できます。
  • 座標系: 横向きプロジェクト(rotation_type: 1)でscreen_size_string "768x1024"の場合、使用可能な領域は幅1024 x 高さ768です。 この範囲を超えてアイテムを配置しないでください。
  • デバイス名の一貫性: デバイス名がPLCプロバイダーの構文に合っていることを確認してください。スイッチ/ランプにはビットデバイス、値にはワードデバイスを使用します。
  • 最小間隔: 読みやすさのため、アイテム間に少なくとも5〜10ポイントの間隔を空けてください。
  • フォントサイズ: 推奨サイズ: タイトル18〜24pt、ラベル14〜16pt、値16〜20pt。
  • メッセージセット: メッセージアイテムのmessage_set_uuidmessageSets配列のUUIDと一致する必要があります。
  • ローカライズ: localizedStringsのkeyは"{item_uuid}.{field_name}"形式です。 一般的なフィールド: "title"、"alternate_title"、"unit"。
  • インポート動作: インポート時に同じUUIDのプロジェクトが存在する場合は上書きされます。 新しいコピーを作成するにはUUIDを変更してください。
  • Lite版の制限: irBoard Liteでは、インポート時にプロジェクトが最大2ページ、1ページあたり最大10アイテムに切り詰められます。 超過分のページやアイテムはインポート時に自動的に削除されます。切り詰めが行われた場合はインポート後に通知が表示されます。

デモ動画

YAMLプロジェクト形式を使ったインポートのデモです。 AIにYAMLファイルを生成させ、irBoardにインポートして画面を構築する流れを紹介しています。