 使 用 ISaGRAF 仿 真 器

ISaGRAF 内 核 调 试 器 是 在 程 序 管 理 器 窗 口 中 使 用“ 调 试” 菜 单 的 “仿 真” 命 令 而 与 调 试 器 一 同 启 动 的。 仿 真 器 是 完 全 ISaGRAF 目 标 系 统 ，支 持 ISaGRAF 标 准 特 性 和 所 有 CJ International 标 准 库 中 的 “C” 函 数 以 及 函 数 块。 I/O 板 也 在 窗 口 中 以 图 形 方 式 仿 真， 同 时 它 支 持 任 何 类 型 I/O 板 的 仿 真。 在 I/O连 接 中 定 义 的“ 虚 拟 板” 也 能 在 仿 真 窗 口 中 显 示。

与 调 试 器 连 接

I/O 仿 真

库 组 件

选 项

ISaGRAF 仿 真 器 同 时 包 括 了 应 用 程 序 仿 真 和 调 试 的 工 具：

保 存 和 恢 复 输 入 状 态

循 环 周 期 配 置 器

仿 真 脚 本


与 调 试 器 连 接

内 核 仿 真 器 支 持 与 ISaGRAF 调 试 器 进 行 全 面 的 通 讯， 仿 真 中 可 以 使 用 所 有 调 试 手 段。 内 核 仿 真 器 总 运 行 在 当 前 的 ISaGRAF 应 用 程 序 上。 在 仿 真 过 程 中， 调 试 器 的“ 开 始”，“ 停 止”， “下 载” 或“ 更 新” 命 令 不 再 有 效。 如 果 生 成 目 标 代 码 时 未 在 编 译 器 选 项 中 选 定“ 仿 真”， 则 仿 真 器 不 能 使 用。 关 闭 仿 真 器 窗 口 意 味 着 调 试 器 窗 口（ 以 及 在 调 试 会 话 中 打 开 的 任 何 窗 口） 都 将 同 时 关 闭。


I/O 仿 真

I/O 板 将 在 窗 口 中 显 示， 窗 口 标 题 栏 内 显 示 它 们 的 名 称 和 插 槽 号， 并 支 持 处 理 任 何 ISaGRAF 标 准 I/O 类 型（ 布 尔， 模 拟 或 信 息）。 输 入 板 的 通 道 与 特 殊 的 按 钮 和 数 据 区 一 同 显 示。 输 出 板 的 旁 边 显 示 图 形 表 示 的 状 态 灯 和 数 据 区。

 	布 尔 输 入： 布 尔 输 入 表 示 为 方 形 的 绿 色 按 钮，I/O 按 钮 的 旁 边 显 示 通 道 号。 当 按 下 按 钮 时 输 入 值 为 “真”， 用 鼠 标 在 单 击 按 钮 可 以 改 变 相 应 的 输 入 值。 当 按 钮 按 下 时 可 以 用 鼠 标 右 键 设 置 输 入。

 	布 尔 输 出： 布 尔 输 出 表 示 为 一 个 小 圆 圈， 同 时 显 示 其 通 道 号。 图 形 符 号 高 亮 显 示 时， 代 表 输 出 值 为 “真”。

 	模 拟 输 入： 模 拟 输 入 通 道 是 单 一 的 数 字 区， 可 以 在 其 中 输 入 相 应 的 值。 用 鼠 标 单 击 显 示 插 入 符 号 的 文 本 框 就 可 以 输 入 通 道 的 新 值 了。 输 入 之 后 不 必 按 回 车 键。 模 拟 值 可 以 十 进 制 或 十 六 进 制 输 入。 用 上 / 下 按 钮 可 以 增 加 和 减 少 当 前 值。

 	模 拟 输 出： 模 拟 输 出 通 道 为 是 一 个 数 字 输 出 区。 输 出 值 可 以 十 进 制 或 十 六 进 制 显 示。 用 户 不 能 在 输 出 区 内 进 行 任 何 操 作。

 	信 息 输 入： 信 息 输 入 通 道 是 一 个 单 一 的 文 本 区， 用 于 输 入 相 应 的 信 息 值。 用 鼠 标 单 击 显 示 插 入 标 记 的 文 本 框 就 可 以 输 入 通 道 的 新 值。 输 入 之 后 不 必 按 回 车 键。

 	信 息 输 出： 信 息 输 出 通 道 是 文 本 输 出 区， 用 户 不 能 对 输 出 通 道 进 行 任 何 操 作。


