HPR4738:プログラマブルロジックコントロール - エピソード4

出典: Hacker Public Radio元のソースで開く ↗
著者 Whiskeyjack30/09/2026 às 00:00168 閲覧
Foto: CC BY-SA / Hacker Public Radio
🎙 Whiskeyjack · Hacker Public Radio

この番組はホストによって「クリーン」とフラグが立てられています。

--------------------

01 導入

これは8部構成のシリーズの第4話です。

02

前回のエピソードでは、初期の成功したプログラマブルロジックコントローラーの1つであるAllen Bradley PLC2を調べました。

このエピソードでは、シーメンスS5シリーズというもう一つの初期のPLCを見ていきます。PLCの発展の複雑さ、そして全体的なソフトウェアアーキテクチャの異なるアプローチの例として、これを利用します。

この件については、軽く触れるだけにします。PLCのプログラミングの授業ではありません。

しかし、彼らがどのようなものだったのかの大まかなアイデアを与えるために、技術的な詳細を十分に提供します。

--------------------

03 S5 歴史的背景

シーメンスは、世界最大のPLCベンダーであり、初期からそうです。

彼らの最初のPLCはS3で、1975年に発売され、アレン・ブラッドリーがPLC2を発売する2年前でした。

S3に関する情報はほとんどなく、そのためそれについて多くを語れません。

1978年または1979年、正確な日付は情報源により異なりますが、シーメンスはS5シリーズを発売しました。

これは能力の大きな向上であり、1990年代半ばにS7シリーズに取って代わるまで、彼らのPLC製品ラインの基盤でした。

このエピソードでは、S5のオリジナルモデルをアップグレードしたUシリーズに焦点を当てます。

--------------------

04 完全なPLCファミリー

完全に開発され、シーメンスS5シリーズは、最小から最大までの全体的なサイズスペクトルをカバーする完全な製品ファミリーでした。

シーメンスは産業制御市場全体をカバーしており、カタログにないものはほとんどありませんでした。

キャリア全体を通して、シーメンス製品だけを使ってあらゆることを行うことができます。

05

最も低価格帯はS5-100シリーズで、S5-100、102、103、90、95で構成されています。

これらの製品は、小型の「靴箱」型オールインワンから、中価格帯をカバーするものまで、さまざまなものがあります。I/Oカードはコンパクトで、フルサイズモデルより小さく遅いものでした。

S5-115は中価格帯をカバーし、パッケージングとラックサイズにおいて「フルサイズ」の形式を採用しています。

S5-135とS5-155は、S5-115の速度とメモリを拡張しています。

06

このエピソードでは、単純化のために低価格帯のS5-100シリーズに焦点を当て、大型モデルの追加機能には言及しません。

すべてをカバーしようとすると時間と混乱が非常に多くなり、それほど意味がないでしょう。

--------------------

07 データメモリタイプ

前回のエピソードを思い出してください。Allen Bradley PLC2には、すべての入出力と内部機能が固定数値アドレスにマッピングされた単一のリニアメモリシステムを持つデータテーブルまたはメモリシステムがありました。

Allen Bradleyは、1980年代半ばから後半に導入されたPLC5シリーズでこのアプローチを放棄しましたが、ここでは取り上げません。

しかし、Siemens S5シリーズは、異なる目的のための異なる種類のメモリアドレスを採用しました。

ここでS5-100シリーズのそれについて説明します。

08 入力と出力アドレス

これらのコンパクトPLCの標準I/Oモジュールは、1つのI/Oモジュールにつき8入力または8出力でした。

これらのモジュールは、閉じ込められたラックではなく、スロットが0から31までデカラル番号付けされたフラットバスに差し込まれました。

これらのスロットには関連するバイト番号があり、各モジュールごとのI/Oポイントにはビット番号がありました。

09

入力と出力の住所は次の形式でした。

文字、数値、小数点、数値。

文字はIまたはQでした。

Iは入力を示しました。

Qは出力を示しました。

