Logic
Logic のページ、その「アドレス空間」の欄、フォルダー、コマンドバー、すべてのパネルの後ろにあるロジックの周期と書き込みの経路、そしてページの描き方を決める 3 つの権限。
Logic はナビゲーションバーの 3 つ目の項目です。Logic の表示を持つロールであれば開けて、その見出しには「アドレス空間の上に組み立てる、変数(導かれる値や書き込める値)とアクション(それらを書き込むスクリプト)を定義します。」と書かれています。マスターと詳細の形のページです(ページの読み方)。左にアドレス空間という見出しの欄、右にコマンドバーと詳細のパネルがあります。ここで編集したものは入力しながら自動で保存されます。ページのどこにも保存のボタンはありません。
この節にあるページ
| ページ | 扱うこと |
|---|---|
| アドレス空間 | 7 つの予約された最上位、アドレスの書き方と変換のされ方、絞り込みの入力欄、そしてアドレスを入れる 3 つの方法。 |
| 変数 | 変数の編集画面。識別とアドレス、式と内部値の 2 つの種類、値のカード、設定する値。 |
| 式 | 式の言語、ポイントの読み取りの面、評価が守らせる規則、スクリプトの編集画面。 |
| アクション | アクションの編集画面、スクリプトが何を書き込めるか、すべての検証のメッセージ、実行と有効化・無効化。 |
| トリガー | トリガーの編集画面と、周期のスケジューラー。 |
| 警報 | 警報の編集画面、状態の移り変わり、知らせ方、確認とすべて確認。 |
| ほかのページから来たもの | System、Server、Connector、Process の最上位、ポイントのパネル、そしてそれらを編集するページを名指しする通知。 |
同じ欄の素材の最上位は、それ自体で 1 つのまとまりです。素材が、画像、アイコン、色、シンボル、接続線の種類を扱います。
「アドレス空間」の欄
この欄は、アドレス空間の最上位を 2 つの見出しの下に並べます。ここで定義したものには、このページが作って編集するもの、つまり変数、警報、アクション、トリガー、素材が入ります。ほかのページから来たものには、このページが見せるだけのもの、つまり System、Server、Connector、Process が入ります。前の見出しの下の最上位はどれも件数を持ち(変数と警報はその定義の数、アクションとトリガーもその定義の数、素材は 5 つの分類の合計)、警報の最上位、警報のフォルダー、警報の行はどれも、その中で発生中か確認待ちのもののうち、いちばん重い優先度の色の点を持ちます。その点は、警報に応えた瞬間に消えます。
ツリーは遅れて読み込みます。枝は、展開したときに読み込まれます。実時間の値がツリーに描かれることは決してありません。選んだノードの詳細のパネルがそれを見せ、1 秒に 2 回更新します。
| 操作部 | 何をするか |
|---|---|
| 絞り込み… | 名前に入力した文字を含む行だけにツリーを絞ります。大文字と小文字は問いません。子孫のどれかが一致するフォルダーは残り、一致したところまで開きます。素材の最上位は、名前が一致する分類だけに絞られ、その最上位自身の名前だけが一致したときは丸ごと出ます。名前が一致したアドレス空間の最上位は一覧に残り、展開したときに枝を読み込みます。アクションとトリガーの節は、一致した行だけを並べます。 |
| 新規…(欄のフッター) | 作成のメニューを開きます。新しい変数、新しいアクション、新しいトリガー、新しい警報、そして新しいフォルダーは、節(変数、警報、アクション、トリガー)ごとに 1 つずつの行き先を持ちます。ここで作ったものはすべて、その節の最上位に、Variable1、Action1、Trigger1、Alarm1、Folder1 の並びの空いている最初の名前で置かれ、編集のために開きます。Logic の構成を持つロールにだけ描かれ、ステーションがロックされている間は理由を添えて灰色になります。 |
| すべて展開/すべて折りたたむ | すべての枝を開くか(開くたびにその段を読み込みます)、最上位まですべて閉じます。 |
| 右クリック | 節の最上位、自分で作ったフォルダー、定義の行の上で押すと、その行を選んでメニュー(下記)を開きます。ほかのページのノードでは何も開きません。 |
右クリックのメニューは、行とロールに応じて次のものを持ちます。新しい変数/新しいアクション/新しいトリガー/新しい警報(押したフォルダーか最上位の中に作ります)、新しいフォルダー(すでに 3 段目のフォルダーでは出ません)、確認(警報の行、Logic の操作)、移動先(節の最上位と、その行を入れられるすべてのフォルダーが並ぶ下位のメニュー)、複製、削除、そしてフォルダーではフォルダー名を変更とフォルダーを削除。Logic の構成を持たないロールにはメニューがまったく出ません。ただし、Logic の操作を持つときは、警報の行の確認の項目だけが出ます。
詳細の側は、何かを選ぶまで空です。「ノードを選ぶと内容を見られます。変数、アクション、トリガー、警報はその編集画面が開きます。「新規」で作成できます。」
コマンドバー
このバーは、選んだノードの動詞を描きます。ロールが決して許さないものは描かれません。今の状況が拒んでいるだけのものは描かれたまま灰色になり、ツールチップに理由が出ます。エンジニアリングの操作の最中は「ユニットの実行中は構成がロックされます。」、ステーションが読み取り専用で動いている間は「ランタイム停止中」です。
| 選んだもの | 先頭のまとまり | 末尾(危険)のまとまり |
|---|---|---|
| 自分で作ったフォルダー | 新しい変数/アクション/トリガー/警報(その節が持つ種類)、新しいフォルダー(深さの限界では「このフォルダーは、入れ子にできる深さの限界です。」で灰色)、フォルダー名を変更 | フォルダーを削除 |
| 変数 | 複製 | 変数を削除 |
| アクション | 実行、有効化または無効化、複製 | アクションを削除 |
| トリガー | 有効化または無効化、複製 | トリガーを削除 |
| 警報 | 確認、有効化または無効化、複製 | 警報を削除 |
| 警報の最上位 | すべて確認 | |
| 素材、画像 | 画像を取り込む… | |
| 素材、アイコン | 新しいユーザーアイコン | |
| 素材、色 | 新しい色 | |
| 素材、シンボル | 新しいユーザーシンボル、シンボルを取り込む…、チャット用の指示をコピー | |
| System、Server、Connector、Process のノード | ほかで編集する通知と、その開くのボタン |
複製は、選んだ定義をその節の最上位に写します。元の名前が空いていればその名前で、空いていなければ Name (2)、Name (3) のように付けて、複製を編集のために開きます。複製した警報は正常から始まり、複製したトリガーは周期が設定されていない状態で始まり、複製したアクションには実行の記録がありません。有効化と無効化は、ほかのどの入力欄とも同じ自動保存で、その定義の有効の印を切り替えます。削除はどれも先に尋ね(「「X」を削除しますか? … この操作は元に戻せません。」)、操作ログ帯に「削除しました。」と伝えます。変数や警報を削除すると、そのアドレスを名指ししていた式、スクリプト、条件、ダッシュボードのバインドはすべて解決できないままになり、それを検証が並べます。
フォルダー
4 つの節はそれぞれフォルダーで整理できます。フォルダーは 1 つの節に属し、その節の項目だけを持ちます。入れ子は 3 段までです。フォルダーは整理のためだけのもので、権限も、評価も、状態も持ちません。
変数と警報では、フォルダーの連なりがアドレスを組み立てます。Forno の中の変数は Variables.Forno.Setpoint として読まれ、その Zona1 の下位フォルダーの中のものは Variables.Forno.Zona1.Setpoint です。1 つの節の 1 つの段は、そのフォルダーとその定義が共有する 1 区切りの名前空間です。2 つのフォルダーがそれぞれ Setpoint を持つのはかまいませんが、同じ段に入れたもの同士が同じ区切りに変換されてはいけません。編集画面は、入力しているそばからそういう名前を拒否し、すでに使われているアドレスを名指しします。アクションとトリガーは識別で参照されるので、そのフォルダーはツリーを整理するだけで、パネルはアドレスの代わりに置き場所の行を見せます。
| コマンド | 何が起きるか |
|---|---|
| 新しいフォルダー | FolderN という名前の空のフォルダーを作り、ツリーの行の上でその名前の入力欄を開きます。空のまま、あるいは変えずに離れると、その名前のままになります。 |
| フォルダー名を変更 | 行の上で名前の入力欄を開きます。そのフォルダーの下のアドレスはすべて一緒に動き、参照はすべて書き換えられ、操作ログ帯がその数を伝えます(「フォルダーの名前を変え、参照 3 件を更新しました。」)。 |
| 移動先 | フォルダーや定義を、同じ節の別のフォルダーの下、あるいは節の最上位に戻して入れます。アドレスと参照も付いてきます。一覧に出るのは行ける先だけです。そのフォルダー自身、その下位フォルダー、別の節、下位フォルダーが深さの限界を越えてしまう段は、決して出ません。 |
| フォルダーを削除 | 先に尋ね、何が動くのかを述べます。「中の 3 件は変数に移り、何も削除されません。移るアドレスへの参照は更新されます。」中の項目と下位フォルダーは 1 段上に入れ直されます。そのうちの 2 つが移り先でぶつかるときは、削除が拒否されます。 |
ロジックの周期とキュー
ランタイムの周期は、1 本の順番待ちのロジックのキューの上で 100 ms ごとに走ります。まずすべての式の変数を評価し、次に有効なすべての警報の条件を、その順で評価するので、条件はこの周期の変数の値を読みます。アクションの実行、内部値の書き込み、タグの書き込み、確認も同じキューに乗るので、スクリプトが周期やほかのスクリプトの間に割り込むことはありません。もう 1 つの走査も 100 ms ごとに走り、時刻の来たトリガーをキューに投げます。読む側(ダッシュボード、チャネル、このページ)は公開された状態を読みます。このページの何かが手で評価を起こすことはありません。
値を書き込む
書き込みは、何が始めたものであっても、1 つの経路を通ります。スクリプトの代入や Write(...)、内部値の変数の設定する値の入力欄、ダッシュボードの操作部、Process のレシピ、エージェント、公開ノードに書き込む外部の OPC UA のクライアント、どれもです。この経路は、有限でない値や、対象の型に変換できない値を拒み、実行中のレシピやインターロックが押さえている信号源を(押さえている相手を名指しして)拒み、書き込みを古い値から新しい値へという形で、その出どころ(操作者、MCP、その実行)とともに記録し、ロジックのキューの上で適用します。出どころがアクションである書き込みだけは例外で、詳細記録にだけ入り、イベントのコンソールには決して出ません。周期のたびに書き込むスクリプトは値を何千も生むので、ステーションの知らせをその下に埋めてしまうからです。アクションについてコンソールが運ぶのは、その失敗です。タグへの書き込みは工業値を受け取り、機器が受け取る生値まで、そのタグの値の変換経路を逆にたどります。詳しくは変数とアクションにあります。
権限とロック
| 権限 | ここで何ができるか |
|---|---|
| Logic の表示 | ページを開き、実時間の値も含めて、そこにあるものをすべて読めます。 |
| Logic の構成 | 変数、アクション、トリガー、警報、フォルダーの作成、編集、名前の変更、移動、複製、有効化、無効化、削除と、素材のライブラリの手入れができます。 |
| Logic の操作 | 内部値の書き込み、アクションの実行、警報の確認が、ここでも、ダッシュボードでも、イベントのページでもできます。 |
Logic の表示だけのロールは、ページ全体を読むだけです。編集画面は「お使いのロールは Logic を見られますが、構成(変数、アクション、トリガー、警報、素材)はできません。」という注意の下で動かず、構成や操作の動詞は 1 つも描かれません。操作は持つが構成は持たないロールでは、実行、確認、すべて確認、設定する値が生きたままです。Process のユニットがステーションを押さえている間、ページはエンジニアリングロックの通知を出し、構成の動詞と編集の入力欄はすべて灰色になります。実行、確認、設定する値は使えたままです。ランタイムが停止している間は、構成も操作も「ランタイム停止中」で拒否されます。ツリーとパネルは読めたままですが、実時間のデータは持ちません。権限の一覧は権限にあります。
このページがしないこと
保存も、元に戻すもありません。1 回のキー入力が、そのまま保存された変更です(操作ログ帯が「保存しました。」と伝えます)。拒否された保存は、その入力欄をステーションが持っている内容に読み直します。エージェントが自分のツールで作ったり削除したりした定義は、開いている欄をひとりでに更新しません。その枝は、このページが次にその節で作成、複製、削除をしたときに読み直されます。警報の履歴、イベントのコンソール、ダッシュボードは、それぞれ自分のページにあります。