库 组 件

ISaGRAF 仿 真 器 全 面 支 持 由 CJ International  发 布 的 标 准 转 换、 函 数 和 函 数 块。 下 列 为 支 持 的 对 象 列 表：

转 换 函 数:

bcd, scale

 函 数:

abs, acos, ArCreate, ArRead, ArWrite, ascii, asin, atan, char, cos, delete, expt, find, insert, left, limit, log, max, mid, min, mlen, mod, mux4, mux8, odd, rand, replace, right, rol, ror, sel, shl, shr, sin, sqrt, tan, trunc

 函 数 块:

average, blink, cmp, ctd, ctu, ctud, derivate, f_trig, hyster, integral, lim_alrm, r_trig, rs, sema, sr, stackint, tof, ton, tp

用 户 定 义 的 转 换，“C” 函 数 和 函 数 块 通 常 不 集 成 于 ISaGRAF 仿 真 器 内。 一 般 地 这 些 对 象 被 设 计 为 使 用 目 标 系 统 的 软 件 和 硬 件 资 源， 此 类 资 源 通 常 不 为 Windows 系 统 所 提 供。ISaGRAF 仿 真 器 为 用 户 定 义 的 转 换、 函 数 和 函 数 块 提 供 了 以 下 标 准 行 为：

•	当 一 个 新 的 转 换 由 仿 真 器 处 理 时， 它 将 被 一 个 “空” 变 换 所 取 代。 这 意 味 着 模 拟 变 量 的 物 理 值 等 于 其 电 气 值（ 正 如 在 仿 真 器 面 板 上 输 入 和 显 示 的）。

•	 当 仿 真 器 运 行 新 的 “C” 函 数 和 函 数 块 时， 它 不 进 行 任 何 操 作， 也 不 设 置 结 果 值。


选 项

“ 选 择” 菜 单 中 的 命 令 允 许 用 户 控 制 I/O 信 号 在 仿 真 器 面 板 上 的 显 示。 用 户 可 在 调 试 过 程 中 任 意 设 置 或 取 消 这 些 选 项。

 当 选 中 “彩 色 显 示” 选 项 时，I/O 通 道 可 以 彩 色 位 图 的 形 式 显 示。 如 果 在 一 些 LCD 显 示 屏 上 不 能 辨 明 色 彩， 用 户 须 取 消 这 一 选 项 以 得 到 I/O 通 道 的 纯 黑 白 输 入 输 出 图 形 显 示。

当 选 中 了 “变 量 名” 选 项 后， 将 在 I/O 通 道 的 旁 边 显 示  所 连 接 的 I/O 变 量 名 的 标 记。 取 消 这 一 选 项 可 使 用 户 减 小 仿 真 器 面 板 的 尺 寸。

 当 选 择 了 “十 六 进 制 值” 时， 任 何 输 入 输 出 模 拟 通 道 将 以 十 六 进 制 格 式 显 示 或 输 入。

 当 选 中 “总 在 最 前” 选 项 时， 仿 真 器 窗 口 将 总 是 可 见， 即 便 当 前 的 输 入 在 另 一 个 窗 口 中 进 行。


循 环 周 期 配 置 器

ISaGRAF 循 环 周 期 配 置 器 是 显 示 分 配 在 不 同 的 程 序、函 数 和 函 数 块 中 的 循 环 时 间 的 诊 断 工 具。 该 工 具 对 快 速 诊 断 应 用 程 序 的 执 行 性 能 非 常 有 用， 它 可 将 程 序 员 引 向 需 要 优 化 的 代 码 部 分。

循 环 周 期 配 置 器 可 从ISaGRAF  仿 真 器 窗 口 的 “工 具 / 循 环 配 置 器” 命 令 启 动。 它 显 示 每 个 程 序， 函 数 或 函 数 块 占 用 的 执 行 时 间 百 分 比：