最初の数値はバイト番号で、物理I/Oモジュールスロットに対応していました。

2番目の数値はバイト内のビット番号で、ゼロから始まりました。

10

「I2.3」は、ゼロから番号を付けると3番目のスロットに配置された入力モジュールを示し、そのモジュールの4番目の入力(ゼロから番号を付ける)を指しました。

出力も同じように機能しました。

例えば、「Q 5.1」

11

アナログモジュールは、0から7までのスロットに配置できました。

アナログ、つまり電圧のレベルが変化するものとは、単にオンまたはオフではなく、温度などのものを表すことができます。

各アナログモジュールは、スロットごとに8バイトが割り当てられ、アドレスは64から127までです。

実際には、これらのいわゆる「アナログ」モジュールの多くは、実際のアナログ電圧とは関係なく、より多くのアドレススペースを必要とする高度なモジュールが使用されていました。

さらには、後の高密度デジタルI/Oもこれらのアドレスを使用しました。

12

これらのアドレスはバイトまたは単語として指定できます。

この場合、入力バイトは「IB」プレフィックスで示され、入力単語は「IW」プレフィックスで示されました。

出力バイトには「QB」プレフィックスが使われ、出力単語には「QW」プレフィックスが使われました。

13のフラグ

フラグは、中間論理値を保存するために使用される内部メモリの個々のビットです。

これらは「F」プレフィックスで始まりました。

S5-103は、F0.0からF255.7まで番号が付けられ、合計2048でした。

14のカウンタ

カウンターは「C」接頭辞で始まりました。

S5-103にはC0からC127までの番号が128個ありました。

タイマー15個

タイマーは「T」プレフィックスで始まりました。

S5-103には、T0からT127までの番号が付けられたものが128個ありました。

16のデータブロック

バイトメモリやワードメモリを扱うプログラムは、「データブロック」と呼ばれるものを生成することができました。

これらのブロックは、プログラマーの裁量で作成できるPLCメモリでした。

S5-103は、DB2からDB255までの最大254のデータブロックを持つことができます。

PLCの内部操作のために追加の2つのデータブロックが予約されていました。

データブロックは、最大255の16ビット単語を含むことができます。

17

しかし、実際のデータブロックの数とそのサイズは、利用可能なメモリによって実際には制限されます。

20キロバイトは大きなメモリとみなされ、このメモリはプログラムと共有する必要があります。

データブロックは、「呼び出される」ことで現在のデータブロックになります。

その後、「DW」プレフィックスで個々の単語がアドレス指定されます。

例えば、「DW5」です。

--------------------

18プログラムブロック

PLC2を思い出すと、「メイン」プログラムと一連のオプション付きの番号付きサブルーチンがありました。

S5では、プログラムは「ブロック」に分割されました。

これらは

組織ブロック

プログラムブロック

機能ブロック

シーケンスブロック

S5-103はこれらのブロックを最大256個まで持つことができます。

19の組織ブロック

PLCが起動すると、組織ブロック1を探し、そこから実行を開始します。

これはCプログラムの「main」関数に相当するものと考えることができます。

組織ブロックにはOB接頭辞がありました。

例えばOB1。

非常にシンプルなプログラムを非常に小さなS5 PLCに持つ場合、プログラムの論理全体をOB1に単純に配置することができます。

しかし、より大きなプログラムでは、論理をサブルーチンに配置し、OB1が各サブルーチンを呼び出すという慣習がありました。

20プログラムブロック

これらはPB接頭辞付きでした。

例えばPB10。

通常のラダー論理スタイルのプログラミングはこれらに配置されます。

プログラムを部分に分けてそれぞれの部分にプログラムブロックを割り当てるのが慣例でした。

通常の慣行では、プログラムブロックは機械の特定の部分に対応していました。

21機能ブロック

これらはFB接頭辞付きでした。

例えばFB64。

関数ブロックはプログラムブロックとは異なり、パラメータを取ることができた。

