SINAMICS DriveSim Basicとは?
2021年5月31日、Siemens社がSINAMICS DriveSim Basic というモデルが提供しSimulink やSIMITに取り込むことが可能になります。
みんなさんプログラムを実機に入る前にどうやってDriveにコマンドやStatus確実に取り込んでると確認しますか?そのSINAMICS DriveSim Basic がありますと、実機が作る前の段階でもうある程度確認できます。そのSINAMICS DriveSim Basicは PROFIdrive-Enabled(私からみたら、ある程度のパラメータややControl wordとStatus wordもそのまま入力・出力としてる)のFMU モデルです。FMU=Functional Mockup Unit。
そのFMUモデルはSIMITやMatlab Simulink、NX Motionなどのシミュレーションアプリケーションに取り込めます。
Support Drive機種
こちらはいまDriveSimBasicがSupportするDriveです:
- SINAMICS G110M (CU240M) – V4.7 SP13
- SINAMICS G115D – V4.7 SP13
- SINAMICS G120 (CU230P-2, CU240B-2, CU240E-2, CU250S-2) – V4.7 SP13
- SINAMICS G120C – V4.7 SP13
- SINAMICS G120X – V1.03.00
- SINAMICS G130/G150 – V5.2 SP3
- SINAMICS S110 – V4.4 SP3
- SINAMICS S120/S150 – V5.2 SP3
- SINAMICS S210 – V5.2 SP3
- SINAMICS V90 – V1.04.03
- a simplified representation of the motor
Support Telegram
いまの段階ではTelegram1,2,3,4になります。
Version
Engineering
SINAMICS DriveSim Basic はあなたのツールボックスの一つだと思って良いでしょう。そのSINAMICS DriveSim Basic いまもってるバーチャルツール(Simatic S7-PLCSIM AdvancedやNX Mechatronics Concept Designerなど)から実装することができます。
ちなみに、今回はSimulinkから実装と考えています。
使用例
PLCとVirtual commissioning
機械設計するとき自分が作ったPLC プログラムとSiemensのSinamics Drivesと正常動作してるかどうかをCheckする必要があります。PLCプログラムのあとにPLCSim Advanceにダウンロードし、そしてPLCSim AdvanceをSIMITやSimulink S-Function(Siemens社からPLCSim Advanceバージョンのライブラリが提供しています)に、SINAMICS DriveSim BasicのFMUモデルを入れ込む。最後にNXや他のソフトで装置どう動くのかシミュレーションをする。
CU(Control Unit)選定
SINAMICS DriveSim BasicはPLCSim Advanceなくても単体でSimulinkなどで動くことが可能です。もしその場合、SINAMICS DriveSim BasicはUserからLoad profilesし、様々な特性(トルク・速度などSIZERというSiemensのDrive選定ソフト)直接にLoadすることができます。そうすると、Sizerから最適なCU、ConverterとMotorが選定してくれます。(これもきになる、時間あるとき試します。)
Download
まず下記のLinkからドキュメント・FMUとExampleをダウンロードします。
https://support.industry.siemens.com/cs/document/109798225/sinamics-drivesim-basic?dti=0&lc=en-WW
多分まだリリースしたばかりなので、Licenceなどの関係そんなに整ってないのかな?FMUが一応Licence必要です。
digitalization.drives@siemens.com に問い合わせする必要があります。
もちろん英語です。頑張ってくださいー
でもSupport Teamの人がすぐ返事きて、1日Licenceのこと完了しました。
*LicenceがないとFMUをシミュレーションするときエラーが来ます。
Licence
digitalization.drives@siemens.com に問い合わせする必要があります。
そうするとSupport TeamからこのようなStartCode20.autが送ってくれます。
Auto Licence Managerを起動し、License Key>Offline Transfer。
Generate Request codeを選び、Next>します。
Start CodeをLoadしてくださいと言われます。はい、Support TeamからもらったFileをLoadしてください。
本当にLoadしますか?Yes。
Next>します。
次はSaveボタンでRequest Codeを保存します。
そしてそのRequest CodeをSupport Teamに送ってください。
しばらく待ちますと、Support TeamからActivation Filesが送ってくれます。
私は1時間くらい待ちましたー。
もう一度Automation License Managerを起動、License Key>Offline transfer。
今度はActivate license keys(s)を選び、Nextします。
Loadボタンをクリックします。
Support TeamからもらったFileを選んで、Next>。
それでLicence転送完了ですー。
使用Block
今回はいくつのBlockを使用していますのでまずそれらのBlockについて紹介してうえに反しを展開しようと思います。
Simulink / Signal Routing / Switch
Switch BlockはSymblosから見ますと、Lineが3つありまして、このBlockの出力ははLine1かLine3になり、Data inputsだと言います。そしてどっちかの出力を使うにはLine2の比較条件になり、control inputだと言います。
https://jp.mathworks.com/help/simulink/slref/switch.html
もちろんControl inputの動作条件が設定できます。Switch Blockをダブルクリックします。
Criteria for passing first inputはLine1の値を使う場合の条件設定です。
>か>=かZeroではない、3つの条件が選びます。
Thresholdは比較される値ですね。
Thresholdは定数でもいいですし変数でもOKです。
例えばThresholdは1ならControl inputの値が1より大きならFirst inputが出力されます。
例えば以下の例だとFirst inputはtrueで、Third inputはfalseです。Control inputは1を入れて、条件は>1ならFirst inputを値として出力しますの感じですね。
Simulink / Dashboard / Button
簡単に説明しますと、タッチパネルなどのボタンと同じく押してる間は設定した値になるもイメージです。例えば常に0で、押してる間にだけは1になる、とかですね。
https://jp.mathworks.com/help/simulink/slref/pushbutton.html
ButtonをModelに追加し、One-Clickして赤枠のボタンをクリックします。
そうするとModelの周りは灰色になり、MosueのIconは少し変わったとわかります。
繋がりたいBlockを選んたらConnectすることができます。
下の例だとConstant BlockとConnectしてるんです。
いまButtonを選びますと、Constant Blockも一緒に光るになりますね。
つまりこのButtonは該当するBlockとConnectionしてますよ、といっています。
Simulink / Sinks/ Display
おそらくこれはよく使われるでしょう。つまり、名前通り、入力データの値を表示します。
特に詳しい説明はいらないと思いますー
https://jp.mathworks.com/help/simulink/slref/display.html
Block ParametersでDisplayするFormatも選びます。
Simulink / Signal Routing / Selector
Optionにより様々な出力もできますが、今回はIndexにより出力選ぶのような感じです。
UはInputのデータでIdx1は出力したいデータのIdx、そしてYはその出力です。
https://jp.mathworks.com/help/simulink/slref/index-options-with-selector-block.html
Index vectorなど、色々なIndex Optionが設定できます。
そして、Index選択するときは0から始まる(Zero-based)や1から始まる(One-based)の設定も可能です。
例えば以下の例だとUはVector[1:10]をSelecotr1のuとして入り、Idx1は[2:8]、つまり2から8までデータを出力したい、と。
そうするとYはそれに応じ出力します。
Simulink / Dashboard / Check Box
シミュレーション中にこのボックスをオンまたはオフにすることで、パラメーターまたは変数の値を設定できます。
Connectの設定方法は基本Buttonと同じなので、詳しく説明しません。
https://jp.mathworks.com/help/simulink/slref/checkbox.html
Block ParametersでLabelやCheck外してるときや入れるときの値を別々に設定もOKです。
例えば以下の例だとCheck boxとConnectしてるConstant2はCheckしてないときは0になり、Checkしてるとき1になります。
Simulink / Dashboard / Lamp
入力信号の値を示す色を表示します。みんなさんがタッチパネルなどで使われているものとあまり変わりません。
Connectのやり方もButtonやCheckboxににていますから詳しく説明しません。
https://jp.mathworks.com/help/simulink/slref/lamp.html
Simulink / Logic and Bit Operations / Set bit
格納された整数の指定されたビットを 1 に設定
Bit Set ブロックは、格納された整数の指定されたビットを 1 に設定します。スケーリングは無視されます。
1 に設定するビットは、[ビットのインデックス] パラメーターで指定できます。ビット 0 が最下位ビットです。
https://jp.mathworks.com/help/simulink/slref/bitset.html
例えば以下の例だと、入力の3番目からのBitがセットされます。
Block ParametersでリットしたBitが設定できます。
Communications Toolbox / Utility Blocks Integer to Bit Converter
Integer to Bit Converter ブロックは、つまり整数をBitパターンに変換するBlockになります
https://jp.mathworks.com/help/comm/ref/integertobitconverter.html
Block Parametersは出力されるBit Patternは何個あるか、Bit orderなど細かい設定ができます。
Simulink / Ports & Subsystems / Model
他のModelを呼び出ししたりのときに使います。
https://jp.mathworks.com/help/simulink/slref/model.html
Block ParametersはどこもModelを呼び出しに設定したりなどできます。
function_bit2word
こちらのBlockは16BitのBoolを一つのWordにまとめるんです。PLCで簡単にできるけど、Simulinkでやるとちょっと色々考えてたー
このBlockを使ってDriveのControl word STW1をまとめます。
中身はこんなモデルですね。
ちょっと小さくてみえないかもしれませんが、Set bitのBlockを使用しBit0-15まで常時セットし、BlockのInputとかけます。もしBlockのInputがTrueなら、当然1になり、最後はSumで全然足します。
functiontest1
こちらのFunctionはWordを16Bitに分解するのBlockです。DriveからもらったZSW1のStatus wordを分解するために使います。
中身はこんな感じのモデルですね。
Inputを整数に変換し、BitのVectorさらに変換。そしてSelectorのBlockを使ってIndexを0-15まで指定し、出力します。
Normalization
これはSiemensのExampleから取ってきたBlockです。Speed コマンドもらったDriveのSpeed命令に変換するプログラム入っています。
Blockの中身です。p2000は最大Speedです。
16384=4000HEXで分解率だと思ってください。
モデル
全体的はこんな感じになります。
コマンド制御するダッシュボードあり、いまの状態も見えます。