Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JiecLib

目次

概要

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 StudioIEC 61131-10 XML対応)を対象としています。

必要環境

  • Jiecc 5.14以降
    • IEC 61131-3テキストをIEC 61131-10 XMLに変換するコマンドラインの無料ソフトウェアです。
  • Sysmac Studio
    • 同梱のシミュレータでテスト可能です。必要に応じてPLC本体も入手してください。

Sysmac StudioでJiecLib内のライブラリを取り込む方法

string_lib を例として示します。

  1. JiecLibプロジェクトをクローンしてサブモジュールを初期化します。
$ git clone https://github.com/yunos0987/jieclib.git
$ cd jieclib
$ git submodule update --init --recursive

一部のライブラリは JiecUnit に依存しているため、サブモジュールの初期化が必要です。

  1. 次のコマンドを実行します。事前に 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)の先頭にコマンドを記載しています。

  1. 出力された ./src/string_lib/string_lib.xml を Sysmac Studio の IEC 61131-10 インポート機能 [ ツール | IEC 61131-10 XML | インポート ] でインポートします。

string_lib.xmlインポート完了後の画面

string_lib に含まれるPOU群(String_charAtString_lower など)がインポートされます。

JiecLibに含まれるライブラリ

基本的な配列操作ライブラリです。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_decode
    • offset/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

エンコーディング関連ライブラリです。

  • Base64base64.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
  • Hexhex.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)とバイト配列入力版(_bytesoffset/length 指定可)を提供します。

  • CRC32crc32.iec
    • CRC32_string / CRC32_bytes
    • IEC 61131-10 XML生成コマンド: jiecc ./src/hash/crc32.iec -I./src -o ./src/hash/crc32.xml -t omron
  • MD5md5.iec
    • MD5_string / MD5_bytes
    • IEC 61131-10 XML生成コマンド: jiecc ./src/hash/md5.iec -I./src -o ./src/hash/md5.xml -t omron
  • SHA-1sha1.iec
    • SHA1_string / SHA1_bytes
    • IEC 61131-10 XML生成コマンド: jiecc ./src/hash/sha1.iec -I./src -o ./src/hash/sha1.xml -t omron
  • SHA-256sha256.iec
    • SHA256_string / SHA256_bytes
    • IEC 61131-10 XML生成コマンド: jiecc ./src/hash/sha256.iec -I./src -o ./src/hash/sha256.xml -t omron
  • SHA-512sha512.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

数学関数ライブラリです。

関数 説明 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 Twistermersenne_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
  • Xorshift32xorshift32.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

基本的な文字列操作ライブラリです。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開発者向け

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

JiecLibのテスト方法

単体テストに JiecUnit を使用します。テストコードは jieclib/test ディレクトリに含まれます。

  1. 次のコマンドを実行します。事前に 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 が生成されます。

  1. オムロン社製Sysmac Studioの場合の単体テストサンプルの実行方法の手順2以降を実行します。

ライセンス

このプロジェクトはMIT Licenseの下でライセンスされています。詳細はLICENSEファイルを参照してください。

About

IEC 61131-3 ST言語のライブラリです。

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors