由于东原在实际的生产中,无特定的生产任务单或指令单,主要是根据生产领料单作为生产的执行计划,所以在东原的工位机中,工单列表更侧重于体现领料信息。
页面流转

进入小程序时,会先读取工位机本地缓存,确认是否已经有选择过车间(工作中心)、产线和工位,如果已有产线和工位,则直接进入报工页面(即主页面),后续正常选择工单进行计数报工即可。
如果存在产线或工位未选择,则需要跳转到产线选择或工位选择页面,由操作人先行选择产线和工位后,才可进入报工页面进行生产计数报工。
在报工页面(即主页面)中,支持用户切换产线和工位,当用户点击“切换工位”时,清除工位缓存,但保留产线的缓存。只有当用户点击“切换产线”时,才会清除产线的缓存。需要注意的是:一旦用户切换了工位,那么工单将自动清除,执行“完成工单”的业务操作。
由于本工位机存在前后两个工位,所以在此工位机上所涉及的所有操作和业务逻辑,均应区分前后工位独立判断执行。
数采计数

计数器作为TCP Server周期广播数据,工位机连接计数器端口进行计数。由于广播周期是固定的,但实际生产速度是动态的,那么在一个周期下(即一次信号下),可能计数器会+1,也有可能会+2、+3甚至+0。所以对于报工数的统计上,应以实际上报周期数为依据,而不以信号数为依据。
报工上报
通过数采计数,可以实现工单的自动报工,为了减轻服务器压力,自动报工并非实时上报,而是以固定的规则进行上报:
- 在工单生产过程中,每半个小时(自然时间)会新增一条工序报工记录;
- 在同一条工序报工记录中,每20个计数会自动更新一次工序报工;
- 在同一条工序报工记录中,每1分钟会自动更新一次工序报工。
工位机的报工属于工单报工中的工序报工,非生产工单报工,生产工单的完成数和完成率与本工位机无关。
工单时间
在本工位机上,对生产工单和工序报工的几个时间字段会有关联影响。具体如下:
生产工单
生产计划
| 实际开始时间 | 第一条工序报工记录的报工开始时间 | 由于本工位机设计于前工程,可以认为是首道工序的开工时间 |
|---|---|---|
| 实际完成时间 | - | 由于本工位机非末工序,所以不能作为工单完工时间的依据 |
工单报工
工序报工记录
| 报工开始时间 | 报工记录的创建时间 | |
|---|---|---|
| 报工结束时间 | 最后一次更新报工记录的时间 | |
自动打印与生产批次