当 选 中 了 “ 视 图 / 平 均” 选 项 时， 显 示 的 信 息 就 是 自 应 用 程 序 开 始 以 来， 或 自 上 次 使 用 “ 视 图 / 复 位” 命 令 以 来 的 平 均 百 分 比 值。

如 果 未 选 中 “ 视 图 / 平 均” 选 项， 则 显 示 测 量 的 上 一 周 期 的 值。 您 也 可 以 在 应 用 程 序 处 于“ 循环－ 循环” 模 式 下 运 行 时， 运 用 此 特 性 测 量 根 据 应 用 程 序 运 行 环 境 的 不 同 而 不 同 的 度 量 值。

使 用 “ 视 图 / 拷 贝” 命 令 可 以 将 程 序 名 和 其 百 分 值 以 ASCII 格 式 复 制 到 Windows 剪 贴 板 中， 以 便 再 粘 贴 到 文 本 文 档 或 电 子 数 据 表 中。

注 意：

这 些 不 是 精 确 的 测 量。 百 分 比 计 算 是 基 于 TIC 指 令 以 计 算 不 同 指 令 的 执 行 时 间 的。 计 算 并 不 包 括 用 于 执 行“C” 函 数 和 函 数 块 的 时 间。

显 示 的 值 是 在 一 个 应 用 程 序 循 环 周 期 内 对 这 一 某 函 数 或 函 数 块 的 所 有 的“ 调 用 时 间”。

时 间 计 算 基 于 TIC 代 码， 如 果 实 际 的 应 用 程 序 代 码 由 C 语 言 生 成 并 使 用 了 “C” 编 译 器， 它 就 不 能 提 供 准 确 的 值。


仿 真 脚 本

ISaGRAF 仿 真 器 包 括 了 建 立 和 运 行 仿 真 脚 本 的 工 具。 脚 本 以 一 种 类 似 ST 的 语 言 描 述， 用 于ISaGRAF  仿 真 器 的 自 动 测 试。

编 辑 脚 本

运 行 脚 本

脚 本 描 述 语 言

仿 真 脚 本 编 辑 器 以 仿 真 器 窗 口 中“ 工 具 / 仿 真 脚 本” 命 令 启 动。 以 下 是 脚 本 编 辑 器 的 画 面：

编 辑 器 的 上 半 窗 口 用 于 输 入 脚 本 指 令。 它 可 以 象ISaGRAF 文 本 编 辑 器 一 样 使 用， 并 且 支 持 一 些 高 层 次 的 编 辑 特 性 例 如 用 鼠 标 选 择 变 量 符 号。 可 以 使 用“ 选 择” 菜 单 来 设 置 表 格 宽 度 并 选 择 字 体。

下 半 窗 口 显 示 脚 本 运 行 时 的 输 出 信 息。 窗 口 件 的 分 界 线 可 以 随 意 拖 动 以 改 变 窗 口 大 小。 输 出 窗 口 可 以 在 编 辑 脚 本 时 关 闭， 但 会 在 运 行 脚 本 时 自 动 打 开。


编 辑 脚 本

使 用 “文 件” 菜 单 中 的 命 令 管 理 脚 本 文 件：

新 建	建 立 新 的 未 命 名 脚 本

打 开	装 入 已 存 在 的 脚 本 文 件

保 存	在 项 目 目 录 中 保 存 脚 本 文 本 和 输 出 窗 口 的 内 容

另 存 为	以 另 一 个 名 称 保 存 脚 本

在 ISaGRAF 项 目 目 录 中 将 为 每 个 脚 本 建 立 两 个 文 件：

<脚 本 名 称>.SCC	脚 本 文 本（ 指 令）

<脚 本 名 称>.SCO	输 出 窗 口 内 容

<脚 本 名 称> 即 为 脚 本 的 名 称， 两 个 文 件 可 以 用 其 它 文 本 编 辑 器 打 开 的 标 准 文 本 文 件。

  在 编 辑 脚 本 时， 可 以 使 用“ 编 辑 / 插 入符 号” 命 令 选 择 一 个 已 声 明 的 变 量 名 插 入 到 插 入 标 记 处。


运 行 脚 本

脚 本 在 运 行 前 必 须 经 过 检 验 和 编 译。 如 果 必 要， 将 在 运 行 脚 本 时 自 动 进 行 语 法 检 查。 可 以 使 用 下 列 命 令：

