你好。我希望能夠將 USL 設定為等於 LSL。我目前使用的是 JMP Pro 17.2.0。如果我嘗試在「列屬性」視窗中將限制設為彼此相等,則會收到錯誤「USL 必須大於 LSL 和目標」。如果我使用管理限制平台嘗試它,則會出現類似的錯誤。
請參閱此線程以獲取原始討論:
https://community.jmp.com/t5/Discussions/Setting-Spec-Limits-with-USL-LSL/mp/717822#M89952
是什麼激發了這個願望清單請求?
如果我嘗試在「列屬性」視窗或「管理限制」平台中將限制設為彼此相等,則會收到錯誤。我可以使用 << Set Property 訊息以程式設計方式將限制設為相等,但無法使用管理限制讀回它們。該腳本有助於說明:
Names Default to Here(1);<BR />dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt:Height << Set Property("Spec Limits", USL(1), LSL(1)); //I can set USL=LSL in a script<BR />//I can confirm they've been set by manually opening the Column Properties window.
//At some later date I need to reopen the table and get the limits to evaluate yield:
msl = dt << Manage Limits(Process Variables(:Height)); //The limits are now missing.
dtlim = msl << Save to Tall Limits Table;
有時我還會看到一個小窗口彈出窗口,顯示“不一致的限制”的效果,並列出了所有有問題的列,但我還沒有弄清楚如何重現這一點。
您希望看到什麼改進?
我希望能夠在“列屬性”和“管理限制”視窗中設定彼此相等的限制。不過,我想繼續防止 USL < LSL。
為什麼這個想法很重要?
我們的資料包含數千列。一些(但不是全部)列表示代碼(整數),其中只有一個值表示“正常”,所有其他值表示不同類型的故障。例如,「1」表示通過,「0」= 未測試,值 2 或更大表示有其他錯誤。我們希望使用腳本計算這些數據的產量和其他分析。但我們發現 USL=LSL 的這些欄位沒有被檢查,因為當腳本使用管理限制讀回限制時,它們就遺失了。
我們考慮過的事情:
1. 將限制設為 (x-0.1, x+0.1) 而不是 (x,x)。不能這樣做,這需要修改數百個限制乘以多個製造步驟乘以多個程序,並且會影響我們公司的許多其他組織。
2. 僅設定這些列的 LSL,而忽略 USL。然後,在我們的產量分析腳本中,添加一個子句,根據值被「編碼」的列列表檢查列名,如果匹配,則只需檢查該值是否與LSL 匹配,而不是檢查該值是否位於LSL - 之間USL。有問題的 bc 需要我們對腳本中需要以一種方式與另一種方式檢查哪些列進行硬編碼,並隨著名稱列表在整個開發過程中發生變化而不斷更新腳本。另外,必須為每個製造步驟和每個程序維護單獨的列表,因為它們不共用相同的測試。同樣有問題的是,其他人對資料使用不同的分析腳本,他們可能不知道我們是否刪除了 USL 並僅保留 LSL。
3. 依照上面的腳本以程式設計方式設定限制。然後,當我們希望稍後從資料表中讀回它們時,請使用 << 取得屬性訊息而不是管理限制。我仍在編寫一個腳本來嘗試這一點,但我已經對這種策略心存疑慮。首先,它需要一個 For 迴圈來讀取和解析每列的規格,對於 10k+ 列來說這可能需要一段時間。其次,我很難從 << Get Property("Spec Limits") 訊息中解析出限制。 (1) 它只會回傳 USL(1) (無引號),我不清楚如何從中提取數字。 (2) 它似乎沒有傳回 LSL,即使我在「列屬性」視窗中確認它也設定為 1。下面的腳本說明了:
Names Default to Here(1);<BR />dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt:Height << Set Property("Spec Limits", USL(1), LSL(1)); //confirm limits set in col props window.<BR />specs = dt:Height << Get Property( "Spec Limits" ); //returns USL(1) only
lsl = specs["LSL"]; //returns .
usl = specs["USL"]; //returns .
如果還有其他我沒有想到(或忘記提及)的明顯解決方案,請事先致歉。如果我忽略了一些關鍵細節,我也深感抱歉。我已經在這方面工作了一段時間了,所以我已經深陷其中了。
感謝您考慮。
@nikles,我們計劃對 JMP v18.1 中的資料表進行更新,以允許 LSL=USL。但請注意,具有該屬性設定的列在功能報告中不起作用。
@nikles您好,我閱讀了相關的社區討論主題和此請求。在我看來,您真正需要的是一種定義和儲存“分類規範”的方法。例如,如果產品測試僅產生通過/失敗結果,並且「通過」是規範,那麼您希望能夠將其作為規範儲存在列屬性中。我還可以看到其他類型的分類規範,例如測試結果是優秀、良好、較差、失敗,“優秀”或“良好”是通過規範。
目前,規格限列屬性的 USL 和 LSL 旨在用於連續回應,因此對於 LSL>=LSL 沒有意義。分析 > 品質和流程下的管理限值平台旨在管理 JMP 分析中使用的限值。我不知道有任何 JMP 平台使用這樣的分類限制。
為了滿足您的即時需要,您可以建立自訂列屬性(在列屬性下選擇「其他」)來儲存分類規範。或者您可以在資料表上使用 JSL 中的 << Set Property( ) 訊息。然後您可以在腳本中利用該屬性。

重要更正。上面顯示的兩個腳本中的第二行應該是:
dt:Height << Set Property("Spec Limits", {USL(1), LSL(1)}); //forgot to add {}對於疏忽表示歉意。這可以解釋為什麼我在使用 << Set Properties 和 << Get Properties 訊息時遇到困難。我現在發現我*可以*使用“管理限制”視窗讀回限制。但是,當打開“管理限制”時,我仍然會收到以下彈出視窗:

此外,如果我嘗試“儲存到高度限製表”,我會收到此錯誤:

最後,在我原來的文章「我們考慮過的事情」下的第 3 項(使用 << 獲取屬性訊息而不是管理限制從資料表讀回限制)中,此方法現在適用於我。我仍然更喜歡使用管理限制平台來讀取我的限制,因為它會自動建立一個表,但這至少是一個可行的解決方法。
@SamGardner感謝您的幫助!我很高興他們決定允許 LSL=USL。我沒有考慮您關於定義分類規範屬性的其他解決方案,所以也感謝您。但是,我想說該解決方案的問題與我僅為這些列定義 LSL 的其他解決方案類似。也就是說,我需要我的腳本在計算產量時以不同的方式處理這些列,這需要我的腳本知道要為哪些列執行此操作。允許 LSL=USL 讓我可以同等對待所有列。