Beckhoff ADS
ADS/AMS で Beckhoff TwinCAT の PLC につなぎます。AMS の経路、ランタイムのポート、シンボルのパス、読み取り長。
Beckhoff ADS のドライバーは、AMS の経路に載る TwinCAT の自動化のプロトコル、ADS で Beckhoff TwinCAT の PLC と話します。値は PLC のプログラムの中のシンボルのパスで指すので、入力するものは TwinCAT のプロジェクトが宣言しているそのままです。Connector の Beckhoff ADS のドライバーの下に機器を追加してください。パネルは、このプロトコルが使う項目だけを見せます。
接続
| 項目 | 意味 | 既定 |
|---|---|---|
| ホスト | PLC の IP アドレス。その AMS ネット ID は、このアドレスから {ip}.1.1 として導かれます。 |
空 |
| ポート | 相手のランタイムの AMS のポート。0 は 851、つまり TwinCAT 3 の PLC ランタイム 1 を使います。それ以降の TwinCAT 3 のランタイムは、そこから順に上がります(852、853、…)。 | 0 |
| ローカル IP(AMS) | このステーション自身の IP アドレスで、そこから AMS ネット ID が {ip}.1.1 として導かれます。PLC に設定した AMS の経路と一致している必要があります。空のままにするとホストの値が使い回されますが、それは両端が同じアドレスを共有するときしか働かないので、実際には入力してください。 |
空 |
| 読み出し周期(ms) | 上書きしないタグに対する、機器全体の読み取りの周期。 | 1,000 |
機器の見出しは、組み立てられた接続先を見せます。たとえば ads://192.168.0.1:192.168.0.50:851(ローカル IP、PLC の IP、AMS のポート)です。各タグは自分の読み出し周期(ms)を持てます。タグの値が 0 のときは、機器の周期に戻ります。
ADS は、PLC が知っているステーションにしか答えません。PLC に静的な AMS の経路を追加してください(TwinCAT Engineering の SYSTEM → Routes か、TwinCAT の通知領域のアイコンから)。そのアドレスをこのステーションの IP に、AMS ネット ID をその IP に .1.1 を続けたものにし、ドライバーがローカル IP(AMS)から導くものと一致させます。経路がないと、ネットワークの経路に問題がなくても接続は失敗します。
アドレス指定
Beckhoff のタグは、タグの「取得元」のカードの 2 つの項目でアドレスを取ります。
| 項目 | 意味 | 受け付ける値 | 既定 |
|---|---|---|---|
| シンボル | PLC のプログラムの中の変数のシンボルのパス。必須です。 | 自由記述、たとえば MAIN.fValue |
空 |
| 読み取り長(バイト、空欄なら自動) | 1 回の読み取りで運ぶバイト数。空欄ならデータ型から大きさを決めます。 | 1 以上、または空欄 | 空欄 |
シンボルのパスは、TwinCAT が見せているそのままです。プログラムの変数は MAIN.fValue、グローバル変数リストは GVL.MachineSpeed や GVL_Settings.rSetpoint のようになります。ドライバーは PLC 上でシンボルを名前から解決し、その生のバイトを読みます。自動の読み取り長は次のとおりです。
| データ型 | 自動の読み取り長 |
|---|---|
| Boolean | 1 バイト |
| Int32 | 4 バイト |
| Float | 4 バイト |
| String | 16 バイト |
16 文字より長い文字列では、宣言した大きさに届くよう読み取り長を設定してください(TwinCAT の STRING(80) には文字に 80 バイト必要です)。「取得元」のカードの読み取り専用の取得元のアドレス(バス上)の行が、編集しているそばから組み立てられたアドレスを見せます。
データ型
データ型の選択肢には、このドライバーが扱う 4 つの型が出ます。
| データ型 | PLC 側の対応 | 備考 |
|---|---|---|
| Boolean | BOOL | 1 バイト。0 でなければ true |
| Int32 | DINT | PLC に合わせたリトルエンディアン |
| Float | REAL | PLC に合わせたリトルエンディアン |
| String | STRING | 読み取りの中身の、最初の NUL までの文字 |
バイト順は PLC 自身のリトルエンディアンで、自動的に扱われます。バイト順の選択肢はありません。文字列の読み取りは、返ってきた中身を最初の NUL の終端まで解釈するので、短い文字列の後ろの詰め物が値に混じることはありません。ほかの TwinCAT の幅(INT、LREAL、WORD、…)は出ません。そういう変数をここで読むには、PLC のプログラムで上の 4 つの型のどれかとして公開してください。
書き込み
アクセスが読み書きか書き込みのみのタグは書き込めます。書き込みは同じシンボルを解決し、その値のバイトを書きます。ブール値は 1 バイト、Int32 と Float は 4 バイトです。文字列の書き込みは、そのタグの読み取り長の全体を置きます。前に文字の UTF-8 のバイトを、その後ろに 0 を並べるので、長い文字列の上に短い文字列を書くと値が丸ごと置き換わり、古いものは何も残りません。宣言した長さに収まらない文字は、切り詰められるのではなく、長さを診断ログに残して拒否されます。新しいタグは読み取りのみから始まります。
機器検出
このドライバーの ADS には同報による機器検出がないので、Connector は機器検出のボタンを出しません。機器とそのシンボルは手で追加してください。
知っておくとよいこと
- 最初の接続が失敗する理由としていちばん多いのは AMS の経路です。PLC 側の経路の AMS ネット ID は、ステーションの IP に
.1.1を続けたものでなければなりません。 - シンボルは読み取りのたびに名前で解決されるので、PLC へのダウンロードでシンボルの名前が変わったり消えたりすると、そのタグは名前がふたたび一致するまで品質が悪くなります。
- 届かない PLC があっても起動時の損はありません。機器は背後で再試行を続け、接続がつながるまでそのタグは品質が悪いものとして読まれます。