Beckhoff TwinCAT/ADS
ADS (Automation Device Specification) は、ドイツ Beckhoff の TwinCAT ランタイムが使用する通信規約です。TwinCAT 2 / 3 が動作する産業用 PC (IPC) と EtherCAT マスタ環境で主に使われます。
自動車ライン / 半導体 / 風力 / モーションコントロールなど PC ベースの制御環境であれば、ほぼ間違いなく ADS です。
登録フォームの入力値
| 入力欄 | 何を記入するか | 例 |
|---|---|---|
| IP アドレス | TwinCAT が動作する IPC の IP | 192.168.0.80 |
| ポート | ADS TCP ポート | 48898 (標準 / 変更は非推奨) |
| Target AMS NetId (target-netid) | 対象 IPC の AMS NetId — 空欄にすると IP주소.1.1 から自動生成 | 192.168.0.80.1.1 |
| Target AMS ポート (target-port) | TwinCAT ランタイムポート | 851 (TwinCAT 3 PLC) / 801 (TwinCAT 2 PLC1) |
その他のオプション: source-netid / source-port (ゲートウェイ側の AMS 識別子 — デフォルト 32905)、
connect-timeout / read-timeout (ms、デフォルト 3000)。旧オプションキー表記
(ams-net-id / ams-port / target-ams-net-id / timeout-request) は廃止されました。
AmsNetId の形式
a.b.c.d.1.1 の形で 6 オクテットです。通常は IPC の IP アドレスの後ろに .1.1 を付けた値ですが、TwinCAT System Manager に表示された NetId が正解 です。確認場所はシステムトレイの TwinCAT アイコン → Properties → AMS NetId。
Route の登録 (必須)
ADS は双方が相手の NetId を把握していないと通信できません。ゲートウェイが PLC を初めて呼び出すと、PLC 側で Add Route Dialog が表示されるか、自動的に拒否されます。TwinCAT System Manager → Routes → Add でゲートウェイの IP / NetId を追加し、TwinCAT ライセンスが valid であることを確認してください。
TwinCAT 3 では 30 日間の評価版が期限切れになると ADS 応答が停止します。License Manager でライセンス状態をまず点検してください。
タグの PLC アドレス表記
ADS は 2 種類のアクセス方式に対応します。
1. メモリ領域の直接指定 (Indexed)
| 表記 | 意味 |
|---|---|
M0:4 | メモリ領域 (M%) offset 0、4 byte |
I0:2 | 入力領域 offset 0、2 byte |
Q0:2 | 出力領域 offset 0、2 byte |
<area>:<offset>:<size> 形式。size は byte 単位です。
2. シンボリック (Symbolic)
| 表記 | 意味 |
|---|---|
MAIN.fCounter | MAIN プログラムの fCounter 変数 |
MAIN.fCounter:REAL | データ型を明示 (32-bit 実数) |
GVL.bRunning:BOOL | Global Variable List の bRunning |
シンボリック表記を使うには、PLC 側に TPY (TwinCAT 2) または シンボルのダウンロード (TwinCAT 3 → Build → Activate Configuration) が実施されている必要があります。
データ形式のマッチング
| PLC の値 | データ形式 | 形式補助 | PLC アドレス例 |
|---|---|---|---|
| BOOL | Boolean | (空欄) | GVL.bRunning:BOOL |
| BYTE / SINT | Integer | B | MAIN.bByte:BYTE |
| INT (16-bit) | Integer | (空欄) | MAIN.nCount:INT |
| DINT (32-bit) | Integer | DW | MAIN.nTotal:DINT |
| REAL (32-bit 実数) | Float | REAL | MAIN.fTemp:REAL |
| LREAL (64-bit 実数) | Double | LREAL | MAIN.fPos:LREAL |
| STRING(80) | String | STR[80] | MAIN.sName:STRING |
よくある問題と解決
| 症状 / メッセージ | 考えられる原因 | 解決 |
|---|---|---|
| "No route to host" | Route が未登録 | TwinCAT System Manager → Routes でゲートウェイを追加 |
| "Target port not found" | AmsPort がシリーズと不一致 | TC2 = 801、TC3 = 851 を再確認 |
| "Symbol not found" | シンボルのダウンロード未実行 | TwinCAT 3 で Activate Configuration を実行後に再試行 |
| すべての値が 0 | TwinCAT が RUN ではなく STOP / CONFIG モード | System Manager で RUN に切り替え |
| ライセンスエラー | 評価版の期限切れ | License Manager でライセンスを更新 |
よく使う例
| タグ名 | PLC アドレス | データ形式 | 形式補助 |
|---|---|---|---|
| 運転中フラグ | GVL.bRunning:BOOL | Boolean | (空欄) |
| カウンタ | MAIN.nCount:DINT | Integer | DW |
| 温度 | MAIN.fTemp:REAL | Float | REAL |
| バッチ名 | MAIN.sBatch:STRING | String | STR[80] |
より詳しい例 / 自動登録
高度な設定 — REST API の ADS 例を参照してください。