检 验	检 验 语 法 和 编 译 脚 本

运 行 脚 本	开 始 执 行 当 前 编 辑 的 脚 本

如 果 脚 本 未 命 名， 则 在 检 验 前 须 先 保 存（ 并 为 此 输 入 名 称）； 如 果 脚 本 已 命 名， 则 在 进 行 语 法 检 查 前 自 动 保 存 到 磁 盘。

脚 本 运 行 时 ，不 能 改 变 其 内 容。 到 达 脚 本 的 尾 部 时 将 显 示 信 息。 也 可 以 在 脚 本 运 行 当 中 使 用“ 脚 本” 菜 单 中 的 命 令 中 止 脚 本 的 执 行：

中 止 脚 本	中 断 脚 本 的 运 行

脚 本 在 目 标 代 码 循 环 周 期 之 间 执 行。 如 果 在 脚 本 中 编 写 了 无 限 循 环， ISaGRAF 仿 真 器 会 确 保 总 能 中 断 这 个 循 环， 以 使 循 环 继 续 执 行 并 且 其 它 的 ISaGRAF 应 用 程 序 不 致 阻 塞。 如 果 在 同 一 个 循 环 周 期 内 遇 到 同 一 个“ 标 号” 多 于 一 次， 则 ISaGRAF 脚 本 解 释 器 会 决 定 中 断 脚 本 的 执 行。 脚 本 的 执 行 也 可 由“ CYCLE” 或“ WAIT” 指 令 正 常 终 止。


脚 本 描 述 语 言

脚 本 描 述 语 言 是 一 种 类 似 ST 的 简 单 的 文 本 语 言， 每 个 指 令 都 在 单 独 的 一 行 内 输 入， 并 且 不 需 要 以 分 号 结 束。 使 用 工 具 栏 上 的 按 钮 可 以 了 解 可 用 指 令 的 列 表 并 在 插 入 标 记 处 插 入 关 键 词：

插 入 指 令（ 关 键 词 及 帮 助 注 释）

有 许 多 类 型 的 指 令。 首 先 是 赋 值 （强 制） 变 量：

:=	赋 值

其 它 指 令 允 许 信 息 输 出 到 输 出 窗 口：

Print	输 出 文 本 字 符 串 或 变 量 值

PrintTime	输 出 当 前 时 间 标 签

还 有 指 令 用 来 与 ISaGRAF 循 环 周 期 同 步：

Cycle	使 ISaGRAF 仿 真 器 执 行 一 周 期

Wait	等 待 一 定 的 时 间

其 它 指 令 用 于 控 制 脚 本 中 的 指 令 流 向：

Labels	可 以 置 于 脚 本 中 的 任 意 位 置

Goto	无 条 件 跳 转 到 标 号

If goto	有 条 件 跳 转 到 标 号

End	终 止 脚 本

脚 本 语 言 是 大 小 写 无 关 的。 可 以 在 任 意 文 本 的 行 末 插 入 注 释。 注 释 可 以 象 ST 语 言 的 约 定 那 样（ 置 于 符 号“(*” 和“*)” 之 间）， 也 可 以 以 字 符“;” 开 始。


":=" 赋 值

意 义：	强 制 ISaGRAF 变 量 值。 变 量 可 以 是 内 部 变 量， 输 入 通 道 或 输 出 通 道 。

语 法：	<varname> := <constant_expression>

<varname> = <constant_expression>

参 数：	<varname> 是 应 用 程 序 中 声 明 的 变 量 的 有 效 符 号， 或 是 以 “％” 开 始  的 直 接 表 示 的 I/O 变 量。

<constant_expression> 是 与 指 定 变 量 相 匹 配 的 有 效 常 量 表 达 式。 对 于 布 尔 变 量， 可 以 用“0” 和“1” 代 替 “FALSE” 和 “TURE”； 定 时 器 变 量 的 前 缀“T#” 或“TIME#” 可 以 省 略。

注 意：	由 脚 本 强 制 的 输 入 变 量 不 必 锁 定。 当 变 量 由 脚 本 强 制 时， 相 应 输 入 通 道 的 程 序 会 自 动 更 新。

