論理軸パラメータは開発環境から簡単にオンライン値の読み書きが可能です。ただパラメータによっては開発環境を開くことなくPLCからアクセスしたい場合もあります。この資料ではPLCによる論理軸のパラメータアクセス方法について説明します。
論理軸パラメータの仕組みを理解する必要があるため、以下の順序で進めます。
1) 構成ファイルの生成 Activate Configuration
2) 既に存在している構成ファイルを元にTwinCATシステムを起動するRestart TwinCAT System in Run Mode
3) 論理軸パラメータのオンライン書き込み、変更する対象
4) オンライン書き込みのエラーケース
5) PLCからのアクセス方法
6) 一時的にオンラインデータを変更する方法
7) 構成ファイルを更新する方法
8) MC_WriteParameterPersistentのエラーケース
9) AxisEncoderOffsetを書き換える場合のエラーケース
CurrentConfig.xmlファイルにはTwinCAT のモーションやリアルタイム、I/O設定などの構成情報が保存されています。
PersistentChangesダイアログ
Downloadボタンを押した際に表示されます、Downloadはメモリに展開されているパラメータを直接書き換えるだけなのでCurrentConfig.xmlファイルは変更されません。依ってActivateConfigurationをすることなく次回TwinCATシステム起動をした場合は値が反映されない状況が発生します。
状況)
TwinCATが起動している状態にて、論理軸のパラメータを変更しDownloadをクリック。パラメータの調査を終えた後にTwinCATプロジェクトファイルを保存。
結果)
次回起動(Restart TwinCATSystemin Run Mode)でOnlineValueとOfflineVauleが異なる状況が発生。
要因)
プロジェクトファイルを保存後にActivateConfigurationを実行してCurrentConfig.xmlファイルを再生成されず、次回起動で古いパラメータがパラメータとして展開されたため。
論理軸のパラメータへPLCからアクセスをライブラリTc2_MC2で提供しています。
ファンクションブロックはBOOL系パラメータとそれ以外でアクセスの方法が異なります。パラメータは以下の構造体で指定します。
論理軸パラメータをオンライン書き込み、XAEでのパラメータDownloadと同じ処理を実行するためのファンクションブロックです。
CurrentConfig.xmlファイルは変更されないため一時的にオンラインデータを変更する方法となります。
このファンクションブロックのValueはLREALなので、ソフトリミット有効・無効などのパラメータはBOOL型用のMC_WriteBoolParameterを使います。
読み込みではReadModeパラメータが用意されています。これは読み込みを毎サイクル、もしくは1回のみの読み込みを指定できるパラメータです。
論理軸パラメータをオンライン書き込みするためのファンクションブロックです。
MC_WriteParameterとの違いは、このファンクションブロックを実行するとCurrentConfig.xmlファイルが更新されます。XAEでは同様な処理を実行するインタフェイスは用意されていません。
この更新はActivateCofigurationを実行するのではなく、CurrentConfig.xmlへ専用のデータ要素を追加します。次回起動ではTwinCATシステムがこの要素を参照して変更されたオンラインデータをロードする仕様となっています。
PLCのPersistent変数とは保持データの対象など別の仕組みとなっています。
TwinCATシステムの再起動を伴わずプロジェクトファイルの更新が可能となります。
状況)
エンコーダオフセット値をPLCから変更、データはPLCにてPersistent変数として保持。
PLCのインスタンスリンクなど構成を変更した為にActivateCofigurationを実行。
結果)
OffineValueが適用され、Persistentで保持していたデータが上書きされる。100 → 0へ
運用例)
ActivateCofigurationは何かしらの変更で必ず実行する必要があるのでパラメータも必ず上書きされるものとし、PLCの初期化処理としてPersistent変数で保持しいてるデータをTwinCATシステムが初回起動した際にMC_WriteParameterPersistentを使って書き込むシーケンスを実行する、等。
状況)
エンコーダオフセット値をPLCから変更したがファンクションブロックでエラー:16#704が発生。
結果)
OnlineValueが変更されない。
要因)
当該論理軸がサーボONしている場合、エンコーダオフセット値の変更は出来ない仕様となっています。書き換え時にはサーボOFF状態であることを確認して下さい。