数時間前に
OpenPLC用 Arduino UNO用テストベンチボードを作ってみました ラダープログラム編
を投稿しました。
その記事では、Arduino UNOとindows runtime でOpenPLCを動かしていたために、
Arduino UNO 単体では動きませんでした。
公式ページに
1.5 INSTALLING OPENPLC RUNTIME ON MICROCONTROLLERS
の記事があったのでRuntime自体もマイコンボードに組み込めると思い試行錯誤してみました。
なんせ情報が少なくて(泣)
前回の記事で使ったラダープログラムで試してみました。
公式ページの英語の記事を翻訳ソフト(DeepL)を翻訳すると
「OpenPLC ランタイムは、移植性を考慮して設計されました。そのコアは純粋な C で記述されているため、多くの異なるハードウェア プラットフォームに移植できます。Windows や Linux などの最も一般的なオペレーティング システムには、実行可能なアプリケーションとしてランタイムを展開する、すぐに使用できるインストーラーがあります。本格的な OS を持たない組み込みシステムの場合、ランタイムを PLC プログラム自体の一部として展開する必要があります。OpenPLC Editor は、公式にサポートされているすべてのボードでこのタスクを非常に簡単にします。PLC プログラムを Arduino 互換ボードに展開する準備ができたら、上部のツールバーにある Arduino アイコンをクリックするだけです。」
と言うことなので、とりあえずArduinoアイコンをクリックしてみました。
(初めてArduinoアイコンをクリックした場合はこの画面が表示されるまで結構な時間がかかります)
Board Typeやシリアルポートの設定をして
Uploadボタンを押しましたが、エラーが出ました。
__IX100_0 に関してのエラーぽいので
多分ビット
設定の %IX100.0 と関係がありそうですが、ソース上どこで設定してあるのかわかりません。
良く分からないまま、%IX100.Xを%IX000.Xに、%QX100.Xを%QX000.Xに変更したらこのエラーは無くなりました。ただ次は __IW100 でエラーです。
同じように
%IW10Xを%IW00Xに、%QW10Xを%QW00Xに変更したらエラーが無くなりアップロードも成功しました。
そして、Windows runtimeを必要とせずArduino UNOボードだけでラダープログラムが走りました。
良く分からないままに、とりあえず動いたという感じですが、マイコンボード単体だけで、
PLCプログラムが動くので実用に一歩近づいたと思います。
それにたくさんのマイコンボードをサポートしているみたいなので、他のボードに関しても検証しようと思っています。
分かり辛いですが、単体で動作している写真です。
IX000.0をON
IX000.3をON
アナログ入力とアナログ出力
ただ情報が少ないので、何らかの情報をお持ちの方は教えてください。
2023年1月9日追記
入出力の設定ですが
公式のドキュメント 2.4 PHYSICAL ADDRESSING
に記載がありました。
%IX000.0と書いても動いていましたが正しくは %IX0.0 でした。