PLC プログラミングを学ぶにはどうすればよいですか? 異なるブランドの PLC では大きく異なりますか? ラダープログラミングはPLCプログラミングと同じですか?
11 に答える
私は多くの PLC プログラミングを行い、現在はかなりの量の .NET プログラミングを行っています。どちらの方法でも切り替えを行うのは非常に危険です。なぜなら、転用できるはずだと考えている多くのスキル (パターンなど) が、あなたを大きく迷わせてしまうからです。
私が人々に伝えている最大の違いは、PCプログラムのコードは他のプログラマーが聴衆であるかのように書かれるべきであるが、PLCプログラム(ラダーロジック)は保守担当者が聴衆であるかのように書かれなければならないということです. ほとんどの施設 (特に製造業) での保守は頻繁に PLC に直接接続し、オンライン モードではコードの実行をグラフィカルに見て何が問題なのかを把握できます。
たとえば、出力がオンにならない場合は、出力電気デバイス ID をプログラミング ソフトウェアの検索機能に入力し、その出力コイルを見つけて、そこからトレースバックして問題を探します。一部の PLC プログラマーが犯すよくある間違いの 1 つは、I/O を構造体 (PLC ではユーザー定義型と呼ばれます) に「マップ」し、コピー命令を使用してすべての入力または出力を構造体に移動することです。一気に構造。PC プログラミングの観点からは理にかなっていますが、保守担当者があなたを殺したいと思うようになります。通常、プログラミング ソフトウェアは、その出力コイルを指定できる相互参照機能を提供し、プログラム内のあらゆる場所で使用されていることを通知します。コピー命令を使用して 10 ワードの I/O を 10 ワードのデータ構造に移動する場合、彼は' s はそこに座ってビットを数え、コピーのソースのどのビットがコピーの宛先側のどのビットにマップされるかを把握する必要があります。確かに、コメントは役に立ちますが、それにも問題があります... PLC はプログラム全体を保存し、トラブルシューティングが必要で、元のプログラムのコピーがない場合に、緊急時にそこからプログラムをアップロードできるようにします。 . 問題は、スペース上の理由から、PLC がコメントを保存しないことです。そのため、回線がダウンした場合、ダウンタイムで 1 分あたり 5000 ドルのコストがかかり、ラップトップを持って出かけた人は、コメントなしで簡単にアップロードしてトラブルシューティングを試みる必要があるかもしれません。コピーの指示がそこにあり、10 分間の時間を無駄にしただけで、会社は 50,000 ドルのダウンタイムを被っただけです。PLCのプログラムを書くときの注意点です。
その他のヒント: 一部の PLC は FOR ループをサポートしています。 絶対に使用しないでください。上記と同じ理由で、保守担当者にとってコードのトラブルシューティングが非常に困難になります。これは、1 回のスキャンで複数回スキャンされるコードが PLC にある場合 (ループの内容など)、オンライン デバッグ モードに入ると、ソフトウェアはそれぞれの値を表示できないためです。このスキャンを実行した 10 個のループのうち、どの値を見ているのか本当にわかりません。次に、監視できる他のタグ (変数) に特定のループ インデックスのループ値を引き出すために、このトリッキーなコードをすべて記述する必要があります。これは、緊急時に問題を解決するためのもう 1 つの障害にすぎません。スキャンごとにサブルーチンを複数回使用すると、同じ問題が発生します。
間接アドレッシング (配列と呼ぶもの) は、保守担当者にとって理解するのが非常に困難です。レシピ管理 (パーツの作成方法に関する値の保存と取得) を扱う場合は、通常、これらを使用しても問題ありませんが、プログラムの制御部分では使用しないようにしてください。
もちろん、PC プログラミングでは、可能な限りコードを再利用しようとします。ただし、PLC および制御システムでは、ダウンタイムは非常に高くつき、ハードウェアは高価です。メモリも安いし、実はPLCプログラマーも安い。したがって、マシンに 10 個の同一のもの (コンベア ドライブなど) がある場合、各ドライブに 1 つずつ、10 個の異なるファイル (サブルーチン) があり、各ドライブにはそれらに関連付けられた独自の変数があることが予想されます。 Drive1_Run、Drive2_Run、Drive3_Run など。PC プログラミングのバックグラウンドを持っている場合、これは非常に「間違っている」と感じるでしょうが、これはすべて、上で述べた点によるものです。ダウンタイムの状況で、誰かがドライブ 3 が機能していないと言うと、ラップトップをクラックして開きます。ドライブ 3 のファイルに移動し、Run 出力ラングを確認します。プログラムの実行中に、そこからトラブルシューティングを開始します。ブレークポイントはありません (プログラムは停止しません)。
あなたの努力に幸運を。私が何年にもわたって PLC をプログラミングしてきたことから、さらにいくつかの洞察を書き上げました。
インターネット上のさまざまな情報源から PLC プログラミングを学ぶことができます。
作成するプログラムは、PLC 固有の関数を使用しない限り、LLD (ラダー ロジック ダイアグラム) 用のさまざまなブランドの PLC でほとんど同じです。しかし、IL (Instruction List) のような言語を使用すると、さらに多くの違いがあります。ただし、プログラムを作成した後は、ストレージと実行の形式はブランドによって大きく異なります。
ラダー ロジックは、PLC 用の 5 つのプログラミング言語の 1 つです。他には、FBD (ファンクション ブロック ダイアグラム)、ST (パスカル プログラミング言語に類似した構造化テキスト)、IL (アセンブリ言語に類似した命令リスト)、および SFC (シーケンシャル関数) があります。チャート)。これらは、プログラミング言語のさまざまな表現であり、必要に応じてさまざまなフレーバーです。ただし、通常、特定のブランドはこれらの 1 つだけをサポートします。米国では LLD が広く使用されていますが、ヨーロッパでは IL がより一般的です。
多くの場合、LD と呼ばれるはしごは、ISO 61131 オートメーション プログラミング標準で定義されているいくつかの言語スタイルの 1 つです。他には、SFC(シーケンシャル フロー チャート)、FBD(機能ブロック図)、ST(構造化テキスト)、IL(命令リスト)があります。IL はアセンブラーに似ており、使用する人はほとんどいません。ST は、BASIC の初期バージョンによく似たテキスト ベースのプログラミングです。使用頻度も高くありません。LD は、電気制御盤 (多くの PLC で置き換えられています) のリレー接点に似ているように設計されています。FBDは回路図のように見えます。SFCは基本的にフローチャートです。
すべてをサポートする PLC もあれば、一部のみをサポートする PLC もあれば、1 つだけをサポートする PLC もあります。LD が最も一般的ですが、FBD と SFC が人気を集めています。
ブランドが異なれば、使用するプログラミング言語もわずかに異なります。それらは通常、あるブランドを理解すれば、どのブランドでも使用できるほどよく似ていますが、ある PLC からコードを直接取得して別のブランドで使用することはできません。
これまでに与えられた答えはかなり的を射ています。言語とセットアップに関しては、PLC の個性が分かれていることがわかりました。彼らの核となる設計は、電気関係者が設計全体の制御ロジックを柔軟に設定できるようにすることです。PLC は基本的に一連の入力と一連の出力であり、それらの接続方法は、デバイスにロードするソフトウェアによって制御されます。
PLC に使用される言語の重要な点の 1 つは、電気のバックグラウンドを持つ人々がアクセスできることです。したがって、イディオムと構造は、高級言語やアセンブリ言語に慣れている人にとっては直観に反しているように見えます。たとえば、ラダーロジックは、電気関係者にとって非常にアクセスしやすいものです。
しかし近年、PLC は最大限の柔軟性を得るために多数の言語をサポートしています。しかし、私の意見では、私が働いたほんの一握りの PLC は、プログラミング環境という点で非常に欠けています。メモリ位置への変数名の割り当てなどの単純なことは、多くの場合、使用されている言語に合わせて設計されていません。作業が簡単なものは、多くの場合、仕事にとって最も費用対効果が高いとは限りません.
これらのハンディキャップにもかかわらず、複雑な電気システムを簡素化するのに優れています。プロジェクトで他の人と一緒に作業している場合、プログラミングの知識がプロジェクトの厄介なプログラムの解決に役立つことがわかります。100 ラングのラダー ロジック プログラムを、ラングの 3 分の 1 に書き直すことができました。ラダーロジック言語を学べるようになると、プログラムの複雑さを軽減するさまざまな最適化を実装できるようになりました。
ヒントの 1 つは、ラッチングについて学ぶ必要があるということです。場合によっては、出力を保存または保持する必要があり、ラッチしない限り、結果は次のサイクルで消えます。問題を理解すれば明確になりますが、最初は私にとって大きなフラストレーションの源でした。
PLC プログラミングは、機械的または電気的ソリューションの代替コンポーネントの一部として純粋に PLC を使用している場合を除き、PLC ソフトウェア エンジニアリングの成果物の実装作業と見なす必要があります。
これに基づいて、PLC プログラミング環境は通常、IEC61131 駆動、保証されたサイクル タイム、「プリエンプティブ」リアルタイム、リアルタイム OS 関連の問題を処理する必要なし、継続的なコード スキャン、非プログラム ポインター、典型的なコンピューター タスク生成とは異なる概念です。マルチタスクの一種。コードの実行は当然アトミックであり、タスク間でモニターを使用する必要はありません。
それぞれの言語には、実装したいロジック モデルに対するコードがどの程度考えられるかという点に近いものがあります。
はしごには、電力の流れの連動スタイルに関する基本的な概念があります。単一ネットワーク内のコード解像度は、水平または垂直スキャンのいずれかです (このトピックに関するリソースは、製造元または他のサイトから見つけることができます)。コードが 1 つのスキャン解像度の性質を持ち、1 つのネットワーク内にある場合、スキャンの種類が原因で考えられない動作が発生する可能性があります (ラダーは電気回路のエミュレーションにすぎず、実行はシーケンシャルであることを覚えておくことが重要です)。
FBDや機能ブロック図は電気信号の流れでしたが、現在はPLCの種類によってはデータの流れになっています。FBD は、スキャン シーケンスの水平走査ラダーと非常によく似た、より明確な実行シーケンスを示します。現在、FBD は通常、オブジェクト ファンクション ブロックのコンテナとして使用されていますが、依存関係の実装とプロセス モデルとの視覚的な類似性は PLC のタイプに依存しています。
リテラルは BASIC に非常に似ていますが、構文のみです。実行はまだスキャンスルーです。リテラル言語は、数学的な計算に適しています。高レベルの実装では、オブジェクト内のメソッドまたは属性の派生は、Literal を使用して簡単に行うことができます。英語のような状態表現または定数を使用したステート マシン プログラミングにより、プログラムが非常に読みやすくなります。
ステートメント リストはアセンブリ ニーモニックに似ていますが、やはり実行はスキャンスルーであり、プログラム ポインターではありません。ビット操作や括弧スタイルのディスクリートロジックに強い。適切な構造化とコメントを使用すると、非常に効率的な言語になる可能性があります。
SFC またはシーケンシャル フロー チャートは、シーケンスの実装を補完する言語です。SFC には、アクション ブロックのアクティブ化、状態遷移、並列シーケンスのアクティブ化、およびマージに関する固有のルールがあります。ただし、複雑な例外分岐または並行アクション管理により、実装が複雑になり、フローチャートが読みにくくなる可能性があります。
IO 処理、通信、ホットスタンバイに関する PLC システム管理は、ハードウェア構成作業であり、製品に依存します。一般に、ソフトウェア工学とは別に扱うことができます。ただし、PLC システム管理に関連するデータは「配置された」(独立したデータ アドレス指定領域) タイプであり、ソフトウェア エンジニアリングにおける優れたデータ モデリング アプローチは、システム データの管理性に役立ちます。
オンライン PLC シミュレーターが役立つ場合があります。
高水準言語 ("IF..THEN..ELSE") またはループ (WHILE..DO) で実行できる一連の命令で構成される構造化テキスト (ST)を使用できます。
標準のプログラミング言語に近いため、ラダーよりも優れていると思います。
Allen-Bradley には、特にトレーニング用の無料の DOS ベースのソフトウェア PLC があります。彼らのサイトにアクセスするか、Googleで検索すると、おそらく見つけることができます。学校で PLC プログラミングを教えるために使用されます。
大学で PLC プログラミングを少ししました。組み立てよりも一段下のように思えたのですが、使用している機器は最新のものではありませんでした。
PLCドライバーが必要だと思いますが、購入する前に、まずシミュレーターを探して、それについてもっと読んでください.
ラダー ロジックを学習しようとしている初心者の場合、http://plcs.netで無料のオンライン トレーニングに参加するのが最善の方法です。
PLCは、ラダーロジックを使用するデバイスに使用される用語です。より一般的なプログラミング言語でプログラムされたデバイスは、一般にマイクロコントローラーと呼ばれます。ただし、それらをすべて PLC の名前でひとくくりにすることがあります。:-) ラダーロジックがどの程度変化するかはわかりませんが、マイクロコントローラーコードは大幅に変化する可能性があります。