今回の記事ではSelmo StuidoにLogic Layerに自動リセットのモデルを作成し、自動生成されたコードをBerghof ControllerにImportします。また、EtherCAT IOと直接繋がったり、SimumatikのSimluation Platfromと連携します。
さ、FAを楽しもう。

Reference Link
http://soup01.com/ja/category/selmostudio/
http://soup01.com/ja/category/berghof/
http://soup01.com/ja/category/simumatik/
前書き
いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。
現在、私達の活動はほぼ無償で続けており、より多くのコンテンツを提供するためには、皆様の温かいご支援が大変重要です。もし可能であれば、以下のリンクから応援していただけると大変嬉しく思います。
高橋クリスのメンバーシップ
こちらはFullさん(full@桜 八重 (@fulhause) / X)と共にやっているラジオにメンバーシップを登録いただけます。
https://note.com/fulhause/membership/join
AMAZON ギフトリスト
こちらは自分のブログのコンテンツ制作や設備の充実に大いに役立てさせていただきます。
https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share
Patreon
こちらは自分のブログのコンテンツ制作や設備の充実に対する小さな応援の気持ちのPatreonです。
https://www.patreon.com/user?u=84249391
皆様のサポートが、私たちの活動をより充実させる力となります。
どうぞよろしくお願いします。
メールアドレス
X
Selmo operands
Selmo Operandsは、システムがどのステップでどの状態を持つべきか、あるいはシステムがどの状態を取るべきかを定義するために使われます。 機械状態を正しく定義する方法と、各オペランドが何をするかが示されています。
- 0 – don´t care
- I – Interlock Check
- S – Sequence Check
- D1 – Decision Path 1
- D2 – Decision Path 2
- M – Monitoring Check
- J – Jump
- C – Cancel
対応するゾーン、ステート、オペランド、モニタリングが定義されると、その後のプログラミングの基礎が作られます。
つまり、オペランドはプロセスの流れを制御・監視し、各ステップで機械の状態が正しく定義されていることを保証します。
Implementation
Selmo Side
今回Logic Layerに自動リセットのモデルを作成します。システムは、スイッチが一度オンになった後、スイッチが再びオフになるまで連続的に動作するように設計されています。 このため、ジャンプ・コマンド(Jump)を使用します。
Logic Layer
こちらは今回記事で作成したLogic Layerになります。
- S01:SW OFF、スイッチがOFFの状態であります
- S02:SW ONスイッチがONになるまで待ち
- Step3:何かの動作
- Step4:何かの動作
- Step5:LAMP出力
- Step7:タイマー:5秒待ち
- Jump7:Jumpコマンドが実行、SW02:SW ONに戻る
Jumpコマンドは”Add Step”のところにあります。
Jumpコマンドを実行するときのジャンプ先を設定するには、部品をそのまま線をDropすればOKです。
System Layer
こちらは今回の記事のSystem Layerです。
#7のJump7ではJ オペランドを使用しジャンプ動作を実行します。
#6 Step7は遅延TimerがONになるまでランプ出力し続けます。
HMI OPC Setting
次はSelmoの自動生成HMIを使用するには、OPC UA接続を設定するために、Target Systemを開き>Select Target Systemを”Custom OPC UA”を選択します。
OPC UA Base Identifierの項目にCPUのOPC UA Server URLを入力してください。
uaExpert からApplicationのAddress Spaceまでアクセスしてください。
Attributes>IdentifierのPathをCopyに、先程の項目に貼り付けましょう。
Generate PLC-Code
最後はGenerate>Generate PLC-CodeでPLCコードを生成します。
Codesys Side
次はBerghof CPU側を構築します。
Import Library
Selmo LibraryをCodesysプロジェクトにImportします。
Import PLC Code
先程Selmo側でExportしたPLCコードをCodesys プロジェクトにImportしてください。
OKで進みます。
Done!Selmo Studio側で生成したコードをImportできました。
Configure EtherCAT IO
Berghof のRaspberry PIにインストールしたIOを構築します。
DUT
こちらは8BITをまとめた構造体になります。
gIOMapping
こちらはEtherCAT IOとMappingするための変数を定義します。
Mapping
EtherCAT I/O Mappingを開き、今回記事で使用した入出力をGlobal Variables Listと紐つけます。
Selmo Stuidoで生成したコードは、InputMappingとOutputMappingだけは手動で行う必要があります。こちらはSequenceの入力MappingのGVLです。
こちらはSequenceの出力MappingのGVLです。
Call Program
最後はMAINプログラムにSelmo Stuidoで生成したGlobalControl()とGlobalUtilities() POUを呼び出します。
Login
Online>LoginでプロジェクトをCodesys RuntimeにDownloadします。
Result
Generate HMI and start the executableをクリックしSelmo HMIを立ち上げます。
こちらの動画からSelmo Stuidoで生成したコードを実行する結果を確認できます。
Selmo.Playing with Berghof CPU‐ With monitor operation in Selmo Studio
次はSimumatikのPlatfrom上で動作を確認します。
こちらの動画からSelmo Stuidoで生成したコードとSimumatikを連携した結果です。
それはボタンを押す>>Objectが生成>>5秒待ちの繰り返しになります。
Selmo Playing with Simumatik and Berghof CPU
また、SelmoのHMIにはSingle Modeがあり、動作Flowを一時停止し、HMIのボタンを押したら次のStepに進むような、Debugに役に立つモードがあります。
こちらの動画からSingleモードの動作を確認できます。