TwinCAT 3 C/C++の基礎
TwinCAT 3 – C/C++
TwinCAT3 におけるC/C++言語利用の特長
C/C++言語を習得している技術者はPC制御への移行が容易
TwinCAT PLCやMATLAB/Simulinkで開発した機能モジュールとの連携が容易
EtherCATデバイスとの連携が容易
定周期(cyclic)タスクとジョブ(job)タスクを利用可能
C/C++のサンプルコードを無償利用可能(ホームページからダウンロード)
▶︎ Windowsユーザアプリケーションとの通信(ADS)
▶︎ モジュール間通信
▶︎ ファイル IO…
PLCを使わない開発者の方々にもおすすめです
各種信号処理、ロボット制御、計測・解析など
TwinCAT 3 C/C++開発環境(XAE)
1. Microsoft OS (Windows 7 またはWindow10)、x86またはx64プラットフォームを使用してください
2. Microsoft Visual Studio 2017あるいは2019の製品版をインストールしてください
- Visual Studio Express や Visual Studio Communityでの動作は保証されません *
- 英語環境での使用を推奨します
3. TwinCAT 3最新版をwebから取得し、インストールしてください
(ダウンロード元: https://www.beckhoff.com/en-en/support/download-finder/software-and-tools/)
4. 実行環境XARが64bit OSの場合は、実行用の署名を設定してください
→テスト用署名(開発-評価時)/ベッコフまたは認証機関から取得した署名(リリース時)を設定します
(手順:https://infosys.beckhoff.com/content/1033/tc3_c/110691083.html)
※その他詳細については、TC3 C++マニュアル TC1300_C_EN.pdf のChapter 5をご参照ください
*: Visual Studio Communityには利用時の制約があります。マイクロソフト社のソフトウェアライセンス条項をご確認ください。
ベッコフとしてサポート可能なのは、Visual Studioの製品版をお使いの場合のみです
TwinCAT3開発環境をインストールする際に表示される下記ダイアログでは、
使用するVisual Studioバージョンの
・ Integrate TwinCAT
・ Activate TC Settings
の両方にチェックを入れて次に進んでください。
TwinCAT 3 C/C++実行環境(XAR)
Beckhoff製 Industrial PC(IPC)またはEmbedded PC(EPC)をご使用ください
TwinCAT実行環境(XAR)をインストールしてください
継続使用するには、下記いずれかのランタイムライセンスをご購入の上、設定して下さい
TC 1300 : TwinCAT 3 C++
TC 1320 : TwinCAT 3 C++/Matlab
TC 1210 : TwinCAT 3 PLC/C++
TC 1220 : TwinCAT 3 PLC/C++/Matlab
カーネルモード (Kernel Mode)
C/C++使用時の制限事項(参考)
Win32 APIは使用できません
Windows kernel mode APIを直接使用しないでください。代わりにTwinCAT SDKが提供されます
ユーザーモードライブラリ(DLL)は使用できません
動的に確保可能なメモリ容量はルータメモリで制限されます(設定で容量変更可能)
C++ Runtime Library (CRT)には一部のみ対応しています (memcpy, strcatなど)
対応分はC:\TwinCAT\3.1\sdk\Include\RtlR0.hを参照してご確認ください
C++例外には非対応ですが、代替手段が用意されています
https://infosys.beckhoff.com/content/1033/tc3_c/897005195.html
Standard Template Library (STL)には一部のみ対応しています
https://infosys.beckhoff.com/content/1033/tc3_c/1298172427.html
dynamic_castには非対応です
浮動小数点演算は可能ですが、標準SDKが提供する関数ではなく、TwinCAT SDKを使用してください
関数一覧は以下に記載されています:
https://infosys.beckhoff.com/content/1033/tc3_c/110751243.html
例. Math.hのsin(), cos()関数の代わりにTcMath.hをincludeし、sin_(), cos_()を使用してください
※その他、詳細については電子マニュアルや下記URL記載の内容をご確認ください。
https://infosys.beckhoff.com/content/1033/tc3_c/674760331.html
TwinCAT3 C/C++ メモリ管理
独自のメモリ管理機能により、Windowsが提供する非ページプールから実行用メモリを取得します
オブジェクト生成やメモリ確保は、周期タスク実行前に完了する実装を推奨します
(リアルタイム性に影響)