このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
howto:open_plc:basic [2023/01/31 11:52] Staff_Ujiie [プログラミングの流れ] |
howto:open_plc:basic [2023/03/31 11:01] (現在) Staff_Ujiie [基本のプログラムの書き方] |
||
---|---|---|---|
行 15: | 行 15: | ||
* 接続した外部機器(センサー、スイッチ)からの**情報の取り込み** | * 接続した外部機器(センサー、スイッチ)からの**情報の取り込み** | ||
- | * 接続した外部機器(照明やモーター等電気で動くもの)の**動作ON/OFFや強弱の制御** | + | * 接続した外部機器(照明やモーター等電気で動くもの)の**動作ON/OFF**や**強弱**の**制御信号の出力** |
* 上の2つをくっつければ、センサーからの情報に応じて機器の運転/停止を操作するような**自動運転のプログラム**になります。\\ 例えば、土の湿度がX%を下回ったら植物に散水するようなことですが、季節によってX%の値が切り替わるようにしたり、温度と湿度の関係で散水開始を判断するような設定にしたりと、途中の仕組みを見直すことが簡単にできます。 | * 上の2つをくっつければ、センサーからの情報に応じて機器の運転/停止を操作するような**自動運転のプログラム**になります。\\ 例えば、土の湿度がX%を下回ったら植物に散水するようなことですが、季節によってX%の値が切り替わるようにしたり、温度と湿度の関係で散水開始を判断するような設定にしたりと、途中の仕組みを見直すことが簡単にできます。 | ||
行 21: | 行 21: | ||
* 電気で動くものを使った作業の自動化に広く活用できます。ホームオートメーション、園芸、農業等々。 | * 電気で動くものを使った作業の自動化に広く活用できます。ホームオートメーション、園芸、農業等々。 | ||
- | * 工場の生産ラインなど業務用で使われるPLC製品の場合は製品とセットのPLCソフトが使われるでしょうから、OpenPLCの出番は、その対応するハードウェアから想定されるような、個人ベースの趣味や小規模なシステムでの利用になります。\\ とはいえ、ハードウェアに依存しないソフトウェアを目指して国際基準IEC61131-3ができてきていますので、広い範囲で活用できると思います。 | + | * 工場の生産ラインなど業務用で使われるPLC製品の場合は、製品とセットになったPLCソフトが使われるでしょうから、OpenPLCの出番は、その対応するハードウェアから想定されるような、個人ベースの趣味や小規模なシステムでの利用になります。\\ とはいえ、ハードウェアに依存しないソフトウェアを目指して国際基準IEC61131-3ができてきていますので、広い範囲で活用できると思います。 |
\\ | \\ | ||
===== プログラミングの流れ ===== | ===== プログラミングの流れ ===== | ||
行 46: | 行 46: | ||
===== ラダープログラムの要素 ===== | ===== ラダープログラムの要素 ===== | ||
- | PLCで自動運転をしている間、プログラムは延々と繰り返し実行され続け、状況に応じて中身のON/OFFの状態が更新されて出力内容が変わっていきます。その繰り返される1サイクル分の手順を作成します。 | + | PLCで自動運転をしている間、プログラムは延々と**繰り返し実行**され続け、状況に応じて中身のON/OFFの状態が更新されて出力内容が変わっていきます。その繰り返される1サイクル分の手順を作成することになります。 |
- | * プログラムは記号を線でつないで描いた図の形をしています。デジタル電子回路図に似ています。文字を書き連ねる種類のプログラムよりも直感的でわかりやすいです。左から右、上から下への向きにそれぞれの記号のON/ | + | * プログラムは**記号を線でつないで描いた図**の形をしています。デジタル電子回路図に似ています。文字を書き連ねて記述するプログラムよりも直感的でわかりやすいです。左から右、上から下への向きにそれぞれの記号のON/ |
- | * 基本となる記号(要素)は**スイッチ**と**コイル**に左右の**電源線**です。それらを**線**でつないで、ほしい動きをさせるロジックを作ります。それぞれの要素が**ON/ | + | * 基本となる記号(要素)は**スイッチ**と**コイル**に左右の**電源線**です。それらを**線**でつないで、ほしい動きをさせるロジックを作ります。それぞれの要素が**ON/ |
- | * **各要素を線でつなぐ**と、つながった先の要素にON/ | + | * **各要素を線でつなぐ**と、つながった先の要素にON/ |
* {{ : | * {{ : | ||
- | * **スイッチ**は、ON/ | + | * **スイッチ**は、ON/ |
- | * {{ : | + | * {{ : |
- | * ラダーダイアグラムを学び始めてしばらくの間、コイルの使い方がどうもすっきりと理解できませんでした。\\ **内部スイッチ**と**外部出力**の関係がどうなっているのかが疑問でした。コイルへの入力がONになると、同じ名前の内部スイッチはONになりますが、それが外部出力をONするスイッチとどういう関係になっているのか?\\ 結論はコイルに割り当てられた外部出力と、コイルと同じ名前の内部スイッチは、どちらも同じコイルに連動してON/ | + | * ラダーダイアグラムを学び始めてしばらくの間、コイルの使い方がどうもすっきりと理解できませんでした。\\ **内部スイッチ**と**外部出力**の関係がどうなっているのかが疑問でした。コイルへの入力がONになると、同じ名前の内部スイッチはONになりますが、それが外部出力をONするスイッチとどういう関係になっているのか?\\ 結論はコイルに割り当てられた外部出力と、コイルと同じ名前の内部スイッチは、どちらも同じコイルに連動してON/ |
- | * コイルというものは一度に異なる種類の動作を設定出来る便利な道具です。コイルと内部スイッチをいかにうまく使って目的の動作をさせるかが、ラダープログラム作成のキモだと思います。 | + | * コイルというものは一度に異なる種類の動作を設定出来る便利な道具です。コイルと内部スイッチをいかにうまく使って目的の動作をさせる仕組みを組み立てるかが、ラダープログラム作成のキモだと思います。 |
\\ | \\ | ||
行 68: | 行 68: | ||
* 電源線を左右の両端に置いて、その間にスイッチとコイルを並べ、それぞれを線でつなげば、スイッチを押したときにコイルをONにするプログラムになります。\\ {{: | * 電源線を左右の両端に置いて、その間にスイッチとコイルを並べ、それぞれを線でつなげば、スイッチを押したときにコイルをONにするプログラムになります。\\ {{: | ||
- | * プログラム内で使用する各要素は、ラダー図記述エリアの上部にある**リスト**に登録してから使えるようになります。リスト上では、要素の種類や番号(Location)、表示する名前等の項目を入力します。\\ {{: | + | * プログラム内で使用する各要素は、エディターではラダー図記述エリアの上部にある**リスト**に登録してから使えるようになります。リスト上では、要素の種類や番号(Location)、表示する名前等の項目を入力します。\\ {{: |
- | * PLCプログラム内では単純なON/ | + | * PLCプログラム内では単純なON/ |
- | * コイルと内部スイッチでつくる**自己保持**という手法をよく使います。\\ スイッチをOFF→ONにして、つながったコイルをONにする場合に、その後そのスイッチがOFFになってもコイルのON状態を継続させる方法です。\\ そのためには、コイルと同じ名前の内部スイッチを、コイル自身の入力につながるような配線で追加してやります。コイルへの入力ONによって内部スイッチがONになると、内部スイッチからコイルにONを送り込む堂々巡りが発生して、ずっとコイルがON状態に保たれます。\\ コイルをOFFにするためには、つないでいる線の途中に別のスイッチを入れて、外から切ってやる必要があります。\\ これは、スイッチにせよコイルにせよ、入力(押す力や電流)がなくなるとOFFに戻る部品(モーメンタリー)を想定しており(制御がシンプルになり使いやすいため?)、それらを使いつつも状態を維持できる方法です。{{: | + | * プログラムでは、コイルと内部スイッチでつくる**自己保持**という手法をよく使います。\\ スイッチをOFF→ONにして、つながったコイルをONにする場合に、通常はスイッチがOFFに変わるとコイルもOFFになりますが、そのスイッチがOFFになってもコイルのON状態を継続させる方法です。\\ そのためには、コイルと同じ名前の内部スイッチを、コイル自身の入力につながるような配線で追加してやります。コイルへの入力ONによって内部スイッチがONになると、内部スイッチからコイルにONを送り込む堂々巡りが発生して、ずっとコイルがON状態に保たれます。\\ コイルをOFFにするためには、つないでいる線の途中に別のスイッチを入れて、外から切ってやる必要があります。\\ これは、スイッチにせよコイルにせよ、入力(押す力や電流)がなくなるとOFFに戻る部品(モーメンタリー)を想定しており(制御がシンプルになり使いやすいため?)、それらを使いつつも状態を維持できる方法です。{{: |
\\ | \\ | ||
- | * プログラムが大きく複雑になってくると、図のどの部分で何をやっているかすぐわからなくなってしまいます。\\ コメントを、テキストボックスの形で好きな場所に入れることが出来るので、処理のまとまりごとにタイトルや注釈を入れて、後からメンテナンスしやすい体裁にしておくようにします。\\ ラダーダイアグラムを一目見れば処理がわかるぐらいに慣れてくれば目安程度でよいでしょうが、初心者ほど注釈を丁寧に入れたほうが良いと思います。\\ 処理のブロックごとにスペースを空けるのも見やすさにつながります。 | + | * プログラムが大きく複雑になってくると、図のどの部分で何をやっているかすぐわからなくなってしまいます。\\ |
\\ | \\ | ||
===== プログラムの実行 ===== | ===== プログラムの実行 ===== | ||
- | * プログラムは実行されると、外部入力の状態を読み込んで内部のロジックを回して外部出力の値を決めてという一連の処理を行います。この1回分をスキャンという言い方をします。プログラム全体が処理されて全部の要素の値が確定したら、外部出力の状態も更新されます。処理の途中では更新されません。\\ 引き続いて次回の実行が始まり、停止させるまでの間、延々とこのプロセスが繰り返されます。 | + | * プログラムは実行されると、外部入力の状態を読み込んで、内部のロジックを回して、外部出力の値を決めてという一連の処理を行います。この1回分をスキャンという言い方をします。\\ プログラム全体が処理されて全部の要素の値が確定したら、外部へのアウトプットの状態も更新されます。処理の途中では更新されません。\\ 引き続いて次回の実行が始まり、停止させるまで延々とこのプロセスが繰り返されます。 |
\\ | \\ | ||