* ラダーロジックで nucleo マイコンをプログラミング [#la9275f5]

ラダーロジックで nucleo マイコンを制御してみました.

** ラダーロジックとは [#x157d0cc]

ラダーロジックとは,リレーの組み合わせでプログラムを記述する言語です.
で,リレーというのは,スイッチを電磁石で動かす素子です.
昔はリレーで論理回路を組んだコンピュータや計算機がありましたね.
詳しくは「[[WikiPedia.ja:ラダー・ロジック]]」を参照してください.

ラダーロジックの例を以下に示します.

 |    Q         R         Q    |
 +---| |---+---|/|-------( )---+
 |         |                   |
 |    S    |                   |
 +---| |---+                   |
 |                             |

- 左右の | は母線(電源ライン)
- ---( )--- はコイル(電磁石)
- ---| |--- は A 接点~
電磁石に電流が流れるとオンになる接点.
- ---|/|--- は B 接点~
電磁石に電流が流れるとオフになる接点.
- コイル・A 接点・B 接点の上の記号は変数~
同じ記号のコイルと接点でリレーを構成します.

で,上記の回路では
- Q もしくは S が ON になると,Q の電磁石に電流が流れる
- R が OFF になると Q に流れていた電流が切れる

ということで,論理回路の RS ラッチのような動作をします.


** nucleo とは [#uf57d74c]

nucleo とは,STM32 マイコンを搭載したボードマイコンです.

マイコンでの開発となると JTAG を使ってプログラムの書き込みやデバッグをするのが普通です.
が,このボードには主マイコンの他にプログラム書き込み・デバッグ用のマイコンが搭載されていて,パソコンと直接 USB ケーブルでつないでプログラムの書き込みやデバッグができます.

#af_amazon(B0162JGEUW)

今回はこの↑ nucleo F446RE を使いました.

このボードは,38 ピン x 2 の入出力コネクタの他に Arduino 互換のコネクタもあり,(プログラムを書けば)Arduino のシールド(ドータボード)が使えます.
ただし,ロジック入出力レベルが Arduino UNO の 5V と違って nucleo は 3.3V なので,これが原因で動かないシールドもあると思います.


** 開発の流れ [#aeabbc97]

図にすると以下のようになります.

 PLC Open Editor ←→ (プロジェクト保存ファイル)
       ↓                                                   
 (ST 言語プログラム)
       ↓
     matiec                                       STM32CubeMX
       ↓                                             ↓
 (C 言語プログラム)    (グルーロジック)     (C 言語ソースコードツリー)
       ↓                    ↓                       ↓
        -----------------------------------------------
                             ↓
                     コンパイル・リンク
                             ↓
                   (ファームウェアバイナリ)
                             ↓
                          書き込み

+ PLC Open Editor でラダーロジックを入力し,IEC 61131-3 ST 言語ファイルを作成します.
+ matiec で ST 言語のファイルを C 言語に変換します.
+ STM32CubeMX(ソースコードツリージェネレータ)で GPIO ピンを設定し,C のソースコードツリーを生成します.
+ ラダーロジック側の C プログラムと STM32CubeMX で生成したソースコードツリーをつなぎ合わせるグルーロジックを C 言語で記述します.
+ C ソースツリーのコンパイル・リンク
+ ファームウェアバイナリの書き込み

初回はこのような手順になります.

入出力ピンが確定し,グルーロジックが出来上がっている状態ならば
+ ラダーロジックの編集
+ make 一発でファームウェアバイナリの生成
+ 書き込み

で,ラダーロジックの修正ができます.


** 利用シーン [#df934eba]

C 言語でプログラムが書けるのならば,素直に C 言語オンリーで書いた方が良いでしょう.

が,ラダーロジックの使い手は,制御対象に対して独自のノウハウを持っていることが多いようです.
そのような方と共同で作業する場合は,このような開発手段も有効かと思います.



** 開発例 [#fbecabea]

LED 点滅のラダーロジックを組んで,実際に上記の手順でファームウェアを作りました.

この記事のウケが良かったら書いてみようかと思います.


** リンク [#e9ea1405]
- PLC Open Editor~
http://www.openplcproject.com/plcopen-editor
- matiec~
https://bitbucket.org/mjsousa/matiec/
- STM32CubeMX~
http://www.st.com/ja/development-tools/stm32cubemx.html

あと,この本も参考になると思います.
#af_amazon(4621062441)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS