跳转至

编辑运行顺序:通讯触发与输出

"运行顺序"是软件检测一件产品的流水账:先等谁的信号、再让哪几台相机拍、中途要不要给 PLC 回个信、最后什么时候把总结果发出去。 这一页讲这个窗口怎么读、怎么排、每种行是什么意思。

前置条件

  • 相机工位和检测方案都已经建好、并且是启用状态。
  • 通讯设备已经在运行端"设备设置"里配好(选了 NODEVICE 就只用排阶段,用不上触发和输出)。
  • 软件处于停止状态。运行中打不开这个窗口,会提示"正在运行中, 请先关闭运行界面的运行状态"。

打开方式

在调试端左侧任务面板的最上方,点"编辑运行顺序"按钮,打开"运行顺序编辑窗口"。

运行顺序编辑窗口

窗口分三块:

  • 左边是阶段树:整件产品按顺序分成几个阶段,每个阶段下面列出它要做的事。树下方有一块提示区。
  • 右边是选中行的参数:选中通讯触发、通讯输出、串口收发行时才有内容,选别的行右边是空的。
  • 底部是"上移""下移""保存"。

什么是"阶段"

一个阶段就是"一组在同一时机拍照的相机"。阶段和阶段之间靠下面几样东西分开:

  • 翻面:前一阶段拍完,等产品翻过来再拍下一阶段;
  • 通讯触发:等 PLC 再发一次信号;
  • 通讯输出:前一阶段拍完先给 PLC 回个信,再进下一阶段。

大部分产线只有一个阶段:等一次触发、所有相机一起拍、发一次结果。只有要翻面、分两次到位、或者中途要回信号时才需要第二个阶段。

阶段树怎么读

树有三列:"步骤"、"说明"、"主动触发"。

