この番組はホストによって「クリーン」としてマークされています。
--------------------
01 導入
これは8部シリーズの第3話です。
02
前回のエピソードでは、
* 産業制御におけるコンピューターの初期の歴史
* PLCの初期の歴史、その名前の由来まで
* 主要なブランドは誰ですか
* 物理的な見た目はどうでしょうか
抽象機械アーキテクチャの基本的な説明
PLCプログラムの簡単な概要
スキャン概念
メインのPLCプログラミング言語
マイナーのPLCプログラミング言語
各プログラミング言語の相対的な人気
03
このエピソードでは、最初に広範に使用し始めた時代の初期のPLCの1つを見ていくところから始めます。
包括的な試みはしないでしょう、ただ限られた時間内で広範な概要を提供します。
私は、そのシンプルさと制限された機能により、そのトピックへの導入が容易な古いモデルから始めました。
--------------------
04 アレン・ブラッドリー PLC/2
アレン・ブラッドリー PLC/2 は、1977 年に市場に導入されました。
これは彼らのこの分野への最初の試みではありませんでしたが、最初の本当に成功したものでした。
私は、彼らの初期製品ラインの包括的な歴史には気づきませんが、初期の主要な販売モデルの一つは PLC2/30 でした。
これはまた、彼らの 1771 シリーズとしても知られています。
--------------------
05 物理レイアウト
CPU モジュールは大きな金属箱で、I/O ラック横に置かれ、ケーブルで接続されていました。
I/Oラックは、前面が開いた箱で、I/Oを格納する背の高い細長い箱をスロットに差し込むことができる一連のスロットを備えていました。
06
バックプレーンは背中に横たわり、I/OをCPUに接続していました。
複数のラックはケーブルで接続できました。
PLC2/30では、最大896個のデジタルI/Oポイントを持つことができました。
07
ラックの高さは315mmで、幅は247mmから610mmで、4、8、12、16スロットの種類がありました。
CPUはラックと同じ高さで、概ね四角い輪郭をしていました。
08
マイクロエレクトロニクスの進歩に伴い、CPUモジュールはサイズが縮小され、ラックのスロットに収まるようになり、PLCの標準となりました。
--------------------
電子機器の内側
初期のPLC/2は、ある種の8ビットプロセッサを使用していました、いくつかの情報源はインテル8080だと述べています。
10
彼らはまた、論理コプロセッサとして4つのAMD 2900ビットスライスプロセッサを使用しました。
ビットスライスプロセッサについて知らない場合は、これらはプロセッサの4ビット垂直スライスのようなチップで、論理チップと組み合わせて完全なCPUを形成することができます。
これらは、ミニコンピュータを構築するために使用されたものです。
11
これらは、ユーザープログラムの実行を迅速に処理するのに十分な速度が得られなかったため、初期のPLCでコプロセッサとして使用されました。
全体的な操作とシステム管理を調整するために、1つまたは複数のマイクロプロセッサも使用されました。
12
マイクロプロセッサが高速化され、より強力になるにつれて、論理コプロセッサの必要性は低下し、最終的には削除されました。
初期のバージョンでは、磁気コアメモリが使用されていました。
後発のものは、ある種の固体状態のRAMに切り替えられ、おそらく静的RAMの一種でしょう。
13
PLCの中にどのようなプロセッサが搭載されているかについての詳細情報を入手することは非常に難しいです。製造元は一般的にそのような情報について話すことはありません。
彼らはユーザーにそれを単なるブラックボックスとして見てほしいと願っています。
--------------------
データテーブル14
プログラマーの視点から見ると、最初に理解すべき最も重要なことはデータテーブルです。
データテーブルはPLCのデータメモリです。
15
PLC2にとって、これは16ビット単語の配列です。
各単語は8ビットバイトの2つで構成されています。
8ビットと文字の両方にアドレスを設定します。
16
それらに馴染みのない人たちのために、八進数には0から7までのカウントシステムがあります。
7の次の数字は10です。
その後、11、12、13など、17、20、21などに進みます。
八進数の各桁は正確に3ビットを消費します。
17
PLC2表記の個々のビットは、ワードを指定し、スラッシュを入れ、その後ビットを指定することでアドレスできます。
例えば、030/12は030の12ビットです。八進数であることを覚えておいてください。そのため、12は十進法で12番目のビットではありません。
18のメモリ組織化
PLC2/30のデータテーブルは、以下のように組織化されています。
19
アドレス000から007は、プロセッサーワークエリア1です。
ユーザーはアクセスできません。
20
アドレス010から100(含まれません)は、出力イメージテーブルです。
これは、I/O出力のメモリマップ画像です。
010から077は、ラック1用です。
020から027は、ラック2用です。
このパターンは、ラック7(070から077)まで続きます。
21
100から107までのワードアドレスは、プロセッサーワークエリア番号2です。
ユーザーにはこれもアクセスできません。
22
110から200までのワードアドレスは、入力イメージテーブルです。
これはI/O入力のメモリマップされたイメージです。
これは出力イメージテーブルの同じ方法でレイアウトされ、110から177まで続きます。
110から117はラック1用です。
120から127はラック2用です。
このパターンはラック7まで続き、170から177です。
23
出力画像テーブルと入力画像テーブルは、どちらも同じラックスロットを指定しているように見えます。
実際、そうです。
特定のラック内の特定のスロットがどの住所に対応するかは、そのスロットに入力カードまたは出力カードがあるかどうかに依存します。
24
アドレス200から277は、タイマー/カウンターの蓄積値用です。
蓄積値は、現在の時間またはカウントです。
25
アドレス300から377は、タイマー/カウンターの事前設定値用です。
事前設定値は、到達したときにタイマーまたはカウンターが望ましい値に達したことを示すターゲット時間またはカウントです。
26
400以上のメモリは、データストレージエリアとユーザープログラムエリアに分割するように構成できます。
データストレージエリアは、プログラムで使用するデータを保存する場所であり、I/Oまたはタイムカウンターの一部ではありません。
ユーザーデータとプログラムサイズ間の適切なバランスを取る必要があります。
27
上記に関して変更や設定できることはいくつかありますが、このPLC2のチュートリアルではないので、深くはカバーしません。
=
しかし、初期モデルPLCのメモリの概略はよく理解しているべきです。
理解すべきことは、I/Oがメモリアドレスにマッピングされていることです。
異なるメモリ範囲は、異なる目的に使用されます。
28
メモリ管理はすべて手動でした。
どのメモリアドレスがどのような目的に使用されるかを追跡するのはユーザーの責任でした。
アレン・ブラッドリーは、コピーして使用できる用紙の書類を提供してくれました。これを使って、各住所がどのように使用されるかを計画し、文書化することができます。
プログラマーの仕事の一部は、メモリを効率的かつ論理的に使用することであり、将来の変更のためにスペースを残すことです。
--------------------
ユーザー・プログラム 29
ユーザー・プログラムは命令で構成されています。
通常、各命令はメモリの単語を1つ使用します。
しかし、複雑な命令は最大8つのメモリ単語を使用することがあります。
30
メイン・プログラムがあります。
これはC言語の"main"関数のようなものと考えることができます。
あの比喩が役に立たないと感じるなら、プログラムがスタートする場所だと考えてください。
メインのプログラムは、END という文まで、一歩ずつ進み続けます。
31
サブルーチン領域もあります。
メインのプログラムは、ジャンプしてサブルーチン(JSR)命令を使って、サブルーチンを呼び出します。
T3 プログラミングターミナル
PLC2 が発売された頃、ラップトップのようなものはまだ未来の話でした。
最初の Compaq ポータブル型スーツケーススタイルのPCも、まだ数年先でした。
実際、最初の PLC/2 は、最初の Altair PC キットが発売された直後でした。
33
プログラミングは当初、T3と呼ばれる特別なプログラミングターミナルを使用して行われました。
T3は、小さなCRTが搭載されたスーツケースサイズの箱で、その下にはキーボードが取り付けられていました。
これが初期のポータブルPCのように聞こえるかもしれませんが、実際にはそれらよりも数年先駆けていました。
34
キーボードはタイプライターやQWERTYスタイルではありませんでした。
それはグラフィカルな記号を備えた膜式キーパッドでした。
前回の回でリレーを使用した制御図について思い出してください。そして、それらは図面上で図面記号を使用して文書化されていました。
T3ターミナルのキーパッドには、それらの図面記号に対応する簡略化および変更されたバージョンの記号がありました。
35
プログラマーがキーパッド上でその記号の一つを押すと、その対応する記号が現在のカーソル位置に画面に表示されました。
プログラマは、シンボルに対応するデータアドレスを入力するために、キーパッドの数値部分を使用することができました。
36
したがって、エンジニア、技術者、電気技師は、ハードウェアコンポーネントの制御に関する既存の知識を利用して、完全にグラフィカルな環境でプログラムを作成し、入力することができました。
彼らはこれをコンピューターへのプログラミングとは見なさず、コンピューターとは無関係な全く別のものと見なしました。
37
プログラミングは、T3がPLCに接続されている間に、PLCがプログラムモードになっているときに行われました。
命令は直接ターミナルからPLCメモリに入力されました。
プログラムはカセットテープに保存または復元することができました。
プログラムは、PLCが実行モードに設定されているときに実行されました。
38
さらに、T3ターミナルは、プログラムをオンラインでデバッグすることを可能にしました。
T3が実行モードで接続されると、ラダー図がリアルタイムで更新されます。
ロジック条件が真であれば、それが強調表示されます。
ロジック条件が偽であれば、非強調表示されます。
39
特定のステップを観察することで、期待されるグラフィック指示の系列がすべてパターン化して強調表示されているかどうかを確認でき、ステップの最終出力が期待通り真または偽になることがわかります。
これは、ソフトウェアバグやハードウェア不具合の特定に非常に役立つトラブルシューティングツールでした。
プログラミングターミナルは、産業メンテナンス電気技師の必須機器の不可欠な部分となりました。
40
最終的には、携帯型PCや後にラップトップが利用可能になり、T3は時代遅れとなり、これらの機能は標準PC上で動作するソフトウェアに移管されました。
しかし、基本的には同じ方法で動作し続けています。
追加機能が加えられ、PLCに接続されていない状態でプログラムを作成する能力が含まれました。
メモリアドレスに説明的なラベルやコメントを追加することで、それらを文書化し、プログラムの読みやすさを助けることができます。
クロスリファレンス機能により、どの住所が何に使用されたのかを簡単に見つけることができます。
など。
--------------------
41 命令
ここで、利用可能な命令の種類を列挙します。
すべてを説明しようとはしませんが、これらのプログラミング方法について少なくとも漠然としたアイデアを与えるでしょう。
アレン・ブラッドリーの名称を使用しますが、強調しておきますが、これは他のメーカーがそれらを呼ぶ方法とは対応していません。
42リレータイプの指示
これらはブール指示であり、以下のものを包含します。
43入力指示
これらはメモリ内のビットを調べ、参照しているビットの値に応じて論理状態を生成します。
入力指示はラングの左側から始まり、さらに追加されるにつれて右に進みます。
調べるオン - 参照しているビットが1に設定されているときこれが真となります。
調べるオフ - 参照しているビットが0に設定されているときこれが真となります。
44出力指示
これらのビットは、それに至るブール論理条件の合計に応じてオンまたはオフになります。
出力指示は各ステップの右側にあります。
常に少なくとも1つの出力指示が必要です。
出力 Energize - 論理条件が真である場合、ビットを1に設定します。
論理条件が偽である場合、ビットを0に設定します。
45
出力 Latch - 真である場合、ビットをオンにします。
偽である場合、何も行いません。
出力 Unlatch - 真である場合、ビットをオフにします。
偽である場合、何も行いません。
46 分岐命令
これらは自体では何も行いませんが、図面上の配線接続を行います。
これらは、上記の命令を同じ段に並列に配置することを可能にすることで重要です。そうすることで、OR条件を指定するなど、さまざまなことが行えます。
これらの命令をORまたはOR NOT命令に変換すると考えることができます。
--------------------
47 タイマーとカウンター命令
タイマーとカウンターは、名前の示す通り、タイミングとカウント操作を行う命令です。
これらは、別々の事前設定値と累積値を持っています。
彼らはラダーの右側にある出力指示の一種であり、その動作は左側のラダーロジックの状態に依存します。
48
タイマーとカウンターはバイナリコードデシマル(BCD)値で動作します。
BCD値はそれぞれ4ビットのメモリを消費します。
しかし、ヘキサデシマルとは異なり、0から9までの値のみが有効です。
ヘキサデシマルでAからFの値はBCDでは無効な値です。
49
プリセット値と蓄積値は16ビットワードに格納されます。最初の12ビットは最大3つのBCD桁を格納するために使用されます。
残りの最上部4ビットは、タイマーまたはカウンターが完了したかどうかなどの指示ステータスビットを格納するために使用されます。
50のタイマー
タイマーのタイムベースはタイマーの解像度に対応します。
タイムベースは1.0秒、0.1秒、0.01秒です。
したがって、1秒のタイムベースを持つタイマーは、0から999秒まで1秒の解像度で計測できます。
0.1秒のタイムベースを持つタイマーは、0から99.9秒まで0.1秒の解像度で計測できます。
51
タイマーには3種類あります。
タイマーオン遅延(またはTON)、
タイマーオフ遅延(またはTOF)、
保持タイマー(またはRTO)。
52
条件が真である間、遅延タイマーは時間を計測し、それが偽になるときにリセットされます。
条件が偽になる後にオフ遅延タイマーは時間を計測し、再び真になったときにリセットされます。
保持タイマーはオン遅延タイマーに似ていますが、リテンティブタイマーリセット(RTR)命令によってリセットされるまで蓄積した値を保持します。
通常、タイマーを開始し、その後、その「完了」ビットをロジックの別の場所で監視します。
53カウンター
カウンターはイベントを数えます。
これらは以下の種類があります。
54
アップカウンター(CTU)。
ダウンカウンター (またはCTD)
カウンターリセット (またはCTR)
スキャンカウンター (またはSCT)
55
アップカウンターはゼロからカウントアップし、ダウンクウンターは事前に設定された値からカウントダウンします。
スキャンカウンターはプログラムのスキャンの数をカウントします。
これは通常、使用目的が見つからないものですが、スキャン時間の計算などに使用できます。
--------------------
56 データ操作命令
データ操作命令は、バイトデータとワードデータの読み取り、書き込み、比較に使用されます。
操作は、ラングが真になったときに行われます。
57
GETはメモリ位置から16ビット単語を読み取ります。
PUTはメモリ位置に16ビット単語を書き込みます。
LESは、GET命令で読み取られた値が指定された値より小さい場合に真になります。
EQUは、GET命令で読み取られた値が指定された値と等しい場合に真になります。
58
LESとEQU命令は、GET命令と組み合わせて、より、小さい、等しいなどのすべての可能な比較パターンを提供できます。
59
GET BYTEはメモリ位置から8ビットバイトを読み取ります。
LIMIT TESTは、バイト値が単語の上位と下位のバイトに格納された制限値の間でない場合に真になります。
リミットテストはゲットバイトと組み合わせて使用されます。
--------------------
算術命令 60
算術命令はBCDワード値にも作用します。
操作は、ステップが真実であるときに行われます。
最も重要なバイトは、算術オーバーフローやアンダーフローのようなものを表示するために使用されます。
これには、以下のものが含まれます。
61
アド
減算
乗算
除算
10進数から2進数への変換
2進数から10進数への変換
--------------------
62ブロック転送命令
ブロック転送命令は、データテーブルとI/Oモジュール間で最大64個の16ビット単語データを転送するために使用される出力命令です。
これらは、単語ではなくビット単位で動作する知能I/Oで使用されます。
63
これらの例は、例えば...
アナログI/Oは、単にオンまたはオフではなく、変動する電圧を読み書きします。
PIDが温度などの閉ループ制御を扱う。
温度を読み取るサーミカップル。
サーボモーターの位置を制御するサーボモーター制御装置。
ステッパーモーター制御
位置エンコーダー
64
ブロック転送の詳細には触れませんが、PLCがこのような機器をデジタルモジュールの単純なオン/オフ状態と比較してどのように処理できるか、一般的なイメージをお伝えできると思います。
明らかに、これらはGET、PUT、およびメモリ位置を読み書きできる他のデータ操作命令と組み合わせることができます。
--------------------
65回のジャンプ命令とサブルーチンプログラミング
これには以下の命令が含まれます。
66
ジャンプ(またはJMP)
ラベル(またはLBL)
サブルーチンへのジャンプ(またはJSR)
リターン(またはRET)
67
ジャンプは実行をラベル位置にジャンプします。
それはGOTO命令のようなものです。
68
ラベルは数値で、オクタルで00から77までの範囲があります。
ジャンプ命令は実行出力であり、命令が真であるとき、実行は指示されたラベル番号にジャンプします。
ラベルは入力指示であり、実行が再開される直前に表示されます。
69
通常のジャンプはサブルーチンにジャンプすることはできず、前方にのみジャンプし、後方にはジャンプできません。
これは、ジャンプを使用してループが不可能であることを意味します。
これは、プログラムがループにハマり込み、スキャンが進行しないことを防ぐための意図的な設計決定です。
70
サブルーチンはメインプログラムの終わりに登場します。
彼らはラベル指示を用いて数値オクタルラベルで定義されます。
サブルーチンは、ジャンプ・トゥ・サブルーチン(JSR)命令によって呼び出されます。
サブルーチンの終了時に、リターン(RET)命令は、JSRによって呼び出された次の命令に実行を戻します。
サブルーチンへの呼び出しは、最大8重までネストできます。
--------------------
71 データ転送ファイル命令
名前から推測するかもしれませんが、PLC2 にはディスクファイルはありません。
「ファイル」命令は、単語ブロックをデータメモリの場所から別の場所に移動させます。
=
これには、ソースアドレス、デストネーションアドレス、および操作を制御するさまざまな他のパラメータが含まれます。
これらの命令には実際にはかなり複雑な要素がありますが、詳細に説明するつもりはありません。
データのブロックを移動させることができることを知るだけで十分です。
--------------------
72シフトレジスタ命令
これらは単語全体のシリーズに対して動作し、
=
ファイルを上へシフト
ファイルを下へシフト
FIFOに読み込み
FIFOから読み出し
73
これらは1から999語に対して動作できます。
この種の指示の典型的な用途は、機械のさまざまなステーションを通過する部品を追跡することです。
--------------------
74ビットシフト
これらは個々のビットを操作し、以下のものを含まれます。
75
ビットシフト左
ビットシフト右
オフシフトビットを確認
オンシフトビットを確認
シフトビットを設定
リセットシフトビット
76
これらは、ビットを左または右にシフトさせるという期待通りの動作をします。
しかし、シフトレジスタは1ビットから999ビットの長さに定義できるため、単語の長さに制限されるわけではありません。
--------------------
77シーケンス命令
シーケンス命令は、電気機械式ドラムコントローラのソフトウェアエミュレーションです。
ドラムコントローラは、長い操作シーケンスを実行することを可能にしました。
これらは、外側表面に並行した穴の定期的なシリーズを持つ回転ドラムを使用しました。
これらの穴の上には、リミットスイッチの列がありました。
これらの穴にペグを挿入し、リミットスイッチと接触させることで、ドラムコントローラはリレーやバルブのパターンをオンにすることができます。
78
リミットスイッチの一部は、機械の動く要素に取り付けられたセンサーに接続できます。
機械の部品がシーケンスのそのステップの正しい位置にあるとき、ペグのパターンはリミットスイッチを通じて電気経路を完成させ、ソレノイドを活性化させ、ドラムを次のステップにクラッチします。
79
これはしばしば音楽箱や古い洗濯機制御と比較されます。
しかしドラムコントローラの場合、ペグは入力マッチ条件だけでなく、望ましい出力もプログラムします。
PLC/2ドラムコントローラは、このシーケンサーをエミュレートします。
この機能は、自動車産業や他の組み立て指向の製造プロセスで使用される機器で非常に広く使用されるようになり、PLC/2プログラムの心臓部を形成することがよくあります。
80
シーケンサー命令の詳細には触れませんが、別入力と出力シーケンス命令があります。
センサーの状態をマッチングしようとする入力シーケンス指示と、ソレノイドバルブなどをオンまたはオフに制御する出力シーケンス指示があります。
シーケンス自体は、メモリ内の単語列で定義され、各ビットが個別の入力または出力に対応します。
--------------------
81 ファイル論理指示
ファイル論理指示は、コンピュータ用語で「配列」と呼ばれるものに対する配列演算に相当します。
これらの指示には
および
または
排他的論理和
補完
--------------------
82の特別プログラミング技術
これらは雑多な命令です。
これらは以下のもので構成されています。
先頭の一回ショット
尾行の一回ショット
83
一回ショットは、ラング論理条件の状態変化により、指定されたビットがスキャン中に一度オンになる出力命令です。
一回ショットは、偽から真への変化または真から偽への変化でトリガーされる可能性があり、使用された命令のどちらかによります。
--------------------
PLC2はなぜBCDを使用したのか?
あなたはおそらく、PLC2が通常の整数ではなくBCD番号を使用した理由を疑問に思っていることでしょう。
これは、初期のPLCが動作する環境を反映しています。
初期のオペレーターパネルは、機械的な数値入力デバイスと単純な電子式出力ディスプレイを使用しており、通常はBCDで動作していました。
85
スライドスイッチは、周囲に0から9までの数字が印刷された小さなドラム状の回転装置でした。
複数のホイールが隣り合って積み上げられていました。
それらはある種の機械式オドメーターに似ており、古い車に見られるものです。
しかし、オペレータは各桁のホイールを個別に動かすことができました。
各桁は、PLCの4つの入力に4本のワイヤーを接続することで読み取られます。
したがって、スライド式ダイヤルのハードウェアが動作する方法により、各桁は内在的にBCDでした。
86
個々のダイヤルを別々に回すことで、オペレーターは温度、速度、時間遅延など、プロセスパラメータを調整することができました。
出力オペレーター表示は、通常、7セグメントLED、ネオン、または真空蛍光表示でした。
これらの表示装置やそれに似たものは、PLCより前に存在し、取り扱う必要がある一般的な産業用装置でした。
各数値桁には、PLCの4つの出力に接続される4つの入力が備わっていました。
7セグメント表示はヘキサデシマルを使用できますが、オペレーターに摂氏温度を表示しようとすると、あまり役に立ちませんでした。
したがって、BCDが最も実用的な数値形式でした。
87
PLCsとそれらのユーザープログラムは、より能力があり、より洗練されたものになり、通常の整数や浮動小数点数との作業を開始しました。
しかし、多くの場合、PLCのほとんどはBCDに変換するための命令を保持していました。
--------------------
PLC2の影響
PLC2は、Allen Bradleyにとって非常に成功した製品であり、北米市場でトップの地位と世界全体でトップ5のベンダーとしての地位を確固たるものにしました。
しかし、いくつかの弱点があり、特に非常に原始的なメモリとサブルーチンアーキテクチャ、およびオクタル数とBCD数に焦点を当てています。
それは、制御リレーを置き換えることに焦点を当てており、これをもうまく行いました。
89
Allen Bradleyの次に本当に成功したPLC2の後継者はPLC5でした。
これは、PLC2の基本的な命令セットを新しいメモリシステム、新しいデータタイプ、別々の名前空間、パラメータ化された関数に結合しました。
90
基本言語でのプログラミングからパスカルへの切り替えのようなものでした。
しかし、PLC2 I/Oラックとモジュールを使用することはまだ可能で、I/OシステムがPLCのコストの大部分を占めることを考えると重要な要素です。
91
PLC 5は、より小型のフォームファクターでさらに近代化されたコントロジックスシリーズに取って代わられました。
アレン・ブラッドリーは、ロックウェルという名前の下で今でも主要なPLCベンダーの一つです。
--------------------
92 結論
このエピソードでは、広く使用されている特定の初期のPLC、アレン・ブラッドリーPLC2に焦点を当てました。
以下のトピックを扱いました。
内蔵電子機器。
データテーブル
ユーザープログラム
T3 プログラミングターミナル
命令セットの簡単な概要
93
これは比較的単純で、ある意味原始的なPLCでしたが、PLCの背後にある概念について大まかなアイデアは得られるはずです。データテーブルとスキャン概念、リレーのような命令セットについて。
94
次のエピソードでは、世界最大のベンダーであるシーメンスのPLCをご紹介します。
この例では、PLC2より少し後のモデルであるS5シリーズを見ていきます。
これは2世代目のPLCと見なせるでしょう。
私たちがすでにカバーしている基本的な概念を繰り返す必要がないので、S5とPLC2の比較で新しい点や異なる点に焦点を当てることができます。
95
これは8部構成のシリーズの3番目のエピソードです。
--------------------