これにより、複雑なデータ変換を実行し、異なるパラメータで呼び出すことで再利用できるFB(関数ブロック)を書くことができた。

一部の命令はFB(関数ブロック)内でしか使用できず、他の種類のブロックでは使用できない。

一部のCPUモデルにも組み込みのFB(関数ブロック)があり、BCD(二進法で符号化された十進数)を通常の整数に変換するなど特定の操作を行った。

22シーケンスブロック

これらはSB(シーケンスブロック)プレフィックスを持つ。

例えば、SB25。

これらはPBのように見えたが、各SBがシーケンスの単一ステップとして機能し、複数のブロックがシーケンスに使用されるような操作シーケンスを制御するために設計されていた。

--------------------

23プログラミング言語

S5シリーズは4つの異なるプログラミング言語を提供した。

これらは

ラダー(略記:LAD)

ステートメントリスト(略記:STL)

コントロールシステムフロー図(略記:SCF)

GRAPH 5

24

前回のエピソードを聞いたことがあるなら、このラダーについて知っているはずです。

簡単に言えば、それは電気ラダー配線図の外観に従ったグラフィカルなプログラミング言語で、製造機器に取り組むエンジニア、技術者、電気技師にとって馴染みのあるものでした。

25

ステートメントリストは、抽象プロセッサアーキテクチャのためのアセンブリ言語に似たテキストベースのプログラミング言語です。

ブール論理の結果はスタックに計算され保存され、整数値はメモリから直接処理されたり、ACCU1とACCU2の2つのアキュムレータで処理されました。

26

制御システムフローチャートは、1つまたは複数の入力と出力を持つ長方形のブロックの形をとるグラフィカル言語です。

これらのブロックは画面上に配置され、電子回路図の論理ゲートのように接続されます。

27

GRAPH 5は、SiemensのGRAFCET(ステップ移行制御機能グラフ)IEC 60848フローチャート標準の実装です。

IECは国際電気技術委員会、国際標準化機関です。

28

私は、ラダーとステートメントリストに焦点を当てます。これらははるかに一般的に使用されており、S5について議論する時間は限られています。

--------------------

29の声明リスト

上記の通り、ステートメントリストは抽象的なCPUアーキテクチャのアセンブリ言語と考えることができます。

S5 PLCのファームウェアは、インタプリタで命令を実行します。

30 RLO

ブールまたはビット指向の命令は、論理演算の結果を格納するスタックであるRLO(論理演算結果)上で動作します。

ブール演算は通常、1つの演算子を取ります。

ブール演算が実行されたとき、RLOが空の場合、単に演算子をRLOにロードします。

RLOが空でない場合、命令はオペランドとRLOを使用して実行され、結果はRLOスタックのトップの値を置き換えます。

一部のブール命令はオペランドを取りませんが、RLOの上2つの値で動作します。

FORTHのような言語に慣れているなら、これは非常に馴染み深いものです。

アキュムレータ 31

ワード指向の命令は、アキュムレータACCU 1とACCU 2で動作します。

読み込み命令は、メモリの場所または定数からワードまたはバイト値をACCU 1に読み込みます。

ACCU 1に含まれていた値は、ACCU 2にシフトされます。

転送命令は、ACCU 1の値をメモリに書き込みます。

残りの単語指向の命令は、ACCU 1 と ACCU 2 の値を操作し、その結果を ACCU 1 に置き換えて既存の内容を上書きします。

例えば、add 命令は ACCU 2 の値を ACCU 1 の値に加算し、合計を ACCU 1 に残します。

32 ラダー

上記のように、ラダーは実際のリレーで使用される電気制御ラダー図のような外観を持つグラフィカルなプログラミング言語です。

これは、PLC で使用される最も一般的なプログラミング言語です。

ラダープログラムは、文言リストを表示する別の方法に過ぎません。

33

言い換えれば、文言リストプログラムは、コンピュータ画面上にテキストとして、または意味のあるパターンに配置された記号として表示できます。

