ふたつぼし inside

制作・活動内容、機材の使い方、作り方などなど

ユーザ用ツール

サイト用ツール


howto:open_plc:basic

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
howto:open_plc:basic [2023/01/31 11:51]
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ができてきていますので、広い範囲で活用できると思います。
 \\  \\ 
 ===== プログラミングの流れ ===== ===== プログラミングの流れ =====
行 41: 行 41:
     - ランタイム上でも運転中の各入出力の状態が確認できます。     - ランタイム上でも運転中の各入出力の状態が確認できます。
  
-※ Arduino等のマイコンにインストールできるマイクロ版ランタイムが追加されましたが、こちらの手順は上記とは異なります。実際にやってみてから追記したいと思いますが、ブラウザ(Webサーバー)の無いマイコンに、OpenPLCエディター側から直接書き込む手順になるようです。+※ Arduino等のマイコンにインストールできるマイクロ版ランタイムが2022年に追加されましたが、こちらの手順は上記とは異なります。実際にやってみてから追記したいと思いますが、ブラウザ(Webサーバー)の無いマイコンに、OpenPLCエディター側から直接書き込む手順になるようです。
  
 \\  \\ 
 ===== ラダープログラムの要素 ===== ===== ラダープログラムの要素 =====
  
-PLCで自動運転をしている間、プログラムは延々と繰り返し実行され続け、状況に応じて中身のON/OFFの状態が更新されて出力内容が変わっていきます。その繰り返される1サイクル分の手順を作成ます。+PLCで自動運転をしている間、プログラムは延々と**繰り返し実行**され続け、状況に応じて中身のON/OFFの状態が更新されて出力内容が変わっていきます。その繰り返される1サイクル分の手順を作成することになります。
  
-  * プログラムは記号を線でつないで描いた図の形をしています。デジタル電子回路図に似ています。文字を書き連ねる種類のプログラムよりも直感的でわかりやすいです。左から右、上から下への向きにそれぞれの記号のON/OFFの状態が決まっていきます。+  * プログラムは**記号を線でつないで描いた図**の形をしています。デジタル電子回路図に似ています。文字を書き連ねて記述するプログラムよりも直感的でわかりやすいです。左から右、上から下への向きにそれぞれの記号のON/OFFの状態が決まっていきます。
  
-  * 基本となる記号(要素)は**スイッチ**と**コイル**に左右の**電源線**です。それらを**線**でつないで、ほしい動きをさせるロジックを作ります。それぞれの要素が**ON/OFF**どちらの状態なのかを問題にします。\\ 出来ることを増やすさせるために**機能ブロック**や**アナログ入出力**といった道具もありますが、最低限必要なものではないので、ここでは省略します。+  * 基本となる記号(要素)は**スイッチ**と**コイル**に左右の**電源線**です。それらを**線**でつないで、ほしい動きをさせるロジックを作ります。それぞれの要素が**ON/OFFどちらの状態なのか**を問題にします。\\ 出来ることを増やすさせるために**機能ブロック**や**アナログ入出力**といった道具もありますが、最低限必要なものではないので、ここでは省略します。
  
-  * **各要素を線でつなぐ**と、つながった先の要素にON/OFFの状態(や値)を伝えます。スイッチがONになったら、それにつながったコイルもONになるといった具合です。\\ さらに、左から1:多に線をつないだら、右側は全部が同じ動作になります。逆に左から多:1につないだら、左のどれかがONになれば右もONになります。+  * **各要素を線でつなぐ**と、つながった先の要素にON/OFFの状態(や値)を伝えます。スイッチがONになったら、それにつながったコイルもONになるといった具合です。\\ さらに、左から**1:多**に線をつないだら、右側は全部が同じ動作になります。逆に左から**多:1**につないだら、左のどれかがONになれば右もONになります。
  
   * {{ :howto:open_plc:pl2.png?direct&50|}} {{ :howto:open_plc:pl1.png?direct&50|}}**電源線**(母線)は、左右の両端から記号や線をはさみます。電気回路の電源を模していて、左(+)から右(ー)への導通の状態がONに当たります。    * {{ :howto:open_plc:pl2.png?direct&50|}} {{ :howto:open_plc:pl1.png?direct&50|}}**電源線**(母線)は、左右の両端から記号や線をはさみます。電気回路の電源を模していて、左(+)から右(ー)への導通の状態がONに当たります。 
  
