你好。我希望能够将 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 让我可以同等对待所有列。