日記；回すだけⅤ ① ST言語（ファンクションブロック）でモータを回す記述＜その1 準備＞

　　[日記；回すだけ ⑪ST言語でモータを回す記述＜その3＞](https://qiita.com/jamjam/items/94ecafa24334de0ee613)
の続きです。
　前回の連載の環境では、ブルー画面が多発したので、一度TwinCAT3とVisual Studio 2019をすべてアンインストールして再度入れなおしました。Visual Studio 2019はフリー版がなくなったので2022を入れました。
### 環境
- Windows 10 Pro 21H2
- Intel Core i5-9400 CPU @ 2.90GHz 
- RAM 8GB
- Intel I219-V (for 家庭内LAN)
- Intel 82574L (for EtherCAT)
- TwinCAT3 Build 4024.32（2022年9月）
- Visual Studio Community 2022 17.3.3 desktopアプリだけをインストール
- EPOS4 Compact 24/1.5 EtherCAT
- maxon EC-i 40 449464 DC BLDC 24V 50W w/ hall sensor & encoder (512 counts)

![IMGP1262.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/334ba2c6-f676-6c74-0170-5a7cd2be6c5e.png)
EPOS Studio 3.7でチューナップを済ませています。
BeckhoffのEtheCATカプラをつないでいますが、それらのI/Oは使っていません。

### 3通りの記述方法
　前回の連載では、MAINにファンクションブロックを記述しました。MAINはST言語の記述がデフォルトのため、図のファンクションブロックは使えません。図を利用するには、
- POUのMAINの下にアクションを追加し、ファンクションブロックダイアグラムを利用する
- MAINのPOUと同じレベルにPOUを追加し、ファンクションブロックダイアグラムを利用する

の2通り、合計3通りの記述方法があるように思えます。この辺りの使い分けの解説は見つかっていません。MAINにST言語で記述するのは、見通しが良くない上に図のファンクションブロックは使えないので、テスト的な利用に限られそうです。
![e217.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/49651867-380a-62d3-bff1-ec504aeba2e3.png)


### プログラムを記述するまでの準備
　前回の連載の方法を再度説明します。その前に、記述までの準備をします。
##### スイッチの利用
　EPOS4にはディジタル入出力がコントローラ上に存在します。
　　[日記；回すだけIII ⑩ pythonでSDO、PDOの読み書き＜その5 Profile Position Mode + ディジタル入出力（EPOS4）＞ベータ版](https://qiita.com/jamjam/items/a70a632ce98ff60673a1)
ここで利用したスイッチを使います。
　EPOS Studio 3.7で、General purposeに設定しています。
![e101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/c931cd0a-73e2-09aa-25f4-3f367d6268a9.png)
![e102.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/0470bccc-e1fb-2326-7369-8a5d16bd48e3.png)
　PDOマッピングはデフォルトのままです。
　ToolsのObject dictionaryをダブルクリックして開きます。Indexの番号のてきとうな数字の上でマウスの右ボタンをクリックして出てくるメニューからExport EDS Fileをえらび、デスクトップに保存しておきます。
　このESIファイルをC:\TwinCAT\3.1\Config\Io\EtherCATにコピーします。EPOS4の設定された機能が、TwinCAT上で有効になります。
##### コネクタ
　コネクタの信号です。

1 Digital input1
2 Digital input2
3 Digital input3
4 Digital input4
5 Digital output1
6 Digital output2
7 Vdd(5V)
8 GND

<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/a6e12793-e968-4117-2d73-ee94ee763a1d.png">

<img width="500" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/934b5c99-b171-8a71-2106-33b9385b5725.png">

　これらI/Oのデータは、I/Oにあるドライブ4（EPOS4）のModule1（CSP Mode）のCSP Inputs-Digital InputsとCSP outputs-Digital Outputsに反映されます。

| SW | 状態 | データ（32ビット符号なし） |
|:-----------|------------:|:------------:|
| 1番     | Off       | b1111 0000 0000        |
| 1番     | On       | b1110 0000 0000        |
| 2番     | On       | b1101 0000 0000        |
| 3番     | On       | b1011 0000 0000        |
| 4番     | On       | b0111 0000 0000        |


##### プログラミングの準備
　ファイルの新規作成からプロジェクトを選び、ここでは、TwinCAT Project31を起動します。

![e202b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/a13bda1c-ddd6-31dc-9bce-56a2347733a2.png)

　デバイスの再読み込みをクリックし、I/Oのデバイスを右クリックし、スキャンします。
　いくつかのパネルが出ます。「OK」もしくは「はい」をクリックします。初めての時は、TwinCATで使えるネットワークカードを選択し、ネットワークカードのドライバをインストールします。
![21111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/1f7f13b1-29c7-06da-43df-626a785e73c4.png)

　デバイス類が見つかったら、MOTIONの軸の下にある「軸1」をプログラミングで使えるように英語表記にします。ここでは「AX1」に変更しました。
![e209.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/69fb274f-f5b9-3b95-d323-016f7ab7f77a.png)

　プログラムの記述はPLCの項目で行います。
　左のソリューションエクスプローラでPLCを右クリックするとアラートが出ます。
![e210.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/bd84e3d1-4914-6023-4fa9-bb14452039ac.png)

　ソース管理プラグインのパネルでは「はい」をクリックします。
　パネルが出てきますが、「はい」「ＯＫ」をクリックします。ソリューションの名称が31から32になっていますが気にしないでください。
　いったん終了になります。
![名称未設定2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/b5602b01-14dd-780b-a337-3889ce333339.png)

　今開いていたソリューション名を1回クリックで起動します。
![e213.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/c34a13eb-7a38-ee07-f26c-1734ee56edde.png)
　PLCを右クリックし、新しい項目の追加を選択し、Standard PLC Projectを選びます。
![e215.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/25b698aa-f7b6-5e1c-ed0e-91d18f2bf93c.png)

　左のソリューションエクスプローラでPLCの下に、Untitled1プロジェクトができ、その中に、
- References 　利用するライブラリ
- GVLs 　外部参照変数類
- POUs　プログラム本体

などの項目が見えています。最初は、POUsに入っているMAINにコーディングをしていきます。

![e216.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/c05cdd04-b8f2-9718-2cbb-9ea1f22ce046.png)