-  * **スイッチ**は、ON/OFFの状態を切り替えます。\\ {{ :howto:open_plc:sw.png?direct&70|通常のスイッチ}}PLCに接続する実際のスイッチやセンサ等と対応させて、外部入力(デジタル:ON/OFF)を取り込みます。\\ それ以外に、外部とのつながりがなくプログラムの中だけでロジックを組み立てるために使う内部スイッチというのもあります。\\ {{ :howto:open_plc:swn.png?direct&70|ON/OFFが逆のスイッチ}}また、スイッチの種類には、通常は切れて(OFF)いて、一時的にONになるものと、通常はつながって(ON)いて、一時的にOFFになるものの2があり、場面に応じて使い分けます。+  * **スイッチ**は、ON/OFFの状態を切り替えます。\\ {{ :howto:open_plc:sw.png?direct&70|通常のスイッチ}}PLCに接続する実際のスイッチやセンサ等と対応させて、**外部入力**(デジタル:ON/OFF)を取り込みます。\\ それ以外に、外部とのつながりがなくプログラムの中だけでロジックを組み立てるために使う**内部スイッチ**というのもあります。\\ {{ :howto:open_plc:swn.png?direct&70|ON/OFFが逆のスイッチ}}また、スイッチには、通常は切れてOFFいて、一時的にONになるものと、通常はつながってONいて、一時的にOFFになるものの**種類**があり、場面に応じて使い分けます。
  
-  * {{ :howto:open_plc:stop.png?direct&70|}}**コイル**は、入力に応じてスイッチを操作することができます。現実のリレー部品の中にあるコイルと接点の動作が、プログラム上のコイルの考え方になっています。\\ 外部出力に割り当てて、PLCに接続された実際の機器やリレー等をON/OFFします。\\ さらに、プログラム内でコイルと同じ名前の付いた内部スイッチをON/OFFすることもできます。このときの内部スイッチは図中でコイルと線でつなぎませんが、連動して動作します。+  * {{ :howto:open_plc:stop.png?direct&70|}}**コイル**は、入力に応じて**スイッチを操作**することができます。現実のリレー部品の中にあるコイルと接点の動作が、プログラム上のコイルの考え方になっています。\\ **外部出力**に割り当てて、PLCに接続された実際の機器やリレー等をON/OFFします。\\ さらに、プログラム内でコイルと同じ名前の付いた**内部スイッチ**をON/OFFすることもできます。このときの内部スイッチは図中でコイルと線でつなぎませんが、連動して動作します。
  
-   * ラダーダイアグラムを学び始めてしばらくの間、コイルの使い方がどうもすっきりと理解できませんでした。\\ **内部スイッチ**と**外部出力**の関係がどうなっているのかが疑問でした。コイルへの入力がONになると、同じ名前の内部スイッチはONになりますが、それが外部出力をONするスイッチとどういう関係になっているのか?\\ 結論はコイルに割り当てられた外部出力と、コイルと同じ名前の内部スイッチは、どちらも同じコイルに連動してON/OFFするものの全くの別物と考えます。\\ 外部出力のスイッチが図中に出てこないので紛らわしい上に、この内部スイッチは、使わないことも、複数個設置することもあ+   * ラダーダイアグラムを学び始めてしばらくの間、コイルの使い方がどうもすっきりと理解できませんでした。\\ **内部スイッチ**と**外部出力**の関係がどうなっているのかが疑問でした。コイルへの入力がONになると、同じ名前の内部スイッチはONになりますが、それが外部出力をONするスイッチとどういう関係になっているのか?\\ 結論はコイルに割り当てられた外部出力と、コイルと同じ名前の内部スイッチは、どちらも同じコイルに連動してON/OFFするものの全くの**別物**と考えます。\\ 外部出力のスイッチが図中に出てこない上に、内部スイッチは、使わないことも、複数個設置することもあるので、図を見ていても判断がつきせん
  
-   * コイルというものは一度に異なる種類の動作を設定出来る便利な道具です。コイルと内部スイッチをいかにうまく使って目的の動作をさせるかが、ラダープログラム作成のキモだと思います。+   * コイルというものは一度に異なる種類の動作を設定出来る便利な道具です。コイルと内部スイッチをいかにうまく使って目的の動作をさせる仕組みを組み立てるかが、ラダープログラム作成のキモだと思います。
  
 \\  \\ 