警 告： 因 为 脚 本 执 行 不 支 持 转 换 函 数 或 表 格， 所 以 不 要 强 制 与 转 换 相 联 系 的 输 入 或 输 出 模 拟 变 量。

实 例：	MyBooVar := 1         (* same as TRUE *)

MyIntVar := 1234

MyRealVar := 1.2345

MyMsgVar := 'Hello'

MyTmrVar := t#12s


Print 打 印

意 义：	在 输 出 窗 口 中 写 字 符 串 或 变 量 值。 文 本 输 出 显 示 为 在 输 出 窗 口 底 部 已 有 文 本 之 后 的 新 行。

语 法：	Print '<text>'

Print <varname>

参 数：	<text> 为 任 意 的 在 单 引 号 内 表 示 的 文 本 字 符 串。

<varname> 是 应 用 程 序 中 声 明 的 变 量 的 有 效 符 号， 或 是 以 “％” 开 始 的 直 接 表 示 的 I/O 变 量。

注 意：	输 出 变 量 总 按 IEC 约 定 格 式 化。

实 例：	Print 'Hello'

Print MyBooVar

输 出：	Hello

MyBoovar = TRUE


PrintTime 打 印 时 间

意 义：	在 输 出 窗 口 中 写 入 当 前 时 间 标 签。 文 本 输 出 显 示 为 在 输 出 窗 口 底 部 已 有 文 本 之 后 的 新 行。

语 法：	PrintTime

注 意：	时 间 标 签 的 格 式 依 据 当 前 Windows 系 统 而 定。

实 例：	Print 'Time now is:'

PrintTime

输 出：	Time now is:

15:45:22


Cycle 循 环

意 义：	在 执 行 下 一 个 ISaGRAF 循 环 周 期 前 暂 停。

语 法：	Cycle

注 意：	此 脚 本 指 令 在 ISaGRAF 循 环 开 始 处 执 行。 如 果 仿 真 器 运 行 在“ 循环－ 循环” 模 式 下，“ cycle” 指 令 后 将 紧 接 着 一 个 循 环 周 期。 下 列 脚 本 指 令 将 在 自 调 试 器 执 行 下 一 条“ 执 行 单 周 期” 命 令 后 执 行。

实 例：	(* ISaGRAF 程 序 将 A 复 制 到 B *)

A := 0

Cycle

Print B

A := 1

Print B (* 未 执 行 循 环 / B 未 被 置 为 1 *)

Cycle

Print B

输 出：	B = 0

B = 0

B = 1


Wait 等 待

意 义：	在 延 时 时 间 内 暂 停 执 行 脚 本。

语 法：	Wait <delay>

参 数：	<delay> 符 合 IEC 定 时 器 常 量 表 达 式 的 延 时 时 间。 可 以 省 略“T#” 和“TIME#” 前 缀。 延 时 时 间 必 须 在 10 毫 秒 和 1 小 时 之 间。

注 意：	“ Wait” 指 令 不 很 精 确， 因 为 它 依 赖 于 Windows 宿 主 系 统， 同 样 地，ISaGRAF 循 环 周 期 也 会 造 成 延 时 精 度 的 增 减。

当 遇 到“ Wait” 指 令 时， 在 继 续 执 行 脚 本 之 前 会 中 止 直 到 延 时 时 间 过 去， 然 后 ISaGRAF  循 环 也 才 能 继 续 执 行。

实 例：	PrintTime

Wait 2s

PrintTime

输 出：	15:45:27

15:45:29


Labels 标 号

意 义：	标 号 可 以 置 于 脚 本 内 的 任 何 位 置。 它 们 作 为“Goto” 指 令 的 目 标， 从 而 允 许 进 行 脚 本 指 令 的 流 程 控 制。

语 法：	<labelname>:

参 数：	<labelname> 遵守 ISaGRAF 变 量 命 名 约 定 的唯一 的 名 称： 限 制 在 16 个 字 符 内， 以 字 母 开 头， 后 随 字 母 或 数 字 或 下 划 线 字 符。 定 义 时， 标 号 名 后 必 须 跟 随 字 符“:”。

注 意：	定 义 标 号 的 行 中 不 能 放 置 指 令。

标 号 名 不 能 与 ISaGRAF 变 量 符 号 相 同。

