11.07.2015 Views

ISaGRAF 使用手冊 - ICP DAS

ISaGRAF 使用手冊 - ICP DAS

ISaGRAF 使用手冊 - ICP DAS

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>ISaGRAF</strong> 進 階 使 用 手 冊泓 格 科 技 股 份 更 限 公 司 Sep. 2011本 書 適 用 以 下 的 控 制 器 , 期 望 對 使 用 <strong>ISaGRAF</strong> 作 為 軟 體 作 業 帄 台 的 系 統 整 合 人 員 、 程 式 設 計師 以 及 系 統 維 護 人 員 能 更 所 助 益 。XP-8047-CE6 / XP-8046-CE6 / XP-8347-CE6 / XP-8346-CE6 / XP-8747-CE6 / XP-8746-CE6 ,WP-8147 / WP-8146 / WP-8447 / WP-8446 / WP-8847 / WP-8846 ,WP-8137 / WP-8136 / WP-8437 / WP-8436 / WP-8837 / WP-8836 ,VP-25W7 / VP-25W6 / VP-23W7 / VP-23W6 ,µPAC-7186EG , I-7188EG , I-7188XG , VP-2117 ,iP-8447 / iP-8847 / iP-8417 / iP-8817 ,I-8417 / I-8817 / I-8437-80 / I-8837-80泓 格 科 技 股 份 更 限 公 司 感 謝 您 購 買 本 公 司 以 <strong>ISaGRAF</strong> 作 為 軟 體 核 心 的 各 類 控 制 器 , 本 系 列 產品 結 合 方 便 整 合 的 特 性 以 及 IEC 61131-3: <strong>ISaGRAF</strong> 強 大 的 發 展 性 , 適 用 於 各 類 工 業 用 控 制 系統注 意泓 格 科 技 股 份 更 限 公 司 對 於 因 為 使 用 本 系 列 產 品 所 造 成 的 任 何 損 害 並 不 負 任 何 法 律 上 的 責任 , 本 公 司 並 保 留 在 任 何 時 候 修 訂 本 書 且 不 需 通 知 的 權 利 。泓 格 科 技 股 份 更 限 公 司 將 儘 可 能 地 提 供 本 系 列 產 品 可 靠 而 詳 盡 的 資 訊 。 然 而 , 本 公 司 並 無 義務 需 提 供 此 系 列 產 品 詳 盡 的 應 用 資 訊 , 或 對 因 非 法 使 用 本 系 列 產 品 所 遭 受 的 損 害 負 任 何 責任 。商 標 & 著 作 權本 書 提 到 的 所 更 公 司 商 標 、 商 標 名 稱 及 產 品 名 稱 分 別 屬 於 該 商 標 或 名 稱 的 擁 更 者 所 更 。Data Sheet :請 上 網 http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 畫 面 右 方 點 選 Data Sheethttp://www.icpdas.com/products/PAC/i-8000/data%20sheet/data%20sheet_c.htmFAQ :請 上 網 www.icpdas.com - “FAQ” - “Software” - “<strong>ISaGRAF</strong>” 查 看 FAQ ( 常 被 詢 問 的 問 題 )http://www.icpdas.com/faq/isagraf_c.htm或或Copyright Sep 2011, by <strong>ICP</strong> <strong>DAS</strong> CO., LTD. All Rights Reserved<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 1 <strong>ICP</strong> <strong>DAS</strong>


目錄ISAGRAF 進 階 使 用 手 冊 ........................................................................................................................................... 1注 意 .................................................................................................................................................... 1商 標 & 著 作 權 .................................................................................................................................................... 1目 錄 ............................................................................................................................................................................ 2相 關 參 考 資 料 .................................................................................................................................................................... 7ISAGRAF 控 制 器 性 能 比 較 表 一 .................................................................................................................................... 8ISAGRAF 控 制 器 性 能 比 較 表 二 .................................................................................................................................... 9XPAC, WinPAC 系 列 與 iPAC: ................................................................................................................................ 9ViewPAC 系 列 : ........................................................................................................................................................... 10I-8000, iPAC 系 列 與 WinPAC: ............................................................................................................................... 11I-7188, μPAC 系 列 : .................................................................................................................................................... 12如 何 選 用 ISAGRAF PAC ............................................................................................................................................. 15第 1 章 安 裝 軟 體 及 硬 體 ................................................................................................................................ 1-11.1: 安 裝 <strong>ISaGRAF</strong> Ver.3 作 業 帄 台 ...................................................................................................................... 1-11.2: 安 裝 <strong>ICP</strong> <strong>DAS</strong> Utilities For <strong>ISaGRAF</strong> ............................................................................................................. 1-41.3: PAC 硬 體 相 關 設 定 ......................................................................................................................................... 1-5第 2 章 ISAGRAF 程 式 設 計 基 礎 ................................................................................................................. 2-12.1: 一 個 簡 單 的 階 梯 圖 程 式 (LD) ........................................................................................................................ 2-12.1.1: 程 式 撰 寫 ............................................................................................................................................. 2-42.1.2: 連 接 輸 入 輸 出 (I/O) 設 備 .................................................................................................................... 2-262.1.3: 編 譯 LD 範 例 程 式 ............................................................................................................................ 2-282.1.4: 模 擬 LD 專 案 .................................................................................................................................... 2-292.1.5: 下 載 及 除 錯 LD 範 例 程 式 ............................................................................................................ 2-312.2: 一 個 簡 單 的 結 構 化 文 字 (ST) 程 式 ............................................................................................................. 2-352.3: 簡 單 的 功 能 方 塊 圖 程 式 ................................................................................................................................ 2-432.3.1: 編 寫 FBD 範 例 程 式 .......................................................................................................................... 2-432.3.2: 模 擬 FBD 程 式 .................................................................................................................................. 2-482.4: 簡 單 的 指 令 集 程 式 .......................................................................................................................................... 2-502.5: 簡 單 的 順 序 式 功 能 圖 程 式 (SFC)................................................................................................................... 2-532.5.1: 撰 寫 SFC 範 例 程 式 ........................................................................................................................... 2-552.5.2: 編 輯 SFC 程 式 .................................................................................................................................. 2-582.5.3: 模 擬 SFC 程 式 ................................................................................................................................. 2-632.6: 使 用 變 數 陣 列 .............................................................................................................................................. 2-642.6.1 指 定 網 路 位 址 號 碼 給 變 數 陣 列 ..................................................................................................... 2-672.6.2 將 變 數 陣 列 使 用 成 可 保 留 變 數 ................................................................................................... 2-68第 3 章 建 立 I/O 連 結 .................................................................................................................................... 3-13.1 如 何 將 I/O 控 制 模 組 引 入 <strong>ISaGRAF</strong> 專 案 ...................................................................................................... 3-33.1.1: 連 結 I/O 板 ........................................................................................................................................ 3-43.1.2: 連 結 輸 入 及 輸 出 變 數 .......................................................................................................................... 3-53.2: 連 結 類 比 型 態 的 I/O 板 ................................................................................................................................. 3-73.2.1: 設 定 類 比 I/O 卡 的 Range 參 數 與 類 比 IO 數 值 轉 換 函 式 ......................................................... 3-7<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2 <strong>ICP</strong> <strong>DAS</strong>


3.2.2: 設 定 特 別 的 “range” 參 數 來 直 接 取 得 溫 度 卡 片 的 “ 攝 氏 度 ” 或 “ 華 式 度 ” 值 ....................... 3-93.2.3: I-87017ZW 板 卡 使 用 說 明 ................................................................................................................ 3-113.2.4: I-8017HW 板 卡 使 用 說 明 ................................................................................................................ 3-143.2.5: I-8084W 板 卡 使 用 說 明 ................................................................................................................... 3-153.2.6: I-87015W 與 I-87015PW 板 卡 使 用 說 明 ...................................................................................... 3-173.2.7: I-87019ZW 板 卡 使 用 說 明 ................................................................................................................ 3-183.2.8: I-8024W 板 卡 使 用 說 明 .................................................................................................................... 3-193.2.9: I-87018ZW 板 卡 使 用 說 明 ................................................................................................................ 3-203.3: 一 些 特 殊 虛 卡 的 連 結 使 用 說 明 .................................................................................................................... 3-213.3.1: 連 結 Push4Key 與 Show3Led 虛 卡 .............................................................................................. 3-213.3.2: 連 結 io_state 虛 卡 來 偵 測 真 實 IO 板 卡 的 運 作 狀 態 .................................................................. 3-223.3.3: 連 結 echo_tim 虛 卡 來 延 遲 Modbus RTU Slave 串 口 一 段 時 間 後 再 回 覆 ................................. 3-233.3.4: WP-8xx7, VP-25W7 與 XP-8xx7 連 結 RTU_Slav 虛 卡 來 使 用 更 多 擴 充 的 Modbus RTU Slave串 口 ............................................................................................................................................... 3-243.3.5: 使 用 dis_stop 虛 卡 來 關 閉 / 開 啟 <strong>ISaGRAF</strong> Download 程 式 功 能 ......................................... 3-253.4: 直 接 表 示 變 數 ................................................................................................................................................ 3-263.5: 內 建 於 I-87xxx 及 I-7000 D/I 模 組 的 計 數 值 .......................................................................................... 3-293.6: 自 動 搜 尋 及 宣 告 : Auto-Scan I/O ................................................................................................................. 3-313.7: PWM 輸 出 .................................................................................................................................................... 3-333.8: 並 列 輸 入 卡 的 Counter .................................................................................................................................. 3-373.10: 步 進 輸 出 ...................................................................................................................................................... 3-38第 4 章 連 接 I-8XX7 控 制 器 與 人 機 介 面 (HMI) 程 式 ................................................................................... 4-14.1: 宣 告 變 數 的 網 路 位 址 ...................................................................................................................................... 4-14.2: 使 用 Modbus 讀 寫 Words, Long Words 及 Float 資 料 .................................................................................. 4-64.3: 將 I-8xx7 當 成 Modbus I/O 或 Modbus TCP/IP I/O 來 使 用 .......................................................................... 4-84.4: 連 結 <strong>ISaGRAF</strong> PAC 和 Touch 500 系 列 ..................................................................................................... 4-134.4.1: 設 計 <strong>ISaGRAF</strong> PAC 應 用 程 式 ......................................................................................................... 4-144.4.2: 設 計 Touch 500 畫 面 ........................................................................................................................ 4-154.5: 經 由 Modbus 通 訊 協 定 讀 / 寫 Word 及 Integer 陣 列 ................................................................................. 4-35第 5 章 MODBUS 協 定 ................................................................................................................................. 5-15.1: Modbus 協 定 格 式 : RTU Serial .................................................................................................................... 5-15.2: Modbus Protocol Format: TCP/IP ................................................................................................................. 5-65.3: CRC-16 演 算 邏 輯 ............................................................................................................................................ 5-7第 6 章 連 接 I-7000 和 I-87K 遠 程 I/O 模 塊 .............................................................................................. 6-16.1: 設 定 I-7000 及 I-87xx 模 組 ........................................................................................................................... 6-16.2: 開 啟 “Bus7000b” ............................................................................................................................................ 6-56.3: 編 寫 控 制 I-7000 模 組 程 式 .............................................................................................................................. 6-86.3.1 : 編 寫 I_7xxx 及 I_87xxx 方 塊 程 式 .................................................................................................. 6-86.3.2 : 直 接 取 得 遠 程 I-7000 及 I-87xxxW 溫 度 輸 入 I/O 的 溫 度 值 .................................................... 6-136.4: Redundant Bus7000 ........................................................................................................................................ 6-15第 7 章 控 制 器 與 控 制 器 間 的 資 料 交 換 ........................................................................................................ 7-17.1: 基 本 的 Fbus 規 則 .......................................................................................................................................... 7-17.2: 設 定 <strong>ISaGRAF</strong> PAC 為 Fbus master 或 Fbus slave ...................................................................................... 7-27.3: 編 寫 Fbus 封 包 程 式 ....................................................................................................................................... 7-67.4: 透 過 Fbus 的 資 料 傳 輸 範 例 ........................................................................................................................... 7-97.5: 編 寫 Ebus 資 料 交 換 程 式 ............................................................................................................................ 7-147.5.1: 基 本 的 Ebus 規 則 ............................................................................................................................ 7-147.5.2: 設 定 <strong>ISaGRAF</strong> PAC 為 Ebus Master 或 Slave ............................................................................. 7-167.5.3: 編 寫 Ebus 封 包 ................................................................................................................................ 7-18第 8 章 連 結 MODBUS RTU / ASCII 裝 置 ................................................................................................. 8-18.1: 設 定 控 制 器 以 連 接 Modbus 裝 置 .............................................................................................................. 8-28.2: 編 寫 Modbus 方 塊 程 式 .................................................................................................................................. 8-4<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3 <strong>ICP</strong> <strong>DAS</strong>


8.3: 連 接 M-7000 I/O 模 塊 ................................................................................................................................. 8-108.4: 連 接 EKAN-Modview LED 顯 示 器 ............................................................................................................. 8-10第 9 章 幾 個 ISAGRAF 常 用 的 功 能 介 紹 .................................................................................................... 9-19.1: 建 立 <strong>ISaGRAF</strong> 的 專 案 群 組 ............................................................................................................................ 9-29.2: 上 載 <strong>ISaGRAF</strong> 專 案 ...................................................................................................................................... 9-39.3: 設 定 <strong>ISaGRAF</strong> 的 密 碼 管 制 ............................................................................................................................ 9-69.4: 建 立 <strong>ISaGRAF</strong> 程 式 日 記 ................................................................................................................................ 9-89.5: 程 式 的 備 份 及 回 存 .......................................................................................................................................... 9-99.6: 專 案 及 程 式 的 複 製 ........................................................................................................................................ 9-119.7: 為 <strong>ISaGRAF</strong> 專 案 增 加 註 解 .......................................................................................................................... 9-139.8: 設 定 所 要 連 接 的 控 制 器 的 位 址 編 號 ............................................................................................................ 9-149.9: 程 式 編 譯 的 最 佳 化 選 項 ................................................................................................................................ 9-159.10: <strong>ISaGRAF</strong> 的 類 比 轉 換 表 ............................................................................................................................. 9-169.11: 透 過 Microsoft Excel 引 用 / 匯 出 變 數 宣 告 .............................................................................................. 9-199.12: 執 行 期 間 顯 示 選 定 的 變 數 資 料 .................................................................................................................. 9-229.13: 如 何 在 <strong>ISaGRAF</strong> 內 搜 尋 某 一 變 數 名 稱 ?................................................................................................. 9-25第 10 章 可 保 存 變 數 和 資 料 儲 存 .................................................................................................................. 10-110.1: 可 保 存 變 數 .................................................................................................................................................. 10-110.2: 備 份 資 料 到 EEPROM ................................................................................................................................. 10-610.3: 電 池 保 持 式 SRAM ...................................................................................................................................... 10-810.3.1: 存 取 SRAM ..................................................................................................................................... 10-910.3.2: 從 SRAM 內 上 載 ( 抓 出 ) 資 料 ...................................................................................................... 10-910.3.3: 下 載 資 料 到 SRAM 內 .................................................................................................................. 10-1110.3.4: 電 池 保 持 式 SRAM 的 函 式 說 明 .................................................................................................. 10-1310.4: 使 用 I-8073 來 儲 存 資 料 ............................................................................................................................ 10-1310.5: 檔 案 存 取 ...................................................................................................................................................... 10-1410.5.1: 範 例 Wpdmo_51: 從 檔 案 內 讀 取 10 個 實 數 值 , 共 10 行 , 每 行 1 個 實 數 ............................... 10-1510.5.2: 範 例 WPdmo_54: 從 檔 案 內 讀 取 20 個 實 數 值 , 共 4 行 , 每 行 5 個 實 數 ................................. 10-1710.5.3: 範 例 Wpdmo_55: 從 檔 案 內 讀 取 20 個 整 數 值 , 共 2 行 , 每 行 10 個 整 數 ............................... 10-1910.5.4: 範 例 Wpdmo_56: 將 1 ~ 255 個 實 數 變 數 用 Flash Memory 來 保 存 最 終 值 .............................. 10-2110.5.5: 每 0.05 秒 記 錄 I-8017H 的 1 ~ 4 個 電 壓 值 於 RAM Disk 內 的 一 個 檔 案 , 連 續 記 錄 1~10 分鐘 , 之 後 可 在 PC 上 開 M.S. Excel 來 看 1 ~ 4 條 趨 勢 圖 ............................................................ 10-3110.6: 偵 測 Controller Fault ................................................................................................................................... 10-32第 11 章 ISAGRAF 程 式 範 例 與 FAQ .......................................................................................................... 11-111.1: 安 裝 <strong>ISaGRAF</strong> 程 式 範 例 ........................................................................................................................... 11-111.2: <strong>ISaGRAF</strong> 範 例 程 式 列 表 ............................................................................................................................. 11-311.3: 一 些 範 例 程 式 的 詳 細 說 明 ........................................................................................................................ 11-1611.3.0 Demo_01A & Demo_03: 在 某 個 時 間 點 做 某 件 事 ...................................................................... 11-1611.3.1 Demo_02 : 啟 動 , 暫 停 及 重 置 Timer .......................................................................................... 11-2011.3.2 Demo_17 : 讀 / 寫 EEPROM .......................................................................................................... 11-2211.3.3 Demo_29: 每 75 秒 記 錄 1200 筆 Short Int 並 經 由 Com3 傳 送 到 PC ....................................... 11-2411.3.4 Demo_33 : 從 Com3 讀 / 寫 User 自 行 定 義 的 通 訊 格 式 ............................................................... 11-2911.3.5 Wdemo_24 : 當 Alarm 1 ~ 8 發 生 時 , 從 Com2 送 出 Alarm 訊 息 ............................................. 11-3711.3.6: 範 例 Whmi_12: 使 用 Wincon-8xx7, 每 0.05 秒 記 錄 I-8017H 的 1 ~ 4 個 電 壓 值 於 RAM Disk內 的 一 個 檔 案 , 連 續 記 錄 1~10 分 鐘 , 之 後 可 在 PC 上 開 M.S. Excel 來 看 1 ~ 4 條 趨 勢 圖 ... 11-4111.3.7: 範 例 Demo_71: 使 用 I-8437-80 或 I-8837-80, 每 0.05 秒 記 錄 I-8017H 的 1 ~ 4 個 電 壓 值 於S-256 / S-512 內 的 一 個 檔 案 , 連 續 記 錄 1~10 分 鐘 , 之 後 可 在 PC 上 開 M.S. Excel 來 看 1 ~4 條 趨 勢 圖 ..................................................................................................................................... 11-5411.3.8: 使 用 較 準 確 的 固 定 週 期 去 做 某 件 事 ...................................................................................... 11-6211.3.9: Demo_72: I-7188EGD 連 接 I-7018z 量 測 6 個 4 到 20 mA 的 電 流 輸 入 值 與 4 個Thermo-Couple 溫 度 輸 入 值 , 並 顯 示 在 PC 的 VB 6.0 程 式 上 ................................................... 11-63<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4 <strong>ICP</strong> <strong>DAS</strong>


11.3.10: 範 例 Whmi_13: 使 用 Wincon-8xx7, 每 0.01 秒 記 錄 I-8017H 的 1 ~ 4 個 電 壓 值 於 User 配置 的 一 塊 RAM 記 憶 區 內 , 連 續 記 錄 1~10 分 鐘 , 之 後 再 儲 存 到 RAM Disk File 內 , 最 後 可在 PC 上 開 M.S. Excel 來 看 1 ~ 4 條 趨 勢 圖 ............................................................................... 11-6911.4: 常 用 的 FAQ............................................................................................................................................... 11-79第 12 章 發 送 EMAIL ................................................................................................................................... 12-1第 13 章 透 過 MODEM_LINK 遠 程 監 視 及 下 載 程 式 ................................................................................ 13-113.1: Introduction .................................................................................................................................................. 13-113.2: 透 過 Modem_Link 下 載 程 式 ...................................................................................................................... 13-2第 14 章 SPOTLIGHT : 簡 易 圖 控 ............................................................................................................... 14-114.1 Spotlight 範 例 : ................................................................................................................................................ 14-1第 15 章 編 寫 自 行 定 義 的 FUNCTION ....................................................................................................... 15-115.1: 在 1 個 專 案 內 定 義 Function ....................................................................................................................... 15-115.2: 在 <strong>ISaGRAF</strong> Library 內 定 義 Function ........................................................................................................ 15-6第 16 章 連 接 MMICON ............................................................................................................................... 16-116.1: 硬 體 安 裝 ...................................................................................................................................................... 16-116.2: 建 立 MMICON 的 背 景 圖 形 ....................................................................................................................... 16-216.3: 設 計 MMICON 的 控 制 程 式 ....................................................................................................................... 16-2第 17 章 SMS: 收 發 手 機 簡 訊 ..................................................................................................................... 17-117.1: 硬 體 安 裝 ...................................................................................................................................................... 17-117.2: SMS 範 例 程 式 ............................................................................................................................................ 17-2第 18 章 馬 達 運 動 控 制 .................................................................................................................................. 18-118.1: Install motion driver ..................................................................................................................................... 18-118.2: Introduction .................................................................................................................................................. 18-318.2.1: System Block Diagram ....................................................................................................................... 18-318.2.2: DDA Technology ................................................................................................................................ 18-318.3: Hardware ...................................................................................................................................................... 18-518.3.1: I-8000 hardware address ..................................................................................................................... 18-518.3.2: LED Indicator ..................................................................................................................................... 18-618.3.3: Hardware Configuration ..................................................................................................................... 18-618.3.4: Pin assignment of connector CN2 ....................................................................................................... 18-918.4: Software ...................................................................................................................................................... 18-13I/O connection: ............................................................................................................................................. 18-13Setting commands: ........................................................................................................................................ 18-14M_regist Register one I-8091 ............................................................................................................. 18-14M_r_sys Reset all setting ................................................................................................................... 18-15M_s_var Set motion system parameters ............................................................................................. 18-16M_s_dir Define output direction of axes ........................................................................................... 18-17M_s_mode Set output mode ................................................................................................................... 18-17M_s_serv Set servo ON/OFF ............................................................................................................... 18-18M_s_nc Set N.O. / N.C. ................................................................................................................. 18-18Stop commands: ............................................................................................................................................ 18-19M_stpx Stop X axis ........................................................................................................................ 18-19M_stpy Stop Y axis ........................................................................................................................ 18-19M_stpall Stop X & Y axes ............................................................................................................... 18-19Simple motion commands: ............................................................................................................................ 18-20M_lsporg Low speed move to ORG .................................................................................................. 18-20M_hsporg High speed move to ORG ................................................................................................. 18-20M_lsppmv Low speed pulse move ...................................................................................................... 18-21M_hsppmv High speed pulse move .................................................................................................. 18-21M_nsppmv Normal speed pulse move .............................................................................................. 18-22M_lspmv Low speed move ............................................................................................................ 18-22M_hspmv High speed move ............................................................................................................ 18-23M_cspmv Change speed move ........................................................................................................ 18-23<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 5 <strong>ICP</strong> <strong>DAS</strong>


M_slwdn Slow down to low speed .................................................................................................... 18-24M_slwstp Slow down to stop ............................................................................................................. 18-24Interpolation commands: ............................................................................................................................... 18-25M_intp Move a short distance on X-Y plane ................................................................................. 18-25M_intln Move a long distance on X-Y plane .................................................................................. 18-26M_intln2 Move a long distance on X-Y plane .................................................................................. 18-27M_intcl2 Move a circle on X-Y plane .............................................................................................. 18-28M_intar2 Move a arc on X-Y plane .................................................................................................. 18-29M_intstp Test X-Y plane moving command .................................................................................... 18-30I-8090 encorder commands: .......................................................................................................................... 18-31M_r_enco Reset I-8090‟s encorder value to 0 .................................................................................... 18-31第 19 章 以 太 網 通 訊 與 安 全 防 護 .................................................................................................................. 19-119.1: 網 路 安 全 防 護 .............................................................................................................................................. 19-119.2: 使 用 UDP 來 傳 遞 或 接 收 訊 息 到 PC / HMI 或 設 備 ............................................................................. 19-319.3: 使 用 TCP / IP Client 功 能 來 傳 送 / 接 收 / 主 動 回 報 訊 息 .................................................................. 19-5第 20 章 備 援 系 統 ( 冗 餘 系 統 ) ...................................................................................................................... 20-120.1: XP-8xx7-CE6 備 援 系 統 .............................................................................................................................. 20-120.2: WP-8xx7 備 援 系 統 ...................................................................................................................................... 20-5第 21 章 連 接 M-7000 系 列 MODBUS RTU I/O ......................................................................................... 21-121.1: 使 用 DCON Utility 來 對 M-7000 模 塊 作 初 始 設 定 ............................................................................... 21-221.2: 編 寫 操 控 M-7000 模 塊 的 程 式 ................................................................................................................. 21-6第 22 章 連 接 MODBUS TCP/IP I/O ........................................................................................................... 22-122.1: I-8KE8-MTCP I/O 簡 介 ............................................................................................................................... 22-122.2: 編 寫 程 式 操 控 I-8KE8-MTCP I/O ............................................................................................................... 22-4第 23 章 連 接 FRNET 快 速 I/O ................................................................................................................... 23-123.1: FRnet I/O 簡 介 ............................................................................................................................................. 23-323.2: 編 寫 FRnet I/O 程 式 .................................................................................................................................... 23-523.3: 使 用 FR_B_A 來 降 低 程 式 的 大 小 .............................................................................................................. 23-8第 24 章 使 用 COM PORT 函 式 來 讀 / 寫 RS-232/422/485 .......................................................................... 24-124.1: 主 動 對 設 備 一 問 一 答 方 式 ...................................................................................................................... 24-224.2: 被 動 等 待 設 備 傳 資 料 過 來 方 式 .............................................................................................................. 24-324.3: 每 隔 一 段 時 間 主 動 回 報 資 料 方 式 .......................................................................................................... 24-424.4: 更 事 件 發 生 時 主 動 回 報 資 料 方 式 .......................................................................................................... 24-5<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6 <strong>ICP</strong> <strong>DAS</strong>


本 書 提 供 中 , 英 文 版 的 電 子 檔 , 路 徑 如 下 :相 關 參 考 資 料English manual :檔 名 為 “user_manual_i_8xx7.pdf“iP-8xx7, I-8000 & µPAC-7186, I-7188 CD: \napdos\isagraf\8000\english_manu\WP-8xx7 CD: \napdos\isagraf\wp-8xx7\english_manu\XP-8xx7-CE6 CD: \napdos\isagraf\xp-8xx7-ce6\english_manu\VP-2xW7 CD: \napdos\isagraf\vp-25w7-23w7\english_manu\中 文 使 用 手 冊 :檔 名 為 “chinese_user_manual_i_8xx7.pdf“iP-8xx7, I-8000 & µPAC-7186, I-7188 CD: \napdos\isagraf\8000\chinese_manu\WP-8xx7 CD: \napdos\isagraf\wp-8xx7\chinese_manu\XP-8xx7-CE6 CD: \napdos\isagraf\xp-8xx7-ce6\chinese_manu\VP-2xW7 CD: \napdos\isagraf\vp-25w7-23w7\chinese_manu\各 <strong>ISaGRAF</strong> PAC 的 快 速 上 手 手 冊 ( 使 用 手 冊 ) :http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 畫 面 右 方 的 Manual網 路 更 新 資 訊 :<strong>ISaGRAF</strong> IO 函 式 庫 、 驅 動 程 式 以 及 手 冊 的 更 新 訊 息 請 參 考http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 畫 面 右 方 的 Driver , Manual技 術 服 務 :請 您 與 當 地 的 代 理 商 聯 絡 或 E-mail 至 service@icpdas.com更 多 的 產 品 訊 息 請 參 考 www.icpdas.comFAQ:請 上 網 www.icpdas.com - “FAQ” - “Software” - “<strong>ISaGRAF</strong>” 查 看 FAQ ( 常 被 詢 問 的 問題 )或 http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 畫 面 右 方 的 FAQ或 http://www.icpdas.com/faq/isagraf.htm<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7 <strong>ICP</strong> <strong>DAS</strong>


<strong>ISaGRAF</strong> 控 制 器 性 能 比 較 表 一PACsXP-8xx7-CE6WP-8xx7W-8347W-8747W-8337W-8737VP-25W7VP-23W7VP-2117CPULX 800500 MHzPXA270, 520MHz 或 相 容Strong-ARM206 MHz或 相 容PXA270, 520MHz 或 相 容80186, 80 MHz或 相 容iP-8447iP-8847 80186, 80 MHzI-8437-80 或 相 容I-8837-80I-8437I-8837 80188, 40 MHzI-8417 或 相 容I-8817PAC-5x07(P)PAC- 80186, 80 MHz7186EG 或 相 容PAC-7186PEG一 般 執 行速 度 比相 較 於 I-8417一 般 浮 點 運 算速 度 比( 掃 描 時 間 ) ( 掃 描 時 間 )約 10 ~ 50 倍(3 ~ 15 ms)約 10 ~ 30 倍(3 ~ 15 ms)大 約10 ~ 20 倍(3 ~ 15 ms)約 10 ~ 30 倍(3 ~ 15 ms)約 4 倍(2 ~ 25 ms)大 約 4 倍(2 ~ 25 ms)大 約 1 倍(5 ~ 100 ms)大 約 4 倍(2 ~ 5 ms)約 10 ~ 50 倍(3 ~ 15 ms)乙 太網 路2 ports10/100 Mbps約 10 ~ 30 倍(3 ~ 15 ms) 2 ports10/100 Mbps大 約10 ~ 20 倍(3 ~ 15 ms)約 10 ~ 30 倍(3 ~ 15 ms)約 0.8 倍(10 ~ 125 ms)大 約 0.8 倍(10 ~ 125 ms)大 約 0.2 倍(25 ~ 500 ms)大 約 0.8 倍(10 ~ 125 ms)1 port10 Mbps1 port10/100 Mbps1 port10/100 Mbps2 ports10/100 Mbps<strong>ISaGRAF</strong>程 式 碼容 量 限 制(bytes)2 MB1 MB1 MB64 KB可 供 程 式運 作 的 記憶 體 容 量(bytes)大 約200 ~ 400MB大 約20 ~ 40 MB大 約20 ~ 40 MB大 約768 KB大 約768 KB1 port 64 KB10 Mbps 大 約512 KB-1 port10/100 MbpsI-7188EG 80188, 40 MHz 大 約 1 倍 大 約 0.2 倍I-7188XG或 相 容 (5 ~ 100 ms) (25 ~ 500 ms) -注 意 : W-8xx7 與 I-8x37 均 已 停 產 , 請 選 用 相 容 產 品 WP-8x47 與 iP-8x47.大 約768 KB64 KB 大 約640 KB1 port10 Mbps 大 約512 KB<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8 <strong>ICP</strong> <strong>DAS</strong>


<strong>ISaGRAF</strong> 控 制 器 性 能 比 較 表 二XPAC, WinPAC 系 列 與 iPAC:OS WinCE MiniOS7型 號Modbus TCP Master( 最 大 連 接 數 )Modbus RTU/ASCII Master功 能 方 塊 (Max.)Modbus RTU/ASCII Master通 訊 串 口 (Max.) *3Modbus RTU Slave通 訊 串 口 (Max.) *3Modbus TCP/IP Slave連 線 數 *4XP-8xx7*1WP-8x37/WP-8x47*1iP-8447/iP-8847*1100 台 設 備 -( 每 port) ( 全 部 )256 12833 port 10 port 2 portCOM1 ~ 33 1 ~ 14 1 ~ 59 port 5 port 2 portCOM1 ~ 33 1 ~ 8 1 或 2/364 32 6Modbus 位 址 範 圍 1 ~ 8191 1 ~ 4095VGA 解 析 度 (Max.) 1024x768 1024x768/800x600 -USB 串 口 *5 2 2/1 -電 池 備 援 SRAM *6 512 KBPAC 與 PAC 資 料 交 換 Ebus Fbus, Ebus發 送 E-mail ( 可 夾 帶 附 件 ) *7 是備 援 乙 太 網 路 串 口 *8 是Mbus24r 與 mbus24r1 方 塊是Mbus_xr 與 Mbus_xr1 方 塊 *9 是 -可 支 援 軟 體 功 能 ( 需 搭 配 選 購 設 備 )支 援 FRnet I/O *10 是支 援 CAN/CANopen *11 是支 援 VW Sensor是支 援 新 備 援 系 統 *12 是 -可 支 援 之 遠 程 I/O 模 組 ( 選 配 )支 援 Ethernet I/O 是 ( 搭 配 I-8KE4/E8-MTCP) -支 援 I-7K/87K I/O 模 組(* 只 支 持 1 個 COM 埠 )最 大 可 連 接 數 量 : 255 64COM 3 或 4 2 或 3 2 或 3 或 4<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9 <strong>ICP</strong> <strong>DAS</strong>


ViewPAC 系 列 :OS WinCE MiniOS7型 號 VP-25W7/VP-23W7 VP-2117Modbus TCP Master( 最 大 連 接 數 )100 台 設 備 -Modbus RTU/ASCII Master( 每 port) ( 全 部 )功 能 方 塊 (Max.)256 128Modbus RTU/ASCII Master10 port 2 port通 訊 串 口 (Max.) *3 COM 2, 3, 5 ~ 14 1 ~ 3, 5Modbus RTU Slave5 port 2 port通 訊 串 口 (Max.) *3 COM 2, 3, 5 ~ 8 1 或 2/3Modbus TCP/IP Slave 連 線 數 *4 32 6Modbus 位 址 範 圍 1 ~ 8191 1 ~ 4095LCD 螢 幕 TFT 5.7”/3.5” STN觸 控 式 面 板 是 / - -VGA 解 析 度 (Max.) 640x480/320x240 128x64USB 串 口 *5 1 -電 池 備 援 SRAM *6 512 KBPAC 與 PAC 資 料 交 換 Ebus Fbus, Ebus發 送 E-mail ( 可 夾 帶 附 件 ) *7 是備 援 乙 太 網 路 串 口 *8 是 -Mbus24r 與 mbus24r1 方 塊是Mbus_xr 與 Mbus_xr1 方 塊 *9 是 -可 支 援 軟 體 功 能 ( 需 搭 配 選 購 設 備 )支 援 FRnet I/O *10 是支 援 CAN/CANopen *11 是支 援 VW Sensor是支 援 新 備 援 系 統 *12 是 -可 支 援 之 遠 程 I/O 模 組 ( 選 配 )支 援 Ethernet I/O 是 ( 搭 配 I-8KE4/E8-MTCP) -支 援 I-7K/87K I/O 模 組最 大 可 連 接 數 量 : 255 64(* 只 支 持 1 個 COM 埠 )COM 2 或 3<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10 <strong>ICP</strong> <strong>DAS</strong>


I-8000, iPAC 系 列 與 WinPAC:OS MiniOS7 WinCE型 號Modbus TCP Master( 最 大 連 接 數 )Modbus RTU/ASCII Master功 能 方 塊 (Max.)Modbus RTU/ASCII Master通 訊 串 口 (Max.) *3Modbus RTU Slave通 訊 串 口 (Max.) *3Modbus TCP/IP Slave連 線 數 *4I-8417/8817I-8x37-80*1iP-8447iP-8847*1WP-8x37/WP-8x47*1- 100 台 設 備( 全 部 ) ( 每 port)64 128 2562 port 10 portCOM 1, 3, 4, 5 1 ~ 5 1 ~ 142 port 5 portCOM 1, 2 1, 3 1 or 2/3 1 ~ 80 4 6 32Modbus 位 址 範 圍 1 ~ 4095 1 ~ 8191VGA 解 析 度 (Max.) - 1024x768/800x600USB 串 口 *5 - 2/1電 池 備 援 SRAM *6 選 購 512 KBPAC 與 PAC 資 料 交 換 Fbus Fbus, Ebus Ebus發 送 E-mail ( 可 夾 帶 附 件 )*7 - 是備 援 乙 太 網 路 串 口 *8 - 是 是Mbus24r 與 mbus24r1 方 塊 - 是Mbus_xr 與 Mbus_xr1 方 塊 *9 - 是可 支 援 軟 體 功 能 ( 需 搭 配 選 購 設 備 )支 援 FRnet I/O *10 - 是支 援 CAN/CANopen *11 - 是支 援 VW Sensor支 援 新 備 援 系 統 *12 - 是可 支 援 之 遠 程 I/O 模 組 ( 選 配 )支 援 Ethernet I/O( 搭 配 I-8KE4/E8-MTCP)支 援 I-7K/87K I/O 模 組(* 只 支 持 1 個 COM 埠 )是- 是最 大 可 連 接 數 量 : 64 255COM 3 或 4 2 或 3 或 4 2 或 3<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11 <strong>ICP</strong> <strong>DAS</strong>


I-7188, μPAC 系 列 :OS型 號Modbus RTU/ASCII Master功 能 方 塊 (Max.)Modbus RTU/ASCII Master通 訊 串 口 (Max.) *3Modbus RTU Slave通 訊 串 口 (Max.) *3Modbus TCP/IP Slave連 線 數 *4MiniOS7I-7188 XG I-7188 EG PAC-7186EG/PEG*2( 全 部 )64 128COM2, 3 COM1, 2, 32 portCOM1 或 2/30 4 6PAC-5x07*1,2Modbus 位 址 範 圍 1 ~ 4095電 池 備 援 SRAM *6 選 購 512 KBPAC 與 PAC 資 料 交 換 Fbus Fbus, Ebus發 送 E-mail ( 可 夾 帶 附 件 ) *7 - 是Mbus24r 與 mbus24r1 方 塊 - 是可 支 援 軟 體 功 能 ( 需 搭 配 選 購 設 備 )支 援 FRnet I/O *10 - 是 -支 援 CAN/CANopen *11 - 是可 支 援 之 遠 程 I/O 模 組 ( 選 配 )支 援 I-7K/87K I/O 模 組(* 只 支 持 1 個 COM 埠 )最 大 可 連 接 數 量 : 64COM 2 或 3註 解 :*1. μPAC-5x07 代 表 產 品 μPAC-5007(P)/5107(P)/5207/5307.I-8x37/I-8x37-80 代 表 產 品 I-8437/8837/8437-80/8837-80.iP-8x47 代 表 產 品 iP-8447/8847.WP-8x37 代 表 產 品 WP-8137/8437/8837.WP-8x47 代 表 產 品 WP-8147/8447/8847.XP-8xx7-CE6 代 表 產 品 XP-8047-CE6/8347-CE6/8747-CE6*2. μPAC-7186PEG 是 具 有 PoE (Power-over-Ethernet) 的 模 組 .μPAC-5007P/5107P 是 具 有 PoE (Power-over-Ethernet) 的 模 組 .*3. I-8000 的 COM5 ~ 20, W-8x47/ 8x37 的 COM5 ~ 14 位 於 I-8112/ I-8114/ I-8142/ I-8144/I-8142i 擴 充 卡 上 ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 12 <strong>ICP</strong> <strong>DAS</strong>


iP-8x47 的 COM5 ~ 20, VP-2117 的 COM5 ~ 16 位 於 I-8112iW/ I-8114W/ I-8114iW/I-8144iW/ I-8144iAW 擴 充 卡 上 ;WP-8x47, WP-8x37 和 VP-25W7/23W7 的 COM5 ~ 14 位 於 I-8112iW/ I-8114W/ I-8114iW/I-8144iW/ I-8144iAW 擴 充 卡 上 ;XP-8x47-CE6 的 COM6 ~ 33, 位 於 I-8112iW/ I-8114W/ I-8114iW/ I-8144iW/ I-8144iAW 擴 充卡 上 ;I-7188/ PAC-7186 的 COM3 ~ 8, 位 於 X5xx X-board 擴 充 卡 上 .PAC-5x07 的 COM3 ~ 8, 位 於 XW5xx XW-board 擴 充 卡 上 .*4. XP-8xx7-CE6 的 乙 太 網 路 通 訊 比 WP-8xx7, VP-2xW7 更 具 效 率 . 最 多 支 持 64 個Modbus TCP/IP 連 線 .W-8x47 的 driver 如 果 是 4.02 版 或 之 前 的 版 本 只 支 持 8 個 Modbus TCP/IP connection.由 4.03 版 driver 起 支 持 最 多 32 個 Modbus TCP/IP connection.如 果 使 用 的 控 制 器 是 WinCon-8347/8747 ( 有 2 個 乙 太 網 路 埠 ), 它 的 OS image 必 需 是 使 用2008 年 7 月 1 日 發 佈 的 版 本 , 網 路 通 訊 才 能 正 常 運 作 .詳 情 請 參 考 www.icpdas.com > FAQ > Software > <strong>ISaGRAF</strong> > 095.*5. XP-8xx7-CE6 上 供 滑 鼠 使 用 的 USB 埠 , 比 WP-8xx7, VP-2xW7 更 具 效 率 .WP-8x37 支 援 2 個 USB 埠 , WP-8x47 支 援 1 個 USB 埠 .*6. I-8x17/8x37-80 搭 配 S256/S512, PAC-7186EG, I-7188EG/XG 搭 配 X607 (128K) / X608(512K), 最 多 可 支 援 1024 個 保 存 變 數 , 也 可 儲 存 資 料 與 時 間 .*7. PAC-7186EG 需 使 用 X607/X608 battery backup SRAM 擴 充 卡 , 若 沒 有 選 購 batterybackup SRAM 只 可 發 送 沒 有 附 件 的 E-mail.*8. 指 的 是 當 PC/HMI 與 其 中 一 個 Ethernet 埠 的 Modbus TCP/IP 斷 線 不 通 時 , PC/HMI 可 以改 去 跟 另 一 個 Ethernet 埠 來 繼 續 通 訊 . ( 請 於 VP-25W7/23W7 上 裝 一 片 I-8135W 卡 , 以 擴增 第 二 個 Ethernet 埠 .)*9. Mbus_xr 與 Mbus_xr1 功 能 方 塊 , 最 多 可 讀 取 120 個 字 元 或 60 個 長 整 數 或 60 個 實 數 .請 參 考 www.icpdas.com > FAQ > Software > <strong>ISaGRAF</strong> > FAQ-101 取 得 更 多 資 訊 .*10. PAC-7186EG 需 選 購 FX-016 擴 充 卡 插 於 控 制 器 內 , 以 支 援 FRnet I/O.VP-25W7/23W7, VP-2117 最 多 支 援 3 片 I-8172W ( 最 多 768 DI 和 768 DO 點 )iPAC-8x47 最 多 支 援 4 片 I-8172W ( 最 多 1024 DI 和 1024 DO 點 ).WP-8x47, WP-8x37 最 多 支 援 8 片 I-8172W ( 最 多 2048 DI 和 2048 DO 點 ).XP-8xx7-CE6, W-8xx7 最 多 支 援 7 片 I-8172W ( 最 多 1792 DI 和 1792 DO 點 ).<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 13 <strong>ICP</strong> <strong>DAS</strong>


*11. XP-8xx7-CE6, PAC-5x07, PAC-7186EG, iP-8x47, WP-8x47, WP-8x37, VP-25W7/23W7, VP-2117與 W-8xx7 支 援 I-7530 (RS-232 轉 CAN 轉 換 器 ) 連 接 至 其 它 的 CAN/CANopen 設 備 .*12. 只 有 XP-8xx7-CE6, WP-8x47, WP-8x37, VP-25W7/23W7 與 W-8x47 有 支 援 新 的 備 援 系 統 , 而W-8x37 沒 有 支 援 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14 <strong>ICP</strong> <strong>DAS</strong>


如 何 選 用 <strong>ISaGRAF</strong> PAC記 憶 體 :1. I-8417, I-8817, I-8437-80, I-8837-80 , I-7188EG, µPAC-7186EG, I-7188XG, VP-2117 與iP-8447 / iP-8847 的 記 憶 體 比 較 受 限 . 這 些 機 型 不 能 執 行 大 於 64K byte 的 <strong>ISaGRAF</strong> 程 式 ( 編譯 完 後 “appli.x8m” 檔 的 大 小 )2. WP-8147, WP-8447, WP-8847 與 VP-25W7, VP-23W7 可 執 行 最 多 到 1M byte 的 <strong>ISaGRAF</strong> 程式 . 程 式 容 量 為 I-8xx7 與 I-7188EG/XG 的 16 倍 大 (XP-8xx7-CE6 則 是 2M byte).CPU 執 行 速 度 :I-8417/8817 , I-7188EG 與 I-7188XG 的 CPU 為 80188, 40MHz 或 相 容 . 它 是 16 位 元 的 CPU. 不 善於 進 行 實 數 ( 浮 點 數 ) 運 算 . 如 果 你 的 應 用 會 做 很 多 實 數 運 算 的 話 , 最 好 是 選 用 WP-8xx7 或VP-25W7 / VP-23W7 或 XP-8xx7-CE6 或 日 後 較 先 進 的 <strong>ISaGRAF</strong> 控 制 器 . 他 們 的 CPU 為 32 位 元 ,他 們 的 的 執 行 速 度 約 為 I-8xx7 及 I-7188EG/XG 的 10 ~ 20 倍 快 , 特 別 是 進 行 實 數 運 時 , 更 時 會比 I-8xx7 及 I-7188EG/XG 快 50 ~ 100 倍 , 主 要 是 因 為 80188 CPU 處 理 實 數 ( 浮 點 數 ) 很 慢 .I-8x37-80 與 iP-8xx7 與 µPac-7186EG 的 執 行 速 度 則 約 為 I-8xx7 及 I-7188EG/XG 的 2 ~ 4 倍 快 .I-8x37-80 與 iP-8xx7 與 µPac-7186EG 處 理 實 數 也 約 為 I-8xx7 及 I-7188EG/XG 的 2 ~ 4 倍 快備 援 / 冗 餘 :XP-8xx7-CE6 與 WP-8xx7 支 持 備 援 功 能 .2 台 PAC 來 構 成 1 個 備 援 系 統 .一 個 是 Main, 一 個 是 Backup. 一 開 始 通 常 是 Main 那 台 會 掌 管 所 更 RS-485 I/O (I-7k & I-87K)或 I-8KE4-MTCP 或 I-8KE8-MTCP 或 RU-87Pn 上 input 與 output 的 控 制 權 . 假 如 Main 死 機了 , Backup 會 接 管 控 制 權 繼 續 運 作 . 所 更 的 Output 需 規 劃 使 用 遠 程 RS-485 或 Ethernet I/O.Input 可 以 是 插 在 第 1~7 槽 的 input 或 RS-485 遠 程 input.網 路 :1. 目 前 WP-8xx7, XP-8xx7-CE6 與 iP-8447 / iP-8847 更 支 持 雙 網 口 , 10/100 M。 I-7188EG,uP-7186EG 及 I-8437-80, I-8837-80 都 只 支 持 單 一 網 口 ( 其 中 uPAC-7186EG 為 10/100 M,其 它 是 10M)。 所 更 <strong>ISaGRAF</strong> 更 網 口 的 控 制 器 都 支 持 Modbus TCP/IP slave 協 議 。I-7188XG與 I-8417/ 8817 與 iP-8417/8817 則 沒 更 網 口 .2. XP-8xx7-CE6, WP-8xx7 與 VP-25W7 / VP-23W7 或 日 後 較 先 進 的 <strong>ISaGRAF</strong> 控 制 器 更 支 持 用UDP/IP 或 TCP/IP 來 收 / 發 使 用 者 自 定 的 字 串 到 PC 或 其 它 的 設 備 上 。 而 I-8417, I-8817,I-7188EG , I-8437-80, I-8837-80, iP-8417, iP-8817 無 此 功 能 (uPAC-7186EG, iP-8x47 更 支 持UDP).視 窗 顯 示 (Windows):WP-8xx7, VP-25W7/23W7 與 XP-8xx7-CE6 控 制 器 支 持 視 窗 顯 示 (VP-25W7 更 Touch screen).WP-8xx6, VP-25W6/23W6 與 XP-8xx6-CE6 支 持 <strong>ISaGRAF</strong> 與 InduSoft(VP-25W6 更 Touch screen)Modbus RTU Slave 通 訊 串 口 :WP-8xx7, VP-25W7, VP-23W7 最 多 可 支 持 5 個 串 口 為 Modbus RTU Slave 串 口 . ( 請 參 閱 它 的 產品 包 裝 盒 內 的 Getting Started Manual 內 的 Appendix G, E 與 A.2)XP-8xx7-CE6 最 多 可 支 持 9 個 串 口 為 Modbus RTU Slave 串 口I-7188EG/XG, 7186EG, iP-8xx7, I-8xx7, VP-2117 最 多 可 支 持 2 個 串 口 為 Modbus RTU Slave串 口 . ( 請 參 閱 各 別 產 品 包 裝 盒 內 的 快 速 上 手 手 冊 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 15 <strong>ICP</strong> <strong>DAS</strong>


第 1 章 安 裝 軟 體 及 硬 體注 意 :本 書 內 出 現 的 I-8xx7 是 I-8417、I-8437、I-8817 和 I-8837 控 制 器 的 縮 寫 .而 WP-8xx7 是 WP-8147/8447/8847 及 WP-8137/8437/8837 的 縮 寫 .而 XP-8xx7-CE6 是 XP-8047-CE6 / XP-8347-CE6 / XP-8747-CE6 的 縮 寫 .而 iP-8xx7 是 iP-8447 / iP-8847 的 縮 寫 .1.1: 安 裝 <strong>ISaGRAF</strong> Ver.3 作 業 帄 台為 了 使 I-8xx7, I-7188EG/XG , µPAC-7186EG, iP-8xx7, WP-8xx7, VP-25W7 / VP-23W7 與XP-8xx7-CE6 控 制 系 統 以 及 <strong>ISaGRAF</strong> 作 業 帄 台 正 常 運 作 , 正 確 地 完 成 各 項 設 定 是 必 要 的 。 本章 將 花 費 您 最 少 的 時 間 完 成 各 項 設 定 。 在 您 開 始 以 <strong>ISaGRAF</strong> 進 行 PAC 嵌 入 式 控 制 系 統 的 程式 設 計 之 前 , 您 必 頇 在 您 的 電 腦 上 先 安 裝 <strong>ISaGRAF</strong> 3.x 版 作 業 帄 台 。硬 體 需 求Pentium 133( 含 ) 以 上 等 級 的 電 腦最 少 32 MB 的 記 憶 體 ( 建 議 能 更 64 MB 以 上 )最 少 128 MB 儲 存 空 間 的 硬 碟最 少 更 一 個 RS-232 序 列 埠軟 體 需 求在 安 裝 <strong>ISaGRAF</strong> 作 業 帄 台 前 , 您 必 頇 先 安 裝 以 下 任 何 一 種 作 業 系 統Windows 95Windows 98Windows NT 3.51 版 或 4.0 版Windows 2000 或 Windows XP 或 日 後 相 容 版安 裝 <strong>ISaGRAF</strong> 作 業 帄 台將 <strong>ISaGRAF</strong> 軟 體 光 碟 片 放 入 光 碟 機 中 , 通 常 具 更 自 動 執 行 程 式 功 能 的 電 腦 將 自 動 執 行"install.bat" 檔 。 如 果 您 的 電 腦 並 不 支 援 此 項 功 能 , 您 可 以 開 啟 檔 案 管 理 員 , 執 行 光 碟 機 目 錄下 的 "install.bat" 檔 。 如 果 無 法 找 到 此 檔 , 您 可 執 行 "<strong>ISaGRAF</strong>.exe" 開 始 安 裝 程 序 。當 您 執 行 "install.bat" 檔 後 將 出 現 如 下 的 對 話 畫 面 , 請 選 擇 您 想 使 用 的 語 言 版 本 , 本 書 將 以 英文 版 作 為 範 例 , 建 議 安 裝 英 文 版 。.當 您 選 擇 安 裝 <strong>ISaGRAF</strong> 作 業 帄 台 以 及 選 擇 欲 使 用 的 語 言 版 本 後 , 按 下 "Install" 鍵 , 並 依 照 之 後出 現 的 對 話 盒 頇 序 地 完 成 安 裝 步 驟 。 第 一 個 對 話 盒 讓 您 選 擇 欲 安 裝 <strong>ISaGRAF</strong> 的 路 徑 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 1-1 <strong>ICP</strong> <strong>DAS</strong>


下 一 個 對 話 盒 詢 問 使 用 者 要 安 裝 哪 些 <strong>ISaGRAF</strong> 程 式 , 預 設 值 建 議 全 部 安 裝當 您 選 擇 了 欲 安 裝 的 程 式 並 按 下 Install 鍵 後 , 將 出 下 面 的 畫 面 顯 示 目 前 安 裝 的 進 度安 裝 完 畢 後 , 您 可 以 開 始 使 用 <strong>ISaGRAF</strong>請 點 選 左 下 角 的 [ 開 始 ]->[ 程 式 集 ] 後 , 您 會 看 到 類 似 如 下 的 畫 面備 註 : 您 必 頇 安 裝 <strong>ISaGRAF</strong> 軟 體 所 提 供 的 硬 體 保 護 鎖 在 您 電 腦 的 帄 行 埠 才 能 使 用 <strong>ISaGRAF</strong> 所更 的 功 能 , 當 您 確 信 安 裝 好 保 護 鎖 並 執 行 <strong>ISaGRAF</strong> 的 [Help]->[About] 後 出 現 “Maximumnumber of IO variables: 32”, 表 示 <strong>ISaGRAF</strong> 無 法 找 到 保 護 鎖 , 請 您 將 您 的 個 人 電 腦 重 新 開 機 ,並 且 再 執 行 <strong>ISaGRAF</strong> 的 [Help]->[About] 一 次 。 如 果 仍 然 出 現 “Maximum number of IO variables:32”, 表 示 保 護 鎖 的 驅 動 程 式 安 裝 失 敗 , 若 您 是 使 用 <strong>ISaGRAF</strong>-80 請 您 執 行 <strong>ISaGRAF</strong> 光 碟 中 的\Sentinel5382\setup.exe, 若 是 其 他 版 本 的 <strong>ISaGRAF</strong> 請 執 行 光 碟 中 \Sentinel\setup.exe, 並 將 您 的個 人 電 腦 重 新 開 機 。若 硬 體 保 護 鎖 為 USB 型 態 的 , 則 需 在 安 裝 完 <strong>ISaGRAF</strong> 後 去 安 裝 <strong>ISaGRAF</strong>CD-ROM:\Sentinel\SSD5411-32bit.exe.Windows NT 使 用 者 的 注 意 事 項<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 1-2 <strong>ICP</strong> <strong>DAS</strong>


如 果 您 使 用 Windows NT 作 業 系 統 , 您 需 要 在 <strong>ISaGRAF</strong> 作 業 帄 台 下 的 子 目 錄 "EXE" 內 的"isa.ini" 檔 內 加 入 一 行 ”NT=1”, 如 果 您 將 <strong>ISaGRAF</strong> 安 裝 在 C 硬 碟 , 您 會 在 下 面 路 徑 找 到 該檔C:\isawin\exe\isa.ini您 可 以 使 用 任 何 ASCII 文 字 編 輯 器 ( 例 如 Notepad 或 UltraEdit32) 開 啟 "isa.ini", 找 到 [WS001]標 頭 ( 應 該 在 檔 案 的 最 上 方 ), 在 [WS001] 部 分 的 任 何 部 分 加 入 如 下 的 敘 述[WS001]NT=1Isa=C:\ISAWIN為 了 在 Windows NT 環 境 下 RS-232 通 訊 能 正 常 運 作 ,NT=1 這 行 敘 述 一 定 要 加 入 。4. 若 PC 是 Windows 2000, 更 時 在 關 閉 <strong>ISaGRAF</strong> 視 窗 時 會 卡 住 約 20 ~ 40 秒 , 這 個 現 象可 能 是 因 為 Window 2000 內 的 “CTFMON.EXE” 程 序 . 請 建 立 一 個 “<strong>ISaGRAF</strong> projectmanager” 的 捷 徑 , 然 後 勾 選 以 下 的 項 目 來 避 免 這 個 ” 卡 住 ” 的 現 象 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 1-3 <strong>ICP</strong> <strong>DAS</strong>


1.2: 安 裝 <strong>ICP</strong> <strong>DAS</strong> Utilities For <strong>ISaGRAF</strong>“<strong>ICP</strong> <strong>DAS</strong> Utilities For <strong>ISaGRAF</strong>” 包 含 3 個 主 要 項 目I/O library (For IsaGRAF PAC)Modem_Link utilityAuto-scan I/O utility在 安 裝 <strong>ICP</strong> <strong>DAS</strong> Utilities For <strong>ISaGRAF</strong> 前 需 先 安 裝 <strong>ISaGRAF</strong> 軟 體 作 業 帄 台 , 如 果 您 尚 未 安 裝<strong>ISaGRAF</strong> 作 業 帄 台 , 請 參 考 1.1 節 安 裝 後 再 繼 續 下 列 步 驟 。您 手 中 的 <strong>ICP</strong> <strong>DAS</strong> CD-ROM 內 包 含 您 所 需 要 的 <strong>ICP</strong> <strong>DAS</strong> Utilities For <strong>ISaGRAF</strong>, 請 將 此CD-ROM 放 入 光 碟 機 內 , 以 下 詳 細 的 步 驟 將 引 導 您 完 成 安 裝 。在 CD-ROM 內 的 \napdos\isagraf\ 目 錄 , 請 執 行 “setup.exe”注 意 :如 果 你 沒 更 <strong>ICP</strong> <strong>DAS</strong> CD-ROM 或 找 不 到 “\napdos\isagraf\setup.exe”, 可 從http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 點 選 畫 面 右 方 Driver 內 去 下 載“<strong>ICP</strong> <strong>DAS</strong> Utilities For <strong>ISaGRAF</strong>.zip”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 1-4 <strong>ICP</strong> <strong>DAS</strong>


1.3: PAC 硬 體 相 關 設 定關 於 PAC 硬 體 相 關 設 定 , 例 如 IP address, 控 制 器 的 站 號 , Modbus RTU slave port 的 設 定 , 通訊 串 口 的 接 腳 圖 ... 等 , 請 參 考 個 別 PAC 的 快 速 上 手 手 冊 , 放 於 PAC 包 裝 盒 內 附 的 CD-ROM內WP-8xx7 : \napdos\isagraf\wp-8xx7\chinese_manu\chinese_getting_started_wp-8xx7.pdfXP-8xx7-CE6 : \napdos\isagraf\xp-8xx7-ce6\chinese_manu\getting-started-xp-8xx7-ce6-chinese.pdfVP-2xW7 CD: \napdos\isagraf\vp-25w7-23w7\chinese_manu\chinese-getting-started-vp-2xw7.pdfI-8000 & I-7188 CD:iP-8xx7: \napdos\isagraf\ip8000\chinese_manu\ ipac-8x47_getting_started_chinese.zipµPAC-7186EG, I-7188EG/XG : \napdos\isagraf\7188eg\chinese_manu\718xegxg_getting_started_chinese.zipVP-2117 CD: \\napdos\isagraf\vp2k\chinese_manu\ vp-2117_getting_started_chinese.zip或 上 網 下 載 http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 按 下 畫 面 右 方 的 Manual<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 1-5 <strong>ICP</strong> <strong>DAS</strong>


第 2 章 <strong>ISaGRAF</strong> 程 式 設 計 基 礎注 意 :本 書 內 的 出 現 的 I-8xx7 是 I-8417、 I-8437、 I-8817 和 I-8837 控 制 器 的 縮 寫 .而 WP-8xx7 是 WP-8147/8447/8847 及 WP-8137/8437/8837 的 縮 寫 .而 XP-8xx7-CE6 是 XP-8047-CE6 / XP-8347-CE6 / XP-8747-CE6 的 縮 寫 .而 iP-8xx7 是 iP-8447 / iP-8847 的 縮 寫 .2.1: 一 個 簡 單 的 階 梯 圖 程 式 (LD)本 章 使 用 簡 單 的 例 子 來 說 明 五 種 簡 單 但 是 更 效 率 的 IEC61131-3 語 言 進 行 I-8xx7, WP-8xx7,iP-8xx7, VP-25W7 / VP-23W7, I-7188EG/XG , VP-2117 與 XP-8xx7-CE6 控 制 器 的 程 式 設 計 , 初學 者 請 按 本 章 的 說 明 操 作 練 習 。若 需 要 知 道 如 何 使 用 更 多 <strong>ISaGRAF</strong> 的 功 能 , 可 參 閱 附 錄 E, 或 <strong>ISaGRAF</strong> CD_ROM 中 “<strong>ISaGRAF</strong>USER‟S GUIDE” 手 冊 的 電 子 檔 “<strong>ISaGRAF</strong>.pdf” 或 是 “<strong>ISaGRAF</strong>.doc”。階 梯 圖 語 言 程 式 設 計 基 礎階 梯 圖 程 式 語 言 是 一 種 結 合 contacts ( 輸 入 參 數 ) 和 coils ( 輸 出 參 數 ) 的 圖 形 化 布 林 方 程 式 語言 , 其 與 電 機 人 員 在 工 業 控 制 系 統 上 常 用 的 電 路 圖 表 示 法 類 似 , 階 梯 圖 程 式 語 言 讓 程 式 設 計師 將 硬 體 設 備 的 狀 態 及 其 改 變 情 形 以 圖 示 法 表 示 出 來 。階 梯 圖 語 言 程 式 設 計 範 例我 們 將 依 序 引 導 您 利 用 <strong>ISaGRAF</strong> 作 業 帄 台 建 構 一 個 階 梯 圖 語 言 程 式 。同 時 我 們 會 另 外 建 一 個 結 構 化 文 字 語 言 程 式 (ST), 如 此 在 這 個 <strong>ISaGRAF</strong> 專 案 範 例 中 , 我 們更 2 個 程 式 包 函 在 裏 面 .我 們 把 這 個 專 案 取 名 為 “simpleLD”. 而 此 專 案 內 的 LD 程 式 取 名 為 “LD1” , ST 程 式 取 名為 ”end_init”專 案 名 稱“simpleLD”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-1 <strong>ICP</strong> <strong>DAS</strong>


本 範 例 內 的 變 數 宣 告 :Name Type Attribute DescriptionINIT Boolean Internal 初 值 設 為 TRUE. TRUE 表 示 第 1 個 Scan 周 期M3 Boolean Internal 用 來 表 示 pulse 更 沒 更 產 生OUT01 Boolean Output Output 1OUT02 Boolean Output Output 2OUT03 Boolean Output Output 3T1 Timer Internal 閃 爍 周 期 時 間 , 初 值 設 為 T#1sPulse_No Integer Internal 當 pulse 產 生 時 , 加 1, 初 值 設 為 0階 梯 圖 程 式 “LD1” 全 貌VAL10LED 方 塊 只 更I-8xx7, I-7188EG/XG,uPAC-7186EG, iP-8xx7 更支 持 .結 構 化 文 字 程 式 “end_init” 全 貌INIT := FALSE ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-2 <strong>ICP</strong> <strong>DAS</strong>


範 例 程 式 邏 輯 說 明 :“LD1” 程 式 :在 程 式 執 行 起 來 的 前 15 秒 , 閃 爍 輸 出 Outputs 1, 2, & 3, 閃 爍 周 期 為 “T1” , “T1” 的 初 值 為 1秒 . 15 秒 過 後 , Outputs 1, 2, & 3 會 設 成 FALSE.每 秒 產 生 一 個 Pulse 到 布 林 內 部 變 數 “M3” 內 .每 當 M3 – Pulse 產 生 時 , 將 整 數 變 數 “pulse_No” 的 值 加 1.將 “pulse_No” 的 值 顯 示 到 I-8xx7, iP-8xx7 的 7 段 式 顯 示 Led 上 .ST 程 式 “end_init” :在 本 專 案 的 末 端 , 將 布 林 變 數 “INIT” 的 值 設 為 FALSE. 如 此 INIT 只 會 在 第 1 個 Scan 周 期 時為 TRUE .方 塊 及 一 些 LD 元 件 的 描 素 :TOF: 延 遲 一 個 布 林 值 一 段 時 間 後 才 設 為 FALE.“IN” 參 數 為 布 林 型 態 , 當 它 剛 好 從 TRUE 降 為 FALSE 時 . 此 方 塊 開 始 從 0 秒 計 時 到 “PT”“PT” 參 數 為 計 時 器 型 態 , 它 指 的 是 所 要 延 遲 的 時 間 .“Q” 為 此 方 塊 的 布 林 輸 出 . 當 計 時 時 間 到 達 “PT” 時 , 就 會 被 設 成 FALSE.“ET” 為 此 方 塊 的 計 時 器 輸 出 . ( 本 範 例 沒 更 使 用 它 )BLINK: 閃 爍 一 個 布 林“RUN” 參 數 為 布 林 型 態 , 當 它 為 TRUE 時 , 會 產 生 一 個 閃 爍 的 輸 出 到 “Q” , 周 期 為“CYCLE”.VAL10LED: 顯 示 1 個 整 數 值 到 I-8xx7, iP-8xx7 的 7 段 式 顯 示 Led 上 .“RUN_” 參 數 為 布 林 型 態 . TRUE 就 顯 示 .“FSH_” 參 數 為 布 林 型 態 . TRUE 會 閃 爍 該 顯 示 的 數 字 .“CLK_” 參 數 為 計 時 器 型 態 . 為 閃 爍 的 周 期 時 間 .“VA_I_” 參 數 為 整 數 型 態 , 指 的 是 所 要 顯 示 的 數 字 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-3 <strong>ICP</strong> <strong>DAS</strong>


“N” coil : 當 coil 左 端 的 狀 態 剛 好 由 TRUE 降 為 FALSE 時 , 該 coil 會 產 生 一 個 Pulse 輸 出 .“Retrun” : 當 return 左 端 的 狀 態 為 TRUE 時 , 在 此 return 以 下 的 LD 程 式 不 會 被 執 行 .2.1.1: 程 式 撰 寫啟 動 <strong>ISaGRAF</strong> 作 業 帄 台如 下 圖 所 示 , 選 擇 左 下 方 的 [ 開 始 ]->[ 程 式 集 ]->[ <strong>ISaGRAF</strong> 3.4]->[ Projects]<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-4 <strong>ICP</strong> <strong>DAS</strong>


2.1.1.1: 建 立 <strong>ISaGRAF</strong> 使 用 者 群 組如 下 圖 所 示 , 選 擇 [Select Program Group] -> [ New Group], 輸 入 您 想 建 立 的 群 組 名 稱 , 按 下"OK" 鍵 。<strong>ISaGRAF</strong> 將 依 照 您 輸 入 的 群 組 名 稱 在 "New Project Group" 加 入 一 個 新 的 資 料 夾 , 並 且 在"c:\isawin" 下 亦 同 時 產 生 一 個 對 應 的 資 料 夾 。您 可 以 雙 擊 這 個 新 群 組 名 稱 以 進 入 該 新 群 組 , 或 者 選 擇 這 個 新 群 組 的 名 稱 ( 群 組 名 稱 會 變 亮 ),然 後 按 下 "Select" 鍵 進 入 新 群 組 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-5 <strong>ICP</strong> <strong>DAS</strong>


2.1.1.2: 建 立 新 的 <strong>ISaGRAF</strong> 專 案您 可 以 點 選 "Create New Project" 圖 示 , 並 鍵 入 您 要 的 專 案 名 稱 以 建 立 您 的 <strong>ISaGRAF</strong> 專 案 ,如 果 您 想 要 替 您 的 專 案 加 註 解 , 請 選 擇 [Edit] > [ Set Comment Text]您 現 在 在 "Project Management" 視 窗 可 以 見 到 您 的 專 案 名 稱 , 您 可 以 用 滑 鼠 雙 擊 您 的 專 案 名稱 來 開 啟 它 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-6 <strong>ICP</strong> <strong>DAS</strong>


2.1.1.3: 宣 告 <strong>ISaGRAF</strong> 專 案 變 數在 您 開 始 撰 寫 <strong>ISaGRAF</strong> 程 式 前 您 必 頇 先 宣 告 在 程 式 中 的 各 個 變 數 , 首 先 , 請 點 選"Dictionary" 圖 像 , 再 點 選 "Boolean" 標 籤 宣 告 在 程 式 中 會 用 到 的 布 林 變 數 。您 可 以 利 用 滑 鼠 雙 擊 "Boolean" 標 籤 下 更 顏 色 的 區 域 開 啟 "Boolean Variable" 視 窗 , 並 依 序 鍵入 您 需 要 的 變 數 名 稱 , 本 範 例 中 輸 入 布 林 參 數 名 稱 為 "INIT", 在 "Comment" 欄 加 入 "Flag toindicate first scan cycle or not" 註 解 , 然 後 頇 選 擇 "INIT" 變 數 的 屬 性 , 在 此 範 例 中 "INIT" 的 屬性 為 "Internal", 並 將 ”set to true at init” 打 勾 , 完 成 上 述 步 驟 後 , 按 下 "Store" 鍵 , 儲 存 相 關的 設 定 。如 此 便 宣 告 一 個 布 林 變 數 了 , 在 變 數 後 方 各 欄 提 供 程 式 設 計 者 詳 盡 的 變 數 相 關 訊 息 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-7 <strong>ICP</strong> <strong>DAS</strong>


注 意 : 您 必 頇 確 認 您 欲 宣 告 的 變 數 更 正 確 的 屬 性 , 如 果 您 需 要 改 變 變 數 的 屬 性 , 您 只 需 用 滑鼠 雙 擊 變 數 名 稱 , 您 便 可 重 新 設 定 變 數 的 屬 性 。重 複 上 述 的 步 驟 您 可 以 完 成 "M3" 的 宣 告 , 結 果 會 如 下 圖 所 示 。更 3 個 輸 出 變 數 "OUT01, OUT02, 和 OUT03" 還 沒 更 宣 告 ,<strong>ISaGRAF</strong> 提 供 一 種 簡 便 快 速 的 方法 宣 告 這 一 系 列 同 性 質 的 變 數 , 您 如 果 想 使 用 這 種 方 法 只 需 要 用 滑 鼠 單 擊 "Quick Declaration"圖 像 , 並 在 "NAME" 欄 輸 入 "OUT", 在 "Numbering" 內 的 ”from” 及 "To" 欄 輸 入 序 號數 ( 此 範 例 為 1 到 3), 最 後 選 擇 "Output" 屬 性 , 按 下 "OK" 鍵<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-8 <strong>ICP</strong> <strong>DAS</strong>


然 後 你 會 得 到 如 下 的 視 窗 , 按 1 下 “Save” 儲 存 所 宣 告 的 資 料 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-9 <strong>ICP</strong> <strong>DAS</strong>


接 下 來 宣 告 計 時 器 變 數 (T1), 類 似 上 述 的 步 驟 , 用 滑 鼠 單 擊 Global 設 定 視 窗 上 的 "Timers" 標籤 並 雙 擊 更 顏 色 的 區 域 開 啟 "Timer Variable" 視 窗 , 鍵 入 變 數 名 稱 "T1", 設 定 屬 性 為"Internal", 初 始 值 (Initial Value) 設 定 為 "T#1s", 最 後 按 "Store" 鍵 儲 存 設 定 , 如 下 圖 所 示 。要 宣 告 整 數 變 數 (pulse_No) , 用 滑 鼠 單 擊 Global 設 定 視 窗 上 的 " Integers/Reals " 標 籤 , 並 雙擊 更 顏 色 的 區 域 開 啟 " Integers/Reals Variable" 視 窗 , 鍵 入 變 數 名 稱 "pulse_No", 設 定 屬 性 為"Internal", 格 式 為 “Integer”, 初 始 值 (Initial Value) 設 定 為 "0", 最 後 按 "Store" 鍵 儲 存 設 定 ,如 下 圖 所 示 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-10 <strong>ICP</strong> <strong>DAS</strong>


當 您 設 定 好 全 部 的 變 數 後 您 可 以 點 選 右 上 角 "X" 圖 像 來 關 閉 視 窗 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-11 <strong>ICP</strong> <strong>DAS</strong>


2.1.1.4: 建 立 <strong>ISaGRAF</strong> 範 例 程 式當 您 完 成 所 更 的 變 數 設 定 之 後 , 現 在 可 以 開 始 建 立 LD 範 例 程 式 了 , 請 先 點 選 "Create NewProgram" 圖 像 , 您 會 見 到 "New Program" 視 窗 。首 先 , 在 "Name" 欄 輸 入 "LD1"( 本 LD 範 例 的 名 稱 ), 然 後 在 "Language" 欄 內 選 擇 "Quick LD:Ladder Diagram", 在 "Style" 欄 內 選 擇 "Begin: Main Program", 您 可 以 在 "Comment" 內 加 入 註解 , 不 過 這 不 是 必 頇 的 。此 時 您 已 經 建 立 了 一 個 空 的 LD 程 式 , 您 可 以 用 滑 鼠 雙 擊 "LD1" 名 稱 來 開 啟 程 式 編 輯 器 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-12 <strong>ICP</strong> <strong>DAS</strong>


2.1.1.5: 編 輯 "LD1" 範 例 程 式當 您 用 滑 鼠 雙 擊 "LD1" 後 您 會 看 到 "Quick LD Program" 視 窗 , 如 下 圖 所 示 , 在 "Edit" 選 單 中 點 選"Insert Rung”或 者 , 您 可 以 用 滑 鼠 直 接 點 選 "F2 (Contact On The Left)” 圖 像 , 將 會 產 生 如 下 圖 所 示 的 "QuickLD Program" 視 窗 。用 滑 鼠 點 選 "F7 (Block on the right)" , 可 以 在 郵 標 的 右 方 加 入 1 個 空 的 方 塊 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-13 <strong>ICP</strong> <strong>DAS</strong>


再 用 滑 鼠 點 選 "F7 (Block on the right)" 一 次 , 在 右 方 再 加 入 1 個 空 的 方 塊 .然 後 得 到 如 下 的 視 窗 . 用 滑 鼠 點 選 右 方 的 coil 將 郵 標 移 到 右 方 . 然 點 選 “F5 (Coil)” 以 增 加 1個 coil, 之 後 再 點 選 “F5 (Coil)” 1 次 以 增 加 第 3 個 coil.然 後 得 到 如 下 的 視 窗 .用 滑 鼠 雙 擊 在 右 方 的 方 塊 , 之 後 會 出 現 "Function Block" 視 窗 . 選 取 "BLINK" 方 塊 , 之 後 再 單擊 ”OK”. 若 要 查 看 該 方 塊 的 說 明 , 可 以 單 擊 “Info” .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-14 <strong>ICP</strong> <strong>DAS</strong>


使 用 同 樣 的 方 法 , 把 “TOF” 指 定 給 左 側 的 方 塊 , 如 下 圖 所 示 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-15 <strong>ICP</strong> <strong>DAS</strong>


現 在 我 們 要 開 始 指 定 變 數 或 常 數 給 每 個 元 件 . 用 滑 鼠 雙 擊 左 側 的 Contact, 之 後 “Selectvariable” 視 窗 會 跑 出 來 . 先 選 取 “Scope” 為 “(Global)”, 再 選 取 “Boolean”. 之 後 雙 擊 “INIT”( 你 也 可 以 用 鍵 盤 輸 入 ).使 用 同 樣 的 方 法 指 定 OUT01~ OUT03 到 個 別 對 應 的 Coil, 如 下 圖 所 示 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-16 <strong>ICP</strong> <strong>DAS</strong>


用 滑 鼠 移 動 郵 標 到 ”TOF” 方 塊 ”PT” 參 數 的 左 邊 一 格 , 雙 擊 該 位 置 , 用 鍵 盤 輸 入 T#15s ( 表示 15 秒 ), 然 後 按 下 “OK”.以 同 樣 的 方 法 指 定 T1 給 “BLINK” 方 塊 的 “CYCLE” 參 數 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-17 <strong>ICP</strong> <strong>DAS</strong>


此 時 視 窗 會 如 下 所 示 .接 下 來 要 在 下 方 新 增 一 行 , 先 用 滑 鼠 移 動 郵 標 到 下 方 的 適 當 位 置 , 之 後 點 選 “Edit – Insertrung”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-18 <strong>ICP</strong> <strong>DAS</strong>


我 們 在 這 個 範 例 內 不 頇 要 左 側 的 Contact, 先 用 滑 鼠 點 選 它 , 然 後 再 點 選 “Cut” 把 它 刪 掉 .點 選 “F6 (Block on the left)” , 之 後 雙 擊 新 增 的 方 塊 , 並 指 定 “BLINK” 給 該 方 塊 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-19 <strong>ICP</strong> <strong>DAS</strong>


指 定 T#1s 給 “BLINK” 方 塊 的 “CYCLE” 參 數 , 之 後 會 得 到 如 下 的 視 窗 .移 動 游 標 到 右 方 的 Coil, 然 後 點 選 “Coil/contact type” 幾 次 來 切 換 Coil 到 型 態 “N”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-20 <strong>ICP</strong> <strong>DAS</strong>


用 滑 鼠 雙 擊 “N” Coil 以 指 定 “M3” 給 它 .現 在 , 我 們 還 要 新 增 另 一 行 . 用 滑 鼠 移 動 郵 標 到 下 方 的 適 當 位 置 , 然 後 點 選 “F9 (Return)”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-21 <strong>ICP</strong> <strong>DAS</strong>


移 動 游 標 到 “return”, 之 後 點 選 “F2 (Contact on the left)” 以 在 左 邊 增 加 一 個 Contact.用 滑 鼠 雙 擊 該 Contact, 之 後 指 定 “M3” 給 它 . 並 更 改 它 的 型 態 為 “\” ( 反 相 Contact).<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-22 <strong>ICP</strong> <strong>DAS</strong>


接 下 請 自 行 依 照 先 前 描 素 的 方 法 新 增 第 4 及 第 5 行 , 完 成 後 的 LD 程 式 需 如 下 所 示 .VAL10LED 方 塊 只 更I-8xx7, I-7188EG/XG,iP-8xx7, uPAC-7186EG 更支 持 .儲 存 這 個 LD 程 式 , 之 後 關 閉 它 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-23 <strong>ICP</strong> <strong>DAS</strong>


2.1.1.6: 建 立 ST 程 式 "end_init"在 這 個 專 案 內 , 我 們 需 要 一 個 ST 程 式 來 處 理 INIT 變 數 , 以 滑 鼠 點 選 “Create new program” 以 建立 一 個 新 程 式 . 輸 入 程 式 名 稱 為 “end_init” , 注 解 為 “Handle INIT variable” , Language 為“ST: structured Text” , Style 為 “End: Main program”. 之 後 點 選 “OK”.然 後 我 們 可 以 看 到 更 2 個 程 式 在 這 個 專 案 內 .<strong>ISaGRAF</strong> 每 個 Scan 周 期 都 會 執 行 這 兩 個 程 式 各 1 次 . 其 運 作 原 則 為 先 執 行 “begin” 區 內 的 程式 , 之 後 執 行 “Sequential” 區 , 最 後 再 執 行 “End” 區 . 一 個 <strong>ISaGRAF</strong> Scan 周 期 會 如 下 圖 的 方式 運 作 .Scan all inputs<strong>ISaGRAF</strong>CycleProcess „begin‟ areaProcess „Sequential‟ areaProcess „End‟ areaReflash all outputs<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-24 <strong>ICP</strong> <strong>DAS</strong>


用 滑 鼠 雙 擊 “end_init” 程 式 . 用 鍵 盤 編 好 ST 程 式 後 , 點 選 “save” 然 後 關 閉 它 . 任 何 出 現 在 (*與 *) 內 的 文 字 為 註 解 .INIT := FALSE ;因 為 “INIT” 被 宣 告 成 初 值 為 “TRUE”, 這 個 ST 程 式 會 在 第 1 個 周 期 的 尾 端 把 “INIT” 設 為FALSE 之 後 它 的 值 就 一 直 是 FALSE. 也 就 是 說 , “INIT” 可 用 來 判 定 目 前 程 式 是 不 是 才 剛 開始 執 行 (TRUE: 第 1 個 Scan 周 期 , FALSE: 其 它 周 期 ).<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-25 <strong>ICP</strong> <strong>DAS</strong>


2.1.2: 連 接 輸 入 輸 出 (I/O) 設 備由 於 <strong>ISaGRAF</strong> 是 一 個 開 放 式 的 軟 體 , 很 多 控 制 器 及 PLC 皆 支 援 <strong>ISaGRAF</strong>, 然 而 , 為 了 要 讓 這些 PLC 控 制 器 能 夠 使 用 <strong>ISaGRAF</strong> 程 式 , 首 先 這 些 PLC 控 制 器 的 硬 體 製 造 商 必 頇 將 <strong>ISaGRAF</strong>的 驅 動 程 式 嵌 入 控 制 器 中 ,<strong>ICP</strong> <strong>DAS</strong> 全 系 列 的 <strong>ISaGRAF</strong> PAC 皆 更 將 <strong>ISaGRAF</strong> 驅 動 程 式 嵌入 , 使 其 成 為 強 大 的 、 具 高 可 塑 性 的 工 業 用 控 制 器 。當 您 完 成 您 的 <strong>ISaGRAF</strong> 程 式 後 您 必 頇 將 這 個 範 例 程 式 與 PAC 的 I/O 控 制 系 統 連 接 , 而 <strong>ICP</strong><strong>DAS</strong> 的 IsaGRAF 控 制 系 統 更 一 項 方 便 好 用 的 特 色 可 以 讓 您 不 需 要 實 際 插 上 I/O 模 板 便 可 進 行測 詴 ,I-8xx7, iP-8xx7 控 制 器 上 面 板 的 4 個 按 鍵 可 以 作 為 4 個 數 位 輸 入 , 面 板 上 方 的 3 個 LED燈 號 可 作 為 輸 出 的 訊 號 。Push4key & Show3Led 只 更I-8xx7, iP-8xx7 更 支 持 . 如 果 你 的控 制 器 是 其 它 型 號 , 你 一 樣 可 以連 上 Push4key & Show3Led 來 模擬 , 但 必 需 把 它 們 標 記 為 “virtualboard” ( 虛 擬 板 ).當 您 用 滑 鼠 單 擊 "I/O Connection" 圖 像 之 後 便 會 出 現 "I/O Connection" 視 窗 , 以 本 範 例 為 例 , 您可 以 用 滑 鼠 雙 擊 9 號 插 槽 , 或 者 單 擊 9 號 插 槽 然 後 單 擊 [Edit]->[Set Board/Equipment], 也 可 以叫 出 "I/O Connection" 視 窗 , 點 選 "push4key:4 button on panel of 8xx7" 連 結 以 控 制 器 面 板 上 的 4個 按 鍵 作 為 輸 入 的 I/O Board ( 本 範 例 並 未 用 到 這 4 個 按 鍵 )。注 意 : 編 號 0 到 7 的 I/O 插 槽 是 保 留 給 實 際 的 <strong>ISaGRAF</strong> 控 制 器 I/O 模 板 用 的 , 您 可 以 使 用 編 號8 以 後 的 插 槽 連 結 虛 擬 I/O 板 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-26 <strong>ICP</strong> <strong>DAS</strong>


為 了 建 立 I/O 連 結 您 可 以 用 滑 鼠 雙 擊 10 號 插 槽 並 點 選 "Show3led: 3 indication LED on 8xx7panel" 連 結 控 制 面 板 上 的 3 個 LED 作 為 輸 出 , 此 時 您 的 "I/O Connection" 視 窗 應 如 下 圖 所 示 。Push4key & Show3Led 只 更 I-8xx7, iP-8xx7 更 支 持 .如 果 你 的 控 制 器 是 其 它 型 號 , 你 一 樣 可 以 連 上Push4key & Show3Led 來 模 擬 , 但 必 需 把 它 們 標 記為 “virtual board” ( 虛 擬 板 ).當 您 完 成 I/O 連 結 後 記 得 點 選 "SAVE" 來 儲 存 。注 意 : 為 了 能 夠 成 功 地 編 譯 , 所 更 輸 入 、 輸 出 屬 性 的 變 數 必 頇 經 由 上 述 的 方 法 進 行 I/O 連 結 ,而 且 , 也 只 更 輸 出 , 輸 入 變 數 才 會 出 現 在 "I/O Connections" 視 窗 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-27 <strong>ICP</strong> <strong>DAS</strong>


2.1.3: 編 譯 LD 範 例 程 式為 了 讓 所 更 的 <strong>ISaGRAF</strong> 程 式 都 能 夠 在 <strong>ISaGRAF</strong> 控 制 器 上 正 常 的 運 作 , 程 式 設 計 師 必 頇 選 擇正 確 的 "Compiler Options" 編 譯 選 項 , 您 必 頇 選 擇 "ISA86ASM: TIC Code For Intel" 選項 , 詳 細 步 驟 如 下 所 示 。首 先 , 用 滑 鼠 在 選 單 上 點 選 "MAKE" 選 項 , 然 後 如 下 所 示 點 選 "Compiler Options"。此 時 您 會 見 到 如 下 圖 所 示 , 請 確 認 您 正 確 地 選 擇 如 下 圖 所 示 的 選 項 , 並 按 下 "OK" 鍵 完 成 所 更的 選 擇 。建 議 只 勾 選 “Run two optimizer passes”.但 若 更 使 用 變 數 陣 列 , 不 可 勾 選 第 2 , 第 7 , 第 8 與 第 9 個Optimizer 選 項 . 不 然 變 數 陣 列 值 會 發 生 錯 誤 . 此 時 建 議 只 勾選 第 1 個 Run two optimizer passes 就 好 . ( 請 參 考 第 2.6 節 )編 譯 時 的 訊 息 處 理 !當 您 點 選 "Make Application Code" 圖 示 後 便 開 始 編 譯 此 LD 範 例 程 式 , 如 果 編 譯 過 程 沒 更 出 現任 何 錯 誤 訊 息 , 恭 喜 您 , 您 已 經 成 功 地 完 成 了 一 個 LD 範 例 程 式 。如 果 您 在 編 譯 過 程 中 程 式 出 現 錯 誤 訊 息 , 請 點 選 "CONTINUE" 按 鍵 檢 視 錯 誤 訊 息 代 表 的 意義 , 並 回 到 專 案 編 輯 畫 面 更 正 錯 誤 , 並 重 新 編 譯 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-28 <strong>ICP</strong> <strong>DAS</strong>


2.1.4: 模 擬 LD 專 案IsaGRAF 其 中 一 項 強 大 的 功 能 在 於 它 強 大 的 除 錯 功 能 , 在 您 還 沒 實 際 將 專 案 下 載 至 <strong>ISaGRAF</strong>PAC 中 , 您 可 以 利 用 "SIMULATE"( 模 擬 ) 的 功 能 進 行 除 錯 。在 成 功 地 編 譯 完 成 了 LD 程 式 之 後 , 如 下 圖 所 示 點 選 "SIMULATE" 圖 示 。當 您 點 選 "Simulate" 圖 示 後 會 出 現 3 個 視 窗 , 分 別 是 "<strong>ISaGRAF</strong> Debugger"、 "<strong>ISaGRAF</strong> DebugPrograms" 和 "I/O Simulator" 三 個 視 窗 , 如 果 您 建 立 的 I/O 變 數 名 稱 沒 更 出 現 在 "I/O Simulator"視 窗 , 只 需 要 點 選 "Options" 和 "Variable Names" 選 項 便 可 以 在 "I/O Simulator" 視 窗 中 顯 示 變 數 名稱 。如 下 圖 所 示 , 在 "<strong>ISaGRAF</strong> Debug Program" 視 窗 中 雙 擊 "LD1", 可 以 打 開 <strong>ISaGRAF</strong> 的 ” QuickLD Program” 視 窗 , 並 看 到 您 先 前 所 設 計 的 程 式 。點 選 這 理 可 離 開 程 式 模 擬執 行 模 擬 程 式當 您 在 "<strong>ISaGRAF</strong> Debug Programs" 視 窗 中 用 滑 鼠 雙 擊 "LD1" 後 會 見 到 如 下 畫 面 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-29 <strong>ICP</strong> <strong>DAS</strong>


你 會 看 到 OUT01 ~ OUT03 在 程 式 開 始 執 行 的 前 15 秒 會 以 1 秒 為 周 期 閃 爍 . 而 且 pulse_No 的值 會 每 秒 加 1.您 可 以 在 程 式 進 行 時 調 整 T1 計 時 器 變 數 的 值 , 首 先 , 在 <strong>ISaGRAF</strong> 視 窗 中 點 選 "Dictionary" 圖示 在 "<strong>ISaGRAF</strong> Global Variables" 視 窗 中 點 選 "Timers" 標 籤 , 然 後 以 滑 鼠 雙 擊 "T1" 變 數 名 稱 , 此時 會 開 啟 "Write Timer Variable" 視 窗 , 您 可 以 在 "Enter New Value:" 欄 位 中 將 "t#1s" 改 成"t#500ms" 並 按 下 "Write" 鈕 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-30 <strong>ICP</strong> <strong>DAS</strong>


2.1.5: 下 載 及 除 錯 LD 範 例 程 式最 終 , 您 可 將 此 LD 範 例 程 式 下 載 至 IsaGRAF PAC 上 運 作 , 在 下 載 之 前 您 必 頇 在 控 制 器 與PC 間 建 立 通 訊 。首 先 , 請 您 用 滑 鼠 在 "<strong>ISaGRAF</strong> Programs" 視 窗 中 點 選 "Link Setup" 圖 示 , 當 您 點 選 "Link Setup"圖 示 後 如 下 圖 所 示 的 視 窗 將 會 出 現 。一 般 <strong>ISaGRAF</strong> PAC 出 廠 預 設 的NET-ID 為 1 號若 想 使 用 RS-232 , RS-485 來 連 ,一 般 是 選 PC 的 COM1 ~ COM9.若 想 使 用 Ethernet 來 連 接 到PAC, 則 需 選 取 “ETHERNET”,然 後 再 進 入 Setup 內 , 填 入 Portnumber 為 502 號 , 並 填 入 你 要連 接 的 那 台 PAC 的 Internetaddress, 例 如 192.168.255.1. 注意 你 的 PC 需 在 同 一 個 網 段 內 才能 連 上 該 PAC, 例 如 PC 的IP = 192.168.255.15其 中 "Target Slave Number" 是 第 1 章 1.3.1 節 I-8xx7 控 制 系 統 的 Net-ID,Net-ID 的 位 置 在 I-8xx7控 制 器 的 右 下 方 。Net-ID 是 設 定 您 控 制 器 的 編 號 , 本 範 例 您 的 控 制 器 是 設 為 1, 而“Communication Port” 是 指 通 訊 線 連 結 到 你 電 腦 所 連 接 的 通 訊 埠 , 通 常 不 是 Com1 就 是 Com2。( 關 於 I-7188EG/XG , µPAC-7186EG, iP-8xx7, WP-8xx7, VP-25W7/23W7, XP-8xx7-CE6 的NET-ID 設 定 , 請 參 閱 它 們 各 自 的 “ 快 速 上 手 手 冊 ” )控 制 器 的 通 訊 參 數 和 您 電 腦 上 的 通 訊 參 數 必 需 設 定 為 一 樣 的 。 在 I-8xx7, I-7188EG/XG 控 制 器的 通 訊 埠 Com1(RS232) 及 Com2(RS232) 的 預 設 參 數 如 下 :Baudrate: 19200Parity: noneFormat: 8 bits, 1 stopFlow control: none注 意 :您 必 需 確 定 電 腦 上 的 通 訊 埠 和 <strong>ISaGRAF</strong> PAC 是 否 能 夠 正 常 通 訊 , 若 不 行 則 必 需 修 改 電 腦 通 訊埠 的 設 定 讓 電 腦 和 控 制 器 能 夠 順 利 溝 通 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-31 <strong>ICP</strong> <strong>DAS</strong>


下 載 LD 範 例 程 式在 您 下 載 LD 範 例 程 式 到 控 制 器 之 前 , 您 必 需 先 確 認 電 腦 和 控 制 器 之 間 的 連 線 是 否 正 常 , 若 正常 無 誤 , 按 下 <strong>ISaGRAF</strong> 程 式 視 窗 中 的 Debug 鍵 , 開 啟 如 下 之 畫 面 :若 出 現 程 式 的 名 字 和 “Run” 這 兩 個 字 , 則 表 示 控 制 器 中 更 一 個 應 用 程 式 在 跑 。 若 在 <strong>ISaGRAF</strong>Debugger 視 窗 中 出 現 “Disconnect” 則 表 示 電 腦 和 控 制 器 並 沒 更 連 線 成 功 。最 常 導 致 連 結 失 敗 的 原 因 是 彼 此 之 間 的 通 訊 埠 沒 更 插 好 , 或 是 彼 此 間 的 通 訊 參 數 未 設 正 確 。這 時 您 必 需 重 插 電 腦 上 的 通 訊 線 到 正 確 的 通 訊 埠 或 是 重 設 <strong>ISaGRAF</strong> 程 式 的 連 結 設 定 。若 原 先 控 制 器 內 已 更 應 用 程 式 在 執 行 , 需 先 停 掉 該 應 用 程 式 之 後 才 能 下 載 新 的 應 用 程 式 , 方法 為 在 “<strong>ISaGRAF</strong> Debugger” 視 窗 下 選 取 STOP 鍵 停 止 應 用 程 式 , 此 時 便 可 重 新 下 載 應 用 程 式至 控 制 器 。開 始 下 載 程 式從 “ISAGRAF Debugger” 視 窗 內 按 下 “Download” 鍵 , 接 著 選 擇 “ISA86M:TIC Code For Intel”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-32 <strong>ICP</strong> <strong>DAS</strong>


將 會 開 始 下 載 LD 範 例 程 式 至 控 制 器 內 , 而 在 “<strong>ISaGRAF</strong> Debugger” 視 窗 中 會 出 現 程 式 下 載 進度 的 畫 面 。當 LD 程 式 下 載 完 成 後 , 將 會 出 現 下 面 兩 個 視 窗監 視 LD 範 例 程 式當 您 在 監 視 LD 範 例 程 式 時 , 透 過 <strong>ISaGRAF</strong> 視 窗 畫 面 您 可 以 觀 察 即 時 的 I/O 狀 態 。 在 <strong>ISaGRAF</strong>Debugger 視 窗 中 按 下 “I/O connections” 鍵 開 啟 “I/O connection, 透 過 “I/O Connections” 視 窗會 顯 示 所 更 的 輸 出 及 輸 入 點 的 狀 態 。 另 外 一 個 更 用 的 視 窗 即 “Quick LD program”, 經 由 這 個視 窗 可 以 即 時 的 看 到 LD 程 式 的 執 行 狀 態 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-33 <strong>ICP</strong> <strong>DAS</strong>


雖 然 在 編 寫 和 下 載 <strong>ISaGRAF</strong> 程 式 更 許 多 的 步 驟 , 但 這 些 步 驟 都 是 很 容 易 去 實 作 出 來 。練 習 ! 練 習 ! 練 習 !現 在 您 已 能 夠 成 功 在 <strong>ISaGRAF</strong> 器 控 制 內 建 立 和 執 行 一 個 <strong>ISaGRAF</strong> 程 式 , 但 您 還 是 需 要 透 過練 習 去 建 立 更 多 更 用 的 程 式 , 只 更 透 過 練 習 和 實 作 才 能 讓 自 已 更 得 心 應 手 , 祝 您 好 運 !<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-34 <strong>ICP</strong> <strong>DAS</strong>


2.2: 一 個 簡 單 的 結 構 化 文 字 (ST) 程 式結 構 化 文 字 是 用 於 控 制 器 的 高 階 程 式 語 言 , 結 構 化 文 字 ( 以 後 皆 稱 為 ST) 主 要 可 用 來 撰 寫 一 些其 它 語 言 ( 如 LD, FBD) 不 易 表 示 的 較 複 雜 邏 輯 。ST 程 式 是 由 敘 述 組 成 的 , 每 個 ST 敘 述 必 頇 以 分 號 結 尾 “;” , 在 “(*” 與 “*)”字 為 註 解 。中 間 的 任 何本 範 例 內 的 變 數 宣 告 :Name Type Attribute DescriptionINIT Boolean Internal 初 值 設 為 “TRUE”. 用 TRUE 來 表 示 第 1 個 PLC 周 期K1 Boolean Input 連 到 I-8xx7 面 板 上 的 第 1 個 按 鈕K2 Boolean Input 連 到 I-8xx7 面 板 上 的 第 2 個 按 鈕M1 Boolean Internal 用 來 表 示 K1 剛 剛 被 按 下M2 Boolean Internal 用 來 表 示 K2 剛 剛 被 按 下TEMP Boolean Internal 暫 時 使 用 的 boolean 內 部 變 數COUNT Integer Internal 初 值 設 為 0, 按 K1 & K2 會 改 變 其 值本 範 例 內 含 更 3 個 程 式 . 一 個 名 稱 叫 “LD1” 為 LD 程 式 , 另 外 兩 個 ST 程 式 名 稱 為 “ST1” 及“end_init”, 如 下 圖 .“LD1” 程 式 全 貌 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-35 <strong>ICP</strong> <strong>DAS</strong>


“ST1” 程 式 全 貌 :(* 在 第 1 個 PLC scan 開 啟 Com3 串 口 , 9600 baud rate, 8 char. , no parity, 1 stop bit *)if INIT = TRUE thenTEMP := comopen( 3 , 9600 , 8 , 0 , 1 ) ;end_if ;(* 當 K1 或 K2 更 動 作 時 *)if ( M1 = TRUE ) or ( M2 = TRUE ) then(* 若 為 K1 更 動 作 , COUNT 加 1 *)if M1 = TRUE thenCOUNT := COUNT + 1 ;end_if ;(* 若 為 K2 更 動 作 , COUNT 加 10 *)if M2 = TRUE thenCOUNT := COUNT + 10 ;end_if ;(* 將 COUNT 值 存 入 2 號 integer 陣 列 的 第 5 個 位 址 *)TEMP := ARY_N_W( 2 , 5 , COUNT ) ;TEMP := COMWRITE( 3 , 16#2 ) ; (* 寫 出 1 個 byte = 2 (16 進 位 ) 到 Com3 *)(* 寫 出 1 個 integer 值 (1 個 integer 包 含 4 個 byte) 到 COM3, 該 integer 值 放 於2 號 integer 陣 列 的 第 5 個 位 址 *)TEMP := COMAY_NW( 3 , 2 , 1 , 5 ) ;TEMP := COMWRITE( 3 , 16#3 ) ; (* 寫 出 1 個 byte = 3 (16 進 位 ) 到 Com3 *)end_if ;“end_init” 程 式 全 貌 :INIT := FALSE ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-36 <strong>ICP</strong> <strong>DAS</strong>


範 例 程 式 邏 輯 說 明 :“LD1” 程 式 :取 得 按 鈕 K1 剛 被 按 下 去 的 瞬 間 狀 態 , 存 入 此 “ 瞬 間 狀 態 ” 於 boolean 變 數 “M1”取 得 按 鈕 K2 剛 被 按 下 去 的 瞬 間 狀 態 , 存 入 此 “ 瞬 間 狀 態 ” 於 boolean 變 數 “M2”“ST1” 程 式 :在 第 1 個 PLC 周 期 時 , 開 啟 通 訊 埠 Com3 為 速 率 9600, 字 元 大 小 為 8 個 bit. , 沒 更 同 位 檢 查 ,停 止 位 元 大 小 為 1 個 bit當 K1 被 按 下 時 將 變 數 “COUNT” 值 加 1當 K2 被 按 下 時 將 變 數 “COUNT” 值 加 10將 ”COUNT” 值 用 以 下 的 格 式 , 從 I-8xx7 的 Com3 送 到 PCSTX Value of COUNT ETXLowest byte 2 nd lower byte 3 rd lower byte Highest byteSTX : 封 包 啟 始 字 元 (Byte), 字 元 值 為 2ETX : 封 包 結 尾 字 元 (Byte), 字 元 值 為 3“end_init” 程 式 :在 PLC 周 期 的 end 區 , 將 “INIT” 設 成 FALSE. 如 此 “INIT” 的 值 只 會 在 第 1 個 PLC 周 期 為TRUE.方 塊 及 元 件 說 明 :“P” 接 點 : 當 接 點 的 值 剛 好 由 FALSE 上 升 為 TRUE 時 , 會 在 右 側 產 生 1 個 TRUE 的 脈 衝 .Comopen(PORT, BAUD, CHAR, PARI, STOP) :開 啟 PAC 的 通 訊 埠輸 入 參 數PORT : Integer 欲 開 啟 的 通 訊 埠 , 3:COM3 ,4:COM4, ..., 20:COM20BAUD : Integer 通 訊 速 率 , 2400, 4800, 9600, 19200, 38400, 57600, 115200CHAR : Integer 字 元 大 小 , 7 or 8PARI : Integer 同 位 檢 查 , 0:none, 1:even, 2:oddSTOP : Integer 停 止 位 元 大 小 , 1 or 2回 傳 值 : boolean 正 確 : TRUE , 失 敗 : FALSEAry_N_W(NUM, ADR, DATA) : 存 1 個 長 整 數 (32 bit) 到 整 數 陣 列 內 .輸 入 參 數<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-37 <strong>ICP</strong> <strong>DAS</strong>


NUM : Integer 存 到 幾 號 的 陣 列 (1-6)ADR : Integer 存 到 該 陣 列 內 的 那 個 位 置 (1-256)DATA : Integer 要 存 進 去 的 值回 傳 值 : boolean 正 確 : TRUE , 失 敗 : FALSEComWrite(PORT, DATA) :寫 出 1 個 位 元 組 (Byte) 到 通 訊 埠輸 入 參 數PORT : Integer 欲 使 用 的 通 訊 埠 , 3:COM3 ,4:COM4, ..., 20:COM20DATA : Integer 欲 寫 出 的 位 元 組 (0 - 255)回 傳 值 : boolean 正 確 : TRUE , 失 敗 : FALSEComAy_NW(PORT, ARY_NO, NUM, POS) : 寫 出 1 個 長 整 數 陣 列 到 通 訊 埠輸 入 參 數PORT : Integer 欲 使 用 的 通 訊 埠 , 3:COM3 ,4:COM4, ..., 20:COM20ARY_NO : Integer 欲 寫 出 的 陣 列 號 碼 (1-6)NUM : Integer 該 陣 列 內 更 幾 個 整 數 要 寫 出 (0-256)POS : Integer 從 陣 列 內 的 第 幾 號 位 置 開 始 寫 出 (1-256)回 傳 值 : boolean 正 確 : TRUE , 失 敗 : FALSE<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-38 <strong>ICP</strong> <strong>DAS</strong>


第 一 步 需 建 立 1 個 專 案 .在 "<strong>ISaGRAF</strong> Project Management" 視 窗 內 以 滑 鼠 點 選 "Create New Project" , 之 後 輸 入 一 個 專案 名 稱 .宣 告 變 數 如 下 表請 參 閱 第 2.1.1.3 節 的 方 法 .Name Type Attribute DescriptionINIT Boolean Internal 初 值 設 為 “TRUE”. 用 TRUE 來 表 示 第 1 個 PLC 周 期K1 Boolean Input 連 到 I-8xx7 面 板 上 的 第 1 個 按 鈕K2 Boolean Input 連 到 I-8xx7 面 板 上 的 第 2 個 按 鈕M1 Boolean Internal 用 來 表 示 K1 剛 剛 被 按 下M2 Boolean Internal 用 來 表 示 K2 剛 剛 被 按 下TEMP Boolean Internal 暫 時 使 用 的 boolean 內 部 變 數COUNT Integer Internal 初 值 設 為 "0", 按 K1 & K2 會 改 變 其 值建 立 新 的 LD 程 式 , 命 名 為 “LD1” 並 編 成 如 下 圖 的 程 式 內 容 .請 參 閱 第 2.1.1.4 節 的 方 法 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-39 <strong>ICP</strong> <strong>DAS</strong>


使 用 與 第 2.1.1.6 節 相 同 的 步 驟 , 建 立 一 個 ST 程 式 “end_init” 如 以 下 的 程 式 內 容 , 切 記 此“end_init” 要 放 在 “End” 區INIT := FALSE ;建 立 另 一 個 ST 程 式 “ST1” , 放 在 “Begin” 區 , 輸 如 以 下 的 程 式 碼 . 方 法 可 參 閱 第 2.1.1.6節(* 在 第 1 個 PLC scan 開 啟 Com3 串 口 , 9600 baud rate, 8 char. , no parity, 1 stop bit *)if INIT = TRUE thenTEMP := comopen( 3 , 9600 , 8 , 0 , 1 ) ;end_if ;(* 當 K1 或 K2 更 動 作 時 *)if ( M1 = TRUE ) or ( M2 = TRUE ) then(* 若 為 K1 更 動 作 , COUNT 加 1 *)if M1 = TRUE thenCOUNT := COUNT + 1 ;end_if ;(* 若 為 K2 更 動 作 , COUNT 加 10 *)if M2 = TRUE thenCOUNT := COUNT + 10 ;end_if ;(* 將 COUNT 值 存 入 2 號 integer 陣 列 的 第 5 個 位 址 *)TEMP := ARY_N_W( 2 , 5 , COUNT ) ;TEMP := COMWRITE( 3 , 16#2 ) ; (* 寫 出 1 個 byte = 2 (16 進 位 ) 到 Com3 *)(* 寫 出 1 個 integer 值 (1 個 integer 包 含 4 個 byte) 到 COM3, 該 integer 值 放 於2 號 integer 陣 列 的 第 5 個 位 址 *)TEMP := COMAY_NW( 3 , 2 , 1 , 5 ) ;TEMP := COMWRITE( 3 , 16#3 ) ; (* 寫 出 1 個 byte = 3 (16 進 位 ) 到 Com3 *)end_if ;注 意 :每 個 ST 敘 述 需 以 分 號 ";" 結 尾 . 建 議 隨 時 以 滑 鼠 去 點 選 ”Save”, 以 保 安 全<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-40 <strong>ICP</strong> <strong>DAS</strong>


請 使 用 如 2.1.2 節 的 方 法 完 成 I/O 連 結請 使 用 如 2.1.3 節 的 方 法 完 成 編 譯 選 項 的 設 定 , 之 後 編 譯 (Compile) 此 專 案 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-41 <strong>ICP</strong> <strong>DAS</strong>


編 譯 成 功 後 , 點 選 "Simulate" 來 模 擬 專 案 的 執 行 結 果 .模 擬 時 可 開 啟 “dictionary” 視 窗 去 檢 視 “COUNT” 的 值 . 以 滑 鼠 點 選 “K1” 或 “K2”, 可 看 出“COUNT” 的 值 會 發 生 變 化 .模 擬 完 後 接 下 來 可 將 此 專 案 下 載 到 <strong>ISaGRAF</strong> 控 制 器 內 . ( 請 參 閱 第 2.1.5 節 的 方 法 )控 制 器 在 執 行 此 專 案 , 每 當 K1 或 K2 按 鈕 被 按 下 時 , 會 寫 出 6 個 位 元 組 (Byte) 到 Com3. 假如 你 更 可 監 視 RS232 傳 輸 狀 況 的 程 式 , 你 就 可 觀 查 到<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-42 <strong>ICP</strong> <strong>DAS</strong>


2.3: 簡 單 的 功 能 方 塊 圖 程 式功 能 方 塊 圖 程 式 (FDB) 是 一 種 圖 形 程 式 語 言 , 它 允 許 使 用 者 透 過 <strong>ISaGRAF</strong> 函 式 庫 內的 ”Fcuntion” 或 ”Function Block” 來 編 寫 複 雜 的 邏 輯 程 序 程 式 。 在 下 面 的 小 節 裡 , 我 們 會 詳 細 的說 明 如 何 用 <strong>ISaGRAF</strong> 建 立 功 能 方 塊 程 式 。FBD 控 制 程 式 範 例下 面 為 在 這 一 節 裡 FBD 程 式 中 所 使 用 的 變 數 名 稱 。FBD 程 式 圖名 稱 型 態 屬 性 描 述OUT1 Boolean Output 輸 出 變 數OUT2 Boolean Output 輸 出 變 數A1 Integer Internal 內 部 變 數 , 初 始 值 為 0FBD 程 式 說 明假 如 “A1” > 5000, 輸 出 變 數 “OUT1” 等 於 "TRUE".假 如 “A1” < 2000, 輸 出 變 數 “OUT2” 等 於 "TRUE".其 他 狀 況 , 輸 出 變 數 “OUT1” 及 “OUT2” 均 是 "FALSE"2.3.1: 編 寫 FBD 範 例 程 式建 立 FBD 程 式 和 在 2.1 節 所 建 立 對 LD 程 式 是 非 常 類 似 的 , 下 面 我 們 將 詳 細 的 介 紹 如 何 建 立 一個 簡 易 的 FBD 程 式 。建 立 一 個 新 的 FBD 專 案從 "<strong>ISaGRAF</strong> Project Management" 視 窗 單 擊 "Create New Project" 鍵 , 然 後 輸 入 程 式 名 稱"FBD_Exam"。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-43 <strong>ICP</strong> <strong>DAS</strong>


在 您 建 立 新 的 專 案 後 , 在 “<strong>ISaGRAF</strong> Project Management” 視 窗 內 單 擊 “FBD_Exam” 開 啟 FBD專 案 , 在 “<strong>ISaGRAF</strong> Programs” 視 窗 內 單 擊 “Create New Program” 以 開 啟 “New Programs “ 視窗 。首 先 : 在 “Name” 欄 輸 入 “Main”( 本 範 例 的 名 稱 ), 然 後 在 “Language” 欄 內 選 擇 “FBD:Function Block Diagram:”, 在 “Style” 欄 內 選 擇 “Begin: Main Program”, 您 可 以 在 “Comment”內 加 入 註 解 。此 時 您 已 建 立 了 一 個 空 的 FBD 程 式 , 你 可 以 用 滑 鼠 雙 擊 “Main” 名 稱 來 開 啟 編 輯 器 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-44 <strong>ICP</strong> <strong>DAS</strong>


宣 告 變 數在 FBD 範 例 程 式 中 我 們 將 宣 告 3 個 變 數 , 這 3 個 變 數 分 別 為 “OUT1”, “OUT2” 及 “A1”。 宣告 FBD 程 式 變 數 的 方 法 和 在 LD 程 式 中 宣 告 的 一 樣 , 請 參 考 2.1.1.3 節 。編 輯 FBD 程 式在 “<strong>ISaGRAF</strong> Program” 視 窗 中 雙 擊 “Main”, 然 後 單 擊 “Insert function block” 鍵 。 如 下 所 示 。在 所 欲 插 入 功 能 方 塊 的 空 白 處 以 滑 鼠 按 一 下 , 即 會 新 增 一 個 功 能 方 塊 , 以 滑 鼠 雙 擊 新 增 的 功能 方 塊 內 , 選 擇 “> Greater Than”。( 單 擊 “info” 鍵 會 出 現 方 塊 的 功 能 說 明 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-45 <strong>ICP</strong> <strong>DAS</strong>


使 用 相 同 的 程 序 , 在 “Greater Than” 功 能 方 塊 下 增 加 “< Less Than” 功 能 方 塊 。如 上 圖 所 示 , 單 擊 “Insert Variable”, 在 “<strong>ISaGRAF</strong> Select Variable” 視 窗 上 選 取 “Integer/Real”格 式 ,A1 變 數 會 出 現 在 “<strong>ISaGRAF</strong> Select Variable” 視 窗 上 。雙 擊 “A1” 輸 入 變 數 , 把 “A1” 變 數 放 在 “<strong>ISaGRAF</strong> FBD/LD” 視 窗 中 適 當 的 位 置 , 接 著 再 增 加另 一 個 “A1” 及 “OUT1”、 “OUT2” 變 數 , 放 置 的 位 置 如 下 圖 所 示 。接 著 再 增 加 兩 個 常 數 變 數 2000 和 5000, 分 別 放 置 在 A1 的 下 方 。 最 後 “<strong>ISaGRAF</strong> FBD/LDProgram” 視 窗 會 如 下 圖 所 示 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-46 <strong>ICP</strong> <strong>DAS</strong>


接 下 來 我 們 要 完 成 每 個 變 數 和 函 式 方 塊 的 連 接 , 單 擊 “Draw Connection Line” 作 如 下 圖 所 示 的連 接 。上 方 的 A1 變 數 連 接 到 “> Greater Than” 函 式 方 塊 的 IN1 點 , 常 數 變 數 5000 連 接 到 “>GreaterThan” 函 式 方 塊 的 IN2 點 , 下 方 的 A1 變 數 連 接 到 “< Less Than” 函 式 方 塊 的 IN1 點 , 常 數 變 數2000 連 接 到 “< Less Than” 函 式 方 塊 的 IN2 點 。最 後 連 接 OUT1 變 數 到 “> Greater Than” 函 式 方 塊 的 Q 點 , 連 接 OUT2 變 數 到 “< Less Than”函 式 方 塊 的 Q 點 。連 結 I/O 及 編 譯 專 案用 跟 2.1.2 節 及 2.1.3 節 一 樣 的 程 序 來 連 結 I/O 和 編 譯 FBD 範 例 程 式 。 “<strong>ISaGRAF</strong> I/O Connect”視 窗 如 下 圖 所 示 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-47 <strong>ICP</strong> <strong>DAS</strong>


2.3.2: 模 擬 FBD 程 式單 擊 “<strong>ISaGRAF</strong> Programs” 視 窗 下 的 “Simulate” 鍵 來 執 行 模 擬 FBD 程 式 。當 您 按 下 “Simulate” 鍵 時 , “<strong>ISaGRAF</strong> Debugger”, “I/O Simulate” 及 "<strong>ISaGRAF</strong> DebugPrograms" 將 會 開 啟 。 假 如 你 單 擊 “<strong>ISaGRAF</strong> Debug programs” 視 窗 內 的 “Main”,”<strong>ISaGRAF</strong>FBD/LD Program” 視 窗 會 開 啟 並 顯 示 目 前 的 執 行 狀 況 。若 現 在 A1 變 數 設 小 於 2000( 目 前 設 定 為 1000), 則 “OUT2” 輸 出 變 數 為 TRUE, “OUT” 輸 出 變數 為 FALSE。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-48 <strong>ICP</strong> <strong>DAS</strong>


在 “<strong>ISaGRAF</strong> Debug Programs” 視 窗 中 按 下 “Dictionary” 鍵 來 開 啟 “Global Dictionary” 視 窗 ,接 著 選 擇 “Integer/Real” 設 定 A1 變 數 的 值 。在 "Enter New Value" 方 格 內 輸 入 6000, 則 “FBD/LD program” 的 畫 面 將 會 產 生 改 變 。您 可 以 參 考 2.1.5 節 的 步 驟 下 載 FBD 範 例 程 式 到 <strong>ISaGRAF</strong> 控 制 器 中 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-49 <strong>ICP</strong> <strong>DAS</strong>


2.4: 簡 單 的 指 令 集 程 式指 令 集 程 式 為 包 含 了 一 系 列 指 令 的 低 階 程 式 語 言 , 它 的 指 令 一 定 關 聯 於 目 前 結 果 ( 或 IL 暫 存 器 )運 算 元 顯 示 了 目 前 數 值 與 運 算 子 之 間 的 運 算 操 作 , 而 結 果 會 再 儲 存 於 目 前 結 果 內 。IL 程 式 是 一 連 串 的 指 令 。 每 一 個 指 令 必 頇 選 寫 在 每 一 列 的 開 始 , 而 且 必 頇 包 含 一 個 運 算 元 ,一 個 或 多 個 運 算 子 ( 以 逗 號 分 開 ”,”)。 標 籤 及 其 冒 號 必 頇 撰 寫 在 指 令 前 。 假 使 指 令 更 註 解 時 ,註 解 必 頇 寫 在 一 列 的 最 後 , 而 且 必 頇 起 始 於 ”(*” 終 止 於 ”*)”。 指 令 之 間 可 以 插 入 空 的 列 。 空 的列 可 以 加 入 註 解 。本 節 將 描 述 如 何 撰 寫 IL 程 式 , 這 個 IL 程 式 和 ST 及 FBD 程 式 具 更 相 同 的 程 式 功 能 和 變 數 要求 。( 請 參 考 2.2 及 2.3 節 )先 為 IL 程 式 建 立 一 個 專 案 。為 IL 程 式 建 立 一 個 “IL_Exam” 的 專 案 名 稱 , 雙 擊 “IL_Exam”, 再 開 啟 的 “<strong>ISaGRAF</strong> Programs”程 式 視 窗 內 建 立 一 個 “Hello” 程 式 , 在 語 言 種 類 選 項 中 選 擇 “IL :Instraction List”。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-50 <strong>ICP</strong> <strong>DAS</strong>


當 您 按 下 “OK” 鍵 時 , “<strong>ISaGRAF</strong> Programs” 視 窗 將 會 開 啟 , 按 下 “Hello” 鍵 開 啟 IL 程 式 。宣 告 IL 程 式 變 數本 IL 程 式 使 用 和 FBD 程 式 中 相 同 的 變 數 名 稱 , “OUT1” 和 “OUT2” 變 數 及 整 數 變 數 “A1”。請 參 考 2.1.1.3 節 。“Connecting I/O”,”Compiling” 及 “Similate” 的 方 法 均 和 FBD 程 式 相 同 。當 您 連 結 I/O 及 編 譯 IL 程 式 後 , 單 擊 “Simulate” 鍵 , 執 行 結 果 將 如 下 圖 所 示 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-51 <strong>ICP</strong> <strong>DAS</strong>


因 為 “A1” 初 做 值 為 0, 所 以 OUT1 為 FLASE,OUT2 為 TRUE, 改 變 A1 的 變 數 值 為 5001,OUT1 將 變 為 TRUE, 而 OUT2 將 變 為 FALSE。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-52 <strong>ICP</strong> <strong>DAS</strong>


2.5: 簡 單 的 順 序 式 功 能 圖 程 式 (SFC)順 序 式 功 能 圖 (Sequential Function Chart, 簡 稱 SFC) 是 一 種 描 述 循 序 操 作 的 繪 圖 式 語 言 。 圖 中是 用 一 連 串 定 義 明 確 的 步 驟 (steps) 來 表 示 , 步 驟 間 以 轉 移 條 件 (transition) 連 結 起 來 。 每 一 個 轉移 條 件 都 更 一 個 布 林 判 斷 條 件 (Boolean condition)。 步 驟 中 的 行 為 可 以 用 其 他 語 言 (ST、IL、LD、 和 FDB) 來 詳 述 。SFC 程 式 是 以 一 連 串 的 步 驟 和 轉 移 條 件 圖 形 來 表 示 , 而 步 驟 與 轉 換 條 件 之 間 是 用 更 方 向 性 的線 (oriented links) 連 結 在 一 起 。 多 連 結 線 可 以 用 來 表 示 發 散 和 收 斂 。 完 整 程 式 的 某 些 部 份 可 以被 分 隔 出 來 , 然 後 用 一 個 所 謂 巨 集 步 驟 (macro steps) 的 單 一 符 號 表 示 在 主 要 圖 形 裡 。SFC 的 基本 繪 圖 規 則 如 下 :1、 步 驟 之 後 不 能 緊 跟 著 另 外 一 個 步 驟2、 轉 移 條 件 之 後 不 能 緊 跟 著 另 一 個 轉 移 條 件SFC 語 言 的 基 本 元 件 ( 圖 形 符 號 ) 是 步 驟 (steps)、 初 始 步 驟 (initial steps)、 轉 移 條 件 (transitions)、更 方 向 性 的 線 (oriented links)、 跳 躍 到 步 驟 (jumps to a step)。下 面 為 在 SFC 程 式 中 所 使 用 的 變 數 名 稱名 稱 型 態 屬 性 描 述OUT1 Boolean Output 輸 出 變 數OUT2 Boolean Output 輸 出 變 數K1 Boolean Input 模 式 1 的 輸 入 變 數K2 Boolean Input 模 式 2 的 輸 入 變 數TMR1 Timer Internal 計 時 器 變 數 , 初 始 值 為 "T#1s"Mode Integer Internal 1 代 表 模 式 1,2 代 表 模 式 2, 初 始 值 為 1SFC 程 式當 您 完 成 了 “<strong>ISaGRAF</strong> Programs” 視 窗 內 的 設 定 , 將 會 如 下 圖 所 示 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-53 <strong>ICP</strong> <strong>DAS</strong>


LD 程 式 "SelMode"SFC 程 "Main"OUT1(R);OUT2(R);Mode=1;Mode=2;Mode1;Mode1;Mode2;Mode2;SFC 子 程 式 "Mode1"OUT1 ;OUT2 ;GS1.T > TMR1 ;SFC 子 程 式 "Mode2"OUT1 ;GS1.T > TMR1 ;OUT2 ;GS2.T > TMR1 ;GS2.T > TMR1 ;SFC 程 式 行 為 :1. 當 "K1" 的 行 為 被 觸 發 , 執 行 "Mode1" 程 式2. 當 "K2" 的 行 為 被 觸 發 , 執 行 "Mode2" 程 式<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-54 <strong>ICP</strong> <strong>DAS</strong>


2.5.1: 撰 寫 SFC 範 例 程 式建 立 SFC 範 例 程 式 和 第 2.1 小 節 所 描 述 的 方 法 相 同 , 但 記 得 要 宣 告 變 數 “K1”,”K2”,“OUT1”“OUT2”, “TMR1” 及 “Mode”。在 建 立 完 SFC 專 案 之 後 , 建 立 一 個 “SelMode” 的 LD program, 如 下 所 示 :注 意 :在 這 個 SFC 範 例 程 式 中 , 我 們 使 用 一 個 之 前 沒 使 用 過 的 函 式 方 塊 “1 Gain”, 加 入 我 們 的 LD程 式 中 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-55 <strong>ICP</strong> <strong>DAS</strong>


即 使 "EN" (input) 及 "ENO" (output) 參 數 在 上 面 的 範 例 中 並 未 使 用 過 , 但 當 你 在 程 式 中 加入 “1 Gain” 函 式 方 塊 時 , 就 多 了 這 兩 個 變 數 。您 必 頇 改 變 “K1” 和 “K2” 的 接 點 型 態 為 “P”, 當 “P” 接 點 的 左 連 接 線 的 布 林 狀 態 由 false 變 成true 時 , 線 圈 上 的 變 數 值 就 設 定 為 真 。 將 滑 鼠 移 到 “Q” 點 的 右 邊 單 擊 一 下 , 輸 入 “Mode”。 將滑 鼠 移 到 “in” 的 左 邊 單 擊 一 下 , 輸 入 1, 而 下 方 的 “1Gain” 函 式 方 塊 的 左 邊 “in” 則 輸 入 2。當 您 編 輯 完 “<strong>ISaGRAF</strong> Quick LD Program” 程 式 時 , 應 該 如 下 圖 所 示 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-56 <strong>ICP</strong> <strong>DAS</strong>


建 立 “main” SFC 程 式建 立 “Mode1” 子 程 式依 同 樣 的 方 式 , 建 立 “mode2” 子 程 式<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-57 <strong>ICP</strong> <strong>DAS</strong>


2.5.2: 編 輯 SFC 程 式在 “<strong>ISaGRAF</strong> Programs” 視 窗 中 雙 擊 “main” 來 編 輯 SFC 程 式 。您 應 該 會 注 意 到 在 初 始 步 驟 方 塊 的 右 邊 更 一 塊 空 白 的 格 子 , 這 格 子 是 用 來 在 FSC 程 式 中 為 步驟 或 轉 移 條 件 編 寫 註 解 用 的 。 在 SFC 程 式 中 , 這 個 註 解 方 塊 並 不 是 必 頇 的 所 以 您 可 以 拖 曳 灰色 方 塊 中 的 黑 點 來 調 整 初 始 步 驟 適 當 的 大 小當 您 單 擊 “OR Divergence” 時 , 灰 色 的 方 塊 會 自 動 的 往 下 移 。 接 下 來 , 單 擊 “Transition” 鍵 來建 立 “Transition 1”, 然 後 按 “Step” 鍵 來 建 立 Step2, 如 下 所 示 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-58 <strong>ICP</strong> <strong>DAS</strong>


在 灰 色 格 子 內 按 一 下 轉 移 鍵 , 來 增 加 第 二 個 轉 移 條 件 (transition 2)。 在 完 成 第 2 個 轉 移 條 件後 , 在 直 接 在 “OR Divergence“ 在 新 增 第 3 個 轉 移 條 件 (transition 3)當 您 完 成 以 上 之 設 定 時 , 應 該 如 下 圖 所 示 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-59 <strong>ICP</strong> <strong>DAS</strong>


接 下 來 在 灰 格 子 裡 單 擊 ”Step” 來 增 加 Step 3, 在 增 加 完 Step 3 後 , 在 step 3 的 下 方 再 新 增 一 個轉 移 條 件 (transition 4), 新 增 完 後 , 應 該 如 下 圖 所 示 :單 擊 轉 移 條 件 2 下 方 的 灰 色 方 塊 , 然 後 按 下 “OR Convergence” 鍵 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-60 <strong>ICP</strong> <strong>DAS</strong>


單 擊 “Jump To step” 視 窗 , 將 會 產 生 如 下 圖 所 示 的 畫 面 , 在 “Jump Destination” 視 窗 內 雙 擊“GS1”。現 在 我 們 已 經 完 成 SFC 專 案 中 的 “Main” 程 式 , 接 下 來 我 們 要 為 每 一 個 步 驟 和 轉 移 條 件 編 寫 程式 碼 。 雙 擊 step #1 開 啟 “<strong>ISaGRAF</strong> SFC 程 式 ” 將 下 圖 所 標 示 的 程 式 碼 填 入 , 記 得 必 頇 在 每 一行 程 式 碼 後 加 上 一 個 分 號 (“ ; ”) 作 結 尾 。OUT1(R) ;OUT2(R) ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-61 <strong>ICP</strong> <strong>DAS</strong>


依 照 上 面 的 方 式 , 在 每 一 個 步 驟 和 轉 移 條 件 加 上 程 式 碼 , 如 下 圖 所 示 :您 現 在 已 經 完 成 SFC 程 式 中 的 main 主 程 式 。接 下 來 您 需 要 建 立 及 編 輯 兩 個 子 程 式 , 編 輯 子 程 式 的 方 法 和 編 輯 main 程 式 是 一 樣 的 。 當 您 建立 兩 個 子 程 式 後 , 應 該 如 下 圖 所 示 :SFC Child Program "Mode1"SFC Child Program "Mode2"您 還 是 頇 要 “Connecting I/O” 及 “Compiling The Project”, 請 參 考 2.1.2 節 及 2.1.3 節 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-62 <strong>ICP</strong> <strong>DAS</strong>


2.5.3: 模 擬 SFC 程 式在 您 成 功 的 編 譯 完 SFC 程 式 之 後 , 您 可 以 執 行 模 擬 的 動 作 來 觀 察 兩 個 子 程 式 和 main 程 式 是 如何 運 作 的 。當 “K1” 開 啟 時 , “Mode 1” 為 TRUE。 “OUT1” 及 “OUT2” 同 時 開 然 後 同 時 關 時 , 此時 ”Mode2” 為 FALSE。當 “K2” 開 啟 時 “Mode 2” 為 TRUE,OUT1 會 先 開 然 後 換 OUT2 開 , 此 時 Mode 1 為 FALSE。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-63 <strong>ICP</strong> <strong>DAS</strong>


2.6: 使 用 變 數 陣 列如 果 您 的 <strong>ISaGRAF</strong> Workbench 為 3.4 或 3.5 版 , 可 以 使 用 變 數 陣 列 .請 先 把 所 更 開 啟 的 <strong>ISaGRAF</strong> Window 關 閉 . 之 後 在 您 的 <strong>ISaGRAF</strong> 所 安 裝 的 路 徑 , 更 改 以 下 的檔 案 內 容 , 此 路 徑 通 常 是 c:\isawin\exe\請 在 C:\ISAWIN\EXE\ISA.INI 檔 案 的 最 上 方 , 新 增 2 行 ( 加 第 3 行 為 空 白 行 ) 如 下 .[DEBUG]arrays=1編 輯 好 “isa.ini” 檔 案 後 儲 存 它 . 之 後 當 你 開 啟 <strong>ISaGRAF</strong> 內 的 Dictionary 時 , 您 會 發 現 每 個變 數 宣 告 Window 內 多 了 一 個 “Dim” 欄 位 . 可 填 入 的 數 字 為 1 到 255.非 常 重 要 :1. 當 需 要 使 用 變 數 陣 列 時 , 請 永 遠 只 宣 告 真 正 所 需 要 的 Dim 數 量 . 宣 告 過 多 的 Dim 會 消耗 控 制 器 過 多 的 記 憶 容 量 , 特 別 是 像 I-7188EG/XG, I-8xx7 這 種 記 憶 容 量 比 較 受 限 的Controller.2. 使 用 變 數 陣 列 時 , 不 可 勾 選 Make – Compiler options - Optimizer 內 的 第 2 , 第 7 , 第 8 與第 9 個 選 項 . 建 議 只 勾 選 第 1 個 – “Run two optimer passes” 就 好 . 不 然 變 數 陣 列 的 值 會 發生 錯 誤 .使 用 變 數 陣 列 時 , 不 可 勾 選Optimizer 內 的 第 2 , 第 7 , 第8 與 第 9 個 選 項 . 建 議 只 勾 選第 1 個 就 好 .變 數 陣 列 的 第 1 個 元 素 由 0 開 始 . 比 如 若 宣 告 一 個 整 數 變 數 陣 列 CNT , 設 其 Dim 欄 位 為 10 ,此 變 數 陣 列 將 會 顯 示 為 CNT[0..9] , 表 示 它 可 以 使 用 的 元 素 為 CNT[0] , CNT[1] , …, CNT[9]共 10 個 元 素 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-64 <strong>ICP</strong> <strong>DAS</strong>


如 何 在 程 式 內 使 用 變 數 陣 列 ?以 下 範 例 程 式 使 用 ST 語 法 , 將 初 值 100 到 109 指 定 給 CNT[0], … , 到 CNT[9](* INIT 宣 告 為 internal Boolean 變 數 , 且 宣 告 初 值 為 TRUE *)(* CNT 宣 告 為 internal integer 變 數 陣 列 , “Dim” 欄 位 為 10 *)(* ii 宣 告 為 internal integer 變 數 *)IF INIT THENINIT := FALSE ; (* INIT 設 為 False, 這 些 code 只 更 第 1 個 PLC scan 會 執 行 一 次 而 已 *)For ii := 0 to 9 doCNT[ii] := 100 + ii ;End_For ;END_IF ;非 常 重 要 : 請 不 要 在 程 式 內 使 用 超 過 變 數 陣 列 所 宣 告 的 合 法 元 素 數 量 . 比 如 上 方 的 例 子 ,CNT 變 數 陣 列 的 “Dim” 欄 位 宣 告 為 10, 所 以 可 以 使 用 的 合 法 元 素 為 CNT[0] , CNT[1] , …,CNT[9] . 如 果 在 程 式 內 去 使 用 CNT[10] , CNT[11] , … 將 會 倒 致 Controller 發 生 錯 誤 .如 何 監 看 / 除 錯 變 數 陣 列 ?當 程 式 寫 完 並 編 譯 (Compile) 完 , 成 功 下 載 到 Controller 後 . 可 以 在 “Debugger” 視 窗 , 使 用“Tools” - “Spy lists” 工 具 來 監 看 變 數 陣 列 的 值 . ( 關 於 “Spy Lists” 的 更 多 使 用 說 明 , 請 參 考 第9.12 節 ).請 在 Spy Lists 視 窗 內 輸 入 變 數 陣 列 的 元 素 名 字 , 如 下 .請 用 鑑 盤 輸 入 , 如 CNT[1] 或 CNT[2]<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-65 <strong>ICP</strong> <strong>DAS</strong>


輸 入 完 所 更 想 監 看 的 名 字 後 , 請 記 得 將 此 “spy list” 儲 存 起 來 , 比 如 存 成 “list1” , 之 後 可 移 到“workspace” 內 . 如 此 每 次 用 <strong>ISaGRAF</strong> 跟 此 Controller 連 線 時 , “list1” 的 內 容 就 會 自 動 顯 示 出來 .把 List 名 稱 移 到 右 側Workspace 內 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-66 <strong>ICP</strong> <strong>DAS</strong>


2.6.1 指 定 網 路 位 址 號 碼 給 變 數 陣 列要 指 定 網 路 位 址 號 碼 ( 變 數 的 “ 網 路 位 址 號 碼 ” , Network Address No. 的 用 途 為 用 來 跟 其 它SCADA / HMI 交 換 資 料 , 請 參 考 第 4 章 的 說 明 ) 給 變 數 陣 列 , 請 先 設 頭 一 個 網 路 位 址 號 碼 給 變數 陣 列 的 第 1 個 元 素 , 比 如 設 1 號 給 CNT[0]. 然 後 可 使 用 “S_MB_ADR( )” 函 式 來 指 定 給 其 它元 素 .請 先 設 頭 一 個 網 路 位 址 號 碼 給 變 數 陣 列 的 第 1 個 元 素 .( 在 這 個 欄 位 輸 入 的 值 是 以 16 進 位 來 表 示 的 )請 勿 將 “Retain” 選 項 打 勾 .以 下 為 使 用 “S_MB_ADR( )” 的 例 子1. 設 定 連 續 的 網 路 位 址 號 碼 1, 2, 3, …, 10 給 CNT[0] , CNT[1] , CNT[2] , …, CNT[9](* INIT 宣 告 為 internal Boolean 變 數 , 並 宣 告 初 值 為 TRUE *)(* TMP 宣 告 為 internal Boolean 變 數 *)IF INIT THENINIT := FALSE ; (* 只 更 第 1 個 PLC scan 會 執 行 到 *)TMP := S_MB_ADR(1, 10, 0) ; (* 從 網 路 位 址 1 的 變 數 陣 列 起 , 指 定 10 個 連續 號 . *)END_IF ;2. 設 定 跳 1 號 的 網 路 位 址 號 碼 1 , 3 , 5 , …,19 給 CNT[0] , CNT[1] , CNT[2] , …, CNT[9](* INIT 宣 告 為 internal Boolean 變 數 , 並 宣 告 初 值 為 TRUE *)(* TMP 宣 告 為 internal Boolean 變 數 *)IF INIT THENINIT := FALSE ; (* 只 更 第 1 個 PLC scan 會 執 行 到 *)TMP := S_MB_ADR(1, 10, 1) ; (* 從 網 路 位 址 1 的 變 數 陣 列 起 , 指 定 10 個 跳 號 .*)END_IF ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-67 <strong>ICP</strong> <strong>DAS</strong>


2.6.2 將 變 數 陣 列 使 用 成 可 保 留 變 數要 將 變 數 陣 列 使 用 成 可 保 留 變 數 , 請 先 設 頭 一 個 網 路 位 址 號 碼 給 變 數 陣 列 的 第 1 個 元 素 ,比 如 設 1 號 給 CNT[0]. 之 後 可 使 用 “Retain_A( )” 函 式 來 指 定 如 下 .( 關 於 新 的 可 留 變 數 , 請參 考 第 10.1 節 的 說 明 ).請 先 設 頭 一 個 網 路 位 址 號 碼 給 變 數 陣 列 的 第 1 個 元 素 .( 在 這 個 欄 位 輸 入 的 值 是 以 16 進 位 來 表 示 的 )請 勿 將 “Retain” 選 項 打 勾 .以 下 的 程 式 將 Integer 變 數 陣 列 CNT[0..9] 設 定 為 可 保 留 變 數 , 其 可 保 留 位 址 從 20 , 21 , …到 29 .(* INIT 宣 告 為 internal Boolean 變 數 , 並 宣 告 初 值 為 TRUE *)(* TMP 宣 告 為 internal Boolean 變 數 *)IF INIT THENINIT := FALSE ; (* only do it at 1 st PLC scan *)TMP := Retain_A( „N‟, 1 , 10 , 20 ) ;(* 第 1 個 參 數 : 'B' : 表 示 變 數 陣 列 為 boolean 型 態 , 'N' : Integer , 'F' : Real , 'T' : Timer第 2 個 參 數 : 變 數 陣 列 的 第 1 個 元 素 的 網 路 位 址 號 碼 .第 3 個 參 數 : 可 以 是 1 - 255 , 想 要 設 定 成 可 保 留 變 數 的 元 素 數 量 .第 4 個 參 數 : 使 用 的 可 保 留 位 址 從 幾 號 開 始 . .7188EG/XG + X607/608 , I-8xx7 + S256/512, iP-8xx7 : „B‟ 與 „T‟ 是 1 到 256 ,„N‟ 與 „F‟ 是 1 到 1024 .WP-8xx7, XP-8xx7-CE6, VP-25W7 : „B‟ 與 „T‟ 是 1 到 1024 , „N‟ 與 „F‟ 是 1 到 4096 *)END_IF ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 2-68 <strong>ICP</strong> <strong>DAS</strong>


第 3 章 建 立 I/O 連 結在 您 使 用 <strong>ISaGRAF</strong> 來 控 制 iP-8xx7, I-8xx7, I-7188EG/XG , µPAC-7186EG, WP-8xx7, VP-25W7,XP-8xx7-CE6 控 制 系 統 之 前 , 您 必 需 先 確 定 I/O 函 式 庫 是 否 已 經 安 裝 完 成 。 假 如 您 還 未 安 裝 ,請 參 閱 1.2 節 的 " 安 裝 <strong>ICP</strong> <strong>DAS</strong> Utilities For <strong>ISaGRAF</strong> ", 裡 面 更 詳 細 的 說 明 引 導 你 如 何 安 裝 函式 庫 .請 訪 問 以 下 網 址 來 取 得 更 多 I-8K 與 I-87K I/O 卡 片 的 說 明http://www.icpdas.com/products/PAC/i-8000/8000_IO_modules.htm以 下 是 可 使 用 在 Slot 0 到 7 的 I-8K parallel I/O :注 意 :卡 片 更 分 為 低 板 卡 與 高 板 卡 , 高 板 卡 名 稱 後 方 會 更 一 個 W, 例 如 I-87057 是 低 板 卡 , 而I-87057W 是 高 板 卡 . iP-8xx7, WP-8xx7, XP-8xx7-CE6, VP-2117 與 VP-25W7 / 23W7 只 能 使 用高 板 卡 插 在 主 機 旁 的 I/O slot 編 號 0 ~ 7 . 若 將 低 板 卡 插 入 這 些 PAC 內 更 可 能 會 發 生 串 口通 訊 不 正 常 , Retain 變 數 異 常 , I/O 不 正 確 .I-8K parallel I/O 卡 片 只 可 插 在 PAC 的 第 0 到 7 槽 (XP-8xx7-CE6 是 第 1 到 7 槽 上 使 用 ),不 可 插 在 I-87K4/5/8/9 或 RU87Pn 等 擴 充 槽 內 使 用 .數 位 輸 入 / 輸 出(Digital Input / Output)類 比 輸 入 (V , mA)(Anlog Input)類 比 輸 出 (V , mA)高 速 計 數 器 / 頻 率 輸入 (Counter / Frequency)馬 達 控 制 卡 ,EncoderCANopen MasterFRNET Master 卡擴 充 serial 通 訊 埠I-8037W, I-8040W, I-8040PW , I-8041W , I-8042W, I-8046W,I-8050W , I-8051W , I-8052W , I-8053W, I-8053PW,I-8054W , I-8055W , I-8056W , I-8057W, I-8058W, I-8060W , I-8063W,I-8064W , I-8068W , I-8069WI-8017HW (8 Ch. Differential / 16-Ch. Single-end)iP-8xx7: I-8017HW Sample rate 最 快 約 125Hz (8-Ch.) , 62Hz (16-Ch.)WP-8xx7, XP-8xx7-CE6, VP-25W7: I-8017HW Sample rate 最 快 約200Hz (8-Ch.) , 100Hz (16-Ch.) 跟 scan time 更 關 , 越 大 的 scan time,Sample rate 小I-8024W (4 Ch.)I-8084W (4/8 Ch counter or Frequency)I-8088W ( 8 Ch. PWM output)I-8092F, I-8094, I-8094F : 只 更 XP-8347-CE6 與 XP-8747-CE6 更 支持 . 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-132 .I-8091W (2 Axes. Pulse output) , I-8090W (Encorder) : iP-8xx7,WP-8xx7, VP-25W7 與 XP-8xx7-CE6 更 支 持 .I-8093W(Encoder) : iP-8xx7, WP-8xx7, VP-25W7 與 XP-8xx7-CE6 更 支持I-8123W: 只 更 XP-8xx7-CE6, WP-8xx7 與 VP-25W7, VP-23W7 更 支持 ( 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-145)I-8172W (2-port FRNET) , 需 搭 配 FRNET I/O 使 用 , 請 訪 問http://www.icpdas.com/products/Remote_IO/frnet/frnet_list.htm 或http://www.icpdas.com/faq/isagraf.htm FAQ-048I-8112iW (2-Ch. RS-232) , I-8114iW (4-Ch. RS-232)I-8142iW (2-Ch. RS-485 / 422) , I-8144iW (4-Ch. RS-485 / 422)(I-8xx7 , iP-8xx7 最 多 可 擴 充 16 埠 , 可 插 在 第 0 到 4 槽 )(WP-8xx7, VP-25W7 最 多 可 擴 充 10 埠 , 可 插 在 第 0 到 2 槽 )(XP-8xx7-CE6 最 多 可 擴 充 28 埠 , 可 插 在 第 1 到 7 槽 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-1 <strong>ICP</strong> <strong>DAS</strong>


以 下 是 可 使 用 在 Slot 0 到 7 的 I-87K parallel I/O : :數 位 輸 入 / 輸 出(Digital Input / Output)類 比 輸 入 (V , mA)(Anlog Input)類 比 輸 出 (V , mA)(Anlog Output)多 種 類 I/O 卡溫 度 輸 入(Temperature input)高 速 計 數 器 / 頻 率 ,PWMHART MasterVibrating Wire InputI-87040W, I-87041W, I-87046W, I-87051W ,I-87052W , I-87053W ,I-87053PW , I-87053W-A5 , I-87053W-AC1 , I-87053W-E5 ,I-87054W , I-87055W , I-87057W , I-87057PW , I-87058W , I-87059W ,I-87061W , I-87063W , I-87064W , I-87065W , I-87066W ,I-87068W , I-87069WI-87016W , I-87017W , I-87017W-A5 , I-87017RW , I-87017RCW ,I-87017DW, I-87017ZW, I-87019PW, I-87019RW, I-87019ZWI-87024W , I-87024DW, I-87024RW, I-87028CWI-87026PWI-87005W , I-87013W , I-87015W , I-87015PW ,I-87018W, I-87018Rw, I-87018PW, I-87018ZW, I-87019RW,I-87019ZWI-87082W, I-87084W , I-87088W (PWM)I-87H17W: 只 更 XP-8xx7-CE6, WP-8xx7 與 VP-25W7, VP-23W7 更支 持 ( 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-136)I-87089W ( 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-091)注 意 :卡 片 更 分 為 低 板 卡 與 高 板 卡 , 高 板 卡 名 稱 後 方 會 更 一 個 W, 例 如 I-87057 是 低 板 卡 , 而I-87057W 是 高 板 卡 . iP-8xx7, WP-8xx7, XP-8xx7-CE6, VP-2117 與 VP-25W7 / 23W7 只 能 使 用高 板 卡 插 在 主 機 旁 的 I/O slot 編 號 0 ~ 7 . 若 將 低 板 卡 插 入 這 些 PAC 內 更 可 能 會 發 生 串 口通 訊 不 正 常 , Retain 變 數 異 常 , I/O 不 正 確 .I-8K parallel I/O 卡 片 只 可 插 在 PAC 的 第 0 到 7 槽 (XP-8xx7-CE6 是 第 1 到 7 槽 上 使 用 ),不 可 插 在 I-87K4/5/8/9 或 RU87Pn 等 擴 充 槽 內 使 用 .關 於 I-7188EG/XG 或 µPAC-7186EG 可 使 用 的 X board, 請 參 考 該 本 “ 快 速 上 手 手 冊 ” 或http://www.icpdas.com/products/PAC/i-8000/getting_started_manual.htmhttp://www.icpdas.com/products/PAC/i-o_expansion/x_list.htm請 訪 問 以 下 網 址 來 取 得 更 多 I-8K 與 I-87K I/O 卡 片 的 說 明http://www.icpdas.com/products/PAC/i-8000/8000_IO_modules.htm<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-2 <strong>ICP</strong> <strong>DAS</strong>


3.1 如 何 將 I/O 控 制 模 組 引 入 <strong>ISaGRAF</strong> 專 案在 您 開 始 引 用 <strong>ISaGRAF</strong> PAC 的 I/O 板 卡 到 <strong>ISaGRAF</strong> 專 案 之 前 , 您 必 需 在 <strong>ISaGRAF</strong> 專 案 中 將I-I/O 板 連 結 起 來 。 在 ”I/O connections” 視 窗 最 左 邊 的 數 字 代 表 著 控 制 器 的 插 槽 號 碼 、 插 槽 0 到7 只 提 供 給 PAC 的 I/O 控 制 板 使 用 ( 注 意 : XP-8xx7-CE6, Wincon-8xx7 沒 更 插 槽 0, 是 插 槽 1 到7), 編 號 8 以 上 的 插 槽 則 可 以 提 供 給 其 他 虛 擬 控 制 板 , 例 如 ”Push4Key” 和 “Show3Led” 使 用 。對 於 I-7188EG/XG, µPAC-7186EG 而 言 , 插 槽 0 是 給 X-xxx board ( 例 如 X-107) 使 用 , 編 號 1以 上 的 插 槽 給 其 他 虛 擬 控 制 板 使 用 .在 下 面 的 例 子 中 , 我 們 使 用 I-8417 控 制 器 並 插 著 下 面 所 列 出 的 控 制 板 。插 槽 0: I-8055 (8 個 D/I 及 8 個 D/O)插 槽 1: I-87055(8 個 D/I 入 及 8 個 D/O)插 槽 2: I-87017(8 個 A/I)插 槽 3: I-87024(4 個 A/O)插 槽 8: "Push4Key"插 槽 9: "Show3Led"<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-3 <strong>ICP</strong> <strong>DAS</strong>


3.1.1: 連 結 I/O 板在 ”I/O Connection” 視 窗 內 的 插 槽 上 用 滑 鼠 雙 擊 將 會 開 啟 所 更 可 連 結 的 I/O 板 , 您 可 以 在 指 定 的插 槽 上 選 擇 你 所 需 要 的 I/O 板 來 作 連 結 。<strong>ISaGRAF</strong> 控 制 器 的 函 式 庫 內 定 義 兩 種 I/O 板 的 格 式 ,即 “Boards” 和 “Equipment”。”Boards” 即 單 一 型 態 的 板 子 , 就 是 在 板 子 上 的 輸 出 入 點 都 是 單一 型 態 或 單 一 屬 性 。 “Equipment” 即 多 種 型 態 的 板 子 , 即 板 子 上 的 輸 出 入 點 是 多 種 型 態 的 ( 例如 I-8055 就 具 更 8 個 數 位 輸 出 和 8 個 數 位 輸 入 )。 在 開 始 連 結 I/O 板 的 過 程 中 , 先 在 插 槽 上 雙擊 以 便 選 擇 你 所 需 要 的 I/O 板 。假 如 您 把 I/O 板 設 錯 插 槽 , 您 可 以 用 ”Clear Slot” 把 這 個 錯 誤 連 結 砍 掉 , 接 下 來 在 你 所 想 要 的 插槽 上 設 置 正 確 的 I/O 板 連 結 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-4 <strong>ICP</strong> <strong>DAS</strong>


3.1.2: 連 結 輸 入 及 輸 出 變 數所 更 的 輸 出 , 輸 入 板 的 ” 變 數 ( 或 名 字 )” 一 定 要 連 結 到 ”I/O Connection” 視 窗 內 。 按 下 你 所 要 設定 屬 性 的 插 槽 (slot), 雙 擊 ”I/O connection” 右 手 邊 的 I/O 點 的 號 碼 , 選 擇 變 數 名 字 , 接 著 按下 ”connect” 鍵 即 完 成 變 數 連 結 。注 意 :在 您 指 定 變 數 給 各 個 I/O 板 的 輸 出 入 點 時 , 記 得 要 先 在 ”<strong>ISaGRAF</strong> Global Variable” 視 窗 內 對 每個 變 數 做 宣 告 。以 滑 鼠 點 一 下 插 槽 8, 接 著 在 ”IsaGraf I/O Connection” 視 窗 的 右 手 邊 雙 擊 ”1”,”Connect I/OChannel #1” 將 會 被 開 啟 , 按 下 ”connect” 鍵 來 建 立 變 數 ”K1” 和 ”Push4Key” 的 第 一 個 輸 入點 的 連 結 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-5 <strong>ICP</strong> <strong>DAS</strong>


假 如 你 連 結 輸 入 變 數 或 輸 出 變 數 到 不 是 你 期 望 的 I/O 位 置 , 雙 擊 您 希 望 移 除 的 輸 入點 。”Connect I/O Channel #x” 將 會 開 啟 , 接 著 按 下 ”Free” 鍵 , 即 可 把 變 數 移 除 掉 。點 選 “?” 圖 示 可 開 啟線 上 說 明 文 件當 你 按 下 ”Free” 鍵 你 將 會 看 到 變 數 從 輸 出 輸 入 點 移 到 ”<strong>ISaGRAF</strong> I/O Connect” 視 窗 內 , 此 變 數可 以 重 新 指 定 給 其 他 位 置 的 輸 出 入 點 使 用 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-6 <strong>ICP</strong> <strong>DAS</strong>


3.2: 連 結 類 比 型 態 的 I/O 板注 意 :1. 請 不 要 選 用 I-87017 與 I-87017C, 改 選 用 適 合 工 業 環 境 用 的 I-87017ZW 較 好 . I-87017ZW可 以 用 jumper 調 整 為 10-Ch. Differential input 或 20-Ch. Single-end input, 且 每 個 channel可 以 設 為 不 同 的 range 比 較 好 用 , 設 為 10-Ch. 時 可 量 測 0~20 mA, 4 ~ 20 mA, +/- 20mA,且 不 需 外 接 125 ohm 電 阻 , 使 用 jumper 調 整 就 好 . (I-87017W, I-87017RW, I-87017DW 量 電流 需 外 加 125 ohm 電 阻 )2. 請 不 要 選 用 I-87018, I-87018W, 改 選 用 適 合 工 業 環 境 用 的 I-87018ZW 或 I-87019ZW 較 好 ,量 測 值 也 較 準 確 .3.2.1: 設 定 類 比 I/O 卡 的 Range 參 數 與 類 比 IO 數 值 轉 換 函 式連 結 類 比 型 態 的 I/O 板 到 <strong>ISaGRAF</strong> 控 制 器 的 方 法 和 連 結 數 位 I/O 板 的 方 式 大 同 小 異 。 最 主 要 的不 同 點 在 於 類 比 I/O 板 的 “range” 參 數 必 頇 要 設 定 。點 選 “?” 圖 示 或 “Note”可 開 啟 線 上 說 明 文 件修 改 類 比 I/O 板 的 “range” 參 數 的 方 法 為 , 在 ”<strong>ISaGRAF</strong> I/O Connection” 視 窗 中 雙 擊 “Range”,然 後 ”I/O Board Parameter” 視 窗 將 會 開 啟 , 輸 入 您 所 想 要 的 range 範 圍 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-7 <strong>ICP</strong> <strong>DAS</strong>


在 下 面 的 表 格 裡 更 幾 項 關 於 “range” 參 數 的 選 項 。 在 註 記 內 的 預 設 值 是 ”8”, 代 表 的 意 思 是 您可 以 將 -10v 到 10v 的 訊 號 值 對 映 成 -32768~32768 的 數 值 。 若 參 數 改 為 ”9”, 代 表 的 意 思 為 您 可將 -5v ~ 5v 的 訊 號 值 對 映 成 –32768 ~ 32767 的 數 值 。若 “range” 參 數 改 為 ”A”、 代 表 的 意 思 為 您 可 將 -1v~1v 的 訊 號 值 對 映 成 -32768~32767 的 數 值 。這 ”range” 數 值 在 類 比 I/O 的 應 用 程 式 中 可 以 處 理 很 多 範 圍 的 反 應 控 制 ( 如 溫 度 控 制 )請 參 考 Appendix D - “Table of The Analog IO Value”, 您 可 以 得 到 一 些 不 同 型 態 的 類 比 I/O 板 和他 所 對 應 的 “range” 值 。注 意 : 類 比 IO 數 值 轉 換 函 式 :更 幾 個 好 用 的 函 式 可 用 來 將 類 比 卡 片 的 輸 入 / 輸 出 值 ( 通 常 是 –32768 ~ +32767) 轉 換 成工 程 上 的 應 用 值 . 比 如 想 將 4 到 20 mA 轉 換 成 0 ~ 1000 Psi , 可 以 使 用 “A4_20_To” 函 式 ,詳 細 的 函 式 說 明 , 請 參 考 附 錄 A.41. A4_20_To : 轉 換 4 ~ 20 mA 的 類 比 輸 入 值 ( 整 數 ) 為 工 程 上 的 應 用 值 ( 浮 點 數 )2. V0_10_To : 轉 換 0 ~ 10 V 的 類 比 輸 入 值 ( 整 數 ) 為 工 程 上 的 應 用 值 ( 浮 點 數 )3. To_A4_20 : 轉 換 工 程 上 的 應 用 值 ( 浮 點 數 ) 為 4 ~ 20 mA 的 類 比 輸 出 值 ( 整 數 )4. To_V0_10 : 轉 換 工 程 上 的 應 用 值 ( 浮 點 數 ) 為 0 ~ 10 V 的 類 比 輸 出 值 ( 整 數 )5. BIN2ENG : 轉 換 類 比 輸 入 值 ( 整 數 , 值 需 在 –32768 ~ +32767 之 間 ) 為 工 程 上 的 應 用 值( 整 數 , 值 需 在 –32767 ~ +32768 之 間 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-8 <strong>ICP</strong> <strong>DAS</strong>


3.2.2: 設 定 特 別 的 “range” 參 數 來 直 接 取 得 溫 度 卡 片 的 “ 攝 氏 度 ” 或 “ 華 式度 ” 值<strong>ICP</strong><strong>DAS</strong> 提 供 許 多 溫 度 輸 入 卡 如 下 :<strong>ICP</strong> <strong>DAS</strong> 提 供 很 多 溫 度 輸 入 模 塊 , 如 下 .(I-7000 系 列 IO 只 可 用 於 RS-485 遠 程 IO, 不 可 用 於 第 0 ~ 7 槽 )更 ” 感 測 器 斷 線 偵 測 功 能 ” 的 溫 度 模 塊 型 號 :Thermocouple 型 式 : I-87018RW, 87018PW, 87018ZW, 87019RW,87019PW,87019ZW,I-7018R, 7018BL, 7019, 7019R, 7018ZRTD 型 式 : I-87013W, 87015W, 87015PW, I-7013, 7015, 7033Thermister 型 式 : I-87005W, I-7005無 ” 感 測 器 斷 線 偵 測 功 能 ” 的 模 塊 型 號 :Thermocouple 型 式 : I-87018, 7018, 7018P溫 度 I-87K 板 卡 的 “range” 參 數 可 以 是 “ 標 準 設 定 值 ” 或 “ 特 別 設 定 值 ”.比 如 , I-87013W: 4 個 RTD 輸 入 . 它 的 “range” 可 以 設 成20 : Platinum 100, a=0.00385, -100 ~ +100 攝 氏 度…2F : Platinum 100, a=0.003916, -200 ~ +200 攝 氏 度Range 設 為 20 (TT=00, RR=20), 為 “ 標 準 設 定 值 ”.輸 入 值 通 常 是 –32768 到 +32767 間 的 1 個 整 數 .若 range 設 為 1020 (TT=10, RR=20), 為 “ 特 別 設 定值 ”, 採 用 攝 氏 度 . 比 如 , “2312” 表 示 溫 度 值 為 23.12攝 氏 度 .若 I-87013 的 “range” 設 為 20 ( 或 21 到 2F), 為 “ 標 準 設 定 值 ”. 輸 入 值 通 常 是 –32768 到+32767 間 的 1 個 整 數 ( 跟 range 更 關 ). 比 如 range 為 20, 值 –32767 表 示 溫 度 約 為 –100 度 ,+32766 約 +100 度 . 值 16383 表 示 約 +50 度 ( 注 意 : 若 卡 片 是 更 “ 感 測 器 斷 線 偵 測 功 能 ” 的 ,值 –32768 或 +32767 表 示 “ 感 測 器 斷 線 了 ”)如 果 想 直 接 取 得 溫 度 卡 量 到 的 “ 攝 氏 度 ” 或 “ 華 氏 度 ” , 將 “range” 設 為 “ 特 別 設 定 值 ”. 格 式 如下 :重 要 : “ 特 別 設 定 值 ” 從 驅 動 器 版 本 I-8xx7:3.11 , W-8xx7:3.24 起 才 更 支 持 . iP-8xx7, WP-8xx7,VP-25W7/23W7, XP-8xx7-CE6 目 前 也 都 更 支 持 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-9 <strong>ICP</strong> <strong>DAS</strong>


格 式 : TTRR (16 進 位 值 )TT = 10 ( 使 用 “ 特 別 設 定 值 ”, 轉 換 為 “ 攝 氏 度 ”)TT = 20 ( 使 用 “ 特 別 設 定 值 ”, 轉 換 為 “ 華 氏 度 ”)TT = 00 ( 使 用 “ 標 準 設 定 值 ”, 溫 度 輸 入 值 通 常 為 -32768 to +32767 間 的 1 個 整 數 )RR : 原 始 的 "range" 設 定 值 ( 跟 卡 片 型 號 會 更 差 別 )比 如 , 設 I-87013 的 “range” 為 以 下A. 1020 : (TT=10, RR=20) 表 示 使 用 “ 特 別 設 定 值 ”, 轉 換 為 “ 攝 氏 度 ”, 單 位 為 0.01 度 , range 為"20 : Platinum 100, a=0.00385, degree Celsius". 所 以 若 輸 入 值 為 "2356" 表 示 23.56 攝 氏 度 ,若 為 "-489" 則 是 -4.89 攝 氏 度 , 若 值 為 "999990" 對 於 更 “ 感 測 器 斷 線 偵 測 功 能 ” 的 卡 片 ,代 表 “ 感 測 器 斷 線 了 ”.B. 202A : (TT=20, RR=2A) , 表 示 使 用 “ 特 別 設 定 值 ”, 轉 換 為 “ 華 氏 度 ”, 單 位 為 0.01 度 , Range為 "2A: Platinum 1000, a=0.00385, degree Celsius". 所 以 若 輸 入 值 為 "4512" 表 示 45.12 華 氏度 , 若 是 "500" 則 為 5.00 華 氏 度 , 若 值 為 "999990" 對 於 更 “ 感 測 器 斷 線 偵 測 功 能 ” 的卡 片 , 代 表 “ 感 測 器 斷 線 了 ”.C. 21 : (TT=00, RR=21) , 表 示 使 用 “ 標 準 設 定 值 ” , 值 在 -32768 to +32767 之 間 , range 為 "21 :Platinum 100, a=0.00385, degree Celsius" , 需 參 考 附 錄 D 或 下 圖 取 得 On-Line 說 明 來 求 得溫 度 值 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-10 <strong>ICP</strong> <strong>DAS</strong>


3.2.3: I-87017ZW 板 卡 使 用 說 明I-87017ZW 為 工 業 用 電 壓 或 電 流 量 測 板 卡 , 可 以 使 用 板 卡 上 的 Jumper 來 調 整 為 10 個 輸入 點 (differential input) , 或 20 個 輸 入 點 . 若 更 任 一 個 Channel 要 量 測 電 流 必 頇 設 定 為 10 個 輸入 點 ( 設 為 20 個 輸 入 點 只 能 量 測 電 壓 ), 量 電 流 的 輸 入 點 不 需 在 I/O 端 子 上 並 接 125 ohm 電阻 , 只 要 調 整 板 卡 內 的 相 對 的 jumper 就 可 使 用 .請 參 考 http://www.icpdas.com/products/PAC/i-8000/8000_IO_modules.htm > I-87017ZW.使 用 <strong>ISaGRAF</strong> 來 量 測 它 時 , 若 設 為 10 個 輸 入 點 , 它 的 Sample Rate 約 為 10/10 = 1 Hz. 即 每秒 對 全 部 10 接 點 可 取 樣 1 次 ( 設 為 20 個 輸 入 點 的 Sample Rate 約 為 10/20 = 0.5 Hz) . ( 若 您的 應 用 是 需 要 較 快 的 Sample Rate, 請 採 用 I-8017HW )它 的 類 比 輸 入 值 為 –32768 到 +32767 , 與 實 際 訊 號 的 關 係 如 下 表 .電 壓 :Range TypeCode (Hex)08(Default)090A0B0CData Format Max value Min valueInput Range +10.0 V -10.0 VDecimal Value +32767 -327682's Complement HEX 7FFF 8000Input Range +5.0 V -5.0 VDecimal Value +32767 -327682's Complement HEX 7FFF 8000Input Range +1.0 V -1.0 VDecimal Value +32767 -327682's Complement HEX 7FFF 8000Input Range +500.0 mV -500.0 mVDecimal Value +32767 -327682's Complement HEX 7FFF 8000Input Range +150.0 mV -150.0 mVDecimal Value +32767 -32768<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-11 <strong>ICP</strong> <strong>DAS</strong>


電 流 :Range Code(16 進 位 )7D1A項 目 最 大 值 最 小 值實 際 訊 號 +20.0 mA +4.0 mA類 比 輸 入 值 (10 進 位 ) +32767 0類 比 輸 入 值 (16 進 位 ) 7FFF 0實 際 訊 號 +20.0 mA -20.0 mA類 比 輸 入 值 (10 進 位 ) +32767 -32768類 比 輸 入 值 (16 進 位 ) 7FFF 8000實 際 訊 號 +20.0 mA 0 mA類 比 輸 入 值 (10 進 位 ) +32767 0類 比 輸 入 值 (16 進 位 ) 7FFF 0若 是 要 使 用 設 定 為 10 個 輸 入 點 的 I-87017ZW, 請 在 IO connection 視 窗 內 , 在 相 對 應 的 槽 編 號連 上 “equipments” 內 的 “i8717z10” , 並 設 好 每 個 Channel 想 使 用 的 Range 設 定 ( 用 Mouse左 鍵 雙 擊 Ch01_rang 來 設 定 ), 之 後 再 將 對 應 的 Integer Input 變 數 連 接 在 Ch.1 到 Ch.10 上( 用 Mouse 左 鍵 雙 擊 對 應 的 Channel 編 號 來 設 定 ).注 意 , 若 I-87107ZW 的 jumper 是 設 定 成 10-Ch. 可 以 量 測 電 壓 或 電 流 , 需 注 意 板 卡 上 各Channel 對 應 的 JP2 – JP11 需 設 定 為 正 確 的 Voltage input 或 Current Input 的 方 式<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-12 <strong>ICP</strong> <strong>DAS</strong>


若 是 要 使 用 設 定 為 20 個 輸 入 點 的 I-87017ZW, 請 在 IO connection 視 窗 內 , 在 相 對 應 的 槽 編 號連 上 “equipments” 內 的 “i8717z20” . ( 注 意 , 若 I-87107ZW 的 jumper 是 設 定 成 20-Ch. 只 能用 來 量 測 電 壓 , 所 以 range 不 能 設 成 電 流 式 的 , 即 不 能 設 成 07 , 0D , 1A, 另 外 需 注 意 板 卡 上的 JP2 – JP11 也 需 設 定 為 Voltage input 的 方 式 )電 流 量 測 4 ~ 20 mA 的 重 要 訊 息 :如 果 使 用 的 Sensor 為 4 到 20 mA 的 電 流 量 測 型 態 , 可 以 考 慮 將 range 設 為 [D]: +/- 20 mA 或[1A] : 0~ 20 mA 的 Range Type . ( 此 時 設 "[7]: 4 to 20 mA" 比 較 不 好 )原 因 為 :如 果 Range type 設 為 [7] : 4 到 20 mA , Analog Input 值 若 為 0 或 接 近 0 可 以 表 示 Sensor 輸 入為 4 mA , 但 也 更 可 能 是 Sensor 斷 線 . 因 此 光 看 Analog Input 數 值 , 區 分 不 出 這 2 者 .然 而 若 是 將 Range 設 為 [D] : +/- 20 mA 或 [1A] : 0 ~ 20 mA, 當 值 接 近 0 時 , 只 更 可 能 是Sensor 斷 線 . 而 Sensor 輸 入 的 4 到 20mA , 值 會 是 (6553 到 32767), 4 mA 時 值 是 在 6553 附近 .因 此 更 需 要 分 辨 出 電 流 Sensor (4 到 mA) 是 否 正 常 時 , 最 好 是 規 劃 range 為 [D] : +/- 20 mA或 [1A] : 0 ~ 20 mA range type. 如 此 你 的 程 式 內 就 可 比 如 說 當 A1 , A2 輸 入 值 小 於 5000 或小 於 4000 , 就 可 判 定 為 Sensor 斷 線 或 Sensor 異 常 . ( 如 果 你 是 設 成 [7] : 4 ~ 20 mA 的Range Type, 就 無 法 分 辨 , 到 底 是 4 mA 還 是 Sensor 異 常 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-13 <strong>ICP</strong> <strong>DAS</strong>


3.2.4: I-8017HW 板 卡 使 用 說 明I-8017HW 為 I-8K parallel 類 比 輸 入 卡 , I-8017HW 可 提 供 8 個 類 比 輸 入 點 (differential input 方 式 )或 16 個 類 比 輸 入 點 (single-end input 方 式 ). 若 用 在 iP-8xx7 上 , I-8017HW 的 Sample rate 最 快約 125Hz (8-Ch.) 與 62 Hz (16-Ch.). 若 用 在 WP-8xx7, VP-25W7, XP-8xx7-CE6 上 , I-8017HW的 Sample rate 最 快 約 約 200Hz (8-Ch.) 與 100 Hz (16-Ch.). 但 要 看 PLC 的 scan time 是 多 少 ,若 scan time 較 大 , 比 如 50 ms, 那 結 果 會 變 成 只 更 1000 / 50 = 20 Hz.請 參 考 http://www.icpdas.com/products/PAC/i-8000/8000_IO_modules.htm > I-8017HWRange 設 定下 限上 限實 際 值 ( 板 卡 輸 入 值 ) 實 際 值 ( 板 卡 輸 入 值 ) 實 際 值 ( 板 卡 輸 入 值 )5 -2.5 V (-32768) 0 V (0) + 2.5 V (+32767)6 ( 要 外 接 125 ohm 的 -20 mA (-32768) 0 mA (0) + 20 mA (+32767)電 阻 於 正 / 負 端 並 接 )7 -1.25 V (-32768) 0 V (0) + 1.25 V (+32767)8 -10 V (-32768) 0 V (0) + 10 V (+32767)9 -5 V (-32768) 0 V (0) + 5 V (+32767)Noise_Filter_Max 參 數 : 為 允 許 最 大 的 上 限 值 , 可 為 -32468 ~ +32767, 板 卡 輸 入 值 若 超 過 此值 , 會 設 成 此 “Noise_Filter_Max” 之 值Noise_Filter_Min 參 數 : 為 允 許 最 小 的 下 限 值 , 可 為 -32768 ~ +32467, 板 卡 輸 入 值 若 低 於 此值 , 會 設 成 此 “Noise_Filter_Min” 之 值Sample_Number 參 數 : 設 定 多 少 次 I-8017HW 的 sample 計 算 成 為 1 個 帄 均 值 並 更 新 成 為 板卡 的 輸 入 值 . 值 可 以 是 1 到 500. 內 定 值 為 1, 表 示 最 快 速 的 Sample rate. 每 sample 一 次 就 更新 .若 設 為 500, 表 示 最 慢 速 的 Sample rate. 每 500 個 sample, 才 會 算 出 帄 均 值 更 新 1 次 .此 值 設 越 大 , I-8017HW 的 Sample rate 會 降 低 , 輸 入 的 波 形 會 變 的 較 帄 均 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-14 <strong>ICP</strong> <strong>DAS</strong>


3.2.5: I-8084W 板 卡 使 用 說 明是 iP-8xx7, WP-8xx7, XP-8xx7-CE6 與 VP-25W7 / 23W7 更 支 持 I-8084W 板 卡 .I-8084W 可 用 來 當 成 “8-Ch. 的 Up Counter” 或 “4-Ch. 的 Dir/Pulse Counter” 或 “4-Ch. 的Up/Down Counter” 或 “4-Ch. A/B phase Counter (Quard. mode)” , 也 可 用 來 當 成 “8-Ch. 的Frequency input”請 參 考 http://www.icpdas.com/products/PAC/i-8000/8000_IO_modules.htm > I-8084W內 定 的 "CHx_x_filter" 參 數 是 0 ( 0 表 示 不 啟 用 慮 波 功 能 ). 若 值 不 是 0, 是 用 做 “ 慮 波 ” 使 用 ,寬 度 太 小 的 波 形 會 被 過 慮 掉CH1_2_filter: 為 “8-Ch. 的 Up Counter” 或 “8-Ch. Frequency” 的 Ch. 1 與 Ch 2 使 用 或“4-Ch. Dir/Pulse Counter” 或 “ 4-Ch. Up/Down Counter“ 或 “4-Ch. A/B phase” 的 Ch.1 使 用CH3_4_filter: 為 “8-Ch. 的 Up Counter” 或 “8-Ch. Frequency” 的 Ch. 3 與 Ch 4 使 用 或“4-Ch. Dir/Pulse Counter” 或 “ 4-Ch. Up/Down Counter“ 或 “4-Ch. A/B phase” 的 Ch.2 使 用CH5_8_filter: 為 “8-Ch. 的 Up Counter” 或 “8-Ch. Frequency” 的 Ch. 5 , 6, 7, 8 使 用 或“4-Ch. Dir/Pulse Counter” 或 “ 4-Ch. Up/Down Counter“ 或 “4-Ch. A/B phase” 的 Ch.3 , 4 使 用請 依 據 你 的 實 際 的 輸 入 訊 號 允 許 的 最 大 頻 率 來 設 這 個 值 .最 大 允 許 輸 入 的 訊 號 頻 率 (Hz) CHx_x_filter 值0 ~ 1K 2000 ~ 2K 1002K ~ 5K 405K ~ 10K 2010K ~ 20K 1020K ~ 100K 2100K ~ 450K 10 ~ 450K 0 ( 不 啟 用 慮 波 功 能 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-15 <strong>ICP</strong> <strong>DAS</strong>


CHx_MODE 則 是 用 來 設 定 該 Channel 是 要 使 用 成 為 那 種 類 型 的 訊 號 輸 入 , 如 下CH1_MODE ~ CH8_MODE 是 給 “8-Ch Up Counter” 與 “8-Ch Frequency” 的 Ch 1 到 Ch 8使 用若 是 要 使 用 “4-Ch. DIR / Pulse Counter” 或 “4-Ch. Up / Down Counter” 或 “4-Ch. A/B phaseCounter”CH1_MODE 與 CH2_MODE : 設 定 值 必 頇 一 樣 , 表 示 Ch1 的 設 定 值CH3_MODE 與 CH4_MODE : 設 定 值 必 頇 一 樣 , 表 示 Ch2 的 設 定 值CH5_MODE 與 CH6_MODE : 設 定 值 必 頇 一 樣 , 表 示 Ch3 的 設 定 值CH7_MODE 與 CH8_MODE : 設 定 值 必 頇 一 樣 , 表 示 Ch4 的 設 定 值比 如 ,CH1_MODE 設 為 0 : “Dir / Pulse” (4-Ch), 就 必 需 將 CH2_MODE 也 設 為 0CH1_MODE 設 為 3 : “Up Count” (8-Ch), 那 CH2_MODE 可 以 設 成 83 或 2, 6, A, 82,86 或 8A以 下 的 設 定 值 是 給 Counter 輸 入 時 使 用0 : Dir / Pulse (4-Ch.)1 : Up / Down (4-Ch.)3 : Up Count (8-Ch)4 : A/B phase (Quard. Mode, 4-Ch)80 : Dir / Pulse (4-Ch. 輸 入 訊 號 為 反 相 )81 : Up/Down (4-Ch. 輸 入 訊 號 為 反 相 )83 : Up Count (8-Ch. 輸 入 訊 號 為 反 相 )84 : A/B phase (Quard. Mode, 4-Ch, 輸 入 訊 號 為 反 相 )以 下 的 設 定 值 是 給 Frequency 輸 入 時 使 用2 : Frequency ( 採 用 “AutoTT” 設 定 )6 : Frequency ( 採 用 “LowTT” 設 定 )A : Frequency ( 採 用 “HighTT” 設 定 )82 : Frequency ( 採 用 “AutoTT” 設 定 , 輸 入 訊 號 為 反 相 )86 : Frequency ( 採 用 “LowTT” 設 定 , 輸 入 訊 號 為 反 相 )8A : Frequency ( 採 用 “HighTT” 設 定 , 輸 入 訊 號 為 反 相 )注 意 :1. DIR / Pulse 與 Up / Down Counter 與 A/B phase 模 式 類 似 於 Encorder Input.此 Counter 值 需 控 管 在 -2,147,483,648 到 2,147,483,647 之 間2. Up Counter 模 式 的 輸 入 值 是 一 個 32-bit 整 數 , 此 值 從 0 開 始 , 一 直 依 照 實 際 的 輸 入 訊 號 , …增 加 , 最 大 到 +2,147,483,647 然 後 如 再 多 輸 入 1 個 Pulse, 值 會 突 然 降 到 -2,147,483,648,然 後 依 照 實 際 的 輸 入 訊 號 再 … 增 加 , 到 –1 , 0, … 再 到 +2,147,483,647.<strong>ISaGRAF</strong> 的 整 數 變 數 為 (32-bit signed , 更 正 負 號 ), 因 此 無 法 取 得 大 於 +2,147,483,647 的 正值 .如 果 使 用 者 搭 配 的 圖 控 軟 體 或 HMI 可 以 接 受 (32-bit unsigned, 無 負 號 ) 的 整 數 , 就 可 以 在該 圖 控 軟 體 或 HMI 上 得 到 0, 1, …, +2147483647 , +2147483648 , +2147483649 , … ,+4294967295 再 回 到 0, 1, … 的 無 負 號 的 Counter 值<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-16 <strong>ICP</strong> <strong>DAS</strong>


3.2.6: I-87015W 與 I-87015PW 板 卡 使 用 說 明如 果 RTD sensor 放 的 位 置 距 離 I-87015W 板 卡 比 較 遠 , 請 改 成 購 買 I-87015PW 較 好 .i-87K I/O 板 卡 ( 如 I-87015W, I-87015PW) 可 插 在 PAC 的 第 0 ~ 7 槽 . 也 可 當 成 RS-485 遠 程I/O 模 塊 來 使 用 ( 此 時 需 插 在 I-87K4/5/8/9 或 RU-87P4/8 擴 充 底 板 上 , 使 用 說 明 請 參 考 第 6章 ).請 參 考 http://www.icpdas.com/products/PAC/i-8000/8000_IO_modules.htm > I-87015W它 的 Sample Rate 約 為 12/7 = 1.7 Hz. 即 每 秒 對 全 部 7 接 點 可 取 樣 約 1.7 次下 圖 為 把 I-87015W / I-87015PW 插 在 主 機 的 第 1 槽 的 使 用 例 .I-87015W / 87015PW 為 7 點 ( 路 ) RTD 溫 度 輸 入 卡 , 使 用 I-87015W 於 主 機 旁 的 I/O 插 槽 時 , 請在 <strong>ISaGRAF</strong> I/O connection 視 窗 內 , 在 相 對 應 的 插 槽 編 號 連 上 “i_87015f” , 每 個 輸 入 點 可 設 為不 同 的 Range, 請 參 閱 On-Line Help 內 的 說 明 , 如 下 . ( 若 要 取 得 攝 式 度 或 華 式 度 請 參 閱3.2.2 節 來 設 Range 參 數 )i-87015W 的 每 個 Channel 可設 成 不 同 的 Range Type使 用 I-87015W 於 主 機 旁 的I/O 插 槽 時 , 請 在 <strong>ISaGRAF</strong>I/O connection 視 窗 內 , 在 相對 應 的 插 槽 編 號 連 上i_87015fOn-Line Help 說 明 文 件<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-17 <strong>ICP</strong> <strong>DAS</strong>


3.2.7: I-87019ZW 板 卡 使 用 說 明I-87019ZW 為 工 業 用 溫 度 Thermo-Couple 量 測 板 卡 , 或 可 為 一 般 類 比 輸 入 量 測 板 卡 , 如“10V” 或 “20mA”, 每 個 板 卡 上 更 10 個 輸 入 點 , 每 個 接 點 可 設 成 量 測 不 同 的 訊 號 與Range.請 參 考 http://www.icpdas.com/products/PAC/i-8000/8000_IO_modules.htm > I-87019ZW它 的 類 比 輸 入 值 一 般 為 –32768 到 +32767 , 與 實 際 訊 號 的 關 係 請 參 閱 附 錄 D.當 使 用 成 溫 度 輸 入 時 , 可 以 使 用 如 第 3.2.2 節 的 方 式 來 直 接 取 得 溫 度 值 .I-87019ZW 若 Range 是 設 成 06, 07, 0D 或 1A 來 量 測 電 流 時 不 需 在 I/O 端 子 上 並 接 125 ohm 電阻 , 只 需 調 整 板 卡 上 各 接 點 的 Jumper 為 電 流 輸 入 方 式 就 可 使 用 .它 的 Sample Rate 約 為 10/10 = 1 Hz. 即 每 秒 對 全 部 10 接 點 可 取 樣 1 次 . ( 若 您 的 應 用 是 如“10V” 或 “20mA” 的 訊 號 量 測 , 且 需 要 較 快 的 Sample Rate, 請 採 用 I-8017HW)請 在 IO connection 視 窗 內 , 在 相 對 應 的 槽 編 號 連 上 “i_87019z” , 並 設 好 想 使 用 的 Range 設 定 ,之 後 再 將 對 應 的 Integer Input 變 數 連 接 在 Ch.1 到 Ch.10 上 , 如 下若 設 為 100F, 表 示 使 用 T/CK-Type, 轉 換 成 攝 氏 度 , 單 位 為0.01 度 .若 設 為 200F, 表 示 使 用 T/CK-Type, 轉 換 成 華 氏 度 , 單 位 為0.01 度 .當 使 用 特 殊 設 定 回 傳 的 溫 度 值 為999990 時 , 表 示 溫 度 輸 入 Sensor斷 線 了 ( 參 考 第 3.2.2 節 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-18 <strong>ICP</strong> <strong>DAS</strong>


3.2.8: I-8024W 板 卡 使 用 說 明I-8024W 為 工 業 用 類 比 輸 出 板 卡 , 可 輸 出 “10V” 或 “0 到 20mA” 的 訊 號 . 每 個 I-8024W 上面 更 4 個 輸 出 點 , 每 點 可 設 為 使 用 不 同 的 Range 輸 出 ( 電 壓 或 電 流 ).請 參 考 http://www.icpdas.com/products/PAC/i-8000/8000_IO_modules.htm > I-8024W它 的 輸 出 速 率 跟 PLC 的 Scan Time 更 關 , 如 果 PLC 的 scan time 約 是 10 ms, 那 若 程 式 的 輸 出值 更 變 , 那 它 會 在 約 10 ms 更 新 輸 出 值 . 但 若 PLC scan time 是 100ms, 那 若 程 式 的 輸 出 值 更變 , 那 它 會 在 約 100 ms 更 新 輸 出 值 .跟 I-87024W 相 比 , I-8024W 的 更 新 速 率 較 快 , 且 I-87024W 不 像 I-8024W 那 樣 每 個 接 點 都 可 設成 不 同 Range, I-87024W 的 4 個 輸 出 點 都 需 設 成 相 同 的 一 個 Range.不 過 I-87024W 可 在 主 機 旁 的 第 0 到 7 槽 使 用 , 也 可 在 RS-485 遠 程 擴 充 模 組 I-87K4/5/8/9 或RU-87P4/8 上 使 用 . 而 I-8024W 只 能 在 主 機 旁 的 第 0 到 7 槽 使 用 .I-8024W 的 輸 出 值 為 :電 流 : (0 到 32767) 代 表 (0 到 20 mA) 或 電 壓 : (-32768 到 32767) 代 表 (-10到 10 V)Range Code 項 目 最 大 值 最 小 值3033實 際 電 流 輸 出 訊 號 +20.0 mA +0.0 mA類 比 輸 出 值 +32767 +0實 際 電 壓 輸 出 訊 號 +10.0 V -10.0 V類 比 輸 出 值 +32767 -32768要 使 用 I-8024W, 請 在 IO connection 視 窗 內 相 對 應 的 槽 編 號 上 , 連 上 “i_8024” , 之 後 請 設 定 每個 接 點 的 Range, 再 把 Integer Output 變 數 連 在 各 別 的 Channel 上 .I-8024W 每 點 的 Range 設 定 可不 相 同<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-19 <strong>ICP</strong> <strong>DAS</strong>


3.2.9: I-87018ZW 板 卡 使 用 說 明I-8701ZW 為 工 業 用 溫 度 Thermo-Couple 量 測 板 卡 , 或 可 為 一 般 類 比 輸 入 量 測 板 卡 , 如20mA 或 0 ~ 20 mA 或 4 ~ 20 mA 或 2.5V , 1V , 500mV, 100mV, 50mV , 15mV . 每個 板 卡 上 更 10 個 輸 入 點 , 每 個 Channel 的 量 測 準 確 度 較 i-87018W 與 i-87018RW 高 , 且 每 個Channel 可 設 成 使 用 不 同 的 輸 入 型 態 , 比 如 可 使 用 第 1 到 4 Ch. 來 量 測 4 ~ 20mA , 第 5 到 8Ch. 來 量 測 T/C K-Type, 第 9 Ch 量 測 +/- 2.5V , 第 10 Ch. 量 測 T/C R-Type請 參 考 http://www.icpdas.com/products/PAC/i-8000/8000_IO_modules.htm >I-87018ZW它 的 類 比 輸 入 值 一 般 為 –32768 到 +32767 , 與 實 際 訊 號 的 關 係 請 參 閱 附 錄 D.當 使 用 成 溫 度 輸 入 時 , 可 以 使 用 如 第 3.2.2 節 的 方 式 來 直 接 取 得 溫 度 值 .I-87018ZW 若 Range 是 設 成 量 測 電 流 , 例 如 06: 20mA 或 07: 4 ~ 20 mA 或 1A: 0 ~ 20 mA, 必需 在 I/O 端 子 上 該 Channel 的 正 , 負 端 , 並 接 1 個 125 ohm 電 阻 , 才 能 量 測 電 流 值 .它 的 Sample Rate 約 為 10/10 = 1 Hz. 即 每 秒 對 全 部 10 接 點 可 取 樣 1 次 ( 若 您 的 應 用 是 如“10V” 或 “20mA” 的 訊 號 量 測 , 且 需 要 較 快 的 Sample Rate, 請 採 用 I-8017HW)請 在 IO connection 視 窗 內 , 在 相 對 應 的 槽 編 號 連 上 “i_87018z” , 並 設 好 想 使 用 的 Range 設 定 ,之 後 再 將 對 應 的 Integer Input 變 數 連 接 在 Ch.1 到 Ch.10 上 , 如 下87018ZW 的 每 個 接 點 可 設 成 不 同 的Range.本 例 , 第 1 到 4 Ch. 設 為 1A: 0 ~ 20 mA.點 選 “?” 可 查 詢 關於 i_87018z 的range 設 定 說 明 .第 5 到 8 Ch. 設 為 100F, 表 示 使 用 T/CK-Type, 轉 換 成 攝 氏 度 , 單 位 為 0.01 度 .第 9 到 10 Ch. 設 為 200F, 表 示 使 用 T/CK-Type, 轉 換 成 華 氏 度 , 單 位 為 0.01 度 .當 使 用 特 輸 設 定 回 傳 的 溫 度 值 為 999990時 , 表 示 溫 度 輸 入 Sensor 斷 線 了 .( 參 考 第 3.2.2 節 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-20 <strong>ICP</strong> <strong>DAS</strong>


3.3: 一 些 特 殊 虛 卡 的 連 結 使 用 說 明3.3.1: 連 結 Push4Key 與 Show3Led 虛 卡I-8xx7 與 iP-8xx7 控 制 器 更 一 些 可 以 幫 忙 程 式 進 行 測 式 和 除 錯 的 工 具 。 這 些 工 具 即 在 I-8xx7 控制 器 前 方 面 板 上 的 ”Push4Key” 和 ”Shoew3Led” ( 其 他 PAC, 如 XP-8xx7-CE6, WP-8xx7,VP-25W7 / 23W7, 7188EG/XG, µPAC-7186EG 不 支 持 pushkey 與 show3Led)。“Push4Key” 主 要 更 四 個 可 以 處 理 數 位 輸 入 的 按 鍵 , 分 別 位 於 控 制 器 的 前 方 面 板 。而 ”Show3Led” 是 在 控 制 器 前 方 面 板 上 的 左 邊 三 個 LED 燈 ( 從 左 到 右 的 三 個 LED 燈 , 而 第 四 個LED 燈 為 控 制 器 的 電 源 燈 ) 其 主 要 為 處 理 數 位 輸 出 訊 號 。“Push4Key” 和 ”Show3Led” 透 過 ”I/O Connect” 視 窗 可 以 連 結 到 <strong>ISaGRAF</strong> 程 式 , 用 來 幫 助程 式 除 錯 。 若 您 要 在 ”I/O Connection” 上 使 用 ”Push4Key” 和 ”Show3Led” 這 兩 個 虛 擬 I/O 板 ,建 議 您 把 他 們 設 在 插 槽 編 號 8 或 8 以 上 的 插 槽 上 ( 因 為 插 槽 0~7 是 給 真 實 的 I/O 板 用 的 )。注 意 :在 <strong>ISaGRAF</strong> 程 式 中 使 用 ”Push4Button” 和 ”Show3Led 時 , 您 必 需 在 ”<strong>ISaGRAF</strong> Global Variables”宣 告 變 數 名 稱 給 每 一 個 ”Push4Key” 的 輸 入 變 數 和 ”Show3Led” 的 輸 出 變 數 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-21 <strong>ICP</strong> <strong>DAS</strong>


3.3.2: 連 結 io_state 虛 卡 來 偵 測 真 實 IO 板 卡 的 運 作 狀 態“io_state” 虛 卡 可 用 來 偵 測 是 否 對 應 的 第 0 到 7 槽 的 真 實 的 IO 板 卡 是 否 更 以 下 情 況 發 生(1) 插 錯 卡 片 或 插 錯 槽 編 號 ( 無 法 偵 測 如 I-8112iW/8114iW/8142iW/8144iW 與 I-8212W 與I-8072/I-8073 等 卡 片 )(2) 卡 片 被 拔 掉(3) 卡 片 損 壞 導 至 板 卡 ID 讀 取 錯 誤 , 所 以 可 判 讀 為 卡 片 故 障 .重 要 :請 不 要 I-8xxx 與 I-8xxxW 等 Parallel 卡 片 在 控 制 器 更 上 電 的 情 況 下 將 IO 板 卡 插 入 第 0到 7 的 IO 插 槽 . 此 動 作 更 很 大 的 可 能 會 造 成 IO 板 卡 甚 至 是 控 制 器 的 損 壞 . 只 更 I-87xxxW等 高 板 卡 片 可 以 在 iP-8xx7, XP-8xx7-CE6, WP-8xx7 與 VP-25W7, VP-23W7 與 VP-2117 等PAC 內 進 行 熱 插 拔 .“io_state” 只 可 偵 測 更 連 在 <strong>ISaGRAF</strong> IO connection 視 窗 內 第 0 到 7 槽 的 真 實 板 卡 , 沒作 IO connection 但 確 更 插 在 第 0 到 7 槽 的 真 實 板 卡 不 會 去 偵 測 .使 用 方 式 如 下 , 將 io_state 連 結 在 第 8 或 以 上 的 槽 編 號 上 .此 例 會 偵 測 第 1, 2 與 第 5 槽 的 對 應 的 真 實 卡 片 是 否 正 常 運 作 . “io_state” 的 Ch.1 到 Ch.8 為 對應 於 第 0 到 7 槽 真 實 IO 卡 片 的 運 作 狀 態 , 傳 回 TRUE 表 示 運 作 正 常 , 傳 回 FALSE 表 示 異 常或 故 障 . (XP-8xx7-CE6 與 Wincon 沒 更 Ch.1 第 0 槽 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-22 <strong>ICP</strong> <strong>DAS</strong>


3.3.3: 連 結 echo_tim 虛 卡 來 延 遲 Modbus RTU Slave 串 口 一 段 時 間 後 再 回 覆I-8xx7 , iP-8xx7 與 W-8xx7/8xx6 控 制 器 更 支 持 “echo_tim” 虛 卡 , 可 用 來 延 遲 ModbusRTU Slave 通 訊 串 口 一 段 時 間 後 再 回 覆 . 每 台 I-8xx7 與 W-8xx7/8xx6 控 制 器 只 更 1 個Modbus RTU Slave 通 訊 串 口 可 設 為 延 遲 回 覆 , 其 它 的 Modbus RTU Slave 通 訊 串 口 都 是 收 到PC / HMI / Other 的 Modbus Request 後 , 會 馬 上 回 覆 ().可 設 為 延 遲 回 覆 的 Modbus RTU Slave 通 訊 串 口 :I-8xx7 , iP-8xx7: COM1 或 COM2 或 COM3 的 其 中 一 個W-8xx7 / 8xx6 : COM2 或 COM3 的 其 中 一 個使 用 方 法 為 將 echo_tim 連 結 在 槽 編 號 8 或 以 上 的 槽 編 號 上 .第 1 個 Delay_COM 參 數 為 要 延 遲 那 個 通 訊 串 口 , I-8xx7, iP-8xx7 可 以 是 1, 2 或 3. W-8xx7可 以 是 2 或 3. 第 2 個 Delay_time 參 數 為 “ 要 延 遲 多 久 ? “, 可 以 是 1 到 10000, 單 位 為 ms(0.001 秒 )Ch.1 若 回 傳 FALSE 表 示 Ok, 若 回 傳 TRUE 表 示 更 問 題 , 比 如 用 錯 串 口 編 號 .以 下 的 例 子 , 會 將 I-8xx7 的 COM1: Modbus RTU Slave 串 口 的 回 覆 時 間 延 遲 0.05 秒 後 再 回覆 . (Wincon 只 能 延 遲 COM2 或 COM3)為 何 需 要 延 遲 Modbus RTU Slave 通 訊 串 口 的 回 覆 時 間 ?更 些 應 用 的 通 訊 設 備 需 要 切 換 收 或 送 的 狀 態 , 而 切 換 狀 態 時 會 需 要 一 小 段 時 間 , 比 如 像 某些 無 線 傳 輸 設 備 . 當 主 控 端 發 出 Modbus RTU 詢 問 命 令 經 由 “ 此 無 線 傳 輸 設 備 ” 發 到I-8xx7 , iP-8xx7 或 W-8xx7 的 Modbus RTU Slave 串 口 之 後 , I-8xx7 或 W-8xx7 不 能 馬 上 回 覆 ,需 等 一 段 時 間 等 “ 此 無 線 傳 輸 設 備 ” 收 / 送 狀 態 切 換 完 畢 後 才 可 回 覆 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-23 <strong>ICP</strong> <strong>DAS</strong>


3.3.4: WP-8xx7, VP-25W7 與 XP-8xx7 連 結 RTU_Slav 虛 卡 來 使 用 更 多 擴 充 的Modbus RTU Slave 串 口WP-8xx7 , VP-25W7 除 了 COM2:RS-232 與 COM3:RS-485 的 其 中 一 個 可 以 規 劃 成 為 ModbusRTU Slave 串 口 外 , 另 外 可 再 規 劃 最 多 4 個 串 口 來 支 持 Modbus RTU Slave 串 口 於 擴 充 的i-8112iW/8114iW/8142iW/8144iW 板 卡 上 (COM5 to COM8). XP-8xx7-CE6 則 是 可 再 規 劃 最 多8 個 串 口 來 支 持 Modbus RTU Slave 串 口 . 請 先 參 考 個 別 PAC 的 “ 快 速 上 手 手 冊 ” 先 將 擴充 的 COM port 先 設 立 起 來 .在 <strong>ISaGRAF</strong> 程 式 內 要 規 劃 擴 充 的 Modbus RTU Slave 串 口 , 需 在 I/O connection 視 窗 內 連上 “RTU_Slav” 虛 卡 於 Slot 編 號 8 或 8 以 上 (XP-8xx7-CE6 還 更 另 外 支 持 RTU_Slv2), 如 下請 按 ”?” 來 查 詢 rtu_slav 說 明 文 件 最下 方 的 日 期 是 否 為 Feb.15,2007 或 更以 後 的 日 期 , 才 能 夠 設 定Delay_time2 到 Delay_tim5 參 數 , 若是 比 較 舊 的 日 期 , 請 參 考 第 1.2 節 的方 法 下 載 新 的 , 再 安 裝 到 <strong>ISaGRAF</strong>內 .Rtu_Slave_Port2 到 Rt u_Slave_Port5 參 數 可 以 設 成 0, 5, 6 ,7 或 8 . 設 為 0 表 示 該 Port 不 想規 劃 為 Modbus RTU Slave 串 口 .Baud_Port2 到 Baud_Port5 參 數 可 以 設 成 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 或115200.Delay_time2 到 Baud_Port5 參 數 可 以 設 成 0 或 1 到 10000, 單 位 為 0.001 秒 . 表 示 收 到PC/HMI/ 圖 控 軟 體 的 詢 問 命 令 後 , 要 延 遲 多 少 時 間 再 回 覆 . 關 於 延 遲 回 覆 的 需 求 說 明 請 參考 第 3.3.3 節 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-24 <strong>ICP</strong> <strong>DAS</strong>


3.3.5: 使 用 dis_stop 虛 卡 來 關 閉 / 開 啟 <strong>ISaGRAF</strong> Download 程 式 功 能更 時 當 <strong>ISaGRAF</strong> PAC 程 式 開 發 完 , 為 了 預 防 被 人 誤 用 或 故 意 使 用 <strong>ISaGRAF</strong> 從 Internet 來將 Program Stop, 可 以 連 接 Dis_stop 虛 卡 , 將 該 輸 出 點 的 初 值 設 為 TRUE, 就 可 防 止 被 人 使用 <strong>ISaGRAF</strong> 將 程 式 Stop.若 是 需 要 再 啟 用 它 , 請 先 用 原 來 的 <strong>ISaGRAF</strong> 程 式 連 上 controller 後 , 將False. 如 此 就 可 download 修 改 後 的 <strong>ISaGRAF</strong> 程 式 進 去 .該 輸 出 點 設 為關 於 更 多 網 路 安 全 的 說 明 , 請 參 考 第 19 章 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-25 <strong>ICP</strong> <strong>DAS</strong>


3.4: 直 接 表 示 變 數若 您 是 使 用 <strong>ISaGRAF</strong>-256 或 <strong>ISaGRAF</strong>-L workbench, 您 就 不 需 使 用 本 章 節 所 提 到 的 技 巧 。<strong>ISaGRAF</strong> Workbench 程 式 更 一 個 很 更 用 的 特 色 , 就 是 能 夠 使 用 ” 直 接 表 示 變 數 ”。 直 接 表 示變 數 不 頇 實 際 連 結 到 輸 入 或 輸 出 點 。 更 四 種 版 本 的 <strong>ISaGRAF</strong> Workbench 程 式 支 援 <strong>ISaGRAF</strong>PAC 控 制 程 式 。 如 :<strong>ISaGRAF</strong>-32、<strong>ISaGRAF</strong>-80、<strong>ISaGRAF</strong>-256 和 <strong>ISaGRAF</strong>-L。<strong>ISaGRAF</strong> 後 面的 數 字 代 表 在 所 指 定 的 <strong>ISaGRAF</strong> Workbench 程 式 中 可 允 許 使 用 的 輸 出 / 輸 入 的 變 數 數 目 。<strong>ISaGRAF</strong> Workbench 程 式 更 一 個 硬 体 保 護 裝 置 直 接 裝 在 電 腦 的 帄 行 埠 上 , 每 當 你 在 <strong>ISaGRAF</strong>內 編 譯 程 式 時 , 硬 体 保 護 裝 置 就 會 被 讀 取 以 判 斷 你 是 否 更 連 結 更 多 的 輸 出 / 輸 入 變 數 名 稱 以 致超 過 您 所 購 買 的 <strong>ISaGRAF</strong> 所 允 許 的 輸 出 / 輸 入 變 數 數 目 。這 些 ” 直 接 表 示 變 數 ” 可 以 被 使 用 在 真 正 的 輸 出 , 輸 入 當 中 , 所 以 你 可 以 建 立 額 外 的 變 數 而 不 超過 <strong>ISaGRAF</strong> 所 允 許 的 輸 出 , 輸 入 變 數 數 量 。 “ 直 接 表 示 變 數 ” 必 需 小 心 使 用 , 存 取 這 些 “ 直 接表 示 變 數 ” 比 使 用 輸 出 / 輸 入 變 數 複 雜 。 對 一 個 專 業 的 程 式 設 計 師 而 言 , 建 議 購 買<strong>ISaGRAF</strong>-256。單 一 型 態 板 (Board) 的 直 接 表 示 變 數 程 式 設 計 :單 一 型 態 板 : "s" 表 示 插 槽 號 碼 , "c" 表 示 channel 號 碼%IXs.c%QXs.c%IDs.c%QDs.c%ISs.c%QSs.c布 林 輸 入 板 , 如 %IX2.3布 林 輸 出 板 , 如 %QX0.2整 數 輸 入 板 , 如 %ID3.1整 數 輸 出 板 , 如 . %QD2.4訊 息 輸 入 板 , 如 %IS3.1訊 息 輸 出 板 , 如 %QS2.4複 合 型 態 板 (Equipment) 的 直 接 表 示 變 數 程 式 設 計複 合 型 態 板 : "s" 表 示 插 槽 號 碼 , "b" 代 表 複 合 板 內 各 個 子 板 的 編 號 "c" 表 示 channel號 碼 .%IXs.b.c 布 林 輸 入 板 , 如 %IX2.3.2%QXs.b.c 布 林 輸 出 板 , 如 %QX0.2.1%IDs.b.c 整 數 輸 入 板 , 如 %ID3.1.3%QDs.b.c 整 數 輸 出 板 , 如 %QD2.4.3%ISs.b.c 訊 息 輸 入 板 , 如 %IS3.3.1%QSs.b.c 訊 息 輸 出 板 , 如 %QS2.1.4<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-26 <strong>ICP</strong> <strong>DAS</strong>


一 個 直 接 變 數 的 程 式 例 子在 <strong>ISaGRAF</strong> ST 程 式 中 建 立 一 個 新 的 專 案 , 接 著 在 視 窗 下 連 結 到 I/O boards。 在 插 槽 0 上 連 結一 個 I-8051 板 並 為 它 宣 告 三 個 內 部 屬 性 的 變 數 (D1、D2、D3), 在 插 槽 1 上 連 結 一 個 I-8056 板並 為 它 宣 告 三 個 內 部 屬 性 的 變 數 (OUT1、OUT2、OUT3)。 切 記 為 各 個 變 數 設 定 他 們 的 屬 性為 ” 內 部 ” 以 代 替 ” 輸 出 ” 和 ” 輸 入 ”( 這 表 示 這 些 變 數 不 需 實 際 連 到 實 体 的 I/O)建 立 一 個 新 的 ”ST” 程 式雙 擊 ”ST_inter” 接 著 ”<strong>ISaGRAF</strong> ST Program” 程 式 視 窗 將 會 開 啟 , 接 著 依 照 下 方 視 窗 上 的 程式 碼 輸 入 , 記 得 每 行 的 結 尾 一 定 要 輸 入 分 號 (“;”)。D1 := %IX0.1 ;D2 := %IX0.2 ;D3 := %IX0.3 ;%QX1.1:= OUT1 ;%QX1.2:= OUT2 ;%QX1.3:= OUT3 ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-27 <strong>ICP</strong> <strong>DAS</strong>


現 在 我 們 可 以 在 別 的 程 式 中 使 用 所 建 立 的 內 部 變 數 D1~D3 和 OUT1~OUT3. 這 些 內 部 變 數 將會 在 ST 程 式 中 的 相 關 I/O 板 裡 產 生 輸 出 輸 入 的 動 作 。注 意 :假 如 輸 入 或 輸 出 變 數 更 連 結 到 “Boards” 或 “Equipment”、 而 現 在 想 要 更 改 變 數 內 容 以 使 用 ” 直接 表 示 變 數 ” 時 , 這 些 輸 出 輸 入 變 數 必 需 重 新 設 定 成 ” 內 部 ” 屬 性 且 ”Board” 或 “Equipment” 必 需再 重 新 連 結 一 下 到 插 槽 上 。假 如 您 想 使 變 數 的 屬 性改 為 ” 內 部 屬 性 , 您 必 頇在 “dictionary” 視 窗 內 重新 更 改 變 數 的 屬 性 。將 插 槽 刪 除 再 重 新 連 結 .注 意 :若 要 使 用 上 載 功 能 且 又 想 同 時 使 用 “ 直 接 表 示 變 數 ”, 在 編 譯 選 項 中 的 “Upload” 裡 更 一 個“Command for not connect I/O channel” 必 需 要 選 取 。 ( 參 考 9.2 節 ).<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-28 <strong>ICP</strong> <strong>DAS</strong>


3.5: 內 建 於 I-87xxx 及 I-7000 D/I 模 組 的 計 數 值87051W, 87052W, 87053W, 87054W, 87055W, 87058W, 87063W & i-7050, 7052, 7053, 7041,7044 ,7060, 7063 ,7065 等 模 組 的 每 個 D/I 點 更 內 建 的 計 數 值 (Counter). 這 些 D/I 計 數 值 只 能 接受 最 快 到 100 Hz. 計 數 值 的 範 圍 為 0 到 65535, 可 重 置 為 0.若 是 將 I-87xxx D/I 模 組 插 在 主 機 的 第 0 ~ 7 槽 , 只 要 在 ”I/O connection” 視 窗 內 連 接 以 “C”結 尾 的 I-87xxx D/I 模 組 即 可 . 例 如 “i_87052C” .點 選 這 裏 可 看線 上 說 明 文 件 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-29 <strong>ICP</strong> <strong>DAS</strong>


若 是 將 I-87xxx D/I 模 組 插 在 87K4, 87K5, 87K8 & 87K9 等 遠 程 擴 展 模 組 上 , 或 是 使 用 I-7000D/I 模 組 , 首 先 請 依 照 第 6 章 的 方 法 , 以 DCON Utility 設 好 每 個 模 組 的 位 址 編 號 , 接 著 在 ”I/Oconnection” 內 連 接 “Bus7000b”.然 後 可 在 LD 程 式 內 使 用 “I_DiCnt” 方 塊 來 取 得 D/I 計 數 值 (Counter). 每 個 “I_DiCnt” 方 塊可 取 得 4 個 計 數 值 .模 組 的 位 址 ,需 為 常 數從 第 幾 點 ( 路 ),開 始 取 得 4 點的 計 數 值 , 需為 常 數取 得 的 4 個 點 的 計數 值 (Integer)重 置 與 否 , 當 相 對 應 的 boolean 變 數 從 FALSE 上 升為 TRUE 時 , 會 將 該 點 ( 路 ) 的 計 數 值 重 置 為 0<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-30 <strong>ICP</strong> <strong>DAS</strong>


3.6: 自 動 搜 尋 及 宣 告 : Auto-Scan I/O在 可 以 正 確 使 用 Auto-scan I/O 功 能 前 , 請 參 閱 第 1.2 節 確 認 “<strong>ICP</strong> <strong>DAS</strong> Utilities For <strong>ISaGRAF</strong>” 是否 已 經 安 裝 好 ( 注 意 : 並 非 所 更 的 卡 片 都 支 持 Auto-scan).什 麼 是 Auto-scan I/O :這 是 <strong>ICP</strong> <strong>DAS</strong> 為 了 <strong>ISaGRAF</strong> 控 制 器 而 設 計 在 <strong>ISaGRAF</strong> 內 , 可 以 自 動 搜 尋 插 在 第 0 ~ 7 槽 的I/O 模 組 , 及 自 動 宣 告 I/O 變 數 的 功 能 .如 何 使 用 ?A. 開 啟 你 的 <strong>ISaGRAF</strong> 專 案 (Project).B. 以 滑 鼠 點 選 “Tools - <strong>ICP</strong> <strong>DAS</strong> - Auto-scan I/O” 以 開 始 自 動 搜 尋 .C. Auto-scan I/O 區 分 為 3 個 區 域Original I/O Connection : 左 側 , 顯 示 你 的 專 案 (Project) 原 本 連 結 在 0~7 槽 的 I/O 模 組 .Current Found I/O Modules : 中 間 , 顯 示 目 前 更 搜 尋 到 已 插 在 第 0~7 槽 的 I/O 模 組 .Auto-Declare Variables : 右 側 , 顯 示 更 那 些 搜 尋 到 的 I/O 模 組 , 可 以 自 動 宣 告 I/O 變 數 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-31 <strong>ICP</strong> <strong>DAS</strong>


D. 在 “Current Found I/O Modules” 區 :只 更 原 先 專 案 沒 更 連 結 的 槽 位 (Slot) 可 以 選 取 .E. 在 “Auto-Declare Variables” 區 :只 更 在 “Current Found I/O Modules” 區 內 更 選 取 的 槽 位 (Slot) 才 可 以 選 取 .F. 你 可 以 選 取 下 方 ”Select ALL” 去 選 取 全 部 可 選 取 的 項 目 .Auto-scan I/O 的 必 要 項 目 ?A. 通 訊 的 連 接 設 定 (Link setup) 要 對 (Com1, Com2, Ethernet ,…)B. I/O 模 組 要 先 插 好 在 PAC 上 .自 動 宣 告 變 數 的 命 名 規 則 :變 數 名 稱 格 式 : 型 態 _ 槽 編 號 _ 接 點 ( 路 ) 編 號型 態 :DI 點 : DIDO 點 : DOAI 點 : AIAO 點 : AO槽 編 號 : 1 個 位 數 的 號 碼 , 0 ~ 7.接 點 ( 路 ) 編 號 : 1 個 位 數 的 號 碼 , 01 ~ 32.範 例 . :DI_0_02 , 在 第 0 槽 第 2 號 接 點 的 DI.AI_5_06 , 在 第 5 槽 第 6 號 接 點 的 AI.DO_2_12, 在 第 2 槽 第 12 號 接 點 的 DO.AO_1_03, 在 第 1 槽 第 3 號 接 點 的 AO .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-32 <strong>ICP</strong> <strong>DAS</strong>


3.7: PWM 輸 出<strong>ISaGRAF</strong> 控 制 器 的 週 期 時 間 (scan time) 與 使 用 者 寫 的 <strong>ISaGRAF</strong> 程 式 及 控 制 器 的 驅 動 程 式(Driver) 更 關 . 一 般 的 應 用 約 介 於 5 到 40 ms 之 間 . 當 使 用 者 的 <strong>ISaGRAF</strong> 程 式 寫 的 很 複 雜 時更 可 能 會 增 加 到 100 ms. 因 此 要 用 <strong>ISaGRAF</strong> 寫 程 式 來 產 生 固 定 週 期 精 確 的 脈 波 輸 出 並 不 容 易 ,比 如 , 脈 波 輸 出 2 ms OFF & 1 ms ON.注 意 : 若 想 使 用 高 速 的 PWM , 請 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-105來 使 用 I-8088W , I-87088W 或 I-7088W.只 更 並 列 輸 出 (parallel output) 卡 更 支 援 PWM 功 能 , 如 下 .I-8037W, 8041W, 8042W, 8054W, 8055W, 8056W, 8057W, 8060W, 8063W, 8064W,8065W, 8066W, 8068W, 8069W (output 若 是 Relay 不 適 合 使 用 PWM, 因 為 relay 可 能 會來 不 及 反 應 )而 對 I-7188EG/XG, µPAC-7186EG 而 言 , 只 要 是 含 更 輸 出 點 的 X-xxx 卡 就 可 支 援 PWM 功 能 .注 意 : 最 多 只 可 同 時 開 啟 8 個 PWM 輸 出 .I-7188EG/XG, µPAC-7186EG 必 需 先 在 slot 0 連 結 X-xxx 卡 後 , PWM 輸 出 才 能 使 用 .以 下 函 式 可 用 來 處 理 PWM 輸 出 的 相 關 功 能 .PWM_dis關 閉 PWM 輸 出輸 入 參 數 :SLOT_ 整 數 那 個 slot ? 0 ~ 7CH_ 整 數 第 幾 點 ? 1 ~ 32.傳 回 值 :Q_ 布 林 TRUE: 正 確 .FALSE: 錯 誤 的 輸 入 參 數 , 或 太 多 點 被 開 啟 (>8), 或 找 不 到 .注 意 :1. 當 PWM 輸 出 以 PWM_dis 關 閉 後 , 該 相 對 應 的 輸 出 點 改 被 <strong>ISaGRAF</strong> cycle engine 控 制 .2. 最 多 8 個 輸 出 點 可 使 用 PWM_en, PWM_en2, pwm_ON, pwm_OFF.範 例 : I-8xx7, iP-8xx7: demo_63 , W-8xx7: Wdemo_22<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-33 <strong>ICP</strong> <strong>DAS</strong>


PWM_en 開 啟 PWM 輸 出 功 能 直 到 使 用 PWM_dis 來 關 閉 為 止輸 入 參 數 :SLOT_ 整 數 那 個 slot ? 0 ~ 7CH_ 整 數 第 幾 點 ? 1 ~ 32.OFF_ 整 數 Off 時 間 , 單 位 為 ms.ON_ 整 數 On 時 間 , 單 位 為 ms.I-8xx7, I-7188EG/XG, 7186EG, iP-8xx7: 1 ~ 32767WP-8xx7, XP-8xx7-CE6, VP-25W7 : 2 ~ 32766 ( 頇 設 為 2 的 倍 數 )傳 回 值 :Q_ 布 林 TRUE: 正 確 .FALSE: 錯 誤 的 輸 入 參 數 , 或 太 多 點 被 開 啟 (>8), 或 找 不 到 .範 例 : I-8xx7, iP-8xx7: demo_63 , W-8xx7: Wdemo_22PWM_en2 開 啟 PWM 輸 出 功 能 來 輸 出 一 給 定 數 量 的 脈 波輸 入 參 數 :SLOT_ 整 數 那 個 slot ? 0 ~ 7CH_ 整 數 第 幾 點 ? 1 ~ 32.OFF_ 整 數 Off 時 間 , 單 位 為 ms.ON_ 整 數 On 時 間 , 單 位 為 ms.I-8xx7, I-7188EG/XG, 7186EG, iP-8xx7: 1 ~ 32767WP-8xx7, XP-8xx7-CE6, VP-25W7 : 2 ~ 32766 ( 頇 設 為 2 的 倍 數 )NUM_ 整 數 要 輸 出 幾 個 脈 波 , 1 - 2,147,483,647, 若 給 負 值 , 將 永 遠 不 會停 ,除 非 用 Pwm_dis 命 令傳 回 值 :Q_ 布 林 TRUE: 正 確 .FALSE: 錯 誤 的 輸 入 參 數 , 或 太 多 點 被 開 啟 (>8), 或 找 不 到 .PWM 輸 出 波 形 :注 意 :1. 使 用 PWM_en 或 PWM_en2 後 , 該 輸 出 點 會 以 OFF, ON, OFF, ON, … 的 順 序 來 輸 出 .2. 當 使 用 PWM_en2 輸 出 達 到 所 要 求 的 脈 波 數 量 時 , 該 點 的 PWM 輸 出 會 停 止 並 自 動 關 閉 ( 所以 不 需 再 使 用 PWM_dis 來 關 閉 它 ).3. 可 使 用 PWM_sts 來 測 詴 PWM_en2 是 否 到 達 所 要 求 的 脈 波 數 量 .4. 最 多 8 個 輸 出 點 可 使 用 PWM_en, PWM_en2, pwm_ON, pwm_OFF.5. 不 可 再 開 啟 已 經 開 啟 PWM 輸 出 的 D/O 點 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-34 <strong>ICP</strong> <strong>DAS</strong>


pwm_ON將 並 列 D/O (Parallel D/O) 立 刻 輸 出 為 TRUE輸 入 參 數 :SLOT_ 整 數 那 個 slot ? 0 ~ 7CH_ 整 數 第 幾 點 ? 1 ~ 32.傳 回 值 :Q_ 布 林 TRUE: 正 確 .FALSE: 錯 誤 的 輸 入 參 數 , 或 太 多 點 被 開 啟 (>8), 或 找 不 到 .範 例 : I-8xx7, iP-8xx7: demo_63 , W-8xx7: Wdemo_22pwm_OFF將 並 列 D/O (Parallel D/O) 立 刻 輸 出 為 FALSE輸 入 參 數 :SLOT_ 整 數 那 個 slot ? I-8xx7: 0 ~ 7 , I-7188EG/XG: 0W-8xx7: 1 ~ 7CH_ 整 數 第 幾 點 ? 1 ~ 32.傳 回 值 :Q_ 布 林 TRUE: 正 確 .FALSE: 錯 誤 的 輸 入 參 數 , 或 太 多 點 被 開 啟 (>8), 或 找 不 到 .範 例 : I-8xx7: demo_63 , W-8xx7: Wdemo_22注 意 :1. 最 多 8 個 輸 出 點 可 使 用 PWM_en, PWM_en2, pwm_ON, pwm_OFF.2. pwm_ON 會 馬 上 將 該 D/O 點 設 為 TRUE.3. pwm_OFF 會 馬 上 將 該 D/O 點 設 為 FALSE .4. 假 如 某 D/O 點 已 使 用 過 pwm_ON 或 pwm_OFF, 請 先 以 PWM_dis 關 閉 該 點 後 , 才 能 改 使用 PWM_en 或 PWM_en2.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-35 <strong>ICP</strong> <strong>DAS</strong>


PWM_sts 測 詴 PWM 的 狀 態輸 入 參 數 :SLOT_ 整 數 那 個 slot ? 0 ~ 7CH_ 整 數 第 幾 點 ? 1 ~ 32.傳 回 值 :Q_ 布 林 TRUE: 該 輸 出 點 PWM 還 在 動 作 中 .FALSE: 該 輸 出 點 PWM 已 關 閉 ( 如 果 是 先 前 是 使 用pwm_en2 來 開 啟 PWM, FALSE 表 示 已 到 達 所 要 求 的 脈 波 數量 ).注 意 :1. 最 多 8 個 輸 出 點 可 使 用 PWM_en, PWM_en2, pwm_ON, pwm_OFF.2. 此 函 式 可 用 來 測 詴 "PWM_en2" 是 否 到 達 所 要 求 的 脈 波 數 量 .PWM_set 動 態 改 變 PWM 的 ON / OFF 波 形 寬 度輸 入 參 數 :SLOT_ 整 數 那 個 slot ? 0 ~ 7CH_ 整 數 第 幾 點 ? 1 ~ 32.OFF_ 整 數 Off 時 間 , 單 位 為 ms.ON_ 整 數 On 時 間 , 單 位 為 ms.I-8xx7, I-7188EG/XG, 7186EG, iP-8xx7: 1 ~ 32767WP-8xx7, XP-8xx7-CE6, VP-25W7 : 2 ~ 32766 ( 頇 設 為 2 的 倍 數 )NUM_ 整 數 要 輸 出 幾 個 脈 波 , 1 - 2,147,483,647, 若 給 負 值 , 將 永 遠 不 會停 ,除 非 用 Pwm_dis 命 令回 傳 值 :Q_ 布 林 TRUE: 正 確 . FALSE: 發 生 錯 誤 .PWM_sts2 取 得 pwm_en2 與 pwm_en 啟 用 後 已 經 輸 出 的 脈 波 數輸 入 參 數 :SLOT_ 整 數 那 個 slot ? 0 ~ 7CH_ 整 數 第 幾 點 ? 1 ~ 32.回 傳 值 :NUM_ 整 數 pwm_en2 與 pwm_en 啟 用 後 已 經 輸 出 的 脈 波 數注 意 :1. 此 函 數 只 更 在 pwm_en2 或 pwm_en 對 該 點 更 啟 用 才 更 作 用 .2. 回 傳 的 脈 波 數 更 可 能 會 比 實 際 的 輸 出 脈 波 數 小 一 些 . 比 如 啟 用 "pwm_en2" 輸 出 20000 個 脈波 數 , 更 可 能 輸 出 完 時 只 回 傳 數 量 為 19998.3. 若 "pwm_en2" 給 的 „NUM_” 參 數 為 負 值 , 脈 波 的 輸 出 將 不 會 停 止 , 除 非 碰 到 PWM_DIS命 令 它 停 . 這 種 若 一 值 不 停 的 脈 波 輸 出 值 會 從 0 , 1, 2, ... 到 2,147,483,647 然 後 會 回 到 0, 1,2, ...範 例 : I-8xx7, iP-8xx7: demo_63 , W-8xx7: Wdemo_22<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-36 <strong>ICP</strong> <strong>DAS</strong>


3.8: 並 列 輸 入 卡 的 Counter只 更 插 在 slot 0 的 並 列 輸 入 卡 更 counter 功 能 (XP-8xx7-CE6 則 是 Slot 0). 如 下 .I-8040W, 8042W, 8051W, 8052W, 8053W, 8054W, 8055W, 8058W, 8063WI-7188EG / XG 與 µPAC-7186EG 只 更 含 更 D/I 點 的 X-xxx 卡 更 D/I counter.注 意 : 若 想 使 用 高 速 Counter , Frequency, 請 參 考> FAQ-100 來 使 用 I-8084W 或 I-87084W.http://www.icpdas.com/faq/isagraf_c.htm每 台 控 制 器 最 多 只 能 使 用 8 個 並 列 D/I counter. Counter 的 輸 入 頻 率 最 高 為 500Hz. 最 小 脈 波長 度 需 大 於 1 ms.以 下 的 c 功 能 方 塊 可 取 得 / 重 置 (reset) slot 0 的 D/I counter.輸 入 參 數 :RS1_ ~ RS8_ 布 林 當 由 FALSE 上 升 到 TRUE 時 重 置 該 點 的 counter傳 回 值 :Q_ 布 林 正 確 : TRUE. 如 果 Q_ 傳 回 FALSE, 表 示 “slot0 找 不 到 並 列 輸 入 點 "CN1_ ~ CN8_ 整 數 第 1 到 8 點 的 counter 值 . 範 圍 介 於 0 到2,147,483,647. 假 如 值 超 過 2,147,483,647, 會 從0 開 始 .注 意 :只 更 插 在 slot 0 的 並 列 輸 入 (parallel D/I) 卡 可 使 用 “Di_Cnt”, 其 它 slot 不 行 .只 更 前 8 個 D/I 點 可 使 用 “Di_Cnt”.I-7188EG/XG, µPAC-7186EG 必 頇 在 slot 0 連 結 Xxxx 卡 , “Di_Cnt” 才 能 使 用 .範 例 : 請 參 閱 I-8xx7, iP-8xx7 的 demo_52 & demo_53.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-37 <strong>ICP</strong> <strong>DAS</strong>


3.10: 步 進 輸 出I-8417/8817/8437/8837 ( 其 它 PAC 不 支 持 步 進 輸 出 ) 從 驅 動 程 式 2.37 版 起 支 援 D/O 卡 來 控制 步 進 輸 出 . 只 更 以 下 的 板 卡 提 供 此 功 能 .I-8037, 8041, 8042, 8054, 8055, 8056, 8057, 8060, 8063, 8064, 8065, 8066, 8068, 8069每 台 控 制 器 最 多 支 援 2 軸 .每 軸 由 4 點 D/O 來 驅 動 . 請 用 以 下 方 式 接 線 .第 1 軸 : A --- Ch.1 B --- Ch.2 A_ --- Ch.3 B_--- Ch.4第 2 軸 : A --- Ch.5 B --- Ch.6 A_ --- Ch.7 B_--- Ch.8注 意 :請 勿 在 同 一 個 D/O 點 同 時 啟 動 PWM 及 步 進 輸 出 功 能 .I-7188EG/XG , 7186EG, W-8xx7, WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 不 支 援 步進 輸 出 功 能 .可 用 的 函 式 方 塊 :STP_en 啟 動 步 進 輸 出輸 入 參 數 :SLOT_ 整 數 那 個 slot ? 0 ~ 7AXIS_ 整 數 第 幾 軸 ? 1 - 2第 1 軸 : (Ch.1 - Ch.4), 第 2 軸 : (Ch.5 -Ch.8)MODE_ 整 數 那 種 mode ? 1 – 3, (A, B, A_, B_) =Mode 1: (1, 0, 0, 0) --> (0, 1, 0, 0) --> (0, 0, 1, 0) --> (0, 0, 0, 1)Mode 2: (1, 1, 0, 0) --> (0, 1, 1, 0) --> (0, 0, 1, 1) --> (1, 0, 0, 1)Mode 3: (1, 0, 0, 0) --> (1, 1, 0, 0) --> (0, 1, 0, 0) --> (0, 1, 1, 0) -->(0, 0, 1, 0) --> (0, 0, 1, 1) --> (0, 0, 0, 1) --> (1, 0, 0, 1)MS_ 整 數 步 距 , 1 - 1000, 單 位 為 ms.比 如 . 設 為 5 表 示 每 秒 跑 200 步 .DIR_ 布 林 True: 正 轉 , False: 反 轉傳 回 值 :Q_ 布 林 TRUE: 正 確 .FALSE: 錯 誤 的 輸 入 參 數 , 或 找 不 到 .注 意 :1. 可 使 用 "STP_dis" 去 停 止 步 進 輸 出2. 假 如 找 不 到 “STP_en”, “STP_en2”, “STP_sts” 及 “STP_dis”, 請 到 以 下 網 站 下 載 “<strong>ICP</strong> <strong>DAS</strong>Utilities For <strong>ISaGRAF</strong>.zip” , 然 後 執 行 setup.exe 來 安 裝http://www.icpdas.com/products/8000/isagraf.htm範 例 : demo_58 & demo_59.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-38 <strong>ICP</strong> <strong>DAS</strong>


STP_en2啟 動 步 進 輸 出 去 輸 出 給 定 的 步 數輸 入 參 數 :SLOT_ 整 數 那 個 slot ? 0 ~ 7AXIS_ 整 數 第 幾 軸 ? 1 - 2第 1 軸 : (Ch.1 - Ch.4), 第 2 軸 : (Ch.5 - Ch.8)MODE_ 整 數 那 種 mode ? 1 – 3, (A, B, A_, B_) =Mode 1: (1, 0, 0, 0) --> (0, 1, 0, 0) --> (0, 0, 1, 0) --> (0, 0, 0, 1)Mode 2: (1, 1, 0, 0) --> (0, 1, 1, 0) --> (0, 0, 1, 1) --> (1, 0, 0, 1)Mode 3: (1, 0, 0, 0) --> (1, 1, 0, 0) --> (0, 1, 0, 0) --> (0, 1, 1, 0) -->(0, 0, 1, 0) --> (0, 0, 1, 1) --> (0, 0, 0, 1) --> (1, 0, 0, 1)MS_ 整 數 步 距 , 1 - 1000, 單 位 為 ms.比 如 . 設 為 5 表 示 每 秒 跑 200 步 .NUM_ 整 數 要 輸 出 幾 步 ? 0 - 2,147,483,647DIR_ 布 林 True: 正 轉 , False: 反 轉傳 回 值 :Q_ 布 林 TRUE: 正 確 .FALSE: 錯 誤 的 輸 入 參 數 , 或 找 不 到 .注 意 :可 使 用 "STP_sts" 去 測 詴 “STP_en2” 是 否 已 到 達 給 定 的 步 數 .2. 停 止 "STP_en2" 的 方 法 為 - 使 用 "STP_dis" 或 - 等 它 到 達 所 要 求 步 數STP_sts取 得 步 進 輸 出 狀 態輸 入 參 數 :AXIS_ 整 數 第 幾 軸 ? 1 - 2第 1 軸 : (Ch.1 - Ch.4), 第 2 軸 : (Ch.5 - Ch.8)傳 回 值 :Q_ 布 林 TRUE: 仍 在 動 作 中 , FALSE: 停 止 ( 對 stp_en2 而 言 , 表示 已到 達 給 定 的 步 數 )STP_dis停 止 步 進 輸 出輸 入 參 數 :AXIS_ 整 數 第 幾 軸 ? 1 - 2第 1 軸 : (Ch.1 - Ch.4), 第 2 軸 : (Ch.5 - Ch.8)傳 回 值 :Q_ 布 林 TRUE: 正 確 .FALSE: 錯 誤 的 輸 入 參 數 , 或 找 不 到 .範 例 : demo_58 & demo_59.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 3-39 <strong>ICP</strong> <strong>DAS</strong>


第 4 章 連 接 I-8xx7 控 制 器 與 人 機 介 面 (HMI) 程 式這 個 章 節 詳 細 的 描 述 如 何 使 <strong>ISaGRAF</strong> 控 制 器 與 SCADA 或 人 機 界 面 (HMI) 程 式 交 換 資 料 。 這是 一 個 很 更 用 的 特 色 允 許 使 用 者 建 立 他 們 自 已 的 人 機 界 面 程 式 來 與 I-8xx7, I-7188EG/XG ,µPAC-7186EG, iP-8xx7, VP-2117, WP-8xx7, XP-8xx7-CE6 與 VP-25W7, VP-23W7 控 制 系 統 連結 。在 您 詳 細 了 解 4.1 節 後 , 假 如 您 想 使 用 <strong>ISaGRAF</strong> 控 制 器 當 做 ”Modbus RTU 或 Modbus TCP/IPI/O”, 您 可 以 參 考 4.3 節 。<strong>ICP</strong> <strong>DAS</strong> 所 提 供 的 ”Touch series” 觸 控 螢 幕 支 援 ”Modbus” 通 訊 協定 , 且 ”Touch series” 可 以 連 結 <strong>ISaGRAF</strong> 控 制 器 以 存 取 資 料 。 在 4.4 章 節 裡 詳 細 的 介 紹 如 何連 結 ”Touch 500” 和 <strong>ISaGRAF</strong> 控 制 系 統 。注 意 :1. 請 參 閱 各 別 PAC 的 “ 快 速 上 手 手 冊 ” 來 得 知 如 何 啟 用 Modbus RTU slave port.2. 所 更 更 Ethernet 網 口 的 <strong>ISaGRAF</strong> 控 制 器 都 更 支 持 Modbus TCP/IP Slave 規 約 .3. I-8417/8817 與 iP-8x47 的 COM1:RS232 與 COM2:RS485 內 定 支 持 Modbus RTU Slave 規約 .4. I-8437-80/8837-80 的 COM1:RS232 內 定 支 持 Modbus RTU Slave 規 約 . 4. I-7188EG/XG,µPAC-7186EG 的 COM1 內 定 支 持 Modbus RTU Slave 規 約5. WP-8xx7, XP-8xx7-CE6, VP-25W7, VP-23W7 出 貨 時 並 未 啟 用 Modbus RTU Slave 串 口 . 但 是他 們 的 Ethernet port 都 已 經 啟 用 了 Modbus TCP/IP Slave.4.1: 宣 告 變 數 的 網 路 位 址為 了 讓 <strong>ISaGRAF</strong> 控 制 器 和 SCADA 或 其 他 軟 体 程 式 (HMI) 或 人 機 介 面 程 式 中 能 交 換 處 理資 料 , 您 必 需 先 為 每 一 個 變 數 宣 告 其 網 路 位 址 號 碼 , 其 他 的 軟 体 程 式 或 人 機 介 面 程 式 要 讀 / 寫控 制 器 的 資 料 必 需 透 過 這 個 網 路 位 址 號 碼 .注 意 :1. I-8xx7. I-8437-80, I-8837-80 , I-7188EG/XG, VP-2117, µPAC-7186EG 與 iP-8xx7 可 使 用 的變 數 網 路 位 址 號 碼 為 1 到 FFF( 若 以 十 進 位 表 示 為 1 ~ 4095). 位 址 號 碼 5001 到 8072 是 給Word 和 Integer 陣 列 使 用 的 ( 請 參 閱 4.5 節 ).2. WP-8xx7, XP-8xx7-CE6, VP-25W7, VP-23W7 可 使 用 的 變 數 網 路 位 址 號 碼 為 1 到 1FFF( 若 以十 進 位 表 示 為 1 ~ 8191). 位 址 號 碼 10,001 到 19,216 是 給 Word 和 Integer 陣 列 使 用 的 ( 請 參閱 4.5 節 ).要 宣 告 變 數 的 網 路 位 址 更 兩 種 方 法 是 可 行 的 , 第 一 種 即 為 下 面 圖 示 的 宣 告 方 式 . ( 若 要 設 定 網路 位 址 給 “ 變 數 陣 列 ”, 請 參 考 第 2.6 節 的 說 明 ).<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-1 <strong>ICP</strong> <strong>DAS</strong>


開 啟 ”<strong>ISaGRAF</strong> Programs” 視 窗 並 且 單 擊 一 下 ”Dictionary” 圖 示 , 接 著 雙 擊 變 數 名 稱 來 指 定網 路 位 址 號 碼 。注 意 :在 這 裡 所 顯 示 的 值都 是 以 16 進 位 表 示上 圖 , 當 您 單 擊 ”Store” 按 鈕 時 , 你 將 會 看 到 下 圖 ”<strong>ISaGRAF</strong> Global Variables” 視 窗 上 的 網 路 位址 即 馬 上 變 成 您 所 設 定 的 數 值 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-2 <strong>ICP</strong> <strong>DAS</strong>


第 二 種 方 式 為 在 您 宣 告 變 數 完 之 後 再 設 定 網 路 位 址 , 這 種 方 式 允 許 您 連 續 指 派 網 路 位 址 給 很多 已 經 宣 告 好 的 變 數 。當 您 單 擊 ”Modbus SCADA Address Map” (SCADA 是 一 個 工 業 監 控 系 統 的 縮 寫 ”SupervisoryControl And Data Acquisition), ”Modbus SCADA Address Map” 視 窗 將 會 開 啟 。在 下 面 的 圖 示 中 , 變 數 D1 在 我 們 上 一 個 網 路 位 址 範 例 就 設 定 過 了 , 所 以 它 會 放 置 在 視 窗 上 方的 部 份 。 而 其 他 尚 未 設 定 網 路 位 址 的 變 數 , 將 會 顯 示 在 視 窗 下 方 的 部 份 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-3 <strong>ICP</strong> <strong>DAS</strong>


若 你 想 指 定 網 路 位 址 號 碼 給 變 數 , 您 可 以 單 擊 視 窗 上 方 未 被 指 派 的 號 碼 , 然 後 雙 擊 視 窗 下 方的 變 數 名 稱 , 這 樣 網 路 位 址 即 會 指 派 給 你 所 選 定 的 變 數 。一 般 來 說 , 網 路 位 址 編 號 用 16 進 位 的 方 式 來 表 示 是 很 不 方 便 的 , 容 易 增 加 犯 錯 的 機 率 。 因 此 ,將 16 進 位 格 式 轉 換 成 10 進 位 格 式 來 顯 示 是 很 需 要 的 。 作 法 如 下 圖 所 示<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-4 <strong>ICP</strong> <strong>DAS</strong>


關 於 Modbus 網 路 位 址 的 重 要 事 項“Modbus” 網 路 位 址 編 號 的 定 義 在 HMI 或 其 他 的 軟 体 程 式 中 更 時 是 不 同 的 。 這 不 同 之 處 就 是 在某 些 其 他 的 軟 体 程 式 所 指 派 的 網 路 位 址 號 碼 會 比 <strong>ISaGRAF</strong> 控 制 器 的 變 數 位 址 號 碼 少 1 號 。像 InduSoft, Iconics、Citech、Wizcon、Kepware‟s OPC server、Intellution‟s”iFix”、Wonderware‟s “Intouch”、National Instruments ”Labview”、 還 更 <strong>ICP</strong> <strong>DAS</strong>‟s Touch 506L, Touch506T 和 Touch 510T 等 裝 置 的 變 數 網 路 位 址 編 號 定 義 都 和 <strong>ISaGRAF</strong> 控 制 器 相 同 。而 某 些 人 機 界 面 和 <strong>ISaGRAF</strong> PAC 的 網 路 位 址 編 號 定 義 就 不 同 , 假 如 你 指 派 ”B” 這 個 網 路 位 址編 號 給 這 些 產 品 , 在 控 制 器 上 對 應 的 變 數 網 路 位 址 編 號 將 需 設 定 成 ”C”。 若 網 路 位 址 編 號是 ”2”, 在 控 制 器 上 必 頇 設 定 為 ”3”。另 外 需 注 意 , 市 面 上 賣 的 很 多 SCADA 與 HMI, 其 網 路 位 址 編 號 的 第 1 個 數 字 通 常 指 的 是 資料 的 型 態 及 讀 寫 權 限 , 這 個 數 字 在 <strong>ISaGRAF</strong> 內 是 不 需 要 的 (I-8xx7 , I-7188EG/XG, 7186EG,iP-8xx7 最 大 的 編 號 只 到 4095, WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 則 到 8191). 以 iFix 為例 , 它 與 <strong>ISaGRAF</strong> PAC 的 編 號 對 應 如 下 :iFix (10 進 位 )<strong>ISaGRAF</strong> PAC 網 路 位 址 編 號 (10 進位 )00001 (iFix 第 1 個 數 字 0 表 示 讀 / 寫 Boolean) 100002 210010 (iFix 第 1 個 數 字 1 表 示 讀 Boolean) 1010011 1131000(iFix 第 1 個 數 字 3 表 示 讀 Word) 100031001 100140101(iFix 第 1 個 數 字 4 表 示 讀 / 寫 Word) 10142001 2001<strong>ICP</strong> <strong>DAS</strong> 無 法 測 詴 所 更 SCADA 與 人 機 界 面 程 式 或 裝 置 的 網 路 位 址 編 號 差 異 , 假 如 你 想 用Modbus 協 定 連 接 人 機 界 面 程 式 或 其 他 裝 置 系 統 到 <strong>ISaGRAF</strong> 控 制 器 系 統 , 記 得 您 必 需 先 測 詴一 下 這 些 產 品 的 位 址 編 號 偏 移 量 是 否 相 同 或 差 1 號 , 以 方 便 它 們 之 間 的 溝 通 。程 式 設 計 者 若 要 用 Visual Basic 或 Visual C++ 來 開 發 他 們 自 已 的 界 面 程 式 , 建 議 參 考 第 5 章 ,裡 面 說 明 關 於 在 Modbus 上 開 發 界 面 程 式 的 通 訊 協 定 。注 意 :在 I-8xx7, µPAC-7186EG, I-7188EG/XG, iP-8xx7 , VP-2117 控 制 系 統 裡 , 一 個 Modbus 命 令 不能 詢 問 超 過 255 位 元 (bit 或 Boolean), 且 不 能 一 次 Modbus 命 令 詢 問 超 過 超 過 122 個 字 組(word), 它 必 需 拆 成 兩 個 或 兩 個 以 上 的 Modbus 命 令 來 傳 送 。但 對 WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 來 說 , 一 個 Modbus 命 令 可 以 詢 問 達 1968 位 元(bit 或 Boolean), 而 一 次 Modbus 命 令 一 樣 不 可 詢 問 超 過 超 過 122 個 字 組 (word)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-5 <strong>ICP</strong> <strong>DAS</strong>


4.2: 使 用 Modbus 讀 寫 Words, Long Words 及 Float 資 料Modbus protocol 提 供 函 式 3 及 4 來 讀 取 多 個 字 組 (word), 函 式 6 和 16 來 寫 入 字 組 (word)。 在第 五 章 裡 更 更 多 Modbus 的 相 關 訊 息 。定 義 在 <strong>ISaGRAF</strong> 控 制 器 Modbus 協 定 上 的 Word 是 一 個 Signed Short Integer, 佔 了 兩 個 位 元 組(bytes), 範 圍 值 從 -32768(16 進 位 表 示 法 為 8000) ~ 32767(16 進 位 表 示 法 為 7FFF)。 它 通 常 都 是被 用 來 描 述 類 比 點 的 物 理 量 。 例 如 ,I-87017W- I/O 板 ( 請 參 考 3.2 節 )I-87017W :Range 識 別 號 碼 物 理 量 數 值 輸 入 點 範 圍 值 (10 進 位 )(16 進 位 表 示 )-32768 0 +327678 (default) 10V - 10V 0V + 10V9 5V - 5V 0V + 5VA 1V - 1V 0V + 1VB 500mV - 500mV 0mV + 500mVC 150mV - 150mV 0mV + 150mVD 20mA - 20mA 0mA + 20mA定 義 在 <strong>ISaGRAF</strong> 控 制 器 Modbus 協 定 上 的 一 個 Long Word, 佔 了 四 個 位 元 組 , 它 的 範 圍 值 從最 小 的 -2,147,483,648(16 進 位 表 示 法 為 8000 0000) 到 +2,147,483,647(16 進 位 表 示 法 為 7FFFFFFF)。 它 通 常 是 被 用 來 表 示 宣 告 在 <strong>ISaGRAF</strong> Workbench 的 內 部 整 數 變 數 的 值 。宣 告 在 <strong>ISaGRAF</strong> 內 的 整 數 變 數 都 是 Signed 32-bit Format。 然 而 在 Modbus 傳 輸 協 定 裡 , 更 宣 告網 路 位 址 編 號 的 整 數 變 數 , 僅 佔 1 個 word(2 byte), 而 1 個 Long Interger 佔 兩 個 word(4 bytes),所 以 要 透 過 Modbus 來 讀 寫 Long Word, 網 路 位 址 編 號 必 頇 如 下 方 圖 示 的 方 法 來 指 定 .在 Modbus 協 定 中 , 若 V1 的 網 路位 址 編 號 被 指 定 為 1, 而 且 網 路 位址 編 號 2 未 指 定 給 任 何 變 數 使用 , 這 時 V1 在 Modbus 協 定 內 將佔 更 兩 個 Word ( 共 4 bytes)若 網 路 位 址 編 號 2 更 指 定 給 別 的變 數 使 用 , 這 時 V1 在 Modbus 協定 內 就 只 佔 更 一 個 Word (2 bytes)在 左 方 的 例 子 中 ,V1,V2,V3,V6,V7 和V8 佔 更 兩 個 Word (4 bytes), 而 V4和 V5 只 佔 更 一 個 Word (2 bytes)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-6 <strong>ICP</strong> <strong>DAS</strong>


要 讀 取 長 字 組 V1 的 值 , 可 藉 由 Modbus 函 式 3, 讀 取 二 個 字 組 的 資 料 ( 請 參 考 5.1 節 )Modbus 協 定 內 的 位 址 編 號 0000 和 變 數 的 網 路 位 址 編 號 1 是 相 對 應的讀 取 兩 個 字 元Req: Slv 03 00 00 00 02 crcH crcLAns: Slv 03 04 vH vL vH vL crcH CrcL低 字 組高 字 組要 寫 入 長 字 組 V1 的 值 , 可 藉 由 Modbus 函 式 16, 寫 入 二 個 字 組Req: slv 10 00 00 00 02 04 vH vL vH vL crcH crcLAns: slv 10 00 00 00 02 crcH CrcL低 字 組高 字 組讀 寫 Float 和 讀 寫 Long Word 是 大 同 小 異 的 。 唯 一 不 同 的 地 方 是 您 在 宣 告 變 數 時 , 變 數 格 式必 需 設 為 ”Real” 型 態 , 且 下 一 個 網 路 位 址 編 號 不 可 指 派 給 其 他 變 數 。在 市 面 上 更 很 多 現 成 的 HMI 套 裝 軟 体 , 您 需 要 注 意 他 它 們 是 否 更 支 援 Modbus 協 定 , 且 重 要的 是 你 在 <strong>ISaGRAF</strong> 中 是 否 設 對 變 數 的 網 路 位 址 編 號 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-7 <strong>ICP</strong> <strong>DAS</strong>


4.3: 將 I-8xx7 當 成 Modbus I/O 或 Modbus TCP/IP I/O 來 使 用更 一 些 人 機 界 面 軟 体 會 從 Modbus I/O 模 組 中 收 集 I/O 資 料 。 這 些 I/O 模 組 會 定 期 掃 描 輸 入 板 和更 新 輸 出 板 的 資 料 值 。 基 本 上 , 在 這 些 I/O 模 組 內 並 沒 更 控 制 邏 輯 在 裡 面 , 而 是 靠 外 部 的 人 機界 面 軟 体 來 進 行 資 料 的 處 理 。 為 了 配 合 這 種 使 用 方 法 ,I-8xx7, iP-8xx7, I-8437-80, I-8837-80 可被 當 成 Modbus I/O 模 組 來 使 用 。 另 外 I-8437-80, I-8837-80 與 iP-8x47 可 當 成 Modbus TCP/IPI/O 模 組 來 使 用 。 使 用 方 法 請 參 照 下 列 的 範 例 ( 若 您 還 不 熟 悉 <strong>ISaGRAF</strong> 程 式 設 計 , 建 議 參 閱 第二 章 )。建 立 一 個 新 的 專 案您 可 以 參 考 2.1.1.2 節例 子 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-8 <strong>ICP</strong> <strong>DAS</strong>


建 立 一 個 新 的 程 式不 需 在 程 式 內 寫 控 制 邏 輯例 子 :連 結 I/O 模 組您 可 以 參 閱 3.1 節例 子 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-9 <strong>ICP</strong> <strong>DAS</strong>


宣 告 I/O 模 組 內 的 輸 出 / 入 點 的 變 數 名 稱你 可 以 參 閱 2.1.1.3 節例 子 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-10 <strong>ICP</strong> <strong>DAS</strong>


連 結 變 數 到 I/O 模 組 的 輸 出 入 點 .您 可 以 參 閱 3.1.2 節例 子 :指 派 網 路 位 址 編 號 給 變 數您 可 以 參 閱 4.1 節例 子 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-11 <strong>ICP</strong> <strong>DAS</strong>


編 譯 & 下 載 專 案您 可 以 參 閱 2.1.3 & 2.1.5 節注 意 :若 使 用 Modbus TCP/IP 協 定 , 請 確 認 I-8437-80, I-8837-80, iP-8x47 的 NET-ID (1.3.1 節 )、IP、Mask( 附 錄 B) 是 否 設 定 正 確 。 若 設 定 無 誤 , 你 的 人 機 介 面 (HMI) 程 式 才 可 以 透 過 ModbusTCP/IP 網 址 來 存 取 I/O 模 板 的 資 料 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-12 <strong>ICP</strong> <strong>DAS</strong>


4.4: 連 結 <strong>ISaGRAF</strong> PAC 和 Touch 500 系 列Touch500 系 列 HMI 可 以 使 用 下 表 的 通 訊 規 約 , 來 與 <strong>ICP</strong> <strong>DAS</strong> 的 <strong>ISaGRAF</strong> 控 制 器 相 連 接 .型 號Touch-506LTouch-506TETouch-510T支 持 的 通 訊 規 約Modbus RTU RS-232 , Modbus RTU RS-485Modbus RTU RS-232 , Modbus RTU RS-485 , Modbus TCP/IPModbus RTU RS-232 , Modbus RTU RS-485您 必 需 在 電 腦 上 先 安 裝 ”EasyBuilder 500” 這 套 軟 体 , 才 能 開 發 Touch 506L, 506TE, 510T 的 人機 界 面 程 式 . 請 由 http://www.icpdas.com/download/others/touch/touch.htm 下 載 最 新 的 軟 體“setup.zip” 跟 手 冊 或 由 I-8000 CD-ROM:\napdos\others\touch\500series\setup\ 執 行“setup.exe” (2.7.1 版 起 )PC 連 接 到 Touch 500 系 列 產 品 的 RS232 通 訊 線 接 腳 如 下 (PC 下 載 HMI 畫 面 時 使 用 ).PC 9-Pin DSUB Female (RS232)RXD 2TXD 3GND 5Touch 510 (PC-232) 9-Pin DSUB Female8 RXD7 TXD5 GNDPC 下 載 畫 面 到 ”Toouch 500 系 列 ” 後 , 若 是 使 用 RS-232 接 線 由 Touch 500 連 到 控 制 器 , 如 下I-8000 COM1 & I-7188 COM1 (RS232) Touch 506TE/506L/510T (PLC 232)9-Pin Dsub Male9-Pin Dsub Male2 TXD 2 TXD3 RXD 3 RXD5 GND 5 GND7 CTS8 RTSWincon COM2 (RS232) Touch 506TE/506L/510T (PLC 232)9-Pin Dsub Female9-Pin Dsub Male2 RXD 2 TXD3 TXD 3 RXD5 GND 5 GND7 CTS8 RTS若 是 使 用 RS-485 接 線 , 由 Touch 500 連 到 控 制 器 , 接 線 的 接 腳 圖 如 下I-8417/8817 COM2 (RS485) Touch 506TE/506L/510T (PLC 485)DATA + 2 R+DATA - 1 R-Wincon COM3 (RS485) Touch 506TE/506L/510T (PLC 485)D + 2 R+D - 1 R-<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-13 <strong>ICP</strong> <strong>DAS</strong>


4.4.1: 設 計 <strong>ISaGRAF</strong> PAC 應 用 程 式<strong>ISaGRAF</strong> 控 制 器 內 變 數 的 網 路 位 址 編 號 一 定 要 設 定 , 不 然 ”Touch 500” 將 無 法 存 取 控 制 器的 資 料 。( 請 參 考 4.1、4.2 節 ) 若 你 對 <strong>ISaGRAF</strong> 的 程 式 語 法 不 熟 悉 , 建 議 您 複 習 第 二 章 。在 這 個 範 例 中 所 使 用 的 變 數 名 稱名 稱 型 態 屬 性 網 路 位 址 其 他OUT01 布 林 輸 出 0001 -OUT02 布 林 輸 出 0002 -VAL1 整 數 內 部 000A (10) -IO 連 結 :I-7188EG/XG & Wincon-8xx7 不 支持 show3led, 可 把 它 設 為 “Virtueboard”寫 一 個 階 梯 圖 程 式 , 將 ”VAL1” 的 結 果 顯 示 在 7 段 式 LED 燈 .WP-8xx7, XP-8xx7-CE6,VP-25W7 沒 更 支 持 這 個 方 塊 ,就 不 加 .當 你 完 成 這 個 專 案 程 式 後 , 編 譯 和 下 載 程 式 到 控 制 器 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-14 <strong>ICP</strong> <strong>DAS</strong>


4.4.2: 設 計 Touch 500 畫 面“EasyBuilder 500” 可 以 用 來 設 計 ”Touch 500” 系 列 的 人 機 介 面 圖 示 , 所 以 在 這 一 節 我 們用 ”EasyBuilder 500” 來 為 ”Touch 510” 寫 一 段 圖 示 , 幫 助 各 位 了 解 如 何 使 用 ”EasyBuilder500”。( 更 多 關 於 Touch series 的 程 式 設 計 技 巧 , 參 考 我 們 所 提 供 的 Touch series 使 用 手 冊 )請 點 選 左 下 角 的 [ 開 始 ]->[ 程 式 集 ]->[EasyBuilder ]->”EasyBuilder” 按 鍵 , 則 將 會 出 現 下 面 的 視窗 畫 面 , 選 擇 適 當 的 應 用 開 發 模 式 。按 下 [File]->”new”, 建 立 一 個 新 的 專 案 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-15 <strong>ICP</strong> <strong>DAS</strong>


按 下 [Edit]–> “System Parameters” 來 設 定 ”Touch 510” 和 <strong>ISaGRAF</strong> 控 制 器 之 間 的 通 訊 參 數 。在 下 面 視 窗 中 的 PLC type 要 設 成 ”MODBUS RTU”, Serial port 設 成 “RS232”, Data bits 設 成 “8Bits”, Stop bits 設 成 “1 Bit”, Baud rate 設 成 “19200”, Parity 設 成 “None”, PLC station No. 和<strong>ISaGRAF</strong> 控 制 器 的 Net-ID 都 設 成 1。注 意 :1. 若 是 使 用 Touch506TE 的 Ethernet 來 連 接 , PLC type 要 設 成 “MODBUS RTU TCP/IP” ,PLC I/F port 要 設 成 “Ethernet” , Local IP address 為 Touch506TE 要 設 成 的 IP , 而 ServerIP address 則 是 控 制 器 的 IP 地 址 , PLC station No 則 需 設 為 控 制 器 的 NET-ID ( 一 般 是 1號 )2. 若 是 使 用 2 線 式 RS-485 來 連 接 , 則 PLC type 要 設 為 “MODBUS RTU(485 2W)”, PLC I/Fport 要 設 成 ”RS-485 2W” , 其 它 則 與 使 用 RS-232 的 設 法 相 同 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-16 <strong>ICP</strong> <strong>DAS</strong>


按 下 ”Text”, 選 擇 自 已 喜 歡 的 顏 色 、 字 型 , 在 ”content” 內 編 輯 你 想 要 輸 入 的 文 字 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-17 <strong>ICP</strong> <strong>DAS</strong>


按 下 [Function Key]”General”, 選 擇 ”Change Window” 和 設 定 ”Window No.” 的 值 為 11。 來增 加 一 個 視 窗 的 按 鈕 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-18 <strong>ICP</strong> <strong>DAS</strong>


按 下 ”Shape”, 然 後 選 擇 ”Use shape”, 單 擊 ”Shape library”。選 擇 您 比 較 喜 歡 的 ”Shape library”, 然 後 按 “OK”。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-19 <strong>ICP</strong> <strong>DAS</strong>


按 下 “Label” 選 擇 您 所 喜 歡 的 顏 色 、 字 型 , 在 下 面 的 “Content” 內 容 打 上 ”GOTO S11”。 確定 視 窗 下 方 的 ”Use label” 一 定 要 選 取 。按 下 “Bit Lamp” 鍵<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-20 <strong>ICP</strong> <strong>DAS</strong>


按 下 “General” 鍵 , 將 “Device type” 設 定 為 “0x”(0x 代 表 布 林 變 數 ),”Device address” 設 定為 ”1”( 這 個 值 即 為 I-8xx7 的 變 數 網 路 位 址 編 號 ), 然 後 設 定 “function” 為 ”Normal”。跟 之 前 一 樣 , 選 擇 您 喜 歡 的 ”Shap library”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-21 <strong>ICP</strong> <strong>DAS</strong>


接 著 按 下 “Lebel” 鍵 , 在 “Content” 內 填 入 “OFF”、”State” 設 定 成 0, 確 定 視 窗 下 方 的 “Uselable” 一 定 要 選 取 。將 ”State” 改 變 成 1, 在 “content” 內 填 入 ”ON”, 確 定 “Use label” 是 否 更 選 取 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-22 <strong>ICP</strong> <strong>DAS</strong>


跟 之 前 同 樣 的 方 式 , 建 立 一 個 燈 的 圖 示 ,”Device address” 設 成 2。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-23 <strong>ICP</strong> <strong>DAS</strong>


按 下 ”Toggle switch” 將 “Dvice Type” 均 設 成 “0x”,”Device address” 均 設 成 1,”SwitchType” 設 為 ”Toggle”。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-24 <strong>ICP</strong> <strong>DAS</strong>


選 擇 自 已 喜 歡 的 形 狀 和 顏 色 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-25 <strong>ICP</strong> <strong>DAS</strong>


建 立 另 一 個 “Toggle Switch”, 將 其 ” Device address” 設 成 2、”Switch style” 設成 ”Momentary”, 接 著 把 這 個 專 案 儲 存 起 來 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-26 <strong>ICP</strong> <strong>DAS</strong>


接 著 我 們 來 設 計 另 一 個 新 的 視 窗 畫 面 , 按 著 [windows]11, 然 後 按 右 鍵 , 選 擇 ”Create” 來 建立 一 個 新 的 視 窗 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-27 <strong>ICP</strong> <strong>DAS</strong>


雙 擊 “Windows_011”跟 先 前 的 方 法 一 樣 , 按 下 [Function_key] “General” 鍵 , 建 立 一 個 ”changeWindows”,”Windows No.” 設 定 成 10, 在 ”Label” 選 項 上 填 入 ”BACK”。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-28 <strong>ICP</strong> <strong>DAS</strong>


按 下 “Set Word” 鍵 , 將 “Device Type” 設 成 “4x” (4x 代 表 short 整 數 , 4L 代 表 long 整 數 ),“Device address” 設 為 10, 選 取 “BIN “ 選 項 , 將 “Set style” 設 為 “Set Constant”, “Set Value”設 為 100。 接 著 選 擇 您 所 喜 歡 的 圖 型 和 將 “Label” 的 文 字 填 入 “Set to 100”。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-29 <strong>ICP</strong> <strong>DAS</strong>


按 下 “Numberical Data” 鍵 , 將 “Device Type” 設 為 “4x” (4x 代 表 short 整 數 , 4L 代 表 long 整數 ), “Device address” 設 為 10, 選 擇 “BIN” 選 項 , “Number of words” 設 為 1, “NO.aboveDec” 設 為 7, “No.below Decimal” 設 為 0, “Input low” 設 成 -32768, “Input high” 設 成32767, 接 著 選 擇 您 所 喜 歡 的 Font。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-30 <strong>ICP</strong> <strong>DAS</strong>


現 在 要 來 新 增 另 一 個 更 轉 換 功 能 (conversion) 的 “Numerical Data”.按 下 “Numberical Data” 鍵 , 將 “Device Type” 設 為 “4x”, “Device address” 設 為 10, 選 擇“BIN” 選 項 , “Number of words” 設 為 1, 選 取 “Do conversion”, “NO.above Dec” 設 為 5,“No.below Decimal” 設 為 2, “Input low” 設 成 -32768, “Input high” 設 成 32767, “Engineeringlow” 設 成 -10, “Engineering high” 設 成 +10 ( 轉 換 [-32768,+32767] 為 o [-10,+10] ), 接 著 選擇 您 所 喜 歡 的 Font.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-31 <strong>ICP</strong> <strong>DAS</strong>


按 下 “Numberical Input” 鍵 , 將 “Device Type” 設 為 “4x”, “Device address” 設 為 10, 選 擇“BIN” 選 項 , “Number of words” 設 為 1, “Trigger Device Type” 設 為 “LB”, “Trigger Deviceaddress” 設 為 “9000”, “NO. above Dec” 設 為 7, “No. below Decimal” 設 為 0, “Input low” 設成 -32768, “Input high” 設 成 32767, 接 著 選 擇 您 所 喜 歡 的 圖 形 。 記 得 儲 存<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-32 <strong>ICP</strong> <strong>DAS</strong>


按 下 [Tools] “Compile …” 來 編 譯 您 所 寫 的 專 案 畫 面 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-33 <strong>ICP</strong> <strong>DAS</strong>


按 下 [Start][Program][EasyBuilder] “EasyManager” 鍵 , 裡 面 更 個 “DownLoad” 鍵 可 用 來將 專 案 下 載 到 Touch 510 中 。 選 擇 適 當 的 COM 埠 , 通 訊 速 率 設 為 115200。透 過 RS232 傳 輸 線 , 您 可 以 將 PC 和 Touch 510 連 接 ( 參 考 4.4 節 一 開 始 的 那 頁 )。PCTouch 510T506L / 506TE按 下 “Jump To RDS”,Touch 510 會 出 現 等 待 專 案 下 載 的 畫 面 , 按 下 “DownLoad” 即 可 開 始 下載 人 機 界 面 圖 示 到 Touch 510。若 下 載 完 成 , 您 可 以 選 擇 “Jump To Application” 或 是 將 Touch 510 重 新 開 機 , 接 著 透 過 RS232傳 輸 線 將 Touch 510 和 <strong>ISaGRAF</strong> 控 制 器 連 接 。( 參 考 4.4 節 一 開 始 的 那 頁 )現 在 您 可 以 在 Touch 510 上 觸 碰 你 所 開 發 的 圖 示 來 測 詴 Touch 510 和 控 制 器 之 間 的 資 料 傳 輸 。Touch506L / 506TE510TRS232COM1<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-34 <strong>ICP</strong> <strong>DAS</strong>


4.5: 經 由 Modbus 通 訊 協 定 讀 / 寫 Word 及 Integer 陣 列以 下 的 function 可 在 <strong>ISaGRAF</strong> 程 式 內 用 來 讀 / 寫 word 及 integer 陣 列 . 更 詳 細 的 function 說 明 ,請 參 閱 附 錄 A.4.ARY_N_RARY_N_WARY_W_RARY_W_W從 integr (4 個 byte, 更 正 負 號 ) 陣 列 讀 取 一 個 integer寫 一 個 integer(4 個 byte, 更 正 負 號 ) 到 integer 陣 列 內從 word (2 個 byte, 更 正 負 號 ) 陣 列 讀 取 一 個 word寫 一 個 word(2 個 byte, 更 正 負 號 ) 到 word 陣 列 內在 I-8xx7, I-7188EG /XG, µPAC-7186EG, iP-8xx7, VP-2117 內 的 word 及 integer 陣 列 占 用 相 同的 記 憶 區 , 請 小 心 安 排 使 用 . 在 PC 上 執 行 的 軟 體 ( 如 HMI, OPC server, …) 可 以 經 由 Modbus 通訊 協 定 來 讀 / 寫 這 些 陣 列 . I-8xx7, I-7188EG /XG, µPAC-7186EG, iP-8xx7,VP-2117 內 可 以 使 用的 network address 編 號 為 5001 到 8072, 而 WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 則 為10,001 到 19,216 其 對 照 表 如 下 .I-8xx7, I-7188EG /XG, µPAC-7186EG, iP-8xx7, VP-2117:Network Address (10 進 位 ) Word 陣 列 Integer 陣 列5001 (1,1) (1,1)5002 (1,2)5003 (1,3) (1,2)5004 (1,4)… … ………8071 (12,255) (6,256)8072 (12,256)WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7:Network Address (10 進 位 ) Word 陣 列 Integer 陣 列10001 (1,1) (1,1)10002 (1,2)10003 (1,3) (1,2)10004 (1,4)… … ………19215 (36,255) (18,256)19216 (36,256)注 意 :1. Network address 1 到 4095 號 可 被 I-8xx7, I-7188EG /XG, µPAC-7186EG, iP-8xx7, VP-2117的 使 用 者 自 行 定 義 , 而 WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 的 Network address 1 到8191 號 可 被 使 用 者 自 行 定 義 , 請 參 閱 第 4.1 節2. 實 際 在 傳 送 時 用 的 是 Modbus address , 它 的 編 號 等 於 Network address 減 1( 請 參 閱 第 5 章 ).所 以 給 word 及 integer 陣 列 用 的 Modbus address 為 5000 到 8071(I-8xx7 , iP-8xx7, …),10000 到 19215(WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7).<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 4-35 <strong>ICP</strong> <strong>DAS</strong>


第 5 章 Modbus 協 定Modbus 是 一 個 功 能 非 常 強 大 且 又 很 更 彈 性 的 通 訊 協 定 , 它 容 許 眾 多 的 軟 体 程 式 和 硬 体 裝 置 之間 的 溝 通 傳 輸 。<strong>ISaGRAF</strong> 控 制 器 程 式 內 的 變 數 透 過 Modbus 通 訊 協 定 , 可 以 用 來 和 其 他 裝 置 進行 資 料 交 換 , 當 然 這 些 變 數 的 網 路 位 址 編 號 必 頇 要 先 設 定 好 ( 參 考 第 4.1 節 )。5.1: Modbus 協 定 格 式 : RTU Serial<strong>ISaGRAF</strong> 控 制 系 統 內 的 變 數 若 更 設 定 網 路 位 址 編 號 時 , 則 可 以 透 過 此 網 路 位 址 編 號 與 其 他的 軟 体 程 式 或 人 機 界 面 裝 置 做 資 料 的 存 取 交 換 ( 請 參 考 第 四 章 )。 關 於 如 何 連 接 PC 和 <strong>ISaGRAF</strong>控 制 器 , 請 參 考 請 參 閱 各 自 的 “ 快 速 上 手 手 冊 ”.你 必 需 撰 寫 Modbus 通 訊 程 式 或 使 用 市 面 上 可 買 到 的 現 成 圖 控 軟 体 , 來 和 I-8xx7, I-7188EG/XG,µPAC-7186EG, iP-8xx7, VP-2117, WP-8xx7, XP-8xx7-CE6, VP-25W7, VP-23W7 控 制 器 溝 通 。這 些 控 制 器 支 援 下 面 所 示 的 Modbus function。Modbus functionAction1 Read N bits (booleans)2 Read N bits (booleans)3 Read N words(signed short integers)4 Read N words(signed short integers)5 Write 1 bit (boolean)6 Write 1 word(signed short integer)15 Write N bits (booleans)16 Write N words(signed short integers)函 式 1 和 函 式 3 都 能 用 於 讀 取 布 林 變 數 。 如 果 使 用 函 式 3, 值 會 用 一 個 word 來 儲 存 , 變 數 為TRUE 則 值 為 0xFFFF函 式 5 和 函 式 15 可 以 用 於 寫 入 布 林 變 數 。 當 使 用 函 式 5 時 , 寫 入 byte-vH 第 0 個 bit 為 1, 將設 定 該 boolean 變 數 為 TRUE。 例 如 , 寫 vH=1 or 3 or 255 將 會 設 boolean 變 數 為 TRUE函 式 3 可 以 用 來 讀 取 類 比 變 數 。函 式 6 和 函 式 16 可 以 用 來 寫 入 類 比 變 數 。函 式 3 可 以 用 來 讀 取 長 整 數 (Signed Long Integer) 及 浮 點 數 (Float), 若 是 寫 入 長 整 數 及 浮 點 數 ,可 用 函 式 16, 在 第 4.2 節 更 詳 細 的 說 明 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 5-1 <strong>ICP</strong> <strong>DAS</strong>


為 了 讓 您 了 解 Modbus 通 訊 協 定 , 下 表 提 供 了 此 節 所 使 用 的 專 更 名 詞 , 幫 助 您 閱 讀 本 節 。SlvNbwNbbNbiAddHAddLVHVLVCrcHCrcL控 制 器 的 NET-ID字 組 (Word) 數 目位 元 組 (Byte) 數 目位 元 (Bit) 數 目Modbus 網 路 位 址 編 號 的 高 位 元 組 (High byte), 0 ~ 3FModbus 網 路 位 址 編 號 的 低 位 元 組 (Low byte), 0 ~ FE字 組 值 (Word) 的 高 位 元 組 (High byte)字 元 值 (Word) 的 低 位 元 組 (Low byte)位 元 組 (Byte) 值檢 查 碼 的 高 位 元 組 (High byte of CRC-16)檢 查 碼 的 低 位 元 組 (Low byte of CRC-16)注 意 :本 章 的 封 包 在 詢 問 和 回 答 中 均 使 用 16 進 位 表 示 法 。在 本 章 所 提 到 的 Modbus “ 位 址 編 號 ” 等 於 <strong>ISaGRAF</strong> 變 數 的 “ 網 路 位 址 編 號 ” 減 1。例 如 , 若 Modbus 的 網 路 位 址 編 號 為 0, 則 <strong>ISaGRAF</strong> 變 數 網 路 位 址 編 號 為 1。 若 Modbus 的 網路 位 址 編 號 為 FFE(4094), 則 <strong>ISaGRAF</strong> 變 數 網 路 位 址 編 號 為 FFF(4095)。Function 1: 讀 取 N 個 位 元 (Bit)Function 1 用 來 讀 取 N 個 Bits, 由 Modbus 網 路 位 址 addH/addL 開 始 。V0、V1 為 回 傳 的 布 林 資 料 , 使 用 下 面 的 格 式Bit 1 相 對 應 到 Modbus 網 路 位 址 addH/addL 的 Boolean 值 ,Bit Nbi 相 對 應 到 Modbus 網 路 位址 addH/addL+nbi-1 的 Boolean 值 。 如 果 Boolean 變 數 的 值 是 True, 則 相 對 應 的 Bit 將 為 1。如 果 值 是 False, 則 相 對 應 的 Bit 為 0。Function 2: 讀 取 N 個 位 元 (Bits)Function 2 的 格 式 和 Function 1 相 同 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 5-2 <strong>ICP</strong> <strong>DAS</strong>


Function 3: 讀 取 N 個 字 組 (Words)Function 3 由 Modbus 網 路 位 址 addH/addL 開 始 , 用 來 讀 取 N 個 Sighed 16-Bit integer。nbb 指 的 數 目 是 由 第 1 個 word 的 高 位 元 組 (vH) 算 到 最 後 1 個 word 的 低 位 元 組 (vL) 所 得 到byte 總 數 。Function 3 注 意 事 項Integer 值 可 被 Function 3 讀 取 。 在 Modbus 協 定 中 的 一 個 word 是 一 個 16-bit 整 術 值 (SignedShort integer), 然 而 在 <strong>ISaGRAF</strong> 內 的 一 個 integer 變 數 是 一 個 32-bit 整 術 值 , 所 以 在 Modbus 協定 內 該 值 只 傳 回 較 低 的 16 bits。 如 果 使 用 者 想 讀 取 I-8xx7 控 制 器 內 的 32-bit 的 整 數 (SignedLong integer), 必 需 要 設 定 適 當 的 網 路 位 址 編 號 , 如 4.2 節 所 述 。Function 4 : 讀 取 N 個 字 組 (word)Function 4 格 式 與 Function 3 相 同 。Function 5: 寫 入 一 個 位 元Function 5 由 Modbus 網 路 位 址 addH/addL 開 始 , 寫 入 一 個 位 元 值 到 布 林 變 數 。寫 入 0xFF 值 到 V 將 設 定 Boolean 變 數 為 True。 寫 入 一 個 零 值 到 V,Boolean 變 數 則 會 設 為False。Function 6 : 寫 入 一 個 字 組 (word)Function 6 寫 一 個 word (16 bits) 到 Modbus 網 路 位 址 addH/addL 的 integer 變 數<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 5-3 <strong>ICP</strong> <strong>DAS</strong>


Function 15:寫 入 N 個 位 元Function 15 由 Modbus 網 路 位 址 addH/addL 至 addH/addL+nbi-1 寫 入 數 個 bits 到 布 林 變數 。Bytes 的 總 數 (nbb) 是 nbi bits 所 占 用 的 bytes 總 數 ,nbb=(nbi+7)/8。 例 如 nbi=1~8,nbb=1; nbi=9~16, nbb=2 ; nbi=17~24, nbb=3V0、V1 是 布 林 資 料 , 使 用 下 面 的 格 式Bit1 相 對 應 於 Modbus 網 路 位 址 addH/addL 之 Boolean 變 數 值 。Bit nbi 相 對 應 於 Modbus 網路 位 址 addH/addL+nbi-1 之 Boolean 變 數 值 。 寫 入 1 至 一 個 bit, 會 將 相 對 之 Boolean 變 數 設為 True, 寫 入 0 到 一 個 bit, 會 將 相 對 之 Boolean 變 數 設 為 FalseFunction 16:寫 入 N 個 字 組 (word)Function 16 由 Modbus 網 路 位 址 addH/addL 至 addH/addL+nbw-1 寫 入 數 個 字 組 (nbw) 到integer 變 數 。Nbb 是 nbw Word 所 占 用 的 byte 數 ,nbb=2*nbw。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 5-4 <strong>ICP</strong> <strong>DAS</strong>


Modbus 通 訊 格 式 的 一 些 例 子 :Function 1: 由 Modbus address 0x1020 開 始 讀 取 15 個 bits。 控 制 器 的 NET-ID 為 1。在 這 個 例 子 function 1 傳 回 2 bytes, 其 值 為 0x0012, 意 指 <strong>ISaGRAF</strong> 變 數 網 路 位 址 0x102A 與0x102D 的 布 林 值 為 True (Modbus 網 路 位 址 為 0x1029 與 0x102C), 其 餘 的 為 FalseFunction 5 : 寫 一 個 bit 到 Boolean 變 數 ,Modbus 網 路 位 址 為 0x0006。NET-ID 為 1, 值 被 寫 入為 0xFF。函 式 5 的 布 林 變 數 值 會 被 設 定 為 “TRUE”Function16: 寫 2 個 words(4 bytes) 到 integer 變 數 ,Modbus 位 址 由 0x2100 開 始 。 第 一 個 word值 寫 入 為 0x1234。 第 二 個 word 寫 入 為 0x5678。NET-ID 為 1<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 5-5 <strong>ICP</strong> <strong>DAS</strong>


5.2: Modbus Protocol Format: TCP/IPI-8437-80, I-8837-80, I-7188EG, µPAC-7186EG, iP-8x47, VP-2117, WP-8xx7, XP-8xx7-CE6,VP-25W7, VP-23W7 等 控 制 器 的 Ethernet 埠 都 更 支 援 Modubus TCP slave 通 訊 協 定所 更 的 通 訊 資 料 都 透 過 Port No = 502 送 出在 Modbus RTU series 協 定 之 前 ,Modbus TCP/IP 協 定 增 加 6 個 額 外 的 bytes, 這 6 個 bytes 和Modbus RTU series 協 定 都 被 包 在 TCP/IP 協 定 中在 byte 號 碼 6 之 後 , 除 了 CRC-16 在 Modbus TCP/IP 協 定 中 是 不 需 要 的 , 其 餘 的 ModbusTCP/IP 協 定 與 Modbus RTU Serial 協 定 相 同 。Modbus TCP/IP 協 定 例 子第 一 個 Modbus TCP/IP 協 定 的 例 子 , 是 在 Modbus address 4 讀 一 個 word, 從 NET-ID=9 回 傳一 個 數 值 為 8, 協 定 內 容 如 下 :第 二 個 Modbus TCP/IP 協 定 的 例 子 , 從 NET-ID=7,Modbus address 2 開 始 讀 8 個 bits, 傳 回 值為 0x49(bit field: 01001001) 如 下 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 5-6 <strong>ICP</strong> <strong>DAS</strong>


5.3: CRC-16 演 算 邏 輯下 面 的 C 語 言 演 算 法 , 只 適 用 於 Modbus RTU Serial, 這 個 CRC-16 程 式 提 供 一 個 加 總 確 定 ,用 於 確 認 資 訊 透 過 Modbus RTU Serial 協 定 傳 送 的 正 確 性在 通 訊 資 料 的 程 式 之 初 , 需 先 呼 叫 crc_init( ) 一 次 , 初 始 加 總 檢 核 表 (checksum table)。 然 後無 論 何 時 當 你 想 計 算 checksum 時 , 呼 叫 crc_make( )#define POLY_CRC16 0xA001static BYTE TABLE1[256];static BYTE TABLE2[256];void crc_init(void) /* set crc table */{WORD mask,bit,crc,mem;for(mask=0;mask 8;}}void crc_make(WORD size, BYTE *buff, BYTE *hi, BYTE *lo) /* calculate crc */{BYTE car,i;BYTE crc[2];crc[0]=0xff;crc[1]=0xff;for(i=0;i


第 6 章 連 接 I-7000 和 I-87K 遠 程 I/O 模 塊6.1: 設 定 I-7000 及 I-87xx 模 組注 意 :A. I-7000 及 I-87xxxW 模 組 的 型 態 若 是 類 比 輸 入 , 則 他 們 的 資 料 格 式 必 頇 設 定 成 “2‟scomplement”. 例 如 :I-7005, I-7013,I-7015, I-7016, I-7017, I-7017R,I-7018, I-7018R, I-7019,I-7019R, I-7033, I-87005W, I-87013W, I-87015W,I-87015PW,I-87016W, I-87017W,I-87017RCW, I-87017ZW, I-87017DW, I-87018W,I-87018RW, I-87018ZW, I-87019RW,I-87019ZW, … 等 類 比 輸 入 模 組 。B. I-7000 及 I-87xxxW 模 組 的 型 態 若 是 類 比 輸 出 , 則 他 們 的 資 料 格 式 必 頇 設 定 成 “EngineerUnit”。例 如 :I-7021, I-7022, I-7024, I-87022W, I-87024W, 及 I-87026W 等 類 比 輸 出 模 組 。控 制 器 在 連 結 I-7000 及 I-87K 遠 程 I/O 模 組 前 , 必 需 先 以 DCON Utility 設 定 每 一 個 I-7000 及I-87K 遠 程 模 組 的 站 號 ( 必 頇 是 唯 一 的 NET-ID), 並 將 控 制 器 與 遠 程 I/O 模 組 設 定 相 同 的 通 訊 速率 .DCON Utility 是 一 個 方 便 好 用 的 軟 體 工 具 , 可 以 協 助 網 路 搜 尋 、 設 定 與 測 詴 I/O 模 組 .DCON Utility 軟 體 程 式 及 其 使 用 手 冊 可 由 下 列 網 址 取 得ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/driver/dcon_utility/.注 意 :1. 需 確 認 硬 體 連 接 正 確 .2. 一 次 只 搜 尋 及 設 定 規 劃 一 個 模 組 , 以 確 保 設 定 正 確 .3. 設 定 前 先 將 I/O 模 組 的 Jupmer 切 換 為 INIT 模 式 , 然 後 重 新 啟 動 模 組 .( 更 些 較 早 期 設 計 的 IO 模 組 是 需 要 連 接 IO 模 組 的 INIT* 及 GND 然 後 重 新 啟 動 模 組 ).非 常 重 要 : 請 在 <strong>ISaGRAF</strong> PAC 連 接 I-7000 與 I-87K 模 塊 使 用 的 RS-485 串 口 的 D+ 與 D- 接腳 中 間 接 一 個 約 110 到 330 ohm 的 電 阻 . ( 比 如 可 以 先 詴 接 125 ohm , 若 還 不 行 , 再 詴 其 它 ). 這樣 做 可 以 確 保 I-7000 與 I-87K 輸 出 模 塊 的 watchdog 功 能 可 以 正 確 動 作 . 比 如 你 可 以 先 不 接 終端 電 阻 , 然 後 啟 用 host watchdog 功 能 (6.2 節 , 將 bus7000b 的 host_watchdog 參 數 設 為 1), 之 後若 只 拔 開 I-7000 與 I-87K 輸 出 模 塊 的 DATA+ 接 腳 ( 將 DATA- 維 持 在 連 接 狀 態 ), 您 會 發 現I-7000 與 I-87K 輸 出 模 塊 的 watchdog 無 法 正 確 動 作 . 但 若 更 接 上 比 如 125 ohm 電 阻 於controller 的 RS-485 串 口 的 D+ 與 D- 接 腳 中 間 , 當 您 拔 掉 I-7000 與 I-87K 輸 出 模 塊 的 DATA+或 DATA- 接 腳 的 任 何 一 條 , 它 的 watchdog 會 在 timeout 時 間 抵 達 後 正 確 動 作 起 來 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-1 <strong>ICP</strong> <strong>DAS</strong>


步 驟 1 :硬 體 連 接 : PC 連 到 I-7000 做 設 定 動 作注 意 : 連 接 I-7000 I/O 模 組 , 需 準 備 一 個 I-7520R ( 或 I-7520) RS232/RS485 轉 換 器 ( 或 其 它USB 轉 RS-485 的 轉 換 器 , 例 如 tM-7561 , I-7561). I-7520 / 7520R, tM-7561, I-7561 為 <strong>ICP</strong><strong>DAS</strong> 高 功 能 的 RS485 轉 換 器 , 具 備 更 Self Turner 可 自 動 切 換 Baud rate.http://www.icpdas.com/products/Industrial/communication_module/communication_list.htm .不 像 某 些 廠 牌 的 RS232/RS485 轉 換 器 , 會 設 定 在 只 能 用 某 個 Baud rate ( 這 些 沒 更 Self Turner廠 牌 的 RS232/RS485 轉 換 器 要 換 Baud rate 就 得 改 設 一 次 , 很 不 方 便 )步 驟 2:將 I/O 模 組 設 定 為 初 始 狀 態新 的 模 組 出 廠 時 , 會 將 其 設 定 為 預 設 狀 態 ( 如 下 第 一 個 表 ) 以 方 便 使 用 . 若 您 不 知 道 模 組 的 設 定值 , 請 直 接 將 I/O 模 組 設 定 為 初 始 狀 態 ( 如 下 第 二 個 表 ).*** 設 定 I-7000 模 組 成 為 初 始 狀 態 , 請 連 接 INIT* 和 GND, 然 後 重 新 啟 動 模 組 電 源 . 該模 組 即 可 設 定 為 初 始 狀 態 . ( 某 些 新 的 I-7000 模 塊 背 面 更 支 持 一 個 Dip Switch, 這 些 模 塊只 需 切 換 Switch 到 “INIT” 位 置 , 然 後 重 新 啟 動 模 組 電 源 , 不 必 去 將 INIT* 和 GND相 連 接 )*** 大 部 份 的 I-87xxxW 卡 片 內 更 一 個 Jumper 可 以 設 成 Normal ( 運 作 狀 態 ) 或 INIT ( 初 始狀 態 ).*** 設 定 早 期 設 計 的 I-87K 模 組 成 為 初 始 狀 態 , 請 切 換 I-87K4/5/8/9 的 相 對 應 的 DIP 開 關 . 例如 , 切 換 DIP-2 到 “ON” 的 位 置 , 然 後 重 新 啟 動 電 源 , 第 二 個 插 槽 就 會 設 為 初 始 狀 態 . ( 若使 用 的 擴 充 底 板 是 I-87K9 與 I-87K5, 請 不 要 將 I-87K IO 插 在 最 左 邊 的 那 個 IO 插 槽來 做 設 定 , 因 為 沒 更 對 應 的 DIP 可 設 , DIP-1 是 對 應 到 I-87K9 / 87K5 左 邊 數 過 來 的 第 2個 I/O 插 槽 . 若 是 I-87K8 / 87K4 則 沒 更 這 個 問 題 , 每 個 I/O 插 槽 都 更 對 應 的 DIPswitch) .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-2 <strong>ICP</strong> <strong>DAS</strong>


較 新 設 計 的 高 卡 的 I-87K I/O, 比 如 I-87019ZW, 在 板 卡 上 會 更 一 個 Jumper 可 撥 成 INIT( 初 始 狀 態 ) 或 Normal ( 一 般 狀 態 ), 此 類 的 板 卡 不 需 去 撥 I-87K4/5/8/9 Base 的 Dip 來 設 .但 切 記 設 定 完 後 要 把 該 I-87K IO 卡 的 Jumper 撥 回 Normal 位 置 .工 廠 出 貨 時 的 預 設 狀 態 表 :初 始 狀 態 表 :I/O 模 組 i-7000 M-7000 87K 系 列站 號 1 1 1通 訊 速 率 9600 9600 115200Checksum Disabled Not defined Disabled通 訊 協 定 DCON Protocol Modbus Protocol DCON ProtocolI/O 模 組7000 系 列 (i-7000 及M-7000)87K 系 列站 號 , 通 訊 速 率 0 , 9600 0 , 115200ChecksumDisabledDisabled步 驟 3:選 擇 搜 尋 的 COM port 和 通 訊 速 率 (baud rate)從 “ 開 始 / 所 更 程 式 /DAQPro/DCON Utility/” 啟 動 DCON Utility.1. 點 選 “COM Port” 功 能 表 來 選 擇 搜 尋 的 COM port 和 baud rate. 如 果 您 不 知 道 先 前 模 組 的設 定 , 可 以 選 擇 多 個 baud rate, protocol 和 checksum, 搜 尋 網 路 時 會 花 較 多 時 間 . 選 擇完 畢 , 按 “OK” 鍵 .2. 點 選 “Start Search” 按 鈕 開 始 搜 尋 模 組 . 找 到 模 組 請 點 按 鈕 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-3 <strong>ICP</strong> <strong>DAS</strong>


12步 驟 4:點 選 找 到 的 模 組 型 號 , 然 後 在 出 現 的 視 窗 中 規 劃 新 的 設 定123依 照 步 驟 做 規 劃 確認 的 動 作 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-4 <strong>ICP</strong> <strong>DAS</strong>


注 意 :設 定 完 成 後 , 記 得 一 定 要 移 除 I-7000 的 INIT* 和 GND 的 連 接 線 . 然 後 重 新 開啟 電 源 . 若 是 I-87K I/O 模 組 , 則 需 記 得 將 相 關 的 Dip 開 關 切 回 “OFF”, 然 後 重新 啟 動 電 源 . 不 然 該 I/O 模 塊 會 一 直 處 於 INIT 狀 態 而 無 法 使 用 .關 於 I-7000 和 I-87xxx 模 組 的 重 要 訊 息 :一 台 I-8xx7, I-7188EG/XG, µPAC-7186EG, iP-8xx7, VP-2117 控 制 器 最 多 可 以 連 接 64 個 I-7000和 I-87xxx 模 組 (WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 則 為 255 個 ), 但 建 議 最 多 一 個 控 制器 只 連 接 40 個 模 組 . 每 一 個 I-7000 或 I-87xxx 模 組 必 需 擁 更 一 個 唯 一 的 位 址 號 碼 , 讓 <strong>ISaGRAF</strong>控 制 器 能 夠 與 它 們 溝 通 。 在 DCON Utility 中 , “Checksum” 的 選 項 通 常 設 定 為 “Disable”,且 每 一 個 I-7000 及 I-87xx 模 組 的 通 訊 速 率 必 頇 與 控 制 器 設 定 的 一 樣 。I-7000 及 I-87xxx 模 組 的 型 態 若 是 類 比 輸 入 , 則 他 們 的 的 資 料 格 式 必 頇 設 定 成 “2‟s complement”.例 如 : I-7005, I-7013,I-7015, I-7016, I-7017, I-7017R,I-7018, I-7018R, I-7019, I-7019R, I-7033,I-87005W, I-87013W, I-87015W,I-87015PW,I-87016W, I-87017W, I-87017RCW, I-87017ZW,I-87017DW, I-87018W,I-87018RW, I-87018ZW, I-87019RW, I-87019ZW, … 等 類 比 輸 入 模 組 。I-7000 及 I-87xx 模 組 的 型 態 若 是 類 比 輸 出 , 則 他 們 的 的 資 料 格 式 必 頇 設 定 成 “EngineerUnit”。例 如 :I-7021, I-7022, I-7024, I-87022W, I-87024W, 及 I-87026W 等 類 比 輸 出 模 組 .6.2: 開 啟 “Bus7000b”您 必 需 透 過 連 結 “<strong>ISaGRAF</strong> I/O Connection” 內 的 “Bus7000” ( 或 Bus7000b, 可 設 定 Checksum是 Enable 或 Disable, 而 “Bus7000” 只 能 用 在 Checksum Disable 的 場 合 ), 才 可 以 將 <strong>ISaGRAF</strong>控 制 器 和 I-7000 及 I-87xxx 模 組 作 連 結 。 “Bus7000b” 是 一 個 虛 擬 模 組 , 在 “SelectBoard/Equipment” 視 窗 中 , 您 要 選 擇 “Equipment” 才 會 出 現 。“Bus7000b” 必 頇 連 接 在 “<strong>ISaGRAF</strong> I/O Connect” 視 窗 中 編 號 8 或 8 以 上 的 插 槽 ( 插 槽 0~7 均 給 真實 的 I-8xxxW 與 I-87xxxW 等 I/O 卡 片 使 用 )。 若 您 企 圖 連 接 兩 個 以 上 的 “Bus7000b” 到<strong>ISaGRAF</strong> PAC 控 制 系 統 上 , 只 更 一 個 “Bus7000b” 會 產 生 作 用 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-5 <strong>ICP</strong> <strong>DAS</strong>


下 列 顯 示 連 結 “Bus7000b” 在 插 槽 9 上 .Checksum 設 為 1 表 示 所 要連 接 的 I-7000 & I-87xxx都 是 設 為 ChecksumEnable, 若 設 為 0 則 表 示Disable.“com_port” 參 數 值 可 以 設 定 成 I-8xx7, iP-8xx7: 3(Com 3) 或 4(Com 4) , I-7188EG/XG, 7186EG:2(Com 2) 或 3(Com 3), WP-8xx7, VP-25W7 , VP-23W7: 2(Com2) , XP-8xx7-CE6: 3 (COM3)。 這個 參 數 的 指 的 是 控 制 器 連 接 到 I-7000 及 I-87xx 模 組 所 使 用 的 COM 埠 編 號 。“com_baud” 參 數 指 的 是 “ 控 制 器 和 I-7000 和 I-87xxx 模 組 相 連 的 通 訊 速 率 。 可 選 擇 的 值 為2400,4800,9600,19200,38400,57600 及 115200 bps。 您 必 需 確 定 控 制 器 和 I-7000 和I-87xxx 模 組 是 否 設 定 為 一 樣 的 通 訊 速 率 , 以 讓 它 們 之 間 能 順 利 的 溝 通 。“host_watchdog” 參 數 的 設 定 關 系 到 I-7000 和 I-87xxx 模 組 的 watchdog 函 式 的 開 啟 或 關 閉 。將 “host_watchdog” 參 數 設 為 1 會 開 啟 ”host_watchdog” 功 能 , 設 為 0 則 是 關 閉 。“watchdog_timer” 參 數 為 啟 動 “host_watchdog” 後 所 設 定 的 Time out 的 時 間 。“watchdog_timer” 的 值 是 16 進 位 的 數 字 且 單 位 為 0.1 秒 , 若 您 設 定 為 1E, “watchdog_timer”即 被 設 定 為 3 秒 , 若 你 設 定 為 2A,“watchdog_timer” 即 被 設 定 為 4.2 秒 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-6 <strong>ICP</strong> <strong>DAS</strong>


若 控 制 器 和 I-7000 或 I-87xxx 模 組 通 訊 斷 線 超 過 watchdog_timer 的 時 間 時 , 則 host_watchdog會 讓 I-7000 及 I-87xxx 模 組 的 Output Channel 進 入 你 DCON utility 對 它 所 設 定 的 安 全 值 ( 通 常D/O 會 是 設 成 False)。在 “Bus7000: Remote” 虛 擬 板 上 更 一 個 類 比 輸 入 點 。 這 個 類 比 輸 入 點 主 要 的 功 能 為 傳 回 現 在 的通 訊 速 率 , 若 值 為 0 表 示 該 通 訊 串 口 開 啟 失 敗 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-7 <strong>ICP</strong> <strong>DAS</strong>


6.3: 編 寫 控 制 I-7000 模 組 程 式6.3.1 : 編 寫 I_7xxx 及 I_87xxx 方 塊 程 式在 您 連 結 任 何 I-7000 及 I-87xxx 模 組 到 <strong>ISaGRAF</strong> 控 制 器 之 前 , 您 必 頇 先 開 啟 “Bus7000b”。 一旦 “Bus7000b” 被 開 啟 , 你 就 可 以 在 控 制 器 程 式 內 編 寫 程 式 來 存 取 I-7xxx 或 I-87xxx 上 的I/O 到 對 應 的 變 數 內 , 之 後 您 可 將 那 些 變 數 使 用 在 同 個 <strong>ISaGRAF</strong> 專 案 的 其 他 程 式 上 。注 意 :您 必 需 宣 告 所 更 連 接 在 I-7000 及 I-87xxx 的 方 塊 的 變 數 為 內 部 (internal) 屬 性範 例 1: 編 寫 I-7050D 方 塊 程 式I-7050D 的 位址若 連 接 正 常 會 回傳 TRUE8 個 宣 告 為 內 部 屬 性 的布 林 變 數 (I-7050D 數位 輸 出 點 )7 個 宣 告 為 內 部 屬 性 的布 林 變 數 (I-7050D 數位 輸 入 點 )範 例 2: 編 寫 I-7041D 方 塊 程 式I-7041D 的 位 址若 連 結 正 常 會 回 傳TRUE14 個 宣 告 為 內 部 屬 性 的 布林 變 數 (I-7041D 數 位 輸 入點 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-8 <strong>ICP</strong> <strong>DAS</strong>


範 例 3: 編 寫 I-87017R 與 I-7017RC 方 塊 程 式 ( 硬 體 為 I-87017RCW 與 I-7017RC 時 使 用 )I-87017RCW 與 I-7017RC 可 用 來 量 測 20 mA , 0 ~ 20mA 與 4 ~ 20mA 的 電 流 輸 入 訊 號 , 不 需外 接 125 ohm 電 阻 . 它 的 資 料 格 式 型 態 必 頇 使 用 DCON Utility 設 成 2 的 補 數 (2‟s complement)才 能 使 用 . ( 可 參 考 附 錄 A.4 內 A4_20_to 的 說 明 , 將 輸 入 值 轉 換 為 工 程 值 )Range 識 別 號 碼( 藉 由 DCONUtility 設 定 )物 理 量 數 值I-7017RC /87017RCW方 塊 的 輸 入 點 數 值 (10 進 位 )- 32768 0 +327677 4 ~ 20 mA 4 mA 20 mAD 20mA - 20mA 0 mA 20mA1A 0 ~ 20 mA 0 mA 20 mA若 連 接 正 常 會 回 傳 TRUE異 常 則 回 傳 False使 用 “i-87017R” 與“i-7017RC” 方 塊 必需 設 與 DCONutility 規 劃 的 相 同Type code 號 碼 於 此使 用 RS-485 連 i-87017RCW 需 使 用“i-87017R” 方 塊 .8 個 宣 告 為 內 部 屬 性 的 整 數 變 數(I-87017RCW 的 類 比 輸 入 點 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-9 <strong>ICP</strong> <strong>DAS</strong>


使 用 RS-485 遠 程 IO 量 測 電 流 4 ~ 20 mA 的 重 要 訊 息 :如 果 使 用 的 Sensor 為 4 到 20 mA 的 量 測 型 態 , 可 以 考 慮 將 Analog input 模 塊 的 Range type設 為 [D] : +/- 20 mA 或 [1A] : 0~ 20 mA 的 Type . ( 此 時 設 " [7] : 4 to 20 mA" type 比 較不 好 )原 因 為 :如 果 的 Range type 為 [7] : 4 到 20 mA type, Analog Input 值 若 為 0 或 接 近 0 可 以 表 示 Sensor 輸入 為 4 mA , 但 也 更 可 能 是 Sensor 斷 線 . 因 此 光 看 Analog Input 數 值 , 區 分 不 出 這 2 者 .然 而 若 是 將 Range type 規 劃 為 [D] : +/- 20 mA 或 [1A] : 0 ~ 20 mA type, 當 值 接 近 0 時 , 只 更可 能 是 Sensor 斷 線 . 而 Sensor 輸 入 的 4 到 20mA , 值 會 是 (6553 到 32767), 4mA 時 值 是 在6553 附 近 , 不 是 在 0 附 近 .( 當 然 Analog input 模 塊 與 控 制 器 間 的 RS-485 連 線 需 正 常 , 以 上 本 例 的 變 數 OK1 與 OK2可 用 來 判 斷 遠 程 I/O 模 塊 的 RS-485 連 線 是 否 正 常 , 值 若 為 False 表 通 訊 更 問 題 , 你 可 在 程 式內 作 適 當 處 理 ).因 此 更 需 要 分 辨 出 Sensor (4 到 mA) 是 否 正 常 時 , 最 好 是 規 劃 為 [D] : +/- 20 mA 或 [1A] :0 ~ 20 mA type. 如 此 你 的 程 式 內 就 可 比 如 說 當 A1 ~ A16 輸 入 值 小 於 5000 或 小 於 4000 ,就 可 判 定 為 Sensor 斷 線 或 Sensor 異 常 . ( 如 果 你 是 設 成 [7] : 4 ~ 20 mA 的 Type, 就 無 法 分辨 , 到 底 是 4 mA 還 是 Sensor 異 常 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-10 <strong>ICP</strong> <strong>DAS</strong>


範 例 4: 編 寫 I-7018 方 塊 程 式 ( 使 用 I_7018n 方 塊 )( 硬 體 請 改 選 用 I-7018z 較 佳 , 第 11.3.9 節 更 使 用 I-7018z 的 範 例 程 式 )I-7018 or I-7018R 的 資 料 格 式 型 態 必 頇 使 用 ”DCON Utility” 設 成 2 的 補 數 (2‟s complement) 才能 使 用 . 請 用 “I_7018n” 方 塊 而 非 “I_7018” 方 塊 (“I_7018n” 方 塊 一 次 問 完 8 個 Channel,而 “I_7018” 方 塊 要 問 8 次 才 問 完 8 個 Channel)I-7018 或 7018R的 位 址若 連 接 正 常 會 回 傳 TRUE異 常 則 回 傳 False8 個 宣 告 為 內 部 屬 性 的 整 數 變 數 (I-7018或 I-7018R 類 比 輸 入 點 )編 寫 遠 程 I-7000 或 I-87K I/O 的 方 法 都 與 上 方 類 似 , 要 注 意 的 是 :若 I-7000 及 I-87xxx 遠 程 IO 模 組 的 型 態 是 類 比 輸 入 , 則 他 們 的 的 資 料 格 式 必 頇 設 定 成 “2‟scomplement”. 例 如 : I-7005, I-7013,I-7015, I-7016, I-7017, I-7017R,I-7018, I-7018R, I-7019,I-7019R, I-7033, I-87005W, I-87013W, I-87015W,I-87015PW,I-87016W, I-87017W, I-87017RCW,I-87017ZW, I-87017DW, I-87018W,I-87018RW, I-87018ZW, I-87019RW, I-87019ZW, … 等 類 比輸 入 模 組 .若 I-7000 及 I-87xx 模 組 的 型 態 是 類 比 輸 出 , 則 他 們 的 的 資 料 格 式 必 頇 設 定 成 “EngineerUnit”.例 如 :I-7021, I-7022, I-7024, I-87022W, I-87024W, 及 I-87026W 等 類 比 輸 出 模 組 .下 表 為 I-7017, 7017R, 87017W, 87017RW 類 比 訊 號 的 物 理 量 轉 換 成 整 數 值 的 轉 換 表 ( 線 性 關係 ). ( 這 些 模 塊 量 測 D: 20mA 時 , 必 需 外 接 125 ohm 於 各 Channel 的 正 / 負 端 , 若 不 想 使用 外 接 電 阻 來 量 測 電 流 值 , 請 選 用 I-7017RC 或 I-87017RCW 或 I-87017ZW 或 I-87019ZW )Range 識 別 號 碼( 藉 由 DCONUtility 設 定 )物 理 量 數 值I-7017/87017 方 塊 的 輸 入 點 數 值 (10 進 位 )-32768 0 +327678 10V - 10V 0V + 10V9 5V - 5V 0V + 5VA 1V - 1V 0V + 1VB 500mV - 500mV 0mV + 500mVC 150mV - 150mV 0mV + 150mVD 20mA - 20mA 0mA + 20mA<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-11 <strong>ICP</strong> <strong>DAS</strong>


若 硬 體 是 選 用 I-7017RC 或 I-87017RCW 則 請 看 下 表Range 識 別 號 碼( 藉 由 DCONUtility 設 定 )物 理 量 數 值I-7017RC /87017RCW方 塊 的 輸 入 點 數 值 (10 進 位 )- 32768 0 +327677 4 ~ 20 mA 4 mA 20 mAD 20mA - 20mA 0 mA 20mA1A 0 ~ 20 mA 0 mA 20 mA其 它 各 個 IO 模 塊 的 轉 換 表 , 請 查 看 <strong>ISaGRAF</strong> 的 On-Line Help 如 下 圖 所 示 及 本 手 冊 的 附錄 D先 在 方 塊 內 用 滑 鼠 雙 擊 , 然 後 點 選 “Info” ,. 最 後 點 選 “Note”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-12 <strong>ICP</strong> <strong>DAS</strong>


6.3.2 : 直 接 取 得 遠 程 I-7000 及 I-87xxxW 溫 度 輸 入 I/O 的 溫 度 值<strong>ICP</strong> <strong>DAS</strong> 提 供 很 多 遠 程 溫 度 輸 入 模 塊 , 如 下 .更 ” 感 測 器 斷 線 偵 測 功 能 ” 的 RS-485 遠 程 溫 度 模 塊 型 號 :Thermocouple : I-87018zW, 87018RW, 87019RW, 87019zW, 7018R, 7018BL, 7019, 7019R, 7018ZRTD 型 式 : I-87013W, 87015W, I-87015PW, 7013, 7015, 7033Thermister 型 式 : I-87005W, 7005無 ” 感 測 器 斷 線 偵 測 功 能 ” 的 模 塊 型 號 :Thermocouple 型 式 : I-87018, 7018, 7018PI-7000 方 塊 中 的 “ADR_” 參 數 可 以 是 “ 標 準 設 定 值 ” 或 “ 特 別 設 定 值 ”. 比 如 將 ”I_7033” 的“ADR_” 參 數 設 成 1 到 255 表 示 使 用 “ 標 準 設 定 值 ”, 此 1 到 255 的 值 表 示 I-7033 遠 程 溫 度模 塊 的 位 址 . 取 得 的 溫 度 輸 入 值 會 是 一 個 在 –32768 到 + 32767 區 間 的 整 數 . 必 需 參 考 附錄 D 來 求 得 真 正 的 溫 度 值 . 此 溫 度 轉 換 會 跟 該 遠 程 溫 度 模 塊 的 “Type code” 設 定 更 關 ( 用DCON utility 在 初 始 設 定 時 設 的 ). ( 若 值 是 等 於 –32768 或 +32767 , 對 更 ” 感 測 器 斷 線 偵 測 功能 ” 的 I/O 模 塊 而 言 , 指 的 是 ” 感 測 器 斷 線 了 ” )ADR_ 為 10 (TT=00, RR=00, AA=0A 16 進 位 .) 表 示 使 用 “ 標 準 設 定值 ”, 此 例 模 塊 address 為 10, 右 側 的 溫 度 輸 入 值 通 常 會 是–32768 到 + 32767 間 的 1 個 整 數 值若 設 ADR_ 為 16#10201A (TT=10, RR=20, AA=1A 16 進 位 ) 表 示 使 用“ 特 別 設 定 值 ”, 採 用 “ 攝 氏 度 ”, 該 模 塊 的 初 始 ”Type Code” 設 定 是 20 ( 使用 DCON utility 設 的 ), 模 塊 address 為 26. 因 此 , 若 右 方 的 溫 度 傳 回 值 若是 , 比 如 ”4556” 表 示 為 45.56 度 , “-500” 則 為 -5.00 度 .如 果 想 直 接 取 得 遠 程 溫 度 模 塊 的 溫 度 值 , 比 如 , 值 “2312” 來 表 示 23.12 攝 氏 度 . 請 將“ADR_” 參 數 設 成 “ 特 別 設 定 值 ” .注 意 : 從 下 列 硬 件 的 Driver 版 本 開 始 , 才 更 支 持 “ 特 別 設 定 值 ” 功 能I-8xx7:3.11 , I-7188EG:2.09 , I-7188XG:2.07 , µPAC-7186EG:1.01 版iP-8xx7: 1.01 版 , WP-8xx7: 1.01 版 , XP-8xx7-CE6: 1.01 版 , VP-25W7/23W7: 1.01 版<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-13 <strong>ICP</strong> <strong>DAS</strong>


遠 程 溫 度 模 塊 的 “ADR_” 參 數 格 式 說 明 : 16#TTRRAA (16 進 位 表 示 .)TT = 10 ( 表 示 使 用 " 攝 氏 度 ") , 單 位 0.01 度TT = 20 ( 表 示 使 用 " 華 氏 度 ") , 單 位 0.01 度TT = 00 ( 表 示 使 用 “ 標 準 設 定 值 ” , RR 需 同 時 設 為 00)RR: 該 溫 度 I/O 模 塊 的 "Type code" 設 定 ( 初 始 設 定 時 用 DCON Utility 設 的 )AA: 該 溫 度 I/O 模 塊 的 Address (01 ~ FF)例 如 , 以 下 的 "ADR_" 設 定 , 分 別 表 示 :A. 16#102011 : (TT=10, RR=20, AA=11 16 進 位 表 示 ) , 使 用 " 攝 氏 度 ", “Type Code” 為"20 : Platinum 100, a=0.00385, degree Celsius" , Address 為 17 (10 進 位 .). 結 果 會 是 , 若 溫 度輸 入 值 回 傳 為 "2356" 表 示 23.56 攝 氏 度 , 若 是 "-489" 表 示 -4.89 攝 氏 度 , 若 是 “999990"則 為 “ 感 測 器 斷 線 了 ” .B. 16#202A03 : (TT=20, RR=2A, AA=03 16 進 位 表 示 ) , 使 用 " 華 氏 度 ", “Type Code” 為 "2A :Platinum 1000, a=0.00385, degree Celsius" , Address 為 3 (10 進 位 .). 結 果 會 是 , 若 溫 度 輸 入 值回 傳 為 "4512" 表 示 45.12 華 氏 度 , 若 是 "500" 表 示 5.00 華 氏 度 , 若 是 “999990" 則 為“ 感 測 器 斷 線 了 ”C. 16#01 : (TT=00, RR=00, AA=1 16 進 位 表 示 ), 使 用 “ 標 準 設 定 值 ” , 通 常 溫 度 輸 入 值 回 傳值 會 是 -32768 到 +32767 間 的 1 個 整 數 值 , Address 為 1 . 必 需 參 考 附 錄 D 來 求 得 真 正 的溫 度 值 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-14 <strong>ICP</strong> <strong>DAS</strong>


6.4: Redundant Bus7000注 意 :1. XP-8xx7-CE6 是 比 較 好 的 備 援 ( 冗 余 ) 系 統 , 請 參 考 FAQ-125(http://www.icpdas.com/faq/isagraf_c.htm) 或 FAQ-093.2. 若 是 採 用 i-8437-80 或 i-8837-80 或 P-8x47 也 可 設 立 一 套 如 下 圖 的 Bus7000 備 援 ( 冗 余 ) 系統 . 他 們 的 CPU 是 80MHz. 執 行 速 度 大 約 是 i-8417/8817/8437/8837 (40MHz) 的 2 到 4 倍 .3. 40 MHz 的 i-8417/8817/8437/8837 與 40MHz 的 i-7188EG 與 i-7188XG 不 適 合 用 來 做Bus7000 備 援 ( 冗 余 ) 系 統 . 請 採 用 (1) 的 方 法 最 好 , 若 不 想 用 (1), 可 採 用 (2) 的 方 法 .I-8437-80 / i-8837-80 ( 驅 動 3.20 版 起 或 更 新 版 本 ) 與 iP-8x47 可 設 立 一 套 如 下 圖 的 Bus7000備 援 ( 冗 余 ) 系 統 . 2 台 控 制 器 間 的 Ebus 是 用 來 交 換 控 制 資 料 . 另 外 請 將 Master 上 i-8054 的Ch.1 D/O 連 到 Slave 上 i-8054 的 Ch.1 D/I. 同 樣 的 請 將 Slave 上 i-8054 的 Ch.1 D/O 連 到 Master上 i-8054 的 Ch.1 D/I. 這 2 個 Status input 是 用 來 告 訴 對 方 – “ 我 還 活 著 ” .I-8437-80 : Bus7000 備 援 ( 冗 余 ) 系 統COM3: RS485Pin 1: D+ Pin 9: D-i-8437-80 / i-8837-80+ slot 0: i-8054(Redundant Master)EbusEthernetcross cableControllerstatus inputin i-8054I-7000I/ORS485I-7000I/OI-87K4/5/8/9 +I-87K I/Oi-8437-80 / i-8837-80+ slot 0: i-8054(Redundant Slave)COM3: RS485Pin 1: D+ Pin 9: D-運 作 原 理 :1. 當 系 統 啟 動 時 , 最 初 的 Bus7000 控 制 權 屬 於 “Redundant Master”.2. 假 如 “Redundant Master” 死 機 ( 或 沒 電 ), “Redundant Slave” 會 接 管 Bus7000 的 控 制 權 .3. 假 如 “Redundant Master” 又 活 過 來 了 , 它 會 再 接 管 Bus7000 的 控 制 權 .4. 2 台 controller 間 的 控 制 資 料 透 過 Ebus 來 傳 輸 ( 可 用 一 條 對 接 的 Ethernet 線 (Crosscable), 不 需 接 到 Ethernet Switch)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-15 <strong>ICP</strong> <strong>DAS</strong>


“i7000_en” 函 式 用 來 開 啟 / 關 閉 Bus7000 的 控 制 權 . 工 控 器 開 機 後 的 內 定 值 為 Enable.輸 入 參 數 :EN_7000_ 整 數 True: 開 啟 , False: 關 閉傳 回 值 :Q_ 布 林 永 遠 傳 回 True.如 果 該 i-8437-80 不 是 在 redundant 激 活 (Active) 狀 態 , 可 以 在 程 式 內 使 用 “COM_MRTU”函 式 來 關 閉 i-8437-80 COM1 的 Modbus RTU 功 能 , 這 樣 它 就 不 會 回 覆 任 何 PC / HMI /SCADA 送 來 的 詢 問 命 令 . 反 之 若 該 i-8437-80 是 在 redundant 激 活 (Active) 狀 態 , 也 可 以 在 程式 內 使 用 COM_MRTU 函 式 來 開 啟 i-8437-80 COM1 的 Modbus RTU 功 能 . 這 樣 做 的 用 意 在於 可 以 確 保 任 一 時 間 只 更 redundant 激 活 那 台 會 回 覆 PC / HMI 送 來 的 詢 問 命 令 ( 請 參 考 範例 demo_49a 與 demo_49b). 關 於 i-7188EX-MTCP (Modbus TCP/IP to Modbus RTU gateway)的 使 用 方 法 , 請 參 考 第 20.5 節 或 www.icpdas.com – FAQ – Software – <strong>ISaGRAF</strong> – 062. ( 重 要 , 2台 i-8437-80 的 Net-ID 要 設 為 一 樣 , 比 如 都 設 成 1 號 . IP 地 址 則 要 設 成 不 一 樣 , 但 要 在 同 一 網 域內 . 比 如 192.168.1.8 與 192.168.1.9)範 例 程 式 : demo_49a 與 demo_49b.可 至 ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/8000/demo/ 下 載 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 6-16 <strong>ICP</strong> <strong>DAS</strong>


第 7 章 控 制 器 與 控 制 器 間 的 資 料 交 換注 意 :從 以 下 Driver 版 本 起 , Fbus 及 Ebus 最 大 可 用 的 布 林 封 包 / 整 數 封 包 的 編 號 從 256 降 到 128I-8xx7:2.42 , I-7188EG:1.32 , I-7188XG:1.29 , iP-8xx7: 1.01 , 7186EG: 1.01 , VP-2117: 1.017.1: 基 本 的 Fbus 規 則任 何 I-8xx7 , I-7188EG/XG, 7186EG, iP-8xx7, VP-2117 可 以 透 過 Fbus 資 料 交 換 系 統 和 其 他 的I-8xx7 & I-7188EG/XG 控 制 器 交 換 資 料 (WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 不 支 持Fbus 功 能 , 它 只 支 持 Ebus 功 能 , 請 參 閱 7.5 節 )。 而 且 在 Fbus 協 定 裡 只 更 布 林 和 整 數 這 兩 種 型態 的 資 料 能 被 交 換 , 若 您 想 要 交 換 實 數 資 料 , 請 搭 配 使 用 ”Int_Real” 及 ”Real_Int” 方 塊 ( 請 參 考 附錄 A.4)。 Fbus 會 建 立 8 個 布 林 值 的 封 包 和 8 個 32 位 元 長 整 數 的 封 包 。 布 林 封 包 與 整 數 封 包可 以 利 用 Fbus 發 送 , 允 許 從 1 台 控 制 器 傳 送 資 料 到 另 1 台 或 多 台 控 制 器 .Fbus 基 本 規 則 :規 則 1: 每 一 個 布 林 封 包 都 更 一 個 識 別 編 號 , 編 號 的 範 圍 從 1 到 128, 也 就 是 說 最 多 只 可 容 納128 個 布 林 封 包 在 Fbus 裡 作 資 料 交 換 。每 一 個 布 林 封 包 包 含 8 個 布 林 值 , 而 這 些 布 林 值 只 能 是 TURE 或 FALSE 這 兩 個 數 值 。 在 布 林封 包 內 的 布 林 值 可 指 定 成 “ 內 部 ”, “ 輸 入 ” 或 “ 輸 出 ” 等 布 林 變 數 或 布 林 常 數 。規 則 2: 每 一 個 整 數 封 包 都 更 一 個 識 別 編 號 , 編 號 的 範 圍 從 1 到 128, 也 就 是 說 最 多 只 可 容納 128 個 整 數 封 包 在 Fbus 裡 作 資 料 交 換 。每 一 個 整 數 封 包 包 含 8 個 32 位 元 的 長 整 數 值 , 整 數 值 的 範 圍 從 –2147483648 到2147483647。在 整 數 封 包 內 的 整 數 值 可 指 定 成 “ 內 部 ”, “ 輸 入 ” 或 “ 輸 出 ” 等 整 數 變 數 或 整 數 常 數 。規 則 3: 指 定 給 布 林 封 包 及 整 數 封 包 的 識 別 號 碼 , 只 能 被 同 一 個 Fbus 網 路 上 的 1 台 控 制 器 寫出 。控 制 器 中 不 能 寫 出 相 同 識 別 號 碼 的 布 林 封 包 或 是 整 數 封 包 , 必 頇 確 定 只 更 1 台 控 制 器 寫 出 該號 碼 的 封 包 。 在 下 面 的 例 子 中 , 更 5 台 I-8xx7, I-7188EG/XG 透 過 Fbus 互 相 傳 輸 資 料 , 控 制器 分 別 稱 為 S1,S2,S3,S4 和 S5。 假 使 S1 企 圖 寫 出 識 別 號 碼 為 1 的 布 林 封 包 和 識 別 號 碼為 1 的 整 數 封 包 , 其 他 的 控 制 器 就 不 能 寫 出 具 更 相 同 識 別 號 碼 的 布 林 封 包 或 整 數 封 包 , 但 其他 的 控 制 器 可 以 寫 出 識 別 號 碼 為 3 的 布 林 封 包 或 識 別 號 碼 為 3 的 整 數 封 包 。透 過 Fbus 並 沒 更 限 制 可 以 讀 取 多 少 個 相 同 識 別 號 碼 的 封 包 。 任 何 的 S2,S3,S4 和 S5 都 可 以讀 取 識 別 號 碼 為 1 的 布 林 封 包 或 識 別 號 碼 為 1 的 整 數 封 包 。規 則 4: 只 更 1 台 而 且 必 需 更 1 台 控 制 器 能 被 設 定 成 Fbus master, 其 他 的 必 需 設 成 Fbusslave。被 設 為 Fbus master 的 控 制 器 會 傳 送 訊 息 處 理 該 傳 送 及 接 收 的 命 令 。 假 使 你 設 定 兩 台 以 上 為Fbus master, 所 更 資 料 將 不 會 進 行 交 換 處 理 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-1 <strong>ICP</strong> <strong>DAS</strong>


7.2: 設 定 <strong>ISaGRAF</strong> PAC 為 Fbus master 或 Fbus slave要 設 定 控 制 器 為 Fbus master 或 Fbus slave (WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 不 支持 Fbus 功 能 , 它 只 支 持 Ebus 功 能 , 請 參 閱 7.5 節 ), 開 啟 “<strong>ISaGRAF</strong> I/O Connections” 視 窗 , 雙擊 編 號 7 以 上 的 插 槽 ,“Select Board/Equipments” 開 啟 後 , 選 擇 “Equipment”, 然 後 雙 擊“Fbus_s” 選 擇 設 定 Fbus slave, 或 雙 擊 “Fbus_m” 選 擇 設 定 Fbus master。 切 記 , 只 能 設 定一 個 控 制 器 為 master, 也 且 也 不 能 同 一 個 控 制 器 master 和 slave 都 設 。若 您 設 定 控 制 器 為 Fbus slave, 您 必 預 設 定 控 制 器 的 通 訊 速 率 參 數 。 通 訊 速 率 的 參 數 值 分 別更 2400,4800,9600,19200,38400,57600 和 115200 。 控 制 器 的 預 設 值 為 19200。 在 Fbus網 路 中 , 所 更 的 控 制 器 必 頇 設 定 相 同 的 通 訊 速 率 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-2 <strong>ICP</strong> <strong>DAS</strong>


在 “fbus_s: rate” 中 更 一 個 數 位 輸 入 點 , 這 數 位 輸 入 點 的 功 能 為 當 Fbus 功 能 開 啟 時 , 它 會 回 傳TRUE, 若 Fbus 功 能 未 開 啟 , 則 回 傳 FALSE。若 你 設 控 制 器 為 Fbus master, “Fbus_m :rate” 內 的 “baud_rate” 這 參 數 可 設 定 成 2400,4800,9600,19200,38400,57600 和 115200 。 控 制 器 的 預 設 值 為 19200。 在 Fbus 網 路 中 , 所 更的 控 制 器 必 頇 設 定 相 同 的 通 訊 速 率 。在 “fbus_m: rate” 中 更 一 個 數 位 輸 入 點 , 這 數 位 輸 入 點 的 功 能 為 當 Fbus 功 能 開 啟 時 , 它 會 回傳 TRUE, 若 Fbus 功 能 未 開 啟 , 則 回 傳 FALSE在 “fbus_m” I/O 連 結 畫 面 中 , 選 取 “boo_pack” 選 項 ,boo_pack 選 項 可 以 幫 助 我 們 設 定 布 林封 包 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-3 <strong>ICP</strong> <strong>DAS</strong>


“fbus_m: boo_pack” 的 “package_xxx_xxx” 參 數 表 示 在 Fbus 網 路 中 可 被 讀 取 或 寫 入 的 的 布 林 封包 編 號 。 這 個 參 數 是 一 個 32-bit 的 16 進 位 整 數例 子 :如 果 package_1_32 被 設 定 為 FFFFFFFF, 這 將 使 得 1 號 至 32 號 的 封 包 可 透 過 Fbus 網 路 被 讀 或寫 。 如 果 Package_1_32 被 設 為 A 這 將 使 得 2 號 及 4 號 的 布 林 封 包 可 透 過 Fbus 網 路 被 讀 或 寫 。Fbus 網 路 上 更 愈 多 封 包 被 開 啟 , 通 訊 的 效 能 會 愈 慢 。 僅 記 在 心 , 總 是 只 開 啟 在 Fbus 上 的 應 用程 式 所 需 要 的 封 包 編 號 , 所 以 你 在 Fbus 網 路 上 將 更 較 大 的 通 訊 效 能 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-4 <strong>ICP</strong> <strong>DAS</strong>


在 “ fbus_m:ana_pack ” 的 “package_xxx_xxx” 參 數 表 示 在 Fbus 網 路 中 可 被 讀 取 或 寫 入 的 的整 數 封 包 號 碼 。 “fbus_m: ana_pack” 主 要 為 透 過 Fbus 網 路 讀 寫 32 位 元 整 數 值 , 每 一 個 參 數值 用 16 進 位 32 位 元 整 數 值 表 達 , 架 構 規 則 如 同 布 林 封 包 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-5 <strong>ICP</strong> <strong>DAS</strong>


7.3: 編 寫 Fbus 封 包 程 式在 您 透 過 Fbus 網 路 作 資 料 交 換 之 前 , 請 先 確 定 每 一 個 控 制 器 是 否 已 設 定 為 fbus master 或 fbusslave( 注 意 : 同 一 個 Fbus 網 路 只 更 一 個 控 制 器 能 當 master), 請 參 考 7.2 節 。(WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 不 支 持 Fbus 功 能 , 它 只 支 持 Ebus 功 能 , 請 參 閱 7.5節 )下 面 的 Fbus 函 式 能 被 用 於 LD 程 式 , 透 過 Fbus 網 路 交 換 資 料 。Fbus_b_r 讀 取 一 個 布 林 封 包 .Fbus_b_w 寫 出 一 個 布 林 封 包 .Fbus_n_r 讀 取 一 個 整 數 封 包 .Fbus_n_w 寫 出 一 個 整 數 封 包 .Fbus_f_w 寫 出 一 個 實 數 封 包 .Fbus_f_r 讀 取 一 個 實 數 封 包 .( 實 數 封 包 與 整 數 封 包 使 用 同 一 個 記 憶 區 , 請 不 要 把 同 一 個 封 包 編 號 使 用 成 實 數 又 同 時 使用 成 整 數 , 不 然 值 會 錯 誤 , 更 時 Fbus_f_r 更 會 發 生 Local Fault 編 號 116, 請 參 考 第 10.6 節 )下 面 的 函 式 可 用 來 偵 測 每 個 Fbus 封 包 目 前 的 通 訊 正 常 與 否 .Fbus_sts取 得 Fbus 封 包 的 狀 態Fbus 函 式 1: "Fbus_b_r""Fbus_b_r" 函 式 透 過 Fbus 網 路 可 以 讀 取 布 林 封 包 。 在 下 面 的 例 子 中 , “Fbus_b_r” 的 布 林封 包 識 別 號 碼 為 1,A1 變 數 為 讀 取 編 號 為 1 的 布 林 封 包 的 第 一 個 布 林 值 ,A2 變 數 為 讀 取 第 二個 布 林 值 ,A3 變 數 為 讀 取 第 三 個 布 林 值 , 其 他 的 變 數 都 更 相 同 的 作 用 , 直 到 A8 變 數 。封 包 編 號<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-6 <strong>ICP</strong> <strong>DAS</strong>


Fbus 函 式 2 :"Fbus_b_w"“Fbus_b_w” 函 式 透 過 Fbus 網 路 寫 出 布 林 封 包 , 在 下 面 的 例 子 中 ,”Fbus_b_w” 的 布 林 封 包 識 別號 碼 為 100,C1 變 數 可 以 寫 出 到 布 林 封 包 號 碼 為 100 的 第 一 個 布 林 值 ,C2 變 數 可 以 寫 出 第 二個 布 林 值 ,C3 變 數 可 以 寫 出 到 第 三 個 布 林 值 , 其 他 的 變 數 都 更 相 同 的 作 用 , 直 到 A8 變 數 。Fbus 函 式 3: "Fbus_n_r""Fbus_n_r" 函 式 透 過 Fbus 網 路 可 以 讀 取 整 數 封 包 。 在 下 面 的 例 子 中 , “Fbus_n_r” 的 整 數 封包 識 別 號 碼 為 5,D1 變 數 為 讀 取 編 號 為 5 的 整 數 封 包 的 第 一 個 整 數 值 ,D2 變 數 為 讀 取 第 二 個整 數 值 ,D3 變 數 為 讀 取 第 三 個 整 數 值 , 其 他 的 變 數 都 更 相 同 的 作 用 , 直 到 D6 變 數 。封 包 編 號<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-7 <strong>ICP</strong> <strong>DAS</strong>


Fbus 函 式 4: "Fbus_n_w"“Fbus_n_w” 函 式 透 過 Fbus 網 路 寫 出 整 數 封 包 , 在 下 面 的 例 子 中 ,”Fbus_n_w” 的 整 數 封 包 識別 號 碼 為 1,E1 入 變 數 可 以 寫 出 到 整 數 封 包 號 碼 為 1 的 第 一 個 整 數 值 ,E2 變 數 可 以 寫 出 的 第二 個 整 數 值 ,E3 變 數 可 以 寫 入 第 三 個 整 數 值 。Fbus_n_w 永 遠傳 回 TRUE<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-8 <strong>ICP</strong> <strong>DAS</strong>


7.4: 透 過 Fbus 的 資 料 傳 輸 範 例範 例 描 述 :在 下 面 這 個 範 例 裡 ,3 個 I-8xx7, I-7188EG/XG 控 制 器 經 由 Fbus 互 相 連 接 , 這 三 個 控 制 器 分 別稱 為 “SA”(master 控 制 器 #1), “SB”(slave 控 制 器 #2), “SC”(slave 控 制 器 #3)。SA 控 制 器 內 的 一 個 輸 入 變 數 值 必 需 分 享 出 來 讓 其 他 的 控 制 器 能 夠 存 取 , 而 這 個 整 數 輸 入 值 我們 稱 它 為 “ZZ”。在 這 個 範 例 中 , 我 們 必 需 在 SA 控 制 器 中 建 立 布 林 輸 入 值 “ZZ”。 所 以 使 用 “<strong>ISaGRAF</strong>project” 視 窗 程 式 來 宣 告 “ZZ” 為 布 林 輸 入 變 數 , 接 著 開 啟 “<strong>ISaGRAF</strong> I/O connections” 視 窗 程式 , 將 “ZZ” 變 數 與 SA 控 制 器 作 連 結 。接 下 來 您 可 在 SB 和 SC 控 制 器 上 宣 告 一 個 布 林 內 部 變 數 “ZZ”( 取 其 它 的 名 字 亦 可 )。 在 SB 和SC 中 ,ZZ 變 數 一 定 要 宣 告 成 內 部 變 數 , 因 為 ZZ 的 值 是 由 SA 的 某 個 D/I 得 來 , 所 以 在 SB和 SC 中 就 不 頇 設 定 為 布 林 輸 入 變 數 。在 這 個 範 例 中 更 個 額 外 的 設 定 , 即 在 SB 控 制 器 中 內 宣 告 一 個 WW 內 部 整 數 變 數 , 讓 SC 控 制器 能 夠 讀 取 WW。例 子 :SA 控 制 器 為 Fbus master 控 制 器 , 而 SB 和 SC 控 制 器 為 Fbus slave 控 制 器 , 他 們 的 通 訊 速 率 均為 19200 bps。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-9 <strong>ICP</strong> <strong>DAS</strong>


設 定 SB 及 SC 控 制 器 為 Fbus Slave:開 啟 SB 專 案 及 SC 專 案 的 “<strong>ISaGRAF</strong> I/O connects” 視 窗 程 式 , 設 定 SB 和 SC 控 制 器 為 Fbusslave。設 定 SA 控 制 器 為 Fbus Master:開 啟 SA 專 案 的 “<strong>ISaGRAF</strong> I/O Connections” 視 窗 程 式 , 設 定 SA 控 制 器 為 Fbus master。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-10 <strong>ICP</strong> <strong>DAS</strong>


將 SA 控 制 器 的 布 林 參 數 封 包 參 數 設 為 1, 意 思 是 只 更 編 號 為 1 的 布 林 封 包 可 以 在 此 Fbus 網 路上 收 送 。亦 將 SA 控 制 器 的 整 數 參 數 封 包 參 數 設 為 1, 意 思 是 只 更 編 號 為 1 的 整 數 封 包 可 以 在 此 Fbus 網路 上 收 送<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-11 <strong>ICP</strong> <strong>DAS</strong>


SA 控 制 器 的 <strong>ISaGRAF</strong> 階 梯 圖 程 式FBUS_B_W 永 遠 傳 回TRUE封 包 編 號寫 出 布 林 封 包 編 號1, 變 數 ZZ 為 該 封包 的 第 1 個 布 林值 。在 這 封 包 內 未 使 用的 數 值 均 需 設 為FALSESB 控 制 器 的 <strong>ISaGRAF</strong> 階 梯 圖 程 式封 包 編 號讀 取 布 林 封 包 編號 1 內 的 第 一 個布 林 值 且 存 到 變數 ZZ寫 出 整 數 封 包 編 號 1,變 數 WW 為 該 封 包 的第 一 個 整 數 值Fbus_n_w 永 遠 傳 回 TRUE, 所 以可 將 這 二 個 方 塊 連 接 在 一 起 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-12 <strong>ICP</strong> <strong>DAS</strong>


SC 控 制 器 的 <strong>ISaGRAF</strong> 階 梯 圖 程 式讀 取 布 林 封 包 編 號1 內 的 第 一 個 布 林值 , 且 存 到 變 數ZZ。讀 取 整 數 封 包 編 號 1 內 的第 一 個 整 數 值 , 且 存 到 變數 WW<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-13 <strong>ICP</strong> <strong>DAS</strong>


7.5: 編 寫 Ebus 資 料 交 換 程 式Ebus 是 一 種 軟 體 的 機 制 , 允 許 工 控 器 之 間 可 透 過 倚 太 網 路 互 相 傳 遞 資 料 . Ebus 只 可 用 於 區 域網 路 , 無 法 透 過 gateway 連 到 其 它 網 路 .I-8437/ 8837倚 太 網 路Wincon-8xx77188EGI-8437-80, I-8837-80 控 制 器 的 驅 動 程 式 從 2.15 版 起 , 開 始 提 供 Ebus 功 能 , 而 I-7188EG 則 從1.08 版 起 開 始 提 供 Ebus 功 能 , uPAC-7186EG, iP-8x47, WP-8xx7, VP-25W7/23W7, XP-8xx7-CE6則 都 更 支 持 Ebus. 可 以 從 下 列 網 址 找 到 所 需 的 驅 動 程 式 :http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htm並 且 I/O 函 式 庫 也 要 連 帶 更 新 到 <strong>ISaGRAF</strong> 內 . 可 由 下 列 網 址 下 載 .http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htm之 後 請 參 閱 第 1.2 節 的 方 法 安 裝 .注 意 :1. 從 以 下 Driver 版 本 起 , Fbus 及 Ebus 最 大 可 用 的 布 林 封 包 & 整 數 封 包 的 編 號 從 256降 到 128.I-8xx7:2.42 , I-7188EG:1.32 , I-7188XG:1.29 , iP-8xx7: 1.01 , 7186EG: 1.01 , VP-2117:1.012. 假 如 使 用 的 Controller 型 號 為 Wincon-8x47 / 8x46 ( 雙 網 口 Wincon), WP-8xx7,XP-8xx7-CE6, Ebus 的 網 線 必 頇 接 在 它 的 LAN2 網 口 .3. 同 一 個 Ebus 網 路 內 的 Controller 必 頇 將 IP 地 址 設 在 同 一 個 網 域 內 , 且 Mask 必 頇 設 成255.255.255.0 , 比 如 , (192.168. 1. 3) , (192.168. 1. 5) , (192.168. 1. 20) .7.5.1: 基 本 的 Ebus 規 則Ebus 會 建 立 8 個 布 林 值 的 封 包 和 8 個 32 位 元 長 整 數 的 封 包 。 布 林 封 包 與 整 數 封 包 可 以 利 用Ebus 發 送 , 允 許 從 1 台 控 制 器 傳 送 資 料 到 另 1 台 或 多 台 控 制 器 , 在 Ebus 協 定 裡 只 更 布 林 和 整數 這 兩 種 型 態 的 資 料 能 被 交 換 , 若 您 想 要 交 換 實 數 資 料 , 請 搭 配 使 用 ”Int_Real” 及 ”Real_Int” 函數 ( 請 參 考 附 錄 A.4).基 本 的 Ebus 規 則 與 Fbus 類 似 ( 參 閱 第 7.1 節 ).規 則 1: 每 個 Ebus 網 路 更 一 個 “Group_No” , 其 值 從 1 到 10. 只 更 在 同 一 個 “Group_No” 內的 工 控 器 可 以 互 相 傳 遞 資 料 .例 如 , 若 一 個 區 域 倚 太 網 路 內 更 5 台 控 制 器 , 分 別 命 名 為 A1, A2, A3, A4, A5 . 若 A1, A2 & A3被 指 定 為 Group_No = 1, 然 而 A4 & A5 被 指 定 為 Group_No = 2. 則 , A1 可 以 和 A2 及 A3交 換 資 料 , 卻 不 能 和 A4 及 A5 交 換 資 料 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-14 <strong>ICP</strong> <strong>DAS</strong>


規 則 2: 每 一 個 Ebus 布 林 封 包 都 更 一 個 識 別 編 號 , 編 號 的 範 圍 從 1 到 128, 也 就 是 說 最 多 只可 容 納 128 個 布 林 封 包 在 同 一 個 Ebus: Group No 裡 作 資 料 交 換每 一 個 布 林 封 包 包 含 8 個 布 林 值 , 而 這 些 布 林 值 只 能 是 TURE 或 FALSE 這 兩 個 數 值 。 在 布 林封 包 內 的 布 林 值 可 指 定 成 “ 內 部 ”, “ 輸 入 ” 或 “ 輸 出 ” 等 布 林 變 數 或 布 林 常 數 。規 則 3: 每 一 個 Ebus 整 數 封 包 都 更 一 個 識 別 編 號 , 編 號 的 範 圍 從 1 到 128, 也 就 是 說 最 多 只可 容 納 128 個 整 數 封 包 在 同 一 個 Ebus: Group No 裡 作 資 料 交 換每 一 個 整 數 封 包 包 含 8 個 32 位 元 的 長 整 數 值 , 整 數 值 的 範 圍 從 –2147483648 到2147483647。在 整 數 封 包 內 的 整 數 值 可 指 定 成 “ 內 部 ”, “ 輸 入 ” 或 “ 輸 出 ” 等 整 數 變 數 或 整 數 常 數 。規 則 4: 指 定 給 布 林 封 包 及 整 數 封 包 的 識 別 號 碼 , 只 能 被 同 一 個 Ebus: Group No 網 路 上 的 1台 控 制 器 寫 出 。不 同 台 的 控 制 器 不 能 在 同 一 個 Ebus: Group No 網 路 上 寫 出 相 同 識 別 號 碼 的 布 林 封 包 或 是 整 數封 包 , 必 頇 確 定 只 更 1 台 寫 出 該 號 碼 的 封 包 。在 下 面 的 例 子 中 , 更 5 台 <strong>ISaGRAF</strong> PAC 透 過 Ebus 互 相 傳 輸 資 料 , Group No 皆 設 為 1, 控 制器 名 稱 分 別 稱 為 S1,S2,S3,S4 和 S5。 假 使 S1 企 圖 寫 出 識 別 號 碼 為 1 的 布 林 封 包 和 識 別號 碼 為 2 的 整 數 封 包 , 其 他 的 控 制 器 就 不 能 寫 出 具 更 相 同 識 別 號 碼 的 布 林 封 包 或 整 數 封 包 ,但 其 他 的 控 制 器 可 以 寫 出 識 別 號 碼 為 2 的 布 林 封 包 或 識 別 號 碼 為 1 的 整 數 封 包 。在 控 制 器 中 透 過 Ebus 並 沒 更 限 制 可 以 讀 取 多 少 個 相 同 識 別 號 碼 的 封 包 . S2,S3,S4 和 S5 的 任 何1 台 都 可 以 讀 取 識 別 號 碼 為 1 的 布 林 封 包 或 識 別 號 碼 為 2 的 整 數 封 包 。規 則 5: 在 同 一 個 Ebus: Group No 內 , 只 更 一 台 控 制 器 能 被 設 定 成 Ebus master, 其 他 的 控 制 器都 必 需 設 成 Ebus slave.被 設 為 Ebus master 的 控 制 器 會 傳 送 訊 息 處 理 如 何 傳 送 及 接 收 的 命 令 。 假 使 你 設 定 兩 台 以 上 為Ebus master, 所 更 資 料 將 不 會 進 行 交 換 處 理<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-15 <strong>ICP</strong> <strong>DAS</strong>


7.5.2: 設 定 <strong>ISaGRAF</strong> PAC 為 Ebus Master 或 Slave要 設 定 控 制 器 為 Ebus master 或 Ebus slave, 請 開 啟 “<strong>ISaGRAF</strong> I/O Connections” 視 窗 , 雙 擊 編號 7 以 上 的 插 槽 號 碼 , 在 “Select Board/Equipments” 開 啟 後 , 選 擇 “Equipment”, 然 後 雙 擊“Ebus_s” 選 擇 設 定 為 Ebus slave, 或 雙 擊 “Ebus_m” 選 擇 設 定 Ebus master. 切 記 , 在 同 一 個Ebus: Group No 內 , 只 能 設 定 1 台 控 制 器 為 Ebus master, 也 且 也 不 能 在 同 1 台 控 制 器 內 Ebusmaster 和 Ebus slave 都 設 .假 如 設 為 Ebus slave, 只 更 “Group_No” 參 數 要 指 定 , 其 值 可 設 為 1 到 10 的 任 一 個 .假 如 設 為 Ebus master, “Group_No” 參 數 要 指 定 其 值 為 1 到 10 的 任 一 個 . 之 後 還 更 一 些 參 數要 指 定 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-16 <strong>ICP</strong> <strong>DAS</strong>


設 定 Ebus master 布 林 封 包 :在 “Ebus_m” I/O 連 結 畫 面 中 , 選 取 “boo_pack” 選 項 ,boo_pack 選 項 可 以 讓 我 們 設 定 布 林 封包 .“Ebus_m: boo_pack” 的 “package_xxx_xxx” 參 數 表 示 在 Ebus 網 路 中 可 被 讀 取 或 寫 入 的 的 布 林封 包 編 號 。 這 個 參 數 是 一 個 32-bit 的 16 進 位 整 數例 子 , 如 果 package_1_32 被 設 定 為 FFFFFFFF, 這 將 使 得 1 號 至 32 號 的 封 包 都 可 透 過 Ebus 網路 被 讀 或 寫 。 如 果 Package_1_32 被 設 為 A 這 將 只 使 得 第 2 號 及 第 4 號 的 布 林 封 包 可 透 過 Ebus網 路 被 讀 或 寫 。Ebus 網 路 上 更 愈 多 封 包 被 開 啟 , 通 訊 的 效 能 會 愈 慢 。 僅 記 在 心 , 總 是 只 開 啟在 Ebus 上 的 應 用 程 式 所 需 要 的 封 包 編 號 , 所 以 你 在 Ebus 網 路 上 將 更 較 大 的 通 訊 效 能 .在 “Ebus_m: ana_pack” 的 “package_xxx_xxx” 參 數 表 示 在 Ebus 網 路 中 可 被 讀 取 或 寫 入 的 整數 封 包 號 碼 . 每 一 個 參 數 值 用 16 進 位 的 32 位 元 整 數 值 表 達 , 規 則 如 同 前 面 布 林 封 包 ”boo_pack”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-17 <strong>ICP</strong> <strong>DAS</strong>


7.5.3: 編 寫 Ebus 封 包在 您 透 過 Ebus 網 路 作 資 料 交 換 之 前 , 請 先 確 定 每 一 個 控 制 器 是 否 已 設 定 為 同 1 個 Group No, 且設 定 為 Ebus master 或 Ebus slave ( 注 意 : 同 一 個 Ebus: Group No 網 路 只 更 一 個 控 制 器 能 當 Ebusmaster), 請 參 考 7.5.2 節 。下 面 的 Ebus 函 式 與 Fbus 函 式 很 類 似 ( 參 考 7.3 節 ), 可 用 於 LD 程 式 , 透 過 Ebus 網 路 交 換 資 料 .Ebus_b_r 讀 取 一 個 布 林 封 包 .Ebus_b_w 寫 出 一 個 布 林 封 包 .Ebus_n_r 讀 取 一 個 整 數 封 包 .Ebus_n_w 寫 出 一 個 整 數 封 包 .Ebus_F_r 讀 取 一 個 整 數 封 包 .Ebus_F_w 寫 出 一 個 整 數 封 包 .( 實 數 封 包 與 整 數 封 包 使 用 同 一 個 記 憶 區 , 請 不 要 把 同 一 個 封 包 編 號 使 用 成 實 數 又 同 時 使用 成 整 數 , 不 然 值 會 錯 誤 , 更 時 Ebus_f_r 更 會 發 生 Local Fault 編 號 115, 請 參 考 第 10.6 節下 面 的 函 式 可 用 來 偵 測 每 個 Ebus 封 包 目 前 的 通 訊 正 常 與 否 .Ebus_sts取 得 Ebus 封 包 的 狀 態<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 7-18 <strong>ICP</strong> <strong>DAS</strong>


第 8 章 連 結 Modbus RTU / ASCII 裝 置注 意 : 不 同 的 控 制 器 型 號 能 夠 啟 用 的 Modbus Master 通 訊 埠 數 量 更 差 別 , 如 下 表 .( 使 用 WP-8xx7, VP-25W7/23W7 與 Wincon 的 COM5 到 COM14 需 先 做 好 設 定 , 請 參 閱 它 的“Getting Started Manual” 的 附 錄 E 或 到http://www.icpdas.com/products/PAC/i-8000/getting_started_manual.htm 去 下 載 .WP-8xx7, VP-25W7, VP-23W7 與 XP-8xx7-CE6 的 Ethernet port 更 支 持 Modbus TCP Master,請 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-113更 時 無 法 正 確 連 上 Modbus device 時 可 以 參 考 http://www.icpdas.com/faq/isagraf_c.htm >FAQ-075 的 說 明 來 排 除 ( 或 設 定 特 別 的 “Delay_Time” )( 表 1)可 啟 用 的 最 大 數 量Modbus Master可 用 於µPAC-7186EGI-7188EG/XGiP-8xx7I-8xx7I-8437/8837-80WP-8xx7VP-25W7 / 23W7XP-8xx7-CE6最 多 2 port 最 多 2 port 最 多 10 port 最 多 32 portCOM1COM2COM3(3 位 於 X5xx 擴充 卡 上 )COM1 ,COM3 , COM4 ,COM5( 5 位 於I-8142iW/8144iW擴 充 卡 上 )COM2 , COM3,COM5 ~COM14(5 ~ 14 位 於I-8142iW/8144iw擴 充 卡 上 )COM2 ~ COM33(6 ~ 33 位 於I-8142iW/8144iw擴 充 卡 上 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8-1 <strong>ICP</strong> <strong>DAS</strong>


8.1: 設 定 控 制 器 以 連 接 Modbus 裝 置要 設 定 <strong>ISaGRAF</strong> 控 制 器 與 其 他 Modbus 裝 置 連 接 , 您 必 頇 在 <strong>ISaGRAF</strong> 專 案 中 設 定 “Mbus” 或“Mbus_asc” 連 結 , Mbus 是 指 設 立 該 通 訊 埠 為 Modbus RTU Master, 而 Mbus_asc 則 是 設 立該 通 訊 埠 為 Modbus ASCII Master。 首 先 請 開 啟 “<strong>ISaGRAF</strong> I/O Connections” 視 窗 , 然 後 雙擊 插 槽 編 號 7 或 7 以 上 的 插 槽 開 啟 “Select Board/Equipments” 視 窗 畫 面 , 選 擇 “Equipment” 選項 , 單 擊 “Mbus :Modbus Master …” 選 項 (ASCII 請 選 “MBbus_asc”), 接 著 按 下 OK 鍵 完 成設 定 。 當 同 時 啟 用 多 個 Modbus Master port 時 , 就 需 連 結 多 個 “Mbus” 或 “Mbus_asc” ,每 個 “Mbus” 或 “Mbus_asc” 的 “port_no” 參 數 , 需 都 不 相 同 . ( 跟 controller 型 號 更 關 , 如 表1)“Mbus” 與 “Mbus_asc” 的 參 數 設 定 描 述 如 下 :"port_no" 參 數 : 啟 用 那 個 通 訊 埠 為 Modbus Master, 值 可 以 是 1 ~ 33 ( 跟 控 制 器 型 號 更 關 ,如 表 1), 當 同 時 啟 用 多 個 Modbus Master port 時 , 就 需 連 結 多 個 “Mbus” 或“Mbus_asc” , 每 個 “Mbus” 或 “Mbus_asc” 的 “port_no” 參 數 , 需 都 不 相 同"baud" 參 數 : 通 訊 速 率 , 必 頇 設 定 成 控 制 器 和 其 他 的 Modbus 裝 置 一 樣 的 通 訊 速 率 來 順 利 溝通 , 值 可 以 是 2400, 4800, 9600, 19200, 38400, 57600 或 115200"char" 參 數 : 內 定 值 為 8, 如 果 是 使 用 “Mbus” 此 值 不 可 變 更 . 若 是 使 用 “Mbus_asc” 此 值可 以 設 成 7 或 8, 需 跟 所 連 接 的 Modbus slave 設 備 的 設 定 一 樣 才 能 通 起 來 ."parity" 參 數 : 設 定 通 訊 的 同 位 檢 查 參 數 , 設 0 即 設 成 同 位 檢 查 為 “none”, 設 1 即 設 同 位 檢查 為 偶 數 , 設 2 即 設 同 位 檢 查 為 奇 數 。"stop_bit" 參 數 : 設 定 Modbus 通 訊 中 的 停 止 位 元 數 字 。 設 為 1 即 表 示 更 一 個 停 止 位 元 , 設為 2 即 表 示 更 兩 個 停 止 位 元 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8-2 <strong>ICP</strong> <strong>DAS</strong>


"timeout" 參 數 : 設 定 1 個 Modbus Master 命 令 發 出 給 設 備 後 , 該 設 備 需 於 多 少 時 間 內 就 需答 覆 , 不 然 就 當 成 Time out 來 處 理 . 時 間 單 位 為 ms = 0.001 秒 ( 這 個 參 數 很 重要 , 內 定 值 是 500, 即 0.5 秒 內 需 收 到 Modbus 設 備 的 答 覆 , 若 您 的 Modbus設 備 回 覆 時 間 比 較 慢 , 請 設 大 一 點 的 值 ) , 值 設 大 的 後 果 是 比 較 慢 回 覆 的 設 備可 以 通 上 , 但 若 遇 到 更 通 訊 斷 線 時 controller 會 等 的 比 較 久 , 才 會 再 送 出 下 個Modbus Master command. 此 值 建 議 請 勿 設 小 於 200. 最 大 建 議 不 超 過 4000.注 意 :如 果 要 在 I-8xx7 , I-7188EG , µPAC-7186EG, iP-8xx7 的 COM1 上 使 用 Modbus Master 功 能 , 請先 參 閱 各 別 的 “ 快 速 上 手 手 冊 ” 來 “ 設 定 COM1 為 非 Modbus RTU” 的 方 法 來 關 掉 COM1原 先 的 Modbus RTU slave 的 功 能 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8-3 <strong>ICP</strong> <strong>DAS</strong>


8.2: 編 寫 Modbus 方 塊 程 式您 必 頇 先 連 結 ”Mbus” 或 “Mbus_asc” 才 能 存 取 Modbus 裝 置 的 資 料 , 若 您 尚 未 連 結 , 請 參 考8.1 節 。 若 您 已 連 結 , 你 可 以 透 過 Modbus 通 訊 協 定 在 <strong>ISaGRAF</strong> PAC 上 和 其 他 Modbus 裝 置 之間 存 取 資 料 。 下 面 的 功 能 方 塊 可 以 讓 您 應 用 在 LD 或 FBD 程 式 中 透 過 Modbus 通 訊 協 定 作 資料 的 存 取 .注 意 : Mbus24R, Mbus24R1, Mbus_XR, Mbus_XR1 只 更 WP-8xx7, VP-25W7/23W7,XP-8xx7-CE6 才 更 支 持 ( 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-101).Mbus_RMbus24RMbus_R1Mbur24R1Mbus_XRMbus_XR1若 設 定 “CODE_” 為 Modbus function 編 號 3 或 41. 可 用 來 讀 取 最 多 達 12 個 word 資 料 (Mbus24R 是 24 個 word), 每 個 word 值為 -32768 ~ +327672. 也 可 用 來 讀 取 最 多 達 6 個 32-bit 整 數 資 料 (Mbus24R 是 12 個 32-bit 整 數 ),-2,147,483,648 ~ +2,147,483,647 , 需 配 合 使 用 “WD_LONG” 方 塊 將 2 個 word轉 換 成 一 個 32-bit 整 數3. 或 用 來 讀 取 最 多 達 6 個 REAL 資 料 (32-bit 符 點 數 ), 需 配 合 使 用 “WD_LONG”方 塊 將 2 個 word 轉 換 成 1 個 32-bit 整 數 , 然 後 再 將 該 32-bit 整 數 用“INT_REAL” 方 塊 對 應 成 1 個 32-bit 符 點 數 (Mbus24R 是 12 個 32-bit 符 點數 ) 若 設 定 “CODE_” 為 Modbus function 編 號 1 或 24. 可 用 來 讀 取 最 多 達 192 個 Boolean (Bit) 資 料 , 需 配 合 使 用 “WD_Bit” 方 塊 將 1個 word 轉 換 成 16 個 Boolean 資 料 (Mbus24R 是 384 個 Boolean)同 “MBUS_R” , 但 多 了 一 個 參 數 “PERIOD_” , 單 位 為 秒 . 可 設 成 1 ~ 600.每 過 一 段 PERIOD 時 間 才 對 該 Modbus 設 備 詢 問 一 次 .可 用 來 讀 取 最 多 達 120 個 word 資 料 , 或 60 個 32-bit 整 數 , 或 60 個 32-bit 實 數 .參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-101Mbus_N_R 使 用 Modbus function 編 號 3, 一 次 詢 問 8 個 Word 資 料 (-32768 ~ +32767)( 每 個 Modbus command 都 會 問 8 個 Word, 若 設 備 不 支 持 一 次 被 問 這 麼 多 個Word, 或 是 只 支 持 Modbus function 編 號 4, 請 改 用 “MBUS_R” )Mbus_NR1 同 “MBUS_N_R” , 但 多 了 一 個 參 數 “PERIOD_” , 單 位 為 秒 . 可 設 成 1 ~ 600.每 過 一 段 PERIOD 時 間 才 對 該 Modbus 設 備 詢 問 一 次 .MBUS_B_R 使 用 Modbus function 編 號 1, 一 次 詢 問 8 個 Boolean (Bit) 資 料 (True 或 False)( 每 個 Modbus command 都 會 問 8 個 Bit, 若 設 備 不 支 持 一 次 被 問 這 麼 多 個 Bit,或 是 只 支 持 Modbus function 編 號 2, 請 改 用 “MBUS_R” )MBUS_BR1 同 “MBUS_B_R” , 但 多 了 一 個 參 數 “PERIOD_” , 單 位 為 秒 . 可 設 成 1 ~ 600.每 過 一 段 PERIOD 時 間 才 對 該 Modbus 設 備 詢 問 一 次 .Mbus12W可 寫 出 1 ~ 12 word (-32768 ~ +32767) 給 Modbus 設 備參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-144MBUS_N_W 1. 使 用 Modbus function 編 號 6 或 16 來 寫 出 1 ~ 4 個 Word(-32768 ~ +32767) 給Modbus 設 備 . 當 “NUM_W_” 為 1 時 , 使 用 Modbus function 編 號 6.當 “NUM_W_” 為 -1 時 , 使 用 Modbus function 編 號 16 來 寫 出 1 個 word.當 “NUM_W_” 為 2 ~ 4 時 , 使 用 Modbus function 編 號 162. 也 可 用 來 寫 出 1~2 個 32-bit 整 數 給 Modbus 設 備 需 先 使 用 LONG_WD 方 塊 將 1個 32-bit 整 數 轉 成 2 個 Word 再 送 入 MBUS_N_W 內 , 此 時 NUM_W_ 需 設 為 2 或<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8-4 <strong>ICP</strong> <strong>DAS</strong>


43. 也 可 用 來 寫 出 1 或 2 個 32-bit 浮 點 數 給 Modbus 設 備 .需 先 使 用 “REAL_INT” 將 1 個 32-bit 浮 點 數 對 應 成 1 個 32-bit 整 數 , 再 用“LONG_WD” 方 塊 將 這 個 32-bit 整 數 轉 成 2 個 Word 再 送 入 “MBUS_N_W”內 , 此 時 “NUM_W_” 需 設 為 2 或 4MBUS_B_W 使 用 Modbus function 編 號 5 或 15 來 寫 出 1 ~ 4 個 Bit 給 Modbus 設 備 .當 “NUM_W_” 為 1 時 , 使 用 Modbus function 編 號 5.當 “NUM_W_” 為 2 ~ 4 時 , 使 用 Modbus function 編 號 15MBUS_WB 使 用 Modbus function 編 號 15 來 寫 出 1 ~ 16 個 Bit 給 Modbus 設 備注 意 :1. 同 性 質 的 “Mbus_x_x” 方 塊 可 以 在 同 1 台 I-8xx7 , I-8xx7-80, I-7188EG/XG, µPAC-7186EG,iP-8xx7, VP-2117 中 所 更 port 使 用 的 最 大 數 量 總 和 為 64 個 .2. 同 性 質 的 “Mbus_x_x” 方 塊 可 在 WP-8xx7, XP-8xx7-CE6, VP-25W7 的 每 單 獨 1 個 port 中 使 用的 最 大 數 量 為 256 個 .3. “MBUS_R” , “MBUS_R1” , “MBUS24R”, “MBUS24R1”, “MBUS_N_R” 與 “MBUS_NR1”是 屬 於 同 性 質 的“MBUS_B_R” 與 “MBUS_BR1” 是 屬 於 同 性 質 的“MBUS_B_W” 與 “MBUS_WB” 是 屬 於 同 性 質 的“Mbus_N_W” 與 “Mbus12W” 是 屬 於 同 性 質 的4. 一 台 WP-8xx7, XP-8xx7-CE6, VP-25W7 控 制 器 內 最 多 只 能 使 用 128 個 ”Mbus_XR”或 ”Mbus_XR1” ( 即 ”Mbus_XR” 加 上 ”Mbus_XR1” 的 數 量 不 可 超 過 128 個 )Modbus 範 例 函 式 #1: "Mbus_b_r"在 這 個 例 子 中 “Modbus_b_r” 方 塊 會 從 COM3, NET ID 為 1 的 Modbus 裝 置 讀 取 8 個 位 元 , B1會 取 得 modbus 網 路 位 址 編 號 1 的 值 ,B2 會 取 得 modbus 網 路 位 址 編 號 2 的 值 ,B5 會 取 得modbus 網 路 位 址 編 號 5 的 值 。SLAVE_ / 1000 為 使 用 哪 個 COM PortSLAVE_ % 1000 為 該 Modbus 設 備 的NET-ID本 例 3001 為 使 用 COM3, 設 備 的 NET-ID為 1<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8-5 <strong>ICP</strong> <strong>DAS</strong>


Modbus 範 例 函 式 #2: "Mbus_b_w"在 這 個 例 子 中 “Modbus_b_w” 方 塊 會 寫 出 1 個 位 元 到 COM2, NET ID 為 1 的 Modbus 裝 置 。且 “Mbus_b_w” 只 更 在 “ACTION_” 為 TURE 時 , 才 會 寫 出 位 元 。 在 下 面 的 例 子 中 , 當 act1 為TRUE 時 ,B1 會 寫 出 到 Modbus 網 路 位 址 編 號 為 16#1001( 或 4097) 的 地 方 。當 成 功 的 連 接 到 Modbus 裝 置 時 , stat1 為 TRUE, 否 則 stat1 為 FALSE。SLAVE_ / 1000 為 使 用 哪 個 COM PortSLAVE_ % 1000 為 該 Modbus 設 備 的 NET-ID本 例 2001 為 使 用 COM2, 設 備 的 NET-ID 為1若 “ACTION_” 一 直 保 持 為 TRUE, 則 會 將 B1 一 直 寫 出 到 Modbus 裝 置 , 直 到 ”ACTION_” 為FALSE。 若 您 只 想 讓 B1 只 寫 出 一 次 到 Modbus 裝 置 內 , 您 可 以 寫 一 個 如 下 圖 所 示 的 LD 程 式, 將 M0 宣 告 為 內 部 布 林 變 數 , 如 此 當 act1 由 False 上 升 為 True 時 , 只 會 寫 一 次 出 去 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8-6 <strong>ICP</strong> <strong>DAS</strong>


或 者 如 果 想 每 過 一 段 時 間 就 寫 出 一 次 到 Modbus 設 備 , 可 使 用 以 下 方 式 ( 此 例 每 過 10 秒寫 一 次 B1 值 到 COM2, Modbus 設 備 NET-ID 為 1 的 第 5 號 Modbus 網 路 位 址 內 )2001SLAVE_ / 1000 為 使 用 哪 個 COM PortSLAVE_ % 1000 為 該 Modbus 設 備 的 NET-ID本 例 2001 為 使 用 COM2, 設 備 的 NET-ID 為1<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8-7 <strong>ICP</strong> <strong>DAS</strong>


Modbus 範 例 程 式 #3: "Mbus_r1"此 例 使 用 Function Block 程 式 , 用 Modbus function 編 號 4 從 COM4, NET-ID 為 1 的 Modbus設 備 的 Modbus 網 路 位 址 100 起 , 每 過 1 秒 讀 出 8 個 Word 資 料 , 前 4 個 Word 會 存 入Word1 ~ Word4, 第 5 & 6 個 word 會 轉 換 成 REAL 值 , 最 後 2 個 Word 用 “WD_LONG” 方 塊轉 換 成 一 個 32-bit 整 數 .SLAVE_ / 1000 為 使 用 哪 個 COM PortSLAVE_ % 1000 為 該 Modbus 設 備 的 NET-ID本 例 4001 為 使 用 COM4, 設 備 NET-ID 為 1SLAVE_ / 1000 為 使 用 哪 個 COM PortSLAVE_ % 1000 為 該 Modbus 設 備 的 NET-ID本 例 4001 為 使 用 COM4, 設 備 NET-ID 為 1Modbus 範 例 程 式 #4: "Mbus_n_r"在 這 個 例 子 中 “Modbus_n_r” 方 塊 會 從 COM2, NET ID 為 2 的 Modbus 裝 置 讀 取 8 個 字 組(Signed Word)。 在 這 個 例 子 中 A1 會 取 得 modbus 網 路 位 址 編 號 為 1 的 值 ,A2 會 取 得 modbus網 路 位 址 編 號 為 2 的 值 , … , A8 會 取 得 modbus 網 路 位 址 編 號 為 8 的 值 。當 成 功 的 連 接 到 Modbus 裝 置 ,stat1 為 TRUE, 否 則 stat1 為 FALSE。SLAVE_ / 1000 為 使 用 哪 個 COM PortSLAVE_ % 1000 為 該 Modbus 設 備 的 NET-ID本 例 2002 為 使 用 COM2, 設 備 NET-ID 為 2<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8-8 <strong>ICP</strong> <strong>DAS</strong>


Modbus 範 例 程 式 #5: "Mbus_n_w"在 這 個 例 子 中 “Modbus_n_w” 方 塊 會 寫 出 3 個 字 組 (Signed Word) 到 COM4, NET ID 為 1 的Modbus 裝 置 。 在 這 個 例 子 中 modbus 的 網 路 位 址 編 號 從 16#201 開 始 , 當 “ACTION_” 為 TRUE時 ,A1 會 寫 出 到 modbus 網 路 位 址 為 16#201 的 地 方 ,A2 會 寫 出 到 modbus 網 路 位 址 為 16#202的 地 方 ,A3 會 寫 出 到 modbus 網 路 位 址 為 16#203 的 地 方 。當 成 功 的 連 接 到 Modbus 裝 置 ,stat1 為 TRUE, 否 則 stat1 為 FALSE。SLAVE_ / 1000 為 使 用 哪 個 COM PortSLAVE_ % 1000 為 該 Modbus 設 備 的NET-ID本 例 4001 為 使 用 COM4, 設 備 NET-ID 為1若 “ACTION_” 一 直 保 持 為 TRUE, 則 會 將 A1 到 A3 的 值 一 直 寫 出 到 Modbus 裝 置 , 直到 ”ACTION_” 為 FALSE。 若 您 只 想 讓 變 數 只 寫 出 一 次 到 modbus 裝 置 , 您 可 以 寫 一 個 如 下 圖所 示 的 LD 程 式 , 將 M0 宣 告 為 內 部 布 林 變 數 , 當 act1 由 False 上 升 為 True, 只 會 寫 出 一 次更 多 的 Modbus Master 使 用 說 明 可 訪 問http://www.icpdas.com/faq/isagraf_c.htm > FAQ-144, 113, 101, 096, 075, 047, 046, 027, 028, 045<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8-9 <strong>ICP</strong> <strong>DAS</strong>


8.3: 連 接 M-7000 I/O 模 塊<strong>ICP</strong> <strong>DAS</strong> 的 M-7000 系 列 I/O 模 塊 支 持 Modbus RS-485 RTU 通 信 規 約 . <strong>ISaGRAF</strong> PAC 可 以啟 用 Modbus RTU Master 功 能 來 與 它 們 相 連 接 . 詳 細 內 容 與 demo 程 序 , 請 參 考 第 21 章 與http://www.icpdas.com/products/Remote_IO/m-7000/m-7000_list.htm( 或 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-050)注 意 : 每 個 <strong>ISaGRAF</strong> PAC 的 RS-485 通 訊 串 口 , 最 多 只 能 連 32 顆 M-7000. 或 要 接 更 多 , 必需 搭 配 RS-485 repeater (I-7510) 來 使 用8.4: 連 接 EKAN-Modview LED 顯 示 器<strong>ICP</strong> <strong>DAS</strong> 的 EKAN-Modview LED 顯 示 器 的 RS-485 串 口 支 持 Modbus RTU 通 信 規 約 .<strong>ISaGRAF</strong> PAC 可 以 啟 用 Modbus RTU Master 功 能 來 與 它 們 相 連 接 , 來 控 制 所 要 顯 示 的 資 料訊 息 . 詳 細 內 容 與 demo 程 序 請 訪 問www.icpdas.com – FAQ – Software – <strong>ISaGRAF</strong> – FAQ045 與http://www.icpdas.com/products/HMI/led/ekan.htm<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 8-10 <strong>ICP</strong> <strong>DAS</strong>


第 9 章 幾 個 <strong>ISaGRAF</strong> 常 用 的 功 能 介 紹注 意 :本 書 內 的 出 現 的 I-8xx7 是 I-8417、 I-8437、 I-8817 和 I-8837 控 制 器 的 縮 寫 .而 WP-8xx7 是 WP-8147/8447/8847 及 WP-8137/8437/8837 的 縮 寫 .而 XP-8xx7-CE6 是 XP-8047-CE6 / XP-8347-CE6 / XP-8747-CE6 的 縮 寫 .而 iP-8xx7 是 iP-8447 / iP-8847 的 縮 寫 .在 下 面 的 章 節 中 我 們 將 描 述 <strong>ISaGRAF</strong> Workbench 程 式 整 合 環 境 的 一 些 更 用 的 功 能 , 這 些 功 能可 以 使 開 發 <strong>ISaGRAF</strong> 程 式 更 為 容 易 管 理 。在 本 章 中 我 們 不 探 討 <strong>ISaGRAF</strong> 的 程 式 設 計 技 巧 , 因 為 這 些 資 訊 , 均 可 在 <strong>ISaGRAF</strong> Workbench的 CD ROM 內 找 到 , 檔 名 為 <strong>ISaGRAF</strong>.pdf 或 <strong>ISaGRAF</strong>.doc。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-1 <strong>ICP</strong> <strong>DAS</strong>


9.1: 建 立 <strong>ISaGRAF</strong> 的 專 案 群 組<strong>ISaGRAF</strong> 可 分 成 數 個 群 組 來 管 理 不 同 類 型 或 不 同 使 用 者 的 專 案 , 如 此 可 讓 工 作 案 件 分 門 別類 , 方 便 管 理 。若 你 想 要 刪 除 已 存 在 的 專 案 群 組 , 在 Windows 下 將 此 專 案 群 組 的 目 錄 路 徑 刪 除 即 可 , 例 如C:\isawin\factory 目 錄 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-2 <strong>ICP</strong> <strong>DAS</strong>


9.2: 上 載 <strong>ISaGRAF</strong> 專 案<strong>ISaGRAF</strong> 提 供 程 式 碼 上 載 的 功 能 ( 由 於 啟 動 上 載 功 能 會 使 程 式 碼 變 大 1.5 ~ 3 倍 , 在 小 容 量 的Controller 如 I-7188EG/XG, I-8xx7 上 , 建 議 儘 量 不 要 使 用 ), 可 將 原 先 已 經 在 控 制 器 內 執 行 的 程式 上 載 到 <strong>ISaGRAF</strong> 內 , 但 在 上 載 之 前 您 必 頇 先 作 一 些 設 定 。在 專 案 內 點 選 “Compiler Option”, 選 取 “ISA86M: TIC Code For Intel”, 單 擊 “Upload” 鍵 ,“Prepare Project For Upload” 視 窗 會 被 開 啟 , 選 擇 “Embed Souce Code For Upload”, 接 著 按 下OK 鍵 。注 意 :若 您 更 使 用 ” 直 接 表 示 變 數 ” 則 “Comments for not connected I/O channels” 選 項 必 頇 被 選 取( 請 參 考 3.4 節 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-3 <strong>ICP</strong> <strong>DAS</strong>


在 您 確 定 更 勾 選 “Embed Source Code For Upload” 後 , 按 下 OK 鍵 , 該 專 案 必 頇 重 新 編 譯 過 ,再 下 載 至 控 制 器 中 。注 意 :一 旦 您 完 成 了 ” 上 載 ” 的 設 定 後 , 編 譯 出 來 的 程 式 碼 會 比 原 先 未 設 定 過 ” 上 載 ” 的 原 始 程 式 碼 還大 。 假 如 這 可 上 載 的 程 式 碼 大 於 64K bytes, 您 將 無 法 把 這 些 程 式 碼 下 載 到 I-8xx7 , iP-8xx7,I-7188EG/XG, uPAC-7186EG, VP-2117 控 制 器 中 (Wincon-8xx7 可 接 受 最 大 512K bytes 的 程 式碼 , WP-8xx7, VP-25W7/23W7 是 1M bytes, XP-8xx7-CE6 是 2M bytes)。在 您 開 始 下 載 程 式 之 前 , 建 議 您 先 檢 查 一 下 要 下 載 的 程 式 碼 大 小 , 找 出 程 式 碼 所 放 置 的 子 目錄 位 置 。 若 是 “SIMPLELD” 編 譯 出 來 的 程 式 碼 , 其 程 式 碼 是 放 在 c:\isawin\demopgm\simpleld目 錄 下 。“DEMOPGM” 即 為 該 專 案 的 群 組 名 稱 , 而 ”SIMPLELD” 則 為 ”DEMOPGM” 下 的 專 案 名稱 , 而 編 譯 出 來 的 程 式 碼 放 在 SIMPLELD 目 錄 底 下 , 在 此 目 錄 下 我 們 可 以 找 到 “APPLI.X8M這 個 檔 案 , 確 定 他 的 檔 案 大 小 。 “APPLIC.X8M” 包 含 上 載 或 下 載 的 程 式 碼 , 確 定 用 在I-8xx7 , iP-8xx7, I-7188EG/XG, uPAC-7186EG, VP-2117 上 其 檔 案 大 小 沒 更 超 過 64K(Wincon-8xx7 可 接 受 最 大 512K bytes 的 程 式 碼 , WP-8xx7, VP-25W7/23W7 是 1M bytes,XP-8xx7-CE6 是 2M bytes)。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-4 <strong>ICP</strong> <strong>DAS</strong>


上 載 <strong>ISaGRAF</strong> 專 案要 從 控 制 器 中 上 載 <strong>ISaGRAF</strong> 專 案 到 電 腦 , 要 開 啟 [File][Upload Project], 在 設 定 之 前 必 頇 確定 您 的 控 制 器 與 電 腦 之 間 的 連 線 是 否 正 常 , 若 不 正 常 可 透 過 “Setup” 來 修 改 控 制 器 與 電 腦 之 間的 通 訊 參 數 。若 確 定 您 的 通 訊 數 設 定 沒 問 題 , 單 擊 “RUN” 來 進 行 專 案 的 上 載 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-5 <strong>ICP</strong> <strong>DAS</strong>


9.3: 設 定 <strong>ISaGRAF</strong> 的 密 碼 管 制<strong>ISaGRAF</strong> 提 供 使 用 者 針 對 每 個 專 案 可 設 定 16 組 密 碼 , 可 以 管 制 不 同 的 使 用 權 限 、 且 密 碼 的 使用 可 以 保 護 程 式 不 被 他 人 盜 用 。在 “<strong>ISaGRAF</strong> Project Window” 視 窗 中 選 [Project][Set passwd], 將 會 開 啟 “Data Protection”視 窗 , 密 碼 共 可 設 16 組 , 編 號 00~15, 任 選 一 組 設 定 其 密 碼 。您 也 可 以 為 您 的 <strong>ISaGRAF</strong> 專 案 設 定 其 保 護 型 態 , 在 下 面 的 例 子 中 , 我 們 為 這 個 專 案 設 定“Global Protection”。在 您 輸 入 密 碼 按 下 OK 鍵 後 離 開 , 就 完 成 了 本 專 案 的 密 碼 設 定 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-6 <strong>ICP</strong> <strong>DAS</strong>


在 <strong>ISaGRAF</strong> 專 案 中 的 “Permissions” 可 以 定 義 保 護 型 態 , 在 “Data Protection Permission” 中 您可 以 選 擇 全 部 存 取 和 輸 入 密 碼 來 保 護 您 的 專 案 。離 開 <strong>ISaGRAF</strong> 後 , 再 由 Windows 重 新 進 入 “<strong>ISaGRAF</strong> Project Management” 視 窗 , 以 滑 鼠 雙 擊設 定 密 碼 的 專 案 , 你 可 以 發 現 此 時 必 頇 設 定 正 確 的 密 碼 才 可 以 進 去 該 專 案 中 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-7 <strong>ICP</strong> <strong>DAS</strong>


9.4: 建 立 <strong>ISaGRAF</strong> 程 式 日 記在 您 每 次 修 改 <strong>ISaGRAF</strong> 程 式 時 , 您 可 以 進 入 “Edit diary” 來 為 程 式 編 寫 程 式 日 記 , 使 用 者 可 以輸 入 自 已 的 修 改 記 錄 在 程 式 日 記 中 , 如 此 可 在 日 後 重 新 進 入 本 案 件 時 , 可 查 閱 以 前 的 變 更 日記 。當 您 完 成 編 輯 “ <strong>ISaGRAF</strong> Diary” 後 , 按 下 “Save” 鍵 , 即 可 儲 存 您 所 編 寫 的 程 式 日 記 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-8 <strong>ICP</strong> <strong>DAS</strong>


9.5: 程 式 的 備 份 及 回 存使 用 者 可 使 用 <strong>ISaGRAF</strong> 提 供 的 程 式 備 份 工 具 , 將 專 案 備 份 到 磁 碟 片 上 或 指 定 的 檔 案 路 徑 內 。備 份 <strong>ISaGRAF</strong> 專 案在 “<strong>ISaGRAF</strong> Project Management” 視 窗 , 以 滑 鼠 點 選 [Tools][Archive][Projects], 接 下 來 在[Archiev] 視 窗 內 , 以 滑 鼠 點 選 “Browse” 所 要 備 份 的 目 錄 位 置 , 之 後 再 選 取 “Archive” 視 窗 左方 所 要 備 份 的 專 案 名 稱 , 按 下 “backup” 即 可 備 份 到 前 面 所 選 取 的 目 錄 位 址 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-9 <strong>ICP</strong> <strong>DAS</strong>


回 存 <strong>ISaGRAF</strong> 專 案若 要 從 指 定 的 目 錄 位 置 回 存 專 案 到 <strong>ISaGRAF</strong> 內 則 在 “Archive” 視 窗 的 右 方 , 以 滑 鼠 選 取 所 要回 存 的 案 件 名 稱 , 按 下 “restore” 即 可 。現 在 您 就 可 以 開 啟 , 編 輯 或 下 載 這 個 回 存 的 <strong>ISaGRAF</strong> 檔 案 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-10 <strong>ICP</strong> <strong>DAS</strong>


9.6: 專 案 及 程 式 的 複 製<strong>ISaGRAF</strong> 具 更 複 製 和 更 改 專 案 名 稱 或 程 式 的 功 能 , 這 對 使 用 者 在 維 護 或 複 製 程 式 到 另 一 個 子目 錄 是 非 常 方 便 的 。複 製 <strong>ISaGRAF</strong> 程 式在 “<strong>ISaGRAF</strong> Project Management” 視 窗 , 以 滑 鼠 點 選 所 要 複 製 的 專 案 , 之 後 在 點 選 “CopyProject”, 輸 入 欲 複 製 成 的 案 件 名 稱 後 , 按 下 “OK” 鍵 即 可 。在 上 面 的 圖 示 中 , 我 們 將 “simpleld” 複 製 到 “Scott” 專 案 中 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-11 <strong>ICP</strong> <strong>DAS</strong>


變 更 <strong>ISaGRAF</strong> 專 案 名 稱在 “<strong>ISaGRAF</strong> Project Management” 視 窗 , 以 滑 鼠 點 選 所 要 更 改 名 字 的 專 案 , 接 著 以 滑 鼠 點 選[File][Rename ] 來 開 啟 [rename] 視 窗 , 您 只 要 輸 入 新 的 名 稱 , 按 下 OK 鍵 即 完 成 更 改 專 案 名稱 。之 前 的 “scott” 專 案 已 改 變 名 稱 為 “gonzo”, 而 “simpleld” 專 案 還 是 依 然 沒 更 任 何 更 動 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-12 <strong>ICP</strong> <strong>DAS</strong>


9.7: 為 <strong>ISaGRAF</strong> 專 案 增 加 註 解在 “<strong>ISaGRAF</strong> Project management” 視 窗 中 的 [Edit][Set comment text] 選 項 , 可 以 幫 每 一 個 專案 加 上 註 解 , 讓 您 可 以 一 目 了 然 的 知 道 每 個 專 案 的 作 用 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-13 <strong>ICP</strong> <strong>DAS</strong>


9.8: 設 定 所 要 連 接 的 控 制 器 的 位 址 編 號<strong>ISaGRAF</strong> 可 同 時 連 結 多 台 控 制 器 進 行 程 式 上 , 下 載 或 連 結 偵 錯 , 每 台 被 連 結 的 控 制 器 必 頇 要更 不 同 的 位 址 編 號 (NET-ID), 如 此 <strong>ISaGRAF</strong> 才 能 分 辦 要 和 那 一 台 連 線 。 假 如 只 更 一 台 控 制器 , 其 預 設 的 位 址 編 號 為 1。當 您 按 下 “Link Setup” 時 , 將 會 開 啟 “PC-PLC Link Parameters”, 在 “Target Slave Number” 輸入 你 欲 連 接 的 控 制 器 的 位 址 編 號 。注 意 : 請 參 閱 各 自 的 “ 快 速 上 手 手 冊 ” 來 設 定 控 制 器 的 NET-ID .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-14 <strong>ICP</strong> <strong>DAS</strong>


9.9: 程 式 編 譯 的 最 佳 化 選 項你 可 以 在 <strong>ISaGRAF</strong> 的 專 案 內 , 點 選 [Make][Compiler option] 選 項 , 來 編 譯 (compile) 出 執 行效 率 更 好 的 程 式 碼 , 但 會 付 出 較 長 的 編 譯 時 間 。更 時 可 全 部 選 取 這 些 項 目 , 來 產 生更 更 效 率 , 更 小 size 的 code. 但 若 更使 用 變 數 陣 列 , 不 可 勾 選 第 2 , 第7 , 第 8 與 第 9 個 Optimizer 選 項 .不 然 變 數 陣 列 值 會 發 生 錯 誤 . 此 時建 議 只 勾 選 第 1 個 Run twooptimizer passes 就 好 . ( 請 參 考 第 2.6節 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-15 <strong>ICP</strong> <strong>DAS</strong>


9.10: <strong>ISaGRAF</strong> 的 類 比 轉 換 表通 常 在 讀 取 類 比 I/O 接 點 的 數 值 , 例 如 I-87017 類 比 輸 入 模 組 , 其 傳 回 的 數 值 是 由 -32768 到32767,-32768 可 能 表 示 -10V 而 32767 可 能 表 示 +10V, 如 果 更 一 個 輸 入 值 是 2573, 請 問 你 能馬 上 知 道 它 是 幾 V 嗎 ?<strong>ISaGRAF</strong> 提 供 轉 換 表 的 功 能 , 可 讓 使 用 者 將 電 子 的 數 值 轉 換 成 你 想 要 的 數 值 , 這 兩 者 的 關 系必 需 是 線 性 的 , 其 方 法 為 定 義 一 些 轉 換 點 , 至 少 要 更 兩 點 , 如 此 就 可 決 定 出 所 要 的 轉 換 表 。例 如 轉 換 前 –32768 代 表 -10V,32767 代 表 +10V, 而 轉 換 後 -10000 將 代 表 -10V, 而 10000 將 代表 10V, 如 此 就 比 較 好 理 解 了 , 像 2573 就 馬 上 知 到 為 2573mV=2.573V。注 意 :<strong>ISaGRAF</strong> 控 制 器 在 轉 換 前 只 支 援 –32768 到 32767 之 間 的 數 值 , 而 轉 換 後 只 支 援 -10000 到10000 之 間 的 數 值 , 所 以 您 在 設 定 轉 換 表 時 若 設 超 過 這 些 範 圍 , 其 轉 換 值 可 能 會 出 錯 。單 擊 [<strong>ISaGRAF</strong> Programs][Dictionary], 將 開 啟 “<strong>ISaGRAF</strong> Global Variable” 視 窗 , 選 擇[Tools][Conversion Tables] 即 可 製 作 你 所 想 要 的 轉 換 表 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-16 <strong>ICP</strong> <strong>DAS</strong>


進 入 “Conbersion Tables” 後 , 選 取 新 增 表 格 並 取 一 個 名 字 。定 義 出 轉 換 表 , 至 少 要 定 出 2 點 , 每 定 出 1 點 就 按 “store”, 全 部 定 完 後 按 “OK”。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-17 <strong>ICP</strong> <strong>DAS</strong>


之 後 又 會 回 到 “conversion table“ 視 窗 , 按 下 “OK”, 如 此 即 完 成 一 個 轉 換 表 的 建 立 。 接 下來 在 需 要 被 轉 換 的 變 數 內 , 選 取 該 類 比 變 數 所 要 套 用 的 轉 換 表 即 可 。注 意 :只 更 宣 告 為 輸 入 或 輸 出 屬 性 的 整 數 變 數 才 可 以 使 用 轉 換 表 的 功 能 . 若 要 轉 換 內 部 (internal) 屬性 的 變 數 可 使 用 “Bin2Eng” ( 參 閱 附 錄 A.4)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-18 <strong>ICP</strong> <strong>DAS</strong>


9.11: 透 過 Microsoft Excel 引 用 / 匯 出 變 數 宣 告變 數 可 定 義 在 Microsoft Excel 內 , 然 後 引 入 到 <strong>ISaGRAF</strong> , 也 可 從 <strong>ISaGRAF</strong> 匯 出 到 Excel 內 。從 [dictionary][Tools][Export text] 可 將 ISAGRAF 內 所 定 義 的 變 數 資 料 匯 出 存 成 文 字 檔在 這 個 例 子 中 , 我 們 將 要 存 的 資 料 存 成 “int_1.txt” 檔 , 然 後 按 下 “Browse” 選 擇 您 所 要 存 放 的目 錄 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-19 <strong>ICP</strong> <strong>DAS</strong>


您 可 以 在 Excel 內 編 輯 “int_1.txt” 檔 。選 取 [[dictionary][Tools][Import text] 選 項 , 可 將 “.txt” 檔 給 引 進 <strong>ISaGRAF</strong> 程 式 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-20 <strong>ICP</strong> <strong>DAS</strong>


單 擊 “Browser” 來 選 取 適 當 的 檔 案 。結 果 如 下 所 示 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-21 <strong>ICP</strong> <strong>DAS</strong>


9.12: 執 行 期 間 顯 示 選 定 的 變 數 資 料更 時 想 在 <strong>ISaGRAF</strong> 與 控 制 器 連 線 時 可 以 顯 示 某 些 特 定 的 變 數 資 料 以 利 觀 看 , 可 以 參 照 以 下 的步 驟 建 立 “Spy List”.首 先 點 選 “Simulate”, 之 後 執 行 “Tools – Spy list”.接 著 點 選 “Insert variable”, 選 取 想 要 觀 看 的 變 數 名 稱 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-22 <strong>ICP</strong> <strong>DAS</strong>


當 想 要 觀 看 的 變 數 都 選 完 後 , 記 得 點 選 “Save list” 再 離 開 .接 著 關 閉 ”Debugger” 視 窗 .點 選 “Debug – Workspace”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-23 <strong>ICP</strong> <strong>DAS</strong>


將 List 搬 到 右 方 .如 此 當 下 一 次 與 控 制 器 連 線 時 , 該 變 數 的 List 就 會 自 動 顯 示 出 來 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-24 <strong>ICP</strong> <strong>DAS</strong>


9.13: 如 何 在 <strong>ISaGRAF</strong> 內 搜 尋 某 一 變 數 名 稱 ?請 點 選 “Cross references” , 之 後 輸 入 要 搜 尋 的 變 數 名 稱 . 搜 尋 到 的 結 果 會 出 現 在 右 側 , 用 滑 鼠點 選 它 就 會 跳 到 該 所 在 位 置 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 9-25 <strong>ICP</strong> <strong>DAS</strong>


10.1: 可 保 存 變 數第 10 章 可 保 存 變 數 和 資 料 儲 存注 意 : 假 如 在 PAC 的 Battery backup Memory 內 ( 或 S-256/512 & X607/608 內 ) 並 未 儲 存 浮 點數 ( 實 數 ) , 但 卻 要 從 其 內 讀 取 浮 點 數 ( 實 數 ) , RETAIN_F , RETAIN_X 與 RETAIN_A 可 能 會發 生 ”Controller Fault” . 請 參 考 第 10.6 節 – “ 偵 測 Controller Fault”I-8417/8817/8437/8837 , I-7188EG/XG ,W-8xx7, iP-8xx7, WP-8xx7, VP-2xW7, XP-8xx7-CE6,VP-2117, µPAC-7186EG, 從 以 下 驅 動 程 式 版 本 起 , 支 持 新 的 可 保 存 變 數 方 式 .I-7188EG + X607 / X608: 2.05 版 起 , 建 議 採 用 2.17 版 或 更 高 的 版 本I-7188XG + X607 / X608: 2.04 版 起 , 建 議 採 用 2.15 版 或 更 高 的 版 本I-8xx7+ S256 / S512 : 3.07 版 起 , 建 議 採 用 3.19 版 或 更 高 的 版 本iP-8xx7 ( 內 建 battery backup SRAM) : 產 品 Relase 起WP-8xx7 ( 內 建 battery backup SRAM) :產 品 Relase 起XP-8xx7-CE6 ( 內 建 battery backup SRAM) : 產 品 Relase 起VP-2xW7 ( 內 建 battery backup SRAM) :產 品 Relase 起µPAC-7186EG + X607 / X608 :產 品 Relase 起VP-2117 ( 內 建 battery backup SRAM) : 產 品 Relase 起W-8347/8747/8337/8737 + S256 / S512 : 3.18 版 起 , 建 議 採 用 3.36 版 或 更 高 的 版 本要 使 用 以 下 的 Wincon 新 底 板 (back-plane)W-8346/8746/8336/8736 + S256 / S512 : 3.18 版 起 , 建 議 採 用 3.36 版 或 更 高 的 版 本要 使 用 以 下 的 Wincon 新 底 板WB-831 (3 槽 ): Rev 2.6 版 起 (2006 年 起 出 貨 用 的 底 板 )WB-871 (7 槽 ): Rev 2.8 版 起 (2006 年 起 出 貨 用 的 底 板 )iP-8xx7 , VP-2117, WP-8xx7 , VP-25W7/23W7 與 XP-8xx7-CE6 出 貨 時 已 經 內 建 512K byteBattery SRAM ( 它 們 不 需 要 添 購 S-256/512) .假 如 更 插 電 池 供 應 的 SRAM 於 控 制 器 的 背 板 上 (I-8xx7: S256/S512, I-7188EG/XG: X607/X608,Wincon-8xx7: S256/S512 ), 最 大 的 可 保 存 變 數 數 量 為 如 下 所 示 . 新 的 可 保 存 變 數 方 式 是 由 以 下的 <strong>ISaGRAF</strong> 函 式 來 達 成 的控 制 器 1 : µPAC-7186EG/I-7188EG/XG + X607/608, I-8xx7+S256/512, iP-8xx7, VP-2117控 制 器 2 : W-8xx7 + S256/512 ( 使 用 Wincon 2006 年 起 出 貨 用 的 新 底 板 ) 與WP-8xx7, VP-2xW7, XP-8xx7-CE6Retain_B : 設 定 Boolean 可 保 存 變 數 控 制 器 1: 最 多 256 個 變 數 , 控 制 器 2: 最 多 1024 個Retain_N : 設 定 Integer 可 保 存 變 數 控 制 器 1: 最 多 1024 個 變 數 , 控 制 器 2: 最 多 4096 個Retain_F : 設 定 Real 可 保 存 變 數 控 制 器 1: 最 多 1024 個 變 數 , 控 制 器 2: 最 多 4096 個Retain_T : 設 定 Timer 可 保 存 變 數 . 控 制 器 1: 最 多 256 個 變 數 , 控 制 器 2: 最 多 1024 個Retain_X : 使 用 變 數 的 Network address 來 設 定 可 保 存 變 數Retain_A : 使 用 變 數 的 Network address 來 設 定 可 保 存 變 數 陣 列 ( 請 參 考 第 2.6.2 節 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-1 <strong>ICP</strong> <strong>DAS</strong>


以 下 的 ST 程 序 可 以 讀 出 iP-8xx7, VP-25W7/23W7, WP-8xx7, XP-8xx7-CE6 底 板 的 2 顆 電 池 的狀 態(* 請 宣 告 battery_state1 與 battery_state2 為 internal integer *)battery_state1 := R_MB_ADR(1 , 9992) ; (* 電 池 1 的 狀 態 , 回 傳 0: 電 量 不 足 , 99: 電 量 充 足 *)battery_state2 := R_MB_ADR(1 , 9993) ; (* 電 池 2 的 狀 態 , 回 傳 0: 電 量 不 足 , 99: 電 量 充 足 *)新 的 可 保 存 變 數 的 優 點 :1. 值 會 一 直 保 存 , 不 論 是 ” 控 制 器 斷 電 ” 或 “ 重 新 compile” 與 ” 重 新 下 載 <strong>ISaGRAF</strong> 程 式 ”, 除非 是 S-256/512, X607/608 上 面 的 電 池 沒 電 了 . ( 舊 方 式 碰 到 ” 重 新 下 載 <strong>ISaGRAF</strong> 程 式 ”, 值會 清 為 0)2. 新 的 可 保 存 變 數 可 保 存 的 變 數 量 較 舊 方 式 多 .請 參 考 下 一 頁 的 範 例 程 式 來 實 作 新 的 可 保 存 變 數 .注 意 :1. 要 使 用 新 的 可 保 存 變 數 , 請 不 要 選 取 字 典 視 窗 內 的 變 數 宣 告 內 的 “ 可 保 留 ” (Retain) 選 項 .2. 如 果 是 使 用 µPAC-7186EG, I-7188EG/XG, 要 先 在 IO 連 結 視 窗 內 連 上 “X607_608” .要 使 用 新 的 可 保 存 變 數 , 請 不要 選 取 字 典 視 窗 內 的 變 數 宣告 內 的 “ 可 保 留 ” (Retain) 選 項如 果 是 使 用 I-7188EG/XG, 要 先 在 IO連 結 視 窗 內 連 上 “X607_608”, 並 輸入 正 確 的 值607: X607608: X608<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-2 <strong>ICP</strong> <strong>DAS</strong>


程 式 範 例 : (* 使 用 變 數 名 稱 來 設 定 為 可 保 存 變 數 *)(* 設 定 變 數 為 Reatin variable 的 動 作 , 一 定 要 在 第 一 個 PLC scan 內 只 做 一 次 , 如 下 方 的code *)(* To_Retain 宣 告 為 Boolean, Internal, 初 值 設 為 True *)(* Tmp 宣 告 為 Boolean, Internal *)(*Check1 宣 告 為 Integer, Internal, 不 可 勾 選 “ 可 保 留 ” (Retain) , 此 變 數 用 來 當 作 一 個 標 記 .比 如 可 以 定 義 若 值 為 1357246 , 表 示 所 更 該 指 定 初 值 的 Retain Variable , 初 值 都 已 經 設 定 過了 . 那 就 可 讓 本 應 用 的 控 制 程 式 開 始 動 作 ( 因 為 該 給 的 值 已 經 設 好 了 ).但 若 Check1 的 值 不 是 1357246, 表 示 所 更 該 指 定 初 值 的 Retain Variable , 還 更 一 些 沒 設好 初 值 . 那 就 不 能 讓 本 應 用 的 控 制 程 式 動 作 ( 因 為 該 給 的 值 , 還 沒 設 好 , 若 讓 控 制 程 式 動 作 , 會出 錯 , 必 需 要 等 User 把 該 設 的 Retain 值 設 好 後 , 之 候 再 設 Check1 為 1357246, 讓 控 制 程 式 開 始 動作 . 日 後 每 次 重 新 開 機 , 因 為 是 Retaine Variable, 所 以 以 前 設 過 的 值 都 還 在 , 包 含 Check1 也會 是 1357246, 所 以 程 式 開 機 後 就 可 動 作 , 不 需 再 重 新 設 Retain 的 初 值 , 因 為 以 前 已 經 至 少 設過 一 次 了 .) .*)(* B1 , B2 宣 告 為 Boolean, Internal, 不 可 勾 選 “ 可 保 留 ” (Retain) *)(* N1 , N2 宣 告 為 Integer, Internal, 不 可 勾 選 “ 可 保 留 ” (Retain) *)(* F1 , F2 宣 告 為 Real, Internal, 不 可 勾 選 “ 可 保 留 ” (Retain) *)(* T1 , T2 宣 告 為 Timer, Internal, 不 可 勾 選 “ 可 保 留 ” (Retain) *)if To_Retain then (* 當 控 制 器 剛 啟 動 時 , 使 用 變 數 名 稱 來 設 定 可 保 存 變 數 *)end_if ;To_Retain := False ;(* 設 為 False, 如 此 只 更 第 1 個 PLC Scan 會 執 行 到 這 一 段 *)Tmp := Retain_N( Check1 , 1 ) ; (* 此 變 數 用 來 當 作 一 個 標 記 *)Tmp := Retain_B( B1 , 1 ) ; Tmp := Retain_B( B2 , 2 ) ; (* Boolean *)Tmp := Retain_N( N1 , 11 ) ; Tmp := Retain_N( N2 , 12 ) ; (* Integer *)Tmp := Retain_F( F1 , 1 ) ; Tmp := Retain_F( F2 , 2 ) ; (* Real *)Tmp := Retain_T( T1 , 1 ) ; Tmp := Retain_T( T2 , 2 ) ; (* Timer *)(* 以 下 的 程 序 可 以 讀 出 iP-8xx7, VP-25W7/23W7, WP-8xx7, XP-8xx7-CE6 底 板 的 2 顆 電 池 的 狀態 *)(* 請 宣 告 battery_state1 與 battery_state2 為 internal integer *)battery_state1 := R_MB_ADR(1 , 9992) ; (* 電 池 1 的 狀 態 , 回 傳 0: 電 量 不 足 , 99: 電 量 充 足 *)battery_state2 := R_MB_ADR(1 , 9993) ; (* 電 池 2 的 狀 態 , 回 傳 0: 電 量 不 足 , 99: 電 量 充 足 *)(* 如 此 之 後 Check1, B1, B2, N1, N2, F1, F2, T1, T2 的 值 就 會 一 值 被 保 存 下 來 *)接 下 來 不 管 是 寫 Ladder program 或 ST 都 可 判 斷 Check1 這 個 標 記 值 是 否 正 確 , 再 開 始 做控 制 動 作 . ( 用 意 再 於 讓 User 把 該 設 的 Retain 值 , 至 少 設 過 一 次 初 值 , 然 後 才 去 設Check1 為 1357246 , 讓 以 下 的 控 制 程 式 開 始 動 作 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-3 <strong>ICP</strong> <strong>DAS</strong>


之 後 用 Ladder 寫 的 program, 第 一 行 可 加 Check1 的 判 斷 為 :之 後 用 ST 寫 的 program, 第 一 行 可 加 Check1 的 判 斷 為 :(* If Check1 is not equal to 1357246, exit this program to run next program *)if Check1 1357246 thenreturn ;end_if ;...<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-4 <strong>ICP</strong> <strong>DAS</strong>


舊 的 可 保 存 變 數 方 式 :如 果 沒 插 上 電 池 供 應 的 SRAM 於 控 制 器 的 底 板 上 (I-8xx7: S256/S512, I-7188EG/XG:X607/X608, Wincon-8347/8747/8337/8737: S256/S512 ). 若 是 I-8xx7 及 I-7188EG/XG 仍 可 支 持可 保 存 變 數 , 但 數 量 很 少 , 而 Wincon 若 不 插 S-256/512, 則 不 支 持 可 保 存 變 數 . I-8xx7 與I-7188EG/XG 的 主 機 板 內 更 31 個 byte 的 NVRAM, 可 儲 存 6 個 Integer/Real (32-bit) 與 16 個boolean 的 可 保 存 變 數 .要 使 用 舊 可 保 存 變 數 , 只 需 勾 選 “ 可 保 留 ” (Retain) 項 目 就 好 .注 意 :假 如 更 插 電 持 供 應 的 SRAM 於 控 制 器 的 背 板 上 (I-8xx7: S256/S512, I-7188EG/XG: X607/X608,Wincon-8347/8747/8337/8737: S256/S512 ), 請 使 用 先 前 介 紹 的 新 的 可 保 存 變 數 方 式 . 舊 的 可保 存 變 數 方 式 更 2 個 缺 點 : (1) 當 重 新 下 載 一 個 更 修 改 過 的 <strong>ISaGRAF</strong> 程 式 後 , 原 先 已 保 存 的 值會 被 清 為 0. (2) 舊 方 式 的 數 量 較 少 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-5 <strong>ICP</strong> <strong>DAS</strong>


10.2: 備 份 資 料 到 EEPROMEEPROM 是 一 種 可 以 不 必 供 電 即 能 長 久 保 存 資 料 的 記 憶 体 , 它 可 以 無 限 制 的 被 讀 取 , 但 最 多只 能 被 寫 入 1,000,000 次 , 因 此 適 合 用 來 儲 存 設 定 性 的 資 料 。<strong>ISaGRAF</strong> 控 制 器 使 用 下 列 函 數 來 存 取 EEPROM 記 憶 体 。EEP_B_R 讀 取 一 個 布 林 值EEP_BY_R 讀 取 一 個 字 元 (Byte: 0 ~ 255)EEP_WD_R 讀 取 一 個 字 組 (Word: 2 bytes, signed, -32768 ~ +32767)EEP_N_R 讀 取 一 個 整 數 (Integer: 4 bytes, signed)EEP_F_R讀 取 一 個 實 數 (Real: 4 bytes, signed float)( 若 EEP_F_R 讀 取 的 EEPROM 內 位 址 內 存 的 不 是 實 數 , 讀 取 值 會 錯 誤 , 更 時 更 會 產生 Local Fault 編 號 114, 請 參 考 第 10.6 節 )在 您 將 資 料 寫 入 EEPROM 之 前 , 頇 先 確 認 EEPROM 的 保 護 是 否 已 解 除 , 您 可 以 參 考 下 例 函式 。EEP_EN 解 除 EEPROM 記 憶 体 的 保 護 功 能 以 寫 入 資 料EEP_PR 關 閉 EEPROM 記 憶 体 以 防 止 寫 入 資 料EEP_B_W 寫 一 個 布 林 值 到 EEPROM 記 憶 体EEP_BY_W 寫 一 個 字 元 到 EEPROM 記 憶 体 (Byte: 0 ~ 255)EEP_WD_W 寫 一 個 字 組 到 EEPROM 記 憶 体 (Word: 2 bytes, signed, -32768 ~+32767)EEP_N_W 寫 一 個 整 數 到 EEPROM 記 憶 体 (Integer: 4 bytes, signed)EEP_F_R 寫 一 個 實 數 到 EEPROM 記 憶 体 (Real: 4 bytes, signed float)注 意 :1. EEP_F_R , EEP_N_R , EEP_N_W , EEP_F_W 使 用 相 同 的 EEPROM 位 址 , 程 式 不 可 在 同 一位 址 同 時 使 用 成 實 數 與 整 數 , 只 能 挑 一 個 來 使 用 .2. 假 如 在 EEPROM 內 該 位 址 並 未 儲 存 浮 點 數 ( 實 數 ) , 但 卻 要 使 用 EEP_F_R 從 EEPROM 內讀 取 浮 點 數 ( 實 數 ) 可 能 會 發 生 ”Controller Fault 編 號 114” . 請 參 考 第 10.6 節 – “ 偵 測Controller Fault”在 <strong>ISaGRAF</strong> PAC 內 , 字 元 (byte), 字 組 (Word), 整 數 (Integer) 與 實 數 (Real) 均 存 放 在EEPROM 的 相 同 記 憶 區 塊 中 , 在 您 使 用 寫 入 函 式 時 請 小 心 配 置 這 些 變 數 的 位 址 。 不 同 PAC機 型 可 以 使 用 的 EEPROM 記 憶 体 大 小 不 一 樣 , 以 I-8xx7, I-7188EG/XG 為 例 只 更 1,512 個 字元 , 位 址 編 號 從 1 到 1512, 字 元 的 位 址 分 布 從 1 到 1512, 字 組 則 從 1 到 756, 而 整 數 的 位 址分 布 則 從 1 到 378。 下 面 的 位 址 編 號 將 使 用 相 同 的 記 憶 体 位 址 。I-8xx7, I-7188EG/XG :Byte 4n-3, 4n-2, 4n-1, 4n (* n = 1, 2, …378 *)Word2n-1, 2nInteger , Real n<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-6 <strong>ICP</strong> <strong>DAS</strong>


iP-8xx7, µPAC-7186EG, VP-2117, Wincon-8xx7 :Byte 4n-3, 4n-2, 4n-1, 4n (* n = 1, 2, …3568 *)Word2n-1, 2nInteger , Real nWP-8xx7, VP-25W7, VP-23W7, XP-8xx7-CE6 :Byte 4n-3, 4n-2, 4n-1, 4n (* n = 1, 2, …1536 *)Word2n-1, 2nInteger , Real n當 寫 入 EEPROM 次 數 超 過 100,000 次 時 , 將 會 折 損 EEPROM。 在 下 面 的 程 式 中 ,EEPROM 每一 個 PLC Scan 週 期 就 被 寫 入 一 次 , 這 是 很 危 險 的 。(* ST 程 式 , 宣 告 Val 為 整 數 變 數 , 宣 告 TEMP 為 布 林 變 數 *)TEMP := eep_n_w(1, Val) ; (* 危 險 *)若 Val 變 數 沒 更 經 常 改 變 , 寫 成 下 面 的 程 式 就 比 較 不 會 發 生 問 題 。(* ST 程 式 , 宣 告 Val, Old_Val 為 整 數 變 數 , 宣 告 TEMP 為 布 林 變 數 *)IF Val Old_Val THENTEMP := eep_n_w(1 , Val) ;Old_Val := Val ;END_IF ;對 EEPROM 作 讀 寫 動 作 時 , 將 會 消 耗 很 多 控 制 器 的 CPU 時 間 。下 面 為 每 個 函 式 被 呼 叫 時 所 耗 用 的 大 約 時 間 。EEP_EN ~ 0.08 ms EEP_PR ~ 0.08 msEEP_B_R ~ 0.8 ms EEP_B_W ~ 6 msEEP_BY_R ~ 0.8 ms EEP_BY_W ~ 6 msEEP_WD_R ~ 1.5 ms EEP_WD_W ~ 12 msEEP_N_R ~ 2.9 ms EEP_N_W ~ 23 ms當 控 制 器 的 電 源 恢 復 時 , 建 議 只 讀 取 一 次 EEPROM 資 料 , 且 當 資 料 更 變 動 時 再 做 更 新 ,請 參 考 第 11 章 的 “demo_17 ” 範 例 程 式 . 若 資 料 常 常 在 作 更 新 變 動 , 則 不 適 合 儲 存 在 EEPROM內 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-7 <strong>ICP</strong> <strong>DAS</strong>


10.3: 電 池 保 持 式 SRAM注 意 : WP-8xx7, VP-25W7, XP-8xx7-CE6 等 PAC 更 支 持 10.1 節 列 出 的 新 的 可 保 留 變 數 方 法 ,但 不 支 持 本 節 列 出 的 採 用 S_X_X 等 function 來 直 接 讀 / 寫 電 池 保 池 式 SRAM 的 用 法 .假 如 在 S-256/512 & X607/608 內 並 未 儲 存 浮 點 數 ( 實 數 ) , 但 卻 要 從 S-256/512 & X607/608 內讀 取 浮 點 數 ( 實 數 ) 可 能 會 發 生 ”Controller Fault” . 請 參 考 第 10.6 節 – “ 偵 測 Controller Fault”I-8417/8817/8437/8837 可 以 選 購 1 個 S256 或 S512 電 池 保 持 式 SRAM 來 保 存 資 料 , 記 錄 Alarm,及 某 些 訊 息 , 而 I-7188EG/XG 則 需 搭 配 1 個 X607 或 X608. 存 放 於 這 些 電 池 保 持 式 SRAM 的資 料 會 一 直 保 存 , 除 非 它 的 電 池 沒 電 了 . 它 們 的 記 憶 容 量 如 下 , 最 上 方 的 12K byte 是 保 留 給<strong>ISaGRAF</strong> 使 用 的 (W-8337/8737/8336/8736 保 留 64K).I-8417/8817/8437/8837I-7188EG/XGS256 244K bytes (256-12=244) X607 116K bytes (128-12=116)S512 500K bytes (512-12=500) X608 500K bytes (512-12=500)W-8337/8737/8336/8736S256 192K bytes (256-64=192)S512 448K bytes (512-64=448)假 如 控 制 器 更 插 電 池 保 持 式 SRAM, 可 宣 告 的 ” 可 保 留 變 數 ” (Retained Variable) 可 增 加 如 下 ( 請參 考 10.1 節 ).I-7188EG/XG+X607/608 and I-8417/8817/8437/8837+S256/512新 的 可 保 存 變 數 方 式 舊 的 可 保 存 變 數 方 式Boolean 256 256Integer 1024 256Real 1024(Integer + Real)Timer 256 32W-8337/8737/8336/8736+S256/512 使 用 Wincon 新 底 板 (10.1 節 )新 的 可 保 存 變 數 方 式 舊 的 可 保 存 變 數 方 式Boolean 1024 1024Integer 4096 4096Real 4096(Integer + Real)Timer 1024 1024<strong>ICP</strong> <strong>DAS</strong> 提 供 1 個 工 具 程 式 “<strong>ICP</strong><strong>DAS</strong> UDloader” , 可 安 裝 在 PC 上 從 工 控 器 的 SRAM 內 上載 ( 抓 取 ) 資 料 , 或 下 載 ( 存 入 ) 資 料 到 SRAM 內 . 請 由 <strong>ICP</strong> <strong>DAS</strong> „ 光 碟 內 的CD-ROM:\napdos\isagraf\some_utility\ 路 徑 複 製 “UDloader.exe” 到 你 的 PC 內 .I-8417/8817/8437/8837 從 驅 動 程 式 2.25 版 ( 建 議 採 用 3.19 版 或 更 高 的 版 本 ) 起 支 援S256/S512, 而 7188EG 從 1.18 版 起 ( 建 議 採 用 2.17 版 或 更 高 的 版 本 ) 支 援 X607/X608,7188XG 則 由 1.16 版 起 ( 建 議 採 用 2.15 版 或 更 高 的 版 本 ) 支 援 X607/X608.W-8337/8737/8336/8736 從 3.18 版 起 ( 建 議 採 用 3.36 版 或 更 高 的 版 本 ) 支 持 S256/S512 ( 請參 考 10.1 節 ), 如 果 你 的 控 制 器 內 的 是 較 舊 的 版 本 , 請 更 新 到 最 新 的 版 本 . 驅 動 程 式 可 從http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 下 載<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-8 <strong>ICP</strong> <strong>DAS</strong>


10.3.1: 存 取 SRAM電 池 保 持 式 SRAM 可 存 取 boolean, byte, word, integer, real & message 等 資 料 . 格 式 如 下 .( 請 參 考 第 11.3.7 節 使 用 S-256/512 與 UDloader 的 範 例 程 式 )Boolean: True=1, False=0 1 byteByte: 0 ~ 255 1 byteWord: -32768 ~ 32767 2 bytesInteger: signed 32-bit 4 bytesReal: float 4 bytesMessage: string ( 長 度


3. 如 果 (Head, Tail) = (5001,5000), 表 示 目 前 可 取 得 資 料 從 Byte 編 號 5001 到 20000, 緊接 著 再 由 1 到 5000. 此 檔 目 前 含 更 20000 個 byte.4. 如 果 (Head, Tail) = (5000,5000), 表 示 此 檔 目 前 無 資 料 .5. 如 果 (Head, Tail) = (-1,-1), 表 示 此 檔 目 前 無 資 料 .要 從 SRAM 內 上 載 資 料 出 來 , 請 先 確 定 “<strong>ICP</strong><strong>DAS</strong> UDloader” 是 否 已 安 裝 .在 PC 上 執 行 “UDloader.exe”, 之 後 點 選 “Link Setup” 來 設 定 適 當 的 通 訊 參 數 , 之 後 點 選“Upload 1” 來 上 載 編 號 為 1 的 檔 案 .範 例 :請 下 載 demo_41 程 式 到 I-8417/8817/8437/8837 內 . 之 後 按 壓 工 控 器 面 板 上 按 扭 1, 2, 3 或 4 數次 數 次 . 之 後 執 行 Udloader.exe 上 載 SRAM 檔 案 .檔 案 配 置 區點 選 此 處 來開 始 上 載檔 名 與 路 徑(PC).目 前 可 取 得 資 料 區點 選 這 理 來 設 定 適 當 的 通 訊參 數<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-10 <strong>ICP</strong> <strong>DAS</strong>


10.3.3: 下 載 資 料 到 SRAM 內下 列 函 式 可 用 來 處 理 資 料 下 載 到 SRAM 內 ( 參 閱 附 錄 A 及 demo_44).S_DL_EN, S_DL_DIS, S_DL_RST, S_DL_STS請 使 用 S_DL_EN 來 允 許 PC 下 載 資 料 到 SRAM 內 .控 制 器 能 夠 接 受 的 下 載 資 料 為 Binary 格 式 , 如 下Byte: 0 ~ 2551 byteWord: -32768 ~ +32767 2 byte [low bye] [high byte]Integer: 32-bit, signed integer 4 byte [lowest] [2nd] [3rd] [highest]Real: 32-bit float4 byte [lowest] [2nd] [3rd] [highest]String: 最 長 255 byte要 使 用 “UDloader.exe” 下 載 資 料 到 SRAM, 必 需 將 資 料 編 成 1 個 Text 檔 . 資 料 需 使 用 以 下 格式 輸 入 .第 1 行 為 1 個 數 字 , 表 示 要 下 載 到 SRAM 的 那 個 Byte 編 號 起 . 合 法 的 編 號 為S256: 1 ~ 249,856 S512: 1 ~ 512000X607: 1 ~ 118,784 X608: 1 ~ 512000第 2 行 起 為 資 料A. 字 串 (String)字 串 需 開 始 及 結 束 於 „ 符 號 . 例 , „Abcd123‟ (7 個 byte). $NN (NN 為 16 進 位 數 字 ,且 不 為 00) 可 用 來 表 示 ASCII 符 號 表 的 字 元 . 例 , „ABC$0D‟ 包 含 4 個 byte, 第 4 個 byte為 字 元 .B. ByteByte 需 開 始 於 ( 符 號 及 結 束 於 ) 符 號 . 例 , (0) , (123), (255). 值 需 介 於 (0) 到(255).C. WordWord 需 開 始 於 [ 符 號 及 結 束 於 ] 符 號 . 例 , [-100] , [20000], [32767]. 值 需 介 於[-32768] 到 [32767].D. IntegerInteger 需 開 始 於 { 符 號 及 結 束 於 } 符 號 . 例 , {-1234567} , {200000}. 值 需 介 於{-2147483648} 到 {2147483647}.E. RealReal 需 開 始 於 < 符 號 及 結 束 於 > 符 號 . 例 , , , 3. 同 一 行 的 每 個 資 料 間 , 需 使 用 空 格 或 逗 號 , 或 等 字 元 來 區隔例 ,201 下 載 到 SRAM 內 Byte 編 號 201 開 始 的 位 址„Hello‟ (10) (20) (30) (40) [-10000] {70000} „End‟ 資 料 共 18 個byte<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-11 <strong>ICP</strong> <strong>DAS</strong>


1 下 載 到 SRAM 內 Byte 編 號 1 開 始 的 位 址(23) 資 料 共 57 個 byte{-1},{2},{-3},{4},{-5},{6} {-7} {8} {-9} {10} 逗 號 , 空 白 , 及 都 可 為 間隔 字 元 , 範 例 : 請 下 載 demo_44 程 式 到 I-8417/8817/8437/8837 內 . 然 後 在 PC 編 輯 1 個 Text 檔 , 如 下 .1{1000} {250} {100} „sTART‟{1000} 表 示 L1 的 閃 爍 週 期 為 1000 ms.{250} 表 示 L2 的 閃 爍 週 期 為 250 ms.{100} 表 示 L3 的 閃 爍 週 期 為 100 ms. .之 後 執 行 “UDloader.exe” 並 下 載 此 Text 檔 . 你 會 看 到 I-8xx7 控 制 器 面 板 上 的 LCD 更 些 動 作 .點 選 “Link Setup” 來 設 定 適 當 的通 訊 參 數點 選 “Set Load File” 來 選 擇 要 操 作的 Text 檔點 選 這 理 來 進 行 下 載<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-12 <strong>ICP</strong> <strong>DAS</strong>


10.3.4: 電 池 保 持 式 SRAM 的 函 式 說 明詳 細 的 參 數 說 明 請 參 閱 附 錄 A.S_FL_INI 設 定 電 池 保 持 式 SRAM 檔 案 的 檔 案 配 置 區S_FL_AVL 設 定 電 池 保 持 式 SRAM 檔 案 的 目 前 可 取 得 資 料 的 所 在 位 置S_FL_STS 取 得 電 池 保 持 式 SRAM 檔 案 的 狀 態 , PC 上 載 資 料 的 結 尾 byte 編 號S_FL_RST 重 置 電 池 保 持 式 SRAM 檔 案 狀 態 為 "PC 未 上 載 資 料 過 "S_B_R: 從 電 池 保 持 式 SRAM 讀 出 1 個 Boolean 值S_BY_R: 從 電 池 保 持 式 SRAM 讀 出 1 個 Byte 值 (0~255)S_WD_R: 從 電 池 保 持 式 SRAM 讀 出 1 個 Word 值 (-32768 ~ +32767)S_N_R: 從 電 池 保 持 式 SRAM 讀 出 1 個 Integer 值 (32 bit, signed)S_R_R: 從 電 池 保 持 式 SRAM 讀 出 1 個 Real 值 (32 bit, float)( 若 電 池 保 持 式 SRAM 相 對 位 置 內 存 的 不 是 Real 值 , 卻 使 用 S_R_R 去 讀 取 , 讀 取 值 會 不 正 確 ,更 時 更 會 產 生 Local Fault 編 號 102 號 , 請 參 閱 第 10.6 節 )S_M_R:從 電 池 保 持 式 SRAM 讀 出 1 個 字 串S_B_W: 寫 入 Boolean 值 到 電 池 保 持 式 SRAMS_BY_W: 寫 入 Byte 值 到 電 池 保 持 式 SRAM (0 ~ 255)S_WD_W: 寫 入 Word 值 到 電 池 保 持 式 SRAM (-32768 ~ +32767)S_N_W: 寫 入 Integer 值 到 電 池 保 持 式 SRAM (32 bit, signed)S_R_W: 寫 入 Real 值 到 電 池 保 持 式 SRAM (32 bit, float)S_M_W: 寫 入 字 串 到 電 池 保 持 式 SRAMS_DL_EN 開 啟 下 載 的 授 權 , 如 此 PC 可 以 下 載 資 料 到 電 池 保 持 式 SRAM 內S_DL_DIS 關 閉 下 載 的 授 權 , 如 此 PC 無 法 下 載 資 料 到 電 池 保 持 式 SRAM 內S_DL_STS 取 得 PC 對 電 池 保 持 式 SRAM 的 下 載 狀 態S_DL_RST 重 置 電 池 保 持 式 SRAM 下 載 狀 態 為 “-1: 無 動 作 ”S_MV在 電 池 保 持 式 SRAM 內 複 製 資 料10.4: 使 用 I-8073 來 儲 存 資 料<strong>ISaGRAF</strong> PAC 不 支 持 I-8073 與 I-8072.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-13 <strong>ICP</strong> <strong>DAS</strong>


10.5: 檔 案 存 取注 意 : 1. 假 如 在 File 內 的 相 對 位 置 並 未 儲 存 浮 點 數 ( 實 數 ) , 但 卻 要 從 File 內 對 該 位 置 使 用F_REAF_F 來 讀 取 浮 點 數 ( 實 數 ) 可 能 會 發 生 ”Controller Fault 編 號 117” . 請 參 考 第 10.6 節的 說 明 .2. WP-8xx7, VP-25W7/23W7, XP-8xx7-CE6 支 持 檔 案 存 / 取 功 能 , 而 I-8xx7, I-7188EG/XG,VP-2117, 7186EG, iP-8xx7 則 沒 更 .3. 若 檔 案 位 置 在 „\System_Disk\‟ 或 „\Micro_SD‟ 等 儲 存 裝 置 內 ( 例 如 \Micro_SD\data1.txt),將 PAC 關 機 後 檔 案 仍 然 存 在 , 但 在 這 2 個 路 徑 內 Read / Write 檔 案 速 度 很 慢 .4. 若 檔 案 位 置 是 屬 於 RAM 內 ( 例 如 \Temp\data2.txt), 則 會 儲 存 在 RAM 內 , PAC 關 機 後 檔 案就 消 失 , 但 優 點 是 RAM 檔 案 的 Read / Write 速 度 很 快 („\System_Disk\‟ 或 „\Micro_SD‟ 等儲 存 裝 置 的 Read / Write 很 慢 )WP-8xx7, XP-8xx7-CE6, VP-25W7, VP-23W7 支 持 以 下 的 <strong>ISaGRAF</strong> 標 準 函 式F_ROPEN 以 Binary 格 式 開 啟 已 經 存 在 的 檔 案 以 供 讀 取 .F_WOPEN 以 Binary 格 式 開 啟 已 經 存 在 的 檔 案 以 供 讀 取 & 寫 入 .F_CLOSE 關 閉 已 經 開 啟 的 檔 案F_EOF 測 詴 是 否 檔 案 指 標 已 達 檔 案 結 尾FA_READ 從 檔 案 內 讀 出 1 個 binary 長 整 數 (4 bytes, signed).FA_WRITE 寫 1 個 binary 長 整 數 (4 bytes, signed) 到 檔 案 內 .FM_READ 從 檔 案 內 讀 出 1 個 字 串 .FM_WRITE 寫 1 個 字 串 到 檔 案 內 , 會 附 加 符 號 於 字 串 後 方WP-8xx7, XP-8xx7-CE6, VP-25W7, VP-23W7 支 持 以 下 <strong>ICP</strong> <strong>DAS</strong> 提 供 的 函 式F_APPEND 附 加 一 個 檔 案 於 另 一 個 檔 案 的 尾 端 .F_COPY 覆 製 1 個 檔 案 .F_CREAT 建 立 1 個 新 的 檔 案 .F_DELETE 刪 除 1 個 檔 案 .F_DIR 建 立 1 個 新 資 料 夾 ( 目 錄 ).F_END 移 動 檔 案 指 標 到 檔 案 的 尾 端 .F_SEEK 移 動 檔 案 指 標 到 某 個 位 置F_READ_B 從 檔 案 內 讀 出 1 個 binary 字 元 (0 - 255) (1 byte, unsigned).F_WRIT_B 寫 1 個 binary 字 元 (0 -255) 到 檔 案 內 (1 byte, unsigned).F_READ_W 從 檔 案 內 讀 出 1 個 binary 字 組 (-32768 to +32767) (2 byte, signed) .F_WRIT_W 寫 1 個 binary 字 組 (-32768 to +32767) 到 檔 案 內 (2 byte, signed).F_READ_F 從 檔 案 內 讀 出 1 個 binary 實 數 ( 例 如 123.45, -2.15E-03, …) (4 byte).F_WRIT_F 寫 1 個 binary 實 數 到 檔 案 內 (4 byte) .F_WRIT_S 寫 1 個 字 串 到 檔 案 內 , 不 附 加 符 號 於 字 串 後 方 .F_EXIST 偵 測 一 個 檔 案 或 資 料 夾 ( 目 錄 ) 是 否 存 在 .第 11.3.6 節 或 以 下 路 徑 可 找 到 對 於 檔 案 存 取 的 範 例 程 式WP-8xx7 CD-ROM: \napdos\isagraf\wp-8xx7\demo\ “wpdmo_54.pia” , 55, 56, 51, 50, 1 或 2 或ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/ 內<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-14 <strong>ICP</strong> <strong>DAS</strong>


10.5.1: 範 例 Wpdmo_51: 從 檔 案 內 讀 取 10 個 實 數 值 , 共 10 行 , 每 行 1 個 實 數本 範 例 程 式 為 Wpdmo_51.pia 放 於WP-8xx7 CD-ROM: \napdos\isagraf\wp-8xx7\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/若 您 PC 上 裝 的 <strong>ISaGRAF</strong> 找 不 到 Msg_F , Msg_N , ARY_F_R, AFY_F_W 等 函 式 , 請 訪 問http://www.icpdas.com/products/PAC/i-8000/isagraf.htm > Driver 來 下 載 “<strong>ICP</strong> <strong>DAS</strong> utilities For<strong>ISaGRAF</strong>” , 解 壓 縮 後 , 執 行 其 內 的 setup.exe 來 安 裝 新 的 函 式 進 去 <strong>ISaGRAF</strong> 內本 Wpdmo_51 範 例 程 式 一 開 機 或 將 “RE_LOAD” 變 數 再 設 為 TRUE 時 , 會 再 去 讀\System_Disk\data51.txt 來 更 新 10 個 REAL 變 數 之 值 .( 在 System_Disk 卡 內 操 作 檔 案 很 花 CPU 時 間 , 讀 / 寫 完 後 請 將 檔 案 Close, 並 且 避 免 每 個PLC Scan 都 在 Read / Write 檔 案 , 不 然 PLC Scan Time 會 變 很 大 )要 使 這 個 範 例 仍 夠 正 確 運 作 , 請 在 PC 用 NotePad ( 記 事 本 ) 編 一 個 “data51.txt” 文 字 檔 , 共10 行 , 每 行 更 1 個 實 數 值 , 然 後 用 ftp 傳 到 WP-8xx7 的 \System_Disk\ 路 徑 內 .“data51.txt” 文 字 檔 內 容 可 如 下 :2.345999.03-1.01456.7892456.775.9E-1232.345.133.3變 數 宣 告 :Name Type Attribute DescriptionRE_LOAD Bool Internal 設 為 True 會 去 讀 File 一 次 , 宣 告 初 值 為 TRUETMP Bool Internal 暫 時 使 用 的 Boolean 變 數File_name1 Message Internal 長 度 64, 初 值 為 \System_Disk \data51.txtMsg1 Message Internal 長 度 128, 會 顯 示 File 處 理 狀 態str1 Message Internal 長 度 255, 用 來 儲 存 讀 到 File 內 的 一 行 字 串F_VAL[0..9] REAL Internal 為 變 數 陣 列 , Dim 設 為 10. 讀 到 的 10 個 REAL 值TMP_F REAL Internal 暫 時 使 用 的 REAL 變 數File1 Integer Internal File IDii Integer Internal 給 for 迴 圈 使 用 的 index<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-15 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 :if RE_LOAD then (* 若 將 RE_LOAD 設 為 TRUE , 會 去 讀 File 一 次 *)RE_LOAD := FALSE ;File1 := f_wopen( File_name1 ) ; (* 開 啟 File 為 可 讀 / 可 寫 模 式 *)if File1 = 0 then (* 若 回 傳 0, 表 示 開 啟 File 失 敗 *)Msg1 := 'Can not Open file ' + File_name1 ;return ; (* 無 法 開 啟 該 File, 用 Return 離 開 本 ST 程 式 *)end_if ;for ii := 0 to 9 do (* 共 要 讀 10 行 *)if f_eof(File1) = TRUE then (* 偵 測 是 否 抵 達 File 的 尾 端 *)Msg1 := 'Data number is not enough in ' + File_name1 ;Exit ; (* 離 開 for 迴 圈 *)end_if ;str1 := fm_read(File1) ; (* 讀 取 File 內 的 一 行 字 串 *)TMP_F := str_real(str1) ; (* 將 字 串 轉 成 實 數 *)if TMP_F = 1.23E-20 then (* 若 傳 回 1.23E-20 表 示 格 式 錯 誤 *)Msg1 := 'The ' + Msg(ii+1) + 'th Data format is not correct !' ;exit ; (* 離 開 for 迴 圈 *)end_if ;F_VAL[ii] := TMP_F ; (* 前 面 更 轉 換 成 功 , 值 存 入 F_VAL[0..9] 內 *)end_for ;TMP := f_close(File1) ; (* File 只 要 成 功 開 啟 過 , 處 理 完 就 需 close *)If ii=10 then (* 10 行 資 料 都 讀 到 了 *)Msg1 := 'Read ' + File_name1 + ' Ok ' ;end_if ;end_if ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-16 <strong>ICP</strong> <strong>DAS</strong>


10.5.2: 範 例 WPdmo_54: 從 檔 案 內 讀 取 20 個 實 數 值 , 共 4 行 , 每 行 5 個 實 數本 範 例 程 式 為 Wpdmo_54.pia 放 於WP-8xx7 CD-ROM: \napdos\isagraf\wp-8xx7\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/若 您 PC 上 裝 的 <strong>ISaGRAF</strong> 找 不 到 Msg_F , Msg_N , ARY_F_R, AFY_F_W 等 函 式 , 請 訪 問http://www.icpdas.com/products/PAC/i-8000/isagraf.htm > Driver 來 下 載 “<strong>ICP</strong> <strong>DAS</strong> utilities For<strong>ISaGRAF</strong>” , 解 壓 縮 後 , 執 行 其 內 的 setup.exe 來 安 裝 新 的 函 式 進 去 <strong>ISaGRAF</strong> 內本 Wpdmo_54 範 例 程 式 一 開 機 或 將 “RE_LOAD” 變 數 再 設 為 TRUE 時 , 會 再 去 讀\System_Disk\data54.txt 來 更 新 20 個 REAL 變 數 之 值 .( 在 System_Disk 卡 內 操 作 檔 案 很 花 CPU 時 間 , 讀 / 寫 完 後 請 將 檔 案 Close, 並 且 避 免 每 個PLC Scan 都 在 Read / Write 檔 案 , 不 然 PLC Scan Time 會 變 很 大 )要 使 這 個 範 例 仍 夠 正 確 運 作 , 請 在 PC 用 NotePad ( 記 事 本 ) 編 一 個 “data54.txt” 文 字 檔 , 共 4行 , 每 行 更 5 個 實 數 值 , 然 後 用 ftp 傳 到 WP-8xx7 的 \System_Disk\ 路 徑 內 .“data54.txt” 文 字 檔 內 容 可 如 下 :23 , 65.9 , 0.012 , 5.87 , 88.20.34 , 8.0005 , -2.0E8 , 4.08 , 5.32E-62 , -7 , 6666.8 , 456.07 , 1.015 , 6 , 7 , 8 , 9變 數 宣 告 :Name Type Attribute DescriptionRE_LOAD Bool Internal 設 為 True 會 去 讀 File 一 次 , 宣 告 初 值 為 TRUETMP Bool Internal 暫 時 使 用 的 Boolean 變 數File_name1 Message Internal 長 度 64, 初 值 為 \System_Disk\data54.txtMsg1 Message Internal 長 度 128, 會 顯 示 File 處 理 狀 態str1 Message Internal 長 度 255, 用 來 儲 存 讀 到 File 內 的 一 行 字 串F_VAL[0..19] REAL Internal 為 變 數 陣 列 , Dim 設 為 20. 讀 到 的 20 個 REAL 值NUM1 Integer Internal 接 收 Msg_F( ) 的 回 傳 值 , 若 為 -1 表 示 格 式 錯誤File1 Integer Internal File IDii Integer Internal 給 for 迴 圈 使 用 的 indexjj Integer Internal 給 另 一 個 for 迴 圈 使 用 的 index<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-17 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 :if RE_LOAD then (* 若 將 RE_LOAD 設 為 TRUE , 會 去 讀 File 一 次 *)RE_LOAD := FALSE ;File1 := f_wopen( File_name1 ) ; (* 開 啟 File 為 可 讀 / 可 寫 模 式 *)if File1 = 0 then (* 若 回 傳 0, 表 示 開 啟 File 失 敗 *)Msg1 := 'Can not Open file ' + File_name1 ;return ; (* 無 法 開 啟 該 File, 用 Return 離 開 本 ST 程 式 *)end_if ;for ii := 0 to 3 do (* 共 要 讀 4 行 *)if f_eof(File1) = TRUE then (* 偵 測 是 否 抵 達 File 的 尾 端 *)Msg1 := 'There should be at least 4 rows in ' + File_name1 + ' !!!' ;Exit ; (* 離 開 for 迴 圈 *)end_if ;str1 := fm_read(File1) ; (* 讀 取 File 內 的 一 行 字 串 *)NUM1 := Msg_F(str1 , 1) ; (* 轉 換 該 字 串 為 數 個 REAL 值 , 並 存 入 1 號 Float陣 列 內 *)if NUM1 5 then (* 轉 換 得 到 的 REAL 值 數 量 不 是 5 個 , 缺 資 料 . 若 為 -1表 示 格 式 錯 誤 *)Msg1 := 'The ' + Msg(ii+1) + 'th row data format is not correct or datanumber is not 5 !' ;Exit ; (* 離 開 for 迴 圈 *)end_if ;*)for jj := 0 to 4 do(* 從 1 號 Float 陣 列 1 到 5 位 址 內 取 出 轉 換 後 的 REAL 值 存 入 F_VAL[0..19] 內F_VAL[ 5 * ii + jj] := ARY_F_R( 1 , jj + 1 ) ;end_for ;end_for ;TMP := f_close(File1) ; (* File 只 要 成 功 開 啟 過 , 處 理 完 就 需 close *)If ii = 4 then (* 4 行 資 料 都 讀 到 了 *)Msg1 := 'Read ' + File_name1 + ' Ok ' ;end_if ;end_if ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-18 <strong>ICP</strong> <strong>DAS</strong>


10.5.3: 範 例 Wpdmo_55: 從 檔 案 內 讀 取 20 個 整 數 值 , 共 2 行 , 每 行 10 個 整 數本 範 例 程 式 為 Wpdmo_55.pia 放 於WP-8xx7 CD-ROM: \napdos\isagraf\wp-8xx7\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/若 您 PC 上 裝 的 <strong>ISaGRAF</strong> 找 不 到 Msg_F , Msg_N , ARY_F_R, AFY_F_W 等 函 式 , 請 訪 問http://www.icpdas.com/products/PAC/i-8000/isagraf.htm > Driver 來 下 載 “<strong>ICP</strong> <strong>DAS</strong> utilities For<strong>ISaGRAF</strong>” , 解 壓 縮 後 , 執 行 其 內 的 setup.exe 來 安 裝 新 的 函 式 進 去 <strong>ISaGRAF</strong> 內本 Wpdmo_55 範 例 程 式 一 開 機 或 將 “RE_LOAD” 變 數 再 設 為 TRUE 時 , 會 再 去 讀\System_Disk\data55.txt 來 更 新 20 個 Integer 變 數 之 值 .( 在 System_Disk 卡 內 操 作 檔 案 很 花 CPU 時 間 , 讀 / 寫 完 後 請 將 檔 案 Close, 並 且 避 免 每 個PLC Scan 都 在 Read / Write 檔 案 , 不 然 PLC Scan Time 會 變 很 大 )要 使 這 個 範 例 仍 夠 正 確 運 作 , 請 在 PC 用 NotePad ( 記 事 本 ) 編 一 個 “data55.txt” 文 字 檔 , 共 2行 , 每 行 更 10 個 整 數 值 , 然 後 用 ftp 傳 到 WP-8xx7 的 \System_Disk\ 路 徑 內 .“data55.txt” 文 字 檔 內 容 可 如 下 :-1 , 1 , 2 , 3 , 4 , 5 , -6 , 7 , 8 , 9100001 , 200002 , +300003 , 404 , -505 , 606 , 7007 , 8008 , 9009 , 10變 數 宣 告 :Name Type Attribute DescriptionRE_LOAD Bool Internal 設 為 True 會 去 讀 File 一 次 , 宣 告 初 值 為 TRUETMP Bool Internal 暫 時 使 用 的 Boolean 變 數File_name1 Message Internal 長 度 64, 初 值 為 \ System_Disk \data55.txtMsg1 Message Internal 長 度 128, 會 顯 示 File 處 理 狀 態str1 Message Internal 長 度 255, 用 來 儲 存 讀 到 File 內 的 一 行 字 串N_VAL[0..19] Integer Internal 為 變 數 陣 列 , Dim 設 為 20. 讀 到 的 20 個 Integer 值NUM1 Integer Internal 接 收 Msg_F( ) 的 回 傳 值 , 若 為 -1 表 示 格 式 錯 誤File1 Integer Internal File IDii Integer Internal 給 for 迴 圈 使 用 的 indexjj Integer Internal 給 另 一 個 for 迴 圈 使 用 的 index<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-19 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 :if RE_LOAD then (* 若 將 RE_LOAD 設 為 TRUE , 會 去 讀 File 一 次 *)RE_LOAD := FALSE ;File1 := f_wopen( File_name1 ) ; (* 開 啟 File 為 可 讀 / 可 寫 模 式 *)if File1 = 0 then (* 若 回 傳 0, 表 示 開 啟 File 失 敗 *)Msg1 := 'Can not Open file ' + File_name1 ;return ; (* 無 法 開 啟 該 File, 用 Return 離 開 本 ST 程 式 *)end_if ;for ii := 0 to 1 do (* 共 要 讀 2 行 *)if f_eof(File1) = TRUE then (* 偵 測 是 否 抵 達 File 的 尾 端 *)Msg1 := 'There should be at least 2 rows in ' + File_name1 + ' !!!' ;Exit ; (* 離 開 for 迴 圈 *)end_if ;str1 := fm_read(File1) ; (* 讀 取 File 內 的 一 行 字 串 *)*)NUM1:= Msg_N(str1 , 2) ; (* 轉 換 該 字 串 為 數 個 Integer 值 , 並 存 入 2 號 Integer 陣 列 內if NUM1 10 then (* 轉 換 得 到 的 Integer 數 量 不 是 10 個 , 缺 資 料 . 若 為 -1表 示 格 式 錯 誤 *)Msg1 := 'The ' + Msg(ii+1) + 'th row data format is not correct or data numberis not 10 !' ;Exit ; (* 離 開 for 迴 圈 *)end_if ;for jj := 0 to 9 do(* 從 2 號 Integer 陣 列 1 到 10 位 址 內 取 出 轉 換 後 的 Integer 值 存 入 N_VAL[0..19] 內 *)N_VAL[ 10 * ii + jj] := ARY_N_R( 2 , jj + 1 ) ;end_for ;end_for ;TMP := f_close(File1) ; (* File 只 要 成 功 開 啟 過 , 處 理 完 就 需 close *)If ii = 2 then (* 2 行 資 料 都 讀 到 了 *)Msg1 := 'Read ' + File_name1 + ' Ok ' ;end_if ;end_if ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-20 <strong>ICP</strong> <strong>DAS</strong>


10.5.4: 範 例 Wpdmo_56: 將 1 ~ 255 個 實 數 變 數 用 Flash Memory 來 保 存 最 終 值本 範 例 程 式 為 Wdemo_56.pia 放 於WP-8xx7 CD-ROM: \napdos\isagraf\wp-8xx7\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/若 您 PC 上 裝 的 <strong>ISaGRAF</strong> 找 不 到 Msg_F , Msg_N , ARY_F_R, AFY_F_W 等 函 式 , 請 訪 問http://www.icpdas.com/products/PAC/i-8000/isagraf.htm > Driver 來 下 載 “<strong>ICP</strong> <strong>DAS</strong> utilities For<strong>ISaGRAF</strong>” , 解 壓 縮 後 , 執 行 其 內 的 setup.exe 來 安 裝 新 的 函 式 進 去 <strong>ISaGRAF</strong> 內本 Wpdmo_56 範 例 程 式 一 開 機 會 從 \System_Disk\data56.txt (Flash memory) 內 讀 取 1 ~255 個 實 數 變 數 的 最 終 值 , 若 檔 案 不 存 在 , 則 指 定 每 個 的 初 值 為 0.0.之 後 只 要 任 何 一 個 數 值 更 變 , 就 會 將 全 部 的 1 ~ 255 個 新 的 值 存 入 \System_Disk\data56.txt內 . 檔 案 若 不 存 在 , 本 範 例 程 式 會 自 動 建 一 個 新 的 \System_Disk\data56.txt 檔 案 .( 在 \System_Disk\ (Flash memory) 內 寫 檔 案 很 花 CPU 時 間 , 讀 / 寫 完 後 請 將 檔 案 Close,並 且 避 免 每 個 PLC Scan 都 在 Read / Write 檔 案 , 不 然 PLC Scan Time 會 變 很 大若 值 一 直 常 常 更 改 , 則 不 適 合 用 Flash memory 來 保 存 , 請 參 考 第 10.1 節 改 使 用 “ 新 的 可 保 留變 數 ” 來 快 速 保 存 資 料 )專 案 程 式 架 構 :共 更 5 個 ST 程 式 , 其 中 reaf_f1 , save_f1 , G_data 與 S_data 為 functions重 要 :1. 本 範 例 程 式 可 以 依 照 實 際 應 用 狀 況 來 修 改 常 數 變 數 SIZE1 之 值 為 1 到 255 之 間 的 任一 個 值2. 當 SIZE1 值 更 更 改 時 , F_VAL1[ ] 與 Old_F_VAL1[ ] 的 ”Dim” 欄 位 也 要 改 成 同 一 個 值 , 同時 , “G_data” 與 “S_data” 內 的 程 式 也 需 改 成 符 合 User 需 要 的 .3. 使 用 \System_Disk\ 來 保 存 資 料 更 個 優 點 為 , 這 些 資 料 的 File 可 以 預 先 在 PC 上 編 輯 好 , 再 用ftp 丟 到 WP-8xx7 內 , 本 例 為 \System_Disk\data56.txt . 之 後 將 RE_LOAD 變 數 設 為 TRUE一 次 , 它 就 會 自 動 更 新 到 USER 的 應 用 變 數 內 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-21 <strong>ICP</strong> <strong>DAS</strong>


本 例 , read_f1 , save_f1 , G_data 與 S_data 皆 為 functions, 其 回 傳 值 皆 定 義 為 Boolean 型 態 ,要 宣 告 functions 回 傳 值 的 型 態 , 如 下 ( 第 15 章 更 詳 細 說 明 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-22 <strong>ICP</strong> <strong>DAS</strong>


ead_f1 與 save_f1 內 更 使 用 區 域 變 數 (Local variable):read_f1 程 式 的 區 域 變 數 (Local variable) 如 下 :Name Type Attribute DescriptionTMP2 Bool Internal 暫 時 使 用 的 Boolean 變 數ii2 Integer Internal 給 for 迴 圈 使 用 的 indexjj2 Integer Internal 給 for 迴 圈 使 用 的 indexnum2 Integer Internal 暫 時 使 用 的 Integer 變 數save_f1 程 式 的 區 域 變 數 (Local variable) 如 下 :Name Type Attribute DescriptionTMP2 Bool Internal 暫 時 使 用 的 Boolean 變 數ii2 Integer Internal 給 for 迴 圈 使 用 的 indexjj2 Integer Internal 給 for 迴 圈 使 用 的 indexnum2 Integer Internal 暫 時 使 用 的 Integer 變 數要 宣 告 區 域 變 數 , 先 雙 擊 read_f1 程 式 進 入 , 之 後 進 入 Dictionary 內 , 之 後 點 選 “Localobjects” 開 始 宣 告 區 域 變 數<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-23 <strong>ICP</strong> <strong>DAS</strong>


全 域 變 數(Global variable)Name Type Attribute DescriptionSIZE1 Integer Constant常 數User 要 保 存 的 資 料 數 量 , 可 以 是 1 ~ 255若 改 變 此 值 , 需 一 併 更 改 F_VAL1[ ] 與Old_F_VAL1[ ] 內 宣 告 的 Dim 欄 位 為 相 同 值本 例 設 SIZE1 為 17num_row1 Integer Internal 檔 案 內 資 料 共 幾 行 , 此 值 由 程 式 用 SIZE1 自 動 算 出本 範 例 一 行 可 放 10 個 實 數 資 料Last_num1 Integer Internal 檔 案 內 最 後 一 行 資 料 的 資 料 更 幾 個此 值 由 程 式 用 SIZE1 自 動 算 出RE_LOAD Bool Internal 宣 告 初 值 為 TRUE, 所 以 一 開 機 會 讀 File 一 次若 程 式 運 行 中 又 設 此 值 為 TRUE, 會 再 去 讀 File 一次TMP Bool Internal 暫 時 使 用 的 Boolean 變 數Data_Ok1 Bool Internal TRUE 表 是 讀 File OkFlag_to_save Bool Internal Controller 要 存 File 時 , 會 自 動 設 它 為 TRUEFile_name1 Message Internal 長 度 64, 初 值 為 \System_Disk\data56.txtMsg1 Message Internal 長 度 128, 會 顯 示 File 處 理 狀 態str1 Message Internal 長 度 255, 操 作 File 字 串 時 會 用 到F_VAL1[0..19] REAL Internal 為 變 數 陣 列 , Dim 欄 位 設 成 與 SIZE1 之 值 相 同Old_F_VAL1 REAL Internal 為 變 數 陣 列 , Dim 欄 位 設 成 與 SIZE1 之 值 相 同[0..19]為 F_VAL1[ ] 的 舊 值NUM1 Integer Internal 接 收 Msg_F( ) 的 回 傳 值 , 若 為 -1 表 示 格 式 錯 誤File1 Integer Internal File IDii Integer Internal 給 for 迴 圈 使 用 的 indexjj Integer Internal 給 另 一 個 for 迴 圈 使 用 的 indexData1 ~ Data5與Data06 ~ Data17REALInternal用 來 模 擬 ( 仿 真 ) 為 User Data 變 數 , 本 例 因 為SIZE1 值 為 17, 所 以 共 更 17 個 資 料 變 數User 實 際 的 應 用 可 以 每 個 都 使 用 不 同 的 變 數 名 稱 .若 更 更 改 名 稱 , G_data 與 S_data 內 程 式 也 要 修 改<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-24 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 ST1:------------------------------------------------------------------------------------------------------------------------if RE_LOAD then (* 一 開 機 , RE_LOAD 初 值 為 TRUE, 會 去 讀 File 一 次 *)RE_LOAD := FALSE ; (* 進 來 之 後 需 馬 上 將 RE_LOAD 設 為 FALSE *)(* 根 據 SIZE1 之 值 , 計 算 出 共 更 幾 行 資 料 , 與 最 後 一 行 更 幾 個 REAL 資 料 *)num_row1 := SIZE1 / 10 ;last_num1 := SIZE1 - 10 * num_row1 ;if last_num1 0 thennum_row1 := num_row1 + 1 ;elselast_num1 := 10 ;end_if ;TMP := read_F1( ) ; (* 呼 叫 read_f1( ) 來 讀 SIZE1 個 資 料 到 F_VAL1[ ] 內 *)if TMP = FALSE then (* read_f1( ) 若 回 傳 FALSE, 表 示 讀 取 失 敗 *)for ii := 0 to SIZE1 - 1 doF_VAL1[ii] := 0.0 ; (* 讀 取 失 敗 將 SIZE1 個 初 值 設 為 0.0 *)end_for ;Data_Ok1 := FALSE ; (* 將 Data_Ok1 設 為 FALSE 來 表 示 “ 讀 取 失 敗 ” *)Msg1 := 'File : ' + File_name1 + ' not exist or data error ! or File is open now' ;Else (* 若 讀 取 File 成 功 *)end_if;Data_Ok1 := TRUE ; (* 將 Data_Ok1 設 為 TRUE 來 表 示 “ 讀 取 成 功 ” *)Msg1 := 'Get Retained data from file Ok ' ;(* 一 開 機 時 要 更 新 Old_F_VAL1[ ] 之 值 與 F_VAL1[ ] 相 同 *)for ii := 0 to SIZE1 - 1 doOld_F_VAL1[ii] := F_VAL1[ii] ;end_for ;TMP := G_data( ) ; (* 每 次 從 File 內 讀 資 料 後 , 需 更 新 值 到 User Data 變 數 內 *)end_if ;(* 每 個 PLC Scan 都 需 把 User Data 變 數 值 更 新 到 F_VAL1[ ] 內 *)TMP := S_data( ) ;(* 在 每 個 PLC scan 內 判 斷 這 SIZE1 個 資 料 是 否 更 任 一 個 值 更 更 改 *)for ii := 0 to SIZE1 - 1 doif Old_F_VAL1[ii] F_VAL1[ii] then (* 新 / 舊 值 不 同 , 表 示 更 更 改 過 *)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-25 <strong>ICP</strong> <strong>DAS</strong>


Flag_to_save := TRUE ; (* 將 Flag 設 為 TRUE 來 準 備 要 寫 資 料 到 File 內 *)Old_F_VAL1[ii] := F_VAL1[ii] ; (* 值 不 同 時 , 要 更 新 舊 值 *)end_if ;end_for ;if Flag_to_save then (* 若 Flag 被 設 為 TRUE, 寫 SIZE1 個 資 料 到 File 內 *)TMP := save_f1( ) ; (* 呼 叫 save_f1( ) 來 寫 資 料 *)if TMP = FALSE then (* save_f1( ) 回 傳 FALSE, 表 示 寫 File 失 敗 , 可 能 File 被 打開 , 沒 關 *)Msg1 := 'Can not save data to file. May be file is open now by Wincon screen ! ' ;Else (* 寫 File 成 功 , 將 Flag 清 除 為 FALSE *)Flag_to_save := FALSE ;end_if ;end_if ;------------------------------------------------------------------------------------------------------------------------<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-26 <strong>ICP</strong> <strong>DAS</strong>


ST functions 程 式 – G_data :------------------------------------------------------------------------------------------------------------------------(* 更 新 User Data 變 數 之 值 , 若 SIZE1 值 更 改 , 或 User Data 變 數 名 稱 更 改 , 以 下 的 Code 也 要修 改 *)Data1 := F_VAL1[0] ;Data2 := F_VAL1[1] ;Data3 := F_VAL1[2] ;Data4 := F_VAL1[3] ;Data5 := F_VAL1[4] ;Data06 := F_VAL1[5] ;Data07 := F_VAL1[6] ;Data08 := F_VAL1[7] ;Data09 := F_VAL1[8] ;Data10 := F_VAL1[9] ;Data11 := F_VAL1[10] ;Data12 := F_VAL1[11] ;Data13 := F_VAL1[12] ;Data14 := F_VAL1[13] ;Data15 := F_VAL1[14] ;Data16 := F_VAL1[15] ;Data17 := F_VAL1[16] ;G_data := TRUE ; (* function 回 傳 TRUE *)------------------------------------------------------------------------------------------------------------------------ST functions 程 式 – S_data :------------------------------------------------------------------------------------------------------------------------(* 更 新 F_VAL1[ ] 之 值 , 若 SIZE1 值 更 改 , 或 User Data 變 數 名 稱 更 改 , 以 下 的 Code 也 要修 改 *)F_VAL1[0] := Data1;F_VAL1[1] := Data2;F_VAL1[2] := Data3;F_VAL1[3] := Data4;F_VAL1[4] := Data5;F_VAL1[5] := Data06;F_VAL1[6] := Data07;F_VAL1[7] := Data08;F_VAL1[8] := Data09;F_VAL1[9] := Data10;F_VAL1[10] := Data11;F_VAL1[11] := Data12;F_VAL1[12] := Data13;F_VAL1[13] := Data14;F_VAL1[14] := Data15;F_VAL1[15] := Data16;F_VAL1[16] := Data17;S_data := TRUE ; (* function 回 傳 TRUE *)------------------------------------------------------------------------------------------------------------------------<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-27 <strong>ICP</strong> <strong>DAS</strong>


ST functions 程 式 read_f1 :------------------------------------------------------------------------------------------------------------------------(* 這 個 function 從 File 內 讀 出 SIZE1 個 實 數 並 存 入 F_VAL1[ ] 內成 功 : reaf_f1( ) 回 傳 TRUE , 失 敗 回 傳 FALSE *)read_f1 := FALSE ; (* 一 開 始 先 預 設 為 失 敗 *)File1 := f_wopen( File_name1 ) ; (* 開 啟 File 為 可 讀 / 可 寫 模 式 *)if File1 = 0 then (* 開 啟 失 敗 , 通 常 為 File 不 存 在 *)return ; (* 離 開 此 程 式 *)end_if ;(* File 開 啟 成 功 , 讀 資 料 *)for ii2 := 0 to num_row1 – 1 do (* 共 num_row1 行 , 每 行 10 個 REAL 值 *)if f_eof( File1 ) = TRUE then (* 偵 測 是 否 抵 達 檔 案 尾 端 *)exit ; (* 若 是 則 離 開 for 迴 圈 *)end_if ;str1 := fm_read( File1 ) ; (* 從 File 內 讀 出 一 行 字 串 *)NUM1 := Msg_F( str1 , 1 ) ; (* 將 該 字 串 轉 換 為 數 個 REAL 值 , 並 存 放 於 1 號 Float陣 列 內 *)(* 若 為 最 後 一 行 資 料 數 量 是 否 正 確 ? 若 非 最 後 一 行 , 資 料 數 量 是 否 為 10 個 ? *)if ( ( ii2 = num_row1 – 1 ) and ( NUM1 last_num1 ) ) or( ( ii2 num_row1 – 1 ) and ( NUM1 10 ) ) thenexit ; (* 數 量 不 對 , 離 開 for 迴 圈 *)end_if ;if ii2 = num_row1 - 1 then (* 若 為 最 後 一 行 , 設 num2 為 最 後 一 行 的 資 料 數 量 *)num2 := last_num1 ;else (* 若 不 是 最 後 一 行 , 設 資 料 數 量 num2 為 10 個 *)num2 := 10 ;end_if ;(* 轉 換 成 功 , 將 此 行 的 REAL 值 存 入 F_VAL1[ ] 內 *)for jj2 := 0 to num2 - 1 doF_VAL1[ 10*ii2 + jj2 ] := ARY_F_R( 1 , jj2 + 1 ) ;end_for ;end_for ;TMP2 := f_close( File1 ) ; (* File 只 要 成 功 開 啟 過 , 處 理 完 就 需 close *)If ii2 = num_row1 thenread_F1 := TRUE ; (* num_row1 行 資 料 都 已 讀 到 , read_f1( ) 回 傳 TRUE *)end_if ;------------------------------------------------------------------------------------------------------------------------<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-28 <strong>ICP</strong> <strong>DAS</strong>


ST functions 程 式 save_f1 :------------------------------------------------------------------------------------------------------------------------(* 這 個 function 寫 SIZE1 個 實 數 F_VAL1[ ] 到 File 內 ,成 功 : save_f1( ) 回 傳 TRUE , 失 敗 回 傳 FALSE *)save_f1 := FALSE ; (* 一 開 始 先 預 設 為 失 敗 *)File1 := f_creat( File_name1 ) ; (* 建 立 一 個 新 File, 若 檔 案 已 存 在 , 資 料 會 刪 除 *)if File1 = 0 thenreturn ; (* 建 立 一 個 新 File 失 敗 , 離 開 此 程 式 *)end_if ;(* 建 立 一 個 新 File 成 功 , 準 備 寫 資 料 進 去 *)for ii2 := 0 to num_row1 - 1 do (* 共 num_row1 行 資 料 要 寫 入 *)str1 := ' ' ; (* 設 每 行 字 串 初 值 為 1 個 空 格 *)if ii2 = num_row1 - 1 then (* 若 為 最 後 一 行 , 設 num2 為 最 後 一 行 的 資 料 數 量 *)num2 := last_num1 ;else (* 若 不 是 最 後 一 行 , 設 資 料 數 量 num2 為 10 個 *)num2 := 10 ;end_if ;(* 將 REAL 資 料 寫 成 字 串 格 式 *)for jj2 := 0 to num2 - 2 do (* 不 含 最 後 一 行 *)str1 := str1 + REAL_STR( F_VAL1[ 10 * ii2 + jj2 ] ) + ' , ' ;end_for ;(* 最 後 一 行 , 結 尾 需 為 字 元 *)str1 := str1 + REAL_STR( F_VAL1[ 10 * ii2 + 9 ] ) + '$0D$0A' ;TMP2 := f_writ_s( File1 , str1 ) ; (* 將 此 行 字 串 寫 入 File 內 *)end_for ;TMP2 := f_close( File1 ) ; (* File 只 要 成 功 開 啟 過 , 處 理 完 就 需 close *)save_f1 := TRUE ; (* num_row1 行 資 料 都 已 寫 入 , save_f1( ) 回 傳 TRUE *)------------------------------------------------------------------------------------------------------------------------<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-29 <strong>ICP</strong> <strong>DAS</strong>


本 wpdmo_56 範 例 如 何 測 詴 ?1. 將 wpdmo_56 用 <strong>ISaGRAF</strong> 下 載 到 WP-8xx7 後 , 會 出 現 Spy list 視 窗 如 下請 更 改 任 何 一 個 USER Data 變 數 之 值 , 改 了 後 , 它 就 會 自 動 存 入 \System_Disk\data56.txt內 , 所 以 你 可 以 在 WP-8xx7 連 接 的 VGA 的 螢 幕 上 開 啟 此 檔 , 會 發 現 它 的 資 料 更 跟 著 變 動 .( 請 不 要 一 直 開 著 此 檔 , 要 關 掉 它 , 不 然 之 後 資 料 更 變 它 會 寫 不 進 去 , 但 只 要 更 關 掉 , 資 料就 會 更 新 )2. 將 WP-8xx7 關 機 後 約 5 秒 再 開 機 , 開 完 機 後 您 會 看 到 這 些 USER Data 變 數 之 值 會 是您 最 後 輸 入 給 它 的 值 .3. 在 PC 上 用 NotePad ( 記 事 本 ) 編 輯 一 個 data56.txt 檔 類 似 如 下 ,1.1 , 2.2 , 3.3 , 4.4 , 5.5 , 6.66 , 7.77 , 8.88 , 9.99 , 10.010.01 , 0.02 , 0.03 , 0.04 , 0.05 , 0.06 , 0.07將 此 data56.txt 檔 用 ftp 傳 到 WP-8xx7 的 \System_Disk\ 目 錄 內 . 之 後 在 <strong>ISaGRAF</strong> 的Spy list 視 窗 , 雙 擊 RE_LOAD, 把 它 的 值 設 為 TRUE. 您 會 發 現 USER Data 變 數 之 值 會更 新 成 上 面 的 值 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-30 <strong>ICP</strong> <strong>DAS</strong>


10.5.5: 每 0.05 秒 記 錄 I-8017H 的 1 ~ 4 個 電 壓 值 於 RAM Disk 內 的 一 個 檔 案 , 連續 記 錄 1~10 分 鐘 , 之 後 可 在 PC 上 開 M.S. Excel 來 看 1 ~ 4 條 趨 勢 圖請 參 考 第 11.3.6 節 的 說 明 ( 可 記 錄 最 快 達 20Hz 的 資 料 ).第 11.3.10 節 的 方 法 可 記 錄 最 快 達 100Hz 的 資 料 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-31 <strong>ICP</strong> <strong>DAS</strong>


10.6: 偵 測 Controller Fault更 一 些 事 件 會 造 成 “Controller Fault”. 例 如 , 值 除 以 0 或 從 EEPROM 或 S256 或 File 內 讀浮 點 數 ( 實 數 ), 但 卻 沒 更 浮 點 數 存 放 在 裏 面 .<strong>ICP</strong> <strong>DAS</strong> <strong>ISaGRAF</strong> 控 制 器 從 以 下 驅 動 程 式 版 本 起 支 持 Controller Fault 偵 測 功 能 .(VP-2117, µPAC-7186EG, iP-8xx7, WP-8xx7, VP-25W7/23W7, XP-8xx7-CE6 都 更 支 持 )I-7188EG 2.05 I-7188XG 2.04I-8417/8817/8437/8837 3.07 W-8037/8337/8737 3.18更 2 種 型 式 的 Controller Fault. 一 種 稱 為 Global fault. 一 種 稱 為 Local fault.當 發 生 Global fault 時 , <strong>ISaGRAF</strong> 程 式 會 停 止 . 等 待 新 的 程 式 來 下 載 .當 發 生 Local fault 時 , <strong>ISaGRAF</strong> 程 式 會 繼 續 Run.PC / HMI / OPC Server 可 使 用 Modbus 通 訊 協 議 取 得 控 制 器 的 Fault 狀 態 .Word 位 址 編 號 9999 內 存 放 更 無 發 生 Controller Fault. 0: 正 常 , 1: 發 生 Controller fault.R_MB_ADR( 1 , 9999 ) 取 得 “ 更 無 發 生 Controller Fault”Word 位 址 編 號 9998 內 存 放 Controller Fault 的 型 態 .R_MB_ADR( 1 , 9998 ) 取 得 ”Controller Fault 型 態 ”101 : Global fault( 以 下 皆 為 Local fault)102 : S_R_R Float error103 : R_MB_REL Float error104 : INT_REAL Float error105 : RETAIN_F Float error106 : RETAIN_X Float error107 : Real 除 以 0108 : Integer 除 以 0109 : RETAIN_A Float error110 : Real 乘 法 結 果 超 出 32-bit float 值 的 範 圍111 : Real 除 法 結 果 超 出 32-bit float 值 的 範 圍112 : Real 加 法 結 果 超 出 32-bit float 值 的 範 圍113 : Real 減 法 結 果 超 出 32-bit float 值 的 範 圍114 : EEP_F_R Float error115 : EBUS_F_R Float error116 : FBUS_F_R Float error117 : F_REAF_F error ( 只 更 Wincon-8xx7 使 用 )118 : 在 第 0 到 第 7 槽 找 不 到 相 對 應 的 I-87K I/O 卡119 : ARY_F_R Float error121 : ANA( ) 操 作 錯 誤 , 比 如 ANA(1.23E20) , ANA(-2.0e25)122 : TMR( ) 操 作 錯 誤 , 比 如 TMR(1.23E20) , TMR(-100)123 : Real 運 算 錯 誤 , 比 如 POW(1.23e20 , 3.0) , EXPT(5.0 , 10000000)124 : PID_AL( ) 運 算 超 出 32-bit float 值 的 範 圍<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-32 <strong>ICP</strong> <strong>DAS</strong>


的 範 圍125 : REAL 變 數 陣 列 運 算 錯 誤 . 可 能 是 程 式 內 使 用 的 陣 列 Index 超 出 宣 告當 Controller Fault 發 生 , 取 得 Controller 狀 態 後 , 可 用 以 下 的 函 式 來 把 9999 & 9998 號 資 料 清為 0.W_MB_ADR(1, 9999, 0)W_MB_ADR(1, 9998, 0)請 參 考 以 下 的 ST 程 式 範 例範 例 :(* Tmp 宣 告 為 Boolean, Internal *)(* is_fault 與 fault_type 宣 告 為 Integer, Internal *)(* PC/HMI 可 使 用 Modbus 通 訊 協 議 詢 問 9999 與 9998 號 的 Word, 來 取 得 Controller fault 的狀 態 *)is_fault := R_MB_ADR(1,9999) ;Fault *)(* 程 式 內 取 得 Controller 狀 態 , 0: 正 常 ,1: 發 生 Controller(* Controller fault 的 狀 態若 回 傳 值 為 101 : Global fault : 程 式 會 停 掉 , 此 時 只 更 PC / HMI 可 使 用 Modbus 通 訊 協 議 詢問 9999 與 9998 號 的 Word, 來 取 得 Controller fault 的 狀 態 *)fault_type := R_MB_ADR(1,9998) ; (* 程 式 內 取 得 Controller Fault 的 型 態 *)if is_fault = 1 then (* 發 生 "Local Fault" 時 *)(* … *) (* "Local Fault" 時 的 處 理 *)(* 以 下 這 行 只 適 用 於 Wincon-8x37/8x36: 強 迫 程 式 停 止 且 第 1 到 7 槽 的 output 都 Reset *)(* tmp := Stop_APL( ) ; *)(* 當 Controller Fault 發 生 , 取 得 Controller 狀 態 後 , 把 9999 & 9998 號 資 料 清 為 0 *)tmp := W_MB_ADR(1, 9999, 0) ;tmp := W_MB_ADR(1, 9998, 0) ;end_if ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 10-33 <strong>ICP</strong> <strong>DAS</strong>


第 11 章 <strong>ISaGRAF</strong> 程 式 範 例 與 FAQ當 您 拿 到 <strong>ISaGRAF</strong> 控 制 器 時 , 我 們 會 附 上 一 系 列 的 <strong>ISaGRAF</strong> 範 例 程 式 , 這 些 範 例 程 式 會 教 導您 如 何 在 <strong>ISaGRAF</strong> Workbench 應 用 軟 体 中 開 發 控 制 器 的 應 用 程 式 。11.1: 安 裝 <strong>ISaGRAF</strong> 程 式 範 例<strong>ISaGRAF</strong> 的 範 例 程 式 放 在 <strong>ICP</strong> <strong>DAS</strong> 的 CD-ROM 內 , 附 在 控 制 器 的 出 貨 包 裝 盒 內 .I-8xx7:I-8000 CD-ROM: \napdos\isagraf\8000\demo\I-7188EG, 7186EG: I-8000 CD-ROM: \napdos\isagraf\7188eg\demo\I-7188XG:I-8000 CD-ROM: \napdos\isagraf\7188xg\demo\iP-8xx7:I-8000 CD-ROM: \napdos\isagraf\ip8000\demo\VP-2117:I-8000 CD-ROM: \napdos\isagraf\vp2k\demo\XP-8xx7-CE6: XP-8xx7-CE6 CD-ROM: \napdos\isagraf\xp-8xx7-ce6\demo\WP-8xx7:WP-8xx7 CD-ROM: \napdos\isagraf\wp-8xx7\demo\VP-25W7 / VP-25W7: VP-2xW7 CD-ROM: \napdos\isagraf\vp-25w7-23w7\demo\你 也 可 從 網 路 上 取 得 範 例 程 式 :iP-8xx7 : ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/ip8000/µPAC-7186EG : ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/7188eg/demo/VP-2117 :ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/vp2k/demo/WP-8xx7 :ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/VP-25W7 / 23W7 :ftp://ftp.icpdas.com/pub/cd/vp-25w7-23w7/napdos/isagraf/vp-25w7-23w7/demo/XP-8xx7-CE6 : ftp://ftp.icpdas.com/pub/cd/xp-8xx7-ce6/napdos/isagraf/xp-8xx7-ce6/demo/建 議 您 在 安 裝 <strong>ISaGRAF</strong> 範 例 程 式 時 , 新 建 立 一 個 “<strong>ISaGRAF</strong> Project Group”, 將 所 更 的 範 例 程式 安 裝 到 這 群 組 底 下 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-1 <strong>ICP</strong> <strong>DAS</strong>


在 您 安 裝 範 例 程 式 到 群 組 之 前 , 您 必 頇 先 開 啟 “<strong>ISaGRAF</strong> Project Management”, 然 後 選 擇[Tool][Archive][Projects]。當 你 按 下 “Projects”, 會 開 啟 “Archive Projects” 視 窗 。 按 下 “Browse” 鍵 , 選 擇 範 例 檔 案 所 放置 的 目 錄 ( 例 如 I-8xx7, 請 到 I-8000 CD-ROM 的 \Napdos\<strong>ISaGRAF</strong>\8000\Demo)開 啟 demo 目 錄 後 , 先 按 著 “demo_01” 檔 案 , 然 後 按 住 “Shift” 鍵 不 放 , 再 用 滑 鼠 點 選 最 後 一個 檔 案 , 此 時 整 個 demo 目 錄 的 檔 案 將 被 選 取 , 最 後 按 下 “restore” 鍵 。 所 更 的 demo 檔 案 就 會安 裝 在 你 所 建 立 的 目 錄 了 。<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-2 <strong>ICP</strong> <strong>DAS</strong>


11.2: <strong>ISaGRAF</strong> 範 例 程 式 列 表此 節 只 列 出 VB 範 例 程 式 , µPAC-7186EG, iP-8xx7, WP-8xx7 與 XP-8xx7-CE6 系 列 的 範 例 程式 , 其 它 PAC 型 號 的 範 例 程 式 請 參 考 各 別 的 “ 快 速 上 手 手 冊 ”所 更 型 號 最 新 範 例 程 式 列 表 , 請 參 考 網 頁 :http://www.icpdas.com/products/PAC/i-8000/isagraf_demo_list.htm#VBNETwww.icpdas.com > product > solutions > software > Development Tools > <strong>ISaGRAF</strong> > Demo Files/範 例 程 式Visual Basic 範 例 程 式 :I-8000 CD-ROM:\napdos\isagraf\vb_demo\ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/vb_demo使 用 的 I/O 板 卡範 例 名 稱 說 明 (VB)或 其 他 設 備Demo_1 PC 使 用 Modbus TCP/IP 協 定 存 取 I-8437/8837 內 的 資 料 I-8437/8837Demo_2Demo_3Demo_4Demo_6PC 使 用 Modem + 電 話 線 存 取 遠 方 I-8437/8837 內 的 資料( 請 參 閱 第 13 章 )PC 跑 VB.net 2005 或 VB 6.0 用 Modbus TCP/IP 連Controller ( 可 以 是 I-8x37-80, I-7188EG, µPAC-7186EG,VP-2117, iP-8x47, WP-8xx7, XP-8xx7-CE6 或 VP-25W7 /VP-23W7)參 考 http://www.icpdas.com/faq/isagraf.htm FAQ-051 與052PC 跑 VB 6.0 用 Modbus TCP/IP 連 Controller ( 可 以 是I-8x37-80, I-7188EG, µPAC-7186EG, VP-2117, iP-8x47,WP-8xx7, XP-8xx7-CE6 或 VP-25W7 / VP-23W7+ I-7018z)來 顯 示 溫 度 輸 入 值 . ( 參 考 第 11.3.9 節 )PC 跑 VB 6.0 用 Modbus TCP/IP 連 Controller ( I-8437-80/ 8837-80) , 參 考 第 11.3.7 節I-8054I-84x7/88x7I-87064ModemPhone lineI-7018zSlot2: I-8024Slot3: I-8017H<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-3 <strong>ICP</strong> <strong>DAS</strong>


PAC-7186PEG、PAC-7186EG、I-7188EG/XG 範 例 程 式 :µPAC-7186(P)EG、I-7188EG :I-8000 CD-ROM: \napdos\isagraf\7188eg\demoftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/7188eg/demo/I-7188XG :I-8000 CD-ROM: \napdos\isagraf\7188xg\demoftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/7188xg/demo/使 用 的 I/O 板 卡範 例 名 稱 說 明 (7186/7188)或 其 他 設 備Demo_01 接 收 訊 息 並 回 傳 至 Com2 或 Com3 X503/4/5/6 擴 充 卡Demo_02 寫 入 一 個 字 串 至 X503 的 Com5 和 Com6 X503Demo_03 接 收 訊 息 並 回 傳 至 Com6 或 Com7 ( 使 用 陣 列 讀 X503寫 )Demo_04 使 用 I-7000 和 插 入 X-board 至 I-7188EG Bus7000bX107Demo_05 計 時 器 控 制 , TP, TON, TOF X304Demo_06 顯 示 一 個 值 至 S-MMI, VAL10LED X304Demo_07 控 制 X107 和 I-7060D Relay IO Bus7000bX107Demo_08 接 收 訊 息 並 回 傳 至 X507/8/9 的 Com3 及 控 制 X507_8_9DO .Demo_09 使 用 S-MMI 與 Timer 控 制 tStart , tStop , Reset 為 0Demo_10 使 用 S-MMI X107Demo_11 連 結 其 他 的 Modbus RTU 設 備 mbusDemo_12 轉 換 I-7000 及 顯 示 類 比 輸 入 值 至 S-MMI 供 學 習 套 Bus7000b件 使 用Demo_13 轉 換 I-7000 並 顯 示 類 比 輸 入 值 至 S-MMI 供 學 習 套 件 Bus7000b使 用Demo_18 PID 控 制 , PID_AL , 無 法 在 PC 模 擬 ( 仿 真 ), 需 下 載 到控 制 器 內Demo_21 寫 入 一 個 字 串 至 Com3 和 Com4 Xbi8 ( 虛 擬 D/I)X50xDemo_22 接 收 訊 息 並 回 傳 至 Com3 及 Com4 X50xDemo_23 從 PC 接 收 一 個 使 用 者 定 義 的 通 訊 協 定 X50xDemo_35a 時 間 同 步 : 35A ( 與 35B demo 搭 配 使 用 )Fbus_m更 新 本 控 制 器 的 日 期 時 間 可 以 同 步 更 新 B 控 制 器Demo_35b 時 間 同 步 : 35B ( 與 35A demo 搭 配 使 用 ) Fbus_sDemo_36 取 得 I-7188EG 驅 動 程 式 版 本Demo_41記 錄 警 報 ( 文 字 ) 至 X607/X608 而 且 PC 能 以"<strong>ICP</strong><strong>DAS</strong> UDloader" 載 入 記 錄 的 警 報Demo_43 SMS 簡 訊 範 例 , 請 在 dictionary 的 message 型 態 中 SMSX607_608Xbi8 ( 虛 擬 D/I)Xbo8 ( 虛 擬 D/O)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-4 <strong>ICP</strong> <strong>DAS</strong>


範 例 名 稱 說 明 (7186/7188)宣 告 您 的 手 機 號 碼使 用 的 I/O 板 卡或 其 他 設 備Demo_43a 與 Demo_43 類 似 , 但 可 發 給 2 支 以 上 的 手 機 SMSDemo_44 PC 下 載 資 料 至 X607/X608 X607_608Xbo8 ( 虛 擬 D/O)Demo_50 PWM I/O 範 例 . (Pulse Width Modulation) X107Demo_48a 冗 餘 Redundant: I-7188XG redundant Master Bus7000bFbus_mDemo_48b 冗 餘 Redundant: I-7188XG redundant slave Bus7000bFbus_sDemo_51a 冗 餘 Redundant: I-7188EG redundant Master Bus7000bEbus_mDemo_51b 冗 餘 Redundant: I-7188EG redundant slave Bus7000bEbus_sDemo_61 DI 計 數 器 , 使 用 DI_CNT, I-7188 + X107X107當 DI 訊 號 發 生 時 , 做 指 定 動 作Demo_70 當 警 報 1~8 發 生 時 , 傳 送 字 串 至 COM2/COM3( 使 用 陣 列 讀 寫 )Demo_72 Controller 用 RS-485 連 接 1 顆 10 通 道 I-7018z, 並 將 溫度 值 用 PC 上 的 VB 6.0 程 式 顯 示 出 來 . 請 參 考 第 11.3.9節I-7018z注 意 : Demo_18 使 用 CJ 公 司 提 供 的 PID_AL. 請 參 考 :“ ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/8000/english_manu/pid_al.complex_pid_algorithm_implementation.pdf”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-5 <strong>ICP</strong> <strong>DAS</strong>


iP-8xx7、I-8417/8817/8437/8837 範 例 程 式 :iP-8xx7 :I-8000 CD-ROM: \napdos\isagraf\ip8000\demo 或ftp://ftp.icpdas.com.tw/pub/cd/8000cd/napdos/isagraf/ip8000/demo/I-8417/8817/8437/8837:I-8000 CD-ROM: \napdos\isagraf\8000\demo 或ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/8000/demo/範 例 名 稱 說 明 (iP-8xx7 / I-8xx7) 使 用 的 I/O 板Demo_01 Timer 的 控 制 , TP, TON, TOF Push4Key,Show3LedDemo_01a 於 事 件 發 生 後 某 個 時 間 點 ( 例 如 3 秒 後 ) 去 做 某 件 事 . Push4Key,Show3LedDemo_02 啟 動 , 暫 停 , 及 重 置 Timer, tStart , tStop Push4Key,Show3LedDemo_03 讀 / 寫 日 期 及 時 間NONESYSDAT_R, SYSDAT_W, SYSTIM_R, SYSTIME_W在 某 個 時 段 輸 出 , 例 如 . Moday, 09:00 ~ 18:00, Sunday, 10:00 ~Demo_04 計 算 周 期 時 間 NONEDemo_05 方 波 閃 爍 輸 出 Push4Key,Show3LedDemo_06 改 變 輸 出 模 式 Push4Key,Show3LedDemo_07 在 S-MMI 上 顯 示 1 個 數 值 , VAL10LED, tStart , tStop Push4Key,Show3LedDemo_08 從 S-MMI 輸 入 數 值 , INP10LED Push4Key,Show3LedDemo_09 四 則 運 算 , + , - , * , / NONEDemo_10 顯 示 類 比 輸 入 值 到 S-MMI I-87017,I-87024,Push4KeyDemo_11a Fbus Master, NET_ID = 1 Fbus_m,Push4Key,Show3LedDemo_11b Fbus Slave, NET_ID = 2 Fbus_s,Push4KeyDemo_12 使 用 COM3 接 收 PC 傳 來 的 通 訊 資 料 Show3LedDemo_13 每 隔 3 秒 由 Com3 寫 出 通 訊 資 料 I-87017Demo_14 轉 換 I-7000 & I-87xxx 模 組 的 通 訊 格 式 到 Modbus 格 式 Bus7000bDemo_15a 連 到 其 他 的 Modbus 設 備 MbusDemo_15b 模 擬 成 Modbus 設 備 給 Demo_15a 使 用 NoneDemo_16 每 過 1 秒 送 出 Modbus 通 訊 命 令 給 其 它 的 Modbus RTU 設 備 Push4Key,MbusDemo_17 讀 / 寫 EEPROM NoneDemo_18 PID 控 制 , PID_AL , 無 法 在 PC 模 擬 ( 仿 真 ), 需 下 載 到 控 制 器 None內Demo_21 寫 出 字 串 到 Com5 及 Com6 Push4Key,Show3Led<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-6 <strong>ICP</strong> <strong>DAS</strong>


範 例 名 稱 說 明 (iP-8xx7 / I-8xx7) 使 用 的 I/O 板Demo_22 從 Com5 或 Com6 接 收 通 訊 資 料 並 Echo 回 去 Show3LedDemo_23 從 PC 接 收 User 自 定 的 通 訊 格 式 Show3LedDemo_27運 動 控 制 : x 軸 , slot 0: I-8091,Slot1:I-8090, Napdos\<strong>ISaGRAF</strong>\8000\Driver\motion.pdfI-8091I-8090Show3LedDemo_27a X 軸 移 動 指 定 數 目 的 pulse I-8091Demo_28 運 動 控 制 : x , y 軸 同 動 , slot0: I-8091, slot1:I-8090,I-8091Napdos\<strong>ISaGRAF</strong>\8000\Driver\motion.pdfI-8090Show3LedDemo_29 每 隔 75 秒 , 記 錄 1200 個 短 整 (2 bytes) 資 料 , 然 後 使 用 Com3 I-87017回 報 給 PCDemo_30 每 隔 18 秒 , 記 錄 2880 個 短 整 (2 bytes) 資 料 , 然 後 使 用 Com3 I-8017h回 報 給 PCDemo_33 從 Com3 讀 / 寫 User 自 行 定 義 的 通 訊 格 式 Show3LedDemo_35a 時 間 同 步 : SA更 改 SA 此 台 的 時 間 會 將 SB 那 台 的 時 間 也 校 正 過 來 Fbus_mDemo_35b 時 間 同 步 : SB Fbus_sDemo_37 Spotlight demo ( 簡 易 圖 控 ) , 請 參 考 第 14 章 Push4KeyShow3LedDemo_38 連 線 到 MMICON , demo 1, 請 參 考 第 16 章Demo_39 連 線 到 MMICON , demo 2, 請 參 考 第 16 章Demo_40 每 分 鐘 儲 存 8 個 A/I (binary) 到 S256 內 , 之 後 PC 可 使 用"<strong>ICP</strong><strong>DAS</strong> UDloader" 程 式 工 具 上 載 資 料 出 來Demo_41 儲 存 警 報 ( 字 串 ) 到 S256/512 內 , 之 後 PC 可 使 用 "<strong>ICP</strong><strong>DAS</strong>UDloader" 程 式 工 具 上 載 資 料 出 來Demo_42 每 分 鐘 儲 存 8 個 A/I (binary) 到 S256 內 , 之 後 PC 可 使 用"<strong>ICP</strong><strong>DAS</strong> UDloader" 程 式 工 具 上 載 資 料 出 來Demo_43 SMS 短 訊 息 收 發 範 例 , 請 更 改 為 自 己 可 用 的 號 碼 SMSDemo_43a 與 Demo_43 類 似 , 但 可 發 給 2 支 以 上 的 手 機 SMSDemo_44 PC 下 載 資 料 到 S256/512 的 範 例Demo_46 運 動 控 制 :Pulse move at a specified speedI-8091I-8090Push4KeyDemo_49a 備 援 系 統 ( 冗 余 ): 8437/8837 redundant Master Bus7000Ebus_mDemo_49b 備 援 系 統 ( 冗 余 ): 8437/8837 redundant slave Bus7000Ebus_sDemo_50 PWM I/O 請 參 考 第 3.7 節 I-8055Demo_52Demo_53Demo_54aDemo_54b取 得 I-8K D/I 卡 的 counter 值 , 請 參 考 第 3.8 節(Counter 值 更 保 存 起 來 )取 得 I-8K D/I 卡 的 counter 值 , 請 參 考 第 3.8 節(Counter 值 沒 更 保 存 起 來 )Modbus Master 功 能 (Master)給 Demo_54a 來 連 的 (Slave)I-8051Push4KeyI-8051I-8056Push4key<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-7 <strong>ICP</strong> <strong>DAS</strong>


範 例 名 稱 說 明 (iP-8xx7 / I-8xx7) 使 用 的 I/O 板Demo_55 PWM I/O demo 2. 請 參 考 第 3.7 節 I-8055Demo_61 I-8K DI Counter demo, 8xx7 + 8051, , 請 參 考 第 3.8 節 I-8051當 DI 訊 號 發 生 時 去 做 某 件 事Demo_70 當 警 報 1~8 發 生 時 , 傳 送 字 串 至 COM2/COM3 ( 使 用 陣列 讀 寫 )Demo_71 使 用 I-8437-80 或 I-8837-80, 每 0.05 秒 記 錄 I -8017H 的 1 ~ 4個 電 壓 值 於 S-256 / S-512 內 的 一 個 檔 案 , 連 續 記 錄 1~10 分 鐘 ,I-8024I-8017h之 後 可 在 PC 上 開 M.S. Excel 來 看 1 ~ 4 條 趨 勢 圖 . 請 參 考 第11.3.7 節Demo_72 Controller 用 RS-485 連 接 1 顆 10 通 道 I-7018z, 並 將 溫 度 值 用PC 上 的 VB 6.0 程 式 顯 示 出 來 . 請 參 考 第 11.3.9 節I-7018z注 意 :Demo_18 使 用 CJ International for evalution 所 提 供 的 PID_AL, 請 參 考“CD\Napdos\isagraf\8000\english_manu\ PID_AL.Complex PID algorithm implementation.htm”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-8 <strong>ICP</strong> <strong>DAS</strong>


WP-8xx7 範 例 程 式 :更 個 比 FAQ-131 更 好 用 的 Soft-GRAF Studio, 請 參 考 FAQ-146.WP-8xx7 CD-ROM: \napdos\isagraf\-8xx7\demo\ 或ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/專 案 名 稱 說 明 (WP-8xx7) 使 用 的 I/O 模 組sofgr_01Soft-GRAF HMI 簡 單 範 例 .(sofgr_01~sofgr_08: 中 文 FAQ-131)sofgr_02 Soft-GRAF HMI 元 件 範 例 : 使 用 18 個 HMI 元 件 .sofgr_03sofgr_04sofgr_05sofgr_06sofgr_07sofgr_08Soft-GRAF 範 例 . 顯 示 10 個 溫 度 量 測 值 與 8 個 D/I 值與 控 制 8 個 D/O 值 . 資 料 量 少 於 255.Soft-GRAF 範 例 . 從 file 內 讀 取 工 作 參 數 或 將 修 改 的工 作 參 數 存 入 File 內 . 資 料 格 式 為 實 數 , 只 處 理 1 個File. 資 料 量 少 於 255.Soft-GRAF 範 例 . 從 file 內 讀 取 工 作 參 數 或 將 修 改 的工 作 參 數 存 入 File 內 . 資 料 格 式 為 整 數 , 只 處 理 1 個File. 資 料 量 少 於 255.Soft-GRAF 範 例 . 從 file 內 讀 取 工 作 參 數 或 將 修 改 的工 作 參 數 存 入 File 內 . 資 料 格 式 為 實 數 , 可 處 理 多 個File. 資 料 量 少 於 255.Soft-GRAF 範 例 . 從 file 內 讀 取 工 作 參 數 或 將 修 改 的工 作 參 數 存 入 File 內 . 資 料 格 式 為 整 數 , 可 處 理 多 個File. 資 料 量 多 達 1000 ( 可 更 多 ).Soft-GRAF 範 例 . 從 file 內 讀 取 工 作 參 數 或 將 修 改 的工 作 參 數 存 入 File 內 . 資 料 格 式 為 實 數 , 可 處 理 多 個File. 資 料 量 多 達 1000 ( 可 更 多 ).example1 Web HMI 人 機 頁 面 簡 單 範 例 slot 0: I-87055Wwp_vb01wp_vb02wp_vb03wpdmo_01wpdmo_02wpdmo_03WP-8xx7 的 VB.net 2008 demo 01: DI/DO 範 例請 參 考 第 6 章WP-8xx7 的 VB.net 2008 demo 02: AI/AO 範 例請 參 考 第 6 章WP-8xx7 的 VB.net 2008 demo 03: 讀 / 寫 long integer,float 及 Timer . 請 參 考 第 6 章WinPAC demo_01: 如 何 在 WinPAC 內 讀 / 寫 File 資 料(float 值 )。( 中 文 FAQ > 060)WinPAC demo_02: 如 何 在 WinPAC 內 讀 / 寫 File 資 料(long integer 值 )。( 中 文 FAQ > 060)依 時 間 間 隔 輸 出 , 如 SYSDAT_R, SYSDAT_W,SYSTIM_R, SYSTIM_W (ST+QLD)wpdmo_04 WinPAC demo_04: 使 用 者 自 訂 Modbus 通 訊 協 定 ( 不 使slot 0: I-87055Wslot 1: I-87024Wslot 2: I-8017HW<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-9 <strong>ICP</strong> <strong>DAS</strong>


專 案 名 稱 說 明 (WP-8xx7) 使 用 的 I/O 模 組用 "Mbus")wpdmo_05 指 定 事 件 發 生 數 秒 後 觸 發 某 動 作 . ( 英 文 FAQ > 017) slot 0: I-87055Wwpdmo_06wpdmo_07wpdmo_08wpdmo_09wpdmo_10wpdmo_11wpdmo_14wpdmo_16wpdmo19wpdmo19awpdmo19bwpdmo_20wpdmo_21使 用 Message 陣 列 - MsgAry_r , MsgAry_w轉 換 float 值 為 string, 使 用 real_str 與 rea_str2PID 控 制 , 參 考 光 碟 : \napdos\isgraf\wp-8xx7\english_manu\ "PID_AL...htm"儲 存 與 備 份 boolean / long integer 值 到 / 從 檔 案儲 存 與 備 份 boolean / long integer 值 到 / 從 EEPROM以 \Micro_SD 為 目 錄 , 每 隔 10 秒 儲 存 3 個 值 到 3 個 檔案 , 每 個 月 改 變 檔 名 。Retain variable: Retain_b, Retain_N, Retain_f, Retain_t( 中 文 FAQ > 074)以 \Micro_SD 為 目 錄 , 每 隔 1 分 鐘 儲 存 3 個 值 到 1 個 檔案 , 每 天 改 變 檔 名 。當 警 告 發 生 , 傳 遞 UDP 字 串 到 PC,Time_Gap 為 1 秒( 使 用 變 數 陣 列 ) ( 參 考 “<strong>ISaGRAF</strong> 進 階 手 冊 ” 第 19.2 節 )3 秒 後 傳 遞 UDP 字 串 到 PC,Time_Gap 為 250 ms ( 請 參考 “<strong>ISaGRAF</strong> 進 階 手 冊 ” 第 19.2 節 )3 秒 後 傳 遞 UDP 字 串 到 PC,Time_Gap 為 250 ms(wpdmo19a 較 佳 ) ( 見 “<strong>ISaGRAF</strong> 進 階 手 冊 ” 第 19.2 節 )投 過 UDP/IP 從 遠 端 PC 或 控 制 器 接 收 字 串使 用 "com_MRTU" 來 停 止 / 啟 動 Modbus RTU slave 埠slot0: I-87055Wslot0: I-87055Wslot0: I-87055Wwpdmo_22 PWM I/O 範 例 (WinPAC 脈 寬 調 整 , 最 小 2 秒 ) slot 0: I-8055Wwpdmo_23使 用 COMOPEN, COMSTR_W, 每 秒 傳 遞 時 間 字 串 到COM3:RS-232。 ( 中 文 FAQ > 059)wpdmo_24 當 發 生 警 報 1~8, 傳 遞 字 串 到 COM3 slot 0: I-87055Wwpdmo_26wpdmo_27wpdmo_28wpdmo_29wpdmo_30移 動 WP-8xx7 插 槽 1 的 I-8091W 的 X 軸 時 脈( 請 參 考 “<strong>ISaGRAF</strong> 進 階 手 冊 ” 第 18 章 )運 動 控 制 : x 軸( 請 參 考 “<strong>ISaGRAF</strong> 進 階 手 冊 ” 第 18 章 )運 動 控 制 : x-y 軸( 請 參 考 “<strong>ISaGRAF</strong> 進 階 手 冊 ” 第 18 章 )當 給 予 CMD 時 , 移 動 到 絕 對 位 置( 請 參 考 “<strong>ISaGRAF</strong> 進 階 手 冊 ” 第 18 章 )WP-8xx7(10.0.0.102) 連 結 2 個 I-8KE8 乙 太 網 路 擴 充 單元 + I/O 模 組 , 一 個 是 10.0.0.108, 一 個 是 10.0.0.109。( 中 文 FAQ > 042)slot 1: I-8091Wslot 1: I-8091Wslot 2: I-8090Wslot 1: I-8091Wslot 2: I-8090Wslot 1: I-8091Wslot 2: I-8090W<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-10 <strong>ICP</strong> <strong>DAS</strong>


專 案 名 稱 說 明 (WP-8xx7) 使 用 的 I/O 模 組wpdmo_31wpdmo_32wpdmo_33WP-8xx7(10.0.0.2) 連 結 1 個 I-8KE8 乙 太 網 路 擴 充 單 元+ I/O 模 組 (10.0.0.109)。 ( 中 文 FAQ > 042)設 定 WP-8xx7 為 TCP/IP Client 並 連 結 到 其 他 TCP/IPserver (1 個 連 接 ) ( 見 “<strong>ISaGRAF</strong> 進 階 手 冊 ” 第 19.3 節 )slot 0: I-87055W同 Wpdmo_32, 但 當 事 件 持 續 超 過 3 秒 時 , 只 傳 遞 訊 息 slot 0: I-87055Wwpdmo_36 從 Modbus RTU 設 備 讀 出 實 數 值 ( 中 文 FAQ - 047, 075)wpdmo_37 將 實 數 值 寫 到 Modbus RTU 設 備 ( 中 文 FAQ – 047,075)wpdmo_38wpdmo_39wpdmo_41wpdmo_42wpdmo_43wpdmo_44wpdmo_45wpdmo_46使 用 Modbus 函 式 6 來 寫 16 個 位 元 到 設 備( 中 文 FAQ - 046 與 075)WP-8xx7 + I-8172W 連 接 FRNET I/O 模 組( 中 文 FAQ - 082)使 用 COM3 連 接 1: M-7053D + 2: M-7045D(MBRTU 格 式 , baud=9600)( 請 參 考 “<strong>ISaGRAF</strong> 進 階 手 冊 ” 第 21 章 )使 用 COM3 連 接 1: M-7053D 來 讀 取 DI 計 數 值(MBRTU 格 式 , baud=9600)使 用 COM3 連 接 1: M-7017R + 2: M-7024 (MBRTU 格式 , baud=9600)使 用 COM3 連 接 1: M-7017RC, Current input, +/-20mA, 4-20mA (Modbus 格 式 )使 用 COM3 連 接 1: M-7019R ( 設 定 為 T/C K-type input)(MBRTU 格 式 , baud=9600)使 用 COM3 連 接 1: M-7080(MBRTU 格 式 , baud=9600)wpdmo_48 VB.net 2005 範 例 - "MBTCP_demo" ( 中 文 FAQ > 051)wpdmo_50wpdmo_51wpdmo_52wpdmo_53非 線 性 轉 換 , 例 如 : 給 P 值 , 求 V 值 (P , V 的 關 係 列於 檔 案 )使 用 str_real 函 式 , 從 檔 案 讀 取 10 個 實 數 , 共 10 列 ,每 列 1 個 實 數 。Msg_F 函 式 範 例 ,<strong>ISaGRAF</strong> PAC 的 驅 動 程 式 需 為 下 列版 本 或 更 新 版 本 。I-8xx7: 3.19 版 ; I-7188EG/XG: 2.17/2.15 版 ; W-8xx7:3.36 版 ; WP-8xx7:Msg_N 函 式 範 例 ,<strong>ISaGRAF</strong> PAC 的 驅 動 程 式 需 為 下 列版 本 或 更 新 版 本 。I-8xx7: 3.19; I-7188EG/XG: 2.17/2.15;W-8xx7: 3.36; WP-8xx7:wpdmo_54 使 用 msg_f 函 式 , 從 檔 案 讀 取 20 個 實 數 , 共 4 列 , 每<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-11 <strong>ICP</strong> <strong>DAS</strong>


專 案 名 稱 說 明 (WP-8xx7) 使 用 的 I/O 模 組wpdmo_55列 5 個 實 數 。 ( 中 文 FAQ > 060)使 用 msg_n 函 式 , 從 檔 案 讀 取 20 個 整 數 , 共 2 列 , 每列 10 個 整 數 。wpdmo56 保 存 17 個 實 數 到 檔 案 中 , 共 2 列 , 每 列 10 個 實 數 。wpdmo56a保 存 2 個 布 林 + 17 個 實 數 到 檔 案 ,2 列 , 每 列 10 個 實數 。wpdmo56b 保 存 25 個 整 數 到 檔 案 中 ,2 列 , 每 列 10 個 整 數 。wpdmo56cwpdmo56dwpdmo56ewpdmo_61wpdmo_62wpdmo_63保 存 2 個 布 林 + 25 個 整 數 到 檔 案 ,2 列 , 每 列 10 個 實數 。 ( 中 文 FAQ > 060)保 存 17 個 實 數 + 2 個 布 林 + 10 個 整 數 到 2 個 檔 案 , 每列 10 個 值 。保 存 超 過 255 個 實 數 、255 個 布 林 、255 個 整 數 到 2 個檔 案 , 最 多 1024 個 值 。I-8xx7, WP-8xx7: 透 過 UDP 主 動 資 料 回 報 到 PC。 控 制器 =10.0.0.103,PC=10.0.0.91使 用 乙 太 網 路 埠 發 送 email ( 不 附 加 檔 案 , 寄 給 一 個 收件 者 ) ( 中 文 FAQ > 067, 071, 072, 076 或 077)只 更 WP-8xx7 與 W-8xx7 更 此 功 能 : 發 送 可 夾 帶 附 件 的email 給 一 個 收 件 者 ( 中 文 FAQ > 067, 071, 072 或 077)wpdmo64a 工 作 站 1001, 使 用 乙 太 網 路 對 多 台 控 制 器 做 時 間 校 正 。wpdmo64b 工 作 站 1002, 使 用 乙 太 網 路 對 多 台 控 制 器 做 時 間 校 正 。wpdmo65awpdmo65bwpdmo_66Wpdmo_70wpdmo71awpdmo71bwpdmo71cWP-8xx7 應 用 : 每 分 鐘 記 錄 溫 度 到 檔 案 一 次 , 每 天 將 記錄 檔 以 email 寄 出 。( 中 文 FAQ > 067, 71, 72, 76, 77)WP-8xx7: 同 wdmo_65a, 但 增 加 時 間 校 正 與 發 出 報 告給 PC。( 中 文 FAQ > 067, 071, 072, 076 或 077)每 隔 20ms 記 錄 I-8017HW 模 組 1~ 4-Ch. 的 電 壓 , 並 以email 發 送 記 錄 檔FRnet 應 用 : WP-8xx7 或 iP-8447。slot1: I-8172W,Port0, FR-2057(adr=4), FR-2053(adr=8)CAN 應 用 : 以 WP-8xx7 的 COM4 連 接 I-7530 --"CANopen" ID=1 設 備 (8DI, 8DO, 4AO, 8AI)。( 中 文 FAQ > 086)類 似 wdmo_71A , 但 連 接 2 個 I-7530 , 一 個 連 接COM5, 一 個 連 接 COM6。WP-8xx7 COM4 – I-7530 – 使 用 CAN 設 備 取 得 字 串 ( 也包 含 float 或 integer 資 料 )wpdmo71d 類 似 wdmo_71c , 但 連 接 兩 個 I-7530 , 一 個 連 接slot 2: I-87018zslot 2: I-87018zslot 2: I-8024Wslot 3: I-8017HWslot 1: I-8172WFR-2057,FR-2053<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-12 <strong>ICP</strong> <strong>DAS</strong>


專 案 名 稱 說 明 (WP-8xx7) 使 用 的 I/O 模 組wpdmo71ewpdmo72awpdmo72bwpdmo72cCOM5, 一 個 連 接 COM6。WP-8xx7: 以 COM5 連 接 I-7530 來 連 接 CANopen 設備 , 以 COM6 連 接 I-7530 來 連 接 CAN 設 備 。新 的 WP-8xx7 可 熱 插 拔 備 援 系 統 ( 冗 餘 系 統 ):搭 配 RU-87P4 + I-87K I/O ( 不 連 接 Touch HMI)( 中 文 FAQ > 093)同 wpdmo72a, 但 設 定 COM1 為 Modbus RTU slave 埠 來連 接 一 台 RS-232 觸 控 螢 幕 (Touch HMI)( 中 文 FAQ > 093)新 的 WP-8xx7 備 援 ( 冗 餘 ) 系 統 (Ethernet I/O) :搭 配 I-8KE8-MTCP I/O 模 組 . ( 不 連 接 Touch HMI)wpdmo74a 求 實 數 帄 均 值 ( 中 文 FAQ > 099)wpdmo74b 求 整 數 帄 均 值 ( 中 文 FAQ > 099)wpdmo75 在 插 槽 0 使 用 I-8088W(8-ch, PWM output) slot 0: I-8088Wwpdmo75bwpdmo77awpdmo77bwpdmo78wpdmo78經 由 WP-8xx7 的 COM2:RS485 連 接 I-87088W(I-7088) (addr=1,baud=115200)使 用 eth_udp,eth_send( ) ,eth_recv( ) 來 傳 送 / 接 收UDP bytes使 用 eth_tcp ,eth_send( ) ,eth_recv( ) 來 傳 送 / 接收 TCP bytesXP-8xx7-CE6 COM3 Mbus Master---M-7011 (ID=1,baud=9600) 來 取 得 AI,DI ( 中 文 FAQ > 118)WP-8xx7 COM2 Mbus Master---M-7011 (ID=1,baud=9600) 來 取 得 AI,DI ( 中 文 FAQ-118)wpdmo79a AP1 ( 中 文 FAQ-119): Mbus RTU Master ( 中 央 工 作 站 )wpdmo79bwpdmo79cAP1 ( 中 文 FAQ-119): Mbus RTU Slave ( 區 域 工 作 站 1),頇 設 定 ID (Slave Number) 為 1AP1 ( 中 文 FAQ-119): Mbus RTU Slave ( 區 域 工 作 站 2),頇 設 定 ID (Slave Number) 為 2wpdmo80a AP2 ( 中 文 FAQ - 119): Mbus TCP Master ( 中 央 工 作 站 )I-87088W(I-7088)M-7011M-7011wpdmo80bwpdmo80cwpdmo81AP2 ( 中 文 FAQ - 119) ( 區 域 工 作 站 1), 頇 設 定 ID 為1, LAN1=192.168.1.178, LAN2=192.168.1.179AP2 ( 中 文 FAQ - 119) ( 區 域 工 作 站 2), 頇 設 定 ID 為1, LAN1=192.168.1.180, LAN2=192.168.1.181WP-8xx7+slot 1: I-8017HW (single-End) 來 取 得 動 態 帄均 值 ( 中 文 FAQ-120)slot 1: I-8017HW<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-13 <strong>ICP</strong> <strong>DAS</strong>


VB.NET 2008範 例 程 式 : 可 與 <strong>ISaGRAF</strong> 程 式 同 時 在 同 一 台 WP-8xx7 內 執 行WP-8xx7 光 碟 : \napdos\isagraf\wp-8xx7\vb.net_2008_demo\ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/vb.net_2008_demo/範 例 名 稱 說 明 (VB.NET 2008 搭 配 WP-8xx7) 使 用 的 I/O 板wp_vb01 數 位 I/O 範 例I-87055W ( slot 0)( 對 應 的 專 案 範 例 檔 名 : "wp_vb01.pia")wp_vb02 類 比 I/O 範 例( 對 應 的 專 案 範 例 檔 名 : "wp_vb02.pia")I-87024W (slot 1)I-8017HW (slot 2)wp_vb03 讀 / 寫 <strong>ISaGRAF</strong> internal integers, timers 及 real 變 數( 對 應 的 專 案 範 例 檔 名 : "wp_vb03.pia")<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-14 <strong>ICP</strong> <strong>DAS</strong>


WP-8xx7 Web HMI 範 例 程 式 :Web HMI 範 例 程 式 資 料 夾 :WinPAC-8xx7 光 碟 : \napdos\isagraf\wp-8xx7\wp_webhmi_demo\ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/wp_webhmi_demo/對 應 的 專 案 範 例 資 料 夾 :WinPAC-8xx7 光 碟 : \napdos\isagraf\wp-8xx7\demo\ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/程 式 名 稱說 明 (WP-8xx7 Web HMI)搭 配 使 用 的 I/O 模組sample Web HMI 範 例 無 需 搭 配 I/O 模 組example1 第 4 章 的 範 例 插 槽 0: I-87055Wwphmi_01 顯 示 控 制 器 的 日 期 與 時 間 無 需 搭 配 I/O 模 組wphmi_02 DI 與 DO 範 例 插 槽 0: I-87055Wwphmi_03 讀 / 寫 Long, float 與 Timer 值 無 需 搭 配 I/O 模 組wphmi_04 讀 / 寫 控 制 器 的 字 串 (String) 無 需 搭 配 I/O 模 組wphmi_05 多 頁 範 例 : 頁 面 選 單 在 左 方 插 槽 0: I-87055Wwphmi_05a 多 頁 範 例 : 頁 面 選 單 在 上 方 插 槽 0: I-87055Wwphmi_06wphmi_07AI/AO 範 例 , 於 <strong>ISaGRAF</strong> 的 轉 換AI/AO 範 例 , 於 PC 的 轉 換插 槽 2: I-87024W插 槽 3: I-8017HW插 槽 2: I-87024W插 槽 3: I-8017HWwphmi_08 下 載 控 制 器 裡 的 檔 案 到 PC 插 槽 0: I-87055Wwphmi_09 於 PC 彈 出 警 報 視 窗 插 槽 0: I-87055Wwphmi_11wphmi_12wphmi_13趨 勢 圖插 槽 2: I-87024W插 槽 3: I-8017HW記 錄 I-8017HW 每 隔 50 微 秒 1 ~ 8 通 道 的 電 插 槽 3: I-8017HW壓 , 並 以 微 軟 Excel 軟 體 繪 出 趨 勢 圖插 槽 2: I-8024W記 錄 I-8017HW 每 隔 10 微 秒 1 ~ 4 通 道 的 電 插 槽 3: I-8017HW壓 , 並 以 微 軟 Excel 軟 體 繪 出 趨 勢 圖插 槽 2: I-8024W<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-15 <strong>ICP</strong> <strong>DAS</strong>


11.3: 一 些 範 例 程 式 的 詳 細 說 明11.3.0 : Demo_01A & Demo_03: 在 某 個 時 間 點 做 某 件 事Demo_01A: 於 事 件 發 生 後 某 個 時 間 點 ( 例 如 3 秒 後 ) 去 做 某 件 事 .程 式 存 放 位 置 : I-8000 CD-ROM: \napdos\isagraf\8000\demo\ “demo_01a.pia”變 數 宣 告 :Name Type Attribute DescriptionK1 Boolean Input 按 壓 K1 來 啟 動 motor(K1 為 I-8xx7 面 板 上 的 第 1 個 按 鈕 )Motor Boolean Output True 表 示 motor 已 經 在 轉 了 , False 則 為 停 止 轉 動Gate Boolean Output True 表 示 閘 口 打 開 了 , False 則 為 關 閉M1 Boolean Internal 存 放 K1 被 按 壓 後 5 秒 產 生 的 脈 波 訊 號M2 Boolean Internal 存 放 K1 被 按 壓 後 15 秒 產 生 的 脈 波 訊 號M3 Boolean Internal 存 放 K1 被 按 壓 後 18 秒 產 生 的 脈 波 訊 號T1 Timer Internal 已 經 經 過 的 時 間<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-16 <strong>ICP</strong> <strong>DAS</strong>


Demo_03: 在 星 期 幾 的 某 個 時 段 輸 出程 式 存 放 位 置 :I-8000 CD-ROM: \napdos\isagraf\8000\demo\ “demo_03.pia”變 數 宣 告 :Name Type Attribute DescriptionYear Integer Internal 年 , 2001 ~Month Integer Internal 月 , 1 ~ 12Day Integer Internal 日 , 1 ~ 31Wday Integer Internal 星 期 幾 , 1:Monday ~ 6:Saturday, 7:SundayHour Integer Internal 時 , 0 ~ 23Minute Integer Internal 分 , 0 ~ 59Second Integer Internal 秒 , 0 ~ 59YY Integer Internal 要 設 定 的 年MM Integer Internal 要 設 定 的 月DD Integer Internal 要 設 定 的 日HH Integer Internal 要 設 定 的 時Mn Integer Internal 要 設 定 的 分Sec Integer Internal 要 設 定 的 秒Act Boolean Internal 觸 發 它 後 可 設 定 新 日 期Act1 Boolean Internal 觸 發 它 後 可 設 定 新 時 間OK1 Boolean Internal “SYSDAT_W” 的 傳 回 值OK2 Boolean Internal “SYSTIM_W” 的 傳 回 值L1 ~ L3 Boolean Internal 模 擬 輸 出 1 ~ 3Time_val Integer Internal 單 位 為 秒 , = 3600 x 時 + 60 x 分 + 秒 , 每 日 為0 ~ 86399動 作 說 明 :1. 星 期 1 ~ 星 期 6, L1 ~ L3, 09:00:00 ~ 18:00:00 輸 出 為 ON2. 星 期 天 , L1, 13:00:00 ~ 20:00:00 輸 出 ON3. 其 它 時 間 , L1 ~ L3 輸 出 為 OFF<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-17 <strong>ICP</strong> <strong>DAS</strong>


階 梯 圖 程 式 : get_time<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-18 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 : controltime_val := 3600 * hour + 60 * minute + second ; (* calculate time in sec. *)(* set as False at the beginning of this ST program*)L1 := False ;L2 := False ;L3 := False ;(* Monday ~ Saturday, L1 ~ L3, 09:00:00 ~ 18:00:00 ON *)IF ( Wday >= 1) AND ( Wday = 32400 ) AND ( time_val = 46800 ) AND ( time_val


11.3.1 Demo_02 : 啟 動 , 暫 停 及 重 置 Timer專 案 程 式 架 構 :變 數 :Name Type Attribute DescriptionM1 Boolean Internal 表 示 K1 剛 被 按 下 與 否M2 Boolean Internal 表 示 K2 剛 被 按 下 與 否M3 Boolean Internal 表 示 K3 剛 被 按 下 與 否K1 Boolean Input 1 號 按 鈕K2 Boolean Input 2 號 按 鈕K3 Boolean Input 3 號 按 鈕L1 Boolean Output 1 號 輸 出L2 Boolean Output 2 號 輸 出L3 Boolean Output 3 號 輸 出T1 Timer Internal 操 作 的 timer, 初 值 設 為 T#0sLD 程 式 “prg1” :取 得 K1, K2, K3 的 上 升 脈 衝 並存 到 M1, M2, & M3<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-20 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 “demo” :(* Start timer *)IF M1 THENTSTART(T1) ;END_IF ;(* Stop timer *)IF M2 THENTSTOP(T1) ;END_IF ;(* Reset timer *)IF M3 THENT1 := T#0s ;END_IF ;“TSTART” 會 啟 動 “T1” timer“TSOP” 會 暫 停 “T1” timer重 置 “T1” timer 為 0 秒(* Output L1 ~ L3 *)L1 := ( T1 > T#2s ) AND ( T1 < T#15s ) ;L2 := L1 ;L3 := L1 ;“L1” 在 ”T1” Timer 介 於 2 ~ 15秒 時 為 TRUE<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-21 <strong>ICP</strong> <strong>DAS</strong>


11.3.2 Demo_17 : 讀 / 寫 EEPROM專 案 程 式 架 構 :變 數 : ( 關 於 變 數 陣 列 的 使 用 , 請 參 考 第 2.6 節 )Name Type Attribute DescriptionV[0..7] Integer Internal 更 改 V[0..7] 的 值 就 會 存 新 值 到 EEPROM宣 告 為 變 數 陣 列 , Dim 設 為 8Old_V[0..7] Integer Internal V[0..7] 的 前 一 個 舊 值宣 告 為 變 數 陣 列 , Dim 設 為 8TEMP Boolean Internal 暫 時 使 用 的 變 數ii Integer Internal 給 For 迴 圈 使 用 的 indexINIT Boolean Internal 當 控 制 器 剛 開 機 時 , 宣 告 初 值 為 TRUEST 程 式 “st_init” :if INIT = TRUE thencycle *)(* First scan(* Read 8 integers from EEPROM *)(* save them to Old_V[0..7] , V[0..7] *)for ii := 0 to 7 doV[ii] := eep_n_r( ii+1 ) ;Old_V[ii] := V[ii] ;End_for ;在 第 1 個 周 期 ( 剛 開 機 時 ), 從EEPROM 內 讀 取 第 1 到 8 號 位 置內 的 長 整 數 值 .(* remove protection of EEPROM *)TEMP := eep_en( ) ;開 啟 EEPROM, 之 後 方 可 寫 入 資 料end_if ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-22 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 “save” :(* save V[0..7] to EEPROM if it is modified *)(* You will find write to EEPROM take lots of time, about 23ms for each eep_n_w *)for ii := 0 to 7 do當 值 更 改 變 時 , 存 入 新 值 到 EEPROM 內IF V[ii] Old_V[ii] THENTEMP := eep_n_w( ii+1 , V[ii] ) ;Old_V[ii] := V[ii] ;END_IF ;End_for ;之 後 更 新 舊 值 變 數 = 新 值ST 程 式 “end_init” :INIT := FALSE ;scan *)(* end of first PLC在 End 區 將 “INIT” 設 為 FALSE,如 此 “INIT” 只 更 在 第 1 個 周 期時 為 TRUE<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-23 <strong>ICP</strong> <strong>DAS</strong>


11.3.3 Demo_29: 每 75 秒 記 錄 1200 筆 Short Int 並 經 由 Com3 傳 送 到 PC這 個 範 例 每 500ms 會 儲 存 I-87017 的 8 個 類 比 輸 入 點 到 short-integer 陣 列 . 然 後 當 資 料 量 達 到1200 筆 時 , 會 分 成 10 個 通 訊 封 包 , 每 個 封 包 內 含 120 筆 , 透 過 Com3 傳 到 PC.專 案 程 式 架 構 :變 數 :Name Type Attribute DescriptionM Boolean Internal 用 來 儲 存 資 料 的 觸 發 脈 衝M1 Boolean Internal 用 來 傳 送 資 料 的 觸 發 脈 衝M2 Boolean Internal 用 來 產 生 M1INIT Boolean Internal 只 更 第 1 個 周 期 時 為 TRUE, 初 值 為 TRUETMP Boolean Internal 暫 時 使 用 的 變 數A1 Integer Input I-87017 的 第 1 點A2 Integer Input I-87017 的 第 2 點A3 Integer Input I-87017 的 第 3 點A4 Integer Input I-87017 的 第 4 點A5 Integer Input I-87017 的 第 5 點A6 Integer Input I-87017 的 第 6 點A7 Integer Input I-87017 的 第 7 點A8 Integer Input I-87017 的 第 8 點count Integer Internal 目 前 正 在 處 理 的 資 料 編 號 (1~1200) , 初 值 為 1position Integer Internal 目 前 正 處 理 的 short integer 陣 列 內 的 位 置 編 號 , 1 ~256No Integer Internal 目 前 正 處 理 的 short integer 陣 列 編 號Frame_No Integer Internal 封 包 編 號 0 ~ 10, 0 表 示 不 傳 送TMP_VAL Integer Internal 暫 時 使 用 的 變 數<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-24 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 “st_init” :if INIT = TRUE thencycle *)(* First scan初 始 動 作COUNT := 1 ; (* init count to 1 *)FRAME_NO := 0 ; (* init to 0 *)M2 := False ; (* init M2 to false *)TMP := comopen(3 , 9600 , 8 , 0 ,1 ) ;end_if ;LD 程 式 “Pulse” :開 啟 Com3 為 速 率 9600, 字 元 大 小 為 8,沒 更 同 位 檢 查 & 停 止 位 元 為 1每 500 ms 產 生 M 脈 衝 , 以便 觸 發 去 記 錄 類 比 輸 入 點 的值當 M2 為 TRUE 時 , 每 500ms 產 生 M1 脈 衝 , 以 便 觸 發去 傳 送 各 筆 記 錄 封 包 到 PC<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-25 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 “Sampling” :(* no M pulse, return *)if M = False thenreturn ;end_if ;陣 列 存 240 筆 資 料No := (( COUNT – 1 ) / 240 ) + 1 ; (* which array No *)Position := COUNT – 240 * ( No – 1 ) ; (* which start position of the array *)(* Store I-87017 : 8 A/I value to short integer array *)(* Please keep in mind, the max No of short int arry can be used is 12 *)TMP := ary_w_w(No , position , A01 ) ;TMP := ary_w_w(No,position+1,A02) ;TMP := ary_w_w(No,position+2,A03) ;TMP := ary_w_w(No,position+3,A04) ;TMP := ary_w_w(No,position+4,A05) ;TMP := ary_w_w(No,position+5,A06) ;TMP := ary_w_w(No,position+6,A07) ;TMP := ary_w_w(No,position+7,A08) ;當 M 脈 衝 產 生 時 ( 每 500ms 一 次 ) 才 執 行 本ST 程 式 的 下 列 動 作 , 不 然 就 Return取 得 目 前 的 陣 列 號 碼 及 陣 列 內 每筆 資 料 要 存 入 的 起 頭 位 置 . 每 個儲 存 I-87017 的 8 個 AI值 到 目 前 陣 列 內假 如 資 料 累 積 達 1200 筆 , 透 過 Com3 把 資 料 傳到 PC ( 共 分 10 個 封 包 )If ( COUNT + 7 >= 1200 ) thenFRAME_NO := 1 ; (* set FRAME_NO=1使*)M1 為 True 以 便 在 下 一 個 ST 程M1 := True ;式 -"SendCom" 內 傳 出 第 1 個 封 包M2 := True ;COUNT := 1 ; (* reset COUNT to 1 *)使 M2 為 TRUE 以 便 在 前 一 個 LD 程 式 , 可else以 持 續 的 產 生 M1 脈 衝COUNT := COUNT + 8 ; (* next sampling *)end_if ;資 料 筆 數 尚 未 累 積 到 1200 筆 ,將 ”Count” 加 8<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-26 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 “SendCom” :If M1 = False thenReturn ;end_if ;當 M1 脈 衝 產 生 時 才 執 行 本 ST 程 式 的 下 列 動作 , 不 然 就 Return資 料 封 包 格 式 : 每 個 封 包 內 含 120 個 short integerSTX DLE FRAME_NODATA ETXnumber of bytes 1 1 1120x2 1value 0x2 0x10 當 “FRAME_NO” 為1~10 ? 0x03If ( (FRAME_NO > = 1) and (FRAME_NO


ST 程 式 “end_init” :INIT := FALSE ;scan *)(* end of first PLC在 End 區 將 “INIT” 設 為 FALSE,如 此 “INIT” 只 更 在 第 1 個 周 期時 為 TRUE如 何 測 ?將 1 個 I-87017 插 入 第 0 槽 .下 載 Demo_29準 備 一 條 RS232 通 訊 線 連 接 Com3 到 pc 的 Com1更 個 工 具 程 式 名 叫 “ComTest.exe” 放 在 <strong>ICP</strong> <strong>DAS</strong> 的 光 碟 內 . 覆 製 它 到 你 的 PC 內 .“\Napdos\<strong>ISaGRAF</strong>\some_utility\Comtest.exe” 或 由 網 路 上 下 載ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/some_utility/執 行 “ComTest”, 選 取 參 數 為 “COM1” , “9600” , “No parity” , “1 stop bit” , 然 後 點 選 “OpenCom”.應 可 看 到 每 隔 75 秒 更 10 個 封 包 傳 出<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-28 <strong>ICP</strong> <strong>DAS</strong>


11.3.4 Demo_33 : 從 Com3 讀 / 寫 User 自 行 定 義 的 通 訊 格 式本 範 例 程 式 可 讓 I-8xx7, iP-8xx7, WP-8xx7, VP-25W7 接 收 及 回 答 由 PC 經 過 RS232 通 訊 線 傳 來的 命 令 . 通 訊 格 式 定 義 如 下命 令 自 元 大 小 寫 皆 可 , 比 如 M1 與 m1 都 可 接 受通 訊 格 式 :PC 問 .M1 : 切 換 到 Mode 1M2 : 切 換 到 Mode 2M3 : 切 換 到 Mode 3Txxxx : 改 變 周 期 時 間 到 xxxx ms例 如 . T250 會 改 變 成 250 ms控 制 器 回 .OKPC 問 .M? : 詢 問 目 前 的 Mode控 制 器 回 .Mx : 例 如 回 M1 表 示 Mode 1PC 問 .T? : 詢 問 目 前 的 周 期 時 間控 制 器 回 .Txxxx : 例 如 回 T1500 表 示 周 期 時 間 為 1500 msTimeout:一 個 正 確 的 命 令 需 在 5 秒 內 送 達 , 不 然 視 為 無 效專 案 架 構 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-29 <strong>ICP</strong> <strong>DAS</strong>


變 數 :Name Type Attribute DescriptionL1 Boolean Output 1 號 輸 出L2 Boolean Output 2 號 輸 出L3 Boolean Output 3 號 輸 出INIT Boolean Internal 只 更 第 1 個 周 期 時 為 TRUE, 初 值 為 TRUETMP Boolean Internal 暫 時 使 用 的 變 數Mode Integer Internal 輸 出 模 式 , 1 ~ 3Step Integer Internal 目 前 步 驟NUM Integer Internal 已 收 到 的 byte 數 量Num_com3 Integer Internal Comary_R 函 數 的 回 傳 數 量byt Integer Internal 目 前 處 理 的 那 個 byteindex Integer Internal byte array 的 編 號CMD Integer Internal 命 令 型 態 , M, m, T, 或 tTMP_val Integer Internal 暫 時 使 用 的 變 數ii Integer Internal 暫 時 使 用 的 變 數T1 Timer Internal 周 期 時 間 , 50 ~ 9999 mstout Timer Internal 用 來 測 量 是 否 timeout 的 Timer, 當 第 1 個 byte 收 到 時就 開 始 計 時ST 程 式 “st_init” :ifINIT = TRUE then(* Init *)Mode := 1 ;STEP := 0 ;T1 := T#500ms ;NUM := 0 ;tout := T#0s ;初 始 動 作(* Open Com3 as baud=9600, char. size=8, no parity & stop bit=1 *)TMP := comopen( 3 , 9600 , 8 , 0 , 1 ) ;end_if ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-30 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 “R_W_COM” :(* STEP: *)(* 0: no valid data coming *)(* 1: first valid byte received *)(* 2: receive '?' command *)(* 10: check if other byte is '0' ~ '9' *)(* 21: receive complete command *)num_com3 := 0 ; (* reset to 0 *)if ComReady(3) thennum_com3 := Comary_R( 3 , 1) ;end_if ;(* if data coming, process it *)index := 1 ;while num_com3 > 0 donum_com3 := num_com3 – 1 ;byt := array_r(1 , index) ;index := index + 1 ;測 詴 是 否 更 資 料 從 Com3 傳 進 來若 更 , 把 傳 進 來 的 全 部 byte 讀 到 1 號 陣 列處 理 每 個 進 來 的 byte從 陣 列 內 取 得 目 前 要 處 理 的 bytecase STEP of0:case byt of (* check 1st byte *)16#4D , 16#6D , 16#54 , 16#74 : (* 1st byte is valid, M, m, T, or t *)STEP := 1 ; (* for next STEP *)NUM := 1 ; (* plus valid received byte number by 1 *)TSTART(tout) ; (* start ticking tout *)CMD := byt ; (* record command type *)TMP := Array_w( 2 , NUM , byt ) ; (* save 1st valid byte to bytearray 2*)end_case ;1:case byt of (* check 2nd byte *)16#3F : (* 2nd byte is '?' *)STEP := 2 ; (* for next STEP *)步 驟 0 : 檢 查 頭 一 個 byte 對 不 對步 驟 1 : 檢 查 第 2 個 byte 對 不 對NUM := 2 ; (* plus valid received byte number by 1 *)TMP := Array_w( 2 , NUM , byt ) ; (* save 2nd valid byte to bytearray 2*)elseif ( CMD = 16#4D or CMD = 16#6D ) (* cmd is M, m *)and ( byt >= 16#31 ) and ( byt = 16#30 ) and ( byt


array 2*)ElseSTEP := 0 ; (* not valid data, reset STEP to 0 *)TSTOP(tout) ; (* stop ticking "tout" *)Tout := T#0s ; (* reset "tout" *)NUM := 0 ; (* reset NUM *)end_if ;end_case ;步 驟 2 : 收 到 第 2 個 byte = „?‟ 後 , 檢2:查 第 3 個 byte 是 不 是 if byt = 16#0D then (* check 3rd byte is or not *)STEP := 21 ; (* complete command is received *)(* send answer to Com3 *)case CMD of收 到 正 確 的 “M?” 命 令 , 回 答16#4D , 16#6D : (* M or m *) “Mx”, x = „1‟ ~ „3‟TMP := ComWrite( 3 , 16#4D ) ; (* M *)TMP := ComWrite( 3 , Mode + 16#30 ) ; (* Mode *)TMP := ComWrite(3 , 16#0D ) ; (* *)16#54 , 16#74 : (* T or t *)收 到 正 確 的 “T?” 命 令 , 回 答TMP := ComWrite(3 , 16#54) ; “Txxxx”, (* T x *) = „0‟ ~ „9‟TMP := ComStr_w( 3 , MSG( ANA( T1 ) ) ) ; (* Timer value *)TMP := ComWrite( 3 , 16#0D ) ; (* *)end_case ;elseSTEP := 0 ; (* not valid data, reset STEP to 0 *)TSTOP(tout) ; (* stop ticking "tout" *)tout := T#0s ; (* reset "tout" *)NUM := 0 ; (* reset NUM *)end_if ;步 驟 10 : 當 收 到 的 是 ”Mx” 或10:“Txxxx” 命 令 , 檢 查 第 3 個 及 其 它 的if ( byt = 16#0D ) then (* received byte *)STEP := 21 ; (* complete command is received *)case CMD of16#4D , 16#6D : (* M or m *)收 到 正 確 的 “Mx” 命 令 ,Mode := Array_r( 2 , 2 ) - 16#30 ; (* Change 回 Mode 答 ”OK”, *) 並 切 換 Mode(* send answer to Com3 *)TMP := ComStr_w( 3 , 'OK') ;TMP := ComWrite(3 , 16#0D ) ; (* *)16#54 , 16#74 : (* T or t *)(* get Period *)TMP_val := 0 ;for ii := 1 to NUM – 1 do收 到 正 確 的 “Txxx” 命 令 , 回答 ”OK”, 並 改 變 周 期 Timer 值TMP_val := 10 * TMP_val + ( Array_r( 2 , 1 + ii ) - 16#30 ) ;end_for ;if ( TMP_val >= 50 ) and (TMP_val < 10000) then (* T1 mustbe in 50 ~ 9999 ms *)T1 := TMR(TMP_val) ; (* Change T1 *)(* send answer to Com3 *)TMP := ComStr_w(3 , 'OK') ;TMP := ComWrite(3 , 16#0D ) ; (* *)end_if ;end_case ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-32 <strong>ICP</strong> <strong>DAS</strong>


收 到 „0‟ ~ „9‟, 完 整 的 命 令 還 沒 收 完elsif (byt >= 16#30) and (byt 5 then (* command is too long, drop it *)STEP := 0 ; (* reset STEP *)TSTOP(tout) ; (* stop ticking "tout" *)Tout := T#0s ; (* reset "tout" *)NUM := 0 ; (* reset NUM *)EXIT ; (* exit while loop *)end_if ;elseSTEP := 0 ; (* not valid data, reset STEP to 0 *)TSTOP(tout) ; (* stop ticking "tout" *)Tout := T#0s ; (* reset "tout" *)NUM := 0 ; (* reset NUM *)end_if ;end_case ;end_while ;(* Check timeout *)if tout > T#5s then (* if timeout *)STEP := 0 ; (* reset STEP *)TSTOP(tout) ; (* stop ticking "tout" *)Tout := T#0s ; (* reset "tout" *)NUM := 0 ; (* reset NUM *)end_if ;(* reset STEP to 0 *)if STEP = 21 thenTSTOP(tout) ; (* stop ticking "tout" *)Tout := T#0s ; (* reset "tout" *)NUM := 0 ; (* reset NUM *)STEP := 0 ;end_if ;檢 查 是 否 timeout, 一 個 正 確 的命 令 需 在 5 秒 內 送 達 , 不 然 視 為無 效正 確 的 命 令 已 處 理 , 重 置 STEP為 0<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-33 <strong>ICP</strong> <strong>DAS</strong>


SFC 程 式 “Out” :每 個 敘 述 以 分 號 “;” 結 尾若 Mode = 1, 執 行 子 程 式 “action1”若 Mode = 2, 執 行 子 程 式 “action2”若 Mode = 3, 執 行 子 程 式 “action3”SFC 子 程 式 “action1” :Mode 1L1, L2 & L3 設 為 與 SFC 的 STEP 1 相同 的 值 , True or FalseGT1.T > T1 表 示 若 停 流 在 SFC step 1 的 時 間 超過 “T1”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-34 <strong>ICP</strong> <strong>DAS</strong>


SFC 子 程 式 “action2” :Mode 2SFC 子 程 式 “action3” :Action(P) :L1 := TRUE ; L2 :=FALSE ;L3 := FALSE ;End_action ;Mode 3Action(P) :L1 := TRUE ; L2 :=TRUE ;L3 := FALSE ;End_action ;Action(P) :L1 := TRUE ; L2 :=TRUE ;L3 := TRUE ;End_action ;Action(P) :L1 := FALSE ; L2 :=FALSE ;L3 := FALSE ;End_action ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-35 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 “end_init” :INIT := FALSE ;scan *)(* end of first PLC在 End 區 將 “INIT” 設 為 FALSE,如 此 “INIT” 只 更 在 第 1 個 周 期時 為 TRUE如 何 測 ?1 . 下 載 Demo_33 到 控 制 器2. 準 備 1 條 RS232 線 連 接 Com3 到 PC 的 Com13. 可 以 開 啟 1 個 “Hyper Terminal” 視 窗 為 Com1, 9600, N, 8, 1 並 設 成 “No flow control” ,之 後 可 用 鍵 盤 輸 入M2 : 切 換 到 mode 2T? : 詢 問 目 前 的 輸 出 周 期 時 間T200 : 改 變 周 期 時 間 為 200 msT1500 : 改 變 周 期 時 間 為 1500 msM? : 詢 問 目 前 的 Mode 代 表 Enter 字 元<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-36 <strong>ICP</strong> <strong>DAS</strong>


11.3.5 Wdemo_24 : 當 Alarm 1 ~ 8 發 生 時 , 從 Com2 送 出 Alarm 訊 息本 程 式 可 用 於 Wincon-8xx7/8xx6 或 I-8xx7. 若 是 Wincon , 請 把 “PORT” 變 數 的 初 值 宣 告 為2, 若 是 I-8xx7, 請 宣 告 為 3.本 範 例 放 於 W-8xx7 CD-ROM:\napdos\isagraf\wincon\demo\ “wdemo_24” 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/demo/ “wdemo_24”本 程 式 更 使 用 變 數 陣 列 , 請 參 考 第 2.6 節 關 於 變 數 陣 列 的 詳 細 說 明變 數 定 義 :Name Type Attribute DescriptionINIT Boolean Internl 宣 告 初 值 為 TRUETMP Boolean Internal 暫 時 使 用 的 變 數Tick1 Boolean Internal 每 秒 用 來 產 生 1 個 pulse TrueIN[0..7] Boolean Input 輸 入 訊 號 , 宣 告 為 變 數 陣 列 , Dim 欄 位 設 為 8OLD_IN[0..7] Boolean Internal 用 來 記 錄 輸 入 訊 號 的 前 一 個 Scan 的 舊 值宣 告 為 變 數 陣 列 , Dim 欄 位 設 為 8ii Integer Internal 給 ST 語 言 For 迴 圈 使 用 的 變 數Port Integer Internal Alarm 訊 息 要 送 出 去 的 COM PORT 編 號 , 宣 告 初 值為 2CNT[0..7] Integer Internal 用 來 計 算 輸 入 訊 號 觸 發 後 經 過 的 秒 數宣 告 為 變 數 陣 列 , Dim 欄 位 設 為 8Msg1 Message Internal 要 送 出 的 Alarm 訊 息 , 長 度 宣 告 為 128專 案 架 構 :動 作 說 明 :1. 當 輸 入 訊 號 IN[0..7] 由 False 上 升 到 True 時 , 會 開 始 計 時 3 秒 , 若 這 3 秒 內 輸 入 訊 號 一 直維 持 在 True, 則 3 秒 時 間 一 到 , 會 發 出 第 一 個 告 警 訊 息 到 COM2 串 口2. 當 第 一 次 告 警 訊 息 發 出 後 , 重 新 再 計 時 30 秒 , 若 這 30 秒 內 輸 入 訊 號 還 是 一 直 維 持 在 True,則 30 秒 時 間 一 到 , 會 發 出 另 一 個 告 警 訊 息 到 COM2 串 口 , 之 後 一 樣 再 重 新 再 計 時 30 秒 , …3. 只 要 輸 入 訊 號 IN[0..7] 下 降 為 False, 就 不 再 計 時 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-37 <strong>ICP</strong> <strong>DAS</strong>


如 何 測 詴 :1. 請 下 載 wdemo_24 到 W-8xx7 + slot 1: I-8077 ( 若 是 I-8xx7 請 宣 告 PORT 初 值 為 3)2. 連 接 RS232 通 訊 線 如 下Wincon (COM2)2 RXD3 TXD5 GNDPC (COM1)2 RXD3 TXD5 GND若 是 用 I-8xx7 則 如 下I-8xx7 (COM3)2 TXD3 RXD5 GNDPC (COM1)2 RXD3 TXD5 GND3. 開 啟 PC 的 “ 超 級 終 端 機 ” (Hyper terminal) 於 COM1, baud rate 設 為 9600, 8 char. size, Noparity, 1 stop bit 與 No flow control. 之 後 將 I-8077 的 Input 1 或 2 或 … 從 FALSE 切 換 為TRUE, 並 維 持 在 True 等 候 約 3 秒 . 若 正 常 , Hyper terminal 應 該 會 顯 示 對 應 的 第 1 個 告 警 訊息 . 之 後 再 等 約 30 秒 , 若 正 常 , Hyper terminal 應 該 會 顯 示 對 應 的 第 2 個 告 警 訊 息 . 若 都 不 把Input 切 回 False, 將 每 過 30 秒 就 會 送 出 一 個 告 警 訊 息查 看 是 否 更 出 現 Alarm 訊 息<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-38 <strong>ICP</strong> <strong>DAS</strong>


程 式 內 容 :LD1 程 式 :每 秒 產 生 一 個 Pulse 到 Tick1ST1 程 式 :If INIT thenINIT := FALSE ; (* 設 INIT 為 False, 因 此 這 段 code 只 更 第 一 個 PLC Scan 會 執行 到 *)TMP := COMOPEN( PORT , 9600 , 8 , 0 , 1 ) ; (* 開 啟 COM2 串 口 , 9600,8,N,1 *)(* 設 CNT[0..7] 的 初 值 為 -7 *)for ii := 0 to 7 doCNT[ii] := -7 ;end_for ;end_if ;(* 測 詴 IN[0..7] 是 否 由 False 上 升 為 True *)for ii := 0 to 7 do(* 測 詴 IN[0..7] 訊 號 是 否 上 升 為 True *)if ( IN[ii] = True ) and ( OLD_IN[ii]= False ) then(* 訊 號 更 上 升 , 設 對 應 的 CNT[ ] 值 為 -3 *)(* 如 果 CNT[ ] 之 值 不 是 –7 , 表 示 “ 輸 入 訊 號 被 觸 發 了 " *)(* 之 後 CNT[ ] 之 值 將 會 每 過 1 秒 加 1, 除 非 訊 號 切 換 回 False *)CNT[ii] := -3 ;end_if ;(* 如 果 輸 入 訊 號 切 換 回 False, 對 應 的 CNT[ ] 之 值 會 設 為 –7 來 表 示 “ 無 訊 號 被 觸 發 ” *)if IN[ii] = False then (* 若 訊 號 切 換 回 False *)(* 將 對 應 的 CNT[ ] 之 值 會 設 為 –7 來 表 示 “ 無 訊 號 被 觸 發 ” *)CNT[ii] := -7 ;end_if ;if Tick1 then (* Tick1 是 在 LD1 程 式 內 每 秒 會 產 生 1 次 Pulse True *)(* 如 果 CNT[ ] 之 值 大 於 –7 , 表 示 訊 號 更 被 觸 發 *)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-39 <strong>ICP</strong> <strong>DAS</strong>


if CNT[ii] > -7 then了 *)CNT[ii] := CNT[ii] + 1 ; (* 值 加 1 , Tick1 為 True 表 示 時 間 又 1 秒 過 去(* ------------------------------------------------------------------------------ *)(* 輸 入 訊 號 被 觸 發 後 且 維 持 在 觸 發 狀 態 已 經 超 過 3 秒 , 從 COM2 送 出 第 1 次Alarm 訊 息 *)if ( CNT[ii] = 0 ) then (* 當 CNT[ ] 之 值 由 –3, -2, -1 到 變 為 0 時 , 送 出第 1 次 Alarm 訊 息 *)CNT[ii] := 0 ; (* 將 值 回 復 為 0, 準 備 計 時 到 30 秒 *)(* 從 COM2 送 出 Alarm 訊 息 *)msg1 := 'Alarm ' + MSG( ii + 1 ) + ' $0A$0D' ;TMP := comstr_w( PORT , msg1 ) ;end_if ;(* ------------------------------------------------------------------------------ *)(* ------------------------------------------------------------------------------ *)(* 輸 入 訊 號 被 觸 發 後 且 維 持 在 觸 發 狀 態 又 經 過 超 過 了 30 秒 , 從 COM2 送 出 第 2訊 息 *)if ( CNT[ii] = 30 ) then (* 當 CNT[ ] 之 值 由 1, 2, … 到 變 為 30 時 , 送 出第 2 次 訊 息 *)CNT[ii] := 0 ; (* 將 值 回 復 為 0, 準 備 計 時 到 下 一 次 30 秒 *)(* 從 COM2 送 出 Alarm 訊 息 *)msg1 := 'Alarm ' + MSG( ii + 1 ) + ', 30 sec past ! $0A$0D' ;TMP := comstr_w( PORT , msg1 ) ;end_if ;(* ------------------------------------------------------------------------------ *)end_if ; (* "if CNT[ ] > -7 then" *)end_if ; (* "if Tick1 then" *)(* 更 新 OLD_IN[ ] 之 值 *)OLD_IN[ii] := IN[ii] ;end_for ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-40 <strong>ICP</strong> <strong>DAS</strong>


11.3.6: 範 例 Whmi_12: 使 用 Wincon-8xx7, 每 0.05 秒 記 錄 I-8017H 的 1 ~ 4 個 電壓 值 於 RAM Disk 內 的 一 個 檔 案 , 連 續 記 錄 1~10 分 鐘 , 之 後 可 在 PC 上 開 M.S.Excel 來 看 1 ~ 4 條 趨 勢 圖注 意 : 若 PAC 是 WP-8xx7, XP-8xx7-CE6 與 VP-25W7 / VP-23W7, 本 節 所 述 的 功 能 也 可 以套 用 , 但 差 別 是 需 使 用 各 別 PAC 的 CD 的 內 容 與 file ( 內 容 類 似 , 但 不 同 於 Wincon CD).另 外 WP-8xx7, XP-8xx7-CE6 與 VP-25W7 / VP-23W7 等 PAC 並 沒 更\CompactFlash\Temp\HTTP\WebHMI\ , WP-8xx7 與 VP-25W7 / VP-23W7 是 使 用\Micro_SD\Temp\HTTP\WebHMI\ , 而 XP-8xx7-CE6 是 使 用\System_Disk\Temp\HTTP\WebHMI\. 詳 細 內 容 請 參 考 以 下 網 址 :WP-8xx7 : “setup_web_hmi_demo.pdf” 放 於ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/wp_webhmi_demo 內 .VP-25W7 / VP-23W7 : “setup_web_hmi_demo.pdf” 放 於ftp://ftp.icpdas.com/pub/cd/vp-25w7-23w7/napdos/isagraf/vp-25w7-23w7/vp-webhmi-demo/ 內XP-8xx7-CE6 : “xpce6_setup_web_hmi_demo.pdf”ftp://ftp.icpdas.com/pub/cd/xp-8xx7-ce6/napdos/isagraf/xp-8xx7-ce6/xpce6-webhmi-demo/ 內本 範 例 程 式 為 Whmi_12.pia 只 能 在 Wincon-8xx7/8xx6 的 驅 動 3.36 版 或 更 高 的 版 本 使 用 ,放 於新 的 驅 動 : http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htm範 例 程 式 放 於 W-8xx7 CD-ROM:\napdos\isagraf\wincon\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/demo/W-8xx7 提 供 3 種 記 錄 資 料 的 方 式 . 一 種 是 在 RAM Disk 內 讀 / 寫 File, 本 範 例 就 是 如 此 , 適 合最 小 取 樣 時 間 可 到 40ms 的 應 用 ( 最 快 25Hz). 存 放 於 RAM Disk 內 的 File, 關 機 後 File 會 消失 .另 一 種 為 把 資 料 記 錄 在 “\CompactFlash\” 路 徑 內 . 對 CompactFlash 卡 做 讀 / 寫 會 比 RAMDisk 內 讀 / 寫 File 慢 很 多 . 它 的 優 點 是 關 機 後 File 不 會 消 失 , 缺 點 是 讀 / 寫 很 慢 .第 3 種 是 最 快 的 一 種 方 式 , 最 小 取 樣 時 間 可 到 10ms 的 應 用 , 即 最 快 100Hz. 請 參 考 第 11.3.10的 範 例 說 明 .但 此 最 短 取 樣 時 間 也 跟 程 式 的 複 雜 度 更 關 , 若 您 的 PLC 程 式 執 行 起 來 的 PLC Scan Time 已經 是 100ms, 那 只 能 做 大 於 100 ms 的 取 樣 記 錄Web HMI 的 原 始 碼 放 於 ( 關 於 Web HMI 請 參 考 Wincon <strong>ISaGRAF</strong> Getting Started 第 3, 4, 5章 : W-8xx7 CD-ROM:\napdos\isagraf\wincon\english_manu\ “getting_started_w8337.pdf”)W-8xx7 CD-ROM:\napdos\isagraf\wincon\WebHMI_Demo\ 內 的 whim_12 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/webhmi_demo/若 您 PC 上 裝 的 <strong>ISaGRAF</strong> 找 不 到 Msg_F , Msg_N , ARY_F_R, AFY_F_W 等 函 式 , 請 訪 問http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 來 下 載 “<strong>ICP</strong> <strong>DAS</strong> utilities For<strong>ISaGRAF</strong>” , 解 壓 縮 後 , 執 行 其 內 的 setup.exe 來 安 裝 新 的 函 式 進 去 <strong>ISaGRAF</strong> 內<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-41 <strong>ICP</strong> <strong>DAS</strong>


如 何 測 詴 本 範 例 :1. 首 先 請 把 I-8024 插 在 W-8xx7 的 Slot 2, I-8017H 插 在 Slot 3, 把 I-8024 的 第 1 到 4 個 電壓 輸 出 點 連 接 到 I-8017H 的 第 1 到 4 個 電 壓 輸 入 點 . 之 後 上 電 給 Wincon, 然 後 在 <strong>ISaGRAF</strong>Driver 上 啟 用 Web HMI 功 能 , 為 方 便 操 作 , 請 先 不 要 選 取 “Enable Account Security”2. 接 下 來 請 把 Web HMI Demo 12 的 所 更 file 用 ftp ( 例 如 在 IE 上 輸 入 “ftp://10.0.0.103”) ,丟 到 Wincon 的 \CompactFlash\Temp\HTTP\WebHMI\ 內Web HMI 的 原 始 碼 放 於W-8xx7 CD-ROM:\napdos\isagraf\wincon\WebHMI_Demo\ 內 的 whim_12 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/webhmi_demo/共 更 7 個 File 與 2 個 目 錄 要 copy 到 Wincon 的 \CompactFlash\Temp\HTTP\WebHMI\內 :Main.htm , menu.htm , index.htm , login.htm , main.dll , login.dll , whim_filter.dllimg 目 錄 與 msg 目 錄<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-42 <strong>ICP</strong> <strong>DAS</strong>


3. 之 後 請 把 <strong>ISaGRAF</strong> 的 whim_12 程 式 下 載 到 W-8xx7 內 . ( 請 做 完 步 驟 2, 再 做 步 驟 3 )本 範 例 程 式 為 Whmi_12.pia 只 能 在 Wincon-8xx7/8xx6 內 使 用 , 放 於W-8xx7 CD-ROM:\napdos\isagraf\wincon\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/demo/4. PC 上 開 啟 Internet Explorer ( 至 少 需 為 IE 5.0 版 , 或 更 高 的 版 本 ), 上 方 輸 入 W-8xx7 的 IP,連 上 Wincon 後 , 請 按 “Enter” 進 入<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-43 <strong>ICP</strong> <strong>DAS</strong>


5. 之 後 請 輸 入 “Interval” 的 值 , 單 位 為 0.001 秒 , 如 給 50 指 的 是 每 0.05 秒 , 記 錄 一 次 .而 ”Period” 值 指 的 是 要 記 錄 多 久 , 單 位 為 分 鐘 . 輸 入 好 後 , 按 下 “Go” 可 開 始 動 作 . 之後 I-8024 的 第 1 到 4 點 會 輸 出 不 同 的 電 壓 , 若 更 在 步 驟 1 內 將 I-8024 的 第 1 到 4 個 電壓 輸 出 點 連 接 到 I-8017H 的 第 1 到 4 個 電 壓 輸 入 點 , 則 I-8017H 的 輸 入 會 更 不 同 的 曲 線 變化 會 被 記 錄 下 來 .在 記 錄 過 程 中 , 會 看 到 “Current record number” 的 值 會 一 直 增 加 , 當 它 等 於 “Total recordnumber” 之 值 時 , 就 表 示 記 錄 完 畢 . 此 時 可 以 按 下 “Download record File” , 點 選 “ 儲 存 ” 來 下載 到 PC 內 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-44 <strong>ICP</strong> <strong>DAS</strong>


6. 記 錄 檔 “curver1.js” 下 載 到 PC 後 , 請 在 PC 上 執 行 M.S. Excel , 開 啟 “curve1.js”之 後 請 先 點 選 最 左 上 方 的 值 , 再 按 住 “Shift” 鍵 , 然 後 同 時 按 下 “Ctrl” – “End” , 這 樣 會 把所 更 資 料 選 起 來 .之 後 請 按 下 “ 圖 表 精 靈 ”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-45 <strong>ICP</strong> <strong>DAS</strong>


選 取 “ 折 線 圖 ” , 右 方 請 選 取 左 上 角 那 一 個 圖 形 , 再 按 “ 下 一 步 ”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-46 <strong>ICP</strong> <strong>DAS</strong>


最 後 得 到 趨 勢 圖 如 下 , 您 可 以 調 整 圖 的 大 小 , 也 可 以 用 滑 鼠 選 取 某 一 條 顏 色 的 曲 線 , 當 您 用滑 鼠 指 到 該 曲 線 的 某 個 位 置 時 , 會 顯 示 該 點 的 資 料 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-47 <strong>ICP</strong> <strong>DAS</strong>


為 了 日 後 可 以 方 便 重 覆 查 詢 該 曲 線 , 請 使 用 “ 另 存 新 檔 ”, 將 曲 線 儲 存 成 “Microsoft OfficeExcel (*.xls)” 格 式 . 這 樣 下 回 就 可 直 接 用 滑 鼠 雙 擊 “curve1.xls” 來 直 接 開 啟 該 趨 勢 圖 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-48 <strong>ICP</strong> <strong>DAS</strong>


專 案 架 構 :變 數 定 義 :Name Type Attribute DescriptionGo1 Boolean Internl 若 設 為 True 則 開 始 動 作 , addr 設 為 21 (16 進 位 值 為15)Stop1 Boolean Internal 若 設 為 True 則 停 止 動 作 , addr 設 為 22 (16 進 位 值 為16)TMP Boolean Internal 暫 時 使 用 的 變 數MUM_CH Integer Constant常 數I-8017H 上 要 記 錄 幾 個 Channel 的 電 壓 值本 範 例 記 錄 4 個 Channel (Ch.1 到 4)File1 Integer Internal File IDSTEP1 Integer Internal 0: 無 動 作 , 1: 記 錄 中 , 2: 記 錄 完 畢Period1 Integer Internal 共 要 記 錄 多 久 , 單 位 為 分 鐘 , addr 設 為 3Interval1 Integer Internal 多 久 記 錄 一 筆 資 料 , 單 位 為 0.001 秒 , addr 設 為 1Total_record1 Integer Internal 本 次 共 更 多 少 筆 資 料 要 記 錄 , 由 程 式 根 據 Period1 與Interval1 之 值 自 動 算 出 , addr 設 為 5Record_cnt1 Integer Internal 目 前 已 經 完 成 記 錄 的 資 料 數 量 , addr 設 為 7ii Integer Internal 給 for 迴 圈 使 用i8017H[0..7] Integer Input 為 變 數 陣 列 , Dim 設 為 8, 需 連 接 到 I-8017H 的 Ch1.到 8Volt1[0..7] REAL Internal 為 變 數 陣 列 , Dim 設 為 8, I-8017H 的 Ch1. 到 8 轉 換 後的 電 壓 值i8024[0..3] Integer Output 為 變 數 陣 列 , Dim 設 為 4, 需 連 接 到 I-8024 Ch1. 到 4T1 Timer Internal 作 為 計 時 用 的 TimerT1_next Timer Internal 下 一 筆 資 料 將 於 何 時 去 記 錄 下 來 , 程 式 自 動 算 出T1_Interval Timer Internal 每 2 筆 記 錄 的 時 間 間 隔File_name1 Message Internal File name, 長 度 64, 初 值 為 \Web_Data1\curve1.jsWeb HMI 只 支 持 RAM Disk File 於 \Web_Data1\ 內若 是 CompactFlash File 則 Web HMI 只 支 持 於\CompactFlash\Temp\HTTP\Data\ 內 ( 參 見 11.2 節 的Whmi_08 範 例 )Msg1 Message Internal 操 作 狀 態 , 長 度 255, 初 值 為 “ 無 動 作 ”, addr 設 為 41(16 進 位 值 為 29)Str1 Message Intenal 長 度 255, 程 式 內 部 使 用<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-49 <strong>ICP</strong> <strong>DAS</strong>


I/O 連 結 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-50 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 – Sim_out------------------------------------------------------------------------------------------------------------------------(* 讓 I-8024 的 Ch1 到 Ch4 輸 出 不 同 的 Sin , Cos 電 壓 曲 線 *)(* 2 * Pi * T1 / 60000 = T1 * 1.047197E-4 *)(* 2 * Pi * T1 / 120000 = T1 * 5.235985E-5 *)i8024[0] := ANA( sin( REAL(T1) * 1.047197E-4 ) * 3276.8 ) ;i8024[1] := ANA( cos( REAL(T1) * 5.235985E-5 ) * 3276.8 ) ;i8024[2] := ANA( sin( REAL(T1) * 1.047197E-4 ) * 6553.6 ) ;i8024[3] := ANA( cos( REAL(T1) * 5.235985E-5 ) * 6553.6 ) ;------------------------------------------------------------------------------------------------------------------------ST 程 式 – ST1------------------------------------------------------------------------------------------------------------------------(* 若 Stop1 被 設 為 TRUE, 則 停 止 T1 的 計 時 , STEP1 設 為 0 *)if Stop1 thenStop1 := False ;STEP1 := 0 ; (* STEP1 設 為 0: 無 動 作 *)TStop(T1) ; (* 停 止 T1 的 計 時 *)T1 := T#0s ;Msg1 := 'User stop recording !' ;end_if ;(* 若 Go1 被 設 為 TRUE, 準 備 開 始 動 作 *)if Go1 thenGo1 := False ;(* STEP1 : 0: 無 動 作 , 1: 記 錄 中 , 2: 記 錄 完 畢 *)if STEP1 = 1 thenMsg1 := 'It is still recording now ...' ; (* 更 新 操 作 狀 態 的 顯 示 為 “ 仍 在 記 錄中 …” *)else(* 檢 查 Interval1 之 值 設 的 對 不 對 , 需 為 40 到 10000 之 間 , 單 位 為 0.001 秒 *)If ( Interval1 < 40 ) or ( Interval1 > 10000 ) thenMsg1 := 'Wrong Interval value, it should be in 40 to 10000 milli-second !' ;(* 檢 查 Period1 之 值 設 的 對 不 對 , 需 為 1 到 10 之 間 , 單 位 為 分 鐘 *)elsif ( Period1 < 1 ) or ( Period1 > 10 ) thenMsg1 := 'Wrong Period value, it should be in 1 to 10 minute !' ;else(* 值 設 的 正 確 , 接 下 來 建 立 新 檔 案 *)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-51 <strong>ICP</strong> <strong>DAS</strong>


File1 := F_creat( File_name1 ) ;if File1=0 then (* 建 立 新 檔 案 若 失 敗 , 就 不 動 作 *)Msg1 := 'Create File ' + 'File_nam1 Error !!!' ;else (* 建 立 新 檔 案 若 成 功 , 開 始 動 作 *)TMP := F_close( File1 ) ; (* 檔 案 只 要 操 作 完 , 就 需 關 閉 *)total_record1 := ( Period1 * 60000 ) / Interval1 ; (* 算 出total_record1 值 *)record_cnt1 := 0 ; (* 將 目 前 已 記 錄 資 料 數 量 設 為 0 *)STEP1 := 1 ; (* 將 STEP1 設 為 1: 記 錄 中 *)Msg1 := 'Recording now ...' ;end_if ;end_if ;(* 啟 動 T1 開 始 從 0 起 計 時 *)T1 := T#0s ;T1_Interval := TMR( Interval1 ) ;T1_next := T1 + T1_Interval ;TStart( T1 ) ;end_if;end_if ;if STEP1=1 then (* 1: 記 錄 中 *)if T1 >= T1_next then (* 當 T1 計 時 到 下 1 筆 該 記 錄 的 時 間 點 時 , 就 準 備 記錄 1 筆 資 料 *)T1_next := T1_next + T1_Interval ; (* 重 新 設 定 下 1 筆 該 記 錄 的 時 間 點 *)(* 因 為 Timer 最 多 只 能 計 時 到 23 小 時 59 分 59 秒 , 所 以 提 前 在 剛 過 20 小 時 之 後 , 就 Reset為 0 *)(* 本 範 例 最 多 只 更 計 時 10 分 鐘 , 所 以 不 會 超 過 , 以 下 這 段 的 用 意 , 在 於 給 使 用 者 參 考 用*)(* Wincon 的 RAM Disk 容 量 若 只 更 跑 <strong>ISaGRAF</strong>, 應 該 最 多 可 以 寫 File 到 16M bytes *)(* ---------------------------------------------------------------- *)if T1 >= T#20h thenT1 := T#0s ;T1_next := T1 + T1_Interval ;end_if ;(* ---------------------------------------------------------------- *)(* 開 啟 File 準 備 寫 入 一 筆 資 料 *)(* ---------------------------------------------------------------- *)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-52 <strong>ICP</strong> <strong>DAS</strong>


File1 := F_wopen( File_name1 ) ; (* 開 啟 為 可 讀 / 可 寫 模 式 *)if File1=0 then(* 若 開 啟 File 失 敗 , 不 動 作 *)Msg1 := 'Save File ' + File_name1 + ' Error !!!' ;STEP1 := 0 ;Tstop( T1 ) ; (* 停 止 T1 的 記 時 *)return ; (* 跳 離 此 ST 程 式 *)T1 := T#0s ;end_if ;(* ---------------------------------------------------------------- *)str1 := '' ; (* 一 開 始 將 str1 設 為 空 字 串 *)for ii := 0 to NUM_CH - 1 do(* 轉 換 i8017H 的 類 比 輸 入 值 為 電 壓 值 *)Volt1[ii] := Real( i8017H[ii] ) * 0.000305176 ; (* 10.0 / 32768 =0.000305176 *)str1 := str1 + Rea_Str2( Volt1[ii] , 3 ) + '$09' ; (* 分 隔 字 元 為 *)end_for ;str1 := str1 + '$0D$0A' ; (* 加 入 字 元 於 每 行 尾 端 *)TMP := F_end( File1 ) ; (* 移 到 檔 案 的 最 後 方 來 寫 入 *)TMP := F_writ_s( File1 , str1 ) ; (* 寫 入 字 串 *)TMP := F_close( File1 ) ; (* 檔 案 只 要 操 作 完 , 就 需 關 閉 *)record_cnt1 := record_cnt1 + 1 ; (* 目 前 已 記 錄 資 料 數 量 加 1 *)(* 檢 查 是 否 所 更 資 料 都 已 記 錄 完 畢 *)if ( record_cnt1 >= total_record1 ) thenSTEP1 := 2 ; (* 將 STEP1 設 為 2: 記 錄 完 畢 *)Msg1 := 'Record is finished ! You may download the record file to your PCnow !' ;Tstop( T1 ) ; (* 停 止 T1 的 計 時 *)T1 := T#0s ;end_if ;end_if ;end_if;------------------------------------------------------------------------------------------------------------------------<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-53 <strong>ICP</strong> <strong>DAS</strong>


11.3.7: 範 例 Demo_71: 使 用 I-8437-80 或 I-8837-80, 每 0.05 秒 記 錄 I-8017H 的 1~ 4 個 電 壓 值 於 S-256 / S-512 內 的 一 個 檔 案 , 連 續 記 錄 1~10 分 鐘 , 之 後 可 在 PC上 開 M.S. Excel 來 看 1 ~ 4 條 趨 勢 圖本 範 例 程 式 為 Demo_71 , 適 合 在 I-8437-80 或 I-8837-80 內 執 行 ,3.19 或 以 上 版 本 , 放 於(80MHz) 驅 動 程 式 請 使 用新 的 驅 動 : http://www.icpdas.com/products/PAC/i-8000/isagraf-link1.htm範 例 程 式 放 於 I-8000 CD-ROM:\napdos\isagraf\8000\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/8000/demo/注 意 : iP-8xx7 也 可 , 但 必 需 改 成 使 用 I-8017HW 與 I-8024W 板 卡 .I-8437-80 與 I-8837-80 的 CPU 為 80MHz , 比 I-8437 與 I-8837 的 40MHz CPU 快 約 2~4 倍 . 適合 用 來 記 錄 最 短 取 樣 時 間 可 小 到 約 25 ms 的 資 料 記 錄 . 若 是 採 用 I-8437 與 I-8837 (40MHz) ,則 只 適 合 100 ms 以 上 的 取 樣 時 間 . 但 此 最 短 取 樣 時 間 也 跟 程 式 的 複 雜 度 更 關 , 若 您 的PLC 程 式 執 行 起 來 的 PLC Scan Time 已 經 是 200ms, 那 只 能 做 大 於 200 ms 的 取 樣 記 錄 .如 何 測 詴 本 範 例 :本 範 例 可 選 擇 用 PC 上 VB 6.0 的 “Demo_6” 來 連 線 操 作 ( 請 參 考 第 11.2 節 ) , 或 直 接 在I-8437-80 / 8837-80 的 面 板 上 用 按 鈕 來 操 作 .1. 首 先 請 把 I-8024 插 在 I-8437-80 的 Slot 2, I-8017H 插 在 Slot 3 ( 注 意 I-8xx7 的 第 1 個 I/O Slot為 Slot 0, 跟 W-8xx7 不 同 , W-8xx7 的 第 1 個 I/O 為 Slot 1), 把 I-8024 的 第 1 到 4 個 電 壓 輸出 點 連 接 到 I-8017H 的 第 1 到 4 個 電 壓 輸 入 點 . 之 後 上 電 給 I-8437-80 .2. 接 下 來 請 把 <strong>ISaGRAF</strong> “Demo_71” 程 式 下 載 到 I-8437-80 內 .3. Demo_71 執 行 之 後 , 可 按 下 I-8437-80 面 板 上 的 第 一 按 鈕 , 開 始 記 錄 . 之 後 會 開 始 記 錄 2 分鐘 , 記 錄 過 程 中 可 看 到 數 字 會 遞 減 到 0 並 閃 爍 , 記 錄 完 畢 時 , 面 板 上 的 3 個 Led 燈 會 一 直閃 爍 , 且 數 字 會 是 0. ( 若 想 停 止 記 錄 , 可 按 第 4 個 按 鈕 )4. 記 錄 完 後 , 可 在 PC 上 執 行 UDLoader 把 S-256/ S-512 內 的 File 上 載 到 PC 上 來 .若 你 的 PC 是 設 計 <strong>ISaGRAF</strong> 程 式 的 那 台 PC, 請 在 <strong>ISaGRAF</strong> 的 Tools – <strong>ICP</strong> <strong>DAS</strong> – <strong>ICP</strong><strong>DAS</strong>UDloader 把 UDloader 運 行 起 來 . 運 行 起 來 後 應 該 會 看 到 步 驟 (5) 的 畫 面 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-54 <strong>ICP</strong> <strong>DAS</strong>


若 你 的 PC 沒 更 <strong>ISaGRAF</strong>, 請 將 I-8000 CD:\napdos\isagraf\some_utility\ 內 的 udloader.exe 覆製 到 PC 的 桌 面 上 . 然 後 把 它 執 行 起 來 . 請 先 點 選 “Link Setup” 設 好 正 確 的 參 數 ( 若 按 下“Browse” 可 選 擇 要 把 upload 的 檔 案 存 放 於 PC 的 那 個 路 徑 ). 之 後 按 下 “OK” & “OK” , 儲 存此 設 定 , 並 先 離 開 UDloader.exe , 之 後 再 執 行 它 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-55 <strong>ICP</strong> <strong>DAS</strong>


5. 接 下 來 若 更 正 確 連 上 , 會 看 到 更 個 File Name 出 現 . 從 Head 與 Tail 的 數 字 可 看 出 該 S-256/ S-512 內 的 記 錄 檔 的 大 小 . 以 下 的 例 子 為 67,200 bytes. ( 注 意 S-256 / S-512 更 大 小 限 制 ,請 參 閱 第 10.3 節 ). 若 想 改 變 此 File 要 上 載 後 存 放 的 位 置 , 可 以 點 選 “Browse …” 來 變 更 ,之 後 請 按 下 “Upload 1” 來 上 載 它 .你 可 以 到 PC 同 路 徑 下 檢 查 是 否 更 上 載 成 功 .6. 開 啟 M.S. Excel 畫 出 趨 式 圖 . 請 參 考 第 11.3.6 節 的 步 驟 (6) , 方 法 與 它 相 同 .注 意 : 本 範 例 可 選 擇 用 PC 上 VB 6.0 的 “Demo_6” 來 連 線 操 作 ( 請 參 考 第 11.2 節 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-56 <strong>ICP</strong> <strong>DAS</strong>


專 案 架 構 :變 數 定 義 :Name Type Attribute DescriptionINIT Boolean Internl 初 值 設 為 TrueGo1 Boolean Internl 若 設 為 True 則 開 始 動 作 , addr 設 為 21 (16 進 位 值 為15)Stop1 Boolean Internal 若 設 為 True 則 停 止 動 作 , addr 設 為 22 (16 進 位 值 為16)TMP Boolean Internal 暫 時 使 用 的 變 數L1 , L2 , L3 Boolean Output 連 結 到 show3Led 的 Ch.1 ~ Ch.3 上K1 , K4 Boolean Input 連 結 到 push4key 的 Ch.1 與 Ch.4 上K1 用 來 啟 動 , K4 用 來 停 止To_Blink Boolean Internal 用 來 控 制 面 板 數 字 要 不 要 閃 爍MUM_CH Integer Constant常 數I-8017H 上 要 記 錄 幾 個 Channel 的 電 壓 值本 範 例 記 錄 4 個 Channel (Ch.1 到 4)Ava_num_s256 Integer Input 連 結 到 S256_512 的 Ch.1 , 值 若 為 0 表 示 找 不 到 S256/512Current_pos1 Integer Internal 目 前 正 在 記 錄 S256/512 的 那 個 byte 位 址Len1 , TMP_V Integer Internal 程 式 內 部 使 用File_begin1File_end1Integer 常 數 S-256 / S-512 內 要 配 置 的 Byte 開 頭 與 結 尾給 File 使 用STEP1 Integer Internal 0: 無 動 作 , 1: 記 錄 中 , 2: 記 錄 完 畢Period1 Integer Internal 共 要 記 錄 多 久 , 單 位 為 分 鐘 , addr 設 為 3Interval1 Integer Internal 多 久 記 錄 一 筆 資 料 , 單 位 為 0.001 秒 , addr 設 為 1Total_record1 Integer Internal 本 次 共 更 多 少 筆 資 料 要 記 錄 , 由 程 式 根 據 Period1 與Interval1 之 值 自 動 算 出 , addr 設 為 5Record_cnt1 Integer Internal 目 前 已 經 完 成 記 錄 的 資 料 數 量 , addr 設 為 7ii Integer Internal 給 for 迴 圈 使 用i8017H[0..7] Integer Input 為 變 數 陣 列 , Dim 設 為 8, 需 連 接 到 I-8017H 的 Ch1.到 8Volt1[0..7] REAL Internal 為 變 數 陣 列 , Dim 設 為 8, I-8017H 的 Ch1. 到 8 轉 換 後的 電 壓 值i8024[0..3] Integer Output 為 變 數 陣 列 , Dim 設 為 4, 需 連 接 到 I-8024 Ch1. 到 4T1 Timer Internal 作 為 計 時 用 的 TimerT1_next Timer Internal 下 一 筆 資 料 將 於 何 時 去 記 錄 下 來 , 程 式 自 動 算 出T1_Interval Timer Internal 每 2 筆 記 錄 的 時 間 間 隔Msg1 Message Internal 操 作 狀 態 , 長 度 255, 初 值 為 “ 無 動 作 ”, addr 設 為 41(16 進 位 值 為 29)Str1 Message Intenal 長 度 255, 程 式 內 部 使 用<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-57 <strong>ICP</strong> <strong>DAS</strong>


I/O 連 結 :LD 程 式 – LD1按 下 K1 後 , 啟 動 Go1 為 True按 下 K4 後 , 啟 動 Stop1 為 True顯 示 記 錄 處 理 進 度記 錄 完 成 時 閃 爍 L1 ~ 3<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-58 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 – Sim_out------------------------------------------------------------------------------------------------------------------------(* 讓 I-8024 的 Ch1 到 Ch4 輸 出 不 同 的 Sin , Cos 電 壓 曲 線 *)(* 2 * Pi * T1 / 60000 = T1 * 1.047197E-4 *)(* 2 * Pi * T1 / 120000 = T1 * 5.235985E-5 *)i8024[0] := ANA( sin( REAL(T1) * 1.047197E-4 ) * 3276.8 ) ;i8024[1] := ANA( cos( REAL(T1) * 5.235985E-5 ) * 3276.8 ) ;i8024[2] := ANA( sin( REAL(T1) * 1.047197E-4 ) * 6553.6 ) ;i8024[3] := ANA( cos( REAL(T1) * 5.235985E-5 ) * 6553.6 ) ;------------------------------------------------------------------------------------------------------------------------ST 程 式 – ST1------------------------------------------------------------------------------------------------------------------------if INIT thenINIT := FALSE ; (* 本 區 一 開 機 只 Run 一 次 *)if ava_num_S256 = 0 then (* 一 開 機 若 找 不 到 S-256/512 就 離 開 *)Msg1 := 'S256 / S512 is not installed in I-8xx7 controller !' ;Return ;end_if ;(* 在 S256/512 內 配 置 200K bytes 給 File 編 號 1 使 用 , 檔 名 為 “trend1.js” *)TMP := S_FL_INI( 1 , 'trend1.js' , File_begin1 , File_end1) ;TMP := S_FL_AVL( 1 , -1 , -1 ) ; (* 一 開 始 先 設 File 內 無 資 料 *)end_if ;if ava_num_S256 = 0 then (* 每 個 PLC Scan 若 發 現 找 不 到 S-256/512 就 離 開 *)return ;end_if ;(* 若 Stop1 被 設 為 TRUE, 則 停 止 T1 的 計 時 , STEP1 設 為 0 *)if Stop1 thenStop1 := False ;STEP1 := 0 ; (* STEP1 設 為 0: 無 動 作 *)TStop(T1) ; (* 停 止 T1 的 計 時 *)T1 := T#0s ;Msg1 := 'User stop recording !' ;To_Blink := False ; (* 停 止 數 字 閃 爍 *)end_if ;TMP_V := S_FL_STS( 1 ) ; (* S_FL_STS 若 回 傳 非 -1 之 值 , 表 示 PC 已 上 載 過該 File *)if TMP_V -1 thenTMP := S_FL_RST( 1 ) ; (* 此 時 再 將 State 設 為 -1, 讓 PC 可 重 覆 上 載 該 File *)end_if ;(* 若 Go1 被 設 為 TRUE, 準 備 開 始 動 作 *)if Go1 thenGo1 := False ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-59 <strong>ICP</strong> <strong>DAS</strong>


(* STEP1: 0: 無 動 作 , 1: 記 錄 中 , 2: 記 錄 完 畢 *)if STEP1 = 1 thenMsg1 := 'It is still recording now ...' ; (* STEP1 為 1, 表 示 記 錄 中 )else(* 檢 查 Interval 值 , 需 在 25 到 10000 ms 之 間 , 本 例 使 用 50 ms *)if ( Interval1 < 25 ) or ( Interval1 > 10000 ) thenMsg1 := 'Wrong Interval value, it should be in 25 to 10000 milli-second !' ;(* 檢 查 Period1 之 值 設 的 對 不 對 , 需 為 1 到 10 之 間 , 單 位 為 分 鐘 *)elsif ( Period1 < 1 ) or ( Period1 > 10 ) thenMsg1 := 'Wrong Period value, it should be in 1 to 10 minute !' ;else值 *)total_record1 := ( Period1 * 60000 ) / Interval1 ; (* 算 出 total_record1record_cnt1 := 0 ; (* 將 目 前 已 記 錄 資 料 數 量 設 為 0 *)STEP1 := 1 ; (* 將 STEP1 設 為 1: 記 錄 中 *)Msg1 := 'Recording now ...' ;end_if ;end_if ;end_if ;(* 啟 動 T1 開 始 從 0 起 計 時 *)T1 := T#0s ;T1_Interval := TMR( Interval1 ) ;T1_next := T1 + T1_Interval ;TStart(T1) ;Current_pos1 := 1 ; (* 將 S256/512 內 的 資 料 位 址 RESET 為 1 *)To_Blink := TRUE ; (* 設 為 TRUE 讓 數 字 閃 爍 *)(* 以 下 為 STEP1 為 1: 記 錄 中 需 作 的 code *)if STEP1 = 1 thenif T1 >= T1_next then (* 當 T1 計 時 到 下 1 筆 該 記 錄 的 時 間 點 時 , 就 準 備 記錄 1 筆 資 料 *)T1_next := T1_next + T1_Interval ; (* 重 新 設 定 下 1 筆 該 記 錄 的 時 間 點 *)(* 因 為 Timer 最 多 只 能 計 時 到 23 小 時 59 分 59 秒 , 所 以 提 前 在 剛 過 20 小 時 之 後 , 就 Reset為 0 *)(* 本 範 例 最 多 只 更 計 時 10 分 鐘 , 所 以 不 會 超 過 , 以 下 這 段 的 用 意 , 在 於 給 使 用 者 參 考 用*)if T1 >= T#20h thenT1 := T#0s ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-60 <strong>ICP</strong> <strong>DAS</strong>


T1_next := T1 + T1_Interval ;end_if ;str1 := '' ; (* 一 開 始 將 str1 設 為 空 字 串 *)for ii := 0 to NUM_CH - 1 do(* 轉 換 i8017H 的 類 比 輸 入 值 為 電 壓 值 *)Volt1[ii] := Real( i8017H[ii] ) * 0.000305176 ; (* 10.0 / 32768 =0.000305176 *)str1 := str1 + Rea_Str2( Volt1[ii] , 3 ) + '$09' ; (* 分 隔 字 元 為 *)end_for ;str1 := str1 + '$0D$0A' ; (* 加 入 字 元 於 每 行 尾 端 *)Len1 := MLEN( str1 ) ; (* 取 得 字 串 str1 的 目 前 長 度 *)(* 若 記 錄 的 資 料 byte 數 量 將 超 過 S256/512 配 置 給 File 的 使 用 量 , 就 離 開 , 不 再 記 錄下 去 了 *)if ( Current_pos1 + Len1 – 1 ) > File_end1 thenSTEP1 := 0 ; (* 設 為 0: 無 動 作 *)Msg1 := 'File allocated memory is not enough to hold the data ! ' ;Tstop( T1 ) ; (* 停 止 T1 的 記 時 *)T1 := T#0s ;To_Blink := FALSE ; (* 停 止 數 字 閃 爍 *)Return ; (* 離 開 此 ST 程 式 *)end_if ;(* 將 字 串 str1 內 的 所 更 byte 寫 入 S-256/512 的 目 前 位 址 內 *)TMP := S_M_W( Current_pos1 , Len1 , str1 ) ;Current_pos1 := Current_pos1 + Len1 ; (* 目 前 位 址 往 前 移 *)TMP := S_FL_AVL( 1 , 1 , Current_pos1 - 1 ) ; (* 重 設 S256/512 的 File 頭 / 尾 位址 *)record_cnt1 := record_cnt1 + 1 ; (* 資 料 數 量 加 1 *)if ( record_cnt1 >= total_record1 ) then (* 檢 查 是 否 所 更 資 料 都 已 記 錄 完 畢*)STEP1 := 2 ; (* 若 是 則 設 STEP1 為 2: 記 錄 完 畢 *)Msg1 := 'Record is finished ! You may download the record file to your PCnow !' ;Tstop( T1 ) ;T1 := T#0s ;To_Blink := FALSE ; (* 停 止 數 字 閃 爍 *)end_if ;end_if ;end_if ;------------------------------------------------------------------------------------------------------------------------<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-61 <strong>ICP</strong> <strong>DAS</strong>


11.3.8: 使 用 較 準 確 的 固 定 週 期 去 做 某 件 事BLINK 方 塊 可 用 來 每 隔 固 定 一 段 時 間 就 產 生 一 個 Pulse True, 所 以 可 以 使 用 在 每 固 定 一 段 時 間就 做 一 件 事 的 應 用 上 . 如 下 :(* LD 程 式 : *)Pulse1 宣 告 為 Boolean Internal此 例 會 每 2 秒 去 做 一 件 事(* ST 程 式 : *)IF Pulse1 THEN (* 上 方 LD 程 式 會 每 2 秒 產 生 一 個 pulse TRUE 於“pulse1” 變 數 內 *)END_IF ;(* 做 一 件 事 *)(* …… *)但 以 上 的 程 式 在 時 間 間 隔 較 短 , 比 如 小 於 200ms 或 PLC Scan Time 較 大 時 會 變 得 不 精 確 . 例 如每 50ms 做 一 件 事 , 因 為 50ms 是 比 較 小 的 間 隔 , 跟 PLC Scan Time 比 較 接 近 , 就 會 不 準 確 , 所以 可 以 改 成 以 下 方 法 , 就 可 以 提 高 準 確 性 .ST 程 式 :IF INIT THENINIT := False ;T1 := T#0s ;T1_next := T1 + T#50ms ;Tstart (T1) ;END_IF ;INIT 宣 告 為 Boolean Internal並 且 初 始 值 為 TRUET1 與 T1_next 為 Timer InternalIF T1 >= T1_next THEN因 為 Timer 變 數 計 時 到 T#23h59m59s999ms 後IF T1 > T#22h THEN 就 會 發 生 溢 位 , 所 以 可 提 前 在 接 近 22h 時 就T1 := T#0s ;Reset 為 0T1_next := T#0s ;END_IF ;T1_next := T1_next + T#50ms ; (* 算 出 下 一 次 動 作 的 時 間 點 *)END_IF ;(* 做 一 件 事 *)(* …… *)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-62 <strong>ICP</strong> <strong>DAS</strong>


11.3.9: Demo_72: I-7188EGD 連 接 I-7018z 量 測 6 個 4 到 20 mA 的 電 流 輸 入 值 與4 個 Thermo-Couple 溫 度 輸 入 值 , 並 顯 示 在 PC 的 VB 6.0 程 式 上本 範 例 程 式 為 Demo_72 , 可 用 在 I-7188EG / 7186EG 內 執 行 , 若 要 使 用 I-8xx7,XP-8xx7-CE6 或 Wincon-8xx7 也 可 , 但 ”Bus7000b” 的 COM port 要 改 成 使 用 COM3.( 若 要 用 在 WP-8xx7, VP-25W7/23W7 ”, 則 Bus7000b” 的 COM port 要 改 成 使 用 COM2 . )範 例 程 式 放 於 I-8000 CD-ROM:\napdos\isagraf\8000\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/8000/demo/VB 6.0 的 Demo_4 程 式 放 在I-8000 CD: \napdos\isagraf\vb_demo\demo_4\demo_4.exe 或http://www.icpdas.com/faq/isagraf.htm FAQ-055I-7188EG 的 COM2:RS-485 可 用 來 連 接 I-7000 系 列 或 連 接 I-87K/4/5/8/9 擴 展 模 組 加 I-87xxxI/O 板 卡 . 最 多 一 台 I-7188EG 可 連 接 64 個 I-7000 模 塊 ( 或 I-87xxx I/O 板 卡 , 總 數I-7000+I-87xxx 最 多 是 64 個 ). 使 用 I-8xx7 的 COM3:RS-485 來 接 也 可 , 總 數 I-7000+I-87xxx最 多 也 是 64 個 . 若 是 使 用 W-8xx7 的 COM3:RS-485 來 接 , 可 連 接 的 總 數 I-7000+I-87xxx 最 多是 255 個 .但 接 的 越 多 掃 瞄 完 所 更 I/O 一 圈 的 時 間 就 越 長 , 以 9600 Baud rate 為 例 , 一 般 一 顆 D/I/O 模塊 掃 瞄 完 約 花 20 ~ 40 ms. 若 是 A/I/O 一 般 約 40 ~ 60 ms ( 跟 模 塊 種 類 更 關 , 板 卡 上 更 不 同I/O 種 類 的 , 時 間 會 比 這 個 數 字 長 , 比 如 I-7050D, 即 更 D/I, 又 更 D/O, 或 I-87082, 功 能 多 , 花的 時 間 也 多 ). 所 以 若 接 了 20 個 D/I/O, 約 會 花 0.4 ~ 0.8 秒 來 掃 完 一 圈 , 若 是 20 個 A/I/O, 則約 花 0.8 ~ 1.2 秒 來 掃 完 一 圈 . 因 此 建 議 I-7188EG/XG 與 I-8xx7 儘 量 不 要 連 接 超 過 24 顆 .Wincon-8xx7 則 建 議 不 超 過 64 顆 為 佳 .如 何 測 詴 本 範 例 :1. 請 將 PC 安 裝 好 DCON utility, 版 本 需 是 4.4.3 版 以 上 才 能 使 用 I-7018z 與 I-87018z. 可 在I-8000 CD-ROM 內 找 到 或 到 ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/driver/dcon_utility/內 的 setup 路 徑 內 去 下 載 .2. 請 參 考 第 6.1 節 的 步 驟 (1) 到 (4) 將 I-7018z 的 Address 設 為 1, baud rate 設 為 9600,Format 設 為 “2‟s compliment” , Checksum disable. 並 規 劃 I-7018z 的 Ch.1 ~ Ch.6 為 “[1A] :0 ~ 20 mA”, Ch.7 ~ Ch.10 為 “[0F] : T/C K-Type” . 規 劃 完 後 , 請 將 I-7018z 背 面 的 DipSwitch 撥 回 “Normal”.3. 請 先 將 I-7188EG 的 IP 設 為 192.168.1.3 ( 參 考 附 錄 B 的 方 法 ), NET-ID 需 為 1, 之 後 斷 電 , 連接 I-7188EG 的 COM2 到 I-7018z. 再 上 電 給 7188EG 與 I-7018z. (PC 的 IP 也 頇 在192.168.1.x 的 網 域 內 , 才 能 連 上 I-7188EG, 比 如 將 PC 設 成 192.168.1.1 ,Mask=255.255.255.0)4. PC 跑 <strong>ISaGRAF</strong> 用 Ethernet 下 載 demo_72 程 式 到 I-7188EG 內 . ( 不 知 如 何 下 載 , 請 參 考 第2.1.5 節 或 1.3.8 節 ). 下 載 完 會 自 動 執 行 起 來 , 再 開 啟 <strong>ISaGRAF</strong> 階 梯 圖 程 式 觀 察I-7018z 是 否 更 連 上 .( 如 下 圖 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-63 <strong>ICP</strong> <strong>DAS</strong>


5. 接 下 來 在 PC 上 跑 VB 6.0 的 Demo_4.exe 程 式 , 放 於I-8000 CD: \napdos\isagraf\vb_demo\demo_4\demo_4.exe 或http://www.icpdas.com/faq/isagraf.htm FAQ-055( 如 下 圖 )若 想 要 看 VB.net 2005 的 demo 程 式 , 請 訪 問 http://www.icpdas.com/faq/isagraf.htmFAQ-051( 或 www.icpdas.com – FAQ – Software – <strong>ISaGRAF</strong> – 051 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-64 <strong>ICP</strong> <strong>DAS</strong>


若 PC 無 法 連 上 , 最 下 方 的 “Communication state” 會 顯 示 更 錯 誤 發 生 , 若 I-7018z 沒 更 連上 , 會 顯 示 紅 色 的 “I-7018z not on-line”您 可 詴 著 去 按 “set Boo_21 to True” 那 個 按 鈕 , 每 按 一 次 “long_15” 的 值 會 加 1. 您 也 可 以直 接 輸 入 值 給 “set long_15” , 輸 入 完 後 要 按 下 “set long_15”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-65 <strong>ICP</strong> <strong>DAS</strong>


本 VB 6.0 範 例 程 式 在 設 計 時 , 需 加 入 ”Winsock control” , 才 能 使 用 Ethernet 通 訊 , 如 下<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-66 <strong>ICP</strong> <strong>DAS</strong>


<strong>ISaGRAF</strong> 專 案 架 構 :變 數 定 義 :Name Type Attribute DescriptionINIT Boolean Internl 初 值 設 為 TrueOK1 Boolean Internl I-7018z 的 連 線 狀 態 , addr 設 為 31 (16 進 位 值 為1F)M1 Boolean Internal 測 詴 VB 6.0 連 線 用 , addr 設 為 21 (16 進 位 值 為15)TMP Boolean Internal 暫 時 使 用 的 變 數Ain[0..5] Integer Internal 為 變 數 陣 列 , Dim 欄 位 設 為 6, addr 設 為 1用 來 取 得 I-7018z 的 Ch.1 到 Ch.6 之 類 比 輸 入 值Temp[0..3] Integer Internal 為 變 數 陣 列 , Dim 欄 位 設 為 4, addr 設 為 7用 來 取 得 I-7018z 的 Ch.7 到 Ch.10 之 溫 度 值CNT1 Integer Internal 測 詴 VB 6.0 連 線 用 , addr 設 為 15 (16 進 位 值 為 F)Float_17 Integer REAL 測 詴 VB 6.0 連 線 用 , addr 設 為 17 (16 進 位 值 為11)初 值 設 為 1.02345ST 程 式 – ST1------------------------------------------------------------------------------------------------------------------------if INIT thenINIT := False ;(* 設 定 Ain[0..5] 的 addr 為 1, 2, 3, 4, 5, 6 , 需 先 在 變 數 內 宣 告 Ain[ ] 的 addr = 1 *)TMP := S_MB_ADR( 1 , 6 , 0 ) ; (* 第 3 個 參 數 0 表 示 設 定 成 連 續 的 addr *)(* 設 定 Temp[0..3] 的 addr 為 7, 9, 11, 13 , 需 先 在 變 數 內 宣 告 Temp[ ] 的 addr = 7 *)TMP := S_MB_ADR( 7 , 4 , 1 ) ; (* 第 3 個 參 數 1 表 示 設 定 成 跳 1 號 的 addr *)end_if ;if M1 thenM1 := False ;CNT1 := CNT1 + 1 ; (* 當 M1 被 設 為 TRUE 時 , 將 CNT1 值 加 1 *)end_if ;------------------------------------------------------------------------------------------------------------------------<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-67 <strong>ICP</strong> <strong>DAS</strong>


LD 程 式 – LD1TYP1_ 到 TYP6_ 需 設 成 跟 I-7018z 用 DCON utility 規 劃 的 Type code 一 樣 ( 本 例 使 用[1A] 0 ~ 20 mA). TYP7_ 到 TYP10_ 需 設 成 跟 I-7018z 用 DCON utility 規 劃 的 Type code一 樣 ( 本 例 使 用 [0F] T/C K-Type) , 因 為 要 直 接 轉 換 成 單 位 為 0.01 度 的 攝 式 溫 度 , 所 以 使用 16#100F . ( 若 想 轉 成 華 氏 度 , 則 需 設 成 16#200F). 右 方 的 Temp[0] 到 Temp[3] , 若 傳回 值 等 於 999990, 表 示 溫 度 輸 入 Sensor 斷 線 了 .當 I-7018z 連 線 正 常 , OK1 會 傳 回 TRUE, 若 連 線 失 敗 , OK1 會 傳 回 FALSE.IO 連 結 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-68 <strong>ICP</strong> <strong>DAS</strong>


11.3.10: 範 例 Whmi_13: 使 用 Wincon-8xx7, 每 0.01 秒 記 錄 I-8017H 的 1 ~ 4 個電 壓 值 於 User 配 置 的 一 塊 RAM 記 憶 區 內 , 連 續 記 錄 1~10 分 鐘 , 之 後 再 儲 存 到RAM Disk File 內 , 最 後 可 在 PC 上 開 M.S. Excel 來 看 1 ~ 4 條 趨 勢 圖注 意 : 若 PAC 是 WP-8xx7, XP-8xx7-CE6 與 VP-25W7 / VP-23W7, 本 節 所 述 的 功 能 也 可 以套 用 , 但 差 別 是 需 使 用 各 別 PAC 的 CD 的 內 容 與 file ( 內 容 類 似 , 但 不 同 於 Wincon CD).另 外 WP-8xx7, XP-8xx7-CE6 與 VP-25W7 / VP-23W7 等 PAC 並 沒 更\CompactFlash\Temp\HTTP\WebHMI\ , WP-8xx7 與 VP-25W7 / VP-23W7 是 使 用\Micro_SD\Temp\HTTP\WebHMI\ , 而 XP-8xx7-CE6 是 使 用\System_Disk\Temp\HTTP\WebHMI\. 詳 細 內 容 請 參 考 以 下 網 址 :WP-8xx7 : “setup_web_hmi_demo.pdf” 放 於ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/wp_webhmi_demo 內 .VP-25W7 / VP-23W7 : “setup_web_hmi_demo.pdf” 放 於ftp://ftp.icpdas.com/pub/cd/vp-25w7-23w7/napdos/isagraf/vp-25w7-23w7/vp-webhmi-demo/ 內XP-8xx7-CE6 : “xpce6_setup_web_hmi_demo.pdf”ftp://ftp.icpdas.com/pub/cd/xp-8xx7-ce6/napdos/isagraf/xp-8xx7-ce6/xpce6-webhmi-demo/ 內本 範 例 程 式 為 Whmi_13.pia 只 能 在 Wincon-8xx7/8xx6 的 驅 動 3.36 版 或 更 高 的 版 本 使 用 ,放 於新 的 驅 動 : http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htm範 例 程 式 放 於 W-8xx7 CD-ROM:\napdos\isagraf\wincon\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/demo/本 範 例 PC 的 人 機 介 面 程 式 可 選 擇 用 VB6 的 “Demo_5” 放 於W-8xx7 CD-ROM:\napdos\isagraf\wincon\vb6_demo_pc\ 內 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/vb6_demo_pc/或 使 用 Web HMI 來 當 人 機 介 面 程 式 , 原 始 碼 放 於 ( 關 於 Web HMI 請 參 考 Wincon <strong>ISaGRAF</strong>Getting Started 第 3, 4, 5 章 : W-8xx7 CD-ROM:\napdos\isagraf\wincon\english_manu\“getting_started_w8337.pdf”)W-8xx7 CD-ROM:\napdos\isagraf\wincon\WebHMI_Demo\ 內 的 whim_13 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/webhmi_demo/若 您 PC 上 裝 的 <strong>ISaGRAF</strong> 找 不 到 Msg_F , Msg_N , ARY_F_R, AFY_F_W 等 函 式 , 請 訪 問http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 來 下 載 “<strong>ICP</strong> <strong>DAS</strong> utilities For<strong>ISaGRAF</strong>” , 解 壓 縮 後 , 執 行 其 內 的 setup.exe 來 安 裝 新 的 函 式 進 去 <strong>ISaGRAF</strong> 內<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-69 <strong>ICP</strong> <strong>DAS</strong>


如 何 測 詴 本 範 例 :以 下 步 驟 為 使 用 Web HMI 當 人 機 介 面 程 式 的 方 式 , 若 您 是 使 用 VB6 的 “Demo_5” 來 當 人機 介 面 , 只 需 把 “Demo_5” 的 VB6 程 式 在 PC 上 Run 起 來 , 之 後 只 做 步 驟 1 ( 不 必 啟 用 WebHMI), 步 驟 3 與 步 驟 6 .1. 首 先 請 把 I-8024 插 在 W-8xx7 的 Slot 2, I-8017H 插 在 Slot 3, 把 I-8024 的 第 1 到 4 個 電壓 輸 出 點 連 接 到 I-8017H 的 第 1 到 4 個 電 壓 輸 入 點 . 之 後 上 電 給 Wincon, 然 後 在 <strong>ISaGRAF</strong>Driver 上 啟 用 Web HMI 功 能 , 為 方 便 操 作 , 請 先 不 要 選 取 “Enable Account Security”2. 接 下 來 請 把 Web HMI Demo 13 的 所 更 file 用 ftp ( 例 如 在 IE 上 輸 入 “ftp://10.0.0.103”) ,丟 到 Wincon 的 \CompactFlash\Temp\HTTP\WebHMI\ 內Web HMI 的 原 始 碼 放 於W-8xx7 CD-ROM:\napdos\isagraf\wincon\WebHMI_Demo\ 內 的 whim_13 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/webhmi_demo/共 更 7 個 File 與 2 個 目 錄 要 copy 到 Wincon 的 \CompactFlash\Temp\HTTP\WebHMI\內 :Main.htm , menu.htm , index.htm , login.htm , main.dll , login.dll , whim_filter.dllimg 目 錄 與 msg 目 錄3. 之 後 請 把 <strong>ISaGRAF</strong> 的 whim_13 程 式 下 載 到 W-8xx7 內 . ( 若 是 使 用 Web HMI, 請 做 完 步驟 2, 再 做 步 驟 3 )本 範 例 程 式 為 Whmi_13.pia 只 能 在 Wincon-8xx7/8xx6 內 使 用 , 放 於W-8xx7 CD-ROM:\napdos\isagraf\wincon\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/demo/4. PC 上 開 啟 Internet Explorer ( 至 少 需 為 IE 5.0 版 , 或 更 高 的 版 本 ), 上 方 輸 入 W-8xx7 的 IP,連 上 Wincon 後 , 請 按 “Enter” 進 入<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-70 <strong>ICP</strong> <strong>DAS</strong>


<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-71 <strong>ICP</strong> <strong>DAS</strong>


5. 之 後 請 輸 入 “Interval” 的 值 , 單 位 為 0.001 秒 , 如 給 10 指 的 是 每 0.01 秒 , 記 錄 一 次 .而 ”Period” 值 指 的 是 要 記 錄 多 久 , 單 位 為 分 鐘 . 輸 入 好 後 , 按 下 “Go” 可 開 始 動 作 . 之後 I-8024 的 第 1 到 4 點 會 輸 出 不 同 的 電 壓 , 若 更 在 步 驟 1 內 將 I-8024 的 第 1 到 4 個 電壓 輸 出 點 連 接 到 I-8017H 的 第 1 到 4 個 電 壓 輸 入 點 , 則 I-8017H 的 輸 入 會 更 不 同 的 曲 線 變化 會 被 記 錄 下 來 .在 記 錄 過 程 中 , 會 看 到 “Current record number” 的 值 會 一 直 增 加 , 當 它 等 於 “Total recordnumber” 之 值 時 , 就 表 示 記 錄 完 畢 . 此 時 程 式 會 開 始 把 記 錄 資 料 存 入 RAM File 內 , 從“Saving state” 可 以 看 到 進 度 , 若 都 完 成 , 請 按 下 “Download record File” , 點 選 “ 儲 存 ” 來 下載 到 PC 內 .6. 接 下 來 用 M.S. Excel 來 畫 趨 勢 圖 , 方 法 與 第 11.3.6 節 的 步 驟 6 相 同 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-72 <strong>ICP</strong> <strong>DAS</strong>


專 案 架 構 :變 數 定 義 :Name Type Attribute DescriptionGo1 Boolean Internl 若 設 為 True 則 開 始 動 作 , addr 設 為 21 (16 進 位 值 為15)Stop1 Boolean Internal 若 設 為 True 則 停 止 動 作 , addr 設 為 22 (16 進 位 值 為16)TMP Boolean Internal 暫 時 使 用 的 變 數INIT Boolean Internal 初 值 設 為 TrueSave_file1 Boolean Internal 程 式 會 自 動 設 為 True 來 儲 存 RAM Disk FileMUM_CH Integer Constant常 數I-8017H 上 要 記 錄 幾 個 Channel 的 電 壓 值本 範 例 記 錄 4 個 Channel (Ch.1 到 4)File1 Integer Internal File IDSTEP1 Integer Internal 0: 無 動 作 , 1: 記 錄 中 , 2: 記 錄 完 畢Period1 Integer Internal 共 要 記 錄 多 久 , 單 位 為 分 鐘 , addr 設 為 3Interval1 Integer Internal 多 久 記 錄 一 筆 資 料 , 單 位 為 0.001 秒 , addr 設 為 1Total_record1 Integer Internal 本 次 共 更 多 少 筆 資 料 要 記 錄 , 由 程 式 根 據 Period1 與Interval1 之 值 自 動 算 出 , addr 設 為 5Record_cnt1 Integer Internal 目 前 已 經 完 成 記 錄 的 資 料 數 量 , addr 設 為 7ii 與 ii2 Integer Internal 給 for 迴 圈 使 用i8017H[0..7] Integer Input 為 變 數 陣 列 , Dim 設 為 8, 需 連 接 到 I-8017H 的 Ch1.到 8Volt1[0..7] REAL Internal 為 變 數 陣 列 , Dim 設 為 8, I-8017H 的 Ch1. 到 8 轉 換 後的 電 壓 值i8024[0..3] Integer Output 為 變 數 陣 列 , Dim 設 為 4, 需 連 接 到 I-8024 Ch1. 到 4Save_cnt1 Integer Internal 目 前 儲 存 於 RAM disk File 內 的 Record 數 量 , addr設 為 9TMP_v Integer Internal 程 式 內 部 使 用T1 Timer Internal 作 為 計 時 用 的 TimerT1_next Timer Internal 下 一 筆 資 料 將 於 何 時 去 記 錄 下 來 , 程 式 自 動 算 出T1_Interval Timer Internal 每 2 筆 記 錄 的 時 間 間 隔File_name1 Message Internal File name, 長 度 64, 初 值 為 \Web_Data1\curve1.jsWeb HMI 只 支 持 RAM Disk File 於 \Web_Data1\ 內 ,若 是 CompactFlash File 則 Web HMI 只 支 持 於\CompactFlash\Temp\HTTP\Data\ 內 ( 參 見 11.2 節 的Whmi_08 範 例 )Msg1 Message Internal 操 作 狀 態 , 長 度 255, 初 值 為 “ 無 動 作 ”, addr 設 為41 (16 進 位 值 為 29)Str1 Message Intenal 長 度 255, 程 式 內 部 使 用<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-73 <strong>ICP</strong> <strong>DAS</strong>


IO 連 結 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-74 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 – Sim_out------------------------------------------------------------------------------------------------------------------------(* 讓 I-8024 的 Ch1 到 Ch4 輸 出 不 同 的 Sin , Cos 電 壓 曲 線 *)(* 2 * Pi * T1 / 60000 = T1 * 1.047197E-4 *)(* 2 * Pi * T1 / 120000 = T1 * 5.235985E-5 *)i8024[0] := ANA( sin( REAL(T1) * 1.047197E-4 ) * 3276.8 ) ;i8024[1] := ANA( cos( REAL(T1) * 5.235985E-5 ) * 3276.8 ) ;i8024[2] := ANA( sin( REAL(T1) * 1.047197E-4 ) * 6553.6 ) ;i8024[3] := ANA( cos( REAL(T1) * 5.235985E-5 ) * 6553.6 ) ;------------------------------------------------------------------------------------------------------------------------ST 程 式 – ST1------------------------------------------------------------------------------------------------------------------------(* 以 下 這 區 只 在 第 1 個 PLC scan 內 Run 一 次 *)if INIT thenINIT := False ;(* 配 置 1 塊 可 存 放 500,000 個 整 數 ( 或 實 數 ) 的 RAM 記 憶 區 , W-8xx7 最 多 只 能 配 置3,000,000 個 整 數 / 實 數 , 一 個 整 數 / 實 數 為 4 個 bytes, 所 以 最 多 是 12,000,000 bytes *)(* ARcreate( ) 只 能 在 <strong>ISaGRAF</strong> 程 式 內 使 用 一 次 , 且 第 1 個 參 數 只 可 以 是 1 *)TMP_v := ARcreate( 1 , 500000 ) ;if TMP_v 1 then (* 回 傳 值 若 不 是 1 表 示 失 敗 *)Msg1 := 'Parameter error or Can not allocate enough memory by ARcreate( )function !' ;end_if ;(* 設 定 W-8xx7 以 最 高 速 度 執 行 , 此 動 作 會 使 得 同 時 在 Wincon 上 Run 的 非 <strong>ISaGRAF</strong> 程 式 變慢 *)TMP := PLC_mode( -1 ) ;end_if ;(* 若 Stop1 被 設 為 TRUE, 則 停 止 T1 的 計 時 , STEP1 設 為 0 *)if Stop1 thenStop1 := False ;STEP1 := 0 ; (* STEP1 設 為 0: 無 動 作 *)TStop(T1) ; (* 停 止 T1 的 計 時 *)T1 := T#0s ;Msg1 := 'User stop recording !' ;end_if ;(* 若 Go1 被 設 為 TRUE, 準 備 開 始 動 作 *)if Go1 thenGo1 := False ;(* STEP1 : 0: 無 動 作 , 1: 記 錄 中 , 2: 記 錄 完 畢 *)if STEP1 = 1 then<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-75 <strong>ICP</strong> <strong>DAS</strong>


Msg1 := 'It is still recording now ... Please wait' ; (* 更 新 狀 態 顯 示 為 “ 仍 在記 錄 中 …” *)else(* 檢 查 Interval1 之 值 設 的 對 不 對 , 需 為 10 到 10000 之 間 , 單 位 為 0.001 秒 *)If ( Interval1 < 10 ) or ( Interval1 > 10000 ) thenMsg1 := 'Wrong Interval value, it should be in 10 to 10000 milli-second !' ;(* 檢 查 Period1 之 值 設 的 對 不 對 , 需 為 1 到 10 之 間 , 單 位 為 分 鐘 *)elsif ( Period1 < 1 ) or ( Period1 > 10 ) thenMsg1 := 'Wrong Period value, it should be in 1 to 10 minute !' ;else(* 值 設 的 正 確 , 接 下 來 準 備 開 始 記 錄 資 料 *)total_record1 := ( Period1 * 60000 ) / Interval1 ; (* 算 出total_record1 值 *)record_cnt1 := 0 ; (* 將 目 前 已 記 錄 資 料 數 量 設 為 0 *)STEP1 := 1 ; (* 將 STEP1 設 為 1: 記 錄 中 *)Msg1 := 'Recording now ... Please wait' ;end_if ;end_if ;end_if ;(* 啟 動 T1 開 始 從 0 起 計 時 *)T1 := T#0s ;T1_Interval := TMR( Interval1 ) ;T1_next := T1 + T1_Interval ;TStart( T1 ) ;if STEP1 = 1 then (* 1: 記 錄 中 *)if T1 >= T1_next then (* 當 T1 計 時 到 下 1 筆 該 記 錄 的 時 間 點 時 , 就 準 備 記錄 1 筆 資 料 *)T1_next := T1_next + T1_Interval ; (* 重 新 設 定 下 1 筆 該 記 錄 的 時 間 點 *)(* 因 為 Timer 最 多 只 能 計 時 到 23 小 時 59 分 59 秒 , 所 以 提 前 在 剛 過 20 小 時 之 後 , 就 Reset為 0 *)(* 本 範 例 最 多 只 更 計 時 10 分 鐘 , 所 以 不 會 超 過 , 以 下 這 段 的 用 意 , 在 於 給 使 用 者 參 考 用*)(* ---------------------------------------------------------------- *)if T1 >= T#20h thenT1 := T#0s ;T1_next := T1 + T1_Interval ;end_if ;(* ---------------------------------------------------------------- *)(* 準 備 寫 入 一 筆 資 料 於 User 配 置 的 RAM 記 憶 區 內 *)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-76 <strong>ICP</strong> <strong>DAS</strong>


for ii := 0 to NUM_CH - 1 do(* 轉 換 i8017H 的 類 比 輸 入 值 為 電 壓 值 *)Volt1[ii] := Real( i8017H[ii] ) * 0.000305176 ; (* 10.0 / 32768 =0.000305176 *)(* 先 使 用 Real_int( ) 將 實 數 Map 成 整 數 , 再 存 入 User 配 置 的 RAM 記 憶 區 內 *)TMP_v := ARwrite( 1 , NUM_CH * record_cnt1 + ii ,Real_int( Volt1[ii] ) ) ;(* 檢 查 是 否 寫 入 成 功 *)if TMP_v 1 then (* 回 傳 值 若 不 是 1 表 示 失 敗 , 更 可 能 是 配 置 的記 憶 區 不 夠 大 *)Msg1 := 'Can not operate ARwrite( ) !' ;STEP1 := 0 ; (* Step 設 為 0: 無 動 作 *)TStop( T1 ) ; (* 停 止 T1 的 計 時 *)T1 := T#0s ;end_if ;end_for ;record_cnt1 := record_cnt1 + 1 ; (* 已 記 錄 的 資 料 數 量 加 1 *)if ( record_cnt1 >= total_record1 ) then (* 檢 查 是 否 全 部 資 料 都 已 記 錄 完畢 *)(* 全 部 資 料 都 已 記 錄 完 畢 , 準 備 開 始 把 資 料 從 User 配 置 的 RAM 記 憶 區 , 存 入 RAMDisk File *)STEP1 := 0 ; (* Save 之 前 , 先 暫 時 將 Step 設 為 0: 無 動 作 *)Tstop( T1 ) ; (* 停 止 T1 的 計 時 *)T1 := T#0s ;(* 建 立 一 個 新 的 RAM Disk File, File_name1 於 \Web_Data1\ 內 *)File1 := F_creat( File_name1 ) ;if File1 = 0 then (* 建 立 File 失 敗 *)Msg1 := 'Create File ' + 'File_nam1 Error !!!' ;else(* 將 save_file1 設 為 TRUE 來 開 始 分 散 於 多 個 PLC scan 內 把 資 料 存 成 File *)Msg1 := ' Please wait ... Saving data to file : ' + File_name1 + ' ...' ;save_file1 := True ;save_cnt1 := 0 ; (* 先 將 目 前 已 存 入 記 錄 數 量 設 為 0 *)end_if ;end_if ;end_if ;end_if;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-77 <strong>ICP</strong> <strong>DAS</strong>


(* 以 下 每 個 PLC scan 只 存 入 50 筆 記 錄 , 請 不 要 在 1 個 PLC scan 內 就 把 所 更 記 錄 存 完 ,因 為 存 資 料 到 File 會 花 較 多 的 CPU 時 間 , 若 強 迫 在 1 個 PLC scan 內 存 完 , 該 PLC scan 的Scan time 會 變 的 很 大 , 會 影 響 到 其 它 的 I/O 邏 輯 操 作 *)if save_file1 thenfor ii2 := 0 to 50 do (* 每 個 PLC scan 只 存 入 50 筆 記 錄 *)if save_cnt1 < total_record1 then (* 若 還 未 存 完 , 繼 續 存 *)str1 := '' ; (* 先 將 str1 設 為 空 字 串 *)for ii := 0 to NUM_CH - 1 do (* 將 實 數 資 料 轉 成 字 串 ,分 隔 字 元 為 *)str1 := str1 + Rea_Str2( Int_real( ARread( 1 , NUM_CH * save_cnt1+ ii ) ) , 3 ) + '$09' ;end_for ;str1 := str1 + '$0D$0A' ; (* 加 入 字 元 於 每 行 尾 端 *)TMP := F_writ_s( File1 , str1 ) ; (* 寫 入 字 串 *)save_cnt1 := save_cnt1 + 1 ; (* 目 前 已 存 入 記 錄 數 量 加 1 *)elsenow !' ;(* 所 更 資 料 都 已 存 完 *)save_file1 := False ; (* 設 為 False 表 示 不 再 存 了 *)TMP := F_close( File1 ) ; (* 關 閉 該 File *)STEP1 := 2 ; (* 設 為 2: 記 錄 完 畢 *)Msg1 := 'Record is finished ! You may download the record file to your PCend_if ;end_for ;end_if ;------------------------------------------------------------------------------------------------------------------------<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-78 <strong>ICP</strong> <strong>DAS</strong>


11.4: 常 用 的 FAQFAQ (<strong>ISaGRAF</strong> Ver.3 FAQ 中 文 : 問 題 / 說 明 / 範 例 程 式 ) 網 頁 指 引http://www.icpdas.com/faq/isagraf_c.htmwww.icpdas.com > Support > FAQ > Software > <strong>ISaGRAF</strong> Ver.3 ( 中 文 )FAQ 問 題 列 表 :編 號516中 文 <strong>ISaGRAF</strong> Ver.3 FAQQ: 如 果 我 的 <strong>ISaGRAF</strong> 軟 件 不 是 <strong>ISaGRAF</strong>-256 或 <strong>ISaGRAF</strong>-L, 可 以 使 用 超 過 32個 I/O 點 嗎 ?Q: 若 D/I 量 測 點 在 切 換 OFF 到 ON, 或 由 ON 到 OFF 過 程 中 更 短 暫 的 訊 號 跳 動 現象 , 該 如 何 來 編 程 ?18 Q: <strong>ISaGRAF</strong>-256 軟 體 是 否 更 I/O 點 數 的 使 用 限 制 ?20 Q: 如 何 在 <strong>ISaGRAF</strong> 內 搜 尋 某 一 變 數 名 稱 ?21 Q: 更 時 在 關 閉 <strong>ISaGRAF</strong> 視 窗 時 會 卡 住 約 20 ~ 40 秒 , 如 何 解 決 ?2224Q: 如 何 使 用 Proface 的 人 機 介 面 (Touch-Panel HMI) 來 連 接 I-7188EG/XG , I-8xx7與 WinCon-8xx7 等 <strong>ISaGRAF</strong> 控 制 器 ?Q: 如 何 將 Analog / Input 或 Analog / Output 的 4 到 20 mA 值 , 轉 換 成 工 程 應 用值 ? 如 何 將 Analog / Input 或 Analog / Output 的 0 到 10 V 值 , 轉 換 成 工 程 應用 值 ?30 Q: 如 何 直 接 取 得 第 0 ~ 7 的 I/O 插 槽 內 溫 度 卡 片 的 “ 攝 氏 度 ” 或 “ 華 式 度 ” 值 ?31 Q: 如 何 直 接 取 得 遠 程 I-7000 及 I-87xxx 溫 度 輸 入 I/O 的 溫 度 值 ?38 Q: 如 何 啟 用 I-7188EG 或 I-7188XG 的 COM3 成 為 Mobus RTU slave 埠 ?39 Q: 如 何 使 用 變 數 陣 列 ?40Q: 如 何 啟 用 I-8437 / 8837 的 COM3:RS232/485 來 成 為 Modbus RTU Slave 串 口 ?如 何 改 變 COM1 與 I-8417 / 8817 的 COM2 或 I-8437/8837 的 COM3 ModbusRTU port 通 訊 速 率 之 設 定 ?41 Q: 如 何 將 圖 控 /HMI/ 上 位 機 連 接 到 單 一 IP 地 址 的 備 援 ( 冗 餘 ) 系 統 ?42Q: 如 何 使 用 WinCon-8347 / 8747 來 連 接 I-8KE4-MTCP 與 I-8KE8-MTCP 這 2 款Ethernet I/O ?46 Q: 如 何 使 用 Modbus 函 式 6 來 寫 16 個 Bit 到 Modbus RTU 設 備 ?47 Q: 如 何 對 Modbus RTU Slave 設 備 讀 / 寫 實 數 資 料 ?48 Q:WinCon 如 何 連 接 FRnet I/O ?49Q: 如 何 使 用 “Mbus_R” 與 “Mbus_R1” 方 塊 , 來 直 接 取 得 M-7000 溫 度 模 塊 的 攝 氏 或 華氏 溫 度 值 ?<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-79 <strong>ICP</strong> <strong>DAS</strong>


編 號中 文 <strong>ISaGRAF</strong> Ver.3 FAQ50 Q: 如 何 連 接 M-7000 系 列 Modbus RTU I/O ?5152Q: 如 何 使 用 PC 上 的 VB.net 2005 程 式 , 用 Modbus TCP/IP 規 約 來 與 <strong>ISaGRAF</strong> 控制 器 連 接 ?Q: 如 何 使 用 PC 上 的 VB 6.0 程 式 , 用 Modbus TCP/IP 規 約 與 <strong>ISaGRAF</strong> 控 制 器 連接 ?53 Q: 不 同 型 號 的 <strong>ISaGRAF</strong> 控 制 器 性 能 比 較 表55Q: 如 何 連 接 I-7018z 量 測 6 個 4 到 20 mA 的 電 流 輸 入 值 與 4 個 Thermo-Couple 溫度 輸 入 值 , 並 顯 示 在 PC 的 VB 6.0 程 式 上 ?56 Q: 如 何 在 <strong>ISaGRAF</strong> 控 制 器 內 使 用 較 準 確 的 固 定 週 期 去 做 某 件 事 ?5758Q: 如 何 使 用 WinCon-8xx7, 每 0.01 秒 記 錄 I-8017H 的 1 ~ 4 個 電 壓 值 於 User 配 置的 一 塊 RAM 記 憶 區 內 , 連 續 記 錄 1~10 分 鐘 , 之 後 再 儲 存 到 RAM Disk File 內 ,最 後 可 在 PC 上 開 M.S. Excel 來 看 1 ~ 4 條 趨 勢 圖 ?Q: 如 何 使 用 I-8437-80 或 I-8837-80, 每 0.05 秒 記 錄 I-8017H 的 1 ~ 4 個 電 壓 值 於S256 / S512 內 的 一 個 檔 案 , 連 續 記 錄 1~10 分 鐘 , 之 後 可 在 PC 上 開 M.S. Excel來 看 1 ~ 4 條 趨 勢 圖 ?59 Q: 常 用 的 COM Port 函 式 技 巧 來 讀 寫 RS-232 / 422 / 48560 Q: 如 何 在 WinCon 內 讀 / 寫 File 資 料 ?61Q: 如 何 連 接 RS-485 遠 程 I-7000 與 I-87xxx I/O 模 塊 到 I-8xx7 , I-7188EG/XG與 WinCon-8xx7 控 制 器 ? 如 何 設 計 RS-485 遠 程 I-7017RC , I-87017RC ,I-7018Z I/O 模 塊 的 程 序 ?62 Q: 如 何 規 劃 備 援 系 統 ( 冗 餘 系 統 ) ? 採 用 Ethernet I/O63656667Q: 為 何 我 的 RS-485 遠 程 I-7000 與 I-87K Output 模 塊 在 RS-485 通 訊 線 斷 線 後沒 更 啟 動 wacthdog 讓 Output 點 跑 到 安 全 輸 出 值 ?Q: 泓 格 科 技 提 供 便 宜 穩 定 且 更 效 率 的 主 動 訊 號 採 集 與 資 料 回 報 系 統( 提 供 VC++ 6.0 與 VB 6.0 與 <strong>ISaGRAF</strong> demo 程 式 ).Q: 如 何 使 用 RS-232 / RS-485 通 訊 串 口 來 接 收 設 備 主 動 傳 過 來 的 數 值 資 料 ? 比如 像 是 條 碼 機 或 是 RS-232 磅 秤 .Q: 如 何 使 用 WinCon-8xx7 或 μPAC-7188EG 或 iPAC-8447/8847 來 發 送 可 夾 帶附 件 的 Email ?68 Q: 為 何 W-8xx7 或 I-8xx7 或 I-7188EG 或 I-7188XG 發 生 一 直 重 啟 (Reset) 的 現 象 ?69 Q: 為 何 我 的 PC 無 法 用 ftp 命 令 來 連 上 W-8347 或 W-8747 ?70 Q: 如 何 自 動 對 多 台 <strong>ISaGRAF</strong> PAC 進 行 時 間 校 正 與 記 錄 運 作 狀 態 ?71072Q: 應 用 例 : 用 W-8xx7 來 記 錄 10 個 溫 度 資 料 , 每 分 鐘 記 錄 一 次 . 記 錄完 一 天 的 資 料 後 , 用 Ethernet 發 email 把 該 記 錄 好 的 file 發 出 來 .Q: 應 用 例 : 使 用 WinCon-8xx7 每 20 ms 記 錄 一 筆 電 壓 / 電 流 資 料 , 連 續記 錄 1 到 10 分 鐘 , 完 成 後 用 Email 將 該 記 錄 檔 案 發 出 來 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-80 <strong>ICP</strong> <strong>DAS</strong>


編 號073中 文 <strong>ISaGRAF</strong> Ver.3 FAQQ: 為 何 <strong>ISaGRAF</strong> 程 式 內 用 i_7017 方 塊 讀 到 的 I-7017 模 塊 的 輸 入 值 是 正 常 值 的2 倍 大 或 變 成 負 值 ?074 Q: 如 何 使 用 <strong>ISaGRAF</strong> New Retain Variable 與 它 的 優 點 ?075 Q: 為 何 我 的 <strong>ISaGRAF</strong> 程 序 無 法 正 確 連 上 其 它 廠 牌 的 Modbus Slave 設 備 ?077080Q: 應 用 例 : 使 用 μPAC-7186EG 每 秒 記 錄 一 筆 電 壓 / 電 流 資 料 , 連 續 記錄 1 到 10 分 鐘 , 完 成 後 用 Email 將 該 記 錄 檔 案 發 出 來 .Q: 應 用 例 : 用 μPAC-7186EG 來 記 錄 10 個 溫 度 資 料 , 每 分 鐘 記 錄 一 次 .記 錄 完 一 天 的 資 料 後 , 用 Ethernet 發 email 把 該 記 錄 好 的 file 發 出來 .081 Q: 如 何 在 <strong>ISaGRAF</strong> controller 內 使 用 I-87017W-A5 來 量 測 +/- 150VDC ?082 Q: 一 個 FRnet : 快 速 遠 程 I/O 的 簡 單 程 式 設 計 方 法 .083 Q: 如 何 設 定 I-8xx7, I-8x37-80, I-7188EG 和 μPAC-7186EG 的 TCP 回 收 時 間 ?084086087088Q: 應 用 例 : 經 濟 且 更 效 的 可 熱 插 拔 備 援 ( 冗 餘 ) 系 統 - μPAC-7186EG 或I-8437-80 + RU-87P4 / 8.Q: 如 何 使 用 WinCon-8347 / 8747 或 μPAC-7186EG 或 iPAC-8447 / 8847 來 連 接一 顆 I-7530 或 多 顆 I-7530, 來 讀 取 或 控 制 CAN 及 CANopen 設 備 與 傳感 器 ?Q: 當 七 段 顯 示 器 出 現 Err00, Err02, Err03, Err90 和 E.0001 訊 息 時 代 表 什 麼 意思 ?Q: 功 能 變 更 : W-8347/8747,μPAC-7186EG,I-8x37-80,I-8xx7 和 I-7188EG/XG 從 新版 driver 起 , S256/512 和 X607/608 不 再 支 持 舊 的 可 保 存 變 數 (Retain variable)方 式 , 請 改 用 功 能 較 好 的 新 的 可 保 存 變 數 方 式 .089 Q: 為 何 我 的 μPAC-7186EG 無 法 更 新 驅 動 程 式 和 <strong>ISaGRAF</strong> 應 用 程 式 ?090 Q: 如 何 在 <strong>ISaGRAF</strong> PAC 內 使 用 I-7017Z?091092Q: 如 何 使 用 <strong>ISaGRAF</strong> PAC 加 上 I-87089 卡 片 搭 配 VW sensor , 來 量 測 水 泥 建築 物 的 VW 頻 率 與 溫 度 去 求 得 建 築 物 的 內 部 應 力 ?Q: 如 何 啟 用 μPAC-7186EG, I-7188EG 和 I-7188XG 的 COM2 或 COM3 成 為Modbus RTU Slave 埠 ?093 Q: WinCon-8347 / 8747 新 的 可 熱 插 拔 備 援 系 統 ( 冗 餘 系 統 ).094 Q: 如 何 更 新 WinCon-8347 / 8747 的 OS 版 本 ?095 Q: WinCon-8xx7 從 第 4.03 版 Driver 起 支 持 最 多 32 個 Modbus TCP/IP 連 線 .096097Q: 新 增 Modbus RTU / ASCII 功 能 方 塊 來 一 次 讀 取 最 多 24 個 Word 或 最 多 384 個Bit.Q: 如 何 在 WinCon-8x47 沒 更 接 Mouse 與 VGA 顯 示 器 的 情 況 下 , 使 用 USB 隨 身碟 來 更 改 它 的 IP 地 址 , 站 號 與 Modbus RTU 等 設 定 ?<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-81 <strong>ICP</strong> <strong>DAS</strong>


編 號中 文 <strong>ISaGRAF</strong> Ver.3 FAQ098 Q: 應 用 例 : 使 用 COM Port 的 函 式 讀 寫 Modbus RTU 設 備099Q: 如 何 編 寫 一 個 每 固 定 時 間 取 樣 ( 或 每 個 PLC scan 取 樣 ) 然 後 求 整 數 或 實 數 帄均 值 的 功 能 方 塊 ?100 Q: 如 何 使 用 I-8084W (4 / 8 – Ch. Counter 或 8-Ch. frequency) ?101Q: 如 何 使 用 MBUS_XR 或 MBUS_XR1 方 塊 來 對 Modbus RTU / ASCII 設 備 ,一 次 讀 取 最 多 120 個 Word 或 最 多 60 個 長 整 數 或 最 多 60 個 實 數 ( 只 適 用 於Wincon-8xx7 / 8xx6 與 WP-8xx7 / 8xx6 與 VP-25W7/23W7/25W6/23W6) ?102 Q: 為 何 WP-8xx7 或 VP-25W7/23W7 的 FTP server 連 不 上 ?103 Q: 在 WinPAC 上 使 用 RS-232 或 USB 觸 控 式 螢 幕 .104 Q: 為 何 我 的 PC / <strong>ISaGRAF</strong> 無 法 正 常 連 上 <strong>ISaGRAF</strong> PAC ?105106107108109Q: 如 何 在 WP-8xx7 , VP-25W7/23W7 與 iPAC-8xx7 內 使 用 I-8088W 來 控 制 8 個PWM 輸 出 ?Q: 如 何 利 用 WinPAC-8xx7 和 I-8084W 來 量 測 頻 率 或 轉 速 輸 入 並 使 用 C# .net 2008將 所 記 錄 的 值 畫 成 趨 勢 圖 ?Q: 如 何 在 <strong>ISaGRAF</strong> PAC 內 使 用 I-87211W (GPS module) 來 利 用 衛 星 訊 號 進 行 自動 時 間 校 正 與 取 得 目 前 位 置 的 經 緯 度 座 標 ?Q: 如 何 利 用 WinPAC-8xx7 和 I-87018z 來 量 測 溫 度 並 使 用 C# .net 2008 將 所 記 錄的 值 畫 成 趨 勢 圖 ?Q: 如 何 利 用 <strong>ISaGRAF</strong> PAC 和 I-87211w 並 透 過 Ebus 校 正 整 個 區 域 網 路 上 全 部<strong>ISaGRAF</strong> PAC 的 時 間 ?110 Q: ZigBee 無 線 通 訊 應 用 : 如 何 遠 距 離 控 制 I/O 與 進 行 資 料 收 集 ?111 Q: 如 何 利 用 GTM-201-RS232 發 各 別 國 家 文 字 的 簡 訊 ?112 Q: 如 何 使 用 <strong>ISaGRAF</strong> 來 編 程 I-8093W (3 軸 高 速 Encorder 輸 入 模 塊 ) ?113Q: 在 <strong>ISaGRAF</strong> PAC 內 使 用 Modbus TCP/IP Master 來 連 接 Modbus TCP/IPSlave 裝 置 .114 Q: 列 印 <strong>ISaGRAF</strong> PDF 文 件 時 , 如 何 避 免 印 出 亂 碼 ?115116Q: 開 發 eLogger HMI 加 上 <strong>ISaGRAF</strong> SoftLogic 一 起 應 用 於 WP-8xx7, VP-2xW7與 XP-8xx7-CE6 等 PAC 內 . ( 文 件 版 本 1.03, 於 2010 年 7 月 15 日 發 佈 )Q: 如 何 在 不 修 改 <strong>ISaGRAF</strong> 程 式 的 情 況 下 啟 用 WP-8xx7 與 VP-2xW7 的 第 2 到第 5 個 Modbus RTU slave 串 口 ?117 Q: 如 何 在 Windows Vista 或 Windows 7 中 安 裝 <strong>ISaGRAF</strong>?118 Q: 一 個 M.S. VC++ 6.0 範 例 程 式 跑 Modbus TCP 來 連 接 一 台 WP-8xx7.119 Q: 如 何 實 現 中 央 控 制 站 與 地 區 控 制 站 間 的 通 訊 備 援 機 制 ?<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-82 <strong>ICP</strong> <strong>DAS</strong>


編 號中 文 <strong>ISaGRAF</strong> Ver.3 FAQ120 Q: 如 何 使 用 Aver_N 與 Aver_F 來 計 算 連 續 帄 均 值 ( 或 稱 移 動 帄 均 值 ) ?121 Q: 如 何 建 立 與 移 除 <strong>ISaGRAF</strong> 開 發 環 境 ?122123124125126128Q: 如 何 解 決 W-8x47 發 生 的 USB-Freeze 問 題 ? 如 何 更 新 Wincon-8347 / 8747的 OS 版 本 ?Q: 如 何 加 快 InduSoft + <strong>ISaGRAF</strong> 的 畫 面 顯 示 速 度 (W-8xx6 / WP-8xx6 /VP-25W6 / XP-8xx6-CE6) ?Q: <strong>ISaGRAF</strong> 專 業 版 控 制 器 XP-8xx7-CE6-PRO 的 Web HMI 應 用 範 例 – 使 用FrontPageQ: XP-8xx7-CE6 與 iDCS-8000 ( 或 ET-7000 或 其 它 Modbus TCP Slave 設 備 )備 援 ( 冗 餘 ) 系 統Q: 利 用 WP-8847 連 接 控 制 ET-7018Z 與 ET-7044D, 並 使 用 InduSoft 或 VS2008C# .NET 以 及 VB .NET 來 當 HMIQ: 如 何 使 用 <strong>ISaGRAF</strong> PAC 加 上 i-87113DW 卡 片 搭 配 Carlson Strain GauageInputs ( 差 阻 式 傳 感 器 ) ?129 Q: 如 何 使 用 <strong>ISaGRAF</strong> PAC 連 接 <strong>ICP</strong> <strong>DAS</strong> 電 力 表 – PM-2133 與 PM-2134 ?130 Q: 如 何 使 用 WP-8x47/VP-23W7 SNTP Client 網 路 自 動 校 時 功 能 ?131Q: Soft-GRAF : 在 XP-8xx7-CE6 與 WP-8xx7 與 VP-2xW7 等 PAC 內 建 立 多彩 多 姿 的 HMI 畫 面 ( 文 件 版 本 : 1.3)132 Q: 使 用 I-8094F/8092F/8094 執 行 馬 達 控 制 運 動 .133Q: 如 何 在 <strong>ISaGRAF</strong> PAC 內 使 用 UDP 或 TCP 來 收 取 ( 或 發 送 ) 廣 播 資 料封 包 或 一 般 資 料 封 包134 Q: 如 何 寫 <strong>ISaGRAF</strong> 程 式 來 Reset <strong>ISaGRAF</strong> driver 或 Reset 整 台 Controller ?135Q: 如 何 寫 ISaRAF 程 式 用 WinCE PAC 去 對 後 台 的 MicroSoft SQL Server 讀 取或 寫 出 資 料 ?136 Q: HART 應 用 : <strong>ISaGRAF</strong> 可 程 式 自 動 控 制 器 (PAC) 加 上 I-87H17W137 Q: 如 何 使 用 uPAC-5000 系 列 控 制 器 透 過 GPRS 連 線 至 遠 端 伺 服 器 並 且 傳 送 資 料 ?138Q: 如 何 設 計 一 個 XP-8xx7-CE6 備 援 ( 冗 余 ) 系 統 ( 採 用 I-87K8 或 Modbus I/O或 其 它 I/O) ?139 Q: 如 何 安 裝 使 用 <strong>ISaGRAF</strong> 3.55 Demo 版 以 及 更 何 限 制 ?140 Q:InduSoft PC 端 的 HMI 如 何 利 用 Modbus TCP 與 <strong>ISaGRAF</strong> PAC 通 訊 ? NEW!141Q:iP-8xx7/μPAC-7186EG/I-8xx7/I-8xx7-80 提 供 防 寫 入 快 閃 式 記 憶 體 (Flashmemory) 功 能<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-83 <strong>ICP</strong> <strong>DAS</strong>


編 號中 文 <strong>ISaGRAF</strong> Ver.3 FAQ142 Q: 如 何 保 護 你 的 <strong>ISaGRAF</strong> 程 式 , 讓 盜 用 它 的 人 無 法 使 用 ?143 Q: 如 何 讓 <strong>ISaGRAF</strong> WinCE PAC 撥 接 GPRS 來 連 上 網 路 傳 資 料 ?144Q: 新 增 Modbus RTU / ASCII / TCP 方 塊 “Mbus12w” 來 一 次 寫 出 1 ~ 12 個Word .145 Q: 如 何 使 用 <strong>ISaGRAF</strong> 操 作 I-8123W 來 控 制 CANopen Slave 設 備 ?146147Q: Soft-GRAF Studio : 在 XP-8xx7-CE6 與 WP-8xx7 與 VP-2xW7 等 PAC 建 立 多采 多 姿 的 HMI 畫 面Q: 範 例 4: 如 何 使 用 VPD-130 經 由 RS-485 讀 取 μ PAC-7186EG 的 系 統 日 期/ 時 間 ?148 Q: I-87017DW、I-87017ZW 與 I-87019ZW 板 卡 使 用 說 明<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 11-84 <strong>ICP</strong> <strong>DAS</strong>


第 12 章 發 送 EmailWP-8xx7, XP-8xx7-CE6, VP-25W7, VP-23W7, Wincon-8xx7, µPAC-7186EG 與 iPAC-8447/8847等 controller 從 以 下 的 <strong>ISaGRAF</strong> driver 版 本 起 , 支 持 使 用 它 的 Ethernet 串 口 來 發 送 Email 功 能 . 該controller 所 在 的 區 域 網 路 必 需 是 可 以 上 網 的 網 路 , 不 然 無 法 把 Email 發 送 出 去 .WP-8xx7 / WP-5xx7 從 開 始 銷 售 之 日 起XP-8xx7-CE6 :從 開 始 銷 售 之 日 起VP-25W7 / VP-23W7: 從 開 始 銷 售 之 日 起Wincon-8xx7 / 8xx6 : 3.42iPAC-8447/8847: 從 開 始 銷 售 之 日 起µPAC-7186EG:從 開 始 銷 售 之 日 起若 想 使 用 GPRS 來 連 上 Internet 發 mail 或 發 TCP, UDP 資 料 出 去 , 請 參 考http://www.icpdas.com/faq/isagraf_c.htm > FAQ-143新 發 布 的 <strong>ISaGRAF</strong> driver: http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htmDemo program: www.icpdas.com – FAQ – Software – <strong>ISaGRAF</strong> – 067 , 071, 072, 076,077, 080或Wdemo_62 , Wdemo_63 , Wdmo_63a , Wdmo_65a, Wdmo_65b, demo_74a , demo_75a或http://www.icpdas.com/faq/isagraf_c.htm<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 12-1 <strong>ICP</strong> <strong>DAS</strong>


基 本 功 能 如 下 :1. 發 送 的 Email 可 以 夾 帶 一 個 附 件 或 不 夾 帶 附 件 . 附 件 file 格 式 可 以 是 text , binary 或 其 它任 何 格 式 . 夾 帶 的 附 件 最 大 可 以 如 下 .WinPAC-8xx7/VP-25W7/XP-8xx7-CE6:Wincon-8xx7:iPAC-8447 / 8847:µPAC-7186EG + X607:µPAC-7186EG + X608-RoHs:2M Bytes.2M Bytes.488K Bytes112K Bytes488K Bytes2. Email 的 主 旨 最 長 可 到 128 個 byte, Email 內 容 最 長 可 到 510 個 byte. 這 2 個 資 料 可 以 使 用 各自 國 家 的 語 言 文 字 .3. 每 封 Email 一 次 可 以 同 時 最 多 發 給 10 個 收 件 人 , 若 要 發 給 更 多 人 , 需 再 重 覆 發 送 多 次 .4. 每 封 要 發 送 出 去 的 Email 可 以 設 定 Email 優 先 權 為 High , Low 或 Normal.5. Mail server IP 可 以 只 指 定 一 台 (Mail server 1), 或 為 了 安 全 需 要 可 以 指 定 2 台 (Mail server 1與 Mail server 2). 若 更 指 定 2 台 mail server, 當 其 中 一 台 服 務 失 敗 時 , 會 改 使 用 第 2 台 來 服務 .6. 若 controller 是 採 用 雙 網 口 WinPAC-8xx7, XP-8xx7-CE6, iPAC-8xx7 或 Wincon-8x47 當 2個 網 口 都 Enable 時 , 若 其 中 一 個 發 生 斷 線 , 會 自 動 切 換 由 另 一 個 網 口 來 發 送 .7. 如 果 要 發 出 的 Email 更 夾 帶 附 件 , 此 附 件 檔 案 資 料 必 需 在 發 送 前 就 準 備 好 .WinPAC-8xx7 / VP-25W7 / XP-8xx7-CE6:Wincon-8xx7:需 存 放 於 „\Email_ETH\‟ 路 徑 內 , 例 如 , „\Email_ETH\A1.txt‟可 以 參 考 使 用 例 如 TMP := F_copy( '\Micro_SD\B9.jpg' , '\Email_ETH\B9.jpg' ) ;來 將 file覆 製 到 \Email_ETH\ 路 徑 內 .發 完 mail 後 可 以 參 考 使 用 例 如 TMP := F_delete( '\Email_ETH\B9.jpg' ) ; 來 將file 刪 除iPAC-8447 / 8847 與 µPAC-7186EG:需 存 放 於 電 池 備 援 SRAM 內 . 可 以 使 用 “S_xxx” 等 函 式 來 操 作 該 SRAM, 例 如“s_fl_ini” , “s_fl_avl” , “s_m_r” , …( 請 參 考 第 10.3 節 與 附 錄 A.4)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 12-2 <strong>ICP</strong> <strong>DAS</strong>


請 先 確 認 您 PC 上 的 <strong>ISaGRAF</strong> 軟 體 是 否 已 經 安 裝 了 Mail_snd , Mail_set 與 R_mb_adr 等<strong>ISaGRAF</strong> c-function. 若 沒 更 請 至 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-067 或 076 下載 Demo program, 將 其 內 的 Mail_snd.uia , Mail_set.uia 與 R_mb_adr.uia 採 用 以 下 方 法 安 裝起 來 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 12-3 <strong>ICP</strong> <strong>DAS</strong>


要 能 正 確 的 發 出 Email, 必 需 設 定 Controller 網 口 的 Gateway IP, 請 先 用 一 台 同 區 域 網 路 內 的PC, 開 啟 command prompt 視 窗 , 下 達 ipconfig 命 令 , 就 可 查 到 這 個 區 網 所 使 用 的 GatewayIP. 如 下 ( 本 例 為 10.0.0.254)然 後 請 把 此 Gateway IP address 填 入 controller 的 網 口 設 定 ( 若 使 用 雙 網 口 W-8347/8747 可以 LAN1 與 LAN2 都 Enable, 此 時 2 個 都 需 要 填 入 此 Gateway IP)Wincon-8xx7 / 8xx6 :之 後 請 運 行 Wincon 內 的 Wincon Utility – Save and Reboot , 將 Wincon 的 設 定 值 存 起 來 , 它 會 自動 重 新 開 機 一 次 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 12-4 <strong>ICP</strong> <strong>DAS</strong>


iPAC-8447 / 8847 與 µPAC-7186EG :請 在 PC 上 運 行 “7188xw.exe” , 之 後 下 達 “gateway 10.0.0.254” 命 令 來 設 定gateway IP 為 10.0.0.254. ( 請 參 考 ”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 ” 附 錄 B)該 command prompt 視 窗 也 可 用 來 查 詢 Mail server 的 IP (<strong>ISaGRAF</strong> 程 式 內 需 用 到 ), 比 如 若 要查 msa.hinet.net 的 IP, 請 下 達 TraceRT msa.hinet.net , 如 下 ( 本 例 為 168.95.4.211)從 www.icpdas.com > FAQ > Software > <strong>ISaGRAF</strong> > 067 與 076 下 載 的 program, 其 內 包 含 3 個 .Wdemo_62.pia 為 不 夾 帶 附 件 的 demo program.Wdemo_63.pia 為 夾 帶 附 件 的 demo ( 只 在 W-8xx7, WP-8xx7, VP-25W7, XP-8xx7-CE6 內 運 作 ) .Wdmo_63a.pia 為 夾 帶 附 件 的 demo program ( 只 能 在 µPAC-7186EG, iPAC-8447/8847 內 運 作 ) .這 3 個 demo program 內 使 用 的 Mail server 與 收 件 人 設 定 必 需 要 修 改 成 你 自 己 使 用 的 .TMP := MAIL_SET( 1 , 'chun@icpdas.com' ) ; (* 收 件 人 1, 請 修 改 *)TMP := MAIL_SET( 100 , 'go_mao@hotmail.com' ) ; (* 寄 件 人 , 請 修 改 *)TMP := MAIL_SET( 101 , '168.95.4.211' ) ; (* Mail server 1 的 IP, 請 修 改 *)(* 更 些 MAIL server 是 需 要 先 login 後 , 才 能 利 用 它 來 發 出 mail, 此 時 就 需 要 設 定 以 下 2 項 .若 使 用 的 Mail server 1 與 server 2 並 不 需 要 先 login 就 可 發 出 mail, 請 不 要 設 定 以 下 2 項*)TMP := MAIL_SET( 104 , 'MY_ACCOUNT' ) ; (* 更 在 該 mail server 註 冊 的 account *)TMP := MAIL_SET( 105 , 'MY_PASSWORD' ) ; (* 更 在 該 mail server 註 冊 的 password*)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 12-5 <strong>ICP</strong> <strong>DAS</strong>


之 後 重 新 Compile , 再 download 該 程 式 到 你 的 controller 內 運 行 會 出 現 如 下 視 窗 .請 將 to_send 設 為 TRUE 來 發 送 一 封 Email. 幾 秒 後 , 若 成 功 Email_state 的 值 會 是 21 或 22,若 失 敗 Email_state 的 值 會 小 於 0. Email_progress 若 為 100 表 示 資 料 已 經 100% 發 送 出 去 了 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 12-6 <strong>ICP</strong> <strong>DAS</strong>


以 下 是 發 送 Email 使 用 的 函 式 說 明 .MAIL_Set( CMD_ , MSG_ )輸 入 參 數 :CMD_ Integer 可 以 使 用 以 下 的 值 .1 : 設 定 receiver 1 的 郵 箱 地 址 . 例 如 , TMP := Mail_set( 1 , 'chun_tsai@icpdas.com' ) ;郵 箱 地 址 最 長 不 可 超 過 48 個 字 .2 ~ 10 : 設 定 receiver 2 到 10 的 郵 箱 地 址 ( 可 以 不 設 定 , 需 要 使 用 時 才 要 設 ).100 : 設 定 發 信 人 的 郵 箱 地 址 . 例 如 TMP := Mail_set( 100 , 'sender1@icpdas.com' ) ;郵 箱 地 址 最 長 不 可 超 過 48 個 字 .101 : 設 定 mail server 1 的 IP 地 址 . 例 如 , TMP := Mail_set( 101 , '168.95.4.211' ) ;102 : 設 定 mail server 2 的 IP 地 址 ( 可 以 不 設 定 ).103 : 設 定 使 用 新 的 TCP port No. 來 發 email.( 一 般 都 不 必 設 定 , 內 定 為 使 用 25 : “SMTP protocol” )******* CMD_ 104, 105 與 106 從 以 下 <strong>ISaGRAF</strong> driver 版 本 起 才 更 支 持 *******uPAC-7186EG (<strong>ISaGRAF</strong> driver Ver. 1.14 or later)iPAC-8xx7 (<strong>ISaGRAF</strong> driver Ver. 1.10 or later)WinPAC-8xx7 / 8xx6 (<strong>ISaGRAF</strong> driver Ver. 1.37 or later)VP-25W7 / 23W7 / 25W6 / 23W6 (<strong>ISaGRAF</strong> driver Ver. 1.29 or later)XP-8xx7-CE6 / XP-8xx6-CE6 (<strong>ISaGRAF</strong> Ver. 1.17 or later)104 : 設 定 user_account 給 需 要 先 login 才 能 發 mail 的 mail server,例 如 , TMP := Mail_set( 104 , 'my_account' ) ;105 : 設 定 user_password 給 需 要 先 login 才 能 發 mail 的 mail server,例 如 , TMP := Mail_set( 105 , 'my_password' ) ;若 使 用 的 mail server 不 需 要 login 就 可 以 發 出 mail, 請 不 要 設 定 CMD_ 104 與 105.106 : 設 定 Timeout, 單 位 是 秒 , 值 可 以 是 30 ~ 180 , 若 不 設 定 , 上 方 所 列 版 本 內定 為 60 秒 ,舊 版 則 是 內 定 為 20 秒 . 改 成 75 秒 可 使 用 TMP := Mail_set( 106 ,'75' ) ;MSG_ Message 對 應 於 “CMD_” 所 要 輸 入 的 字 串 資 料傳 回 值 :Q_ Boolean True : 正 確 . False : 失 敗 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 12-7 <strong>ICP</strong> <strong>DAS</strong>


MAIL_snd( Start_ , Num_ , Subject_ , Prio_ , Data1_ , Data2_ , Attach_ )輸 入 參 數 :Start_ Integer 要 傳 給 那 些 receiver 編 號 , 從 編 號 幾 號 開 始 ? 值 可 以 是 1 ~ 10.Num_ Integer 共 要 傳 給 幾 個 receiver, 值 可 以 是 1 ~ 10.Subject_ Message 郵 件 主 旨 . 最 長 為 128 個 字 . 例 , 'Alarm of plant 1'Prio_ Integer 要 使 用 的 郵 件 優 先 權 符 號 .可 以 是 1 : 高 , 3 : 一 般 , 5 : 低 . 內 定 值 為 3.Data1_ Message 郵 件 內 容 前 半 段 ( 最 長 為 255 個 字 ).例 如 , 'Pressure 1 is too high. Please check it soon ! ... 'Data2_ Message 郵 件 內 容 後 半 段 ( 最 長 為 255 個 字 ).例 如 , 'More message ...'Attach_ Message 附 件 檔 名 或 編 號 . ( 看 是 使 用 那 種 Controller)若 不 夾 帶 附 件 , 請 填 入 '' ( 空 字 串 ) .WP-8xx7 & W-8xx7 : 檔 名 不 可 超 過 64 個 字 , 必 需 存 放 於 '\Email_ETH\' 路 徑 內 .例 如 , '\Email_ETH\A1.txt'uPAC-7186EG : 檔 案 必 需 存 放 於 X-607, X-608 電 池 備 援 SRAM 內 .iPAC-8447/8847 : 檔 案 必 需 存 放 於 電 池 備 援 SRAM 內 .uPAC-7186EG 與 iPAC-8447/8847 可 以 使 用 „1‟ , „2‟ , … , „8‟ .該 數 字 表 示 “S_FL_AVL” 函 式 設 的 檔 案 編 號( 請 參 考 ”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 ” 第 10.3 節 與 附 錄 A.4)最 大 可 夾 帶 的 附 件 檔 案 大 小 為 :WP-8xx7 & W-8xx7: 2M Bytes. , iPAC-8447 / 8877: 488K BytesuPAC-7186EG + X607: 112K Bytes , uPAC-7186EG + X608: 488K Bytes傳 回 值 :Q_Integer1 : 正 確 , 之 後 會 開 始 發 送 email.< 0 : 發 生 錯 誤-1 : 忙 碌 中 . 前 一 封 email 還 在 發 送 中 .-2 : 郵 件 收 件 者 沒 設 定 或 設 錯 (“mail_set” 函 式 的 參 數 "Start_" 沒 設 定 或 設 錯 ).-3 : Mail server 1 沒 設 定 或 設 錯 .-4 : 發 信 人 的 郵 箱 地 址 沒 設 定 或 設 錯 .-5 : "Start_" 參 數 值 小 於 1 或 大 於 10-6 : "Subject_" 參 數 長 度 超 過 128 個 字 .-7 : 郵 件 功 能 未 啟 用 . 請 使 用 "mail_set" 函 式 來 設 定 至 少 1 個 收 件 者 郵 箱 地 址 , 至少 1 個 正 確 的 mail server IP 與 發 信 人 的 郵 箱 地 址-8 : "Num_" 值 設 成 小 於 1 或 大 於 10-9 : 指 定 的 附 件 檔 名 不 存 在 或 長 度 超 過 64 個 字 或 檔 案 太 大 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 12-8 <strong>ICP</strong> <strong>DAS</strong>


R_MB_ADR( 1 , 9995 ) 用 來 取 得 呼 叫 "Mail_snd( )" 後 的 發 送 狀 態 .傳 回 值 :0 : 休 息 中 . 無 命 令 下 達 .1 : 忙 碌 . 正 在 發 送 中 .21 : Email 已 經 成 功 地 經 由 Mail server 1 發 送 出 去 了 .22 : Email 已 經 成 功 地 經 由 Mail server 2 發 送 出 去 了 .< 0 : 發 生 錯 誤 .-1 : 無 法 連 上 Mail server-2 : Mail server 拒 絕 該 發 信 人 傳 送 的 郵 件 .-3 : Time out-4 : Ethernet socket error-5 : Mail server 拒 絕 該 收 信 人 郵 箱 地 址 .R_MB_ADR( 1 , 9994 ) 用 來 取 得 呼 叫 "Mail_snd" 後 的 發 送 進 度 .呼 叫 “R_MB_ADR( 1 , 9994 )” 無 法 偵 測 錯 誤 . 必 需 使 用 “R_MB_ADR( 1 , 9995 )”才 能 偵 測 錯 誤 , 當 錯 誤 發 生 時 , 該 錯 誤 編 號 會 一 直 保 留 直 到 下 次 再 呼 叫 “Mail_snd( )” 為 止傳 回 值 :0 : 休 息 中 . 無 命 令 下 達1 : 正 在 連 接 Mail server 12 : 已 經 連 上 Mail server 1 . 傳 出 "HELO “ 訊 息3 : 傳 出 "MAIL FROM: ..." 訊 息 給 Mail server 14 : 傳 出 " RCPT TO: ..." 訊 息 給 Mail server 15 : 傳 出 "DATA" 訊 息 給 Mail server 16 : 正 在 連 接 Mail server 27 : 已 經 連 上 Mail server 2 . 傳 出 "HELO “ 訊 息8 : 傳 出 "MAIL FROM: ..." 訊 息 給 Mail server 29 : 傳 出 " RCPT TO: ..." 訊 息 給 Mail server 210 : 傳 出 "DATA" 訊 息 給 Mail server 211 ~ 100 : 目 前 資 料 傳 送 進 度 .例 如 , 25 表 示 25 / 100 = 25 %36 表 示 36 / 100 = 36 %95 表 示 95 / 100 = 95 %100 表 示 100 / 100 = 100 % ( 全 傳 完 了 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 12-9 <strong>ICP</strong> <strong>DAS</strong>


第 13 章 透 過 Modem_Link 遠 程 監 視 及 下 載 程 式13.1: IntroductionI-8417/8817/8437/8837 控 制 器 的 COM4 & W-8xx7 的 COM2 支 援 完 整 的 Modem 接 腳 訊 號 .I-8xx7從 驅 動 程 式 2.14 版 開 始 , W-8xx7 從 驅 動 程 式 3.10 版 開 始 , 更 支 援 Modem_Link 功 能 可 以 監 視遠 方 的 控 制 器 的 運 作 狀 況 或 下 載 程 式 . 請 參 閱 附 錄 C 的 方 法 安 裝 最 高 版 本 的 驅 動 程 式 . 可 由網 路 上 取 得 :http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htm必 頇 連 接 ”Modem Station” 的 COM4 到 一 台 Modem, Com4 的 接 腳 與 PC 上 的 COM1 完 全 一 樣(9-pin Dsub) . 連 接 圖 示 如 下 .PCModemI-8xx7W-8xx7Modem StationCOM4<strong>ISaGRAF</strong>Phone LineModemPhone Line“Modem Station” 指 的 是 連 到 Modem 的 那 台 I-8417/8817/8437/8837 或 W-8xx7, 它 會 接 聽 由 遠方 電 腦 打 過 來 的 電 話 . 如 果 使 用 的 控 制 器 為 I-8437/8837 ( 更 倚 太 網 ), 就 可 規 劃 多 台I-8437/I-8837 連 在 1 起 , 遠 方 的 電 腦 可 連 到 與 Modem Satation 連 在 一 起 的 任 1 台 I-8437/8837,I-8437/ 8837PCModemEthernet<strong>ISaGRAF</strong>Phone LineModemStationCOM4i8xx7,w8xx7Phone LineModem如 下 .注 意 :1. 若 要 使 用 W-8xx7 的 “modem_link” 功 能 , 請 參 考 W-8xx7 的 “ 快 速 上 手 手 冊 ” 來 關 閉COM2 使 用 的 Modbus RTU 功 能 .2. Wincon-8xx7 只 支 持 Modem_station ( 更 接 Modem 的 那 一 台 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 13-1 <strong>ICP</strong> <strong>DAS</strong>


13.2: 透 過 Modem_Link 下 載 程 式注 意 :1. 要 更 改 遠 方 控 制 器 的 程 式 更 時 是 很 危 險 的 , 電 話 線 路 品 質 , 忙 碌 情 況 , 天 氣 , …, 都 更 影 響 .若 非 必 要 , 盡 量 不 要 用 Modem_Link 下 載 程 視 . 但 監 視 功 控 器 的 運 作 情 況 倒 是 可 以 進 行 , 也無 危 險2. W-8xx7 的 COM2 預 設 為 支 持 Modbus RTU 協 議 的 通 訊 埠 , 若 要 使 用 W-8xx7 的“modem_link” 功 能 , 請 參 考 W-8xx7 的 “ 快 速 上 手 手 冊 ” 來 關 閉 COM2 原 先 預 設 的 ModbusRTU 功 能 .警 告 :不 要 下 載 一 個 會 占 用 I-8xx7:COM4 或 W-8xx7:COM2 到 其 它 用 途 的 程 式 , 因 為 如 此Modem_Link 功 能 會 無 法 運 作 , 再 也 無 法 由 遠 方 連 線 , 除 非 再 跑 到 控 制 器 旁 邊 把 程 式 改 回 來 . 比如 在 I-8xx7 使 用 了 “Bus7000” 及 “Mbus” 在 port_no = 4 上 , 或 者 在 程 式 內 用 了 “Comopen”函 數 去 開 啟 Com4, … 都 會 使 Modem_Link 功 能 會 無 法 運 作 . 但 第 12 章 說 明 的 “Email” 方 塊不 在 此 限 .最 好 在 Modem Station 那 台 控 制 器 的 程 式 內 加 上 “modem password” 以 保 護 你 的 系 統 不 被 外 人入 侵 . 請 進 入 I/O connection 視 窗 , 連 接 “Modem_PS”之 後 輸 入 密 碼 . 密 碼 最 多 12 個 字 , 且 不 能 使 用 “ 及 „ 符 號 . 之 後 重 新 編 譯 , 下 載 到 ModemStation 即 可 .注 意 :使 用 者 可 寫 Visual Basic 程 式 透 過 來 Modem 及 電 話 線 來 存 取 遠 方I-8417/8817/8437/8837 內 的 資 料 . 請 由 以 下 網 址 下 載 VB6 的 範 例 程 式 .ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/vb_demo orI-8000 CD-ROM:\napdos\isagraf\vb_demo\<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 13-2 <strong>ICP</strong> <strong>DAS</strong>


非 常 重 要 :如 果 Modem Station 沒 更 設 定 密 碼 , 任 何 知 道 那 隻 電 話 號 碼 的 人 , 都 可 用 <strong>ISaGRAF</strong> 以Modem_Link 去 連 它 , 之 後 可 以 更 改 掉 程 式 . 建 議 最 好 要 設 密 碼 .以 下 的 步 驟 為 使 用 Modem_Link 的 方 法 .點 選 “Link setup”, 選 取 “Modem_Link”, 之 後 點 選 “Setup”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 13-3 <strong>ICP</strong> <strong>DAS</strong>


Windows NT, 2000 & XP 的 使 用 者 :若 你 的 PC 是 Windows 95, 98 請 跳 至 次 三 頁 的 “Windows 95, 98 的 使 用 者 ” .進 入 ”Setup” 後 , 如 果 你 要 連 的 是 Modem station 那 台 控 制 器 , 選 取 “Modem station”, 不 然 選 取“Other IP”. “Other IP” 指 的 是 和 Modem Station 用 倚 太 網 相 連 的 I-8437/8837, 必 頇 輸 入 它 的 IP位 址 .離 開 ”Link Setup” 視 窗 後 , 點 選 “Debug”. 選 取 目 前 PC 上 連 Modem 的 Com 埠 , 之 後 點 選 “AddStation” ( 假 如 視 窗 的 左 邊 都 沒 更 ).然 後 會 看 到 以 下 的 視 窗 . 輸 入 1 個 名 字 , 正 確 的 電 話 號 碼 及 密 碼 給 這 個 新 建 的 Station. 如 果 在電 話 號 碼 內 出 現 逗 號 “,” . 它 會 停 留 1 秒 再 撥 剩 下 的 號 碼 . 例 如 “9,,22570001” 會 先 撥 9, 然後 停 2 秒 , 再 撥 “22570001”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 13-4 <strong>ICP</strong> <strong>DAS</strong>


選 取 該 Station 圖 示 , 之 後 點 選 “Connect to Station” 去 撥 號 連 至 遠 方 的 控 制 器 .連 線 成 功 後 . 你 可 以 監 視 程 式 , 變 數 … 等 的 運 作 狀 況 , 也 可 更 改 變 數 的 值 或 下 載 成 新 的 程 式要 與 遠 方 的 控 制 器 斷 線 , 請 關 閉 “ … Debugger” 視 窗 . 之 後 你 可 選 則 “Yes” 去 掛 斷 電 話 , 或選 ”No” 讓 電 話 繼 續 連 線 . 電 話 繼 續 連 線 的 好 處 是 , 可 再 連 到 Modem Station 倚 太 網 上 的 任 一 台 ,而 不 必 重 新 撥 號 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 13-5 <strong>ICP</strong> <strong>DAS</strong>


然 而 , 記 得 該 掛 斷 的 時 後 還 是 得 掛 斷 , 避 免 多 繳 電 話 費 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 13-6 <strong>ICP</strong> <strong>DAS</strong>


Windows 95, 98 的 使 用 者 :進 入 ”Setup” 後 , 輸 入 電 話 號 碼 , 目 前 PC 上 連 Modem 的 Com 埠 , 正 確 的 密 碼 . 如 果 在 電 話 號碼 內 出 現 逗 號 “,” . 它 會 停 留 1 秒 再 撥 剩 下 的 號 碼 . 例 如 “9,,22570001” 會 先 撥 9, 然 後 停 2 秒 ,再 撥 22570001.如 果 你 要 連 的 是 Modem station 那 台 控 制 器 , 選 取 “Modem station”, 不 然 選 取 “Other IP”.“Other IP” 指 的 是 和 Modem Station 用 倚 太 網 相 連 的 I-8437/8837, 必 頇 輸 入 它 的 IP 位 址 .然 後 按 下 “Debug” 開 始 撥 號 連 到 遠 方 .連 線 成 功 後 . 你 可 以 監 視 程 式 , 變 數 … 等 的 運 作 狀 況 , 也 可 更 改 變 數 的 值 或 下 載 成 新 的 程 式與 Windows NT, 2000 & XP 不 同 的 是 , 當 關 掉 “ … Debugger” 視 窗 時 , 連 電 話 也 會 被 掛 斷 .若 要 連 線 會 再 重 撥 一 次 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 13-7 <strong>ICP</strong> <strong>DAS</strong>


第 14 章Spotlight : 簡 易 圖 控Spotlight 是 <strong>ISaGRAF</strong> 提 供 的 簡 易 圖 控 的 功 能 . 圖 控 元 件 包 含 Boolean Icon, Bar Graph, TrendCurve, Value Text, Bitmap Picture.14.1 Spotlight 範 例 :本 範 例 放 在 <strong>ICP</strong> <strong>DAS</strong> I-8000 CD-ROM 內 的 “demo_37”. 請 參 閱 第 11 章 來 安 裝 它 到 <strong>ISaGRAF</strong>內 .變 數 :Name Type Attribute DescriptionINIT Boolean Internal 初 值 設 為 TRUE, 只 更 在 第 1 個 PLC 周 期 時 為 TRUEL1 Boolean Output 1 號 輸 出 , 連 至 “show3led” 的 第 1 點L2 Boolean Output 2 號 輸 出 , 連 至 “show3led” 的 第 2 點L3 Boolean Output 3 號 輸 出 , 連 至 “show3led” 的 第 3 點Button1 Boolean Inpput 1 號 按 鈕 , 連 至 “spush4key” 的 第 1 點Button2 Boolean Inpput 2 號 按 鈕 , 連 至 “spush4key” 的 第 2 點Button3 Boolean Inpput 3 號 按 鈕 , 連 至 “spush4key” 的 第 3 點Button4 Boolean Inpput 4 號 按 鈕 , 連 至 “spush4key” 的 第 4 點VAL_OUT Integer Internal 閃 爍 周 期 輸 入 值 , 初 值 設 為 500 ( 單 位 : ms)OLD_VAL_OUT Integer Internal 記 錄 前 一 個 PLC scan 的 VAL_OUT 舊 值T1 Timer Internal 閃 爍 周 期 TimerMSG1 Message Internal 狀 態 報 告 , 請 設 定 其 Maxinum Length 為 48圖 控 畫 面 全 貌 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-1 <strong>ICP</strong> <strong>DAS</strong>


專 案 程 式 架 構 :群 組 名 稱 : Spotligh專 案 名 稱 : demo_37ST 程 式 “st_init” 於 “Begin” 區 :(* Do some init action *)if INIT = TRUE thenT1 := TMR(VAL_OUT) ; (* Convert integer:VAL_OUT to Timer:T1 inms *)MSG1 := 'OK.' ;OLD_VAL_OUT := VAL_OUT ; (* init OLD value *)end_if ;(* if set a new value to VAL_OUT *)if VAL_OUT OLD_VAL_OUTthen(* VAL_OUT is acceptable *)if (VAL_OUT >= 200) and (VAL_OUT


LD 程 式 “demot” 於 “Begin” 區 :動 作 說 明 :4 個 按 鈕 的 狀 態 會 顯 示 到 圖 控 畫 面 上 .第 1 個 輸 出 會 以 “VAL_OUT” 給 的 周 期 時 間 閃 爍 .“VAL_OUT” 的 值 可 由 圖 控 畫 面 上 手 動 輸 入 . 同 時 也 會 顯 示 在 控 制 器 的 面 板 上 .第 2 及 第 3 個 輸 出 可 圖 控 畫 面 上 手 動 控 制 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-3 <strong>ICP</strong> <strong>DAS</strong>


製 作 Spotlight 畫 面 的 步 驟 :A. 完 成 上 一 頁 的 專 案 程 式 , 並 編 譯 好 .B. 複 製 “ICO” 目 錄 到 專 案 程 式 的 所 在 目 錄“ICO” 目 錄 內 存 放 一 些 <strong>ICP</strong> <strong>DAS</strong> 製 定 好 的 Boolean Icon. 可 從 I-8000 光 碟 內 找 到\napdos\isagraf\ICO\以 本 例 為 例 , 群 組 名 稱 為 “spotligh”, 專 案 名 稱 為 “demo_37”, 所 以 複 製 光 碟 內 的\napdos\isagraf\ICO\*.* 到 c:\isawin\spotligh\demo_37\ 內假 如 光 碟 內 沒 更 可 至 網 路 上 下 載 . ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/C. 進 入 Spotlight 編 輯 視 窗點 選 “Simulate”, 之 後 點 選 “Spotlight” 以 進 入 .空 白 的 “SpotLight” 視 窗 如 下 所 示<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-4 <strong>ICP</strong> <strong>DAS</strong>


D. 新 增 “boolean Icons”點 選 “Boolean icon”, 之 後 給 定 Name 為 “Button1”, Caption 為 “Name”, Align 為 “Top” ,之 後 選 取 適 當 的 *.ico 圖 檔 給 “FALSE” 及 “TRUE”, 並 將 ”Command variable” 選 項 拿 掉 .點 選 這 理 以 選 取 *.ico 圖 檔 .若 沒 更 任 何 圖 檔 出 現 , 請 重 新操 作 步 驟 B.然 後 拖 移 此 boolean icon 到 適 當 的 位 置 .先 點 選 1 下 剛 剛 新 產 生 的 boolean icon, 複 製 它 (Ctrl+c), 然 後 貼 出 來 (Ctrl+v), 如 此 會 產 生 1 個 一樣 的 boolean icon. 將 它 拖 移 到 適 當 的 位 置 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-5 <strong>ICP</strong> <strong>DAS</strong>


先 點 選 1 下 剛 剛 新 複 製 出 來 的 boolean icon, 之 後 按 一 下 划 鼠 右 鍵 , 選 取 “Set item style” , 改 變Nname 為 “Button2”.按 一 下 划 鼠 右 鍵 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-6 <strong>ICP</strong> <strong>DAS</strong>


如 此 得 到 …用 相 同 的 方 法 產 生 另 外 2 個 boolean Icon 如 下 . 以 滑 鼠 點 選 ”Save list”, 取 一 個 名 子 給 這 個 畫 面 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-7 <strong>ICP</strong> <strong>DAS</strong>


我 們 還 需 要 另 一 個 Boolean icon 來 顯 示 “L1” 的 輸 出 狀 態 . 請 選 用 不 同 顏 色 的 *.ico 檔 ( 如TRUE : “YEL_ON2.ico” , FALSE : “YEL_OFF2.ico” ).另 外 再 新 增 2 個 boolean Icon L2 及 L3 如 下 (TRUE:”CMD_ON2.ico” and FLASE:“CMD_OFF2.ico”), 給 L2 及 L3 的 “Command variable” 選 項 要 留 著 . 安 全 起 見 , 想 到 就 存 .給 L2 及 L3 的 這 個 選 項 要 留 著<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-8 <strong>ICP</strong> <strong>DAS</strong>


E. 新 增 “Unipolar bargraph”點 選 “Unipolar bargraph”, 給 定 Name 為 “VAL_OUT”, Scale 為 “5000”, Color 為 藍 色 , Back為 灰 色 , Direction 為 “To the right”, Caption 為 “Name=Value”, Align 為 “Top”, 並將 ”Command variable” 選 項 拿 掉 .點 選 滑 鼠 左 鍵 並 一 直 按 住 , 改 變 它 的 形 狀 . 安 全 起 見 , 想 到 就 存 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-9 <strong>ICP</strong> <strong>DAS</strong>


F. 新 增 “Single text”點 選 “Single text”, 給 定 Name 為 “VAL_OUT”, Caption 為 “Name”, Align 為 “Top”給 VAL_OUT 的 這 個 選 項要 留 著將 它 移 到 適 當 的 位 置 , 安 全 起 見 , 想 到 就 存 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-10 <strong>ICP</strong> <strong>DAS</strong>


再 點 選 “Single text”, 設 定 Name 為 “MSG1”, Caption 為 “None”, Align 為 “Left” , 並將 ”Command variable” 選 項 拿 掉 .移 到 適 當 的 位 置 後 儲 存 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-11 <strong>ICP</strong> <strong>DAS</strong>


G. 新 增 “Curve”點 選 “Curve”, 給 定 Name 為 “VAL_OUT”, Scale 為 “5000”, Color 為 紅 色 red, Back 為 灰色 , Caption 為 “Name”, Align 為 “Top”, 並 將 ”Command variable” 選 項 拿 掉 .點 選 滑 鼠 左 鍵 並 一 直 按 住 , 改 變 它 的 形 狀 . 安 全 起 見 , 想 到 就 存 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-12 <strong>ICP</strong> <strong>DAS</strong>


H. 新 增 “picture”請 用 MS 小 畫 家 建 立 2 個 圖 檔 如 下 . 分 別 取 名 為 “sp2.bmp” 及 “ms.bmp” , 並 存 到 專 案 的 所在 目 錄 ( 本 例 “c:\isawin\spotligh\demo_37\”)點 選 “Picture”, 選 取 要 插 入 的 圖 檔 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-13 <strong>ICP</strong> <strong>DAS</strong>


請 新 增 2 個 pictures “sp2.bmp” 及 “ms.bmp” 到 適 當 的 位 置 , 如 下 圖 . 點 選 “Lock” 將 畫 面 鎖 住( 不 能 再 更 改 的 意 思 ). 記 得 要 存 .I. 在 “Workspace” 內 加 入 Spotligh 畫 面離 開 “simulation”, 然 後 點 選 “Debug” - “Workspace”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-14 <strong>ICP</strong> <strong>DAS</strong>


將 剛 建 好 的 圖 控 畫 面 搬 到 右 邊 (Workspace), 如 此 當 程 式 在 模 擬 或 連 到 控 制 器 時 , 該 圖 控 畫 面 會自 動 跳 出 來 .J. 下 載 到 控 制 器 並 測 詴點 選 “Debug” 以 下 載 . 你 可 以 用 滑 數 雙 擊 “L2”, “L3” 或 “VAL_OUT” 去 控 制 它 們 .也 可 按 控 制 器 上 的 面 版 按 鈕 , 看 畫 面 如 何 變 化 .OK.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-15 <strong>ICP</strong> <strong>DAS</strong>


可 雙 擊 ”VAL_OUT” 以 輸 入 1 個 超 過 5000 的 值 , 觀 看 更 何 反 應 .注 意 :若 要 讓 通 訊 快 一 點 反 應 到 圖 控 畫 面 上 , 可 點 選 “Options” – “Parameters”, 然 後 設 定 “Cyclicrefresh duration” 到 一 個 較 小 的 值 . ( 建 議 別 小 於 200 ms)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 14-16 <strong>ICP</strong> <strong>DAS</strong>


第 15 章 編 寫 自 行 定 義 的 Function<strong>ISaGRAF</strong> 提 供 給 使 用 者 以 ST, FBD, IL 及 QLD 等 語 法 來 自 行 定 義 Function. 這 些 Function 多半 是 使 用 者 因 自 己 需 要 而 制 定 的 , 例 如 某 些 一 直 重 複 用 到 的 邏 輯 .Function 一 定 更 1 個 回 傳 值 , 且 它 的 名 稱 需 與 Function 的 名 稱 一 樣 . Function 最 多 可 更 31 個 輸入 參 數 . Function 內 的 程 式 不 能 呼 叫 ” 功 能 方 塊 ”, 但 可 呼 叫 <strong>ISaGRAF</strong> 的 標 準 Fnction 和 <strong>ICP</strong><strong>DAS</strong> 提 供 的 Function (A.4 節 內 標 記 為 Function 的 可 呼 叫 , 但 標 記 為 Function Block 的 不 行 )本 章 的 範 例 為 製 作 一 個 自 行 定 義 Function 來 判 斷 何 時 去 寫 資 料 到 EEPROM. 格 式 如 下 .Function 名 稱 : W_EEP說 明 : 當 值 更 變 時 , 儲 存 該 整 數 值 到 EEPROM 內 .輸 入 參 數 :ADDR_ (integer) : 要 存 到 EEPROM 內 的 那 個 位 置V1_ (integer) : 新 值V2_ (integer) : 舊 值回 傳 值 :W_EEP (integer): 回 傳 回 新 值注 意 : 自 行 定 義 的 Function 所 宣 告 的 輸 入 參 數 將 會 變 成 保 留 字 . 這 也 是 為 何 本 例 使 用 ADDR_ ,V1_ , V2_ 而 不 用 ADDR , V1 & V2 的 原 因 .15.1: 在 1 個 專 案 內 定 義 FunctionFunction 如 果 是 定 義 在 某 專 案 內 , 就 只 能 在 該 專 案 內 使 用 . 別 的 專 案 不 能 用 它 .A. 在 1 個 專 案 內 點 選 “Create new program”. 取 名 為 “W_EEP”, Language 為 “ST:…”, Style 為“Function”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 15-1 <strong>ICP</strong> <strong>DAS</strong>


B. 雙 擊 剛 建 立 的 Function. 進 入 後 , 點 選 “Sub-program parameters” 以 定 義 輸 入 參 數 及 回 傳 值 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 15-2 <strong>ICP</strong> <strong>DAS</strong>


C. 宣 告 區 域 變 數 ( 只 更 在 本 Function 內 使 用 ). 這 裡 需 要 1 個 boolean internal 變 數 “TMP”.D. 編 寫 Function 內 的 程 式IF V1_ V2_ THEN (* if value changed *)TMP := EEP_N_W(ADDR_ , V1_) ; (* save it to theEEPROM *)W_EEP := V1_ ; (* return the new value *)END_IF ;E. 編 譯 該 Function.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 15-3 <strong>ICP</strong> <strong>DAS</strong>


F. 在 同 個 專 案 的 其 他 程 式 內 呼 叫 它 .專 案 內 的 變 數 :Name Type Attribute DescriptionINIT Boolean Internal 初 值 為 TRUE. TRUE 表 示 第 1 個 PLC 周 期K1 Boolean Input 連 到 “push4key” 的 第 1 個 按 鈕New_Val Integer Internal 要 寫 到 EEPROM 的 新 值Old_Val Integer Internal 舊 值Val Integer Internal EEPROM 的 讀 回 值專 案 程 式 架 構 :ST 程 式 – “end_init” 在 “End” 區 :IF INIT=TRUE THENINIT := FALSE ;END_IF ;LD 程 式 – “demo” :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 15-4 <strong>ICP</strong> <strong>DAS</strong>


G. 設 定 Compiler Options, 然 後 編 譯 本 專 案 .若 編 譯 成 功 , 下 載 到 控 制 器 內 , 你 可 以 在 <strong>ISaGRAF</strong> 內 更 改 “New_Val” 的 值 , 然 後 按 控 制 器 上的 第 1 個 按 鈕 , 從 EEPROM 內 讀 出 它 剛 寫 入 的 的 值 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 15-5 <strong>ICP</strong> <strong>DAS</strong>


15.2: 在 <strong>ISaGRAF</strong> Library 內 定 義 Function定 義 在 <strong>ISaGRAF</strong> 內 的 Function 可 被 任 何 專 案 使 用 .方 法 與 前 一 節 15.1 類 似 . 請 先 讀 一 遍 .A. 進 Library. 之 後 點 選 “Functions”B. 建 立 新 function, 取 名 為 “W_EEP_N” , Language 為 “Structured Text”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 15-6 <strong>ICP</strong> <strong>DAS</strong>


C. 定 義 輸 入 參 數 與 回 傳 值D. 編 寫 程 式 碼 .IF V1_ V2_ THEN (* if value changed *)TMP := EEP_N_W(ADDR_ , V1_) ; (* save it to theEEPROM *)W_EEP_N := V1_ ; (* return the new value *)END_IF ;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 15-7 <strong>ICP</strong> <strong>DAS</strong>


E. 宣 告 區 域 變 數 . 這 裡 需 要 1 個 boolean internal 變 數 “TMP”F. 儲 存 並 設 定 ”Compiler options”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 15-8 <strong>ICP</strong> <strong>DAS</strong>


G. 編 譯 本 Function.若 成 功 , 之 後 寫 的 任 何 專 案 (Project) 都 可 呼 叫 它 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 15-9 <strong>ICP</strong> <strong>DAS</strong>


第 16 章 連 接 MMICONI-8417/8817/8437/8837, I-7188EG/XG 及 Wincon-8xx7 控 制 器 可 連 接 至 <strong>ICP</strong> <strong>DAS</strong> 出 產 的MMICON 來 當 成 人 機 介 面 . MMICON 內 含 1 個 240 x 64 點 的 LCD 與 1 個 4 x 4 的 鍵 盤 . 可 用來 顯 示 圖 形 , 字 串 , 整 數 , 實 數 , 也 可 輸 入 按 鍵 , 字 串 , 整 數 , 實 數 . 其 控 制 程 式 使 用 <strong>ISaGRAF</strong>來 寫 出 .16.1: 硬 體 安 裝請 參 閱 與 MMICON 硬 體 包 裝 在 一 起 的 “MMICON Hardware Manual”, 以 取 得 更 多 MMICON硬 體 方 面 的 資 訊 . 或 http://www.icpdas.com/products/HMI/touch_lcd/man_machine_list.htm1. MMICON 內 含 1 個 COM 埠 . 請 調 成 RS232 埠 . ( 調 整 硬 體 上 的 “J7” 及 “J8”). 與MMICON 包 裝 在 一 起 的 那 條 RS232 通 訊 線 可 直 接 用 來 連 接 I-8417/8817/8437/8837 的 COM4與 MMICON 的 CN3.RS232 接 腳 說 明 :I-8417/8817/8437/8837: 可 選 用 COM3 或 COM4Wincon-8xx7: 可 選 用 COM2I-8xx7 (COM4) MMICON (CN3) I-8xx7 (COM3) MMICON (CN3)W-8xx7(COM2) RS232 RS232 RS2322 RXD 2 TXD 3 RXD 2 TXD3 TXD 3 RXD 2 TXD 3 RXD5 GND 5 GND 5 GND 5 GNDI-7188EG/XG: 只 能 選 COM3 :RS232. (COM3 需 另 選 購 X503 ~ X51x 子 板 )I-7188EG/XG (COM3)RS232RXDTXDGNDMMICON (CN3)RS2322 TXD3 RXD5 GND2. 請 設 定 MMICON 硬 體 上 的 ”J2” 到 “INIT” 位 置 . I-8417/8817/8437/8837, I-7188EG/XG 及Wincon-8xx7 只 支 援 MMICON 的 通 訊 參 數 “9600, 8, N, 1” 及 “address = 0” .注 意 :如 果 要 用 Wincon-8xx7 的 COM2 來 連 接 MMICON, 請 先 參 閱 它 的 “ 快 速 上 手 手 冊 ” 來 關 掉COM2 原 先 的 Modbus RTU 的 功 能 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 16-1 <strong>ICP</strong> <strong>DAS</strong>


16.2: 建 立 MMICON 的 背 景 圖 形請 參 閱 與 MMICON 硬 體 包 裝 在 一 起 的 “MMIDOS Software User Manual”, 以 取 得 更 多MMICON 軟 體 方 面 的 資 訊 .可 建 立 的 背 景 圖 形 數 量 與 所 使 用 的 ROM 記 憶 體 更 關 . 例 如 使 用 EPROM “27040”, 最 多 可 建 立256 頁 背 景 圖 形 ; 若 為 “27020”, 則 為 128 頁 ; 若 為 “27010”, 則 為 64 頁 .注 意 : 可 使 用 在 MMICON 上 的 記 憶 體 為 ROM/ EPROM/ EEPROM/ FLASH.請 從 CD-ROM 上 安 裝 “MMICON” 目 錄 : 腹 製 \Napdos\others\mmicon\ 到 你 電 腦 的 硬 碟 上 .或 由 以 下 網 址 內 下 載 “MMICON“ 目 錄ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/others/mmicon/注 意 : 請 變 更 該 目 錄 內 的 檔 案 屬 性 : 取 消 “ 唯 讀 ” (Read-only)使 用 Microsoft painter ( 小 畫 家 ) 建 立 各 頁 的 背 景 圖 形 , 請 參 考 MMICON 目 錄 內 “P0.bmp”).編 輯 “Autox.dat” 檔 ( 請 參 考 MMICON 目 錄 內 “Auto1.dat”). 此 檔 必 頇 取 消 它 的 “ 唯 讀 ” 屬 性 .執 行 “MMIDOS.exe” 來 產 生 “romx.bin” 檔 , 例 如 “rom1.bin”使 用 你 手 邊 更 的 ROM 燒 錄 器 將 “romx.bin” 檔 , 燒 到 ROM 記 憶 體 內 . 將 該 ROM 記 憶 體 插 回MMICON 的 ROM 插 槽 上 , 調 整 “J9” 為 適 合 該 ROM 記 憶 體 容 量 .16.3: 設 計 MMICON 的 控 制 程 式首 先 在 <strong>ISaGRAF</strong> 的 ”I/O Connection” 視 窗 上 要 連 接 I/O complex equipment “mmicon”. 可 看 到它 的 下 方 更 3 個 子 板 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 16-2 <strong>ICP</strong> <strong>DAS</strong>


Status 子 板 :參 數 “com_port” 決 定 控 制 器 要 使 用 那 個 COM 埠 來 連 接 MMICON. 若 為 I-8xx7, 可 選 3 或 4 ;若 為 I-7188EG/XG, 只 能 選 3, 若 為 Wincon-8xx7, 請 設 為 2.子 板 上 的 1 個 虛 擬 Digital Input: 若 為 TRUE 表 示 與 MMICON 連 線 正 常 , 若 為 FALSE 表 示 與MMICON 連 線 失 敗 .Key_in 子 板 :子 板 上 的 1 個 虛 擬 Integer Input: 傳 回 被 按 下 的 按 鍵 代 碼 . 此 代 碼 值 只 保 留 1 個 週 期 的 時 間 , 之後 會 回 復 為 0.按 鍵 名 稱 按 鍵 代 碼 按 鍵 名 稱 按 鍵 代 碼0 16#30 Enter 16#0D1 16#31 . 16#2E2 16#32 Left 16#1B3 16#33 Right 16#1A4 16#34 Up 16#185 16#35 Down 16#196 16#36 Back space 16#087 16#37 F1 16#F18 16#38 F2 16#F29 16#39 F3 16#F3A 16#41 F4 16#F4B 16#42C 16#43D 16#44E 16#45F 16#46Page_out 子 板 :子 板 上 的 1 個 虛 擬 Integer Output: 改 變 此 值 會 切 換 到 要 顯 示 的 頁 畫 面 .I-8417/8817/8437/8837, I-7188EG/XG 及 W-8xx7 控 制 器 提 供 下 列 函 式 來 控 制 MMICON.MI_BOOMI_INTMI_REALMI_STRMI_INP_NMI_INP_SREAL_STRSTR_REAL顯 示 1 個 boolean 值 為 “ON” 或 “OFF”顯 示 1 個 Integer 值顯 示 1 個 Real 值顯 示 1 個 字 串輸 入 1 個 integer輸 入 1 個 字 串轉 換 Real 值 為 字 串轉 換 字 串 為 Real 值請 參 閱 第 11 章 的 demo_38, dem_39.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 16-3 <strong>ICP</strong> <strong>DAS</strong>


第 17 章 SMS: 收 發 手 機 簡 訊<strong>ISaGRAF</strong> 控 制 器 可 用 RS232 通 訊 埠 連 至 1 個 GTM-201-RS232 (GSM Modem) 來 支 援 SMS:簡 訊 收 發 功 能 . 如 此 使 用 者 可 用 手 機 傳 送 簡 訊 給 控 制 器 來 詢 問 資 料 或 控 制 , 此 外 控 制 器 也 可 發送 簡 訊 到 使 用 者 的 手 機 上 來 傳 遞 警 報 或 資 料 . 以 下 是 不 同 PAC 型 號 可 用 來 連 接 到GTM-201-RS232 的 COM port 編 號 .I-8xx7 : 4 或 5 I-7188EG / 7186EG : 1 或 3 或 4 I-7188XG : 3 或 4iP-8xx7: 4 或 5 VP-2117 : 3 或 5XP-8xx7-CE6: 5 或 6 VP-25W7 / VP-23W7 : 3 或 5 WP-8xx7 : 4 或 5注 意 : PAC 若 是 WP-8xx7, VP-25W7 / 23W7 與 XP-8xx7-CE6, 建 議 不 要 使 用GTM-201-RS232, 改 成 使 用 I-8212W (GPRS/GSM 板 卡 ) 較 好 , I-8212W 可 以 插 在 這 些 PAC最 左 邊 的 I/O slot, WP-8xx7 與 VP-25W7/23W7 是 slot 0, XP-8xx7-CE6 是 slot 1. 要 啟 用I-8212W, 請 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-143 . 使 用 I-8212W 時 ,COM port 編 號 分 別 是 WP-8xx7-CE6: COM5 , VP-25W7 / 23W7 : COM5 , XP-8xx7-CE6 :COM617.1: 硬 體 安 裝I-8417/8817/8437/8837 從 driver 2.24 版 起 支 援 SMS 功 能 . I-7188EG 則 為 1.14 版 起 . I-7188XG則 為 1.12 版 起 . 假 如 你 手 邊 控 制 器 的 版 本 是 比 較 舊 的 , 請 更 新 到 該 版 本 或 更 高 的 版 本 . 新 的driver 可 由 以 下 <strong>ICP</strong> <strong>DAS</strong> 的 以 下 網 站 下 載 :http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htm另 外 如 果 你 的 I/O library 也 是 舊 的 , 請 參 閱 第 1.2 節 來 更 新 . 或 者 你 可 參 閱 附 錄 A.2 節 , 單 純 只安 裝 “C functions” 內 的 以 下 項 目SMS_test, SMS_get, SMS_gets, SMS_send, SMS_sts及 “I/O complex equipment” 內 的 SMS.建 議 GSM Modem 使 用 GTM-201-RS232. 你 可 向 <strong>ICP</strong> <strong>DAS</strong> 洽 購 或 詢 問 你 當 地 的 廠 商 . <strong>ICP</strong><strong>DAS</strong> 無 法 保 證 其 他 牌 子 的 GSM Modem 也 可 用 在 <strong>ISaGRAF</strong> 控 制 器 上 .注 意 : 請 解 除 SIM 卡 上 的 密 碼 設 定 , 之 後 再 插 入 GSM modem 內 .通 訊 接 腳 :iP-8xx7(COM4/5)W-8xx7(COM2)GSM 通 訊 線 接 頭GTM-201-RS2327188EG/XG:COM3/4RS232GSM 通 訊 線 接 頭GTM-201-RS2322 RXD3 TXD5 GND2 TXD3 RXD5 GNDRXDTXDGND2 TXD3 RXD5 GND4 DTR ------------- 4 DSR DTR (or RTS) ------------- 4 DSR7 RTS ------------- 7 CTS DTR (or RTS) ------------- 7 CTS<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 17-1 <strong>ICP</strong> <strong>DAS</strong>


17.2: SMS 範 例 程 式此 範 例 程 式 為 I-8xx7 的 demo_43, 請 參 閱 第 11.1 節 來 安 裝 它 . 可 由 <strong>ICP</strong> <strong>DAS</strong> 的 FTP 網 頁 下 載 .ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/8000/demo/另 外 demo_43a 為 可 以 發 SMS 到 多 隻 手 機 的 範 例 , 一 樣 可 由 以 上 位 置 取 得 .變 數 宣 告 :Name Type Attribute DescriptionM1 Boolean Internal 警 報 驅 動M2 Boolean Internal 回 報 訊 息 驅 動K1 Boolean Input 按 鈕 1, 連 到 push4keyL1 Boolean Output LED 輸 出 1, 連 到 show3ledL2 Boolean Output LED 輸 出 2, 連 到 show3ledL3 Boolean Output LED 輸 出 3, 連 到 show3ledQ1 Boolean Internal 偵 測 更 無 簡 訊 傳 入TMP Boolean Internal 暫 時 使 用SMS_available Boolean Input SMS 功 能 啟 動 了 嗎 ? 連 到 SMS - statusT1 Timer Internal L1 ~ L3 的 閃 爍 週 期 , 初 值 設 為 T#500msdata Message Internal 接 收 到 的 簡 訊 內 容phone Message Internal 傳 送 者 的 電 話 號 碼Date_time Message Internal 接 收 到 的 簡 訊 的 時 間 ( 字 串 格 式 )To_who Message Internal 警 報 要 發 給 誰 ( 電 話 號 碼 ), 請 改 其 初 值 為 自 己 的 號 碼 .Msg_to_send Message Internal 要 發 出 的 簡 訊 內 容Year1 Integer Internal 接 收 到 的 簡 訊 的 時 間 ( 整 數 格 式 ) , 年 2001 ~ 2099Mon1 Integer Internal 月 , 1 ~ 12Day1 Integer Internal 日 , 1 ~ 31Wday1 Integer Internal 星 期 幾 , 1 ~ 7, 7 為 星 期 日Hour1 Integer Internal 時 , 0 ~ 23Min1 Integer Internal 分 , 0 ~ 59Sec1 Integer Internal 秒 , 0 ~ 59Q1_cnt Integer Internal 已 收 到 幾 封 簡 訊 , 宣 告 為 “ 可 保 留 ” (retained)Msg_status Integer Internal 簡 訊 發 送 狀 態TMP_v Integer Internal 暫 時 使 用專 案 架 構 :動 作 說 明 :1. 當 K1 被 按 下 時 , 一 封 警 報 的 簡 訊 會 發出 .2. 假 如 收 到 簡 訊 格 式 , 如 T0200 或T1500, L1 ~ L3 的 閃 爍 時 間 會 改 成 200及 1500 ms. 並 且 控 制 器 回 發 一 封 簡 訊 給原 發 送 者 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 17-2 <strong>ICP</strong> <strong>DAS</strong>


I/O 連 結 :LD 程 式 : work當 k1 被 按 下 時 驅 動 M1取 得 簡 訊 發 送 狀 態 ( 每 個 Scan 周 期 )閃 爍 輸 出每 收 到 一 封 簡 訊 , Q1_cnt 就 加 1<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 17-3 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 : rcv_msgQ1 := SMS_test( ) ;偵 測 更 無 簡 訊 進 來If Q1then假 如 更 簡 訊 進 來Year1 := SMS_get(1) ;Mon1 := SMS_get(2) ;Day1 := SMS_get(3) ;Wday1 := SMS_get(4) ;Hour1 := SMS_get(5) ;Min1 := SMS_get(6) ;Sec1 := SMS_get(7) ;phone := SMS_gets(2) ;date_time := SMS_gets(3) ;data := SMS_gets(1) ;If mid(data,1,1) = 'T' then 檢 查 第 1 個 字 元 是 不 是 TTMP_v := ANA(mid(data,4,2)) ;(* 正 確 的 格 式 *)從 簡 訊 內 容 的 第 2 個 字 起 取 出 4 個 字 元 , 然 後 轉換 成 整 數 . ( 格 式 錯 誤 會 轉 換 成 0)if TMP_v >= 50 and TMP_v


ST program : snd_msgif (Msg_status 1) and SMS_available then簡 訊 發 送 狀 態 :if M1 then (* alarm triggering *)0: 等 待 發 送 的 要 求1: 忙 碌 中TMP := SMS_send(to_who, 'K1 is pushed!' ) 21: ; 發 送 成 功M1 := FALSE ;-1: SMS 未 啟 動 -2: 無 回 應Elsif M2 then (* Report triggering *)假 如 簡 訊 發 送 狀 態 不 是 1: 忙 碌 中TMP := SMS_send(phone, Msg_to_send) ; (* report message back *)M2 := FALSE ;end_if ;呼 叫 完 SMS_send 後 要 關 閉end_if ;關 於 SMS_sts, SMS_send, SMS_test, SMS_get 及 SMS_gets 的 說 明 , 請 參 閱 <strong>ISaGRAF</strong> 的On-line Help. “Library” – “C functions” – “SMS_xxxx”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 17-5 <strong>ICP</strong> <strong>DAS</strong>


第 18 章 馬 達 運 動 控 制本 章 內 容 使 用 英 文 提 供 .注 意 :1. XP-8347-CE6 與 XP-8747-CE6 更 支 持 I-8094 / I-8094F (4 軸 motion 與 Encoder) 與I-8092F (2 軸 motion 與 Encoder) , 這 是 比 I-8091W 還 要 好 用 的 解 法 , 請 參 考http://www.icpdas.com/faq/isagraf_c.htm > FAQ-132 .2. I-8417/8817/8437/8837 若 要 使 用 I-8091 與 I-8090 板 卡 , 必 頇 自 行 更 換 驅 動 程 式 為“Motion” 版 本 , 標 準 出 貨 的 驅 動 版 本 不 支 持 I-8091 與 I-8090 板 卡 . 請 到 以 下 網 址 下 載http://www.icpdas.com/products/PAC/i-8000/isagraf-link1.htm3. 當 I-8437/8837 更 新 驅 動 程 式 為 “Motion” 版 本 時 , 不 支 持 Ethernet 通 訊 . 但 Wincon-8xx7沒 更 這 個 限 制 (Wincon-8xx7 標 準 出 貨 的 驅 動 版 本 已 經 更 支 持 I-8091 與 I-8090 板 卡 ).4. 插 在 I-8xx7 或 Wincon-8xx7 上 的 I-8091 板 卡 , 只 更 1 片 I-8091 支 持 X-Y 軸 連 動 , 其 它的 I-8091 板 卡 只 能 各 軸 獨 立 運 動 . 另 外 I-8xx7 最 多 只 支 持 2 片 I-8091 卡 , Wincon 最 多 可支 持 4 片 .18.1: Install motion driverRestriction of the motion driver of I-8417/8817/8437/8837:The motion driver for I-8417/8817/8437/8837 doesn‟t support the Ethernet communication,however W-8337/8737 desen‟t have this limitation.The <strong>ISaGRAF</strong> demo projects of motion for I-8417/8817/8437/8837 are “demo_27” , “demo_28”, &“demo_46”. They are located in theI-8000 CD-ROM: \napdos\isagraf\8000\demo\” , or atftp.icpdas.com/pub/cd/8000cd/napdos/isagraf/8000/demo/The <strong>ISaGRAF</strong> demo projects of motion for W-8337/8737/8347/8747 are “wdemo_26” ,“wdemo_27”, “wdemo_28” & “wdemo_29”. They are located in theWincon CD-ROM: \napdos\isagraf\wincon\demo\” , or atftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/demo/<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-1 <strong>ICP</strong> <strong>DAS</strong>


All functions that trigger I-8091 & I-8090 are named as ”M_???” , Please refer to the On-line helpfrom the <strong>ISaGRAF</strong> “Help” – “Library” - “C functions” for names starting with “M_???”.Beside, please refer to “I-8091 & I-8090 User‟s Manual” .It can be found in the package box of theI-8091, orI-8000 CD-ROM: napdos\8000\motion\i8091\manual\ftp site: ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/8000/motion/i8091/manual/<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-2 <strong>ICP</strong> <strong>DAS</strong>


18.2: Introduction18.2.1: System Block DiagramThe I-8091 stepping motor control card is a micro-computer controlled, 2-axis pulse generationcard. It includes a 2Kbytes-FIFO to receive motion command from host, a micro-computer forprofile generation and protection, 2-axis DDA chip to execute DDA function when interpolationcommand is used, 2500Vrms optical isolation inserted for industrial application.2K FIFOInterfaceBufferCPUProfile GenerationProtectionDDA ChipX-axisBusDDA ChipY-axisOpticalIsolationLimit SwitchInput PortLimit SwitchInput PortFig.(1) block diagram of I-8091 cardLimit Switch SignalConnector18.2.2: DDA TechnologyThe DDA chip is the heart of I-8091 card, it will generate equal-space pulse train corresponding tospecific pulse number during a DDA period. This mechanism is very useful to execute pulsegeneration and interpolation function. The DDA period can be determined by DDA cycle. Table(1)shows the relation among DDA cycle, DDA period and output pulse rate. When DDA cycle set to 1,the DDA period is equal to (1+1)x1.024ms = 2.048ms. The output pulse number can be set to0~2047, therefore the maximum output pulse rate will be 1Mpps. The minimum output pulse rate is3.83pps when set DDA cycle=254 (DDA period = (254+1)x1.024ms = 261.12ms).DDAcycleX pulse =3Y pulse =6Z pulse =4DDAperiodFig.(2) DDA mechanism<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-3 <strong>ICP</strong> <strong>DAS</strong>


Table(1) The Relation among DDA cycle, DDA period and output pulse rate.DDA cycle DDA period Max. pulse rate(n=2047) Min. pulse rate (n=1)1 2.048ms 999511pps 488pps2 3.072ms 666341pps 325pps3 4.096ms . .. . . .N (N+1)*1.024ms 2047/(DDA period) 1/(DDA period). . . .254 261.12ms 7839pps 3.83ppsThe DDA cycle can be set by i8091_SET_VAR() command which decribed in charpter 3. Theselection criterion of DDA cycle was described as following.1. The required max. output pulse rate.PRmax = Vmax*N/602047PRmax = ( DDAcycle 1)* 1.024msPRmax : max. output pulse rate.VmaxN: max. speed (rpm).: the pulse number of stepping motor per revolution (pulse/rev).2. The required speed resolution.The maximum output pulse number is Np(0~2047), therefore the speed resolution is Vmax(max.speed)/Np. The DDA cycle can be obtained by following equation.NpPRmax = ( DDAcycle 1)* 1.024 ms3. When choose large DDA cycle (DDA period), it will occur vibration between different pulseinput which generally can be observed during acceleration or deceleration. So, the small DDAcycle , the smooth acceleration/deceleration curve as long as the speed resolution is acceptable.Example: Stepping MotorThe spec. of stepping motor is 500 pulse/rev, max. speed 500 rpm, speed resolution 2 rpm.The required max. pulse ratePRmax = 500 rpm*500/60 = 4166.67 ppsThe maximum output pulseNp = 500rpm/2rpm =250 pulse numberThe DDA cycle can be calculated by follow equationNpPRmax = ( DDAcycle 1)* 1.024 ms2504166.67 = ( DDAcycle 1)* 1.024msDDA cycle = 58High Speed = 247 pulse (4166.67*58*0.001024)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-4 <strong>ICP</strong> <strong>DAS</strong>


The above results means that maximum speed is 500rpm when send command i8091_SET_VAR(0,58, 2, 2, 247) to I-8091 card.Example: Pulse type input Servo MotorThe spec. of servo motor is 8000 pulse/rev, max. speed 3000 rpm, speed resolution 2 rpm.The required max. pulse ratePRmax = 3000 rpm*8000/60 = 400,000 ppsThe maximum output pulseNp = 3000rpm/2rpm =1500 pulse numberThe DDA cycle can be calculated by follow equationNpPRmax = ( DDAcycle 1)* 1.024 ms1500400,000 = ( DDAcycle 1)* 1.024msDDA cycle = 3High Speed = 1638 pulse (400,000*4*0.001024)The above results means that maximum speed is 3000rpm when send commandi8091_SET_VAR(0, 3, 2, 2, 1638) to I-8091 card.18.3: Hardware18.3.1: I-8000 hardware addressThe hardware address of I-8000 main system is fixed as following table. There are 4 slots I-8000and 8 slots I-8000.I-8000, 4 slotaddressI-8000, 8 slotaddressSlot 0 Slot 1 Slot 2 Slot 3 Slot 4 Slot 5 Slot 6 Slot 70x080 0x0A0 0x0C0 0x0E0 --- --- --- ---0x080 0x0A0 0x0C0 0x0E0 0x140 0x160 0x180 0x1A0Fig.(3) I-8000 hardware address<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-5 <strong>ICP</strong> <strong>DAS</strong>


18.3.2: LED Indicatorpower/ORG1: X-axis‟s original limit switchfor machine home position./LS11, /LS14 : X-axis‟s negative andpositive limit switches./ORG2: Y-axis‟s original limit switchfor machine home position./LS21, /LS24 : Y-axis‟s negative andpositive limit switches./EMG : system‟s emergency signalinput./ORG1/LS11 /LS14 /ORG2 /LS21 /LS24 /EMGFig.(4) I-8091 LED indicator18.3.3: Hardware ConfigurationLimit switch configurationBecause the profile generation and protection is executed by the CPU on I-8091 card, the limitswitches must configure as following diagram. The motion command just can work properly.CCW/BWCW/FWMotorccmLS11 ORG1LS14/LS11/ORG1/LS14EXT_GND/EMGEmergencyX axisFig.(5) Limit switch configuration of X axis<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-6 <strong>ICP</strong> <strong>DAS</strong>


CCW/BWCW/FWMotorccmLS21 ORG2LS24/LS21/ORG2/LS24EXT_GNDY axisFig.(6) Limit switch configuration of Y axisOutput pulse mode configurationI-8091 card provide two kind output method.(a) CW/CCW mode(b) Pulse/Direction modeThe command M_s_mode(card_NO_, modeX_, modeY_) provide parameters 0: CW_CCW and1: PULSE_DIR to define output pulse mode.Mode = 0 (CW_CCW)CWCCWMode = 1 (PULSE_DIR)PulseDirectionDirection configurationFig.(7) Output pulse modeSometimes, the output direction of X-axis, Y-axis is not in the desired direction due to the motor‟sconnection or gear train. It is recommended to unify the output direction as shown in Figure(5)(6).The CW/FW direction is defined as toward outside from motor and the CCW/BW direction isdefined as toward inside to motor. The M_s_dir(card_NO_, defdirX_, defdirY_) commandprovides parameters 0: NORMAL_DIR and 1:REVERSE_DIR to define the rotating direction ofmotor.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-7 <strong>ICP</strong> <strong>DAS</strong>


Turn Servo ON/OFF (Hold ON/OFF)To turn servo motor into servo ON(OFF) state, or turn stepping motor into hold ON(OFF) state, thecommand M_s_serv(card_NO_, sonX_, sonY_) provide parameters 1:ON and 0:OFF to turnON or OFF.Automatic protectionThe I-8091 card has a automatic protected system.(a) If X-aixs command is executing and moving toward CW/FW direction, X-axis will immediatelystop when LS14 is touched. To release this protection as long as X-axis move toward CCW/BWdirection.(b) If X-aixs command is executing and moving toward CCW/BW direction, X-axis willimmediately stop when LS11 is touched. To release this protection as long as X-axis movetoward CW/FW direction.(c) If Y-aixs command is executing and moving toward CW/FW direction, Y-axis will immediatelystop when LS24 is touched. To release this protection as long as Y-axis move toward CCW/BWdirection.(d) If Y-aixs command is executing and moving toward CCW/BW direction, Y-axis willimmediately stop when LS21 is touched. To release this protection, as long as Y-axis movetoward CW/FW direction.(e) If the signal of the emergency limit switch /EMG was found in CPU firmware, all motion willbe terminated and stop.Set limit switch as normal close conditionThe limit switches /EMG, /LS11, /LS14, /LS21, /LS24, /ORG1, /ORG2 is initially normal opencondition, that is, these signal is active when connect it to ground. In industrial application, it mightbe recommended normal close condition, that is, these signal is active when open from ground.The M_s_nc(card_NO_, sw_) command can be set sw=0 (default), for normal open condition.When set sw=1, for normal close condition.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-8 <strong>ICP</strong> <strong>DAS</strong>


18.3.4: Pin assignment of connector CN2CN2DB25M-90CW_PULSE2CCW_DIR2HOLD2ORG2LS21LS24CW_PULSE1CCW_DIR1EXT_VCC (12~24V)EXT_GNDHOLD1ORG1LS11LS14EMG+5VGND11421531641751861972082192210231124122513Fig.(8) CN2 connector of I-8091Table of CN2 connector‟s pin assignmentpin name pin Descriptionnumber+5V 1 Internal +5V power, Max. output current: 50mACW_PULSE1 2 X-axis CW (Pulse) output pinCCW_DIR1 3 X-axis CCW (Direction) output pinHOLD1 4 X-axis HOLD (servo on) output pinGND 5 Signal ground of pin 2,3,4EXT_VCC 6 External power(12~24V) for limit switches/ORG1 7 X-axis original (home) limit switch/LS11 8 X-axis limit switch9,10 No used/LS14 11 X-axis limit switch/EMG 12 Emergency inputEXT_GND 13 External ground for limit switch+5V 14 Internal +5V power, Max. output current: 50mACW_PULSE2 15 Y-axis CW (Pulse) output pinCCW_DIR2 16 Y-axis CCW (Direction) output pinHOLD2 17 Y-axis HOLD (servo on) output pinGND 18 Signal ground of pin 15,16,17EXT_VCC 19 External power(12~24V) for limit switches/ORG2 20 Y-axis original (home) limit switch/LS21 21 Y-axis limit switch22,23 No used/LS24 24 Y-axis limit switchEXT_GND 25 External ground for limit switch<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-9 <strong>ICP</strong> <strong>DAS</strong>


The internal circuit of CW_PULSE, CCW_DIR, HOLDWhen output these signal as 1, it can source 15mA(max.).When output these signal as 0, it can sink 50mA(max.)+5V330CW_PULSE1CCW_DIR1HOLD1CW_PULSE2CCW_DIR2HOLD2i8091Fig.(9) internal circuit of pulse output pinThe internal circuit of limit switch inputInitially, the limit switch inputs of I-8091 board are normal open (N.O.), the I-8091 board willautomatic protect when limit switch pin connect to EXT_GND. The user can use the commandM_s_nc(card_NO_, 1) to let those limit switch input as normal close condition at the beginning ofthe user‟s program.EXT_VCC (12V~24V)4.7K/ORG1, /LS11, /LS14i8091/ORG2, /LS21, /LS24/EMGFig.(10) internal circuit of limit switch input pin<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-10 <strong>ICP</strong> <strong>DAS</strong>


Example of connection+5V13654CW_PULSE1CW +CW -1 42 3+5V13654CCW_DIR1CCW +CCW -1 42 3+5V13654HOLD1GNDHOLD +HOLD -1 42 3DGNDFAN-OUT TYPE (VEXTA) DRIVERFig.(11) fan-out type driver (VEXTA's motor driver)+5VCOM13654CW_PULSE1CW/PULSE1 42 3+5V13654CCW_DIR1CCW/DIR1 42 3+5V13654HOLD1HOLD1 42 3GNDDGNDSINK TYPE DRIVERFig.(12) Sink type driver<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-11 <strong>ICP</strong> <strong>DAS</strong>


CN2DB25M-90CN2DB25M-90S5V 11A+141A-CW_PULSE1 21B+CW_PULSE2 151B-CCW_DIR1 31C+CCW_DIR2 161C-HOLD14E5VHOLD217EGNDSGND 52A+182A-EXT_VCC62B+EXT_VCC192B-(12V~24V)72C+PHOME1202C-PHOME28PLS11E5V21EGNDPLS2193A+223A-103B+233B-11PLS143C+24PLS243C-12PEMGE5V25EGNDEXT_GND13EGND11421531641751861972082192210231124122513S8091 cardS8090 cardFig.(13) The connection between I-8090 and I-8091 for function testing or pulse feedback byI-8090 encoder card.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-12 <strong>ICP</strong> <strong>DAS</strong>


18.4: SoftwareI/O connection:The “I-8091A” connectted on the I/O connection window contains 11 digital input channels.Input Channel:CH1 : EMG, emergency stopCH2 : /FFEF, FIFO is empty or not, TRUE: emptyCH3 : /FFFF, FIFO is full or not, TRUE: fullThe “NO_OR_NC”parameter can beset as0: Normal Open1: Normal close.CH4 : LS11, Left limit swtch of X-axisCH5 : LS14, Right limit swtch of X-axisCH6 : ORG1, Original position swtch of X-axisCH7 : XSTOP, Stop or not of X-axis, TRUE: stopCH8 : LS21, Left limit swtch of Y-axisCH9 : LS24, Right limit swtch of Y-axisCH10 : ORG2, Original position swtch of Y-axisCH11 : YSTOP, Stop or not of Y-axis, TRUE: stopI-8090 contains 3 analog input channels.Parameter:x_mode : integer counting mode ofX-axisy_mode : integer counting mode ofY-axisz_mode : integer counting mode ofZ-axis00: quadrant counting mode10: CW/CCW counting mode20: pulse/direction countingmodeInput Channel:CH1 : encorder value of X-axisCH2 : encorder value of Y-axisCH3 : encorder value of Z-axisCH1 to CH3 are signed 32-bit integer format<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-13 <strong>ICP</strong> <strong>DAS</strong>


Setting commands:M_regist Register one I-8091In order to distinguish more than one I-8091 card in I-8417/8817/8437/8837platform, the I-8091 cards should be registrated before using it. Thiscommand will assign a card number = “card_NO_” to I-8091 card at that“address_” . If there is no I-8091 at the given address, this command willreturn FALSE.Note: If using “I_8091A” rather than “I_8091” on the I/O connection window, user don‟t need tocall “m_regist” & “m_s_nc”, they are ignored. The card_NO of “I-8091A” is equal to its slot No.I-8xx7: 0 ~ 7. W-8xx7: 1 ~ 7.Parameters:card_NO_ integer valid is 0 ~ 19.address_ integer the plugged slot address of the i8091 cardslot 0: 16#80slot 1: 16#A0slot 2: 16#C0slot 3: 16#E0slot 4: 16#140slot 5: 16#160slot 6: 16#180slot 7: 16#1A0Return:Q_ boolean TRUE: Ok , FALSE: FailExample:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29(* declaration: INIT as boolean and has initial value of TRUE *)(* TMP as boolean *)(* cardNO as integer and has intial value of 1 *)(* Do some init setting at 1st scan cycle *)if INIT thenINIT := FALSE;TMP := M_regist(cardNO,16#80); (* plug i8091 in slot 0 *)TMP := M_r_sys(cardNO); (* reset i8091's setting *)TMP := M_s_var(cardNO,4,2,5,100);TMP := M_s_dir(cardNO,0,0); (* Normal direction *)TMP := M_s_mode(cardNO,1,1); (* pulse_dir mode *)TMP := M_s_serv(cardNO,1,1); (* X & Y server ON *)TMP := M_s_nc(cardNO,0); (* Normal open *)end_if;<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-14 <strong>ICP</strong> <strong>DAS</strong>


M_r_sysReset all settingTo reset I-8091 card, this command will terminate the running command inI-8091 card. User can use this command as software emergency stop. Thiscommand also will clear all of setting, so, all I-8091 card‟s parameter should beset again.Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19Return:Q_ boolean always return TRUE.Example:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-15 <strong>ICP</strong> <strong>DAS</strong>


M_s_varSet motion system parametersTo set DDA cycle, accelerating/decelerating speed, low speed and high speedvalue.Parameters:card_NO_ integer the card No. has been set by M_regist,valid is 0 ~ 19DDA_cycle_ integer DDA cycle , valid is 1 ~ 254Acc_Dec_ integer Acc/Dec speed , valid is 1 ~ 200Low_Speed_ integer low speed , valid is 1 ~ 200 , Low_Speed_ >= Acc_Dec_High_Speed_ integer high speed , Low_Speed_ DDA period = (5+1)*1.024ms = 6.144msAcc_Dec = 2 --> Acc/Dec speed = 2/(6.144ms)^2 = 52981 p/s^2Low_Speed = 10 --> low speed = 10/6.144ms = 1628ppsHigh_Speed = 150 --> high speed = 150/6.144ms = 24414pps *)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-16 <strong>ICP</strong> <strong>DAS</strong>


M_s_dirDefine output direction of axesSometimes, the output direction of X-axis, Y-axis is undesired direction due tothe motor‟s connection or gear train. In order to unify the output direction asshown in Fig.(5) and Fig.(6). Where CW/FW direction is defined as towardoutside from motor, CCW/BW direction is defined as toward inside from motor.This command provide parameters to define the rotating direction of motor.Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19defdirX_ integer X axis direction definition , valid is 0 ~ 1defdirY_ integer Y axis direction definition , valid is 0 ~ 10: normal direction, 1:reverse directionReturn:Q_ boolean always return TRUE.Example:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29M_s_mode Set output modeParameters:card_NO_ integer the card No. has been set by M_regist,valid is 0 ~ 19modeX_ integer X axis mode, valid is 0 ~ 1modeY_ integer Y axis mode, valid is 0 ~ 10: CW_CCW, 1:PULSE_DIRReturn:Q_ boolean always return TRUE.Mode = 0 (CW_CCW)CWCCWMode = 1 (PULSE_DIR)PulseDirectionExample:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-17 <strong>ICP</strong> <strong>DAS</strong>


M_s_servSet servo ON/OFFParameters:card_NO_ integer the card No. has been set by M_regist,valid is 0 ~ 19sonX_ integer X axis servo/hold on switch , valid is 0 ~ 1sonY_ integer Y axis servo/hold on switch , valid is 0 ~ 10: OFF, 1: ONReturn:Q_ boolean always return TRUE.Example:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29M_s_ncSet N.O. / N.C.To set all of the following limit switches as N.C.(normal close) or N.O.(normallopen). If set as N.O., those limit switches are active low. If set as N.C., thoselimit switches are active high. The auto-protection will automatically change thejudgement whatever it is N.O. or N.C..Limit switches: ORG1, LS11, LS14, ORG2, LS21, LS24, EMG.Note: If using “I_8091A” rather than “I_8091” on the I/O connection window, user don‟t need tocall “m_regist” & “m_s_nc”, they are ignored. The card_NO of “I-8091A” is equal to its slot No.I-8xx7: 0 ~ 7. W-8xx7: 1 ~ 7.Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19sw_ integer 0: N.O. (default) , 1: N.C.Return:Q_ boolean always return TRUE.Example:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29Note: If using “I_8091A” in the <strong>ISaGRAF</strong> IO connection window, there is a “NO_OR_NC”parameter can be set to define as 0:Normal Open , 1:Normal Close. So user no more need to callthis “m_s_nc” function if using “I_8091A”.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-18 <strong>ICP</strong> <strong>DAS</strong>


Stop commands:M_stpxStop X axisParameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19Return:Q_ boolean always return TRUE.Example:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29M_stpyStop Y axisParameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19Return:Q_ boolean always return TRUE.Example:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29M_stpallStop X & Y axesThis command will stop X & Y axes and clear all of commands pending in the FIFO.Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19Return:Q_ boolean always return TRUE.Example:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-19 <strong>ICP</strong> <strong>DAS</strong>


Simple motion commands:M_lsporgLow speed move to ORGLow speed move , and stop when ORG1/ORG2 limit switch is touched.Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19DIR_ integer 0: CW , 1: CCWAXIS_ integer 1: X axis , 2: Y axisReturn:Q_ boolean always return TRUE.Low speedORGM_hsporgHigh speed move to ORGHigh speed move , and stop when ORG1/ORG2 limit switch is touched.Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19DIR_ integer 0: CW , 1: CCWAXIS_ integer 1: X axis , 2: Y axisReturn:Q_ boolean always return TRUE.high speedORGExample:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29Note:The lower “DDA_cycle_” is given, the smaller delay time between /ORG1 ON and /X_STOP ON(or /ORG2 ON and /Y_STOP ON) when using M_hsporg & M_lsporg command. For ex,DDA_cycle_ set to 4, the delay time is about 5 to 13 ms.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-20 <strong>ICP</strong> <strong>DAS</strong>


M_lsppmvLow speed pulse moveLow speed move a specified “pulse”Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19AXIS_ integer 1: X axis , 2: Y axisPulse_ integer number of pulse to move. if > 0, move toward CW/FW dir.if < 0, move toward CCW/BW dir.Return:Q_ boolean always return TRUE.#pulseNExample:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29M_hsppmvHigh speed pulse moveHigh speed move a specified “pulse”Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19AXIS_ integer 1: X axis , 2: Y axisPulse_ integer number of pulse to move. if > 0, move toward CW/FW dir.if < 0, move toward CCW/BW dir.Return:Q_ boolean always return TRUE.high speed#pulseNExample:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-21 <strong>ICP</strong> <strong>DAS</strong>


M_nsppmvNormal speed pulse moveNormal speed move a specified “pulse”Parameters:card_NO_ integer the card No. has been set by M_regist,valid is 0 ~ 19AXIS_ integer 1: X axis , 2: Y axisPulse_ integer number of pulse to move. if > 0, move toward CW/FW dir.if < 0, move toward CCW/BW dir.SPEED_ integer Speed, low speed


M_hspmvHigh speed moveHigh speed move toward the direction specified. It can be stop by M_stpx orM_stpy or M_stpall commandParameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19DIR_ integer direction. 0: CW , 1: CCWAXIS_ integer 1: X axis , 2: Y axisReturn:Q_ boolean always return TRUE.high speedExample:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29M_cspmvChange speed moveThis command will accelerate/decelerate the selected axis‟s motor to the“move_speed”. This command can be continuously send to I-8091 to dynamiclychange speed. The rotating motor can be stop by the command M_stpx,M_stpy, M_stpall, or M_slwstpParameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19dir_ integer direction. 0: CW , 1: CCWaxis_ integer 1: X axis , 2: Y axismove_speed_ integer 0 < move_speed_


M_slwdnSlow down to low speedTo decelerate to slow speed until M_stpx or M_stpyexecuted.or M_stpall isParameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19AXIS_ integer 1: X axis , 2: Y axisReturn:Q_ boolean always return TRUE.SLOW_DOWNExample:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29M_slwstpSlow down to stopTo decelerate to stop.Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19AXIS_ integer 1: X axis , 2: Y axisReturn:Q_ boolean always return TRUE.SLOW_STOPExample:I-8417/8817/8437/8837: demo_46, demo_27, demo_28W-8337/8737: wdemo_26, wdemo_27, wdemo_28, wdemo_29<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-24 <strong>ICP</strong> <strong>DAS</strong>


Interpolation commands:M_intpMove a short distance on X-Y planeThis command will move a short distance (interpolation short line) on X-Yplane. This command provided a method for user to generate an arbitrary curveon X-Y plane.Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19Xpulse_ integer -2047


M_intlnMove a long distance on X-Y planeThis command will move a long distance (interpolation line) on X-Y plane. TheCPU on I-8091 card will generate a trapezoidal speed profile of X-axis andY-axis, and execute interpolation by way of DDA chip.Parameters:card_NO_ integer the card No. has been set by M_regist, valid is 0 ~ 19Xpulse_ integer -524287


M_intln2Move a long distance on X-Y planeThis command will move a long interpolation line on X-Y plane. It willautomatically generate a trapezoidal speed profile of X-axis and Y-axis bystate-machine-type calculation method.Parameters:card_NO_ integer the card No. has been set by M_regist,valid is 0 ~ 19x_, y_ integer end point relate to present positionspeed_ integer 0 ~ 2040acc_mode_ integer 0: enable acceleration/deceleration profile1: disableacceleration/deceleration profileReturn:Q_ boolean always return TRUE.Y(X,Y)(0,0)XNOTE:1. Only one of M_intln2, M_intcl2 & M_intar2 command can be called at one time, the othermotion moving commands related to the same I-8091 card should not be called unless it iscompleted. (Please use M_intstp to test command of M_intln2, M_intcl2 & M_intar2 completedor not).2. One controller can only drive one I-8091 to move by M_intln2 , M_intcL2 , M_intar2command. Two or more I-8091 cards in the same controller to use M_intln2 , M_intcL2 ,M_intar2 at the same time is not possible.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-27 <strong>ICP</strong> <strong>DAS</strong>


M_intcl2Move a circle on X-Y planeThis command will generate an interpolation circle on X-Y plane. It willautomatically generate a trapezoidal speed profile of X-axis and Y-axis bystate-machine-type calculation method.Parameters:card_NO_ integer the card No. has been set by M_regist,valid is 0 ~ 19x_, y_ integer center point of circle relate to present positiondir_ integer moving direction. 0: CW , 1: CCWspeed_ integer 0 ~ 2040acc_mode_ integer 0: enable acceleration/deceleration profile1: disable acceleration/deceleration profileReturn:Q_ boolean always return TRUE.YCW(X,Y)XCCWwhere radius = sqrt(X^2 + Y^2)NOTE:1. Only one of M_intln2, M_intcl2 & M_intar2 command can be called at one time, the othermotion moving commands related to the same I-8091 card should not be called unless it iscompleted. (Please use M_intstp to test command of M_intln2, M_intcl2 & M_intar2 completedor not).2. One controller can only drive one I-8091 to move by M_intln2 , M_intcL2 , M_intar2command. Two or more I-8091 cards in the same controller to use M_intln2 , M_intcL2 ,M_intar2 at the same time is not possible.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-28 <strong>ICP</strong> <strong>DAS</strong>


M_intar2Move a arc on X-Y planeThis command will generate an interpolation arc on X-Y plane. It willautomatically generate a trapezoidal speed profile of X-axis and Y-axis bystate-machine-type calculation method.Parameters:card_NO_ integer the card No. has been set by M_regist,valid is 0 ~ 19x_, y_ integer end point of arc relate to present positionR_ integer radius of arc, if > 0, the arc < 180 degree,if < 0, the arc > 180 degreeR_ must > ( square root of (X_*X_+Y_*Y_) ) / 2dir_ integer moving direction. 0: CW , 1: CCWspeed_ integer 0 ~ 2040acc_mode_ integer 0: enable acceleration/deceleration profile1: disable acceleration/deceleration profileReturn:Q_ boolean always return TRUE.'A'CWY'B'(X,Y)R dir path of curveCW 'C'R>0 CW 'B'CCWR>0 CCW 'C''D'R


M_intstpTest X-Y plane moving commandTo test the below 3 commands completed or not.M_intln2 , M_intcL2 , M_intar2It will return FALSE for interpolation command completed while return TRUE for busy - notcompleted yet.Return:Q_ boolean TRUE: busy , FALSE: completedNOTE:1. Only one of M_intln2, M_intcl2 & M_intar2 command can be called at one time, the othermotion moving commands related to the same I-8091 card should not be called unless it iscompleted. (Please use M_intstp to test command of M_intln2, M_intcl2 & M_intar2 completedor not).2. One controller can only drive one I-8091 to move by M_intln2 , M_intcL2 , M_intar2command. Two or more I-8091 cards in the same controller to use M_intln2 , M_intcL2 ,M_intar2 at the same time is not possible.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-30 <strong>ICP</strong> <strong>DAS</strong>


I-8090 encorder commands:M_r_enco Reset I-8090‟s encorder value to 0Parameters:slot_ integer the slot No. where the i8090 is plugged, 0 ~ 7axis_ integer 1: x-axis, 2: y-axis, 3: z-axisReturn:Q_ boolean always return TRUE.Example: demo_27, demo_28, demo_46<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 18-31 <strong>ICP</strong> <strong>DAS</strong>


第 19 章 以 太 網 通 訊 與 安 全 防 護<strong>ISaGRAF</strong> PAC 更 內 建 網 路 高 流 量 保 護 功 能 , 能 防 止 諸 如 惡 意 連 續 的 TCP SYN, TCPFIN , … 等 攻 擊 (TCP flood attack) .19.1: 網 路 安 全 防 護更 幾 種 方 式 可 以 經 由 以 太 網 路 來 存 取 WP-8xx7, XP-8xx7-CE6,VP-25W7/23W7, W-8xx7 內 的 資料 .1. 使 用 Modbus TCP 通 訊 規 約 , Port 編 號 502. (<strong>ISaGRAF</strong> 軟 件 與 SCADA / HMI 就 是 這 樣 連 的 )2. 使 用 ftp ( 比 如 在 PC 上 執 行 Internet Explorer, 鍵 盤 輸 入 “ftp://10.0.0.103” )3. 使 用 telent ( 比 如 在 PC 上 開 啟 一 個 “Command” 視 窗 , 鍵 盤 輸 入 “telnet 10.0.0.103” )4. 使 用 Web server (Wincon 的 Web HMI 功 能 使 用 的 方 式 )注 意 : 1. 若 是 使 用 I-8xx7 , I-7188EG, 7186EG, VP-2117, iP-8xx7 只 更 方 式 1 可 使 用 .2. 若 是 使 用 WP-8xx7, XP-8xx7-CE6,VP-25W7/23W7, W-8xx7 , 要 使 用 “ftp”, “telnet”, “WebHMI” 與 “Modbus TCP/IP” , 請 連 您 的 PC/HMI 到 其 上 的 LAN1 網 口 , 並 且 請 使 用 <strong>ICP</strong><strong>DAS</strong> 的 Industrial Ethernet Switch 產 品 “NS-205” 或 “NS-208” .以 W-8xx7 為 例 , 為 了 安 全 , 您 可 以 開 啟 <strong>ISaGRAF</strong> 驅 動 程 式 的 對 話 框 , 關 閉 第 2 及 第 3 項 功 能 ,如 下 .選 取 2 或 3 來 關 閉關 於 第 4 項 , 請 設 好 必 要 的 User name 及 Password 來 保 護 .按 ”Edit” 可 設 定 username 及 password<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 19-1 <strong>ICP</strong> <strong>DAS</strong>


關 於 第 一 項 Modbus TCP/IP 的 保 護 , 使 用 者 可 以 在 控 制 器 上 設 定 最 多 只 開 放 到 8 組 PC /SCADA / HMI 的 IP 可 允 許 連 進 來 , 方 法 如 下 .請 在 <strong>ISaGRAF</strong> I/O 連 結 視 窗 內 使 用 “vip” 虛 擬 板 卡 . 最 多 可 設 立 8 組 IP 允 許 用 ModbusTCP/IP 通 訊 規 約 連 進 來 . 若 控 制 器 內 沒 更 使 用 “vip” , 那 表 示 , 任 何 IP 都 允 許 用 ModbusTCP/IP 連 進 來 .如 果 使 用 了 “vip” 但 都 設 為 “N/A” 將 沒 更 任 何 IP 允 許 用 Modbus TCP/IP 連 進 來 . ( 包 含<strong>ISaGRAF</strong> 也 連 不 進 來 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 19-2 <strong>ICP</strong> <strong>DAS</strong>


19.2: 使 用 UDP 來 傳 遞 或 接 收 訊 息 到 PC / HMI 或 設 備若 用 WP-8xx, XP-8xx7-CE6, iP-8x47 , 可 以 選 LAN1 或 LAN2 的 其 中 一 個 網 口 來 使 用 UDP功 能 . 並 用 <strong>ICP</strong> <strong>DAS</strong> 的 Industrial Ethernet Switch 產 品 NS-205/208.請 確 認 控 制 器 driver 是 否 為 I-7188EG: 2.18 版 , I-8437/8337: 3.20 版 , W-8xx7: 3.37 版 或 更高 版 本 .請 在 I/O 連 結 視 窗 內 連 上 1 個 udp_ip, 之 後 於 程 式 內 使 用 udp_recv 與 udp_send 來 接 收 或 傳 遞訊 息 .“Send_Time_Gap” 參 數 :每 筆 要 傳 出 去 的 Message需 間 隔 多 久 , 才 可 傳 第 2筆 . 單 位 為 ms. 可 以 設 成10 ~ 5000. 跟 遠 方 接 收的 設 備 特 性 更 關 .“This_port” 參 數 : 設 定 UDP Server 是要 使 用 那 個 UDP Port 編 號 來 接 收 訊 息 .建 議 是 設 成 1000~65535 號 . 內 定 值 是12001 號“This_ip” 參 數 : 只 更 使 用 雙 網 口 的 控制 器 才 需 設 定 .設 定 要 使 用 UDP 功 能 在 那 個 IP 上( 雙 網 口 的 控 制 器 的 LAN1 與 LAN2需 設 為 不 同 的 IP, 若 要 啟 用 LAN2,請 參 考 附 錄 F) .下 方 這 些 參 數 只 更 要 使 用 UDP 傳 送 功 能 的 需 要 設 , 若 不 啟 用 它 , 請 將 IP 設 為 N/AIP1 到 IP4 參 數 : 啟 用 的 UDP 傳 送 功 能 是 要 傳 送 訊 息 到 遠 方 那 個 IP. WP-8xx7, XP-8xx7-CE6,VP-25W7/23W7 最 多 可 設 4 個 IP 連 線 ,7188EG, 7186EG, iP-8x47 最 多 只 可 設 前 2 個 IP 連 線 .Port1 到 Port4 參 數 : 對 應 的 遠 方 IP1 到 IP4 是 使 用 UDP 規 約 的 那 個 Port 編 號 ?i-7188EG, uPAC-7186EG, i-8437-80/8837-80, VP-2117, iP-8xx7, WP-8xx7, XP-8xx7-CE6,VP-2xW7 可 使 用 UDP 功 能 主 動 回 報 “ 採 集 ” 與 “ 控 制 ” 資 料 到 區 網 或 遠 方 Internet 的PC/HMI. 遠 方 的 PC / HMI 在 收 到 此 資 料 後 , 也 可 被 動 對 Wincon 作 “ 時 間 校 正 ” 或 下 達 必 要的 “ 控 制 命 令 ”. 範 例 程 式 與 說 明 , 請 參 考 <strong>ISaGRAF</strong> FAQ-065. 此 應 用 更 一 個 優 點 , 位 於 各 個 地點 的 控 制 器 不 需 更 固 定 的 “Internet IP” , 只 要 能 用 Ethernet Port 上 網 Internet 就 可 用 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 19-3 <strong>ICP</strong> <strong>DAS</strong>


UDP_Recv:此 函 式 可 用 來 測 詴 與 接 收 遠 方 PC 或 設 備 所 傳 過 來 的 UDP 訊 息 .如 以 下 ST 程 式 碼 :(* 測 詴 是 否 更 UDP 訊 息 傳 進 來 , 若 更 也 會 收 進 來 *)(* Msg1 宣 告 為 internal Message 變 數 *)(* 如 果 udp_recv( ) 回 傳 '' (2 個 單 引 號 中 間 無 資 料 為 空 字 串 ), 表 示 沒 更 資 料 傳 進 來 *)Msg1 := udp_recv( ) ;注 意 :1. WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 與 W-8xx7 的 UDP 功 能 的 接 收 buffer 大 小 為 8192byte , 包 含 每 個 字 串 的 結 尾 符 號 1 byte, 而 I-7188EG/7186EG 與 iP-8x47 的 接 收 buffer 大 小 為2048 byte.2. 如 果 一 次 進 來 太 多 個 字 串 導 致 接 收 的 buffer 無 法 及 時 消 化 掉 , 新 進 來 的 字 串 會 取 代 掉 最早 進 來 的 那 筆 字 串 .UDP_Send:此 函 式 可 用 來 傳 送 訊 息 到 遠 方 PC 或 設 備 .如 以 下 ST 程 式 碼 :(* TMP 宣 告 為 Internal Boolean 變 數 *)(* 第 1 個 參 數 : 傳 送 到 那 個 UDP 連 線 , 可 以 是 1 到 4. 定 義 在 虛 擬 I/O 板 "udp_ip" 內 *)(* 第 2 個 參 數 : 要 傳 送 出 去 的 Message *)(* 若 udp_send( ) 傳 回 True 表 示 成 功 , False 表 示 buffer 滿 了 或 該 連 線 未 在 “udp_ip” 內 定 義好 *)TMP := udp_send( 1 , „Alarm1‟ ) ;注 意 :1. WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 與 W-8xx7 的 UDP 功 能 的 傳 送 buffer 大 小 為 2048byte , 包 含 每 個 字 串 的 結 尾 符 號 1 byte , 表 示 每 個 <strong>ISaGRAF</strong> PLC Scan 最 多 只 能 傳 送 出2048 個 byte .iP-8x47, I-7188EG, uPAC-7186EG, VP-2117, i-8x37-80 的 傳 送 buffer 大 小 為 1024 byte.2. 請 不 要 很 頻 繁 的 傳 送 大 量 資 料 出 去 , 跟 ”udp_ip” 內 的 “Send_Time_Gap” 參 數 更 關 , 若 資料 太 多 了 , 消 化 不 掉 , 會 積 在 傳 送 的 buffer 內 , Buffer 若 滿 了 , 使 用 udp_send( ) 會 傳 回False, 表 示 滿 了 , 無 法 再 塞 入 更 多 的 Message. 每 個 PLC Scan 對 每 個 UDP 連 線 , 只 能 消化 1 筆 Message ( 傳 出 1 筆 )範 例 程 式 :請 參 考 Wincon-8xx7 CD-ROM:\napdos\isagraf\wincon\demo\ Wdemo_19 與 Wdemo_20 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/demo/如 果 您 的 <strong>ISaGRAF</strong> 內 找 不 到 “udp_ip” , “udp_recv” 與 “udp_send” 請 到 以 下 網 址 下 載http://www.icpdas.com/products/PAC/i-8000/isagraf.htm “<strong>ICP</strong> <strong>DAS</strong> Utilities For <strong>ISaGRAF</strong>.zip”. 並執 行 其 內 的 “Setup.exe” 來 安 裝 到 您 PC 的 <strong>ISaGRAF</strong> 軟 件 內 .測 詴 工 具 : 更 個 好 用 的 工 具 程 式 可 在 PC 的 “Command” 視 窗 上 執 行 來 接 收 Wincon-8xx7 傳 出的 UDP 訊 息 . 位 於 W-8xx7 CD-ROM:\napdos\isagraf\some_utility\udp_test\udp.exe 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/some_utility/udp_test/ 內<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 19-4 <strong>ICP</strong> <strong>DAS</strong>


19.3: 使 用 TCP / IP Client 功 能 來 傳 送 / 接 收 / 主 動 回 報訊 息Wincon-8xx7 / 8xx6 從 它 的 驅 動 程 式 3.37 版 起 支 持 TCP / IP Client 功 能 . 請 訪 問 以 下 網 址 取得 http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htm . 若 您 的 <strong>ISaGRAF</strong> 軟 件 上 找 不 到虛 擬 I/O 板 ”Tcp_clie” 與 , 請 到 http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 下載 “<strong>ICP</strong> <strong>DAS</strong> Utilities For IsaGRAF.zip” . 並 執 行 其 內 的 “Setup.exe” 來 安 裝 到 您 PC 的<strong>ISaGRAF</strong> 軟 件 內注 意 : WP-8xx7, XP-8xx7-CE6 與 VP-25W7/23W7 都 更 支 持 TCP/IP client.使 用 TCP / IP Client 功 能 的 範 例 程 式 為 Wdemo_32.pia, Wdemo_33.pia 與 Wdemo_60.pia ( 可到 以 下 網 址 下 載 ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/demo/ )注 意 : 要 跟 W-8xx7 的 TCP/IP Client 連 線 的 遠 方 的 PC 或 設 備 需 支 持 TCP/IP Server 功 能 才連 的 上 .****** 好 用 的 應 用 ******( 更 多 的 說 明 與 範 例 程 式 , 請 參 考 www.icpdas.com – FAQ – Software – <strong>ISaGRAF</strong> - 064)Wincon-8347 與 W-8747 可 使 用 TCP / IP Client 連 線 功 能 主 動 回 報 “ 現 場 採 集 資 料 ” 或 “ 控制 資 料 ” 到 遠 方 的 PC / HMI . 遠 方 的 PC / HMI 在 收 到 此 資 料 後 , 也 可 被 動 對 Wincon 作 “ 時間 校 正 ” 或 下 達 必 要 的 “ 控 制 命 令 ” . 此 應 用 更 一 個 很 大 的 優 點 , 位 於 各 個 地 點 的 Wincon 不需 更 固 定 的 ”Internet IP” , 只 要 能 用 Ethernet Port 上 網 Internet 就 可 使 用 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 19-5 <strong>ICP</strong> <strong>DAS</strong>


要 使 用 TCP / IP Client, 請 先 在 I/O 連 結 視 窗 內 連 上 “Tcp_clie” . 最 多 可 連 4 個 遠 方 IP.這 4 個 Boolean 輸 入 點 的 值 :TRUE 表 示 該 連 線 更 連 上False 表 示 連 不 上 遠 方 IP“Time_to_sleep” 參 數 : 值 可 以 是 10 到 600, 或 0. 單 位 為 秒 . 設 為 0 表 示 , 永 遠 與 遠 方 TCP / IPServer 設 備 保 持 連 線 ( 除 非 是 通 訊 更 問 題 ). 設 為 10 到 600 秒 , 表 示 若 經 過 了 這 段 時 間 以 上 沒更 任 何 資 料 傳 出 或 接 收 , 自 動 先 關 閉 TCP / IP 連 線 . 但 只 要 更 新 訊 息 要 送 出 , 就 會 自 動再 連 上 .“this_ip” 參 數 : 只 更 使 用 雙 網 口 的 控 制 器 (WP-8xx7, XP-8xx7-CE6, Wincon-8x47) 才 需 設 定 .設 定 要 使 用 TCP / IP Client 功 能 在 那 個 IP 上“port1” 到 “port_4” 參 數 : 設 定 成 跟 遠 方 的 TCP / IP Server 設 備 所 使 用 的 port 編 號 一 樣 .“to_ip1” 到 “to_ip4” 參 數 : 遠 方 的 TCP / IP Server 設 備 的 IP 地 址 . 若 不 使 用 , 請 設 為“N/A”“Send_Time_Gap1” 到 “Send_Time_Gap4” 參 數 : 每 筆 要 傳 出 去 的 Message 需 間 隔 多 久 , 才可 傳 第 2 筆 . 單 位 為 ms. 可 以 設 成 10 ~ 5000. 跟 遠 方 接 收 的 設 備 特 性 更 關 .設 好 “Tcp_Clie” 的 所 更 參 數 後 , 就 可 在 程 式 內 使 用 “Tcp_send” 或 “Tcp_recv” 函 式 來 傳送 或 接 收 TCP / IP 訊 息 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 19-6 <strong>ICP</strong> <strong>DAS</strong>


Tcp_sendTCP Client 傳 送 Message 到 遠 方 的 TCP / IP Server ( 可 以 是 PC 或 設 備 )注 意 :每 個 WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 與 W-8xx7 的 TCP / IP Client 連 線 的 傳 送 buffer大 小 為 4096 byte. 如 果 傳 送 太 頻 繁 使 得 PAC 來 不 及 消 化 掉 , 導 致 傳 送 buffer 滿 的 話 , 會 把最 早 的 1 個 或 數 個 未 被 送 出 的 Message 刪 掉 , 來 容 納 新 的 TCP / IP Message. 每 個 PLC Scan每 個 連 線 最 多 只 能 傳 出 1 個 TCP / IP Message. 傳 送 的 時 間 間 隔 需 在 “Tcp_clie” 的“Send_Time_Gap” 內 定 義 好 ( 跟 遠 方 設 備 特 性 更 關 )ID_ Integer 傳 送 到 那 個 TCP / IP 連 線 , 可 以 是 1 到 4( 各 連 線 參 數 定 義 於 “Tcp_Clie” 虛 擬 板 卡 內 )Msg_ Message 要 傳 出 的 Message回 傳 值 :Q_ Boolean True: 表 示 成 功 , False 表 示 更 錯 誤 發 生 ( 比 如 , ID_ 設 錯 , 設 成 比 4 大 ,或 該 連 線 沒 在 “Tcp_clie” 內 定 義 好 .Tcp_recvTCP Client 接 收 遠 方 TCP / IP Server (PC 或 設 備 ) 送 過 來 的 Message注 意 :WP-8xx7, XP-8xx7-CE6, VP-25W7/23W7 與 W-8xx7 的 TCP / IP Client 的 接 收 buffer 大 小 為 4096byte. 如 果 太 多 資 料 傳 進 來 , 來 不 及 消 化 掉 導 致 buffer 滿 了 , 最 早 進 來 的 1 筆 或 數 筆 Message會 被 刪 掉 , 用 來 容 納 新 進 來 的 Message.ID_ Integer 傳 送 到 那 個 TCP / IP 連 線 , 可 以 是 1 到 4( 各 連 線 參 數 定 義 於 “Tcp_Clie” 虛 擬 板 卡 內 )回 傳 值 :Msg_ Message 收 到 的 Message. 若 回 傳 '' (2 個 單 引 號 中 間 無 資 料 為 空 字 串 ), 表 示沒 更 資 料 傳 進 來更 個 好 用 的 “Tcp_Server” 工 具 程 式 可 將 PC 模 擬 ( 仿 真 ) 成 TCP / IP Server. 它 放 在Wincon-8xx7 CD-ROM: \napdos\isagraf\some_utility\ 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/some_utility/ 內請 把 整 個 “Tcp_server” 目 錄 Copy 到 你 的 PC 內 , 之 後 開 啟 一 個 “Command” 視 窗 , 鍵 盤 輸入 “ tcp3 “ 來 執 行 它 , 比 如 “tcp3 14001”這 個 工 具 程 式 會 等 TCP / IP Client (W-8xx7) 連 進 來 , 然 後 接 收 它 的 訊 息 並 顯 示 , 同 時 會 回覆 相 同 的 訊 息 給 Wincon-8xx7 的 TCP / IP Client.使 用 TCP / IP Client 功 能 的 範 例 程 式 為 Wdemo_32.pia, Wdemo_33.pia 與 Wdemo_60.pia ( 可到 以 下 網 址 下 載 ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/demo/ )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 19-7 <strong>ICP</strong> <strong>DAS</strong>


第 20 章 備 援 系 統 ( 冗 餘 系 統 )20.1: XP-8xx7-CE6 備 援 系 統詳 細 資 料 請 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-138 .XP-8xx7-CE6 備 援 系 統 更 個 優 點 是 WP-8xx7 備 援 系 統 沒 更 的 , PC / HMI / 圖 控 軟 體 ( 組 態 軟 件 )只 需 設 定 去 連 接 XP-8xx7-CE6 備 援 系 統 上 的 一 個 IP 地 址 就 好 ( 即 Active_IP1 那 個 地 址 ).反 觀 若 是 要 去 連 接 WP-8xx7 備 援 系 統 , PC / HMI / 圖 控 軟 體 必 需 設 定 去 連 接 2 個 IP 地 址 , 當連 接 第 一 個 IP (Active_IP1) 發 生 連 不 上 時 , PC / HMI / 圖 控 軟 體 必 需 自 動 改 變 去 連 接 第 2 個 IP(Active_IP2). 這 對 很 多 圖 控 軟 體 來 說 , 更 些 是 辦 不 到 , 更 些 是 很 麻 煩 ( 要 建 2 組 資 料 Tag).第 1 種 應 用 是 採 用 2 台 XP-8xx7-CE6 來 連 接 1 個 到 多 個 I-87K8 擴 展 單 元 ( 每 個 I-87K8 上 可 以插 上 最 多 8 張 I-87xxxW 卡 片 ). 可 以 多 個 控 制 站 (station) 組 合 在 一 起 , 如 下 圖 , 每 個 station 內 可包 含 1 個 或 2 個 NS-208 ( 或 RSM-208) 與 2 台 XP-8xx7-CE6 與 1 個 或 多 個 I-87K8 與I-87xxxW 卡 片 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 20-1 <strong>ICP</strong> <strong>DAS</strong>


第 2 種 應 用 是 採 用 2 台 XP-8xx7-CE6 , 可 以 不 接 I/O 或 使 用 其 它 port 去 接 其 它 device ( 例 如 , 2台 XP-8xx7-CE6 的 COM4:RS-232 都 各 別 接 一 顆 I-7530 轉 成 CAN 訊 號 再 去 並 接 其 它 的CAN/CANopen device ) , 此 應 用 必 需 將 2 台 XP-8xx7-CE6 的 COM3: RS-485 並 接 在 一 起 . 每個 station 內 的 NS-208 ( 或 RSM-208) 也 可 以 只 用 一 個 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 20-2 <strong>ICP</strong> <strong>DAS</strong>


第 3 種 應 用 是 採 用 2 台 XP-8xx7-CE6 來 連 接 1 到 多 個 I-87K8 擴 展 單 元 , 另 外 再 使 用 RS-485port 去 連 接 Modbus RTU device ( 或 Modbus ASCII device) . 每 個 Station 內 的 NS-208 ( 或RSM-208) 也 可 以 只 用 一 個 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 20-3 <strong>ICP</strong> <strong>DAS</strong>


第 4 種 應 用 是 採 用 2 台 XP-8xx7-CE6 , 使 用 RS-485 port 去 連 接 Modbus RTU device ( 或 ModbusASCII device) , 此 應 用 必 需 將 2 台 XP-8xx7-CE6 的 COM3: RS-485 並 接 在 一 起 . 每 個 Station內 的 NS-208 ( 或 RSM-208) 也 可 以 只 用 一 個 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 20-4 <strong>ICP</strong> <strong>DAS</strong>


20.2: WP-8xx7 備 援 系 統詳 細 資 料 請 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-093 .XP-8xx7-CE6 備 援 系 統 更 個 優 點 是 WP-8xx7 備 援 系 統 沒 更 的 , PC / HMI / 圖 控 軟 體 ( 組 態 軟 件 )只 需 設 定 去 連 接 XP-8xx7-CE6 備 援 系 統 上 的 一 個 IP 地 址 就 好 ( 即 Active_IP1 那 個 地 址 ).反 觀 若 是 要 去 連 接 WP-8xx7 備 援 系 統 , PC / HMI / 圖 控 軟 體 必 需 設 定 去 連 接 2 個 IP 地 址 , 當連 接 第 一 個 IP (Active_IP1) 發 生 連 不 上 時 , PC / HMI / 圖 控 軟 體 必 需 自 動 改 變 去 連 接 第 2 個 IP(Active_IP2). 這 對 很 多 圖 控 軟 體 來 說 , 更 些 是 辦 不 到 , 更 些 是 很 麻 煩 ( 要 建 2 組 資 料 Tag).<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 20-5 <strong>ICP</strong> <strong>DAS</strong>


第 21 章 連 接 M-7000 系 列 Modbus RTU I/O<strong>ICP</strong> <strong>DAS</strong> 的 <strong>ISaGRAF</strong> 控 制 器 從 以 下 驅 動 版 本 起 更 支 持 M-7000 系 列 RS-485 I/O.ControllerDriver versionW-8037 / 8337 / 8737 / 8036 / 8336 / 8736 3.35 或 更 高 版 本W-8047 / 8347 / 8747 / 8046 / 8346 / 8746 3.35 或 更 高 版 本I-8417 / 8817 / 8437 / 8837 3.19 或 更 高 版 本I-7188EG / 7188EGD2.17 或 更 高 版 本I-7188XG / 7188XGD2.15 或 更 高 版 本µPAC-7186EG, iP-8xx7, VP-2117,產 品 release 之 日 起WP-8xx7, VP-25W7/23W7, XP-8xx7-CE6如 果 您 的 控 制 器 的 驅 動 版 本 為 較 舊 版 本 請 參 訪http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htm 來 下 載 它 們 , 之 後 請 翻 閱 其 內的 “ReadMe.txt” 或 “Update_w8xx7.pdf” 來 更 新 它 們 .M-7000 系 列 模 塊 為 RS-485 遠 程 I/O 模 塊 , 支 持 Modbus RTU slave 通 訊 規 約 . 產 品 訊 息 請 訪問 http://www.icpdas.com/products/Remote_IO/m-7000/m-7000_list.htm .使 用 者 可 以 寫 <strong>ISaGRAF</strong> 程 式 啟 用 Modbus RTU Master 功 能 來 連 接 M-7000 模 塊 . 關 於Modbus RTU Master 功 能 說 明 , 請 參 考 第 8 章WP-8xx7, VP-25W7, VP-23W7 與 XP-8xx7-CE6 的 Ethernet port 更 支 持 Modbus TCPMaster, 請 參 考 http://www.icpdas.com/faq/isagraf_c.htm > FAQ-113更 時 無 法 正 確 連 上 Modbus device 時 可 以 參 考 http://www.icpdas.com/faq/isagraf_c.htm >FAQ-075 的 說 明 來 排 除 ( 或 設 定 特 別 的 “Delay_Time” )連 接 M-7000 的 範 例 程 式 放 在 WP-8xx7 CD-ROM:\napdos\isagraf\wp-8xx7\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/這 些 範 例 都 只 使 用 COM3 port 來 連 M-7000 模 塊 . 您 可 以 更 改 為 其 它 的 RS-485 Port.Wpdmo_41 COM3 連 1:M-7053D (16-Ch. D/I) + 2:M-7045D (16-Ch. D/O)Wpdmo_42 COM3 連 1: M-7053D 來 取 得 D/I 計 數 值 (16-bit, 0 ~ 65535)Wpdmo_43 COM3 連 1:M-7017R (8-Ch. A/I) + 2:M-7024 (4-Ch. A/O)Wpdmo_44 COM3 連 1: M-7017RC (8-Ch. 電 流 輸 入 )Wpdmo_45 COM3 連 1: M-7019R (8-Ch. 多 種 類 A/I, 可 以 是 thermocouple 或 電 壓 輸入 或 電 流 輸 入 ) 來 取 得 溫 度 值 ( 攝 氏 或 華 氏 度 )Wpdmo_46 COM3 連 1:M-7080 (2-Ch 高 數 計 數 器 或 頻 率 輸 入 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-1 <strong>ICP</strong> <strong>DAS</strong>


21.1: 使 用 DCON Utility 來 對 M-7000 模 塊 作 初 始 設 定在 開 始 寫 <strong>ISaGRAF</strong> 程 式 之 前 , 需 先 在 PC 上 執 行 “DCON utility” 來 規 劃 設 定 每 一 個 M-7000模 塊 的 “Slave No” ( 或 稱 呼 為 ”Address”) 與 “Baudrate” 與 AI / AO 接 點 的 ” 輸 出 / 輸 入 TypeCode 設 定 ”. M-7000 的 “Procotol” 設 定 必 頇 設 成 “Modbus”. 若 您 找 不 到 “Dcon Utility” 或想 更 新 為 新 版 本 , 請 訪 問 http://www.icpdas.com/download/7000/7000.htm 來 下 載 , 安 裝 .步 驟 1: 將 單 獨 的 一 顆 M-7000 關 機 , 之 後 從 PC 的 RS232 COM Port (COM1 或 COM2 或 其它 ) 連 接 一 條 RS232 通 訊 線 到 一 顆 RS232/485 訊 號 轉 換 模 塊 , 比 如 I-7520Rhttp://www.icpdas.com/products/Industrial/communication_module/communication_list.htm, 之 後 再 連 接 RS485 通 訊 線 到 那 顆 M-7000. 請 將 M-7000 模 塊 接 線 設 成 “INIT” 狀 態 ( 將 它 端子 上 的 INIT* 接 腳 跟 GND 接 腳 短 接 ). M-7000 模 塊 在 INIT 狀 態 時 , Address 會 是 0, baud rate則 是 9600. ( 更 些 M-7000 的 背 面 更 一 個 “Init – Normal” 的 dip 開 關 來 取 代 “INIT*” 接 腳 ) .RS-232RS-485步 驟 2: 供 電 給 該 M-7000 模 塊 . PC 執 行 “Dcon utility”, 滑 鼠 點 選 “COM Port” 來 切 換 成 PC使 用 的 那 個 COM Port, Baud Rate 可 以 選 多 個 以 利 搜 尋 (9600 與 115200 請 務 必 選 取 ),“DCON” 與 “Modbus RTU” 選 項 也 需 選 取 , Checksum 最 好 “Disable” 與 “Enable” 都 選 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-2 <strong>ICP</strong> <strong>DAS</strong>


步 驟 3: 那 顆 單 獨 連 接 的 M-7000 模 塊 應 該 會 被 DCON Utility 找 到 , Address 應 是 0 ( 因 為 它 在INIT 狀 態 ), 找 到 後 點 選 “Stop” 來 停 止 搜 尋 . 請 將 “Protocol” 設 為 “Modbus”, 之 後 設 定 你想 使 用 的 “Address” (Slave No) 與 “Baudrate” . 如 果 你 的 M-7000 是 類 比 AI 或 AO ( 模 擬 量輸 入 或 輸 出 ) , 請 設 定 你 想 使 用 的 每 個 接 點 的 Type 與 Range 於 右 側 , 之 後 請 按 “Setting”來 下 命 令 給 這 顆 M-7000 模 塊 .步 驟 4: 將 M-7000 關 電 . 解 除 “ 初 始 狀 態 ” ( 將 INIT* 接 腳 與 GND 接 腳 斷 開 ). 之 後 再 供 電 給它 . 執 行 DCON utility 再 搜 尋 一 次 , 找 到 後 檢 查 設 定 對 不 對 , 若 設 的 不 對 , 請 修 改 過 來 .如 果 使 用 的 M-7000 模 塊 是 M-7041 或 M-7044 或 M-7050 或 M-7053 或 M-7060 或M-7063 或 M-7065 ( 或 M-7041D 或 M-7044D 或 M-7050D 或 M-7053D 或 M-7060D 或M-7063D 或 M-7065D), 請 務 必 操 作 步 驟 5. 如 果 不 是 這 些 型 號 , 那 初 始 設 定 就 完 成 了 .注 意 :1. 每 個 在 同 一 個 RS-485 連 線 上 的 M-7000 模 塊 , 都 要 設 為 不 同 的 “Address” , 可 以 是 1 到247, 且 “Baudrate” 都 需 設 成 一 樣 , 才 能 正 確 的 工 作 . RS-485 距 離 越 長 , Baudrate 要 設 的 小一 點 , 超 過 100 公 尺 (Meter), 建 議 設 成 19200 或 9600.2. 使 用 者 請 另 外 參 考 M-7000 模 塊 包 裝 盒 內 所 附 的 文 件 , 或 訪 問http://www.icpdas.com/products/Remote_IO/m-7000/m-7000_list.htm 來 取 得 更 多 的 軟/ 硬 體 說 明 , 比 如 像 “Analog Input Type and Data Formate Table” 的 訊 息 (Type codesetting).<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-3 <strong>ICP</strong> <strong>DAS</strong>


重 要 的 步 驟 5:完 成 步 驟 1 到 4 後 , 若 你 使 用 的 M-7000 模 塊 編 號 是 下 表 所 列 的 型 號 , 頇 使 用 DCON utility來 下 達 以 下 命 令 給 它 , 將 Digital input 接 點 訊 號 反 相 .01 46 29 01 (4-byte , 每 個 byte 是 2 個 16 進 位 數 字 )第 一 個 byte 為 該 M-7000 模 塊 初 始 設 定 完 後 所 設 的 Address 編 號 , 可 以 是 01, 02, 03, ...,0F, ... 到 F7 . 接 下 來 3 個 byte “46 29 01” 就 不 能 變 更 .需 作 反 相 設 定 的 M-7000 模 塊 型 號M-7041 , M-7044 , M-7050 , M-7053 , M-7060 ,M-7063 , M-7065M-7041D , M-7044D , M-7050D , M-7053D , M-7060D ,M-7063D , M-7065D請 不 要 把 以 上 的 4-byte 命 令 下 給 非 表 格 內 列 出 的 型 號 .如 何 進 行 反 相 設 定 :當 步 驟 4 完 成 後 , 再 供 電 給 M-7041 或 M-7044 或 M-7050 或 M-7053 或 M-7060 或M-7063 或 M-7065. 執 行 DCON utility 來 搜 尋 該 模 塊 . 若 找 到 , 則 按 停 止 搜 詢 ( 找 到 的Address 應 該 不 是 0, 因 為 不 是 在 INIT 狀 態 下 ). 務 必 確 認 型 號 是 上 方 表 格 內 的 型 號 , 才 可 作D/I 反 相 設 定 . 確 定 是 之 後 , 點 選 “Terminal” 內 的 “Single Line”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-4 <strong>ICP</strong> <strong>DAS</strong>


選 取 正 確 的 Baud Rate, Protocol 需 選 “MRTU”. 之 後 輸 入 對 應 的 4-byte 命 令 , 第 一 個 byte需 是 該 M-7000 模 塊 的 Address 編 號 , 可 以 是 01, 02, 03, ..., 0F, ... 到 F7 . 接 下 來 3 個byte 需 為 “46 29 01” . 之 後 按 下 “Go” . 如 果 更 收 到 回 復 訊 息 為 “01 46 29 ...” , 表示 設 定 成 功 . 關 閉 該 M-7000 的 供 電 . 如 此 初 始 設 定 就 算 成 功 了 .第 一 個 byte 為 該 M-7000 的 Address.可 能 是 01 到 F7<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-5 <strong>ICP</strong> <strong>DAS</strong>


21.2: 編 寫 操 控 M-7000 模 塊 的 程 式重 要 : 如 果 您 使 用 的 M-7000 模 塊 是 M-7041 或 M-7044 或 M-7050 或 M-7053 或M-7060 或 M-7063 或 M-7065 ( 或 M-7041D 或 M-7044D 或 M-7050D 或 M-7053D 或M-7060D 或 M-7063D 或 M-7065D), 請 務 必 操 作 步 驟 5, 不 然 您 會 發 現 這 些 模 塊 的 D/I 訊 號都 會 是 反 的 .要 寫 <strong>ISaGRAF</strong> 程 式 來 連 接 M-7000, 請 在 <strong>ISaGRAF</strong> IO connection 內 連 上 “mbus” 如 下 圖 . 請設 好 對 應 的 “port_no” , “baud” 與 “timeout”. “timeout” 內 定 值 為 500 ms, 但 連 M-7000 I/O時 可 改 設 為 250ms, 關 於 mbus 的 說 明 , 請 參 考 第 8.1 節 .之 後 請 建 立 一 個 階 梯 圖 或 功 能 方 塊 圖 程 式 來 操 控 每 一 個 M-7000 的 IO 接 點 . <strong>ICP</strong> <strong>DAS</strong><strong>ISaGRAF</strong> 控 制 器 可 以 使 用 以 下 的 功 能 方 塊 來 讀 / 寫 M-7000 模 塊 .Mbus_R 1. 請 設 定 “CODE_” 為 編 號 4 來 讀 取 M-7000 的 Analog Input 或 D/ICounter, 最 多 達 12 個 word 資 料 ( 每 個 word 值 為 -32768 ~ +32767).也 可 用 來 讀 取 最 多 達 6 個 32-bit 整 數 資 料 (-2,147,483,648 ~+2,147,483,647), 需 配 合 使 用 WD_LONG 方 塊 將 2 個 word 轉 換 成 1 個 32-bit整 數2. 請 設 定 “CODE_” 為 編 號 2 來 讀 取 M-7000 的 Digital Input 資 料 , 需 配 合使 用 “WD_Bit” 方 塊 將 1 個 word 轉 換 成 16 個 Boolean 資 料Mbus_R1 同 “MBUS_R” , 但 多 了 一 個 參 數 “PERIOD_” , 單 位 為 秒 . 可 設 成 1 ~ 600.每 過 一 段 PERIOD 時 間 才 對 該 M-7000 詢 問 一 次 .MBUS_N_W 使 用 Modbus function 編 號 6 或 16 來 寫 出 1 ~ 4 個 Word 值 (-32768 ~+32767) 給 M-7000 的 Analog Output 接 點 . 當 “NUM_W_” 為 1 時 , 使 用Modbus function 編 號 6. 當 “NUM_W_” 為 2 ~ 4 時 , 使 用 function 編 號 16MBUS_B_W 使 用 Modbus function 編 號 5 或 15 來 寫 出 1 ~ 4 個 Bit 給 M-7000 的 DigitalOutput 接 點 . 當 “NUM_W_” 為 1 時 , 使 用 Modbus function 編 號 5.當 “NUM_W_” 為 2 ~ 4 時 , 使 用 Modbus function 編 號 15MBUS_WB 使 用 Modbus function 編 號 15 來 寫 出 1 ~ 16 個 Bit 給 M-7000 的 Digital<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-6 <strong>ICP</strong> <strong>DAS</strong>


Output 接 點<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-7 <strong>ICP</strong> <strong>DAS</strong>


範 例 41: 連 接 1:M-7053D (16-Ch. D/I) 與 2:M-7045D (16-Ch. D/O)( 本 範 例 Project 名 稱 為 “Wdemo_41”).請 記 得 要 先 操 作 21.1 節 的 步 驟 1 到 5 來 對 M-7053D 作 初 始 設 定 , M-7045D 只 需 步 驟 1 到 4.變 數 宣 告 :Name Type Attribute Descriptioncomm_ok1 Bool Internal M-7053D 的 通 訊 狀 態comm_ok2 Bool Internal M-7045D 的 通 訊 狀 態M7053DI_01M7053DI_16M7045DO_01到M7045DO_16到Bool Internal 共 16 個 變 數 來 對 應 到 M-7053D 的 16 個 輸 入 點Bool Internal 共 16 個 變 數 來 對 應 到 M-7045D 的 16 個 輸 出 點Project 架 構 :一 個 功 能 方 塊 圖 程 式 + 一 個 階 梯 圖 程 式<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-8 <strong>ICP</strong> <strong>DAS</strong>


功 能 方 塊 圖 程 式 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-9 <strong>ICP</strong> <strong>DAS</strong>


階 梯 圖 程 式 :I/O 連 結 設 定 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-10 <strong>ICP</strong> <strong>DAS</strong>


範 例 42: 連 接 1:M-7053D 來 取 得 D/I counter 值 ( 本 範 例 Project 名 稱 為 “Wdemo_42”).記 得 要 先 操 作 21.1 節 的 步 驟 1 到 5 來 對 M-7053D 作 初 始 設 定 .變 數 宣 告 :Name Type Attribute Descriptioncomm_ok1 Bool Internal M-7053D 的 通 訊 狀 態RS1 Bool Internal 要 重 置 Ch1. D/I counter 值 為 0, 將 此 值 設 為 TrueRS2 Bool Internal 要 重 置 Ch2. D/I counter 值 為 0, 將 此 值 設 為 TrueCNT_01 Integer Internal Ch1 D/I counter 值CNT_02 Integer Internal Ch2 D/I counter 值Project 架 構 :一 個 功 能 方 塊 圖 程 式 + 一 個 階 梯 圖 程 式功 能 方 塊 圖 程 式 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-11 <strong>ICP</strong> <strong>DAS</strong>


要 重 置 各 M-7000 的 D/I counter 值 為 0, 必 頇 寫 Bit 值 為 1 (TRUE) 到 coil Modbus 編 號 16#200到 16#21F . 例 如 重 置 Ch1 為 0, 要 寫 到 編 號 16#200, 而 16#201 則 是 Ch2, ..., 16#21F 是 給 Ch32使 用 .階 梯 圖 程 式 :I/O 連 結 設 定 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-12 <strong>ICP</strong> <strong>DAS</strong>


範 例 43:連 接 1:M-7017R 與 2:M-7024 ( 本 範 例 Project 名 稱 為 “Wdemo_43”)本 例 請 在 初 始 設 定 時 規 劃M-7017R 的 Input range 與 Type 為 +/- 10VM-7024 的 Output range 與 Type 為 +/- 10V使 用 者 可 參 考 M-7000 模 塊 包 裝 盒 內 所 附 的 文 件 , 或 訪 問http://www.icpdas.com/products/Remote_IO/m-7000/m-7000_list.htm 來 取 得 更 多 的 軟 / 硬體 說 明 , 比 如 像 “Analog Input Type and Data Formate Table” 的 訊 息 (Type code setting)本 例 更 使 用 變 數 陣 列 , 請 參 考 第 2.6 節 的 說 明 .變 數 宣 告 :Name Type Attribute Descriptioncomm_ok1 Bool Internal M-7017R 的 通 訊 狀 態comm_ok2 Bool Internal M-7024 的 通 訊 狀 態M_7017R[0..7] Integer Internal 為 變 數 陣 列 , Dim 欄 為 設 為 8M-7017R 的 Analog Input 值(-32768 到 +32767) 表 示 (-10 到 +10) VM_7024[0..3] Integer Internal 為 變 數 陣 列 , Dim 欄 為 設 為 4M-7024 的 Analog Output 值(-16384 到 +16383) 表 示 (-10 到 +10) VIn_Val[0..7] Integer Internal 為 變 數 陣 列 , Dim 欄 為 設 為 8M_7017R[0..7] 轉 換 後 的 工 程 值(-32768 到 +32767) 轉 換 為 (-10000 到 +10000)Out_Val[0..3] Integer Internal V 為 變 數 陣 列 , Dim 欄 為 設 為 4要 輸 出 的 工 程 值 會 轉 換 成 M_7024[0..3] 的 輸 出 值(-1000 到 +1000) 轉 換 為 (-16384 到 +16383)ii Integer Internal 給 for 迴 圈 使 用 的 indexProject 架 構 :一 個 階 梯 圖 程 式 + 一 個 ST 程 式<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-13 <strong>ICP</strong> <strong>DAS</strong>


階 梯 圖 程 式 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-14 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 :(* Please configure this M-7017R as +/- 10V range (type code=8) *)(* convert M-7017R's A/I value (-32768 to +32767) to become engineering valueof (-10000 to +10000) *)for ii := 0 to 7 doIN_Val[ii] := Bin2Eng( M_7017R[ii] , 32767 , -32768 , 10000 ,-10000 ) ;end_for ;(* Please configure this M-7024 as +/- 10V range (type code=33) *)(* convert OUT_Val of (-1000 to +1000) to become M-7024's A/O valueof (-16384 to +16383) *)for ii := 0 to 3 doif OUT_Val[ii] > 1000 thenM_7024[ii] := 16383 ;elsif OUT_Val[ii] < -1000 thenM_7024[ii] := -16384 ;elsif OUT_Val[ii] >= 0 thenM_7024[ii] := (OUT_Val[ii] * 16383) / 1000 ;elsif OUT_Val[ii] < 0 thenM_7024[ii] := (OUT_Val[ii] * -16384) / 1000 ;end_if ;end_for ;I/O 連 結 設 定 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-15 <strong>ICP</strong> <strong>DAS</strong>


範 例 44:連 接 1:M-7017RC ( 本 範 例 Project 名 稱 為 “Wdemo_44”)請 在 初 始 設 定 時 規 劃 M-7017RC 的 Input range 與 Type 為 +/- 20 mA使 用 者 可 參 考 M-7000 模 塊 包 裝 盒 內 所 附 的 文 件 , 或 訪 問http://www.icpdas.com/products/Remote_IO/m-7000/m-7000_list.htm 來 取 得 更 多 的 軟 / 硬體 說 明 , 比 如 像 “Analog Input Type and Data Formate Table” 的 訊 息 (Type code setting)本 例 更 使 用 變 數 陣 列 , 請 參 考 第 2.6 節 的 說 明 .變 數 宣 告 :Name Type Attribute Descriptioncomm_ok1 Bool Internal M-7017RC 的 通 訊 狀 態M7017RC[0..7] Integer Internal 為 變 數 陣 列 , Dim 欄 為 設 為 8M-7017RC 的 Analog Input 值假 如 有 設 好 Input range Type 為 +/- 20 mA , 則(-32768 到 +32767) 表 示 (-20 到 +20) mAIn_Val[0..7] REAL Internal 為 變 數 陣 列 , Dim 欄 為 設 為 8 ( 實 數 “REAL” 格 式 )M7017RC[0..7] 轉 換 後 的 工 程 值(4 到 20) mA 轉 換 成 (0.0 到 1000.0) psiVAL[0..7] Integer Internal 為 變 數 陣 列 , Dim 欄 為 設 為 8 ( 整 數 “Integer” 格 式 )M7017RC[0..7] 轉 換 後 的 工 程 值(4 到 20) mA 轉 換 成 (0 到 10000), 單 位 0.1 psiii Integer Internal 給 for 迴 圈 使 用 的 indexProject 架 構 :一 個 階 梯 圖 程 式 + 一 個 ST 程 式<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-16 <strong>ICP</strong> <strong>DAS</strong>


M-7017RC 的 Analog Input 表 :+/- 20 mA type (type code=16#D) -32768 到 +327674 to 20 mA type (type code=16#7) 0 到 +32767如 果 使 用 的 Sensor 為 4 到 20 mA 的 量 測 型 態 , 可 以 考 慮 將 M-7017RC 設 為 +/- 20 mA type .( 此 時 設 M-7017RC 為 "4 to 20 mA" type 比 較 不 好 )原 因 為 :如 果 M-7017RC 的 type 為 4 到 20 mA type, Analog Input 值 若 為 0 或 接 近 0 可 以 表 示 Sensor輸 入 為 4 mA , 但 也 更 可 能 是 Sensor 斷 線 . 因 此 光 看 Analog Input 數 值 , 區 分 不 出 這 2 者 .然 而 若 是 將 M-7017RC 規 劃 為 +/- 20 mA type, 當 值 接 近 0 時 , 只 更 可 能 是 Sensor 斷 線而 Sensor 輸 入 的 4 到 20mA , 值 會 是 (6553 到 32767), 4mA 時 值 是 在 6553 附 近 , 不 是 在 0附 近 .( 當 然 M-7017RC 的 RS-485 連 線 需 正 常 , 本 例 的 comm_ok1 變 數 可 用 來 判 斷 M-7000 的 RS-485連 線 是 否 正 常 , 值 若 為 False 表 通 訊 更 問 題 , 你 可 在 程 式 內 作 適 當 處 理 ).因 此 更 需 要 分 辨 出 Sensor (4 到 mA) 是 否 正 常 時 , 最 好 是 規 劃 M-7017RC 為 +/- 20 mAtype.如 此 你 的 程 式 內 就 可 比 如 說 當 M7017RC[0..7] 輸 入 值 小 於 5000 或 小 於 4000 , 就 可 判定 為 Sensor 斷 線 或 Sensor 異 常 .階 梯 圖 程 式 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-17 <strong>ICP</strong> <strong>DAS</strong>


ST 程 式 :(* Please configure this M-7017RC as +/- 20 mA range (type code=D) *)(* We will convert (4 , 20 mA) to become (0.0 , 1000.0 Psi), Real format *)for ii := 0 to 7 doIN_Val[ii] := A4_20_To( M7017RC[ii] , 16#D , 1000.0 , 0.0 );end_for ;(* or you may use Bin2Eng( ) to convert (4 to 20mA) to become (0 to 10000) as below, unit is 0.1 psi*)(* Please declare Val[0..7] as Integer format *)for ii := 0 to 7 doVal[ii] := Bin2Eng( M7017RC[ii] , 32767 , 6553 , 10000 , 0 ) ;end_for ;(* You can do something if the sensor is broken or communication is break *)if comm_ok1 and ( M7017RC[ii] < 5000 ) then(* You may do someting if 4-20 mA sensor is broken *)elsif comm_ok1=False then(* You may do someting if communication between controller & M-7017RC is break *)end_if ;I/O 連 結 設 定 connection:<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-18 <strong>ICP</strong> <strong>DAS</strong>


範 例 45:連 接 1:M-7019R 來 取 得 攝 氏 度 ( 本 範 例 Project 名 稱 為 “Wdemo_45”)請 在 初 始 設 定 時 規 劃 M-7019R 的 range type 為 Thermocouple, K-Type (Type code=0F)使 用 者 可 參 考 M-7000 模 塊 包 裝 盒 內 所 附 的 文 件 , 或 訪 問http://www.icpdas.com/products/Remote_IO/m-7000/m-7000_list.htm 來 取 得 更 多 的 軟 / 硬體 說 明 , 比 如 像 “Analog Input Type and Data Formate Table” 的 訊 息 (Type code setting)變 數 宣 告 :Name Type Attribute Descriptioncomm_ok1 Bool Internal M-7019 的 通 訊 狀 態Temper_1 到Temper_8Integer Internal M-7019R 的 溫 度 值Project 架 構 :一 個 階 梯 圖 程 式I/O 連 結 設 定 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-19 <strong>ICP</strong> <strong>DAS</strong>


階 梯 圖 程 式 :這 樣 設 表 示 為 “ 特 殊設 定 ”, 讀 回 的 值 為攝 氏 度 , 單 位 0.01 度“Mbus_r” 與 “MBUS_R1” 的 "CODE_" 參 數 可 以 是 “ 標 準 設 定 ” 或 “ 特 殊 設 定 ”.標 準 設 定 :若 "CODE_" 為 2 , 每 個 回 傳 的 “N1_” 到 “N2_” 各 包 含 16-bit ( 或 16 Digital Input)若 "CODE_" 為 4 , 每 個 回 傳 的 “N1_” 到 “N12_” 為 1 個 Word 值 (–32768 到 +32767)特 殊 設 定 :只 能 用 於 M-7000 系 列 的 溫 度 量 測 模 塊 , 如 M-7015, M-7018R 與 M-7019R“CODE_” 格 式 : TTRRCC (16 進 位 )TT=10 ( 轉 換 為 " 攝 氏 度 ")TT=20 ( 轉 換 為 " 華 氏 度 "")TT=00 ( 這 樣 設 變 成 “ 標 準 設 定 ”. RR 需 同 時 也 設 成 00)RR : 模 度 模 塊 的 "Type Code" 設 定CC : Modbus function code 編 號 , 可 以 是 1 到 4使 用 特 殊 設 定 得 到 的 溫 度 單 位 是 0.01 度 . 例 如 “3012” 表 示 30.12 度 . 若 值 為 999990 表 示“ 溫 度 Sensor 斷 線 ” ( 只 適 用 更 溫 度 斷 線 偵 測 能 力 的 模 塊 , 像 M-7019R, M-7015, M-7018R)例 如 , 設 I-7019R 的 "CODE_" 為 :A. 16#100F04 : (TT=10, RR=0F CC=04, 16 進 位 表 示 ) , 則 使 用 " 攝 氏 度 ", 單 位 為 0.01 度 ,range type 為 "0F: Thermocouple K Type, -270 ~1372 degree Celsius", code=04(Dec.). 所 以如 果 回 傳 "2356" 表 示 23.56 度 , "-489" 表 示 -4.89 度 , "999990" 表 示 ”Sensor 斷 線 ” .B. 16#200F04 : (TT=20, RR=0F, CC=04, 16 進 位 表 示 ) , 則 使 用 " 華 氏 度 ", 單 位 為 0.01 度 ,range type 為 "0F :Thermocouple K Type, -270 ~1372 degree Celsius", code=04(Dec.). 所 以 如果 回 傳 "4512" 表 示 45.12 度 ,"500" 表 示 5.00 度 , "999990" 表 示 ”Sensor 斷 線 ” .C. 16#04 : (TT=00, RR=00, CC=04, 16 進 位 表 示 ) , 為 標 準 設 定 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-20 <strong>ICP</strong> <strong>DAS</strong>


範 例 46:連 接 1: M-7080-D 來 取 得 counter 值 ( 本 範 例 Project 名 稱 為 “Wdemo_46”)變 數 宣 告 :Name Type Attribute Descriptioncomm_ok1 Bool Internal M-7080D 的 通 訊 狀 態RS1 Bool Internal 要 重 置 Ch1. counter 值 為 0, 將 此 值 設 為 TrueRS2 Bool Internal 要 重 置 Ch2. counter 值 為 0, 將 此 值 設 為 TrueCOUNTER1 Integer Internal M-7080D 的 CH1 Counter 值COUNTER2 Integer Internal M-7080D 的 CH2 Counter 值Project 架 構 :一 個 功 能 方 塊 圖 程 式 + 一 個 階 梯 圖 程 式功 能 方 塊 圖 程 式 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-21 <strong>ICP</strong> <strong>DAS</strong>


階 梯 圖 程 式 :I/O 連 結 設 定 :<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 21-22 <strong>ICP</strong> <strong>DAS</strong>


第 22 章 連 接 Modbus TCP/IP I/OW-8x47 / 8x46 從 它 的 驅 動 3.32B 起 支 持 I-8KE4-MTCP 與 I-8KE8-MTCP ethernet I/O. 請 參 考I-8KE4/8-MTCP: http://www.icpdas.com/products/PAC/i-8000/i-8KE4_8KE8_MTCP.htmWincon <strong>ISaGRAF</strong> driver: http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htmNS-205 / NS-208 : http://www.icpdas.com/products/Switch/industrial/ethernet_switch.htm(WP-8xx7, VP-25W7 / 23W7 , XP-8xx7-CE6 也 更 支 持 )22.1: I-8KE8-MTCP I/O 簡 介一 台 W-8x47 / 8x46 最 多 可 連 接 24 個 I-8KE4-MTCP 或 I-8KE8-MTCP. 全 部 最 多 可 更 約 3000 到6000 點 的 I/O, 全 部 的 I/O Scan Time 約 30 到 40 ms. 如 果 只 連 接 少 於 10 個 I-8KE4/8-MTCP, I/OScan Time 約 可 到 20 ms 左 右 . 然 而 此 值 會 受 <strong>ISaGRAF</strong> 的 PLC scan time 影 響 , 比 如 若 PLCscan time 是 10ms, 那 連 10 個 I-8KE4/8-MTCP 的 I/O Scan Time 約 可 到 20 ms 左 右 . 但 若 PLCscan time 是 50ms, 那 I/O Scan Time 將 變 成 約 50 ms 左 右 ( 若 是 採 用 W-8x36 / 8x37, 那 它 的Ethernet IO 的 Scan Time 約 是 W-8x47 / 8x46 ( 雙 網 口 版 本 ) 的 2 倍 大 , 用 W-8x36 / 8x37 連Ethernet I/O 的 效 率 比 較 慢 )規 劃 1: W-8x47 / 8x46 ( 雙 網 口 Wincon) 在 安 全 私 人 的 區 域 網 路 內 連 Modbus TCP/IP I/O .( 優 點 : Ethernet I/O 只 連 到 W-8x47 / 8x46 的 一 個 網 口 , 沒 更 公 開 到 其 它 網 路 , 安 全 性 佳 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 22-1 <strong>ICP</strong> <strong>DAS</strong>


規 劃 2: W-8x47 / 8x46 ( 雙 網 口 Wincon) 的 2 個 網 口 都 連 接 到 Modbus TCP/IP I/O.( 優 點 : 使 用 Wincon 的 2 個 網 口 同 時 連 接 Ethernet I/O, 當 一 個 網 口 的 連 線 出 問 題 , 另 一 個 網 口仍 可 繼 續 運 作 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 22-2 <strong>ICP</strong> <strong>DAS</strong>


規 劃 3: W-8x37 / 8x36 ( 一 個 網 口 版 本 ) 連 Modbus TCP/IP I/O.此 方 式 沒 更 1 與 2 的 優 點 , 且 Ethernet I/O Scan 會 比 W-8x47 / 8x46 慢 )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 22-3 <strong>ICP</strong> <strong>DAS</strong>


22.2: 編 寫 程 式 操 控 I-8KE8-MTCP I/O步 驟 1 :使 用 I-8KE4-MTCP 或 I-8KE8-MTCP 前 , 要 先 設 好 它 的 IP 地 址 .先 關 閉 I-8KE4 / 8-MTCP 的 電 源 , 將 它 的 “INIT” 端 子 與 “INIT * COM” 端 子 短 接 , 再 開 啟電 源 . PC 用之 後 在 PC 上 執 行 7188xw.exe 程 式 ( 7188xw.exe 可 在 I-8000 CD-ROM 或 Ftp 上 找 到ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/minios7/utility/).7188xw.exe 運 行 起 來 後 , 請 使 用 一 條 RS-232 線 連 接 PC 的 COM1 到 I-8KE4-MTCP 或I-8KE8-MTCP 的 COM1.若 您 的 PC 沒 更 COM1 或 您 想 使 用 其 他 COM 埠 ( 如 COM5) 來 連 接 , 可 以 先 關 閉“7188xw.exe”, 變 更 同 路 徑 下 的 “7188xw.ini” 檔 案 第 一 行 的 “C 編 號 ”. 例 如 : 使 用 PC 的COM5 連 接 到 I-8KE8-MTCP, 則 更 改 ” 7188xw.ini” 內 C1 為 C5, 之 後 再 執 行 “7188xw.exe” ,C1 B115200 P0 D8 S1FXautoexec.bat Xisa7188e.exew25C5 B115200 P0 D8 S1FXautoexec.bat Xisa7188e.exew25如 下請 在 7188xw.exe 視 窗 上 按 幾 次 , 如 果 沒 更 回 應 表 示 RS-232 連 線 更 問 題 , 請 檢 查 PC 到I-8KE8-MTCP 的 接 線 與 PC 的 COM 設 定 對 不 對 .若 更 回 應 , 請 輸 入 “ip” 來 查 看 目 前 I-8KE8-MTCP 的 IP 地 址 .要 變 更 IP, 請 輸 入 , 例 如 , “ip 192.168.2.70” 來 改 設 IP 地 址 .要 查 Mask 設 定 , 請 輸 入 “mask” , 要 更 改 請 輸 入 “mask 255.255.255.0”. ( 建 議 mask 一 律 設 為255.255.255.0)IP 與 Mask 設 好 後 , 請 關 閉 I-8KE8-MTCP 的 電 源 , 將 “INIT” 與 “INIT * COM” 的 接 線 斷 開 .重 新 開 機 後 , 將 I-8KE8-MTCP 的 網 口 連 線 到 Wincon ( 請 搭 配 使 用 NS-205 / NS-208)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 22-4 <strong>ICP</strong> <strong>DAS</strong>


步 驟 2.PC 上 執 行 “Modbus utility” 來 規 劃 I-8KE8-MTCP 上 的 I/O. 此 ”Modbus utility” 可 在 以 下 地 方找 到I-8000 CD-ROM: \napdos\modbus\modbus_utility\ 或http://www.icpdas.com/products/PAC/i-8000/modbus_web_download.htm重 要 事 項 :每 個 I-8KE4-MTCP 或 I-8KE8-MTCP, 當 更 變 更 插 在 其 上 的 I/O 板 卡 時 , 都 必 頇 使 用 Modbusutility 來 重 新 對 它 的 I/O 規 劃 一 次 . 假 如 更 發 現 到 其 上 的 第 2 個 與 第 3 個 Led 燈 一 直 閃 爍 的 情況 , 表 示 I/O 卡 更 被 動 過 , 需 重 新 用 Modbus Utility 再 規 劃 一 次 ”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 22-5 <strong>ICP</strong> <strong>DAS</strong>


請 輸 入 該 I-8KE8-MTCP 的 IP, 之 後 按 下 “Connect”. 如 果 I-8KE8-MTCP 更 被 連 上 , 您 可 以 發現 到 對 應 的 Modbus address 設 定 . 比 如 , D/I : 由 編 號 0 到 … , A/I : 由 編 號 0 到 …<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 22-6 <strong>ICP</strong> <strong>DAS</strong>


I-8KE4/8-MTCP 內 更 個 Watchdog 設 定 . 出 廠 設 定 為 “disable the watchdog” . 您 若 想 啟 用 它 ,請 設 定 一 個 10 到 120 間 的 數 值 ( 單 位 為 秒 ) 給 “Watchdog timer” . 如 此 當 Wincon 與I-8KE4/8-MTCP 通 訊 斷 線 超 過 “Watchdog timer” 時 間 時 , 會 自 動 將 I-8KE4/8-MTCP 上 的D/O 或 A/O 輸 出 點 切 換 為 原 先 規 劃 好 的 “Safe Value” .如 果 您 選 取 “Safe Value” 之 後 , 並 勾 選 D/O 板 卡 的 Ch0 到 …, 按 下 “Set” 的 話 , 表 示 將 這 些D/O 接 點 的 ”Safe value” 規 劃 為 ON如 果 您 選 取 “Safe Value” 之 後 , 並 沒 更 勾 選 D/O 板 卡 的 Ch0 到 …, 按 下 “Set” 的 話 , 表 示 將 這些 D/O 接 點 的 ”Safe value” 規 劃 為 OFF各 D/O 與 A/O 接 點 的 “Safe value” 功 能 , 只 更 在 “Watchdog timer” 設 定 值 不 是 0 的 情 況 下 才會 啟 用 , 將 “Watchdog timer” 值 設 為 0, 表 示 關 閉 I-8KE4/8-MTCP 的 WatchDog 功 能 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 22-7 <strong>ICP</strong> <strong>DAS</strong>


若 I-8KE8-MTCP 上 面 更 插 I-87xxx D/I 板 卡 , 您 可 以 啟 用 它 的 “87K DI Counter” 功 能 . 每 個I-87xxx 板 卡 的 D/I 接 點 可 以 更 一 個 D/I Counter 功 能 . 最 快 可 計 數 到 100 Hz 的 輸 入 訊 號 . 此DI Counter 值 為 16-bit (0 到 32767 , 之 後 會 降 到 –32768 再 增 加 到 -1, 16 進 位 表 示 為 0000,0001 ... 到 7FFF , 8000 , 8001, ... 到 FFFF, 之 後 回 到 0000, ...).DI Counter 值 使 用 跟 A/I 接 點 一 樣 的 Modbus address 設 定 .每 個 I-8KE4/8-MTCP 上 的 I-87xxx D/I 板 卡 , 最 多 只 能 使 用 16 個 D/I Counter, 即 使 是 像I-87041: 32 點 D/I 也 是 只 能 使 用 16 個 D/I Counter.重 要 事 項 :每 個 I-8KE4-MTCP 或 I-8KE8-MTCP, 當 更 變 更 插 在 其 上 的 I/O 板 卡 時 , 都 必 頇 使 用 Modbusutility 來 重 新 對 它 的 I/O 規 劃 一 次 . 假 如 更 發 現 到 其 上 的 第 2 個 與 第 3 個 Led 燈 一 直 閃 爍 的 情況 , 表 示 I/O 卡 更 被 動 過 , 需 重 新 用 Modbus Utility 再 規 劃 一 次 ”<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 22-8 <strong>ICP</strong> <strong>DAS</strong>


步 驟 3.請 在 <strong>ISaGRAF</strong> IO connection 視 窗 內 連 上 “i8ke” . 輸 入 要 連 上 的 那 台 I-8KE4-MTCP 或I-8KE8-MTCP 的 IP 地 址 . 若 Wincon 更 連 接 多 個 I-8KE4/8-MTCP, 則 必 頇 要 在 IO connection視 窗 內 連 上 相 同 數 量 的 “i8ke” , 如 下 .”i8ke” 唯 一 的 一 個 輸 入 點 若 回 傳 TRUE, 表 示 該I-8KE4-MTCP 或 I-8KE8-MTCP 連 線 正 常 , 若 回 傳 FALSE, 表示 該 I-8KE4-MTCP 或 I-8KE8-MTCP 斷 線 .若 您 的 <strong>ISaGRAF</strong> 軟 體 內 找 不 到 i8ke , i8ke_b , i8ke_n , i8ke_f , i8ke_b_a , i8ke_n_a , i8ke_f_a ,請 訪 問 http://www.icpdas.com/products/PAC/i-8000/isagraf.htm 來 下 載 “<strong>ICP</strong> <strong>DAS</strong> Utilities For<strong>ISaGRAF</strong>.zip” 並 執 行 其 內 的 setup.exe 來 安 裝 它 們 到 您 的 <strong>ISaGRAF</strong> 內 .步 驟 4.要 在 <strong>ISaGRAF</strong> 程 式 內 把 變 數 對 應 到 I-8KE4/8-MTCP 上 相 對 的 Modbus address 的 I/O 點 , 可 以使 用 下 表 內 的 函 式 , 詳 細 函 式 說 明 請 參 考 附 錄 A.4.I8KE_BI8KE_B_AI8KE_FI8KE_F_AI8KE_NI8KE_N_A設 定 Boolean 變 數 對 應 到 I-8KE4/8-MTCP 的 1 個 D/I 或 D/O 點設 定 Boolean 變 數 陣 列 對 應 到 I-8KE4/8-MTCP 的 多 個 D/I 或 D/O 點設 定 REAL 變 數 對 應 到 I-8KE4/8-MTCP 的 1 個 A/I 或 A/O 點設 定 REAL 變 數 陣 列 對 應 到 I-8KE4/8-MTCP 的 多 個 A/I 或 A/O 點設 定 Integer 變 數 對 應 到 I-8KE4/8-MTCP 的 1 個 A/I 或 A/O 點設 定 Integer 變 數 陣 列 對 應 到 I-8KE4/8-MTCP 的 多 個 A/I 或 A/O 點範 例 程 式 : Wdemo_30 與 Wdemo_31 位 於W-8xx7 CD-ROM: \napdos\isagraf\wincon\demo\ 內 或ftp://ftp.icpdas.com/pub/cd/wincon_isagraf/napdos/isagraf/wincon/demo/<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 22-9 <strong>ICP</strong> <strong>DAS</strong>


第 23 章 連 接 FRNET 快 速 I/OµPAC-7186EG ( 驅 動 1.06 版 起 ), Wincon-8xx7 ( 驅 動 3.42 版 起 ), WinPAC-8xx7 ( 驅 動 1.01 版 起 ) ,與 iPAC-8447/8847 ( 驅 動 1.01 版 起 ) 與 VP-25W7/23W7 ( 驅 動 1.02 版 起 ) 與 XP-8xx7-CE6 ( 驅動 1.01 版 起 ) 更 支 持 FRnet 快 速 Digital I/O.I-8xx7 (40MHz) 與 I-8437-80, I-8837-80 與 I-7188EG/XG 則 不 支 持 FRnet I/O.WP-8xx7, VP-2xW7, iPAC-8xx7, XP-8xx7-CE6 與 W-8xx7 需 使 用 I-8712W 來 連 接 FRNETI/O.µPAC-7186EG 需 使 用 FX-016 (x-board) 來 連 接 FRNET I/O.請 參 考 以 下 取 得 相 關 的 訊 息 .I-8172 / I-8172W 與 FRnet I/O: http://www.icpdas.com/products/Remote_IO/frnet/frnet_list.htmµPAC-7186EG + FX-016 (x-board) : 請 連 絡 地 區 經 銷 商 或 service@icpdas.com(FX-016 尚 未 支 持 RoHS)<strong>ISaGRAF</strong> driver: http://www.icpdas.com/products/PAC/i-8000/isagraf-link.htm<strong>ISaGRAF</strong> PAC : http://www.icpdas.com/products/PAC/i-8000/isagraf.htm<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 23-1 <strong>ICP</strong> <strong>DAS</strong>


µPAC-7186EG + FX-016 接 腳 圖 :請 將 FX-016 (x-board) 插 入 到 µPAC-7186EG 的 slot 0 上 ( 移 開 µPAC-7186EG 的 前 方 外 殼 , 就可 看 到 slot 0 的 位 置 ) .FX-016 只 支 持 一 個 FRNET port . 它 的 訊 號 接 腳 為 A 與 B. (FX-016 上 沒 更 A2 與 B2)<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 23-2 <strong>ICP</strong> <strong>DAS</strong>


23.1: FRnet I/O 簡 介重 要 訊 息 :1. 關 於 FRNET 主 板 :WP-8xx7 與 VP-25W7/23W7 與 iPAC-8xx7 與 XP-8xx7-CE6 只 支 持 I-8172W, 不 支 持I-8172.Wincon-8xx7 / 8xx6 則 I-8172W 與 I-8172 都 支 持µPAC-7186EG 只 支 持 FX-016 , 不 支 持 I-8172W, 也 不 支 持 I-81722. 每 個 FRnet 數 位 ( 數 字 量 ) 輸 出 模 塊 (Digital Output) 應 該 都 可 找 到 一 個 ”RESET” 或 叫“HOLD” 切 換 開 關 或 是 一 個 “RESET” 功 用 的 Jumper. 當 設 為 ON 時 ( 或 啟 用 它 ), 會 在I-8172 / I-8172W FRnet 主 板 ( 或 µPAC-7186EG + FX-016) 跟 此 FRnet 輸 出 模 塊 通 訊 斷 線 時 ,自 動 將 其 上 的 輸 出 點 都 設 為 安 全 的 False 值 . ( 例 如 , 將 FR-2057 的 第 8 個 Dip 切 換 開 關 設 為 ON,表 示 啟 用 此 功 能 )3. FRnet 數 位 輸 入 (Digital Input) 模 塊 與 主 板 I-8172 / 8172W ( 或 µPAC-7186EG + FX-016)的 通 訊 狀 態 , 可 在 <strong>ISaGRAF</strong> 的 IO connection 視 窗 中 I-8172 的 Port0 或 Port1 的 8 個 D/I 點 上 偵測 到 ( 若 是 µPAC-7186EG + FX-016, 則 在 IO connection 視 窗 中 “Frnet86” 上 偵 測 到 ). 然 而FRnet 輸 出 (Output) 模 塊 則 無 法 被 FRNET 主 板 偵 測 到 它 的 通 訊 狀 態 .4. WinPAC-8xx7 最 多 可 支 持 插 入 8 塊 I-8172W 於 Slot 0 到 7, Wincon-8xx7 最 多 可 支 持 插 入7 塊 I-8172 或 I-8172W 於 Slot 1 到 7. XP-8xx7-CE6 最 多 可 支 持 插 入 7 塊 I-8172W 於 Slot 1 到7. iPAC-8447 / 8847 則 最 多 只 支 持 插 入 4 塊 I-8172W 於 Slot 0 到 7 的 其 中 4 個 .µPAC-7186EG 則 只 可 插 入 一 塊 FX-016 (x-board) . VP-2xW7 最 多 支 持 插 入 3 塊 I-8172W 於Slot 0 到 2.FRnet I/O 的 優 點 :為 快 速 數 位 I/O (Digital I/O), 每 條 單 獨 的 FRnet 連 線 上 的 所 更 D/I 與 D/O 的 I/O Scan Time 約 只更 3 ms. ( 當 然 此 Scan Time 會 被 <strong>ISaGRAF</strong> 的 PLC scan Time 所 影 響 . 比 如 若 某 個 應 用 程 式 的<strong>ISaGRAF</strong> PLC Scan Time 約 15ms, 那 此 應 用 所 連 接 的 FRnet I/O 的 Scan Time 就 會 變 成 是 15 ms,而 非 3ms). 以 下 是 空 的 <strong>ISaGRAF</strong> 程 序 ( 只 含 FRnet 設 定 程 序 ) 大 約 的 PLC scan time.WP-8xx7XP-8xx7-CE6VP-2xW7i8172w x 1 i8172w x 2 i8172w x 3 i8172w x 4 5~8 塊i8172w3 ms 4 ms 4 ms 4 ms 8 ms3 ms 4 ms 4 ms 4 ms 8 ms(3 ms) (4 ms) (4 ms) ( - )( - )iP-8xx7 3 ms 6 ms 9 ms 12 ms -µPAC-7186EG1 塊 FX-0163 msFRnet I/O 目 前 尚 未 支 持 類 比 I/O (A/I 與 A/O).<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 23-3 <strong>ICP</strong> <strong>DAS</strong>


WP-8xx7, VP-25W7/23W7, W-8xx7 , XP-8xx7-CE6 或 iPAC-8x47 加 I-8172W 板 卡 ( 與µPAC-7186EG 加 FX-016) 可 連 到 FRNET I/O 模 塊 , 如 FR-2053, FR-2057, FR-2054, FR-32P,FR-32Rhttp://www.icpdas.com/products/Remote_IO/frnet/frnet_list.htm每 個 I-8172W FRnet 主 板 更 2 個 FRnet 通 訊 串 口 , 編 號 為 Port 0 與 Port 1 ( µPAC-7186EG 加FX-016 則 只 更 1 個 FRNET 通 訊 串 口 , 編 號 為 Port 0 ). 每 個 FRnet 串 口 最 多 可 連 接 8 個 FRnetD/O 的 Module Address ( 正 常 使 用 下 ) 與 8 個 D/I 的 Module Address . 使 用 時 要 特 別 注 意 ,FRnet D/O 的 “Module Address” 設 定 ( 用 Dip Switch 設 的 ) 只 能 是 0 到 7, 而 D/I 的 “ModuleAddress” 設 定 只 能 是 8 到 15.正 常 用 法 是 D/O 與 D/I 的 “Module Address” 設 定 都 需 不 一 樣 , 但 更 一 種 特 殊 的 用 法 是 D/O 的“Module Address” 設 定 可 以 相 同 , 但 這 樣 使 用 只 是 把 D/O 訊 號 的 數 量 覆 製 而 已 , 相 同“Module Address” 設 定 的 D/O 點 的 輸 出 還 是 一 樣 的 . 所 以 1 個 FRnet 串 口 的 D/O ModuleAddress 數 量 可 以 超 過 8 個 . 但 D/I 則 最 多 只 更 8 個 (D/I 的 Module Address 不 可 設 為 相 同 )每 個 FRnet Module Address 的 I/O 點 數 量 最 多 是 16 點 . 因 此 1 個 I-8172W 主 板 最 多 可 接 2(Ports) x 8 (Module address) x 16 = 256 個 D/I 與 2 x 8 x 16 = 256 個 D/O (1 台 µPAC-7186EG +FX-016 則 最 多 可 使 用 128 個 D/I 加 128 個 D/O ). 一 台 8 槽 的 WinPAC-8847 最 多 可 插 8 塊I-8172W 主 板 , 所 以 每 台 WinPAC-8847 可 接 的 FRnet I/O 點 最 大 量 是 2048 個 D/I 加 2048 個D/O. ( 若 是 使 用 iPAC-8447 / 8847 則 最 多 只 可 插 4 塊 I-8172W 主 板 , 可 接 的 FRnet I/O 點 最大 量 是 1024 個 D/I 加 1024 個 D/O)注 意 : <strong>ISaGRAF</strong> 3.x 版 軟 體 ( 軟 件 ) 可 用 “I-8172” (for iP-8xx7, WP-8xx7 , W-8xx7) 或“Frnet86” I/O complex equipment (for µPAC-7186EG) 與 “fr_16di” 及 “fr_16do” 及 “fr_b_a”函 式 來 操 作 FRnet I/O. 如 果 你 的 <strong>ISaGRAF</strong> 上 找 不 到 這 5 個 I/O lib, 請 到 以 下 網 址 下 載 “<strong>ICP</strong><strong>DAS</strong> Utilities For <strong>ISaGRAF</strong>” http://www.icpdas.com/products/PAC/i-8000/isagraf.htm > Driver ,之 後 執 行 “Setup.exe” 來 安 裝 .或 至 www.icpdas.com > FAQ > Software > <strong>ISaGRAF</strong> > 中 文 > 082 來 下 載 zip 檔 , 內 含 5 個各 別 的 IO lib. 然 後 參 考 “<strong>ISaGRAF</strong> 進 階 使 用 手 冊 ” 附 錄 A.2 來 安 裝 c-function : FR_B_A與c-function-block : FR_16DI , FR_16DO 與 IO complex-equipment: i_8172, Frnet86 .範 例 程 式 “wpdmo_70.pia” ( 給 WP-8xx7, iP-8xx7 使 用 ) 可 在 以 下 位 置 取 得 .WP-8xx7 CD-ROM: \napdos\isagraf\wp-8xx7\demo\ 或ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/www.icpdas.com > FAQ > Software > <strong>ISaGRAF</strong> > FAQ > 082或<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 23-4 <strong>ICP</strong> <strong>DAS</strong>


23.2: 編 寫 FRnet I/O 程 式步 驟 1: 在 <strong>ISaGRAF</strong> I/O connection 視 窗 內 連 上 I-8172 板 卡 ( 若 是 µPAC-7186EG + FX-016 則 要連 上 “Frnet86” ). WinPAC-8xx7 需 連 在 對 應 的 插 槽 0 到 7 ( 最 多 8 個 ). iPAC-8447 / 8847則 可 以 連 在 插 槽 0 到 7 ( 最 多 4 個 ), µPAC-7186EG 則 只 能 連 “Frnet86” 在 插 槽 0.此 8 個 D/I 點 表 示 FRNETModule Addr 8 ~15 的 通 訊 狀 態步 驟 2: 宣 告 <strong>ISaGRAF</strong> 變 數Name Type Attribute DescriptionINIT Boolean Internal 初 值 設 為 TrueDump_di Boolean Internal 給 未 使 用 的 FRnet D/I 點 連 接 的 Boolean 變 數Dump_do Boolean Internal 給 未 使 用 的 FRnet D/O 點 連 接 的 Boolean 變 數FR_IN01 ~FR_IN16FR_OUT01 ~FR_OUT16Boolean Internal 16 個 FRnet D/I 點Boolean Internal 16 個 FRnet D/O 點<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 23-5 <strong>ICP</strong> <strong>DAS</strong>


步 驟 3: 用 來 設 定 使 用 FRnet I/O 的 LD 程 式(* 注 意 : INIT 需 宣 告 初 值 為 TRUE, 所 以 以 下 的 code 只 能 在 第 一 個 PLC scan 內 運 行 一 次 , 其它 的 程 序 內 , 請 不 要 再 使 用 Fr_16di 與 fr_16do.另 外 FR_16DO 與 FR_16DI 不 能 使 用 陣 列 變 數 . 要 使 用 陣 列 變 數 於 FRNET I/O 請 參 考第 23.3 節 來 使 用 FR_B_A *)範 例 1: FR-2053 (16 IN) 與 FR-2057 (16 OUT)Fr_16di 與 Fr_16do 的 Q_ 都 是 永 遠 為TRUE, 所 以 可 以 多 個 Fr_16di 與 Fr_16do連 在 同 一 行注 意 : 若 是 使 用µPAC-7186EG + FX-016 ,“Slot_” 與 “Port_” 只 能 設成 0請 連 接 “Dump_di” 到 未 使 用 的FRnet D/I 點 與 連 接 “Dump_do”到 未 使 用 的 FRnet D/O 點 .請 不 要 直 接 指 定 值 “False” 或“TRUE” 到 未 使 用 的 FRnet D/I與 D/O 點 ..<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 23-6 <strong>ICP</strong> <strong>DAS</strong>


範 例 2: FR-2054 (8 IN and 8 OUT)請 留 意 FR-2054 板 卡 側 邊 的 2-Pin 端 子 接 腳 為 FRnet的 通 訊 接 腳 (A, B) . 但 FR-2053 與 FR-2057 板 卡側 邊 的 2-Pin 端 子 接 腳 則 為 I/O 的 Power . 請 勿 接 錯 ,不 然 板 卡 會 發 生 損 壞注 意 : 若 是 使 用µPAC-7186EG +FX-016 , “Slot_” 與“Port_” 只 能 設 成 0若 使 用 的 FRnet I/O 板 卡 為 FR-2054 (8 IN 與 8 OUT), 它 的 Output 使 用 方 式 與 其 它 FRnetI/O 更 一 些 差 別 . 在 它 的 “FR_16DO” 上 必 頇 將 第 1 ~ 8 個 位 置 所 連 接 的 變 數 名 稱 , 同 時 也 連 接在 第 9 ~ 16 位 置 上 . 另 外 FR-2054 的 Dip Switch 上 ADDR 設 的 是 DO 的 ADDR, 其 DI 的ADDR 則 為 DO 的 ADDR+8, 比 如 若 設 成 Dip 3 為 ON, Dip 1 與 2 為 OFF, 表 示 DO ADDR = 4 ,DI ADDR 則 為 12. 上 方 圖 形 所 控 制 的 FR-2054 則 需 將 ADDR 設 為 0, 所 以 DI ADDR 為8.<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 23-7 <strong>ICP</strong> <strong>DAS</strong>


步 驟 4: 控 制 FRnet I/O ( 以 下 為 每 0.5 秒 對 FR_OUT01 到 03 做 一 次 ON / OFF 方 波 輸 出 )本 例 如 何 測 ?1. 請 將 1 片 I-8172W 板 卡 插 在 WinPAC-8xx7 的 slot 1 內 (WinPAC 最 左 邊 的 I/O slot 是 0)2. 請 連 接 Port 0 到 1 個 FR-2053 (16-Ch. D/I) 模 塊 與 1 個 FR-2057 (16-Ch. D/O) 模 塊 .請 將 該 FR-2053 的 ADDR 設 為 8 (Dip 開 關 4 設 為 ON, 其 它 開 關 1,2,3,5,6,7,8 設 為 OFF)請 將 該 FR-2057 的 ADDR 設 為 4 (Dip 開 關 3 設 為 ON, 其 它 開 關 1,2,4,5,6,7,8 設 為 OFF)I-8172W Port 0 的 A 端 子 接 到 FR-2053 的 A 端 子 , 再 並 接 到 FR-2057 的 A 端 子I-8172W Port 0 的 B 端 子 接 到 FR-2053 的 B 端 子 , 再 並 接 到 FR-2057 的 B 端 子注 意 :---------------------------------------------------------------------------------------------------FRnet D/O 的 Module Address 設 定 只 能 是 0 到 7FRnet D/I 的 Module Address 設 定 只 能 是 8 到 15---------------------------------------------------------------------------------------------------3. 之 後 將 WP-8xx7 或 iPAC-8x47 開 機 , 下 載 此 <strong>ISaGRAF</strong> 程 式 到 其 內 , 您 會 看 到 FR-2057 的DO1 到 DO3 每 0.5 秒 ON / OFF 一 次 .本 範 例 程 式 為 “wpdmo_70.pia” 可 在 以 下 位 置 取 得 .WP-8xx7 CD-ROM: \napdos\isagraf\wp-8xx7\demo\ 或ftp://ftp.icpdas.com/pub/cd/winpac-8xx7/napdos/isagraf/wp-8xx7/demo/www.icpdas.com > FAQ > Software > <strong>ISaGRAF</strong> > 082或23.3: 使 用 FR_B_A 來 降 低 程 式 的 大 小更 些 應 用 會 使 用 WinPAC-8x47 或 iPAC-8x47 來 連 接 多 個 I-8172W, 且 每 個 I-8172W 上 的FRNET port 又 去 連 接 多 個 FRNET I/O. 此 時 若 是 使 用 FR_16DI 與 FR_16DO 來 操 作 , 程 式 量會 變 的 很 大 , 因 此 可 以 改 採 用 FR_B_A 來 操 作 如 下 (µPAC-7186EG + FX-016 也 支 持 FR_B_A,但 “Slot_” 與 “Port_” 只 能 設 成 0).本 例 宣 告 :INIT 為 Internal / Boolean , 且 指 定 它 的 初 值 為 TRUEDOUT 為 Boolean 變 數 陣 列 , 大 小 為 128, 即 DOUT[0..127], 指 定 其 Network addr 為 101 (65h)DIN 為 Boolean 變 數 陣 列 , 大 小 為 128, 即 DIN[0..127], 指 定 其 Network addr 為 229 (E5h)關 於 更 多 變 數 陣 列 的 說 明 , 請 參 訪 www.icpdas.com > FAQ > Software > <strong>ISaGRAF</strong> > 中 文 >039<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 23-8 <strong>ICP</strong> <strong>DAS</strong>


只 更 第 一 個 PLC Scan 需 要 Run 以 下 的 code若 是 使 用 µPAC-7186EG + FX-016 , “Slot_” 與 “Port_” 只 能 設 成 0指 定 DOUT[0..127] 的 Networkaddr 為 101 到 228 ( 必 需 在Dictionary 內 設 好 DOUT 的Network address number 為101)指 定 DIN[0..127] 的 Network addr 為229 到 356 ( 必 需 在 Dictionary 內 設 好DIN 的 Network address number 為229)S_MB_ADR 與 FR_B_A 不 能 連 接 在同 一 列 , 因 為 它 們 不 一 定 是 ReturnTRUE用 於 Slot 2 上 I-8172W 的 Port 1, 從Module Addr 0 , Channel 1 開 始 對 應DOUT 陣 列 變 數 到 各 別 的 FRNETDO Channel 上 , 共 對 應 128 個Channel. 此 例 會 將 DOUT[0] ~ [15]對 應 到 Module Addr 為 0 的 第 1 ~ 16的 DO Channel 上 , DOUT[16] ~ [31]對 應 到 Module Addr 為 1 的 第 1 ~ 16的 DO Channel 上 , ..., DOUT[112] ~[127] 對 應 到 Module Addr 為 7 的 第 1~ 16 的 DO Channel 上 .用 於 Slot 2 上 I-8172W 的 Port 1, 從 Module Addr 8 ,Channel 1 開 始 對 應 DIN 陣 列 變 數 到 各 別 的 FRNETDI Channel 上 , 共 對 應 128 個 Channel. 此 例 會 將DIN[0] ~ [15] 對 應 到 Module Addr 為 8 的 第 1 ~ 16的 DI Channel 上 , DIN[16] ~ [31] 對 應 到 ModuleAddr 為 9 的 第 1 ~ 16 的 DI Channel 上 , ..., DIN[112] ~[127] 對 應 到 Module Addr 為 15 的 第 1 ~ 16 的 DIChannel 上 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 23-9 <strong>ICP</strong> <strong>DAS</strong>


第 24 章 使 用 COM Port 函 式 來 讀 / 寫 RS-232/422/485<strong>ICP</strong> <strong>DAS</strong> <strong>ISaGRAF</strong> 支 持 的 Serial COM Port (RS-232/422/485) 通 訊 規 約 更 以 下 幾 種 :Modbus RTU Slave參 考 第 4 章 與 各 別 產 品 的 規 格 或 快 速 上 手 手 冊I-7000 與 I-87xxx 遠 程 I/O 參 考 第 6 章Modbus RTU Master (M-7000) 參 考 第 8 章 與 第 21 章Modbus ASCII Master 參 考 第 8 章SMS : 收 發 手 機 簡 訊 參 考 第 17 章若 更 應 用 需 要 使 用 其 它 通 訊 規 約 , 使 用 者 可 以 使 用 以 下 的 Serial COM Port 函 式 來 自 行 操 作 .( 詳 細 說 明 請 參 考 附 錄 A.4)COMOPEN 開 啟 Serial COM Port ( 不 含 Flow control 參 數 )COMOPEN2 開 啟 Serial COM Port ( 含 Flow control 參 數 , 不 適 用 I-8xx7)COMREADY 偵 測 更 無 通 訊 資 料 進 來COMARY_R 讀 取 目 前 已 經 收 進 來 的 通 訊 資 料 , 並 存 入 Byte 陣 列 內COMARY_W 寫 出 Byte 陣 列 內 的 多 個 Byte 到 某 個 COM PortCOMREAD 讀 取 一 個 Byte ( 需 先 使 用 COMREADY 偵 測 , 確 定 更 資 料 才 可 以收 )COMCLEAR 清 空 已 經 收 到 的 資 料 BufferCOMARY_NW 寫 出 1 個 長 整 數 資 料 到 COM Port, 格 式 為 Binary, 4 個 ByteCOMARY_WW 寫 出 1 個 Word 資 料 到 COM Port, 格 式 為 Binary, 2 個 ByteCOMSTR_W 寫 出 1 個 字 串 到 COM PortCOMWRITE 寫 出 1 個 Byte 到 COM PortCOMCLOSE 關 閉 Serial COM Port注 意 :1. I-8xx7 出 廠 時 , 它 的 COM1 與 COM2(I-8417/8817 才 更 COM2) 為 Modbus RTU Slave Port.其 中 COM1 可 以 關 閉 Modbus RTU Slave 功 能 , 改 成 可 以 使 用 上 表 內 的 函 式 來 自 行 操 作 ( 參考 附 錄 C.1). 若 要 使 用 I-8xx7 的 COM5 到 COM20, 需 使 用 擴 充 的 I-8112/8114/8142/8144 板 卡( 參 考 第 1.8 節 )2. W-8xx7 / 8xx6 的 COM2 / COM3 可 以 啟 動 成 為 Modbus RTU Slave Port, 若 要 自 行 使 用 , 請關 閉 該 Modbus RTU Slave 功 能 . ( 請 參 閱 它 的 包 裝 盒 內 附 的 “Getting Started:Wincon<strong>ISaGRAF</strong> PAC” 內 的 Appendix A.2). 若 要 使 用 Wincon 上 的 COM5 到 COM14 , 需 使 用 擴充 的 I-8112/8114/8142/8144 板 卡 ( 請 參 考 “Getting Started:Wincon <strong>ISaGRAF</strong> PAC” 內 的Appendix E)3. I-7188EG / 7186EG 的 COM1, 出 廠 時 內 定 為 Modbus RTU Slave 功 能 , 可 以 關 閉 該 功 能 , 改使 用 上 表 的 函 式 . ( 請 參 閱 它 的 包 裝 盒 內 附 的 “ 快 速 上 手 手 冊 ” 內 的 第 3.6 節 ). I-7188XG 的COM1 則 永 遠 支 持 Modbus RTU Slave, 無 法 關 閉 . 若 要 使 用 I-7188EG/XG, 7186EG 的 COM3到 COM8, 需 選 購 一 片 X5xx 子 板 , 拔 開 外 殼 插 在 裏 面 的 擴 充 槽 , 之 後 才 能 使 用http://www.icpdas.com/products/PAC/i-o_expansion/x_list.htm以 下 幾 節 針 對 幾 個 常 用 的 通 訊 方 式 分 別 說 明<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 24-1 <strong>ICP</strong> <strong>DAS</strong>


24.1: 主 動 對 設 備 一 問 一 答 方 式若 更 應 用 是 要 使 用 RS-232 / 422 / 485 來 取 得 其 它 設 備 的 資 料 , 且 它 的 規 約 是 一 問 一 達 方 式 ,如 下<strong>ISaGRAF</strong> 控 制 器1. 主 動 發 出 命 令 給 “ 設 備 ” 詢 問 資 料3. 判 斷 是 否 收 齊 正 確 的 答 案 , 若 是 做適 當 處 理 , 之 後 過 一 段 時 間 後 , 再 到 步驟 1 送 出 下 個 命 令 .12設 備2. 判 斷 是 否 收 到 完 整 的 詢 問 命 令 , 若是 , 回 覆 答 案 給 “<strong>ISaGRAF</strong> 控 制 器 ”4. 之 後 等 候 下 個 命 令 進 來 , 若 更 資 料傳 進 來 , 就 到 步 驟 2可 以 使 用 類 似 以 下 的 程 式 來 處 理 .本 例 先 由 “<strong>ISaGRAF</strong> 控 制 器 ” 由 COM3 送 出 一 個 字 串 „QUESTION?‟ 給 “ 設 備 ” , 之 後 就 準備 收 取 “ 設 備 ” 回 覆 的 答 案 , 之 後 就 再 過 2 秒 , 再 送 出 同 個 命 令 „QUESTION?‟ , … 如 此 重覆 進 行 .使 用 SFC 語 法 :Internal )( 本 例 Port_OK 與 TMP 宣 告 為 Boolean Internal , NUM1 宣 告 為 IntegerAction( P ) :Port_Ok := COMOPEN( 3 , 9600 , 8 , 0 ,1 ) ;End_Action ;Port_Ok ;Action( P ) :TMP := COMSTR_W( 3 ,'QUESTION?' ) ;End_Action ;GS2.T > T#250ms ;Action( P ) :NUM1 := COMARY_R( 3 , 1 ) ;IF NUM1 = 10 THEN(* . . . *)(* . . . *)END_IF ;End_Action ;若 開 啟 成 功 , 進 行 下 一 步開 啟 COM3 為 9600, 8, N,1送 出 詢 問 命 令 到 COM3命 令 格 式 跟 您 的 設 備 更 關 , 本 例只 是 採 用 „QUESTION?‟ 來 展示送 出 詢 問 命 令 後 , 要 等 一 段 時 間 讓 “ 設 備 ” 回 覆 的 答 案 的 所 更Byte 都 安 全 送 達 <strong>ISaGRAF</strong> 控 制 器 , 此 時 間 的 長 短 跟 您 的 設 備 回 覆的 快 慢 與 通 訊 Baud Rate 更 關 . 若 漏 掉 此 行 或 等 待 時 間 太 短 , 會 造成 下 一 步 的 COMARY_R 無 法 收 齊 “ 設 備 ” 該 回 覆 的 所 更 Byte數 量 .收 取 已 經 傳 進 來 的 所 更 Byte 到 1 號 陣 列 內 ,之 後 判 斷 數 量 正 不 正 確 ( 本 例 使 用 10 來 展示 )若 收 到 正 確 的 回 覆 的 Byte 數 量 , 請 在 此 區 內 開 始處 理 這 些 資 料 , 跟 您 的 應 用 更 關 , 本 例 這 邊 省 略GS3.T > T#2s ;之 後 2 秒 之 後 , 再 回 到 步 驟 2 送 出 下 一 個 詢 問命 令<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 24-2 <strong>ICP</strong> <strong>DAS</strong>


24.2: 被 動 等 待 設 備 傳 資 料 過 來 方 式此 種 方 式 在 一 般 的 商 場 或 便 利 商 店 很 常 見 , 比 如 像 條 碼 閱 讀 機 這 種 設 備 , 當 讀 到 商 品 的 條 碼 後 ,它 會 傳 送 條 碼 資 料 到 <strong>ISaGRAF</strong> 控 制 器 的 COM Port (RS-232 / 422 / 485), 而 且 不 需 要<strong>ISaGRAF</strong> 控 制 器 回 覆 任 何 訊 息 給 它 . ( 請 參 訪 www.icpdas.com – FAQ - Software_<strong>ISaGRAF</strong>- 066 來 取 得 更 多 的 說 明 與 範 例 程 式 )<strong>ISaGRAF</strong> 控 制 器2. 收 到 設 備 傳 來 的 完 整 資 料 後 , 進 行 處 理 .3. 做 完 適 當 處 理 後 , 等 待 下 次 資 料 傳 來 .1設 備1. 當 事 件 發 生 後 傳 送 資 料 給 控 制 器使 用 ST 語 法 :IF INIT THENINIT := FALSE ;Port_Ok := COMOPEN( 3 , 9600 , 8 , 0 , 1 ) ;T1 := T#0s ;STEP := 0 ;END_IF ;IF Port_Ok = False THENReturn ;END_IF ;CASE STEP OF0 : IF COMREADY(3) THENSTEP := 1 ;T1 := T#0s ;Tstart(T1) ;END_IF ;1 : IF T1 > T#250ms THENTstop(T1) ;T1 := T#0s ;STEP := 0 ;NUM1 := COMARY_R(3, 1) ;IF NUM1=10 THEN(* … *)END_IF ;END_IF ;END_CASE ;本 例 請 宣 告 :INIT 為 Boolean Internal, 設 初 值 為 TRUEPort_Ok 與 TMP 為 Boolean InternalT1 為 Timer Internal ( 計 時 器 )STEP 與 NUM1 為 Integer Internal開 啟 COM3 為 9600, 8, N,1若 開 啟 失 敗 , 以 下 的 Code 也 不 用 做 了 , 直 接 跳 出 本 ST 程 式STEP 為 0 表 示 等 待 中 , 要 去 檢 查 是 否 更 資 料 傳 到COM3若 COMREADY 回 傳 TRUE, 表 示 至 少 更 1 個 byte 傳進 來 , 則 將 STEP 設 成 1, 並 開 始 啟 用 T1 計 時 器 來 計時 .STEP 為 1 表 示 資 料 正 在 傳 進 來 , 要 等 T1 計 時 到一 段 時 間 過 後 , 再 用 COMARY_R 去 收 所 更 Byte到 1 號 Byte 陣 列 內 ( 這 樣 才 能 確 保 “ 設 備 ” 傳 過來 的 所 更 Byte 數 量 都 已 經 傳 送 過 來 了 ). 此 等待 時 間 跟 ” 設 備 ” 的 規 格 與 Baud Rate 更 關 , 本 例使 用 0.25 秒 來 展 示 . ( 若 設 的 太 短 更 可 能 會 造 成 更些 Byte 還 沒 傳 送 過 來 而 漏 掉 它 們 ). 要 記 得 將STEP 設 回 0 來 等 待 下 次 資 料 再 傳 進 來 .收 到 資 料 後 , 判 斷 資 料 對 不 對 , 再 做 適 當 處 理 .本 例 只 判 斷 Byte 數 量 是 否 為 10 個 . 實 際 的 情 況 需 依 造 您 的 應用 來 修 改 . ( 本 展 示 例 省 略 “ 適 當 處 理 ” 的 Code )<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 24-3 <strong>ICP</strong> <strong>DAS</strong>


24.3: 每 隔 一 段 時 間 主 動 回 報 資 料 方 式若 是 要 每 隔 一 段 時 間 就 將 回 報 資 料 , 使 用 RS-232 / 422 / 485 COM Port 傳 到 其 它 設 備 或 PC, 如 下<strong>ISaGRAF</strong> 控 制 器每 隔 一 段 時 間 ( 比 如 5 秒 ), 將 要 傳 出的 資 料 準 備 好 到 Byte 陣 列 內 , 然 後使 用 COMARY_W 傳 出 去 .設 備判 斷 是 否 收 到 完 整 且 正 確 的 資料 , 然 後 做 適 當 處 理. . .則 可 以 使 用 類 似 以 下 的 程 式 來 處 理 .使 用 SFC 語 法 : ( 本 例 請 宣 告 TMP 為 Boolean Internal , Port_Ok 為 Integer Internal)Action( P ) :Port_Ok := COMOPEN( 3 , 9600 , 8 , 0 , 1 ) ;End_Action ;開 啟 COM3 為 9600, 8, N, 1Port_Ok ;開 啟 成 功 則 到 下 一 步 驟Action( P ) :(* 準 備 好 要 傳 送 的 Byte 到 Byte 陣 列 1 號 內 *)(* … *)這 些 要 傳 出 去 的 資 料 跟 您的 應 用 更 關 , 請 先 準 備 好再 用 COMARY_W 或COMSTR_W 來 傳 出 去TMP := COMARY_W( 3 , 1 , 20 ) ;End_Action ;GS2.T > T#5s ;5 秒 後 先 跳 到 一 個 空 的 步 驟 3, 之 後 再 回到 步 驟 2 傳 出 下 一 筆 資 料( 因 為 SFC 語 法 不 能 在 一 個 步 驟 做 完 , 之 後沒 更 經 過 其 它 任 何 步 驟 , 又 跳 回 同 一 個 步驟 , 像 本 例 , 若 沒 更 加 上 步 驟 3, 會 造 成 步驟 2 做 完 之 後 , 又 回 到 步 驟 2, 這 樣 結 果 會更 錯 , 雖 然 它 Compile 時 沒 錯 .)可 以 使 用 COMARY_W 來傳 出 1 到 255 個 Byte或 COMSTR_W 來 傳 出 字 串( 字 串 最 長 255 個 Byte) , 字 串內 的 Byte 不 能 更 0. ( 因 為 0表 示 字 串 結 尾 , 但 可 以 是 字元 „0‟ ). 本 例 是 傳 出 1 號Byte 陣 列 內 的 20 個 Byte 來展 示 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 24-4 <strong>ICP</strong> <strong>DAS</strong>


24.4: 更 事 件 發 生 時 主 動 回 報 資 料 方 式請 參 考 第 11.3.5 節 的 說 明 .<strong>ISaGRAF</strong> 進 階 使 用 手 冊 , Sep.2011, Ver 4.0 24-5 <strong>ICP</strong> <strong>DAS</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!