行 68: 行 68:
   * 電源線を左右の両端に置いて、その間にスイッチとコイルを並べ、それぞれを線でつなげば、スイッチを押したときにコイルをONにするプログラムになります。\\ {{:howto:open_plc:samp.png?direct&650|いちばん簡単なプログラム}}\\ \\ このスイッチに外部入力の番号を割り当てて、それに対応するPLC外部入力端子に部品のスイッチを接続し、さらにコイルに外部出力の番号を割り当てて、それに対応するPLC外部出力端子にLEDを配線すれば、部品のスイッチを押したときにLEDが点灯するシステムになります。\\ \\ スイッチをセンサースイッチに変えれば、押す作業も不要になりますし、スイッチの数を増やしたり、トラブル時のための強制電源OFFスイッチを入れたりとどんどん拡張していけます。また、出力側にLEDの代わりにモーターをつないだりするのも、プログラム上は外部機器の割り当て(番号)を変えるだけです(実機の配線の方は、つなぐものにより考慮する内容がありますが)。   * 電源線を左右の両端に置いて、その間にスイッチとコイルを並べ、それぞれを線でつなげば、スイッチを押したときにコイルをONにするプログラムになります。\\ {{:howto:open_plc:samp.png?direct&650|いちばん簡単なプログラム}}\\ \\ このスイッチに外部入力の番号を割り当てて、それに対応するPLC外部入力端子に部品のスイッチを接続し、さらにコイルに外部出力の番号を割り当てて、それに対応するPLC外部出力端子にLEDを配線すれば、部品のスイッチを押したときにLEDが点灯するシステムになります。\\ \\ スイッチをセンサースイッチに変えれば、押す作業も不要になりますし、スイッチの数を増やしたり、トラブル時のための強制電源OFFスイッチを入れたりとどんどん拡張していけます。また、出力側にLEDの代わりにモーターをつないだりするのも、プログラム上は外部機器の割り当て(番号)を変えるだけです(実機の配線の方は、つなぐものにより考慮する内容がありますが)。
  
-  * プログラム内で使用する各要素は、ラダー図記述エリアの上部にある**リスト**に登録してから使えるようになります。リスト上では、要素の種類や番号(Location)、表示する名前等の項目を入力します。\\ {{:howto:open_plc:list.png?direct&650|ここに登録すると、後で選択肢メニューに追加されます。}}\\ \\ スイッチとコイルには個々に固有の**番号**を設定します。この番号は外部/内部/入力/出力で付け方のルールが異なっていて、外部入出力はこの番号に対応した実機の接続端子に機器を配線します。機器によって、使用できる外部入出力の番号と接続端子は決まっていますので、その中で実際に使用する番号を選択します。+  * プログラム内で使用する各要素は、エディターではラダー図記述エリアの上部にある**リスト**に登録してから使えるようになります。リスト上では、要素の種類や番号Location、表示する名前等の項目を入力します。\\ {{:howto:open_plc:list.png?direct&650|ここに登録すると、後で選択肢メニューに追加されます。}}\\ \\ スイッチとコイルには個々に固有の**番号(Location)**を設定します。この番号は外部/内部/入力/出力で付のルールが異なっていて、外部入出力はこの番号に対応した実機の接続端子に機器を配線します。機器によって、使用できる外部入出力の番号と接続端子は決まっていますので、その中で実際に使用する番号を選択します。
  
-  * PLCプログラム内では単純なON/OFFの入出力のロジックを作成しますが、実際の外部機器のPLCへの接続にあたっては、機器の仕様に合わせた電気回路を構成するように配線する必要があります。+  * PLCプログラム内では単純なON/OFFの入出力のロジックを作成しますが、実際の外部機器のPLCへの接続にあたっては、機器の仕様に合わせた電気回路を構成するように配線する必要があります。\\ PLCプログラムを処理するコンピュータが直接入出力できる電圧、電流は大きくありませんので、トランジスタで増幅したり、フォトカプラやリレーで電気的に絶縁したりして、外部機器に必要な電圧、電流を扱えるようにしますが、このあたりはプログラム中には出てきません
  