实 例：	(* 一 个 无 限 循 环 的 脚 本 例 子 *)

loop:

PrintTime

Wait 1s

Goto loop


Goto 无 条 件 跳 转 到 标 号

意 义：	无 条 件 跳 转 到 标 号

语 法：	Goto <labelname>

参 数：:	<labelname> 为 在 脚 本 中 定 义 的 标 号 名

注 意：	允 许 向 后 跳 转。 在 无 限 循 环 的 情 况 下， 每 次 循 环 时 将 自 动 中 断， 以 保 持 执 行 ISaGRAF 循 环。

实 例：	Print 'Before Jump'

Goto MyLabel

Print 'Within Jump' (* 从 未 执 行 的 指 令 *)

MyLabel:

Print 'After Jump'

输 出：	Before Jump

After Jump


If Goto 有 条 件 跳 转 到 标 号

意 义：	有 条 件 跳 转 到 标 号。 条 件 可 以 是 两 个 ISaGRAF 变 量 间 的 比 较、 或 一 个 变 量 和 一 个 常 量 间 的 比 较。

语 法：	If <var1> test <var2> Goto <labelname>

If <var1> test <constant_expression> Goto <labelname>

可 用 的 比 较 测 试（tests）

=	如 果 两 个 值 相 等 为“ 真”

<>	如 果 两 个 值 不 等 为“ 真”

<	第 一 个 值 小 于 第 二 个 时 为“ 真”

<=	第 一 个 值 小 于 等 于 第 二 个 时 为“ 真

>	第 一 个 值 大 于 第 二 个 时 为“ 真

>=	第 一 个 值 大 于 等 于 第 二 个 时 为“ 真

参 数：	<var1> <var2> 是 应 用 程 序 中 声 明 的 变 量 的 有 效 符 号， 或 是 以 “％” 开 始  的 直 接 表 示 的 I/O 变 量 。

<constant_expression>是 与 指 定 变 量 相 匹 配 的 有 效 常 量 表 达 式。 对 于 布 尔 变 量， 可 以 用“0” 和“1” 代 替“ FALSE” 和“TRUE”； 定 时 器 变 量 的 前 缀“T#” 或“TIME#” 可 以 省 略。

<labelname> 是 在 脚 本 中 定 义 的 标 号。

注 意：	允 许 向 后 跳 转。 在 无 限 循 环 的 情 况 下， 每 次 循 环 时 将 自 动 中 断， 以 保 持 执 行 ISaGRAF 循 环。

实 例：	(*此 脚 本 在 MyVar 为“ 真” 之 前 一 直 循 环  *)

Loop:

If MyVar = TRUE Goto TheEnd

Print MyVar

Goto Loop

TheEnd:


End 结 束

意 义：	终 止 脚 本

语 法：	End

注 意：	不 需 要 在 脚 本 尾 部 特 意 放 置 “End” 指 令。

实 例：	(*此 脚 本 循 环 直 至 MyVar 为“ 真” *)

Loop:

If MyVar = FALSE Goto Continue

End

Continue:

Print MyVar

Goto Loop


保 存 和 恢 复 输 入 状 态

使 用 ISaGRAF 仿 真 器， 可 以 用 仿 真 器 面 板 上 的 切 换 按 钮 和 编 辑 控 制 工 具 手 工 强 制 输 入 通 道。 您 可 以 在 任 何 时 刻 使 用 “工 具” 菜 单 中 的 命 令 保 存 和 恢 复 所 有 的 输 入 状 态：

装 载 输 入 方 案	按 照 使 用 “保 存 输 入 方 案” 在 磁 盘 上 保 存 的 文 件 中 的 输 入 通 道 值 设 置 输 入 值。

保 存 输 入 方 案	保 存 输 入 通 道 的 状 态 以 便 以 后 通 过 使 用 “ 装 载 输 入 方 案 ” 命 令 重 新 恢 复。文 件 存 储 于 工 程 目 录 中， 从 而 可 以 与 其 它 项 目 文 件 一 同 用 ISaGRAF 档 案 工 具 保 存。

注 意： 只 有 命 名 后 的 输 入 通 道 （连 接 了 变 量 的） 才 被 保 存 到 磁 盘。