方法SCRIPT:ヒントとコツ

これらの Tips & Tricks は、最初の MethodSCRIPT を作成し、スクリプトをデバッグし、エラーを解決し、結果を視覚化するためのガイドです。最後にはサンプルスクリプトがあります。また、MethodSCRIPT のウェビナーの録画を見て、MethodSCRIPT のエキスパートから紹介を受けることもできます。

MethodSCRIPT は最新世代のポテンショスタットが話す言語です。どのオペレーティングシステムやマイクロコントローラからでも、ポテンショスタット(モジュール)と直接通信することができます。サポートされているデバイスは、EmStat4SEmStat4MMultiEmStat4EmStat Pico、 Sensit SmartSensit BT です。

最初のMethodSCRIPTを始める MethodSCRIPTウェビナーを見る
1

PSTrace で最初のスクリプトを編集する

ソフトウェア PSTraceは全てのPalmSens計測器をコントロールします。それでは、MethodSCRIPT をサポートする測定器をコンピュータに接続し、PSTrace を起動してみましょう。

  1. PSTrace で計測器を接続する
  2. テクニックを選択し、パラメータを設定します。例えば LSV は -0.5 V から 0.5 V です。
  3. 下部にある "MethodSCRIPTを表示 "をクリックします。
  4. 設定を編集します、例えばスキャンレートを0.1 V/sから0.2 V/sに倍増します。
  5. スクリプトをクリップボードにコピーします。

結果のコードは次のようになります:

e
var c
var p
set_pgstat_chan 1
set_pgstat_mode 0
set_pgstat_chan 0
set_pgstat_mode 2
set_max_bandwidth 40
set_range_minmax da -500m 500m
set_range ba 590u
set_autoranging ba 59n 590u
set_e -500m
cell_on
meas_loop_lsv p c -500m 500m 10m 100m
pck_start
pck_add p
pck_add c
pck_end
endloop
on_finished:
cell_off

もし、Show MethodSCRIPT ボタンが表示されない場合は、下の画像のように tools -> general settings -> Show MethodSCRIPT editor で有効にしてください。

PSTrace をダウンロード
2

ドラッグ&ドロップでMethodSCRIPTを作成する

直感的なドラッグ&ドロップインターフェースにより、コマンドを選択し、正しい順序で並べ、スクリプトの構造を即座に確認することで、完全なメソッドを構築することができます。この視覚的なワークフローは、メソッド開発をスピードアップし、エラーを削減し、手作業でコードを記述することなく、アイデアから測定までを迅速に行うことができます。

Visual MethodSCRIPT Editor は PSTrace 5.13 以降に搭載されています。

PSTrace をダウンロード
3

メモ帳++を使ってコードを編集する

MethodSCRIPT のコードを変更するにはどのテキストエディタを使っても構いません。メモ帳++ を好むなら、MethodSCRIPT XML ファイルを使用することで正しいシンタックスハイライトを得ることができます。

メモ帳++で.mscrで終わる MethodSCRIPT ファイルのハイライトを表示するには、以下の手順に従ってください:

  1. MethodSCRIPT XML ファイルをダウンロードして解凍してください。
  2. メモ帳++で、言語、ユーザー定義言語、言語の定義、インポートを選択します。
  3. MethodSCRIPT_vx.x.xml ファイルを選択します。
  4. メモ帳++を再起動する

.mscrファイルを開くと、自動的に正しいシンタックスハイライトで読み込まれます。

Notepad++ 用 MethodSCRIPT XML ファイルのダウンロード

 

4

Visual Studio Code を使ってスクリプトを編集する

この MethodSCRIPT プラグインを使うと、MethodSCRIPT ファイルのシンタックスハイライト、インテリセンス、検証、コードフォーマットができます。

Visual Studio CodeのMethodSCRIPTサポートを入手

 

 

5

MethodSCRIPT コマンドを学ぶ

スクリプトは一連の定義済みコマンドで構成されています。各コマンドはコマンド文字列で始まり、その後にあらかじめ定義された数の引数が続きます。引数は ' '(スペース)文字で区切られます。各コマンドは'n'(改行)文字で終了する。ほとんどの例では'n'は省略されている。各行の最大文字数は128文字である。行の最初の空白以外の文字を'#'にすることで、コメントを追加することができる。