-  * コイルと内部スイッチでつくる**自己保持**という手法をよく使います。\\ スイッチをOFF→ONにして、つながったコイルをONにする場合に、その後そのスイッチがOFFになってもコイルのON状態を継続させる方法です。\\ そのためには、コイルと同じ名前の内部スイッチを、コイル自身の入力につながるような配線で追加してやります。コイルへの入力ONによって内部スイッチがONになると、内部スイッチからコイルにONを送り込む堂々巡りが発生して、ずっとコイルがON状態に保たれます。\\ コイルをOFFにするためには、つないでいる線の途中に別のスイッチを入れて、外から切ってやる必要があります。\\ これは、スイッチにせよコイルにせよ、入力(押す力や電流)がなくなるとOFFに戻る部品(モーメンタリー)を想定しており(制御がシンプルになり使いやすいため?)、それらを使いつつも状態を維持できる方法です。{{:howto:open_plc:sc2022-10-03_13.32.56r2.png?direct&650|黄色の枠内がコイルと対応する内部スイッチで、自己保持回路を組んだもの}}+  * プログラムでは、コイルと内部スイッチでつくる**自己保持**という手法をよく使います。\\ スイッチをOFF→ONにして、つながったコイルをONにする場合に、通常はスイッチがOFFに変わるとコイルもOFFになりますが、そのスイッチがOFFになってもコイルのON状態を継続させる方法です。\\ そのためには、コイルと同じ名前の内部スイッチを、コイル自身の入力につながるような配線で追加してやります。コイルへの入力ONによって内部スイッチがONになると、内部スイッチからコイルにONを送り込む堂々巡りが発生して、ずっとコイルがON状態に保たれます。\\ コイルをOFFにするためには、つないでいる線の途中に別のスイッチを入れて、外から切ってやる必要があります。\\ これは、スイッチにせよコイルにせよ、入力(押す力や電流)がなくなるとOFFに戻る部品(モーメンタリー)を想定しており(制御がシンプルになり使いやすいため?)、それらを使いつつも状態を維持できる方法です。{{:howto:open_plc:sc2022-10-03_13.32.56r2.png?direct&650|黄色の枠内がコイルと対応する内部スイッチで、自己保持回路を組んだもの}}
 \\  \\ 
-  * プログラムが大きく複雑になってくると、図のどの部分で何をやっているかすぐわからなくなってしまいます。\\ コメントを、テキストボックスの形で好きな場所に入れることが出来るので、処理のまとまりごとにタイトルや注釈を入れて、後からメンテナンスしやすい体裁にしておくようにします。\\ ラダーダイアグラムを一目見れば処理がわかるぐらいに慣れてくれば目安程度でよいでしょうが、初心者ほど注釈を丁寧に入れたほうが良いと思います。\\ 処理のブロックごとにスペースを空けるのも見やすさにつながります。+  * プログラムが大きく複雑になってくると、図のどの部分で何をやっているかすぐわからなくなってしまいます。\\ **コメント**を、テキストボックスの形で好きな場所に入れることが出来るので、処理のまとまりごとにタイトルや注釈を入れて、後からメンテナンスしやすい体裁にしておくようにします。\\ ラダーダイアグラムを一目見れば処理がわかるぐらいに慣れてくれば目安程度でよいでしょうが、初心者ほど注釈を丁寧に入れたほうが良いと思います。\\ 処理のブロックごとにスペースを空けるのも見やすさにつながります。必要なスペースを空けるには、ちょっと面倒ですが、開けたい場所の下にある要素全部を選択して下に移動します。
 \\  \\ 
 ===== プログラムの実行 ===== ===== プログラムの実行 =====
-  * プログラムは実行されると、外部入力の状態を読み込んで内部のロジックを回して外部出力の値を決めてという一連の処理を行います。この1回分をスキャンという言い方をします。プログラム全体が処理されて全部の要素の値が確定したら、外部出力の状態も更新されます。処理の途中では更新されません。\\ 引き続いて次回の実行が始まり、停止させるまでの間、延々とこのプロセスが繰り返されます。+  * プログラムは実行されると、外部入力の状態を読み込んで内部のロジックを回して外部出力の値を決めてという一連の処理を行います。この1回分をスキャンという言い方をします。\\ プログラム全体が処理されて全部の要素の値が確定したら、外部へのアウトプットの状態も更新されます。処理の途中では更新されません。\\ 引き続いて次回の実行が始まり、停止させるまで延々とこのプロセスが繰り返されます。
 \\  \\ 
  
howto/open_plc/basic.1675133508.txt.gz · 最終更新: 2023/01/31 11:51 by Staff_Ujiie