すべての有効なラダープログラムは、文言リストとして表現できます。

しかし、すべての有効なステートメントリストのシーケンスがラダーとして表現できるわけではありません。

ステートメントリストはラダーよりも本質的に柔軟性が高く、両方を常に完全に翻訳できるわけではありません。

34

それでも、最も典型的な制御論理はラダーとして表現でき、ラダーはデバッグする際にソフトウェアやハードウェアの問題を素早く理解できるため、好まれる表現方法です。

一方で、ステートメントリストの命令の中にはラダーの同等物がないものや、アルゴリズムがラダーで表現しにくいものもあります。

このような場合、一般的な慣行は、単純な制御論理をラダーにプログラムブロックとして配置し、翻訳できないステートメントリストの論理を関数ブロックとして配置することです。

35 制御システムフローチャートと GRAPH 5

ラダーと同様に、CSFとGRAPH 5は実際にはステートメントリストで実装されており、上記の多くの考慮事項もそれらに適用されます。

しかし、ここではそれらについてさらに詳しく説明しません。

--------------------

36のプログラミングソフトウェアとハードウェア

S5 PLCにプログラムを入力する方法は2つありました。

1つはハンドヘルドプログラミングターミナルでした。

もう1つはSTEP 5プログラミングソフトウェアを通じてでした。

37のハンドヘルドターミナル

多くの場合、あるいはほとんどのPLCベンダーと同様に、シーメンスはハンドヘルドプログラミングターミナルを販売していました。

これらのシリーズには、PG 605のような例がありました。

これは大きな計算機のようないくつかのボタンと小さなディスプレイが付いた箱でした。

ボタンはさまざまな命令と数値キーパッドに対応しており、表示には入力中の現在の命令が表示されます。

これを使用するには、ハンドヘルドターミナルに接続されたケーブルをPLC CPUモジュールのフロント側のプログラミングポートに差し込みます。

その後、一命令ずつプログラムに入力したり、表示したりできます。

38 STEP 5 プログラミングソフトウェア

プログラミングの別の方法は、PC上で動作するソフトウェアを使用することです。

シーメンスは、そのソフトウェアをSTEP 5と呼びました。

これは統合編集およびデバッグプログラムでした。

当初、それはCP/M上で動作しました。

39

シーメンスは、EPROM燃焼機などの追加の組み込みハードウェア機能を備えた、ソフトウェアが事前にロードされた独自のポータブルPCを販売しました。

これらのコンピューターはまた、「PG」としても知られていました。

STEP 5 は後で MS-DOS に移植され、CP/M エミュレーター上で実行することで、ラップトップなどの市販の PC 上で実行できました。

その後、ネイティブな MS-DOS 移植版が作成されました。

40

これは、ステートメントリスト、ラダー、制御システムフロー図のモードを備えていました。

GRAPH 5 は別々のプログラムでした。

ユーザーは STL、LAD、CSF モードを切り替えることができ、ソフトウェアがそれらのモード間の変換を翻訳できる場合がありました。

41

PC は、中間インターフェイスボックスを備えたケーブルで PLC に接続されました。

これはPLCにプログラムをダウンロードするために使用できます。

プログラムをアップロードしてバックアップを取ります。

実行中のプログラムを修正します。

または実行中のプログラムをデバッグします。

--------------------

42の指示

すべての指示をリストアップするのは時間がかかるので、しません。

代わりにそれらの概要を説明します。

説明に時間がかかる曖昧な指示は意図的にスキップします。

基本演算 43

ブール演算

および、およびでない、または、またはでない、集合、リセット、割り当てを含む完全なブール演算セットがあります。

割り当て演算は、指定された演算子のアドレスにRLO値を割り当てます。

44 読み込みと転送

読み込み命令は、メモリアドレスの単語またはバイトまたは定数の値をアクマキュラ1に読み込みます。

読み込み命令には約20のバリエーションがあります。

