JiecLibは、IEC 61131-3 ST言語のライブラリです。
テスト対象POUのソースコード、および単体テストコードがIEC 61131-3 ST言語を拡張したテキスト形式で完結しているため、すべてをGitで構成管理できます。使用するIDEによっては生成AIを活用したIEC 61131-3プログラミングも可能です。
テキスト形式のコードをPLCメーカーのツールで取り込み可能な形式に変換するために、IEC 61131-3 ⇄ IEC 61131-10変換ソフトウェア Jieccを使用します。
現在、JiecLibはオムロン社製のSysmac Studio(IEC 61131-10 XML対応)を対象としています。
- Jiecc 5.14以降
- IEC 61131-3テキストをIEC 61131-10 XMLに変換するコマンドラインの無料ソフトウェアです。
- Sysmac Studio
- 同梱のシミュレータでテスト可能です。必要に応じてPLC本体も入手してください。
string_lib を例として示します。
- JiecLibプロジェクトをクローンしてサブモジュールを初期化します。
$ git clone https://github.com/yunos0987/jieclib.git
$ cd jieclib
$ git submodule update --init --recursive
一部のライブラリは JiecUnit に依存しているため、サブモジュールの初期化が必要です。
- 次のコマンドを実行します。事前に jiecc.exe を jieclib ディレクトリ直下におくか、jiecc があるディレクトリへパスを通しておいてください。
$ jiecc ./src/string_lib/string_lib.iec -I./src -o ./src/string_lib/string_lib.xml -t omron
./src/string_lib/string_lib.xml が出力されます。
XMLを生成するコマンドはライブラリごとに異なります。各ライブラリ(*.iec)の先頭にコマンドを記載しています。
- 出力された
./src/string_lib/string_lib.xmlを Sysmac Studio の IEC 61131-10 インポート機能 [ ツール | IEC 61131-10 XML | インポート ] でインポートします。
string_lib に含まれるPOU群(String_charAt、String_lower など)がインポートされます。
基本的な配列操作ライブラリです。lreal / dint の型別テンプレート対応。
IEC 61131-10 XML生成コマンド: jiecc ./src/array/array.iec -I./src -o ./src/array/array.xml -t omron
- 配列判定(正規配列)(array.iec)
Array_isRegular_lreal/Array_isRegular_dint: 1次元配列の正規性判定Array_isRegular2d_x_lreal/Array_isRegular2d_x_dint: 2次元配列の次元ごとの正規性判定Array_isRegular2d_lreal/Array_isRegular2d_dint: 2次元配列の正規性判定
- コピー(copy.iec)
Array_copy_lreal/Array_copy_dint: 全要素コピーArray_copy_x_lreal/Array_copy_x_dint: 範囲指定コピー
- 埋め込み(fill.iec)
Array_fill_lreal/Array_fill_dint: 全要素を指定値で埋める
- 反転(reverse.iec)
Array_reverse_lreal/Array_reverse_dint: 配列をin-placeで逆順にする
- 回転(rotate.iec)
Array_rotate_lreal/Array_rotate_dint: 配列をin-placeで回転する(正のshiftで左回転、負で右回転)
- インデックス検索・存在判定(search.iec)
Array_index_of_lreal/Array_index_of_dint: 値の最初の出現インデックスを返す(見つからない場合は -1)Array_last_index_of_lreal/Array_last_index_of_dint: 値の最後の出現インデックスを返す(見つからない場合は -1)Array_contains_lreal/Array_contains_dint: 値が含まれるか判定する
- 集計(aggregate.iec)
Array_min_lreal/Array_min_dint: 最小値を返すArray_max_lreal/Array_max_dint: 最大値を返すArray_min_index_lreal/Array_min_index_dint: 最小値の配列インデックスを返すArray_max_index_lreal/Array_max_index_dint: 最大値の配列インデックスを返す
- 等価判定(equivalence.iec)
Array_equals_lreal/Array_equals_dint: 2つの配列が等しいか判定する
- ソート(sort.iec)
Array_bubblesort_lreal/Array_bubblesort_dint: バブルソートArray_mergesort_lreal/Array_mergesort_dint: マージソートArray_quicksort_lreal/Array_quicksort_dint: クイックソート
32ビット整数(DWORD)をビット集合として扱うライブラリです。個々のビットの設定・取得からビットフィールドの抽出・挿入まで対応します。
IEC 61131-10 XML生成コマンド: jiecc ./src/bitset/bitset.iec -I./src -o ./src/bitset/bitset.xml -t omron
| 関数(bitset.iec) | 説明 |
|---|---|
bitset_set |
指定ビットを 1 にする |
bitset_clear |
指定ビットを 0 にする |
bitset_test |
指定ビットが 1 か判定する |
bitset_toggle |
指定ビットを反転する |
bitset_popcount |
セットされているビット数を返す |
bitset_ffs |
最下位の 1-bit の位置を返す(ない場合は -1) |
bitset_ffc |
最下位の 0-bit の位置を返す(ない場合は -1) |
bitset_extract |
ビットフィールド [pos, pos+width-1] を右詰めで抽出する |
bitset_insert |
右詰め値をビットフィールド [pos, pos+width-1] に埋め込む |
データ圧縮ライブラリです。入力配列を dat、出力配列を dst という名前の var_in_out 引数で渡し、戻り値は dst に書き込んだバイト数(dint 型)です。
- RLE(PackBits ランレングス符号化)(rle.iec)
rle_encode/rle_decodeoffset/lengthで入力範囲、dst_offsetで出力先オフセットを指定可能- IEC 61131-10 XML生成コマンド:
jiecc ./src/compress/rle.iec -I./src -o ./src/compress/rle.xml -t omron
- Huffman(動的ハフマン符号化)(huffman.iec)
huffman_encode/huffman_decode- 出力形式: 先頭4バイト(元データ長、big-endian)+256バイト(符号長テーブル)+ビットストリーム(MSBファースト)
offset/lengthで入力範囲を指定可能- IEC 61131-10 XML生成コマンド:
jiecc ./src/compress/huffman.iec -I./src -o ./src/compress/huffman.xml -t omron
テンプレートベースのコンテナライブラリです(arraylist / linkedlist / dequeue / hashmap / orderedmap / linkedhashmap / hashset / orderedset / linkedhashset / stack / ringbuffer)。
各コンテナは #include 時にマクロで型・容量・比較関数・ハッシュ関数などを指定してインスタンス生成します。
arraylist(arraylist_template)
固定長配列ベースの可変長リストです。
| 関数 | 説明 |
|---|---|
init |
初期化 |
len |
要素数取得 |
empty |
空判定 |
clear |
全要素削除 |
append |
末尾追加 |
insert |
指定位置挿入 |
set |
指定位置更新 |
remove |
指定位置削除 |
get |
指定位置取得 |
contains |
要素存在判定 |
index |
要素位置検索 |
values |
全要素取得 |
copy |
コピー |
equals |
等価判定 |
hash |
ハッシュ値計算(ArrayListElementHashFunction 指定時) |
テスト用XML生成コマンド: jiecc ./test/container/arraylist/test_arraylist.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/arraylist/test_arraylist.xml -t omron
linkedlist(linkedlist_template)
doubly linked listベースの可変長リストです。
| 関数 | 説明 |
|---|---|
init |
初期化 |
len |
要素数取得 |
empty |
空判定 |
clear |
全要素削除 |
append |
末尾追加 |
appendleft |
先頭追加 |
insert |
指定位置挿入 |
pop |
末尾削除・取得 |
popleft |
先頭削除・取得 |
remove |
指定位置削除 |
get |
指定位置取得 |
set |
指定位置更新 |
contains |
要素存在判定 |
index |
要素位置検索 |
values |
全要素取得 |
copy |
コピー |
equals |
等価判定 |
hash |
ハッシュ値計算(LinkedListElementHashFunction 指定時) |
テスト用XML生成コマンド: jiecc ./test/container/linkedlist/test_linkedlist.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/linkedlist/test_linkedlist.xml -t omron
dequeue(dequeue_template)
固定長リングバッファベースの両端キューです。DequeueCapacity(任意)で容量を指定します。
| 関数 | 説明 |
|---|---|
init |
初期化 |
append |
末尾追加 |
appendleft |
先頭追加 |
pop |
末尾削除・取得 |
popleft |
先頭削除・取得 |
first |
先頭要素参照 |
last |
末尾要素参照 |
contains |
要素存在判定 |
elements |
全要素取得 |
len |
要素数取得 |
clear |
全要素削除 |
empty |
空判定 |
equals |
等価判定 |
hash |
ハッシュ値計算(DequeueItemHashFunction 指定時) |
copy |
コピー |
テスト用XML生成コマンド: jiecc ./test/container/dequeue/test_dequeue.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/dequeue/test_dequeue.xml -t omron
hashmap(hashmap_template)
Robin Hood hashingベースの連想配列です。
| 関数 | 説明 |
|---|---|
init |
初期化 |
upsert |
挿入または更新 |
lookup |
キー検索・値取得 |
delete |
キー削除 |
contains |
キー存在判定 |
len |
要素数取得 |
keys |
全キー取得 |
values |
全値取得 |
items |
全キー・値ペア取得 |
equals |
等価判定 |
hash |
ハッシュ値計算(HashMapValueHashFunction 指定時) |
empty |
空判定 |
clear |
全要素削除 |
copy |
コピー |
生成例(stringキー / dint値):
{#define HashMapName mymap}
{#define HashMapCapacity 256}
{#define HashMapKeyType string[128]}
{#define HashMapKeyEqualsFunction String_equals}
{#define HashMapKeyHashFunction String_hash}
{#define HashMapValueType dint}
{#include <container/hashmap/hashmap_template.iec>}
テスト用XML生成コマンド: jiecc ./test/container/hashmap/test_hashmap.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/hashmap/test_hashmap.xml -t omron
orderedmap(orderedmap_template)
Robin Hood HashMap + 挿入順配列で順序を維持する連想配列です。
| 関数 | 説明 |
|---|---|
init |
初期化 |
upsert |
挿入または更新 |
lookup |
キー検索・値取得 |
delete |
キー削除 |
contains |
キー存在判定 |
len |
要素数取得 |
keys |
全キー取得(挿入順) |
values |
全値取得(挿入順) |
items |
全キー・値ペア取得(挿入順) |
equals |
等価判定 |
hash |
ハッシュ値計算(OrderedMapValueHashFunction 指定時) |
empty |
空判定 |
clear |
全要素削除 |
copy |
コピー |
テスト用XML生成コマンド: jiecc ./test/container/orderedmap/test_orderedmap.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/orderedmap/test_orderedmap.xml -t omron
linkedhashmap(linkedhashmap_template)
Robin Hood HashMap + 双方向リンクで順序管理する連想配列です。LinkedHashMapAccessOrder true を指定するとアクセス順(LRU)モードになります。
| 関数 | 説明 |
|---|---|
init |
初期化 |
upsert |
挿入または更新 |
lookup |
キー検索・値取得(アクセス順モード時は順序更新) |
delete |
キー削除 |
contains |
キー存在判定 |
len |
要素数取得 |
keys |
全キー取得(挿入順/アクセス順) |
values |
全値取得(挿入順/アクセス順) |
items |
全キー・値ペア取得(挿入順/アクセス順) |
equals |
等価判定 |
hash |
ハッシュ値計算(LinkedHashMapValueHashFunction 指定時) |
empty |
空判定 |
clear |
全要素削除 |
copy |
コピー |
テスト用XML生成コマンド: jiecc ./test/container/linkedhashmap/test_linkedhashmap.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/linkedhashmap/test_linkedhashmap.xml -t omron
hashset(hashset_template)
HashMapベースの集合です。
| 関数 | 説明 |
|---|---|
init |
初期化 |
add |
要素追加 |
add_all |
複数要素追加 |
remove |
要素削除 |
remove_all |
複数要素削除 |
contains |
要素存在判定 |
len |
要素数取得 |
elements |
全要素取得 |
equals |
等価判定 |
hash |
ハッシュ値計算 |
empty |
空判定 |
clear |
全要素削除 |
copy |
コピー |
生成例(dint要素):
{#define HashSetName myset}
{#define HashSetElementType dint}
{#define HashSetElementEqualsFunction Dint_equals}
{#define HashSetElementHashFunction Dint_hash}
{#include <container/hashset/hashset_template.iec>}
テスト用XML生成コマンド: jiecc ./test/container/hashset/test_hashset.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/hashset/test_hashset.xml -t omron
orderedset(orderedset_template)
OrderedMapベースの挿入順を維持する集合です。
| 関数 | 説明 |
|---|---|
init |
初期化 |
add |
要素追加 |
add_all |
複数要素追加 |
remove |
要素削除 |
remove_all |
複数要素削除 |
contains |
要素存在判定 |
len |
要素数取得 |
elements |
全要素取得(挿入順) |
equals |
等価判定(挿入順考慮) |
hash |
ハッシュ値計算(挿入順考慮) |
empty |
空判定 |
clear |
全要素削除 |
copy |
コピー |
テスト用XML生成コマンド: jiecc ./test/container/orderedset/test_orderedset.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/orderedset/test_orderedset.xml -t omron
linkedhashset(linkedhashset_template)
LinkedHashMapベースの挿入順を維持する集合です。LinkedHashSetAccessOrder true を指定するとアクセス順(LRU)モードになります。
| 関数 | 説明 |
|---|---|
init |
初期化 |
add |
要素追加(アクセス順モード時は既存要素を末尾へ移動) |
add_all |
複数要素追加 |
remove |
要素削除 |
remove_all |
複数要素削除 |
contains |
要素存在判定 |
len |
要素数取得 |
elements |
全要素取得(挿入順/アクセス順) |
equals |
等価判定(順序考慮) |
hash |
ハッシュ値計算(順序考慮) |
empty |
空判定 |
clear |
全要素削除 |
copy |
コピー |
テスト用XML生成コマンド: jiecc ./test/container/linkedhashset/test_linkedhashset.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/linkedhashset/test_linkedhashset.xml -t omron
stack(stack_template)
固定長配列ベースのLIFOスタックです。
| 関数 | 説明 |
|---|---|
init |
初期化 |
push |
要素をスタックトップへ追加 |
pop |
スタックトップの要素を取り出して削除 |
peek |
スタックトップの要素を参照(削除しない) |
len |
要素数取得 |
empty |
空判定 |
clear |
全要素削除 |
equals |
等価判定(底から頂の順) |
hash |
ハッシュ値計算(StackElementHashFunction 指定時) |
copy |
コピー |
生成例(dint要素):
{#define StackName dint}
{#define StackCapacity 64}
{#define StackElementType dint}
{#define StackElementEqualsFunction Dint_equals}
{#define StackElementHashFunction Dint_hash}
{#include <container/stack/stack_template.iec>}
テスト用XML生成コマンド: jiecc ./test/container/stack/test_stack.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/stack/test_stack.xml -t omron
ringbuffer(ringbuffer_template)
FIFO形式のリングバッファです。overwrite=true で初期化すると、バッファが満杯の場合に最も古いデータを上書きします(最新ログの記録に適しています)。
| 関数 | 説明 |
|---|---|
init |
初期化(容量と上書きモード指定) |
enqueue |
要素追加 |
dequeue |
要素取り出し |
テスト用XML生成コマンド: jiecc ./test/container/ringbuffer/test_ringbuffer.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/container/ringbuffer/test_ringbuffer.xml -t omron
エンコーディング関連ライブラリです。
- Base64(base64.iec)
base64encode/base64decode- IEC 61131-10 XML生成コマンド:
jiecc ./src/encoding/base64.iec -I./src -o ./src/encoding/base64.xml -t omron
- Base64URL(RFC 4648 §5、URL-safe・パディングなし)(base64url.iec)
base64url_encode/base64url_decode- JWT・OAuth2 などの Web API で使われる
-/_ベースの Base64 亜種 - IEC 61131-10 XML生成コマンド:
jiecc ./src/encoding/base64url.iec -I./src -o ./src/encoding/base64url.xml -t omron
- Percent(URLエンコード)(percent.iec)
percentencode/percentdecode- IEC 61131-10 XML生成コマンド:
jiecc ./src/encoding/percent.iec -I./src -o ./src/encoding/percent.xml -t omron
- Hex(hex.iec)
hexencode/hexdecode- IEC 61131-10 XML生成コマンド:
jiecc ./src/encoding/hex.iec -I./src -o ./src/encoding/hex.xml -t omron
- JSON文字列エスケープ(RFC 8259)(json_string.iec)
json_escape/json_unescape- REST API へ JSON ペイロードを送信する際の文字列値のエスケープ/アンエスケープ
- IEC 61131-10 XML生成コマンド:
jiecc ./src/encoding/json_string.iec -I./src -o ./src/encoding/json_string.xml -t omron
- BCD(Packed BCD)(bcd.iec)
bcd_encode/bcd_decode- HMI・計量器・Modbus 機器など産業機器との通信で使われる Packed BCD 形式
- IEC 61131-10 XML生成コマンド:
jiecc ./src/encoding/bcd.iec -I./src -o ./src/encoding/bcd.xml -t omron
ハッシュ関連ライブラリです。各関数は文字列入力版(_string)とバイト配列入力版(_bytes、offset/length 指定可)を提供します。
- CRC32(crc32.iec)
CRC32_string/CRC32_bytes- IEC 61131-10 XML生成コマンド:
jiecc ./src/hash/crc32.iec -I./src -o ./src/hash/crc32.xml -t omron
- MD5(md5.iec)
MD5_string/MD5_bytes- IEC 61131-10 XML生成コマンド:
jiecc ./src/hash/md5.iec -I./src -o ./src/hash/md5.xml -t omron
- SHA-1(sha1.iec)
SHA1_string/SHA1_bytes- IEC 61131-10 XML生成コマンド:
jiecc ./src/hash/sha1.iec -I./src -o ./src/hash/sha1.xml -t omron
- SHA-256(sha256.iec)
SHA256_string/SHA256_bytes- IEC 61131-10 XML生成コマンド:
jiecc ./src/hash/sha256.iec -I./src -o ./src/hash/sha256.xml -t omron
- SHA-512(sha512.iec)
SHA512_string/SHA512_bytes- IEC 61131-10 XML生成コマンド:
jiecc ./src/hash/sha512.iec -I./src -o ./src/hash/sha512.xml -t omron
行列中心の線形代数ライブラリです。
IEC 61131-10 XML生成コマンド: jiecc ./src/linalg/linalg.iec -I./src -o ./src/linalg/linalg.xml -t omron
- 行列演算
- Matrix_add / Matrix_sub / Matrix_scale: 加減算・スカラー倍
- Matrix_multiply: 行列乗算
- Matrix_transpose: 転置
- Matrix_vector_multiply: 行列とベクトルの乗算
- Matrix_inverse: 逆行列
- Matrix_determinant / Matrix_trace / Matrix_rank: 行列式・トレース・ランク
- Matrix_norm_frobenius / Matrix_norm_spectral / Matrix_norm_l1 / Matrix_norm_linf: 行列ノルム
- 分解
- Matrix_lu_decompose: LU分解
- Matrix_qr_decompose: QR分解
- Matrix_cholesky_decompose: コレスキー分解
- Matrix_svd_decompose: 特異値分解(SVD)
- 固有値問題
- Matrix_eigenvalue_compute: 固有値計算
- Matrix_eigenvector_compute: 固有ベクトル計算
- 連立方程式
- Matrix_solve_gaussian: ガウス消去法
- Matrix_solve_iterative: 反復法
- Matrix_solve_least_squares: 最小二乗法
- 座標変換
数学関数ライブラリです。
| 関数 | 説明 | XML生成コマンド |
|---|---|---|
| Math_floor | 床関数(floor) | jiecc ./src/math/floor.iec -I./src -o ./src/math/floor.xml -t omron |
| Math_atan2 | 2引数アークタンジェント | jiecc ./src/math/atan2.iec -I./src -o ./src/math/atan2.xml -t omron |
乱数生成ライブラリです。FA用途に必要なアルゴリズムと統計分布を提供します。
- Mersenne Twister(mersenne_twister.iec)
- 高速かつ超長周期(2^19937-1)の疑似乱数生成アルゴリズム。Python言語のrandomモジュールでも採用されています。
- IEC 61131-10 XML生成コマンド:
jiecc ./src/random/mersenne_twister.iec -I./src -o ./src/random/mersenne_twister.xml -t omron
- Xorshift32(xorshift32.iec)
- 軽量で高速な疑似乱数生成アルゴリズム。
- IEC 61131-10 XML生成コマンド:
jiecc ./src/random/xorshift32.iec -I./src -o ./src/random/xorshift32.xml -t omron
- LCG(線形合同法)(lcg.iec)
- 資源制約のある組込みPLCに適した超軽量決定論的乱数生成アルゴリズム。
- 式:
state := 1664525 * state + 1013904223(Numerical Recipes標準パラメータ) - IEC 61131-10 XML生成コマンド:
jiecc ./src/random/lcg.iec -I./src -o ./src/random/lcg.xml -t omron
- LFSR32(Galois 線形帰還シフトレジスタ)(lfsr32.iec)
- PRBSテストパターン生成・基板試験(ICT/ATE)・シリアル通信スクランブル・BISTに適した32ビットGalois LFSR。
- 多項式
0xB4BCD35C(デフォルト)で周期 2^32 − 1 の最大長系列を生成。 - IEC 61131-10 XML生成コマンド:
jiecc ./src/random/lfsr32.iec -I./src -o ./src/random/lfsr32.xml -t omron
API 対応表(○: あり、-: なし、※: Keyence除く)
| 関数 | 戻り値 | MersenneTwister | Xorshift32 | LCG | LFSR32 |
|---|---|---|---|---|---|
nextBool() |
bool | ○ | ○ | ○ | ○ |
nextByte() |
byte | - | - | - | ○ |
nextUint32() |
udint | ○ | ○ | ○ | ○ |
nextUint64() |
ulint | ○※ | ○※ | - | - |
nextFloat() |
real | ○ | ○ | ○ | - |
nextDouble() |
lreal | ○ | ○ | ○ | - |
nextIntInRange(min_val, max_val) |
dint | ○ | ○ | ○ | ○ |
nextRealInRange(min_val, max_val) |
lreal | ○ | ○ | ○ | - |
nextBernoulli(prob) |
bool | ○ | ○ | ○ | - |
nextGaussian(mean, sigma) |
lreal | ○ | ○ | - | - |
nextExponential(lambda) |
lreal | ○ | ○ | - | - |
nextPoisson(lambda) |
dint | ○ | ○ | - | - |
統計分布関数(Mersenne Twister・Xorshift32)
| 関数 | 用途 | 実装 |
|---|---|---|
nextGaussian(mean, sigma) |
SPC・工程変動シミュレーション | Box-Muller変換 |
nextExponential(lambda) |
故障間隔(MTBF)シミュレーション | 逆CDF: -LN(U)/lambda |
nextPoisson(lambda) |
不良数・イベント到着モデル | Knuthのアルゴリズム |
統計ライブラリです。
IEC 61131-10 XML生成コマンド: jiecc ./src/stats/stats.iec -I./src -o ./src/stats/stats.xml -t omron
- 基本統計(stats.iec)
sampleSize: サンプルサイズsum/mean/median: 基本集計variance/sampleVariance/standardDeviation/standardError: 分散・標準偏差・標準誤差skewness/kurtosis: 形状統計量geometricMean/harmonicMean/coefficientOfVariation: 各種平均・変動係数
- 記述統計(descriptive/)
- arithmetic_mean: 算術平均
- mean / median / mode: 平均・中央値・最頻値
- variance / stddev: 分散・標準偏差
- skewness / kurtosis: 歪度・尖度
- correlation / covariance: 相関係数・共分散
- quantiles: 分位数
- 確率分布(distributions/)
- 連続分布: normal / student_t / chi_square / exponential / uniform
- 離散分布: binomial / poisson
- 特殊関数:
Stats_erf/Stats_erfc/Stats_gamma/Stats_lgamma/Stats_gammainc/Stats_gammaincc/Stats_beta/Stats_beta_incomplete(special_functions.iec)
- 推論(inference/)
- t_tests: t検定
- chi_square_tests: カイ二乗検定
- normality_tests: 正規性検定
- nonparametric_tests: ノンパラメトリック検定
- confidence_intervals: 信頼区間推定
- effect_size: 効果量
- 回帰・モーメント・数列
- linear_regression / correlation_tests: 線形回帰・相関検定
- raw_moments / central_moments / standardized_moments: モーメント
- sort_select / rank / quantile / accumulate: ソート・順位・分位点・累積
基本的な文字列操作ライブラリです。JavaScriptやPythonライクなAPIを提供します。
IEC 61131-10 XML生成コマンド: jiecc ./src/string_lib/string_lib.iec -I./src -o ./src/string_lib/string_lib.xml -t omron
IEC 61131-3では文字のインデックスが1始まりですが、本ライブラリは0始まりに統一しています。例:
String_indexOf('abcde', 'cd')→2。ASCII範囲外の文字の操作には制限があります。
- インデックス・長さ・取得(string_lib.iec)
String_length: 文字列長を取得String_at/String_charAt: 指定位置の文字を取得String_empty: 空文字判定String_asciiCharCodeAt: 指定位置のASCIIコード取得String_fromAsciiCharCode1: ASCIIコードから文字生成
- 大文字小文字・比較・ハッシュ
String_lower/String_upper: 大文字小文字変換String_equals/String_equalsAsciiIgnoreCase: 等価比較String_hash/String_hashAsciiIgnoreCase: ハッシュ値生成
- 検索・判定
String_startswith/String_endswith: 前方/後方一致判定String_indexOf/String_lastIndexOf: 位置検索String_includes: 部分文字列を含むか判定
- 編集・整形
String_remove: 部分削除String_reverse: 逆順化String_substring: 部分文字列抽出String_trim/String_ltrim/String_rtrim: 空白除去String_repeat: 文字列の繰り返しString_padStart/String_padEnd: 桁埋め
- 分割・結合・置換
String_split: 区切り文字で分割String_join: 文字列配列を結合String_substitute: 文字列置換
ベクトル演算ライブラリです。
IEC 61131-10 XML生成コマンド: jiecc ./src/vector/vector.iec -I./src -o ./src/vector/vector.xml -t omron
- 生成・基本演算(constructors.iec / arithmetic.iec)
Vector_zeros/Vector_ones/Vector_from_iterable: 生成Vector_add/Vector_sub/Vector_scale: 加減算・スカラー倍Vector_dot: 内積Vector_negate/Vector_elementwise_mul/Vector_elementwise_div: 要素演算Vector_linear_combination/Vector_equal: 線形結合・比較
- 外積・幾何(dot.iec)
Vector_cross_product/Vector_cross_product_magnitude/Vector_cross_product_unit: 外積Vector_scalar_triple_product/Vector_vector_triple_product: 三重積Vector_angle_from_cross_product/Vector_is_parallel/Vector_is_orthogonal: 角度・平行/直交判定
- ノルム・距離(norms.iec)
Vector_norm_l1/Vector_norm_l2/Vector_norm_linf/Vector_norm_lp: ノルムVector_normalize_l2: 正規化Vector_distance_l1/Vector_distance_l2/Vector_distance_linf: 距離Vector_is_unit: 単位ベクトル判定
- ユーティリティ(utils.iec)
Vector_utils_is_regular/Vector_utils_is_zero/Vector_utils_normalize: 補助関数
JiecLibの一部のライブラリは JiecUnit に依存しています。外部依存の管理に Git submodule を使用します。
$ git clone https://github.com/yunos0987/jieclib.git
$ cd jieclib
$ git submodule update --init --recursive
サブモジュールをupdateするには:
$ cd jieclib
$ git submodule update --remote
単体テストに JiecUnit を使用します。テストコードは jieclib/test ディレクトリに含まれます。
- 次のコマンドを実行します。事前に jiecc.exe を jieclib ディレクトリ直下におくか、jiecc があるディレクトリへパスを通しておいてください。
$ cd jieclib
$ jiecc ./test/string_lib/test_string_lib.iec -I./src -I./vendor/jiecunit -D_TEST_ -o ./test/string_lib/test_string_lib.xml -t omron
./test/string_lib/test_string_lib.xml が生成されます。
- オムロン社製Sysmac Studioの場合の単体テストサンプルの実行方法の手順2以降を実行します。
このプロジェクトはMIT Licenseの下でライセンスされています。詳細はLICENSEファイルを参照してください。
