Arduino PLC IDE 備忘録 随時更新？

　2020年12月に入ってArduino.ccからArduino PLC IDE 1.0がダウンロードできるようになりました。Arduino IDE 2.xが長期にわたってベータ版だったのに比べ、最初から1.0です。
　Arduino Optaというハードウェアのアナウンスで登場した開発ツールですが、2020年12月17日現在、Arduino Optaは発売されていません。
　　[Arduino Opta](https://www.arduino.cc/pro/hardware-arduino-opta)
　3モデルありますが、一度RS-485のモデルが140ドルで表示されたことがありましたが、今は見えません。
（2023/01/05現在）価格表が追加されました。Opta Liteが$146.40、Opta RS485が$160.80、Opta WiFiが$193.20。
（2023/01/15現在）2022年12月発売の表示が[2023年2月発売に変更](https://www.arduino.cc/pro/hardware-arduino-opta)されています。
（2023/03/03現在）発売開始。知りえた時間帯で、残っているのはOpta RS485だけだった。
（2023/3/17現在） OptaをArduino IDE 2.xで始める記事が公開された　[Getting Started with Opta](https://docs.arduino.cc/tutorials/opta/getting-started)　しかし、Arduino PLC IDE用に必要なファイルは存在しない。
（2023/3/28現在）　Arduino PLC IDE 1.0.3がダウンロードできるようになった。Arduino IDE 2.x用AIPlc_Optaがインストールできるようになった。


　Arduino PLC IDE 1.0を動かすと、[Portenta Machine Control](https://store-usa.arduino.cc/collections/pro-family/products/arduino-portenta-machine-control)のハードが使われるようになっています。I/OはGPIO以外にCANバスのCANopenがサポートされています（FBDは現在見つからない。Motion関連もアナウンスはない）。

　エラーメッセージは、このファイルが該当するかもしれない。https://files.elsist.biz/forum/20130919141900.pdf


### Arduino PLC IDE 1.0関連のURL
　ダウンロードは無料です。[Downloadsのページ](https://www.arduino.cc/en/software)
　ドキュメントのトップです。[Docs Arduino PLC IDE](https://docs.arduino.cc/software/plc-ide)
　ハード1台に付きライセンスが一つ必要なようです。17.6ドル　[PLC key Portenta Machine Control](https://store-usa.arduino.cc/products/plc-key-portenta-machine-control?selectedStore=us)

（2023/01/05現在）普通のWindows10 PC 2台にインストールしましたが、落ちます。英語版Windows10を用意して実行したら、問題なく動いています。日本語版では、ユーザ名はアルファベットを使っています。落ちる理由は、ほかにあるようです。コンパイルするmbed処理系は、Arduino IDE 2.xと同じ場所にインストールされます。このツールのベータ版時代、パス名が長くてインストールできなかったり、実行時に落ちていました。最終のベータ版になって落ちなくなりました。

### 記述言語
　Arduino PLC IDE 1.0では、従来のスケッチと、IEC 61131-3が使えます。
　スケッチのエディタの画面です。
![2022-12-15 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/3e1091d5-2818-1b21-7087-4b7def318b56.png)
　IEC 61131-3はFA用の言語群で、五つの言語が使え、混在？ができます。
- IL（Instruction List；インストラクション・リスト）
- LD（Ladder Diagram；ラダー・ダイアグラム）
- SFC（Sequential Function Chart；シーケンシャル・ファンクション・チャート)
- FBD（Function Block Diagram；ファンクション・ブロック・ダイアグラム）
- ST（Structured Text；ストラクチャード・テキスト）

　過去記事では、ST言語とFBDをTwinCAT3（EtherCAT）で使いました。
　グローバル変数や構造体は、言語にかかわらず共用できるような言語体系なはずです。スケッチも、たぶん。

　　[イントロのページProgramming Introduction With Arduino PLC IDE](https://docs.arduino.cc/tutorials/portenta-machine-control/plc-programming-introduction#sequential-function-chart)

##### スタイル
- Init: 初期化時に行われる、割り当てられたプログラムの単一実行
- Fast: デフォルトで 10ms ごとに、付属のプログラムを実行するループ (変更可能)
- Slow: 100msごとに付属のプログラムを実行するループは変更不可
- Background: 500msごとに付属のプログラムを実行するループは変更不可


![2022-12-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/19a0b141-1914-5a15-b63b-00cff4e69112.png)

### 対応モジュール？
　RS-485ではModbus/RTUがサポートされます。EthernetではModbus/TCPがサポートされます。CANではCANopenがサポートされます。
　Modbus/RTUの対応画面です。
![2022-12-16 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/79a1e639-3ce6-2869-e216-dfb76010af7e.png)

　CANopenの対応画面です。
![2022-12-15 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/785e5e6c-6459-e768-e263-587837b87bc6.png)
　Modbus Custom Editorの画面です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/6accd0db-37b5-15a0-e8df-3d9de67ce27f.png)

　CANopen Custom Editorの画面です。EDSが見えています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/b56515a2-8202-f484-61a8-4a2bb7f6f517.png)

　　[ModBus Setup with Arduino PLC IDEのページ](https://docs.arduino.cc/software/plc-ide/tutorials/modbus-setup)

　　[CAN Bus Setup with Arduino PLC IDEのページ](https://docs.arduino.cc/software/plc-ide/tutorials/can-setup#required-hardware-and-software)

　FBDのライブラリです。CANopenはまだないようです。
![fbd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/fd4440d8-9312-37f5-a983-17a9547df36f.png)

　貼り付けたところです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/96e2dbcb-5857-9260-a5dd-ac99fa2ed320.png)


### 参考
　IEC 61131-3日本語関連　[https://www.plcopen-japan.jp/beginners/](https://www.plcopen-japan.jp/beginners/)
　
　omron [PLCの国際標準プログラミング：IEC 61131-3とは？](https://www.fa.omron.co.jp/product/special/sysmac/plcopen/)


　PLCopen　[ダウンロードのページ](https://plcopen.org/downloads)

##### 検索で見つかったFBD関連リンク
　オフィシャル　https://www.youtube.com/watch?v=l1L4jzDVKyE&t=32s
　FBDの日本語解説　[FBD言語を使用したPLCプログラミング](https://www.softech.co.jp/mm_160803_plc.htm)
　PLCopenのintroduction Function Block Diagram（FBD）（pptx）

　https://youtube.com/watch?v=l1L4jzDVKyE&t=32s
　https://softech.co.jp/mm_160803_plc.htm
　https://youtube.com/watch?v=hdTHl-5WxiA
　https://youtube.com/watch?v=X5UnbqBnZss

##### Soup氏の日本語の解説
1回目　　[ArduinoOPTA#Arduino PLC IDE始めよう!](http://soup01.com/ja/2023/04/08/post-5595/)

##### Jakob Sagatowski氏の解説
1回目　　https://www.youtube.com/watch?v=mq1xgubaQeA
？ Modbus/TCP　https://www.youtube.com/watch?v=G4LdrMfbTOc&t=530s

Arduino OPTA PLC
1回目　[箱を開ける](https://www.youtube.com/watch?v=DkoEHkLDCMg)
2回目 ?? [Programming the Arduino OPTA](https://www.youtube.com/watch?v=jSVzVAaLURM)

##### JugaadTech氏の解説
1回目　[Arduino PLC - IDE Overview & Basic Programming Part 1 ](https://www.youtube.com/watch?v=vJK3Fv2Tc4A)
2回目　[Arduino PLC IDE Programming Part 2](https://www.youtube.com/watch?v=97x3evEdvro)
3回目　[Arduino PLC IDE Programming OOPS Part 3](https://www.youtube.com/watch?v=x-c3mPx3_Hg)
4回目　[Arduino PLC IDE Hardware ,Documentation & Codesys Comparison Part 4](https://www.youtube.com/watch?v=TC5t3x6uZag&t=2s)
5回目　[Arduino PLC - IDE PART 5 Different Features](https://www.youtube.com/watch?v=7Zwh-NE5Z5E)


##### control.comの解説
1回目　[How To: Use the Arduino PLC IDE to Build Basic Ladder Diagrams　Lチカができる解説](https://control.com/technical-articles/how-to-use-the-arduino-plc-ide-to-build-basic-ladder-diagrams/)
2回目　[Analog I/O and External Devices](https://control.com/technical-articles/arduino-plc-ide-tutorial-2-analog-i-o-and-external-devices/)

##### 104氏の解説
2回目　https://www.youtube.com/watch?v=LSwB-OE0_KY

##### JugaadTech氏の解説
1回目 [Arduino PLC - IDE Overview & Basic Programming Part 1](https://www.youtube.com/watch?v=vJK3Fv2Tc4A)
2回目　[Arduino PLC IDE Programming Part 2 Hindi](https://www.youtube.com/watch?v=N-DxczKSiCM)


### 追加；補足　バックグラウンド
　Arduino PLC IDEはFA用の開発ソフトです。PLCと言えば、日本では三菱電機です。世界ではシーメンスのシェアが高いようです。
　PLCと言えば、ラダー・プログラムですが、世界は、そこからIEC 61131-3に踏み出しています。五つの言語が使え、ラダーも含まれます。
　この開発環境では、codesysが有名です。ソフト自体は無料です。Arduino PLC IDEと同じですね。デプロイするマイコンに課金されます。ラズパイだと昔、50ドル？だったようです。また、昔は5時間はフリーで使えたようです。今はわかりません。
　codesysベースに、EtherCATではベッコフのTwinCAT3が、国産のソフトも、codesysがベースになっているところもあるようです。
　残念ながら、日本語の解説書はないです。仕様書はあるけど、解説ではないです。TwinCAT3のマニュアルは日本語化されていますが、読んでもわけがわかりません。
　要は、最初、どうすべきかということが書かれていないからです。
　上記のJakob Sagatowski氏のyoutubeは、それらが詳しいですが、とても長いです。教科書的です。

　Industry4は、フィールド・バスを使います。多くは時間管理がなされます。TwinCATでは、メッセージはたとえば2msごとに送信と受信が行われます。RS-485を使ったCANバスのCANopenは100msなどです。Modbusにはそのような制約はありません。Modbusには規約書がありますが、準拠と言っている日本や中国の会社には、それを守っていないところはたくさん見かけます。TwinCATは7日有効なライセンスがいつでも発行されるので、実質、開発ソフトの費用は掛かりません。Omronの開発ソフトは相当高価です。お試し版はありません。CANopenやModbusもそれ自体はライセンス料はかかりません。CANopenのプロトコルを解釈するスキャナ・ソフトは10～20万円ほどします。Modbus用のフリーのスキャナは実用的なのが二つほどあります。
　フィールド・バスで一番利用が多いのはシーメンスのPROFIBUSです。筆者は使ったことはありません。約10年前、トヨタは、工場ではEtherCATを使うというアナウンスがなされました。EtherCATではCANopenの規約が使われ、高速です。

　IEC 61131-3のどの言語も、プログラム本体、外部参照変数、構造体などを定義して利用を始めます。プログラムの中も、ローカル変数とコードは分離されます。プログラムは複数に分割できます。ST言語で作ったものと、FBDで作ったものが、外部変数でやり取りするという作りにできます。
　変数は、物理的にGPIOポートとリンクさせるように記述ができます。