デバイスにスクリプトを送信するには、まず "en" を送信します。これでデバイスは MethodSCRIPT モードになります。スクリプトを終了するには、'n' だけを含む行を追加します。以下の例では hello world を送信しています。

e
#This is a comment
send_string "hello world"


このスクリプトへの応答は

en ← Ack of the execute script cmd ‘e’
Thello worldn ← Reply of the “send_string “hello world”” cmd
n ← End of script

全てのコマンドは MethodSCRIPT のドキュメントを参照してください。

MethodSCRIPT ドキュメントをダウンロード
6

オンラインエディタでスクリプトを書き、デバッグする

私たちの オンライン MethodSCRIPT エディタを使えば、インストール不要で、ブラウザで直接 MethodSCRIPT を素早く作成・編集できます。ブラウザから直接スクリプトを実行するか、PSTrace MethodSCRIPT エディタにコピーしてください。これにより、MethodSCRIPT が正しく実行されるか、エラーが含まれているかどうかがフィードバックされます。

オンラインMethodSCRIPTエディター&テスター
7

Tera Term でスクリプトをデバッグする

オンラインエディターの代わりに、TeraTerm を使ってデバッグすることができます。スクリプトをデバッグする際、どの行でエラーが発生したのか即座にフィードバックを得たいでしょう。MethodSCRIPTをサポートするPalmSens機器は、シリアル接続で通信できます。Tera Termはオープンソースでフリーのターミナルエミュレータプログラムです。シリアル通信によく使われます。このシリアル通信を介して、MethodSCRIPT コマンドを送信し、MethodSCRIPT インタープリタの応答を見ることができます。

TeraTermをセットアップする:

  1. TeraTermをダウンロード
  2. 端末で LF: 改行コードを送受信するように設定します。
  3. ローカルエコーを有効にする
  4. Consolasフォント、レギュラースタイル、サイズ10を選択します。
  5. 測定器を接続する
  6. シリアルポートのセットアップとして、デバイスインスタンスIDに FTDIを含むCOMポート(EmStat Picoの場合)、またはデバイスフレンドリー名に EmStat4 (EmStat4 LRまたはHRの場合)を示すCOMポートを選択します。
  7. EmStat Pico ベースのポテンショスタットでは速度として230400bit/s を選択し、EmStat4 ベースのポテンショスタットでは921600bit/s を選択します。
  8. セットアップを保存する

 

 

Tera Term でスクリプトを入力するには、マウスの右ボタンでクリップボードからスクリプトを貼り付けてください。手動でコマンドを入力できるのは短いコマンドだけです。長いコマンドやスクリプトを入力すると、タイムアウトエラー 0009 が発生します。これはhello worldスクリプトをクリップボードからTeraTermに貼り付けた例です。hello world "の後に2行の改行があることに注意してください:

8

エラー処理

MethodSCRIPT の実行を妨げるエラーが発生することがあります。これらのエラーはスクリプトのパース中またはスクリプトの実行中(ランタイム)に発生する可能性があります。

エラーフォーマット

  • XXXX = エラーコード:
  • L = 行番号、1から始まる
  • C = 行の文字番号、1 から始まる (解析中にのみ表示される)
#Error during parsing
!XXXX: Line L, Col Cn
#Error during runtime
!XXXX: Line Ln

コメント行は解析時にのみカウントされる

実行時エラーの報告行数はコメント行をカウントしません。解析エラーの場合、コメント行はカウントされます。

エラーの解決

エラーに遭遇したら、下の表でエラーの説明を調べて下さい。エラーの説明と行番号を組み合わせると、間違ったコマンドを見つけるのに役立ちます。MethodSCRIPT のドキュメントには、各コマンドの使用例が記載されています。

MethodSCRIPT ドキュメントをダウンロード

エラー説明表