在实际生产场景中,一车托板会存放多少个物料基本是确定的,系统会自动从物料中加载“满托盘数量”的值作为当前工单的自动打印个数。工人也可以随时调整。如果切换了工单,那么会自动加载该工单对应物料的满托盘数量,即使前后两个工单都是同一个物料,那么也会加载物料中的配置。
但如果物料详情中“满托盘数量”这个字段如果本身是空或者其他内容,那么会将用户在工位机上的设置反写到物料详情中。
工人需要在托板上粘贴计数工位机打印的随件单,用于后道工序的流转。打印设置中,托板存放个数即为每个托板应当存放的个数,不同物料数量会有所区别。当报工数达到托板存放个数的整数倍时,会自动打印一张标签,用于粘贴在托板上。
需要注意的是,一个生产工单往往在最后一托板的生产时,最后一托数量并不能堆满整个托板,此时需要工人使用手动打印功能自行打印尾托标签。标签上的二维码内容即为生产批次号。
无论是自动打印还是手动打印,在打印时都会生成一个工单批次,批次的数量为打印数量,批次号由编码规则自动生成。
打印只支持TSPL协议,在此不可调整
由于打印时会生成一个批次号,所以工单的物料必须要启用批次管理,否则会导致无法创建批次号而造成打印失败。
2025-07-03:自动打印默认为关闭状态,因为实际生产中一个单可能会分几天做,也有可能同物料有多个单做,会存在第一个托盘不是从 0 开始的情况。此时自动打印计数与托盘实际是否装满会存在偏差。
完成工单的定义
完成工单指的是完成当前的工序工单,非生产工单。在以下几种情况会认为是完成工单:
- 当用户点击“完工”按钮时;
- 当用户切换工单时,原工单将被完工;
- 当用户切换工位时,原工单将被完工。
在完成工单时,将立即更新当前的报工数到最新的工序报工记录中,且将当前时间更新为工序报工的结束时间。
投料和产出达到计划数时
当投料和产出达到计划数时,将会播放相应的语音提醒,同时会弹出提示弹窗要求用户进行操作。此时用户可以选择完工换单或不换单继续生产,默认是不换单继续生产。需要注意的是:由于数采报工机制的限制,投料和产出并不能逐一记录,所以判定条件应当是≥计划数,而非=计划数。
运行日志
日志需要严格区分记录日志的工位和所做的操作。日志分为报工日志和操作日志两大类,报工日志用于记录工单报工过程中的数据状态。操作日志用于记录用户在工位机上所做的所有操作。两类日志不区分文件也不区分格式,均按发生时间记录即可。
报工日志
报工日志以接收到 TCP Server 消息为记录动作,如果是投入产出计数工位机,则需要将左右工位区分开。每收到一次 TCP Server 的消息就记录一条日志信息,即使当前没有选择产线、工位和工单。
字段说明
| 字段 | 来源 | 备注 |
|---|---|---|
| 时间 | 该条日志记录的时间 | 需要记录毫秒,格式: yyyy-MM-dd HH:mm:ss.SSS |
| 工位位置 | 左工位和右工位 | 工位位置只有“左”和“右”两种。 产出计数工位机固定为“右” |
| 工位 | 当前所选择的工位的名称 | 如果还没有选择工位,则“-” |
| 产线 | 当前所选产线的名称 | 如果还没有选择产线,则“-” |
| 工单号 | 当前工位所选工单 | 如果还没有选择工单,则“-” |
| 设备报数 | 当前接收到的设备报数 | 设备报什么就记录什么,不做任何处理。如果没有接收到设备报数,则“-” |
| 周期报工数 | 当前设备报数减去上一条设备报数 | 如果没有接收到设备报数,则“-” |
| 报工数 | 当前工位的报工数 | 如果还没有报数,则“-” |
| 操作 | 本日志用户所做的动作名称 | 记录内容见下文《操作日志表》 |
示例
时间:2025-07-17 16:12:17.245 工位位置:左工位 工位:喇叭前工程-A001 产线:喇叭自动线 工单号:2978442-1 设备报数:1823 周期报工数:2 报工数:1823 操作:收到TCP消息
操作日志
操作日志用于记录用户的所有操作,只要符合下文《操作日志表》中的所有操作,都将记录一条操作日志。当操作日志的写入和报工日志的写入刚好时间重叠时,优先记录操作日志。
字段说明
| 字段 | 来源 | 备注 |
|---|---|---|
| 时间 | 该条日志记录的时间 | 需要记录毫秒,格式: yyyy-MM-dd HH:mm:ss.SSS |
| 工位位置 | 左工位和右工位 | 仅投入产出计数工位机有此字段 |
| 工位 | 当前所选择的工位的名称 | 如果还没有选择工位,则“-” |
| 产线 | 当前所选产线的名称 | 如果还没有选择产线,则“-” |
| 工单号 | 当前工位所选工单 | 如果还没有选择工单,则“-” |
| 原数据 | 所修改内容的原数据 | 记录内容见下文《操作日志表》 |
| 新数据 | 所修改的内容 | 记录内容见下文《操作日志表》 |
| 操作 | 本日志用户所做的动作名称 | 记录内容见下文《操作日志表》 |
示例
时间:2025-07-17 16:12:17.245 工位位置:左工位 工位:喇叭前工程-A001 产线:喇叭自动线 工单号:2978442-1 原数据:4882 新数据:3000 操作:修改报工数
操作日志表
当用户进行以下动作时,需要记录操作日志。
| 动作名称 | 动作描述 | 原数据 | 新数据 | 备注 |
|---|---|---|---|---|
| 设备连接 | 用户修改设备连接,当点击“连接”按钮时才会记录。 另外:无论是手动打印还是自动打印,连接打印机的动作也视为设备连接。![]() |
设备名称:XXXX 设备 IP:设备端口号 原设备 IP 和设备端口号如果是空,则“-”。 |
设备名称:XXXX 设备 IP:设备端口号 |
设备名称只有:计数器-左、计数器-右和打印机三种。 |
| 设备连接成功 | 当设备连接成功或失败时记录,包括计数器的连接和打印机的连接。![]() |
设备名称:XXXX | 设备名称:XXXX 连接状态:XX |
设备名称只有:计数器-左、计数器-右和打印机三种。 连接状态只有:“成功”和“失败”两种。 |
| 打印 | 当打印时记录 | 固定“-” | 工单号:XXXX 批号:XXXX 打印数:XXXX 打印方式:XXXX |
工单号和批号如果没有,则“-”。 打印数指的是本次打印的数量,而不是报工总数。 打印方式只有“手动”和“自动”两种 |
| 修改自动打印 | 当修改自动打印开关时记录,包括被约束条件所自动关闭也会记录。 | 原开关状态 | 修改后的开关状态 | 开关状态只有“开”和“关”两种 |
| 修改托盘数量 | 当修改打印设置中的“托板存放个数”时记录,包括切换工单后自动读取的物料信息所引起的变更也会记录。 | 原设置值 | 新设置值 | |
| 修改报工数 | 当用户修改报工数时记录,只有手动修改报工数才会被记录。 | 原报工数 | 新报工数 | 报工数指的是报工日志中的报工数,而不是周期报工数。 左右工位分开记录。 |
| 完工 | 当用户点击完工时记录 | 工单号:XXXX 报工数:XXXX |
左右工位分开记录。 | |
| 切换产线 | 当用户切换产线时记录 | 产线名称:XXXX 产线编号:XXXX |
产线名称:XXXX 产线编号:XXXX |
原数据如果没有,则“-”。 |
| 切换工位 | 当用户切换工位时记录 | 工位位置:XXXX 工位名称:XXXX 工位编号:XXXX |
工位位置:XXXX 工位名称:XXXX 工位编号:XXXX |
工位位置只有“左”和“右”两种。 产出计数工位机固定为“右”。 原数据如果没有,则“-”。 左右工位分开记录。 |
| 切换工单 | 当用户切换工单时记录 | 工单号:XXXX | 工单号:XXXX | 原数据如果没有,则“-”。 左右工位分开记录。 |
| 异常 | 当系统消息非正常时记录,无需区分情况 | 固定“-” | 工位位置:XXXX 异常:XXXX |
异常内容记录系统消息原文即可。 左右工位分开记录。 |
任务
- 按要求实现报工日志和操作日志的记录
报工日志和操作日志需要同步上传至在线接口,需求见:【低】工位机日志在线化和【低】工位机日志查看小程序
注意⚠️
本文档仅针对代码版工位机,OCS 实现的工位机已经停用。
最后编辑:郭腾彬 更新时间:2025-10-28 15:52
另外:无论是手动打印还是自动打印,连接打印机的动作也视为设备连接。