転送演算は、アクマキュラ1から単語またはバイトをメモリに書き込みます。

転送操作には約12のバリエーションがあります。

45のタイマーとカウンター

タイマーには5種類の異なる種類があります。

タイマーは開始時にアクムレータ1の値を事前設定値として取ります。

アップカウンターとダウンクアウンターがあり、それぞれ上昇と下降します。

これらのタイマーもアクムレータ1の値を事前設定値として取ります。

46の算術演算

S5-100Uシリーズに搭載されているネイティブの算術演算は加算と減算のみです。

これらの命令は、アクムレータ1と2の値を加算または減算します。

定数を追加する別の一連の命令もあります。

しかし、CPU 103と95は、FB242とFB243として統合された整数乗算と除算機能ブロックを提供しました。

これらの機能ブロックは、希望するパラメータで呼び出し、他のパラメータに結果を返します。

47 比較演算

2つのアクムレータの値を操作する完全な整数比較演算セットがあります。

これには、大きい、大きいまたは等しい、などが含まれます。

ブール結果はRLOに保存されます。

48ブロックの呼び出しと返却

すべてのさまざまな種類のブロックを呼び出すための無条件および条件付きの呼び出し操作が完全にあります。

また、無条件および条件付きの返却操作もあります。

データブロックを呼び出すと、それが現在のデータブロックになり、データワードの読み込みと転送操作を行います。

49 NOPまたはNo Op

これらの命令には結果がありません。

50停止

これはプログラムの実行を停止します。

51進数単語演算

これらはアクムレータ内の単語を操作します。

これらはAND、OR、XOR、左シフト、右シフトを含みます。

52ビット演算

これらはデータ単語やタイマーとカウンター内の個々のビットをテスト、設定、またはリセットします。

53変換命令

1つのアクムレータ内の値の1の補数または2の補数を実行する命令があります。

54ジャンプ演算

無条件と条件付きの操作で、ラベルにジャンプできます。

これはGOTO操作に等しいです。

55 間接アドレス指定または「DO」操作

これらの命令は、別のアドレスに格納された数値に基づいてブロックにジャンプしたり、データワードまたはフラグワードを選択したりすることができます。

基本的に、これらの命令はポインタのようです。

56 その他

また、ワードのブロックをコピーしたり、

アクマレーターの内容を交換したりすることなどの様々な命令もあります。

他の指示は57個あります。

説明に時間がかかるため、私がスキップしたさらに多くの指示があります。

指示の要約58

ご覧のとおり、S5 PLCは、ほとんどの人がPLCに期待する以上の非常に包括的な操作セットを提供します。

この命令セットは非常に強力です。

59

一方では、これは良いことです。なぜなら、ほとんど何でもできるからです。

しかし、他方では、これは悪いことです。なぜなら、一部の人々がこれをほぼ何でもする許可として受け取るからです。

間違った人の手に渡ると、これは複雑なスパゲッティコードの塊になり、後でそれを書いた人でも理解できなくなります。

60

これはPLCプログラミングの哲学に反します。できるだけシンプルで明快にすることを目的としています。

PLCプログラムにおいて完璧さは、可能な限り多くの高度な機能を備えているのではなく、それ以上にシンプルにできないときに達成されるのです。

61

シーメンスはプログラマーに強力な低レベル命令の範囲を与え、それらを組み合わせてほぼ何でも作成できるようにしましたが、他の多くのベンダーは異なるアプローチを取りました。

彼らは代わりに主要な市場セグメントに必要なものを研究し、プログラマーに抽象化レベルの高い命令を提供しました。これにより、プログラムはより短時間で、より少ない命令で書くことができます。

--------------------

62 実行速度

命令の実行速度はPLCのCPUモデルによって異なります。

低端のS5-100シリーズCPUのいくつかの典型的な値は以下の通りです。

63

ブールAND命令はS5-100Uで70マイクロ秒で実行されます。

S5-102U上で4マイクロ秒、または1.6マイクロ秒で実行されます。

