0
点赞
收藏
分享

微信扫一扫

PC-DMIS 高级编程:操作员输入注释和 If_GoTo

PC-DMIS 高级编程:操作员输入注释和 If_GoTo_RationalDMIS
客户:

我有一个程序可以在夹具上测量 8 个样品。该程序是使用每个夹具位置(L1 到 L8)的标签和 IF_GOTO 语句编写的,以防并非所有 8 个样本都被加载。样本也标记为 1 到 8,我们将样本加载到相应的位置。

我正在寻找一种方法来告诉 PC-DMIS 在该示例未加载时跳过某个位置。(例如,如果未加载样本 4,则跳过位置 L4 的例程)。
如果输入注释只缺少一个样本,我可以这样做。如果缺少一个以上的样本(例如 3 和 5)因此跳过 L3 和 L5 的例程,这可以起作用吗?我的经验是,如果在 Input Comment 中输入了多个数字,程序只会读取第一个数字。

回复:

这将根据操作员的输入运行任何部件组合。我只展示了四个部分,因为它是重复的,但可以使用任意数量的部分。注意:我使用名称 FUNCTION1、FUNCTION2、FUNCTION3 和 FUNCTION4,而不是标签(您帖子中的 L1 到 L8)。同样的事情只是 L1、L2、L3 是分配给标签的通用名称。

此例程的想法是您输入要运行的部分的逗号分隔列表。不同输入和结果的示例如下所示:

输入:1、2、3、4
结果:按该顺序 运行第 1、2、3 和 4 部分

输入:1,3
结果:按该顺序运行第 1 部分和第 3 部分

输入: 3,1
结果:按顺序运行第 3 部分和第 1 部分

输入:4,3,2,1
结果:按顺序 运行第

4、3、2和 1
部分输入:1,1,1,1结果:将第 1 部分运行四次(可能不想要但不容易阻止)

RUN_INPUT  =COMMENT/INPUT,NO,FULL SCREEN=NO,
Enter parts to run in comma separated list
(Example: 1,2,3,4)
ASSIGN/PART_NUMBER_STRINGS=RUN_INPUT.INPUT

; Get the string to the left of the first comma and remove from the input string
DO/
ASSIGN/LSTR=INDEX(PART_NUMBER_STRINGS,",")
ASSIGN/PART_NUMBER_STRING=MID(PART_NUMBER_STRINGS,0,LSTR - 1)
ASSIGN/PART_NUMBER_STRINGS=MID(PART_NUMBER_STRINGS,LSTR)

; Run the function from the integer of the input string. Any odd entries, text, or unhandled goes into DEFAULT_CASE
SELECT/INT(PART_NUMBER_STRING)
CASE/1
GOTO/FUNCTION1
END_CASE/
CASE/2
GOTO/FUNCTION2
END_CASE/
CASE/3
GOTO/FUNCTION3
END_CASE/
CASE/4
GOTO/FUNCTION4
END_CASE/
DEFAULT_CASE/
COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
Part not handled
END_DEFAULTCASE/
END_SELECT/

; all GOTO/FUNCTIONx return here
END_FUNCTION=LABEL/

; keep looping until next comma not found
UNTIL/LSTR < 1

; program is done. Jump to end.
GOTO/END_PROG

FUNCTION1 =LABEL/
MODE/DCC
P1 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
THEO/<0,0,0>,<0,0,1>
ACTL/<0,0,0>,<0,0,1>
TARG/<0,0,0>,<0,0,1>
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
AVOIDANCE MOVE=NO,DISTANCE=0
SHOW HITS=NO
GOTO/END_FUNCTION

FUNCTION2 =LABEL/
MODE/DCC
P2 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
THEO/<100,0,0>,<0,0,1>
ACTL/<100,0,0>,<0,0,1>
TARG/<100,0,0>,<0,0,1>
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
AVOIDANCE MOVE=NO,DISTANCE=0
SHOW HITS=NO
GOTO/END_FUNCTION

FUNCTION3 =LABEL/
MODE/DCC
P3 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
THEO/<0,100,0>,<0,0,1>
ACTL/<0,100,0>,<0,0,1>
TARG/<0,100,0>,<0,0,1>
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
AVOIDANCE MOVE=NO,DISTANCE=0
SHOW HITS=NO
GOTO/END_FUNCTION

FUNCTION4 =LABEL/
MODE/DCC
P4 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
THEO/<100,100,0>,<0,0,1>
ACTL/<100,100,0>,<0,0,1>
TARG/<100,100,0>,<0,0,1>
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
AVOIDANCE MOVE=NO,DISTANCE=0
SHOW HITS=NO
GOTO/END_FUNCTION

END_PROG =LABEL/
ROUTINE/END


举报

相关推荐

0 条评论