mcpField
I
iec61131

iec61131

github.com/claude-dev-suite開発46148 回インストール2 日前に更新
リポジトリ

iec61131 について

IEC 61131-3 に基づく PLC プログラミングの開発者向けリファレンスです。各言語、プログラム構成単位、データ型、交換形式に加え、PLCopen 標準とベンダーごとの形式対応をまとめています。

主な機能

  1. 01IEC 61131-3 の五つの言語の概要
  2. 02プログラム構成単位と変数スコープ
  3. 03データ型のリファレンス
  4. 04PLCopen 標準と交換形式
  5. 05言語構造の例

活用シーン

  1. 01PLC のタスクに合う言語の選択
  2. 02ファンクションブロックや変数定義の確認
  3. 03PLC プログラム交換形式の対応状況の把握

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill iec61131

インストール後、Claude Code で/iec61131を入力して読み込まれたか確認します。

詳細

IEC 61131-3 プログラミング言語リファレンス

概要

IEC 61131-3 では、PLC 向けに 5 つの相互に置き換え可能なプログラミング言語が定義されています。

言語種類最適な用途状態
LD(ラダー図)グラフィカルディスクリートロジック、モーターのインターロック使用中
FBD(ファンクションブロック図)グラフィカル連続制御、PID、アナログ制御使用中(DCS の主言語)
ST(ストラクチャードテキスト)テキスト複雑な計算、アルゴリズム使用中(最も表現力が高い)
IL(インストラクションリスト)テキスト低レベル、アセンブリー風非推奨(第 3 版、2013 年)
SFC(シーケンシャルファンクションチャート)グラフィカルシーケンス、バッチ、ステートマシン使用中

プログラム構成単位(POU)

PROGRAM

タスク(スキャンサイクル)に関連付けられた、最上位の実行単位です。

FUNCTION_BLOCK(FB)

内部状態を保持する再利用可能なブロックです(呼び出し間でメモリを保持します)。モーター、PID、タイマー、カウンターに使用します。

FUNCTION_BLOCK MotorControl
VAR_INPUT
    StartCmd : BOOL;
    StopCmd  : BOOL;
    FbkRun   : BOOL;
    Interlock: BOOL;
END_VAR
VAR_OUTPUT
    StartOut : BOOL;
    Running  : BOOL;
    Fault    : BOOL;
END_VAR
VAR
    MonTimer : TON;
    State    : INT;
END_VAR
FUNCTION(FC)

ステートレスで、メモリを持ちません。同じ入力には常に同じ出力を返します。

データ型

基本型

BOOL、BYTE、WORD、DWORD、LWORD、SINT、INT、DINT、LINT、USINT、UINT、UDINT、ULINT、REAL、LREAL、TIME、DATE、TIME_OF_DAY、DATE_AND_TIME、STRING、WSTRING

派生型(ユーザー定義)
TYPE MotorData :
STRUCT
    Running  : BOOL;
    Fault    : BOOL;
    Speed    : REAL;
    Runtime  : TIME;
END_STRUCT
END_TYPE

変数のスコープ

スコープキーワード説明
ローカルVARPOU 内部
入力VAR_INPUT読み取り専用の入力パラメーター
出力VAR_OUTPUT出力パラメーター
入出力VAR_IN_OUT双方向パラメーター
グローバルVAR_GLOBALすべての POU からアクセス可能
外部VAR_EXTERNALグローバル変数への参照
一時VAR_TEMP永続性なし
コンフィグVAR_CONFIGダウンロード時に設定
定数CONSTANT名前付き定数

言語の詳細

ST(ストラクチャードテキスト)- コード生成で最も重要
IF Motor.FbkRunning AND NOT Motor.Fault THEN
    Motor.Status := RUNNING;
    Motor.Runtime := Motor.Runtime + T#1s;
ELSIF Motor.Fault THEN
    Motor.Status := FAULTED;
    Motor.AlarmActive := TRUE;
END_IF;

CASE State OF
    0: (* IDLE *)
        IF StartCmd AND NOT Interlock THEN State := 1; END_IF;
    1: (* STARTING *)
        StartOut := TRUE;
        MonTimer(IN:=TRUE, PT:=T#10s);
        IF FbkRun THEN State := 2; END_IF;
        IF MonTimer.Q THEN State := 99; END_IF;
    2: (* RUNNING *)
        IF StopCmd THEN State := 3; END_IF;
    3: (* STOPPING *)
        StartOut := FALSE;
    99: (* FAULT *)
        StartOut := FALSE;
        Fault := TRUE;
END_CASE;
SFC(シーケンシャルファンクションチャート)

要素:ステップ、トランジション、アクション

  • ステップにはアクションが含まれます(任意の言語で記述)
  • トランジションはブール条件です
  • アクション修飾子:N(非保持)、S(セット)、R(リセット)、L(時間制限付き)、D(遅延)、P(パルス)
  • 並列分岐(同時実行)、代替分岐(選択実行)
FBD(ファンクションブロック図)

信号は左から右へ流れます。ブロックは関数を表します。ワイヤーで出力と入力を接続します。DCS の主言語です(PCS 7 CFC、DeltaV Control Studio、ABB Freelance)。

LD(ラダー図)

リレー論理に基づいています。接点(NO/NC)、コイル、タイマー、カウンターを使用します。左右に電源レールがあります。ラングは上から下へ並びます。

PLCopen 規格

TCトピック説明
TC1規格IEC 61131-3 準拠試験
TC2モーション制御MC_MoveAbsolute、MC_Stop、MC_Home など
TC3ソフトウェアエンジニアリングコーディングガイドライン
TC4通信OPC UA マッピング
TC5安全IEC 61508 拡張
TC6XML 交換ベンダー中立のプログラム交換形式

PLCopen XML 形式(TC6)

<project xmlns="http://www.plcopen.org/xml/tc6_0201">
  <types>
    <pous>
      <pou name="MotorControl" pouType="functionBlock">
        <interface>
          <inputVars>
            <variable name="Start"><type><BOOL/></type></variable>
          </inputVars>
          <outputVars>
            <variable name="Running"><type><BOOL/></type></variable>
          </outputVars>
        </interface>
        <body>
          <ST><xhtml></xhtml></ST>
        </body>
      </pou>
    </pous>
  </types>
</project>

対応製品:CODESYS、ABB AC500、Schneider、Beckhoff、B&R。 非対応製品:ABB Freelance(PRT を使用)、Emerson DeltaV(FHX を使用)、Siemens(SimaticML を使用)。

その他の交換形式

形式規格使用製品
PLCopen XMLIEC 61131-10CODESYS、Schneider、Beckhoff
SimaticMLSiemens 独自仕様TIA Portal
AutomationMLIEC 62714Siemens PCS 7 V9 以降、マルチベンダー
FHXEmerson 独自仕様DeltaV
PRT/CSVABB 独自仕様Freelance
DEXPIISO 15926P&ID 交換

コメント