第 5 章 : 應 用 指 令 說 明 5.1 應 用 指 令 之 通 則 FBs 系 列 PLC 之 應 用 指 令 可 分 為 輸 入 控 制 指 令 號 碼 名 稱 運 算 元 及 功 能 輸 出 四 部 分 而 各 指 令 之 輸 入 控 制 運 算 元 及 功 能 輸 出 之 數 目 不 盡 相 同 ( 請 參 閱 各 指 令 說 明 ) 在 FP-08 程 式 書 寫 器 上 除 常 用 之 T C SET RST 四 指 令 及 SFC 指 令 有 對 應 之 專 用 按 鍵, 可 直 接 按 鍵 輸 入 外, 其 他 之 應 用 指 令 均 需 以 指 令 號 碼 輸 入, 不 能 以 指 令 名 稱 輸 入 如 下 例 : 例 1: 單 輸 入 指 令 階 梯 圖 FP-08 簡 碼 指 令 15 Operation 運 算 control 控 制 EN (+1) R 0 CY Carry(FO0) 進 位 FUN 15 D : R 0 例 2: 多 輸 入 指 令 計 數 脈 Clock 波 Up/Down 上 / 下 count 數 7.UDCTR PSU CV : R 0 CUP Count-Up(FO0) 計 數 到 (FO0) FUN 7 CV: R 0 U/D PV : 10 PV: 10 Clear 清 除 control 控 制 CLR 註 : 在 本 手 冊 之 簡 碼 指 令 欄 位 中, 凡 有 實 線 方 框 框 住 之 字 樣 ( 如 上 例 D: CV: Pr: 等 ) 係 FP-08 為 方 便 您 輸 入 而 自 動 顯 示 之 運 算 元 名 稱 導 引 字, 非 使 用 者 所 鍵 入 者 5.1.1 輸 入 控 制 FBs-PLC 除 7 個 無 輸 入 控 制 之 應 用 指 令 外, 其 他 應 用 指 令 至 少 有 一 個 輸 入 控 制, 最 多 為 四 個 應 用 指 令 係 依 輸 入 控 制 信 號 之 組 合 以 決 定 該 指 令 是 否 執 行, 以 及 執 行 何 種 運 算 在 PRO-LADDER 套 裝 軟 體 上 及 階 梯 圖 程 式 印 出 時, 所 有 之 應 用 指 令 符 號 之 輸 入 控 制 及 功 能 輸 出 端 子 上 均 有 加 註 英 文 註 解 簡 寫, 以 註 明 該 端 子 是 何 種 功 能 控 制 或 輸 出, 以 利 於 記 憶 和 閱 讀, 如 上 圖 例 2 第 一 個 輸 入 標 註 PLS, 表 示 計 數 脈 波 Pulse 由 0 1( 升 緣 ) 時, 該 計 數 器 才 計 數 一 次, 第 二 個 輸 入 標 註 U/D 斜 線 上 方 U 表 上 數 Up, 下 方 D 表 示 下 數 Down, 若 此 輸 入 為 1 則 當 計 數 脈 波 PLS 來 時, 該 計 數 器 值 會 加 1, 反 之 若 為 0 則 減 1, 第 三 個 輸 入 標 示 CLR, 表 示 清 除 Clear, 即 當 此 輸 入 為 1 時, 該 計 數 器 之 計 數 值 會 被 清 為 0 其 他 應 用 指 令 之 輸 入 控 制 註 解 請 參 閱 各 指 令 說 明 註 : 無 輸 入 控 制 指 令 係 指 該 指 令 需 直 接 接 於 母 線, 不 能 串 接 輸 入 控 制 元 件, 亦 無 功 能 輸 出 該 指 令 本 身 單 獨 形 成 一 個 網 路 有 MCE SKPE LBL RTS RTI FOR NEXT 等 7 個 無 輸 入 控 制 指 令, 請 參 閱 第 6 及 7 章 各 該 指 令 之 說 明 5-1
所 有 應 用 指 令 之 各 輸 入 控 制 均 應 有 元 件 連 接, 否 則 會 出 現 語 法 錯 誤 如 下 圖 例 3, FUN7 為 三 輸 入 之 應 用 指 令, 在 FUN7 指 令 前 面 之 三 個 元 件 (ORG X0, LD X1, LD X2) 分 別 對 應 到 FUN7 之 第 一 個 輸 入 PLS, 第 二 個 輸 入 U/D 和 第 三 個 輸 入 CLR 例 3: 階 梯 圖 FP-08 簡 碼 指 令 X0 X1 X2 PSU U/D CLR 7.UDCTR CV : PV : R 0 10 CUP ORG X 0 LD X 1 LD X 2 FUN 7 CV : R 0 PV : 10 FUN7 有 3 個 輸 入, 故 其 前 需 有 3 個 元 件 5.1.2 指 令 號 碼 與 衍 生 指 令 FP-08 除 前 述 9 個 指 令 以 專 用 按 鍵 輸 入 外, 其 他 之 應 用 指 令 均 需 以 指 令 號 碼 來 輸 入, 在 指 令 號 碼 後, 尚 可 加 上 D P 或 D P 等 尾 碼, 而 衍 生 出 另 外 三 種 不 同 之 指 令, 茲 敘 述 如 下 : D: 表 示 Double Word, 雙 字 元 組 ( 32 位 元 ) 之 意 在 FBs-PLC 中 之 暫 存 器 均 以 字 元 組 WORD ( 16 位 元 ) 為 基 本 單 位, 即 所 有 R T C 暫 存 器 (C200~ C255 除 外 ) 均 為 16 位 元 長 度, 例 如 R0 R1 T0... 等 若 需 32 位 元 長 度 之 暫 存 器, 則 必 須 由 兩 個 連 續 之 16 位 元 暫 存 器 合 併 起 來 而 形 成 如 R1-R0 R3-R2... 等, 針 對 這 種 連 續 兩 個 16 位 元 暫 存 器 組 成 之 雙 字 元 組 暫 存 器, 我 們 以 該 雙 字 元 組 暫 存 器 之 低 階 暫 存 器 號 碼 ( 如 R1-R0 取 R0, R3-R2 取 R2) 加 上 D 表 示 之 ( 如 DR0 表 示 R1-R0, DR2 表 示 R3-R2), 例 如 您 在 監 視 模 式 (MON) 下 鍵 入 如 下 之 DR0 或 DWY8, 將 會 顯 示 32 位 元 ( R1-R0, 或 WY24-WY8) 長 度 之 數 值 B31 B16 B15 B0 DR0 =R1 R0 R1 R0 高 階 Word 暫 存 器 低 階 Word 暫 存 器 B31 B16 B15 B0 DWY8 =WY24 WY8 WY24 WY8 =Y39~ Y8 高 階 Word 暫 存 器 低 階 Word 暫 存 器 5-2
註 : 在 階 梯 圖 或 簡 碼 指 令 之 表 示, 為 方 便 區 別 16 位 元 或 32 位 元 指 令, 我 們 在 指 令 號 碼 後 面 加 D 尾 碼 以 表 示 32 位 元 指 令, 其 來 源 或 目 的 運 算 元 的 長 度 當 然 也 是 32 位 元 但 在 運 算 元 ( 如 S,D...) 欄 上 只 標 示 Double Word 之 低 階 暫 存 器 號 碼, 如 6-6 頁 例 4 中 被 加 數 Sa: R0 因 該 指 令 FUN11D, 有 D 尾 碼, 故 所 有 來 源 或 目 的 運 算 元 均 無 冠 上 D 字, 亦 即 Sa 為 DR0=R1-R0, Sb 為 DR2=R3-R2... 但 非 來 源 或 目 的 運 算 元 如 指 標 Pr, 數 值 N, 長 度 L... 等 則 無 論 D 或 非 D 指 令 均 固 定 只 有 16 位 元 長 度, 請 特 別 注 意 在 16 位 元 指 令 因 其 運 算 元 長 度 只 有 一 個 Word, 也 正 是 運 算 元 欄 上 所 標 示 之 暫 存 器 號 碼, 如 例 1 中 之 D=R0 P: 表 示 Pulse( 脈 沖 ) 模 式 運 作, 也 就 是 每 當 輸 入 控 制 由 0 1 瞬 間 ( 升 緣 ) 該 指 令 即 執 行 一 次, 如 上 圖 例 1 若 指 令 號 碼 加 上 P 碼 ( 即 FUN 15P), 則 只 有 在 輸 入 控 制 信 號 之 升 緣 (0 1) 時 FUN15P 才 執 行 一 次 若 指 令 號 碼 後 無 P 尾 碼, 則 為 連 續 執 行 模 式, 即 只 輸 入 控 制 為 1, PLC 每 次 掃 描 到 該 指 令 均 會 執 行 一 次, 一 直 至 輸 入 控 制 變 為 0 為 止 在 本 手 冊 之 應 用 指 令 說 明 中 之 輸 入 敘 述 有 如 下 之 敘 述 例 : 當 運 算 控 制 EN =1 或 由 0 1( P 指 令 ) 時,... 前 者 即 表 非 P 指 令 ( 連 續 模 式 ) 之 執 行 條 件, 後 者 即 為 P 指 令 ( 脈 沖 模 式 ) 之 執 行 條 件 下 列 波 形 圖 為 上 節 範 例 1( FUN15) 工 作 在 P 模 式 和 非 P 模 式 下 其 執 行 結 果 (R0) 之 比 較 t 為 掃 描 時 間 t t t t t t t t t t 輸 入 控 制 1 FUN15P 之 執 行 2 (R0 起 始 值 為 0) 0001H 0002H FUN15 之 執 行 3 (R0 起 始 值 為 0) 0001H 0002H 0003H 0004H 0005H 0006H D P: 表 該 指 令 為 32 位 元 指 令, 且 為 脈 沖 模 式 運 作 註 : 實 際 控 制 應 用 上 大 部 分 之 應 用 指 令 都 可 使 用 P 指 令, 在 程 式 設 計 時 請 儘 可 能 使 用 P 指 令, 以 節 省 程 式 執 行 時 間 5.1.3 運 算 元 運 算 元 為 指 令 運 算 時 之 參 考 或 寫 入 之 對 象 可 分 為 只 供 參 考, 內 容 不 會 因 指 令 運 算 而 改 變 之 來 源 運 算 元 (Source, 簡 稱 S) 及 用 來 儲 存 運 算 結 果 之 目 的 運 算 元 (Destination 簡 稱 D) 兩 大 類 以 下 就 FBs 系 列 PLC 應 用 指 令 中, 主 要 之 運 算 元 名 稱 及 性 質 作 說 明, 並 將 可 當 運 算 元 之 接 點 線 圈 或 暫 存 器 之 類 別 範 圍 分 述 如 下 : 5-3
主 要 運 算 元 名 稱 及 性 質 : 簡 寫 名 稱 說 明 S D L N Pr 來 源 運 算 元 (Source) 目 的 運 算 元 (Destination) 長 度 (Length) 數 值 (Number) 指 標 (Point) S 為 指 令 運 算 中 之 資 料 讀 取 參 考 的 對 象, 其 內 容 不 會 因 運 算 而 改 變, 若 不 只 一 個 以 上, 則 以 註 腳 區 分, 如 Sa Sb 用 以 存 放 指 令 運 算 結 果 之 區 域, 其 原 始 資 料 在 運 算 後 會 破 壞, 只 有 能 寫 入 之 線 圈 或 暫 存 器 才 能 當 目 的 運 算 元 用 以 表 示 一 連 串 資 料 或 列 表 (Table) 之 長 度 ( 範 圍 ), 可 為 常 數 或 變 數 用 以 指 定 次 數, 個 數 ( 如 第 N 個 位 元 ) 等 之 固 定 數 字, 若 不 只 一 個, 則 以 註 腳 區 分 如 Na Nb Ns Nd 等 用 以 指 定 一 串 資 料 或 列 表 中 之 某 個 資 料 或 暫 存 器, 通 常 Pr 值 為 可 變, 故 不 能 為 常 數 或 輸 入 暫 存 器 CV 現 在 值 用 於 T C 中, 只 能 為 可 寫 入 之 暫 存 器 PV 設 定 值 用 於 T C 中, 只 供 參 考 比 較 用 T M 列 表 (Table) 矩 陣 (Matrix) 列 表 是 一 連 續 暫 存 器 組 合 之 稱, 其 運 作 單 位 係 以 字 元 組 或 雙 字 元 組 為 單 位, 若 不 只 一 個, 則 以 註 腳 區 分, 如 Ta Tb Ts Td 等 矩 陣 亦 是 一 連 續 暫 存 器 組 合 之 稱, 但 是 其 運 作 單 位 是 以 位 元 為 單 位 若 不 只 一 個 則 以 Ms Md Ma Mb 等 表 示 除 上 述 主 要 運 算 元 外, 尚 有 用 以 指 定 特 定 用 途 之 運 算 元, 如 Fr 表 頻 率 ST 表 堆 疊 QU 表 示 QUEUE... 等, 請 參 閱 各 指 令 之 說 明 運 算 元 類 別 與 範 圍 : 應 用 指 令 之 運 算 元 類 別 有 a. 單 點 ( 數 位 ) b. 暫 存 器 c. 常 數 三 種 a. 單 點 ( 數 位 ) 運 算 元 : 在 應 用 指 令 中, 有 單 點 運 算 元 者 ( 即 其 運 算 元 只 影 響 某 一 單 點 者 ) 僅 有 SET RST DIFU DIFD TOGG 五 個 指 令, 而 且 只 能 對 Y ( 外 部 輸 出 ) M ( 內 部 及 特 殊 ) S ( 步 進 ) 三 類 型 之 繼 電 器 運 作 下 表 為 可 當 此 五 指 令 之 單 點 運 算 元 之 種 類 及 範 圍, 細 部 解 釋 請 參 閱 此 五 指 令 之 說 明 運 算 元 範 圍 Y0 Y255 Y M SM S 符 號 表 D 可 用 該 類 別 之 線 圈 當 運 算 M0 M1911 M1912 M2001 S0 S999 D * 元 在 SM 欄 位 中 上 方 標 有 * 符 號, 表 示 在 SM 中 禁 止 寫 入 之 特 殊 繼 電 器 不 得 當 作 D 運 算 元, 請 參 考 2-3 頁 特 殊 繼 電 器 明 細 b. 暫 存 器 運 算 元 : 應 用 指 令 中 之 運 算 元 主 要 為 暫 存 器 運 算 元 暫 存 器 運 算 元 又 分 為 兩 類, 一 為 原 本 就 以 Word 或 2 Words 為 單 位 之 暫 存 器 (R T C) 另 一 則 為 由 16 或 32 個 單 點 (X Y M S) 組 成 Word 或 2 Words 之 暫 存 器 (WX WY WM WS) 下 表 為 在 本 手 冊 中 用 以 表 示 各 指 令 之 運 算 元 所 能 容 許 之 暫 存 器 類 別 及 其 範 圍 之 範 例 : 5-4
運 算 元 範 圍 WX WY WM WS TMR CTR HR IR OR SR ROR DR K XR WX0 WX240 WY0 WY240 WM0 WM1896 WS0 WS984 T0 T255 C0 C255 R0 R3839 R3840 R3903 R3904 R3967 R3968 R4167 R5000 R8071 D0 D4095 16 或 32 位 元 正 負 數 S * D * * 符 號 表 示 可 以 以 該 類 別 之 暫 存 器 當 運 算 元 在 SR 和 D 交 會 之 欄 位 中, 符 號 上 方 標 有 * 符 號, 表 示 D 運 算 元 若 為 特 殊 暫 存 器 SR 時, 應 扣 除 不 可 寫 入 之 暫 存 器, 請 參 閱 2-7 頁 特 殊 暫 存 器 明 細 R5000~ R8071 不 是 規 劃 為 唯 讀 暫 存 器 時, 可 當 一 般 暫 存 器 使 用 ( 可 讀 寫 ) V,Z P0~P9 註 1: 凡 有 W 開 頭 之 暫 存 器 (WX WY WM WS) 表 示 此 暫 存 器 係 由 16 個 單 點 組 成 Word 之 暫 存 器 例 如 WX0 表 示 由 X0( 位 元 0)~X15( 位 元 15) 組 成 之 暫 存 器,WY144 表 示 由 Y144( 位 元 0)~Y159( 位 元 15) 所 組 成 之 暫 存 器 但 注 意 單 點 之 號 碼 必 須 為 8 之 倍 數 ( 如 0 8 16 24... 等 ) 才 允 許 註 2: 表 中 最 後 一 個 暫 存 器 (Word), 不 能 當 32 位 元 運 算 元, 因 32 位 元 運 算 元 需 有 連 續 兩 個 Word 的 長 度 才 行 註 3: TMR( T0~ T255) 和 CTR( C0~ C255) 為 計 時 器 和 計 數 器 專 用 之 暫 存 器, 雖 亦 可 當 一 般 暫 存 器 使 用, 但 會 造 成 系 統 複 雜, 除 錯 困 難, 因 此 除 T 或 C 指 令 外, 其 他 指 令 應 避 免 寫 入 TMR 或 CTR 註 4:T0~ T255 和 C0~ C199 均 為 16 位 元 長 度, 而 C200~ C255 限 定 為 32 位 元 長 度, 故 不 能 當 16 位 元 運 算 元 註 5: 暫 存 器 運 算 元 除 如 上 述 直 接 以 暫 存 器 號 碼 ( 位 址 ) 來 指 定 外, 對 於 R0~ R8071 範 圍 內 之 暫 存 器 運 算 元 尚 可 結 合 指 標 暫 存 器 V Z 或 P0~P9 來 作 間 接 定 址 指 定 利 用 指 標 暫 存 器 (XR) 作 間 接 定 址 之 說 明 請 參 考 下 節 (5.2 節 ) 之 範 例 c. 常 數 運 算 元 : 在 16 位 元 中 之 常 數 範 圍 最 大 為 32768~ 32767, 32 位 元 之 範 圍 為 2147483648 ~ 2147483647, 而 某 些 指 令 只 能 為 正 常 數, 因 此 我 們 以 下 列 敘 述 表 示 16 或 32 位 元 之 常 數 範 圍 常 數 類 別 範 圍 16 位 元 正 負 數 -32768~ 32767 16 位 元 正 數 0~ 32767 32 位 元 正 負 數 -2147483648~ 2147483647 32 位 元 正 數 0~ 2147483647 16/ 32 位 元 正 負 數 16/ 32 位 元 正 數 -32768~ 32767 或 -2147483648~ 2147483647 0~ 32767 或 0~ 2147483647 此 外 有 某 些 特 定 之 運 算 元 長 度 大 小 不 一 ( 如 長 度 L 位 元 數... N 等 ) 將 於 各 該 運 算 元 之 欄 位 上 直 接 標 示 範 圍, 請 參 考 個 別 之 指 令 說 明 5-5
5.1.4 功 能 輸 出 (FO) 簡 稱 FO(Function Output) 為 應 用 指 令 運 算 結 果 或 狀 態 之 輸 出, 如 同 輸 入 控 制 一 樣 在 WinProladder 及 程 式 印 出 之 階 梯 圖 應 用 指 令 上, 其 功 能 輸 出 上 亦 有 英 文 註 解 說 明 該 FO 為 何 種 功 能, 如 上 圖 例 1 之 CY, 例 2 例 3 之 CUP 及 下 圖 例 4 之 D=0 CY BR 均 是 功 能 輸 出 FO 最 多 只 有 4 個 ( 即 FO0~ FO3), 其 編 號 順 序 是 由 上 而 下, 第 一 個 FO 為 FO0, 第 二 個 為 FO1, 最 後 一 個 為 FO3 FO 狀 態 之 取 出 必 須 用 FO 指 令 ( 在 FP-08 程 式 書 寫 器 上 有 FO 專 用 按 鍵 ), 不 使 用 之 功 能 輸 出 可 空 著 不 接 任 何 元 件, 如 下 圖 例 4 之 FO1(CY) 即 是 例 4: 階 梯 圖 簡 碼 指 令 X0 11D.(+) EN Sa : Sb : R R 0 2 D=0 U/S D : R 4 CY BR Y0 Y1 ORG X 0 FUN 11D Sa: R 0 Sb: R 2 D : R 4 FO 0 OUT Y 0 FO 2 OUT Y 1 當 M1919=0 時,FO 狀 態 只 有 在 該 指 令 被 執 行 時 才 會 更 新, 然 後 就 一 直 保 持 至 該 指 令 下 一 次 被 執 行 時 ( 記 憶 保 持 ), 始 由 新 產 出 之 FO 狀 態 所 更 新 當 M1919=1 時, 應 用 指 令 不 執 行 時, FO 狀 態 清 除 為 0( 無 記 憶 保 持 ) 5.2 利 用 指 標 暫 存 器 (XR) 作 間 接 定 址 在 FBs-PLC 應 用 指 令 中, 有 些 運 算 元 可 以 結 合 指 標 暫 存 器 (V 或 Z) 而 作 間 接 定 址 之 指 定 ( 在 每 個 指 令 說 明 欄 之 運 算 元 敘 述 中 會 註 明 ) 但 能 夠 結 合 指 標 暫 存 器 作 間 接 位 址 指 定 之 運 算 元 只 限 定 為 R0~ R8071 範 圍 內 之 暫 存 器 ( 其 他 運 算 元 如 單 點 常 數 D0~ D3071 等 均 不 能 作 間 接 位 址 指 定 ) 指 標 暫 存 器 XR 共 有 12 個 (V Z P0~P9), 實 際 上 在 FBs-PLC 之 V 暫 存 器 就 是 特 殊 暫 存 器 (R3840~ R4167) 中 之 R4164, 而 Z 暫 存 器 則 為 R4165 運 算 元 結 合 指 標 暫 存 器 作 間 接 定 址 之 表 示 方 式 是 原 運 算 元 後 緊 接 V 或 Z 來 表 示 : 原 始 運 算 元 指 標 暫 存 器 實 際 運 算 元 R100 V ( 若 V=50) = R150 100 + 50 ( 若 V=100) = R200 5-6
如 上 圖 示, 只 要 變 更 V 之 值 即 可 變 更 運 算 元 之 位 址, 利 用 此 功 能 結 合 FBs-PLC 之 應 用 指 令, 您 可 以 極 簡 易 之 指 令, 達 成 功 能 強 大 極 具 效 率 之 控 制 應 用, 如 下 圖 程 式 例, 您 只 須 以 一 個 區 塊 搬 移 指 令 (BT_M) 即 達 成 諸 如 停 車 管 理 系 統 之 動 態 區 塊 資 料 顯 示 指 標 暫 存 器 P0~P9 應 用 說 明 : 在 間 接 定 址 應 用 中,RXXXX 暫 存 器 可 以 結 合 指 標 暫 存 器 V Z 和 P0~ P9 作 間 接 定 址 應 用 ;DXXXX 暫 存 器 不 可 以 結 合 指 標 暫 存 器 V Z 作 間 接 定 址 應 用, 但 可 以 結 合 P0~ P9 作 間 接 定 址 應 用 當 RXXXX 暫 存 器 要 結 合 V Z 作 間 接 定 址 應 用 時, 例 如 R0 要 結 合 V Z 做 間 接 定 址 應 用, 則 所 輸 入 之 格 式 為 R0V( 當 V=100 時, 則 指 向 R100) 或 R0Z( 當 Z=500 時, 則 指 向 R500); 而 欲 結 合 P0~ P9 作 間 接 定 址 應 用 時, 則 所 輸 入 之 格 式 為 RPn (n 為 0~ 9) 或 為 RPmPn (m,n 為 0~ 9), 例 如 RP5 ( 若 P5 內 容 為 100, 則 指 向 R100) 或 RP0P1( 若 P0 內 容 為 100, P1 內 容 為 50, 則 指 向 R150) 當 DXXXX 暫 存 器 要 結 合 P0~ P9 作 間 接 定 址 應 用 時, 則 所 輸 入 之 格 式 為 DPn (n 為 0 ~ 9) 或 為 DPmPn (m,n 為 0~ 9), 例 如 DP3 ( 若 P3 內 容 為 10, 則 指 向 D10) 或 DP4P5( 若 P4 內 容 為 100, P5 內 容 為 1, 則 指 向 D101) P0~ P9 指 標 暫 存 器 可 同 時 結 合 運 用, 例 如 P2=20 P3=30, 當 RXXXX 或 DXXXX 暫 存 器 一 次 結 合 兩 個 指 標 暫 存 器 時,RP2P3 就 會 指 向 R50, DP2P3 就 會 指 向 D50; 也 就 是 說 兩 個 指 標 值 之 間 的 關 係 是 相 加 的 M1924 EN 08.MOV S : 100 D : P2 1. 開 機 時 M1924 起 始 脈 波 將 100 搬 入 指 標 暫 存 器 P2 X23 X23 EN 103P.BT_M Ts : RP2 Td : R2000 L : 4 11P.(+) 2. 當 X23 由 0 1 時,Fun103 將 由 R100( 因 為 P2=100) 開 始, 一 次 4 個 暫 存 器 的 長 度, 依 序 搬 到 R2000 也 就 是 說 第 一 次 將 R100~R103 搬 到 R2000~R2003, 第 二 次 將 R104~R107 搬 到 R2000~R2003, 第 三 次 將 R108~R111 搬 到 R2000~R2003 依 此 類 推 EN U/S Sa : 4 Sb : P2 D : P2 D=0 CY 3. Fun11 用 來 將 指 標 每 次 增 加 4 個 word 用, 亦 即 X23 每 ON 一 次,P2 之 指 標 值 便 加 上 4 BR 5-7
間 接 定 位 程 式 範 例 : 階 梯 圖 簡 碼 指 令 EN 103.BT_M Ts : R100 V Td : R2000 L : 4 ORG SHORT FUN 103 Ts: R100V Td: R2000 L: 4 (V=0) 住 戶 1 (V=4) 住 戶 2 (V=396) 住 戶 100 PLC 內 部 預 存 之 住 戶 資 料 指 標 暫 存 器 V 住 戶 2 R100 姓 名 4 感 應 站 R101 樓 層 門 號 R102 電 話 號 碼 R103 車 牌 號 碼 R104 姓 名 R105 樓 層 門 號 R106 電 話 號 碼 R107 車 牌 號 碼 終 端 顯 示 器 顯 示 暫 存 區 社 區 住 戶 停 車 系 統 R2000 姓 名 R2001 樓 層 號 碼 住 戶 姓 名 : (R2000) 姓 名 R2002 電 話 號 碼 電 話 號 碼 : (R2001) 樓 層 號 碼 R2003 車 牌 號 碼 車 牌 號 碼 : (R2002) 電 話 號 碼 車 位 號 碼 : (R2003) Rnnn 車 牌 號 碼 程 式 說 明 : 上 例 假 設 某 社 區 住 戶 之 自 動 化 停 車 場 管 理 系 統, 共 有 100 個 住 戶 停 車 位, 每 個 住 戶 均 有 1 組 基 本 資 料, 分 別 為 住 戶 姓 名, 電 話 號 碼, 車 牌 號 碼, 停 車 位 號 碼 等 4 個, 每 組 資 料 如 上 圖 示 佔 用 連 續 4 個 PLC 內 部 暫 存 器, 共 佔 用 R100~ R499 等 400 個 暫 存 器, 每 個 住 戶 均 有 一 不 同 卡 號 之 卡 片, 以 供 進 出 口 門 禁 及 停 車 場 進 出 之 感 應 通 行 使 用, 其 卡 號 為 0, 4,, 396 等 100 種, 在 PLC 感 應 到 卡 號 後, 將 之 存 入 指 標 暫 存 器 V, 而 在 管 理 員 處 之 終 端 機 (LCD 或 CRT) 顯 示 資 料 則 固 定 由 PLC 內 部 之 R2001~ R2003 來 抓 取 並 顯 示, 如 本 例 感 應 到 住 戶 2 之 卡 片, 其 值 =4, 因 此 V 暫 存 器 =4, PLC 立 即 將 R104~ R107 之 資 料 搬 移 至 顯 示 暫 存 區 (R2000~ R2003), 因 此 管 理 員 處 之 終 端 機 可 在 感 應 到 住 戶 2 之 卡 片 之 同 時, 立 即 將 其 資 料 顯 示 在 終 端 機 上 5-8
警 告 1. 運 用 指 標 暫 存 器 作 間 接 定 址 之 應 用 雖 然 功 能 強 大 彈 性 方 便, 但 相 對 地 V Z 內 容 值 之 任 意 變 化 可 能 對 正 常 資 料 區 之 錯 誤 寫 入 有 著 極 大 之 殺 傷 力, 因 此 使 用 者 在 使 用 時 應 特 別 小 心 2. 在 間 接 定 址 所 能 定 址 之 資 料 暫 存 器 (R0~ R8071) 範 圍 中, 暫 存 器 R3840 ~ R4167 等 之 328 個 暫 存 器 ( 即 IR, OR, SR) 為 系 統 或 I/O 用 之 重 要 暫 存 器, 任 意 對 此 等 暫 存 器 之 寫 入, 將 可 能 使 系 統 或 I/O 錯 誤, 造 成 重 大 之 災 害 鑑 於 V Z 值 對 暫 存 器 位 址 變 化 之 靈 活 變 化, 使 用 者 可 能 不 易 察 覺 或 掌 握, 因 此 FBs-PLC 對 間 接 定 址 之 寫 入 動 作 會 自 動 檢 查 寫 入 目 的 ( Destination) 是 否 在 上 述 之 R3840~ R4067 範 圍 內, 若 是 則 不 執 行 該 寫 入 動 作, 並 將 間 接 定 址 不 合 法 寫 入 旗 標 M1969 設 為 1 若 應 用 上 確 實 需 要 對 R3840~ R4067 之 暫 存 器 作 寫 入, 請 使 用 非 間 接 定 址 之 指 令 來 執 行 5.3 數 目 系 統 5.3.1 二 進 制 數 值 及 其 術 語 二 進 制 (Binary) 為 數 位 計 算 機 之 基 本 數 目 系 統,PLC 是 由 數 位 計 算 機 所 構 成, 自 然 亦 採 用 二 進 制, 為 便 於 表 示 及 掌 握 二 進 數 值, 首 先 需 了 解 如 下 之 術 語 : 位 元 :( Bit 簡 寫 B, 如 B0,B1... ) 位 元 為 二 進 制 數 值 之 最 基 本 單 位, 其 狀 態 非 1 即 0 位 數 :( Nibble 簡 寫 NB, 如 NB0,NB1... ) 由 連 續 的 4 個 位 元 所 組 成 ( 如 B3~ B0) 可 用 以 表 示 一 個 位 數 之 10 進 制 數 字 0~ 9 或 16 進 制 之 0~ F 位 元 組 :( Byte 簡 寫 BY, 如 BY0, BY1,... ) 是 由 連 續 之 兩 個 位 數 所 組 成 ( 亦 即 8 個 位 元, 例 如 B7~ B0) 可 表 示 16 進 制 之 兩 個 位 數 值 00~ FF 字 元 組 :( Word 簡 寫 W, 如 W0,W1,... ) 是 由 連 續 之 兩 個 位 元 所 組 成 ( 亦 即 16 個 位 元 例 如 B15~ B0) 可 表 示 16 進 制 之 4 個 位 數 值 0000~ FFFF 雙 字 元 組 :( Double word 簡 寫 DW, 如 DW0, DW1... ) 是 由 連 續 之 兩 個 字 位 元 組 所 組 成 ( 亦 即 32 個 位 元, 例 如 B31~ B0) 可 表 示 16 進 制 之 8 個 位 數 值 00000000~ FFFFFFFF DW 雙 字 元 組 W1 W0 字 元 組 BY3 BY2 BY1 BY0 位 元 組 NB7 NB6 NB5 NB4 NB3 NB2 NB1 NB0 位 數 B31 B30 B29 B28 B27 B26 B25 B24 B23 B22 B21 B20 B19 B18 B17 B16 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 位 元 浮 點 數 :( Floating Point Number) 也 是 由 連 續 之 兩 個 字 位 元 組 所 組 成 浮 點 數 所 能 表 示 的 最 大 範 圍 為 ±(1.8*10-38 ~ 3.4*10 38 ), 有 關 詳 細 之 格 式 說 明 請 參 考 5.3.6 節 5-9
5.3.2 FBs-PLC 之 數 碼 FBs-PLC 內 部 之 數 值 運 算 或 儲 存 全 部 採 用 二 進 值 (Binary), 因 此 外 界 輸 入 PLC 內 部 之 數 值 必 須 轉 換 成 二 進 碼 PLC 才 能 處 理, 同 樣 地 自 PLC 內 部 取 出 之 數 值 結 果 亦 均 為 二 進 值, 因 此 無 論 FP-08 或 WinProladder 其 所 有 數 目 最 終 均 須 化 成 二 進 制 才 能 輸 入 PLC 但 因 二 進 值 極 難 輸 入 和 閱 讀, 因 此 FP-08 或 WinProladder 在 人 機 界 面 ( 數 值 輸 入 或 顯 示 ) 部 分 均 提 供 使 用 者 以 人 們 熟 悉 之 10 進 值 (Decimal) 或 16 進 制 (Hexadecimal) 來 輸 入 或 顯 示, 但 實 際 上 之 數 值 處 理 全 部 都 以 二 進 碼 來 進 行 註 : 若 您 的 數 值 輸 入 或 顯 示 不 是 透 過 FP-08 或 WinProladder( 例 如 以 指 撥 開 關 或 7 段 顯 示 器 透 過 I/O 點 而 輸 入 PLC 或 自 PLC 取 出 ), 那 麼 您 就 得 自 己 藉 著 階 梯 圖 程 式 指 令 來 處 理 二 進 制 和 10 進 制 間 之 轉 換, 使 您 雖 不 透 過 FP-08 或 WinProladder 亦 能 以 10 進 制 來 輸 入 及 得 到 10 進 制 之 輸 出 顯 示, 請 參 考 FUN20(BIN BCD) 和 FUN21(BCD BIN) 之 說 明 5.3.3 數 值 之 範 圍 如 前 述 FBs-PLC 內 部 全 部 採 用 二 進 制 (BCD 值 只 是 為 適 合 人 們 習 慣, 而 由 二 進 值 轉 成 適 合 人 們 閱 讀 之 顯 示 用 數 碼 而 已 ) 在 PLC 之 數 值 有 16 位 元 32 位 元 以 及 浮 點 數 三 種 數 值, 分 別 能 表 示 如 下 之 範 圍 16 位 元 32768~ 32767 32 位 元 2147483648~ 2147483647 浮 點 數 ±(1.8*10-38 ~ 3.4*10 38 ) 5.3.4 數 值 之 表 示 ( 初 學 者 請 略 過 本 節 ) 以 下 各 節 將 敘 述 16 位 元 及 32 位 元 數 值 之 表 示 方 式 與 格 式 以 供 使 用 者 能 深 入 了 解 數 值 之 運 算 過 程 及 結 果 而 能 應 付 各 種 複 雜 之 應 用 需 求 無 論 是 16 位 元 或 32 位 元 之 數 值, 均 以 其 最 高 位 元 MSB( 16 位 元 之 B15, 32 位 元 之 B31) 表 示 該 數 值 之 正 負 (0: 正 數,1: 負 數 ), 剩 下 之 位 元 (B14~ B0 或 B30~ B0) 才 真 正 用 以 表 示 數 值 大 小, 茲 以 16 位 元 為 例 說 明 如 下 :( 32 位 元 之 作 法 亦 同, 只 是 長 度 倍 增 而 已 ) 0: 正 數 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1 12345 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 1 3039H (10 進 值 ) B15 B 0 (16 進 值 ) 8192+4096+32+16+8+1=12345 如 上 例, 無 論 16 位 元 或 32 位 元, 其 二 進 制 之 位 元 由 最 低 位 元 LSB( B0) 開 始,B0 代 表 1,B1 代 表 2,B2 代 表 4,B3 代 表 8,... 餘 此 類 推, 而 其 數 值 則 為 所 有 為 1 之 位 元 所 代 表 數 值 之 總 和 5-10
5.3.5 負 數 之 表 示 及 取 得 ( 初 學 者 請 略 過 本 節 ) 如 前 述 當 MSB 為 1, 則 此 數 為 負 數,FBs-PLC 之 負 數 係 以 2 的 補 數 (2'S Complement) 來 表 示 所 謂 2 的 補 數, 係 將 等 值 正 數 之 所 有 位 元 (B15~ B0 或 B31~ B0) 倒 相 ( 為 1 之 位 元 變 0, 為 0 之 位 元 變 1, 亦 即 所 謂 1 的 補 數 ), 然 後 再 加 上 1 即 變 成 2 的 補 數, 茲 以 上 例 正 數 12345, 取 其 2 的 補 數 ( 即 -12345) 為 例 說 明 如 下 : 12345 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 1 3039H 12345 之 1 1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 0 CFC6H 的 補 數 + 1 12345 之 2 1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 CFC7H 的 補 數 (- 12345) 5.3.6 浮 點 數 之 表 示 ( 初 學 者 請 略 過 本 節 ) 永 宏 FBs 浮 點 數 格 式 同 IEEE-754 所 制 定 之 標 準 儲 存 之 格 式 共 佔 用 32 個 位 元 ( 雙 字 元 組 ) 其 說 明 如 下 所 示 : 浮 點 數 = ( 正 / 負 ) 數 + 指 數 + 小 數 正 / 負 數 指 數 小 數 b31 b 30 ~ b23 b 22 ~ b0 1 bit 8 bits 23 bits 32 bits 若 ( 正 / 負 ) 位 元 之 值 為 0, 表 示 此 浮 點 數 為 正 值, 反 之 如 果 若 ( 正 / 負 ) 位 元 之 值 為 1, 代 表 此 浮 點 數 為 負 值 指 數 表 示 法 為 超 127 法, 舉 例 來 說, 若 指 數 之 值 為 128 就 代 表 1 次 方, 指 數 之 值 為 129 就 代 表 2 次 方... 依 此 類 推 若 想 表 示 指 數 為 負 之 值, 則 126 就 是 -1 次 方,125 為 -2 次 方... 依 此 類 推 小 數 位 數 有 23bits, 用 來 存 放 小 數 點 以 下 之 數 字, 正 規 化 格 式 要 求 小 數 點 之 前 一 個 位 數, 必 須 為 1, 且 不 必 儲 存 ( 稱 為 隱 藏 位 元 ) 整 數 轉 換 浮 點 數 之 規 則 為 如 下 : N = ( -1) S * 2 (E -127) * ( 1.M ) 0 < E < 255 轉 換 範 例 1 : 1 = (-1) 0 * 2 ( 01111111 ) * ( 1.000...0 ) 此 範 例 中 ( 正 / 負 ) 數 位 元 為 0, 指 數 部 分 為 127( 超 127 法 )=01111111, 隱 藏 位 元 為 1, 而 小 數 位 數 則 全 部 為 0, 因 此 經 過 轉 換 後 的 浮 點 數 表 示 法 如 下 所 示 : 5-11
Code( 1 ) = = 3F800000H 轉 換 範 例 2 : 0.5 = ( -1 ) 0 * 2 ( 01111110 ) * ( 1.000...0 ) 此 範 例 中 ( 正 / 負 ) 數 位 元 為 0, 指 數 部 分 以 超 127 法 表 示 為 126=01111110( 因 指 數 部 分 為 -1, 126-127=-1, 故 指 數 部 份 在 超 127 法 中 要 轉 換 成 126), 隱 藏 位 元 為 1, 而 小 數 位 數 則 全 部 為 0, 因 此 經 過 轉 換 後 的 浮 點 數 表 示 法 如 下 所 示 : Code( 0.5 ) = 轉 換 範 例 3 : = 3F000000H -500.125 = ( -1 ) 1 * 2 ( 10000111 ) * ( 1. 11110100001000000000000) 此 範 例 中 ( 正 / 負 ) 數 位 元 為 1, 指 數 部 分 以 超 127 法 表 示 為 135=10000111 ( 因 指 數 部 分 為 8, 135-127=8, 故 指 數 部 份 在 超 127 法 中 要 轉 換 成 135), 隱 藏 位 元 部 分 為 1, 而 小 數 位 數 則 為 11110100001000000000000, 因 此 經 過 轉 換 後 的 浮 點 數 表 示 法 如 下 所 示 : Code( -500.125 ) = = C3FA1000H 5.4 運 算 元 遞 增 ( 減 ) 之 溢 位 與 欠 位 ( 初 學 者 請 略 過 本 節 ) 16 位 元 及 32 位 元 運 算 元 所 能 表 示 之 數 位 極 限 正 數 最 上 限 為 32767 和 2147483647, 而 負 數 之 最 下 限 為 -32768 和 -2147483648 當 對 一 運 算 元 作 遞 增 或 遞 減 動 作 ( 例 如 計 數 器 上 / 下 數 或 使 暫 存 器 值 +1 或 1 時, 若 結 果 使 其 數 值 超 過 該 運 算 元 正 數 之 最 上 限, 則 稱 之 為 溢 位 ( Overflow: OVF), 溢 位 之 結 果 會 使 數 值 循 環 至 負 數 之 最 下 限 ( 例 如 16 位 元 上 限 32767 再 加 1, 變 成 -32768) 若 遞 增 ( 減 ) 結 果 使 其 數 值 小 於 負 數 最 下 限, 則 稱 之 欠 位 (Underflow: UDF), 而 欠 位 之 結 果 會 使 數 值 循 環 至 正 數 之 最 上 限 ( 例 如 -32768 若 再 減 1 變 成 32767), 如 下 表 所 示 在 FBs-PLC 之 遞 增 指 令 之 功 能 輸 出 (FO) 均 有 溢 位 或 欠 位 之 旗 號 輸 出, 可 供 您 作 串 聯 (Cascade) 應 用 而 獲 得 超 過 16 或 32 位 元 之 運 算 結 果 5-12
遞 增 ( 減 ) 結 果 溢 / 欠 位 16 bit 運 算 元 32 bit 運 算 元 遞 增 OVF=1 32767 32768 32767 32766 32765 OVF=1 2147483646 2147483647 2147483648 2147483647 2147483646 遞 減 UDF=1 32767 32768 32767 32766 32765 UDF=1 2147483647 2147483648 2147483647 2147483646 2147483645 5.5 加 / 減 運 算 之 進 位 與 借 位 溢 / 欠 位 之 發 生 係 針 對 單 一 運 算 元 之 遞 增 / 減 致 使 該 運 算 元 之 值 超 出 其 所 能 表 示 之 正 / 負 值 極 限 時, 產 生 溢 / 欠 位 旗 號 而 進 / 借 位 則 不 同 於 溢 / 欠 位, 首 先 其 必 有 兩 個 運 算 元 作 加 ( 減 ) 運 算, 而 得 到 和 ( 差 ) 結 果 與 進 / 借 位 旗 號 因 被 加 ( 減 ) 加 ( 減 ) 及 和 ( 差 ) 之 位 數 (bit 數 ) 均 一 樣 (16 bit 或 32bit), 因 此 相 加 ( 減 ) 之 結 果 將 可 能 造 成 和 ( 差 ) 之 值 超 出 16 或 32 bit, 因 此 需 以 進 ( 借 ) 位 旗 號 配 合 和 ( 差 ) 運 算 元 來 表 示 真 正 之 數 值 而 進 位 旗 號 發 生 在 加 ( 減 ) 結 果 超 出 該 和 ( 差 ) 運 算 元 所 能 表 示 之 正 值 最 大 極 限 (32767 或 2147483647) 時, 而 借 位 則 發 生 在 加 ( 減 ) 結 果 超 出 該 和 ( 差 ) 運 算 元 所 能 表 示 之 負 值 最 大 極 限 ( 32768 或 2147483648) 時, 因 此 加 ( 減 ) 運 算 後 之 真 正 結 果 為 進 ( 借 ) 位 再 加 上 和 ( 差 ) 運 算 元 之 值,FBs-PLC 之 加 減 指 令 之 功 能 輸 出 (FO) 均 有 進 位 與 借 位 旗 號 輸 出, 可 供 您 獲 得 真 正 之 結 果 MSB LSB 16 bit/ 32 bit 被 加 ( 減 ) 運 算 元 +( ) 16 bit/ 32 bit 加 ( 減 ) 運 算 元 1-bit 進 ( 借 ) 位 16 bit 或 32 bit 和 ( 差 ) 運 算 元 5-13
因 FBs-PLC 之 數 值 運 算 均 採 用 2 的 補 數, 因 此 加 ( 減 ) 運 算 所 得 之 和 ( 差 ) 值 之 負 值 之 表 示 將 不 同 於 我 們 一 般 習 慣 之 負 值 表 示 方 式 運 算 結 果 為 負 值 時, 其 和 ( 差 ) 運 算 元 將 永 遠 不 可 能 出 現 0 值 進 位 旗 號 代 表 正 值 32768(2147483648), 借 位 旗 號 則 代 表 負 值 32768( 2147483648) 負 值 (MSB=1) 零 旗 號 =1 正 值 (MSB=0), 2, 1, 32768, ( 2147483648), 2, 1, 0, 1, 2,, 32767, 0, 1, (2147483647) 借 位 旗 號 =1 進 位 旗 號 =1 MSB C=1 B=0 Z=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 32769 C=1 B=0 Z=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32768 C=0 B=0 Z=0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32767 C=0 B=0 Z=0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 32766 C=0 B=0 Z=0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 32765 C=0 B=0 Z=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 C=0 B=0 Z=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 C=0 B=0 Z=1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C=0 B=0 Z=0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 C=0 B=0 Z=0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 2 C=0 B=0 Z=0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 32766 C=0 B=0 Z=0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 32767 C=0 B=0 Z=0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32768 C=0 B=1 Z=0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32769 C=0 B=1 Z=0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 32770 LSB 正 值 負 值 C = Carry B = Borrow Z = Zero 5-14