先確認你要改的是哪個資料
準備修改D100之前,先找出誰寫它、誰讀它,以及誰可能用一整段範圍碰到它。只在畫面搜尋D100字串,容易漏掉標籤、索引和多字資料。這篇帶你建立四類查核結果,讓變更範圍有證據,而不是憑「只找到一處」就認定很安全。
適用於Q06UDVCPU搭配適用版本GX Works2的工程副本分析。本文引用Common手冊第10.1節,示例使用一般D裝置概念;實際可用範圍和標籤配置依專案。先保存變更前副本,記錄工具版本、編譯狀態、CPU目標與欲修改資料的型別及單位。
先問D100究竟是一個十六位元整數,還是以D100開始的雙字資料。若是後者,D101也是同一資料的一部分;變更只看到起始位址就可能破壞另一半。本文先以一字設定值說明,再用多字與區塊案例檢查隱含影響。
在工程副本以View、Docking Window、Cross Reference開啟交叉參照視窗。選取裝置或標籤,確認Find in搜尋位置及Condition Setting條件,再建立結果。不同專案類型可見欄位不同,保留實際設定,不把某次預設搜尋範圍當成整個系統。
結果應保留Read/Write、Instruction、Position及程式名稱等可用欄位。雙擊結果可跳到使用位置,再閱讀前後條件。Read表示使用資料,Write表示可能改資料,但一個寫入位置是否實際執行,還取決於當時條件與程式順序。
先查直接裝置和標籤對照
第一輪查直接參照。假設D100在配方載入段被寫入,在上下限比較段被讀取,在顯示計算段也被讀取,就分別記為一個寫入來源與兩個讀取用途。不要只記三個命中,因為更換倍率時,寫入端與讀取端需要同步理解新單位。
第二輪核對標籤。若TankLevelSet配置到D100,搜尋裝置後也應確認標籤定義與使用位置;標籤改名不一定改變底層裝置。手冊說明交叉參照可涵蓋全域、區域標籤與結構,是否顯示定義和階層取決於設定,不等於普通文字搜尋。
假設兩個標籤都指向同一裝置,不要把它們當成兩份獨立資料。先列出對照關係,再看是否因不同程式或版本留下別名。若型別或用途互相矛盾,這本身就是變更前必須釐清的問題,不能任選名字較新的那個。
參數也可能更新資料。官方列出的查核對象包含部分網路更新、智慧型模組自動更新與多CPU更新設定。檢查本專案實際啟用的項目,避免只看梯形圖找不到寫入,就認定該D值從未被更新。外部HMI仍需獨立補查。
失敗時先查搜尋資訊是否對應目前副本與編譯結果。交叉參照可因選項在未重新編譯狀態顯示既有資訊,不能因畫面有結果就假定已涵蓋剛修改的全部內容。記錄重新建立資訊的方式及未解析項目,必要時先在副本完成可重現的編譯與查核。
把索引與多字範圍展開
索引查核先寫成概念式:基址D90加偏移零到二十,候選裝置是D90至D110,因此D100在候選內。這不是可直接貼入GX Works2的指令語法;實際程式要追索引來源、限制條件及其更新位置,再判斷偏移十是否可達。
如果程式只保證偏移是偶數,D100的偏移十仍可能被存取;若已證明偏移只能為零到九,則這條路徑不涵蓋D100。先保留保守候選,再用已核對條件縮小,不能看到目前索引是零,就推定未來永遠不會碰到其他位址。
手冊特別列出一種限制:在指定的編譯後建立交叉參照選項下,以不帶索引的裝置搜尋時,只搜尋不帶索引的使用。因此「D100查不到索引路徑」不能作為排除證據。核對選項與實際索引寫法,再補查基址、索引裝置和可能範圍。
多字資料同樣要展開。若一項雙字寫入以D99開始,範圍會涵蓋D99與D100;D100即使不是指令上寫出的起始字,也會被影響。GX Works2條件設定可顯示多點裝置指令的起訖,應利用這項功能檢查,而非只比對起始文字。
區塊資料搬移的教學案例是目的起點D95、共十個字。末點為95加10減1,得到D104,所以包含D100;若只有五個字則到D99,不包含D100。這是在分析資料寫入範圍,與把某段程式搬到另一個程式檔是不同問題。
補查外部來源並比較變更前後
外部寫入可能來自HMI輸入欄、配方下載、腳本或另一個控制器。PLC專案的交叉參照不會自動包含所有外部工程。列出已配置的連線與資料源,向各來源核對實際裝置、讀寫方向、資料型別與倍率;未取得副本就保留未覆蓋範圍。
延續設定值案例,PLC內部計算打算從整數乘十改成整數乘百,而HMI仍將25.3寫成253,控制器就可能解讀成2.53。交叉參照位置完全沒增加,也會改變資料意義。因此變更表除位址外,必須寫出前後型別、倍率及有效範圍。
建立變更前與變更後兩份結果,逐一核對已知直接寫入、標籤讀取、索引候選、區塊目的範圍及HMI來源。命中數相同不代表行為相同;還要閱讀啟用條件、執行順序和資料初始化。程式搬移造成順序改變時,另列執行時序影響。
練習將目的區塊由D95起十字改為D96起十字。你應列出範圍從D95至D104改成D96至D105;D100仍受影響,D95退出,D105新增。若報告只顯示起點加一而未列邊界,下一步很容易漏測新覆蓋的D105。
完成後應有一張能回答「已查哪些、可能碰到哪些、還缺哪些」的影響清單。這支持變更審查,還不是下載或硬體功能驗收。未確認外部資料契約或索引邊界時,保留待查與負責角色,不把靜態搜尋通過當成整台設備驗證通過。
常見問題與完成條件
驗收時從清單任選一個讀取、一個寫入、一個索引候選及一個區塊邊界,回到原專案重跑。結果應能追到位置、範圍計算及判斷理由。若另一人無法重現,先修正搜尋條件或版本紀錄,再發布影響結論。
問:查不到D100就可以重用嗎?答:還要核對標籤、索引、多字或區塊範圍、參數更新和外部來源。沒有文字命中不等於未使用。
問:十字區塊從D95開始,末點是D105嗎?答:是D104,因為起點本身已算第一字。用起點加數量減一計算。
問:候選範圍包含D100就代表一定寫入嗎?答:只代表可能,還要看偏移是否可達、條件是否成立及讀寫方向。
問:交叉參照能代替測試嗎?答:不能。它幫你設計應測範圍,實際編譯、模擬與設備驗證需分別執行並保留結果。
參考:三菱GX Works2 Common 第10.1節 Cross Reference 10之2至10之7