エラーコード 商品詳細
0x0001 特定できないエラーが発生しました
0x0002 無効な VarType が使用されました。
0x0003 コマンドが認識されませんでした
0x0004 不明な登録
0x0005 レジスタは読み取り専用です
0x0006 通信モードが無効
0x0007 引数が予期しない値
0x0008 コマンドが最大長を超える
0x0009 コマンドがタイムアウトしました
0x000B この var に必要なメモリを確保できません
0x000C スクリプトをロードしないと実行できない
0x000E 測定値の平均化中にオーバーフローが発生しました。
0x000F 与えられたポテンシャルは有効ではありません
0x0010 変数が "NaN" または "inf" になった
0x0011 入力周波数が無効です
0x0012 入力振幅が無効
0x0014 セルオンでOCP測定ができない
0x0015 CRC無効
0x0016 フラッシュの読み込み/書き込み中にエラーが発生しました
0x0017 指定されたフラッシュアドレスはこのデバイスでは無効です。
0x0018 デバイスの設定が壊れています
0x0019 認証エラー
0x001A キャリブレーション無効
0x001B このコマンドまたはこのコマンドの一部は現在のデバイスではサポートされていません。
0x001C ステップポテンシャルは、このテクニックのために少なくとも1 DAC LSBでなければなりません
0x001D パルス電位は、この技術のために少なくとも1 DAC LSBでなければなりません
0x001E 振幅は少なくとも1 DAC LSBこのテクニックでなければなりません
0x001F このテクニックはライセンスされていません。
0x0020 複数の高速モードや最大レンジモードを有効にすることはできません。
0x0021 指定された PGStat モードはサポートされていません。
0x0022 Poly WE として使用するように設定されたチャンネルが Poly WE として設定されていない
0x0023 コマンドは選択された PGStat モードでは無効です。
0x0024 測定するバーの最大数を超えました
0x0025 指定された PAD モードが不明です
0x0026 ファイル操作中にエラーが発生しました
0x0027 ファイルを開けません。この名前のファイルは既に存在します。
0x0028 変数をゼロで割る
0x0029 GPIO ピンのモードがデバイスに認識されない
0x002A GPIO コンフィギュレーションが選択した操作と互換性がありません
0x002B 受信した行の CRC が正しくない (CRC16-ext)
0x002C 受信した行の ID が期待した値(CRC16-ext)と異なる
0x002D ヘッダ(CRC16-ext)を抽出するには、受信した行が短すぎます。
0x002E 設定が初期化されない
0x002F チャンネルはこのデバイスでは使用できません
0x0030 キャリブレーションプロセスが失敗しました
0x0032 クリティカルセル過負荷、損傷を防ぐために測定を中止します。
0x0033 FLASH ECCエラーが発生しました
0x0034 フラッシュプログラムの失敗
0x0035 フラッシュ消去の失敗
0x0036 フラッシュページ/ブロックがロックされている
0x0037 保護されたメモリへのフラッシュ書き込み操作
0x0038 フラッシュは最後のコマンドの実行に追われています。
0x0039 ブロックが不良とマークされたため、操作に失敗しました
0x003A 指定されたアドレスは無効です
0x003B ファイルシステムをマウントしようとしてエラーが発生しました。
0x003C ファイルシステムメモリをフォーマットしようとしてエラーが発生しました。
0x003D SPI通信中にタイムアウトが発生しました
0x003E どこかでタイムアウトが発生しました
0x003F キャリブレーションレジスタはロックされており、書き込みはできません。
0x0040 メモリモジュールがサポートされていません。
0x0041 フラッシュメモリーフォーマットが認識されない、またはサポートされていません。
0x0042 このレジスタは現在のパーミッションレベルでロックされています。
0x0043 レジスタは書き込み専用
0x0044 コマンドには追加の初期化が必要です
0x0045 このコマンドの設定は無効です
0x0046 マルチプレクサが見つかりません。
0x0047 この操作を行うにはファイルシステムをマウントする必要があります。
0x0048 このデバイスはマルチデバイスではありません。
0x004A MCUレジスタへのアクセスは禁止されており、RAMとペリフェラルのみがアクセス可能です。
0x004B ランタイム(comm)コマンドの引数が短すぎて有効でない。
0x004C ランタイム(comm)コマンド引数のフォーマットが無効です。
0x004E ハイバネートのウェイクアップソースが無効
0x004F Hibernateは少なくとも1つのウェイクアップソースを必要としますが、何も与えられませんでした。
0x0050 ハイバネート用ウェイクピンが入力として設定されていない
0x0051 許可登録に提供されたコードが有効ではありませんでした。
0x0052 通信インターフェース(UART など)でオーバーランエラーが発生しました。
0x0053 このレジスタの引数の長さが正しくありません。
0x0055 変更を要求された GPIO ピンはこの計測器には存在しません。
0x0056 選択した GPIO ピンモードが許可されていません(NVM 設定またはデバイスタイプによって)。
0x0057 オンボードフラッシュモジュールがタイムアウトしました。
0x0058 高速測定中のタイミングエラー(通信が原因の可能性あり)。
0x005A 測定器が要求された測定タイミングを満たすことができません。
0x005B 変数の種類はすでに測定されています。
0x006D COMMコマンドは16進数値を期待したが、それ以外の値を受け取った。
0x006E COMMコマンドは10進数値を期待したが、それ以外の値を受け取った。
0x0071 付属のキーがこのレジスターのロックに合いません。
0x0072 I2Cポートエクスパンダがコマンドを認識しない
0x0073 ファイルシステムモジュール未サポート
0x0074 IPアドレスは(まだ)利用できません。
0x007A 要求された測定用の測定チャンネルが残っていません。
0x007B 8kHzを超えるEIS中の温度測定はサポートされていません。
0x007C 指定されたモードは不明です
0x007D ADXL367がI2Cコマンドを認識しない
0x007E I2C 操作中に予期しないエラーが発生しました。
0x007F I2C動作中にI2Cバスがタイムアウトする(おそらくI2Cターゲットデバイスが原因)。
0x0080 CEが振動している
0x0082 操作にはシステムの警告をクリアする必要があります。
0x0083 このデバイスではファイルシステム操作はサポートされていません。
0x0084 要求された変数型はレンジングをサポートしていません。
0x0085 選択された GPIO ピンはハードウェア同期をサポートしていません。
0x0086 ロールピンを無効にする前にハードウェアセレクトを無効にする必要があります。
0x0087 ハドウェアセレクトを有効にする前にロールピンを設定する必要があります。
0x0088 計測器はこの GPIO ピンをハードウェア(例えばファイルシステムや HW-sync)によって制御されるように予約しています。
0x0089 このGPIOピンはそもそもロックされていないため、ロックを解除することはできません。
0x008A この GPIO ピンは特定の外部メモリとのインターフェイスにのみ使用できます。
0x008B BiPotを無効にする。
0x008C iR補正を無効にする。
0x008D リセットコマンドのキーが間違っています。
0x008E SPI インターフェースはファイルシステムには必要ですが、コンフィギュレーションされていません。
0x008F SPI インターフェースは SPI ピンを 'peri 1' に設定する必要があります。
0x0091 GPIOをマルチプレクサ(Mux8R2やPicoMuxなど)用にロックします。
0x0092 GPIOは外部ストレージ(SDカードやNANDフラッシュなど)用にロックされています。
0x0093 GPIOが外部LED用にロックされている
0x0094 ハードウェア同期のためにGPIOをロックする
0x0095 GPIO は外部 PGStat 信号用にロックされています。
0x0096 GPIOはこの計測器の特別な目的のためにロックされています。
0x0097 ロックを解除した状態でキーを使ってGPIOにアクセスしようとした
0x0098 Peripheral configuration (0x01) レジスタを使用して設定されたコンフィギュレーションが無効です。
0x0099 ファイルシステムファイルが壊れている
0x009A ファイルシステムのフォーマットに失敗しました
0x009B ファイルシステムI/Oエラー
0x009C ファイルシステムには操作を実行するのに十分なメモリがありませんでした。
0x009D ファイルシステムのパスが長すぎて処理できない
0x009E ファイルシステムのパスが無効でした
0x009F ファイルシステムが指定されたファイルを見つけられませんでした
0x00A0 ファイルシステムFMはサポートされていません
0x00A1 ファイルシステムにリストがない
0x00A2 ファイルシステムが初期化されない
0x00A3 ファイルシステムのファイルが開いている。
0x00A4 ファイルシステムのファイルが開いていません
0x00A5 ファイルシステムはこの機能をサポートしていません
0x00A6 ファイルシステムは何かを期待していた。
0x00A7 ファイルシステムがパスを見つけられませんでした
0x00A8 アクセス禁止またはディレクトリがいっぱいのためアクセスが拒否されました
0x00A9 ファイル/ディレクトリオブジェクトが無効です
0x00AA 物理ドライブが書き込み保護されている
0x00AB 論理ドライブ番号が無効です
0x00AC 有効なファイルシステムボリュームがありません
0x00AD フォーマット操作は何らかの問題で中止されました。
0x00AE ファイル共有ポリシーに従って操作が拒否される
0x00AF 作業バッファが割り当てられませんでした
0x00B0 ファイルシステムで一度に開くファイルが多すぎる
0x00B1 ファイルシステムに与えられたパラメータが無効です。
0x00B2 ファイルモードが無効です(readonly, new, append, overwrite のはずです)。
0x00B3 LED マッピングに必要なピンモードはこのピンでは許可されていません。
0x00B4 HW-sync の役割に必要なピンモードはこのピンでは許可されていません。
0x00B5 HW 同期開始マッピングに必要なピンモードはこのピンでは許可されていません。
0x00B6 暗号化ファイルシステムの使用に失敗
0x00B7 ユーザーキーはこのコマンドに対して有効な状態ではありません。
0x00B8 通信プロトコルがこのコマンドに対して有効なロック状態になっていません。
0x4001 スクリプトコマンドは不明です
0x4004 予期しない文字に遭遇しました
0x4005 スクリプトが内部スクリプトメモリに対して大きすぎます。
0x4008 このオプション引数はこのコマンドでは無効です
0x4009 保存されたスクリプトは古いファームウェアバージョン用に生成され、実行できません。
0x400B 測定ループを他の測定ループの中に配置することはできません。
0x400C 現状ではサポートされていないコマンド
0x400D スコープの深さが大きすぎる
0x400E コマンドはスコープの深さに無効な効果があった
0x400F 配列インデックスが範囲外
0x4010 i2c_config コマンドで I2C インターフェースが初期化されない
0x4011 NAck フラグがスクリプトによって処理されていません。
0x4012 予期せぬことが起こった
0x4013 I2Cクロック周波数がハードウェアでサポートされていない
0x4014 非整数のSIバーを16進数またはバイナリ表現から解析できない
0x4016 ウェイクアップソースとしてRTCが選択され、選択された時刻がサポートされていない
0x4017 配列は同じサイズでなければなりません。
0x4018 スクリプトが予期せず終了しました。
0x4019 スクリプトコマンドはマルチチャンネル(複合)デバイスに対してのみ有効です。
0x401A スクリプトコマンドは測定ループ内から呼び出すことはできません。
0x401B pck シーケンスの呼び出しが間違っている
0x401C パケットあたりの変数の最大量を超えました。
0x401D ファイルパスがファイルシステムに対して長すぎます。
0x401E 配列インデックスを格納するメモリが足りない
0x4020 スクリプトコマンドの一つでタイムアウトが発生しました。
0x4021 mux が初期化/設定されていない。
0x4022 測定ループのタイミングが速すぎてマルチプレクサで使用できない
0x4023 スクリプトコマンドは iR 補正のあるデバイスでのみ有効です。
0x4024 抵抗値がオートレンジの範囲全体に対して大きすぎる。
0x4025 抵抗値が電流範囲に対して大きすぎる
0x4026 宣言時に変数が既に存在する
0x4027 このコマンドは cell_on コマンドでセルを有効にする必要があります。
0x4028 このコマンドは cell_off コマンドでセルを無効にする必要があります。
0x4029 このテクニックでは、少なくとも1つのステップを行う必要があります。
0x402A 変数名がメモリに収まらなくなった。
0x402B 変数名が 'a'-'z' で始まっていないか、'a'-'z'、'0'-'9'、'_' 以外を含んでいない。
0x402C 変数名が長すぎて処理できません。
0x402D ファイルモードが無効です。
0x402E ファイルモードはファイルパスのカウンタをサポートしていません。
0x402F 最大カウンタ値のファイルパスは既に存在します。
0x4030 開いているファイルが多すぎます。
0x4031 指定されたマルチデバイスタイプが定義されていません。
0x4032 アクティブな測定ループ内で電位(または電位範囲)を設定できません。
0x4033 アクティブな測定ループ内で電流(または電流範囲)を設定できません。
0x4034 この製品では、使用済みの機能はライセンスされていません。
0x4035 指定されたフィルタタイプが不明、またはサポートされていません。
0x4036 指定されたコマンドは測定ループ内でのみ許可されます。
0x4037 計算がオーバーフローしました
0x4038 配列アクセスが正しく形成されない
0x4039 リテラル引数が正しく形成されていません
0x403A サブ配列の宣言がソース配列の範囲外だった
0x403B 書き込む前にファイルを開く必要がある
0x403C メソッドスクリプトの出力モードが不明です
0x4200 MScript の引数値はこのコマンドでは負にできません。
0x4201 MScript の引数値はこのコマンドに対して正の値ではありません。
0x4202 このコマンドの MScript 引数値は 0 にはできません。
0x4203 このコマンドでは MScript の引数値は負でなければなりません(ゼロでもいけません)。
0x4204 このコマンドでは MScript の引数値は正でなければなりません(ゼロでもいけません)。
0x4205 MScript の引数値がこのコマンドの許容範囲外です。
0x4206 MScript の引数値はこの特定の機器には使用できません。
0x4207 MScript 引数のデータ型 (float/int) はこのコマンドでは無効です。
0x4208 MScript の引数参照が無効でした('a' - 'z' ではありません)。
0x4209 MScript の引数変数の型が無効か、このコマンドでサポートされていません。
0x420A 予期しない、追加の(オプションの)MScript引数が指定されました。
0x420B MScript の引数変数が宣言されていない
0x420C MScript の引数が var 型である。
0x420D MScript の引数がリテラル型です。
0x420E MScript の引数は配列型ですが、このコマンドではサポートされていません。
0x420F MScript 引数配列のサイズが足りない
0x4210 f-文字列は決して閉じない開始ブレースを含んでいます。
0x4211 MScript の引数が配列要素である。
0x7FFF 致命的なエラーが発生しました。
9