S5-103U上で1.6マイクロ秒で実行されます。

64

アクキュムレータに2つの単語を追加する操作は、S5-100U上で55マイクロ秒で実行されます。

S5-102U上で23マイクロ秒で実行されます。

S5-103U上で1.6マイクロ秒で実行されます。

65

S5-103Uには、M5と呼ばれるカスタムロジックコプロセッサチップが搭載されていました。

M5コプロセッサ上で実行された命令は、概ね1.6マイクロ秒でした。

しかし、M5コプロセッサ上で実行されない複雑な命令は、コプロセッサを持たないCPU(100または102など)よりも遅い場合があります。

これはおそらく、2つのプロセッサの調整に関連する何らかの上部構造が原因だと思われます。

66

しかし、通常のプログラム内のほとんどの命令はブール論理なので、非常に高速なブール実行時間が重要になります。

すべての命令がスキャンサイクルごとに実行されるため、大規模なプログラムは需要に追いつくために高速な命令実行を必要とします。

--------------------

S7シリーズがS5を置き換える

1990年代半ば、シーメンスはS7シリーズを導入し始め、最終的にはS5を置き換えることになりましたが、その実現には数年かかりました。

68

ハードウェアは全て新しくなりましたが、プログラマーの視点では、S7はS5の進化形でした。

一部のステートメントリスト命令は削除され、他の新しい命令が追加されました。

基本的な概念のほとんどは同じままでした。

S5プログラムをS7に移植するのは完全な書き換えでしたが、比較的まっすぐなプロセスでした。

69

この例外はS7-200シリーズで、シーメンスはテキサス・インスツルメンツのPLC部門の買収の一環として外部から入手しました。

S7-200はアメリカの模倣品で、日本製のPLCを模してドイツ製品として販売されました。

それでもそれは優れたPLCであり、非常に多くの数量で販売されました。

S7-200は最終的に、S7シリーズの残りの部分と互換性のあるものに置き換えられました。

70

S7シリーズはハードウェアの改訂を数多く経て、今日でもシーメンスの主要PLCラインとして残っています。

S5は1970年代、PLCの初期の日々までその血統をたどることができます。

--------------------

その他の開発:71

日本のPLCベンダー

私はPLC2やS5と同じように、日本のPLCベンダーをカバーしたことはありません。

私は別のエピソードで1つ取り上げる予定でしたが、すでに議論した内容に大きく追加するものではないと思います。

しかし、日本のPLCは世界で最も売れているうちの1つで、一般的に非常に高い評価を受けています。

72の革新のペース

業界全体の歴史から見ると、PLCの進化は初期段階ではかなり急速でした。

後に、革新は遅れ、既存のインストールベースとの互換性がより大きな要因となりました。

技術は比較的静的になっていますが、ビジネス観点から必ずしも悪いことではありません。

このトピックに戻ってきます。

--------------------

73 結論

このエピソードでは、シーメンス S5 シリーズのPLCについて取り上げました。

私たちはS5の歴史を扱いました。

そのメモリとアドレッシングについて

さまざまなサブルーチンの種類について

プログラミング言語について

命令について

そしてS7シリーズに取って代わられました。

74

PLCが、初期のリレー置き換えの起源から急速に進化して、強力なプログラマブルデバイスになった様子を私たちは見てきました。

次回のエピソードでは、I/Oモジュールに焦点を当て、PLCのCPUがハードウェアとインターフェースし、機械を制御する方法を調べます。

75

これは8部シリーズの4番目のエピソードでした。

--------------------

提供フィードバックこのエピソードについて.

出典
Hacker Public Radio
原文を開く ↗

⚙コンテンツは機械翻訳されています。

このニュースは役立ちましたか?

議論 0

Seja o primeiro a contribuir com o debate.

情報を共有し議論を深めよう

有益な情報やデータを公開することをためらわないでください。

ディベートに参加するには、ログインするか無料アカウントを作成してください。