XScript マニュアル · Chapter 50
SYS — システムグローバルオブジェクト
SYS は時間・ファイル・HTTP・モジュール実行など システムレベルのユーティリティ を
まとめたグローバルオブジェクトです。プロジェクト全体で最も頻繁に使用され、スクリプトから
運用情報と OS リソースを統一された方法でアクセスできるようにします。
時間 · ティック
| プロパティ / メソッド | 戻り値 | 説明 |
|---|---|---|
SYS.TickCount | int | システム起動以降の経過 ms |
SYS.GetTickCount() | int | 同上(関数形式) |
SYS.GetElasped(int startTick) | int | TickCount - startTick |
SYS.SecondCount | int | 秒単位カウンター |
SYS.Year / SYS.Month / SYS.Day / SYS.Hour | int | 現在の日付 · 時刻 |
SYS.DateString | string | YYYYMMDD |
SYS.TimeString | string | HHMMSS |
SYS.DateTimeString | string | YYYYMMDD_HHMMSS |
SYS.DateTimeFilename | string | ファイル名用の安全な形式 |
SYS.DateTimeMsecString | string | ミリ秒を含む |
SYS.CurrentDateTimeInISO8601 | string | ISO 8601 |
SYS.GetDateTimeStringFormat(string format) | string | C# フォーマット文字列を適用 |
xscript
int start = SYS.TickCount;
DoSomething();
int elapsed = SYS.GetElasped(start);
Log($"Elapsed: {elapsed} ms");ファイル · パス
| メソッド | 説明 |
|---|---|
bool ExistsFile(string path) | ファイルの存在 |
string ReadAllText(string path) | 全体読み込み |
bool WriteAllText(string path, string data) | 全体書き込み |
array ReadAllLines(string path) | 行配列で読み込み |
bool WriteAllLines(string path, array lines) | 行配列で書き込み |
bool AppendLine(string path, string data) | 行追加 |
bool CreateDirectory(string path) | ディレクトリ作成 |
bool DeleteFile(string path) | 削除 |
bool CopyFile(string src, string dest, bool overwrite) | コピー |
string Combine(string path1, string path2) | パス結合 |
string GetFileName(string path) | ファイル名のみ |
string GetFileNameWithoutExtension(string path) | 拡張子を除く |
string GetValidFileName(string name) | ファイル名に使えない文字を置換 |
string ProjectBaseDirectory | プロジェクトルート |
string DownloadsFolderPath | ダウンロードフォルダ |
xscript
string file = SYS.Combine(SYS.ProjectBaseDirectory, "JSON\\cube_machine.json");
if (SYS.ExistsFile(file) == false)
{
LogError($"Not found: {file}");
return false;
}
string text = SYS.ReadAllText(file);HTTP
| メソッド | 説明 |
|---|---|
string SendHttpGet(string url) / SendHttpGet(string url, string token) | GET |
string SendHttpPost(string url, string data) / SendHttpPost(string url, string data, string token) | POST |
string SendHttpDelete(string url, string token) | DELETE |
string SendHttpPatch(string url, string data, string token) | PATCH |
SYS.HTTP_ERROR_STR | エラー返却時の比較値 |
SYS.LastHttpError | 直近のエラーメッセージ |
xscript
string url = SS.MachineApiServer + "/machine-status";
string result = SYS.SendHttpPost(url, data, SS.HttpToken);
if (result == SYS.HTTP_ERROR_STR)
{
LogError($"ERROR: {SYS.LastHttpError}");
return false;
}パラメータ · モジュール実行
| メソッド | 説明 |
|---|---|
bool SaveSetupParam(void) | セットアップパラメータ保存 |
bool LoadJobFileParam(void) | ジョブファイル読み込み |
bool GetParamValue(string name, ref string value) | パラメータ照会 |
bool SetModuleVar(string name, value) / bool GetModuleVar(string name, ref value) | 他モジュール変数へのアクセス |
bool RunScriptFunction(string module, string func, args...) | 他モジュール関数の実行 |
bool StartModule(string module) | モジュール再起動 |
void StopMotorAll(void) | 全軸停止 |
bool CheckMotorName(string name) | 軸の存在確認 |
xscript
if (SYS.RunScriptFunction(moduleName, "ParseJsonToModuleData", data) == false)
{
ShowError(EB_Ok, 107, moduleName);
return false;
}システム状態 · エラー
| プロパティ | 型 | 説明 |
|---|---|---|
SYS.IsRunning | bool | 自動運転中 |
SYS.ManualThreadExitSignal | bool | 手動スレッド終了信号 |
SYS.LastErrorCode | int | 直近のエラーコード |
SYS.LastErrorMsg | string | 直近のエラーメッセージ |
SYS.LastErrorModuleName | string | エラー発生モジュール |
SYS.ProjectVersion / SYS.QMSVersion | string | バージョン |
xscript
if (SYS.IsRunning == false)
{
return true;
}
SYS.LastErrorCode = 0;
SYS.LastErrorMsg = "";
SYS.ResetError();実践例 — HTTP + タイムアウト + ロギング
xscript
FUNCTION GetServerOrderCount()
{
string url = $"{SS.HttpOrderAddr}/order-queue/machines/{SS.MachineId}/status";
int s = SYS.TickCount;
string data = SYS.SendHttpGet(url, SS.HttpToken);
if (data == SYS.HTTP_ERROR_STR)
{
if (SS.OrderMode == 1)
{
LogError($"GetServerOrderCount Error :[{SYS.TickCount-s}ms] {SYS.LastHttpError}");
}
return -1;
}
int count = Order::GetOrderCount(data);
return count;
}ヒント
- 長時間待機には
SYS.GetElasped(startTick)で経過を管理 ——Sleep中もManualThreadExitSignalをチェック。 - ファイル IO は必ず
ExistsFileで事前確認。書き込み前にはCreateDirectoryで親ディレクトリを保証。 - HTTP 呼び出しは
SYS.HTTP_ERROR_STRとの比較で成功/失敗を区別(例外スローではない)。 - モジュール間の変数 · 関数呼び出しは
SetModuleVar/GetModuleVar/RunScriptFunctionに統一。
SYS 全関数リファレンス(XUtilSystem)
C# ソース基準 —— XUtilSystem 本体 + _LinearConverter / _LoadCell / _ThreadSync partial の和集合。
時間 · 時刻(プロパティ / 関数)
| 項目 | 意味 |
|---|---|
SYS.TickCount / SYS.SecondCount | 起動後の経過 ms / 秒 |
SYS.GetTickCount() / SYS.GetTime() | 現在の tick / 時刻 |
SYS.GetElasped(startTick) | 経過 ms |
SYS.DateString / SYS.TimeString / SYS.DateTimeString / SYS.DateTimeMsecString / SYS.DateTimeFilename | よく使うフォーマット |
SYS.CurrentDateTimeInISO8601 | ISO-8601 |
SYS.GetDateTimeStringFormat(format) | ユーザーフォーマット |
SYS.GetAdjustedDate(dateString, offset) | 日付オフセット |
SYS.ConvertSecondsToTimeString(sec) | 秒 → HH:mm:ss |
SYS.Year / SYS.Month / SYS.Day / SYS.Hour | 分解された値 |
SYS.RunTimeString / SYS.StopTimeString / SYS.IdleTimeString / SYS.ErrorTimeString | 累計時間(システム統計) |
システム / モジュール制御
| 関数 | 意味 |
|---|---|
SYS.IsRunning(プロパティ) | システム稼働の有無 |
SYS.Start() / SYS.StartStepRun() / SYS.Stop() / SYS.Exit() / SYS.ExitMonitorModule() | 全体制御 |
SYS.SetError(module="") / SYS.ResetError() | システムエラー状態の切替 |
SYS.LastErrorCode / SYS.LastErrorMsg / SYS.LastErrorModuleName(プロパティ) | 直近エラー |
SYS.StartModule(module) / StopModule(module) / StartModuleStepRun(module) / ExitModule(module) | 単一モジュール制御 |
SYS.SetModuleError(module) / ResetModuleError(module) | モジュールエラー |
SYS.SetModuleBackground(module, value) | バックグラウンド動作の切替 |
SYS.SequenceModuleCountOnWaiting / SequenceModuleCountOnRunning(プロパティ) | シーケンスカウント |
SYS.StopManualThread() | マニュアルスレッド終了 |
SYS.ManualThreadExitSignal(プロパティ) | マニュアルスレッド終了信号 |
SYS.GetThreadCount(threadName) / (moduleName, seqOrFuncName) | スレッド数 |
システム情報 · ライセンス · 診断
| 項目 | 意味 |
|---|---|
SYS.QMSVersion / SYS.ProjectVersion | バージョン情報 |
SYS.GetExeFileVersion() / GetExeAssemblyVersion() | 実行ファイルバージョン |
SYS.IsProjectOpen / ProjectBaseDirectory | プロジェクト状態 |
SYS.LicenseKeyCount / LicenseMotorCount / LicensePermitRemainDays / TrialLicenseEnabled / HaveProjectCodeLicense / HaveLicense | ライセンス |
SYS.GetAvailableRamSize() / GetProcessMemorySize() / GetManagedMemorySize() / GetTotalMemorySize() | メモリ |
SYS.AddThreadIdLog(prefix, log) / AddMemoryLog() / LogSystemInfo() / LogVersionInfo() | 診断ログ |
SYS.IsVisualStudioRunning(update=false) | デバッガアタッチの有無 |
稼働率(UPH)
| 関数 | 意味 |
|---|---|
SYS.ClearUphData() / AddUphData(uph) / GetAverageUph() | UPH 統計 |
SYS.SetBoost() / ResetBoost() | ブーストモード |
ファイル / ディレクトリ
| 関数 | 意味 |
|---|---|
SYS.MakeFullPath(pathname) / IsFullPath(path) | パス変換 |
SYS.GetCurrentDirectory() | カレントディレクトリ |
SYS.GetFileName(path) / GetFileNameWithoutExtension(path) / GetDirectoryName(path) | 分解 |
SYS.ChangeFileExt(filepath, ext) | 拡張子の入れ替え |
SYS.GetUpdateFileName(filename) | 更新ファイル名生成 |
SYS.GetValidFileName(fileName) | 安全なファイル名 |
SYS.GetRelativePath(baseFolder, path) / GetAbsolutePath(baseFolder, path) | 絶対/相対変換 |
SYS.Combine(p1, p2, p3="", p4="") | パス結合 |
SYS.ExistsFile(path) / ExistsDirectory(path) | 存在確認 |
SYS.CreateFile(path) / DeleteFile(file) / CopyFile(src, dst, overwrite) / CopyFiles(srcDir, pattern, dstDir, overwrite) | ファイル |
SYS.MoveFile(src, dst, overwrite=true) / RenameFile(src, dst, overwrite=true) | 移動/リネーム |
SYS.SetFileHidden(path, setHidden=true) | 隠し属性 |
SYS.CreateDirectory(path) / DeleteDirectory(path, recursive) / ForceDeleteDirectory(path, recursive) / MoveDirectory(src, dst) | ディレクトリ |
SYS.CopyDirectory(src, dst, overwrite=true) | ディレクトリコピー |
SYS.GetFiles(path) / (path, pattern) / (path, pattern, subDirectory) | ファイル一覧 |
SYS.GetDirectories(path) / (path, pattern) / (path, pattern, subDirectory) | ディレクトリ一覧 |
SYS.DeleteFiles(dir, remainCount) | 古いファイルの整理 |
SYS.OpenExplorer(path) | エクスプローラを開く |
SYS.Execute(file, param) | 外部実行 |
テキストファイル入出力
| 関数 | 意味 |
|---|---|
SYS.ReadAllLines(path) / ReadAllText(path) | 読み込み |
SYS.WriteAllLines(path, data) / WriteAllText(path, data) | 書き込み |
SYS.AppendAllLines(path, data) / AppendAllText(path, data) / AppendLine(path, data) | 追加 |
SYS.IsJsonFile(filepath) | JSON ファイルか |
パラメータ(XParam)
| 関数 | 意味 |
|---|---|
SYS.SaveParam(managerKey) / LoadParam(managerKey) | 任意キー |
SYS.SaveJobFileParam() / LoadJobFileParam() | JobFile パラメータ |
SYS.SaveSetupParam() / LoadSetupParam() | Setup |
SYS.SaveMasterParam() / LoadMasterParam() | Master |
SYS.SaveRunParam() / LoadRunParam() | Run |
SYS.GetParamValueObjectRef(dataName, remainLog=true) | XParamValue オブジェクト |
SYS.SetParamValue(dataName) / (dataName, string/int/double/bool) | 値設定 |
SYS.GetParamValue(dataName, ref string/int/double/bool) | 値読み込み |
SYS.SaveSysVisionInfo() / SaveJobVisionInfo() | Vision 情報保存 |
SYS.SaveGlobalData() / LoadGlobalData() | 全体データ |
モジュール間通信
| 関数 | 意味 |
|---|---|
SYS.SetModuleVar(name, string/int/double/bool) | モジュール変数を書く |
SYS.GetModuleVar(name, ref string/int/long/double/bool) | モジュール変数を読む |
SYS.GetModuleVarXData(dataName) | XData として返す |
SYS.RunScriptFunction(module, function) / (module, function, string/int/long/double/bool) | 別モジュールの関数を呼ぶ |
HTTP
| 関数 | 意味 |
|---|---|
SYS.SendHttpGet(url, token="") | GET |
SYS.SendHttpPost(url, data, token="", type="") | POST |
SYS.SendHttpPatch(url, data, token="", type="application/json") | PATCH |
SYS.SendHttpDelete(url, token="") | DELETE |
SYS.HTTP_ERROR_STR(プロパティ) | エラー prefix("[HTTP-ERROR]")—— 戻り値の比較用 |
SYS.LastHttpError(プロパティ) | 直近のエラーメッセージ |
サウンド
| 関数 | 意味 |
|---|---|
SYS.PlaySound(fileName) / PlaySoundLoop(fileName) / StopSound() | wav 再生 |
モーター / IO 一括制御
| 関数 | 意味 |
|---|---|
SYS.SetSpeedAll(speed) / (speed, percent) | 全モーター速度 |
SYS.ServoOnAll(on)(SetServoOnAll) | サーボ一括 On/Off |
SYS.ResetMotorHomeDoneAll() | Home Done リセット |
SYS.StopMotorAll() / StopMotorEmgAll() | 一括停止 |
SYS.ClearAlarmAll() / GetAlarmCount() | アラーム |
SYS.GetMotorNames() / GetIoNames() | 名前一覧 |
SYS.CheckIOName(name) / CheckMotorName(name) / CheckCylinderName(name) / CheckIntefaceName(name) / CheckDeviceContainerName(name) | 名前の有効性 |
メッセージ / エラー
| 関数 | 意味 |
|---|---|
SYS.ShowError(buttonType, code, module, format, args...) | エラーダイアログ(グローバル ShowError と併用) |
その他(乱数 · ハッシュ · CRC)
| 関数 | 意味 |
|---|---|
SYS.GetRandom() / (min, max) / GetRandomDouble() | 乱数 |
SYS.GetSha256Hash(input) | SHA-256 |
SYS.CalcCRC16(data, length) | Modbus CRC-16 |
SYS.UpdateCustomData(command, index) | カスタムデータ更新 |
Linear Converter / LoadCell / Thread Sync
XUtilSystem_LinearConverter.cs / _LoadCell.cs / _ThreadSync.cs の関数も同じ SYS.* の
名前空間から呼び出されます —— 量産環境でのみ使用するため、別の章(または LCVT は MATH の
LCVT_* と共に)で扱います。