行的样子 是什么 从哪来
阶段 1 一个阶段。说明列是一句话摘要,如"等 (trigger#1) · 拍 2 台 · 输出 (output#1)" 右键"在此阶段后新建阶段"
(Flip) 翻面:清空所有相机缓存,停下来等产品翻面 阶段行右键"翻面开关"。授权里带翻转功能才有这一项
(trigger#1) 通讯触发:停在这里等 PLC 的信号 阶段行右键"添加通讯触发",每个阶段最多一个
(serial_data1) 串口收发:从数据串口读一段文本,或者往它发一条指令。说明列写着"开拍前"或"拍完后" 阶段行右键"添加串口收发(开拍前)/(拍完后)"
(相机工位名->检测方案名) 让这台相机按这个检测方案拍一张并检测 自动生成,不能手动增删或拖动
(output#1) 通讯输出:把结果发给 PLC。勾了"是否为最终输出"的说明列显示"通讯输出(最终输出)" 阶段行右键"添加通讯输出"
最后一行灰字 软件自动做的收尾,见下文 固定,不能选

一个阶段里各行的先后是固定的:翻面 → 通讯触发 → 开拍前的串口收发 → 拍照 → 拍完后的输出 / 串口收发。

拍照行是自动的

  • 每个启用的检测方案自动占一行,新建的检测方案默认进阶段 1;
  • 删掉检测方案、停用相机工位,对应的行自动消失;
  • 相机工位或检测方案改名,行里的名字自动跟着变,不用重排;
  • 同一个阶段里的拍照行按调试端任务树的顺序排列。同一阶段的相机是一起拍的,先后不影响结果。

想让某台相机换到别的阶段,在它的拍照行上右键"移到阶段"。

"主动触发"勾选框

只有拍照行有这个勾选框。

  • 勾上(主动触发):通讯触发一到,软件立刻让这台相机曝光。曝光时刻由触发点钉死,同一阶段勾了的相机一起曝光。
  • 不勾(被动触发):软件不发拍照命令,等相机自己的硬件触发线来信号。

接了 PLC 硬触发线的相机不勾,靠软件触发的相机勾上。详见 PLC 硬触发接线与设置。

这个勾和检测方案的"设置检测方案 → 基础参数设置 → 触发方式"是同一个设置。触发方式选了"模板触发"的检测方案,这一列显示"模板触发"文字、没有勾选框:模板触发自己反复软触发、靠模板检测判断产品到位,没有主动 / 被动之分。要改就去"设置检测方案"里改触发方式。

右键菜单

不同的行右键出来的菜单不一样:

在哪行上右键 菜单项 作用
阶段行 在此阶段后新建阶段 在下面插一个空阶段
阶段行 删除此阶段 只有阶段里没有拍照行、而且不止一个阶段时才能点。阶段里的触发、输出、串口收发一起删掉
阶段行 翻面开关 给这个阶段开头加上 / 去掉翻面。授权里没有翻转功能时不显示
阶段行 添加通讯触发 阶段还没有触发时才出现,编号自动往后排
阶段行 添加通讯输出 加在这个阶段拍完之后
阶段行 添加串口收发(开拍前)/(拍完后) 加在拍照之前 / 之后
通讯触发行 删除通讯触发
输出行、串口收发行 删除该步骤 / 上移 / 下移 上移下移只在同一段里挪
拍照行 移到阶段 → 阶段 N / 新建阶段并移入 把这台相机挪到别的阶段;"新建阶段并移入"在最后新开一个阶段
拍照行 切换主动/被动 等于点一下"主动触发"勾选框。模板触发的拍照行上是灰的
翻面行 删除翻面

底部的"上移""下移":选中阶段行时整个阶段和前 / 后一个阶段对调(阶段里的相机跟着走);选中输出或串口收发行时在本段里挪一位。选中别的行就点,会提示"请先选中一个阶段或输出/串口行"。

改完一定要点"保存",直接关窗口不生效。

下方提示区

阶段树下面会实时显示检查结果:

  • 红字 = 错误。保存时会问"运行顺序有错误,修好之前无法运行……仍要保存吗?";就算保存了,点"开始运行"时也会被拦下来。
  • 灰字 = 提示。不影响运行,只是提醒你看一眼;最多显示 3 条,多了显示"…共 N 条"。
文字 颜色 意思和处理
阶段N: 通讯触发 (trigger#1) 不存在 红 阶段引用的触发参数丢了(手工改过工程或跨版本迁移)。删掉这个触发再重新添加
阶段N: 开拍前步骤 … 不存在或不是串口收发 红 同上,删掉重新添加
阶段N: 拍完后步骤 … 不存在 / 类型不合法 红 同上
阶段N 的最终输出 (output#1) 之后还有阶段M 要拍照…… 红 勾了"是否为最终输出"的输出后面还有阶段要拍照,运行会一直等一个永远出不来的结果。把最终输出挪到最后一个阶段,或者把前面那条的"是否为最终输出"取消
阶段N 为空 灰 这个阶段什么都没有。不用就删掉
(output#1) 被引用 2 次 灰 同一个触发 / 输出 / 串口收发出现在多个地方(一般是老工程迁移来的)。能运行,但没法用组内预拍提速
(trigger#2) 未被任何阶段使用 灰 参数还在,但没有阶段用它。不用可以不管
…的阶段号 N 超出阶段数,按最后一个阶段处理 灰 某个检测方案记录的阶段已经被删了,自动归到最后一个阶段。用"移到阶段"放回想要的位置即可

三种行的参数

选中一行,右边会出现对应的参数区。

通讯触发 (trigger#n)

软件停在这里,反复去问对面"产品到位了没",直到条件满足才往下走。

用什么协议由运行端设的设备类型决定:SERIALCOM / TCPSERVER / TCPCLIENT 用上半部分的字符串参数,MODBUSRTU / MODBUSTCP 用下半部分的 Modbus 参数,用不上的那一半是灰的。

通讯输出 (output#n)

把检测结果发出去。

项 填写/含义 调参建议
延时输出: 执行到这一行之后先等几秒再发,单位秒 PLC 那边还没准备好收时用它错开,一般填 0
是否为最终输出 勾上 = 发之前先等所有检测方案都跑完,拿到总结果再发 一件产品的最后一条输出必须勾上
其余 字符串模式或 Modbus 模式的参数 见字符串协议、Modbus

\"是否为最终输出\"决定要不要等

勾上:软件会一直等到所有启用的检测方案都出结果,才取总结果发出去。总结果对了才发,但会多等一会儿。

不勾:立刻拿当前已有的结果发出去,不等还没跑完的检测方案。好处是可以在流程中段提前给 PLC 一个分拣信号;代价是这时候引用某个还没跑完的检测方案,读到的是上一件的旧结果。所以中途输出只应该发和当前进度有关的东西(比如"第一面已拍完"),不要发总结果。

一件产品可以有多条输出,但只应该有最后那一条勾"是否为最终输出",而且它要放在最后一个阶段。

串口收发数据 (serial_dataN)

用"串口收发数据"那个独立串口收一段文本或者发一条指令。要先在运行端"设备设置 → 串口收发数据"页启用并配好串口,否则运行到这一行会报"未设置串口数据收发设备,但配置了数据收发指令。请在设备中配置,或删除指令。"。

项 填写/含义 调参建议
接收数据 / 发送数据 选这一行是收还是发
自定义变量名称: 收到的内容存进这个变量名,以后在输出里用 &变量名 引用 由软件自动填成这一行的名字(如 serial_data1),不能改
读取间隔(s) 收模式下,多久去读一次,单位秒 默认 0.2。信号短就调小到 0.05
发送指令: 发模式下要发出去的那串文本
添加回车换行符 发模式下在末尾补上回车换行 对方按行读取(例如仪表、扫码模块)就勾上
延时(s): 收到之后 / 发送之前额外等几秒 一般填 0

接收模式会一直等到收到非空数据为止,收不到就卡在这一行。所以只在确定对方会主动发数据的场合用它。

推荐的排法

最常见的一条产线,四台相机、一条 PLC 触发,一个阶段就够:

阶段 1
  (trigger#1)                 ← 等 PLC 说"产品到位"
  (相机工位1->正面)  ☑ 主动触发
  (相机工位2->背面)  ☑ 主动触发
  (相机工位3->左侧)  ☑ 主动触发
  (相机工位4->右侧)  ☑ 主动触发
  (output#1)                  ← 勾"是否为最终输出",发 PASS/FAIL

要翻面的产线,两个阶段:

阶段 1
  (trigger#1)
  (相机工位1->正面)  ☑ 主动触发
  (output#1)                  ← 不勾"是否为最终输出",告诉 PLC 正面拍完了
阶段 2
  (Flip)                      ← 等产品翻面
  (trigger#2)
  (相机工位1->背面)  ☑ 主动触发
  (output#2)                  ← 勾"是否为最终输出"

要点:

  1. 每个阶段先加通讯触发。软件在触发到达之前什么都不做,曝光时刻才对得准。
  2. 同一时机拍的相机放在同一个阶段,靠软件触发的都勾上"主动触发",它们会在触发到达的瞬间一起曝光。
  3. 最终输出放在最后一个阶段,并勾上"是否为最终输出"。放错了提示区会红字提醒。
  4. 要在中途给 PLC 回信号,在前一个阶段加一条不勾"是否为最终输出"的输出。
  5. 产品要翻面时,在第二个阶段上右键"翻面开关"。

树后面还有软件自动做的事

阶段树最后那行灰字就是:所有阶段跑完之后,软件会自动依次做保存图片 → 人工复判(工程里启用了才有)→ 写 MES → 写良率统计 → 汇总结果 → 结束本件。这些步骤不能调整顺序。

常见问题

运行时报"通讯触发指令(trigger#1)不存在"或"通讯输出指令(output#1)不存在"。 现在打开"编辑运行顺序"时,下方提示区会用红字指出是哪个阶段的哪一条,运行前也会被拦下。把这一条删掉重新添加,重填参数,保存。

一直停在"等待通讯触发(trigger#1)"。 软件没读到 PLC 的信号。按 Modbus 或字符串协议里的排查表逐条查。

最终输出那一步报某个检测方案"运行尚未结束"。 这是勾了"是否为最终输出"却还有检测方案没跑完的安全网。正常不会出现;出现了说明某个检测方案卡住了,看运行日志里最后一条是哪个方案。

改了顺序,运行起来还是老样子。 没点"保存",或者改完没保存工程。改完顺序记得在调试端保存工程。

老工程打开后的运行顺序。 老版本的手排指令表在打开时自动换算成阶段。老工程打开后拍照顺序与原来一致;编辑器下方灰字会列出迁移时的调整,保存一次运行顺序后不再显示。换算完打开这个窗口看一眼,确认阶段划分和主动触发都对,再保存工程。

相关页面