PSTrace で結果を可視化する

PSTraceは電流と電圧を可視化することができます。PSTrace が受信するデータの各パッケージは、時間、電圧、電流で構成されています。TeraTerm でスクリプトにエラーがなく、データパッケージを送り返すことを確認したら、MethodSCRIPT を PSTrace エディタにコピーします。

10

SWV スクリプト例

このスクリプトは -0.5 V から 0.5 V の SWV 測定を行います。

e
var c
var p
var f
var g
set_pgstat_chan 0
set_pgstat_mode 2
# Set maximum required bandwidth based on frequency * 4,
# however since SWV measures 2 datapoints, we have to multiply the
# bandwidth by 2 as well
set_max_bandwidth 80
# Set potential window.
# The max expected potential for SWV is EEnd + EAmp * 2 – EStep.
# This measurement would also work without this command since it
# stays within the default potential window of -1.1 V to 1.1V
set_pot_range -500m 690m
# Set current range for a maximum expected current of 2 uA
set_cr 2u
# Disable autoranging
set_autoranging 2u 2u
# Turn cell on for measurement
cell_on
# Perform SWV
meas_loop_swv p c f g -500m 500m 10m 100m 10
   # Send package with set potential, 
   # ”forward current – reverse current”,
   # ”forward current”
   # ”reverse current”
   pck_start
   pck_add p
   pck_add c
   pck_add f
   pck_add g
   pck_end
endloop
# Turn off cell when done or aborted
on_finished:
cell_off

GitHub で他の例を見る