JOYZL SCADA Server
工厂类接口
| 模块 | 接口 | 用途 | 权限 |
|---|---|---|---|
| Factory | Review | 追溯工件履历 | SYATEM |
| Factory | YieldAmount | 获取产量数量 | SYATEM |
| Factory | YieldSelect | 获取多个产量 | SYATEM |
| Factory | PieceAmount | 获取工件数量 | SYATEM |
| Factory | PieceSelect | 获取多个工件 | SYATEM |
| Factory | PieceQueues | 获取排队工件 | SYATEM |
| Factory | PieceCreate | 新建排队工件 | SYATEM |
| Factory | PieceRemove | 移除排队工件 | SYATEM |
| Factory | PieceClear | 清除排队工件 | SYATEM |
| Factory | PieceScraps | 获取报废工件 | SYATEM |
| Factory | PieceScrap | 报废工件 | SYATEM |
| Factory | EquipmentAmount | 获取装备数量 | SYATEM |
| Factory | EquipmentSelect | 获取多个装备 | SYATEM |
| Factory | EquipmentQuery | 获取单个装备 | SYATEM |
| Factory | EquipmentState | 获取装备状态 | SYATEM |
| Device | SignalSelect | 获取遥测数据 | SYATEM |
追溯
追溯工件的加工履历和质检数据及质检结果。 在一件一码产品生产过程中,由扫码器读取工件编号(条形码或二维码), 应要求关键工序的机台和质检环节执行扫码动作。 JOYZL SCADA 软件系统必须依赖工件编号来记录加工履历和质检数据, 对于不扫码的生产过程,不会生成加工履历。
追溯工件履历和采集数据的步骤:
- 获取工件履历(Review), 查询工件经历的机台;
- 获取遥测信号(SignalSelect), 查询具体机台诸如“速度”、“温度”等信号的标识;
- 获取时序数据(ValueSelect), 按具体信号和时间段查询历史时序数据。
追溯工件履历(Review)
获取指定工件编号(工件表面蚀刻或印制的唯一编码)的加工履历,包含工件经历的机台和质检。 /review 接口同时返回指定工件的加工履历和质检记录。
请求示例
GET /review?code=JOYZL-20251030-000321
POST /review
// 由请求内容提交参数
code=JOYZL-20251030-000321响应示例
{
// 工件编号(条形码或二维码)
"Code": "JOYZL-20251030-000321",
// 工件记录
"Pieces": [
{
// 装备标识
"EquipmentId": 6892182769831190,
// 装备编号
"EquipmentNumber":"A101",
// 员工编号
"Employee": "O0021",
// 工装编号
"Tooling": "M0946",
// 扫描时间
"Scan": "2025-08-26 10:12:00",
// 加工开始时间
"Begin": "2025-08-26 10:15:00",
// 加工结束时间
"End": "2025-08-26 11:15:00"
},
{
// 装备标识
"EquipmentId": 2815031825661954,
// 装备编号
"EquipmentNumber": "G01",
// 员工编号
"Employee": "O0028",
// 扫描时间
"Scan": "2025-08-26 10:12:00",
// 质检结果
"Verdict": {
"Name": "OK",
"Value": 1,
"Text": "合格"
}
}
…
]
}请求成功返回:HTTP Status 200 OK, 响应内容为 JSON 对象,其中包含加工机台记录和质检记录; 其它状态码均为失败,意味着请求参数无效或服务不可用。 此接口只提供 HTTP 形式,集成开发包(JOYZL SCADA Client)没有此接口, 因此返回 JSON 中没有响应状态(Status)字段。
根对象的结果(Verdict)字段表示最终质检结果, 有三种值:"OK"、"NG"、"UN",分别代表:合格、不良、未知。
产量
装备在每个轮值周期内生产的产品数量(PCS)。
获取产量数量(YieldAmount)
获取全部或指定范围的装备在轮值周期内的产量数量,可见范围取决于用户所在的区域。 缺省所有参数时,返回当前用户可见范围的所有装备的当前轮值内数量; 指定区域标识(ZoneId)参数时,仅返回指定区域(含子区域)的产量记录数量; 指定装备标识(EquipmentId)或编号(EquipmentNumber)参数时,仅返回指定装备的产量记录数量; 指定开始(Begin)和结束(End)时间时将统计指定时间段的产量数量, 如果未指定开始(Begin)和结束(End)时间则仅返回当前轮值内数量。
请求示例
{
// 区域标识(可选)
"ZoneId": 6892182778556009,
// 装备标识(可选)
"EquipmentId": 6892182769831190,
// 装备编号(可选)
"EquipmentNumber": "A101",
// 开始时间(可选)
"Begin": "2022-12-13 00:00:00",
// 结束时间(可选)
"End": "2022-12-13 23:59:59"
}响应示例
{
"ZoneId": 6892182778556009,
"EquipmentId": 6892182769831190,
"EquipmentNumber": "A101",
"Begin": "2022-12-13 00:00:00",
"End": "2022-12-13 23:59:59",
// 轮值记录数量
"Yields": 892,
// 总耗时
"Duration": 7654,
// 总产出
"Quantity": 7230,
// 响应状态码
"Status": 2
}获取多个产量(YieldSelect)
获取全部或指定范围的装备在轮值周期内的产量,可见范围取决于用户所在的区域。 缺省所有参数时,返回当前用户可见范围的所有装备的当前轮值内产量; 指定区域标识(ZoneId)参数时,仅返回指定区域(含子区域)的装备产量; 指定装备标识(EquipmentId)或编号(EquipmentNumber)参数时,仅返回指定装备的产量; 指定开始(Begin)和结束(End)时间时将统计指定时间段的产量, 如果未指定开始(Begin)和结束(End)时间则仅返回当前轮值内产量。
请求示例
{
// 区域标识(可选)
"ZoneId": 6892182778556009,
// 装备标识(可选)
"EquipmentId": 6892182769831190,
// 装备编号(可选)
"EquipmentNumber": "A101",
// 开始时间(可选)
"Begin": "2022-12-13 00:00:00",
// 结束时间(可选)
"End": "2022-12-13 23:59:59"
}响应示例
{
"ZoneId": 6892182778556009,
"EquipmentId": 6892182769831190,
"EquipmentNumber": "A101",
"Begin": "2022-12-13 00:00:00",
"End": "2022-12-13 23:59:59",
// 产量集合
"Yields": [
{
// 装备标识
"EquipmentId": 6892182769831190,
// 产出
"Quantity": 6892,
// 耗时
"Duration": 87654,
// 开始时间
"Begin": "2022-12-13 00:00:00",
// 结束时间
"End": "2022-12-13 23:59:59"
}
…
],
// 响应状态码
"Status": 2
}工件
具有唯一代码标识的工件。
获取工件数量(PieceAmount)
获取全部或指定范围的工件数量,可见范围取决于用户所在的区域。 缺省所有参数时,返回当前用户可见范围的所有待加工工件(排队件); 指定区域标识(ZoneId)参数时,仅返回指定区域(含子区域)的工件数量; 指定装备标识(EquipmentId)或编号(EquipmentNumber)参数时,仅返回指定装备的工件数量; 指定开始(Begin)和结束(End)时间时将统计指定时间段的工件数量, 如果未指定开始(Begin)和结束(End)时间则仅返回当前排队数量。
请求示例
{
// 区域标识(可选)
"ZoneId": 6892182778556009,
// 装备标识(可选)
"EquipmentId": 6892182769831190,
// 装备编号(可选)
"EquipmentNumber": "A101",
// 开始时间(可选)
"Begin": "2022-12-13 00:00:00",
// 结束时间(可选)
"End": "2022-12-13 23:59:59"
}响应示例
{
"ZoneId": 6892182778556009,
"EquipmentId": 6892182769831190,
"EquipmentNumber": "A101",
"Begin": "2022-12-13 00:00:00",
"End": "2022-12-13 23:59:59",
// 工件数量
"Piece": 1234,
// 响应状态码
"Status": 2
}获取多个工件(PieceSelect)
获取全部或指定范围的工件,可见范围取决于用户所在的区域。 指定区域标识(ZoneId)参数时,仅返回指定区域(含子区域)的工件; 指定装备标识(EquipmentId)或编号(EquipmentNumber)参数时,仅返回指定装备的工件; 指定开始(Begin)和结束(End)时间时将统计指定时间段的工件, 如果未指定开始(Begin)和结束(End)时间则仅返回当前排队工件。
请求示例
{
// 区别标识(可选)
"ZoneId": 6892182778556009,
// 装备标识(可选)
"EquipmentId": 6892182769831190,
// 装备编号(可选)
"EquipmentNumber": "A101",
// 工件编号(可选)
"Code": "JOYZL-20251030-000321",
// 开始时间(可选)
"Begin": "2022-12-13 00:00:00",
// 结束时间(可选)
"End": "2022-12-13 23:59:59"
}响应示例
{
"ZoneId": 6892182778556009,
"EquipmentId": 6892182769831190,
"EquipmentNumber": "A101",
"Code": "JOYZL-20251030-000321",
"Begin": "2022-12-13 00:00:00",
"End": "2022-12-13 23:59:59",
// 工件集合
"Pieces": [
{
// 装备标识
"EquipmentId": 6892182769831190,
// 员工编号
"Employee": "O0021",
// 工件编号
"Code": "JOYZL-20251030-000321",
// 扫码时间
"Scan": "2025-08-26 10:12:00",
// 加工开始时间
"Begin": "2025-08-26 10:15:00",
// 加工结束时间
"End": "2025-08-26 11:15:00"
}
…
],
// 响应状态码
"Status": 2
}获取排队工件(PieceQueues)
获取全部或指定范围的工件,可见范围取决于用户所在的区域。 缺省所有参数时,返回当前用户可见范围的所有待加工工件(排队件); 指定区域标识(ZoneId)参数时,仅返回指定区域(含子区域)的工件; 指定装备标识(EquipmentId)或编号(EquipmentNumber)参数时,仅返回指定装备的工件。
请求示例
{
// 区别标识(可选)
"ZoneId": 6892182778556009,
// 装备标识(可选)
"EquipmentId": 6892182769831190,
// 装备编号(可选)
"EquipmentNumber": "A101"
}响应示例
{
"ZoneId": 6892182778556009,
"EquipmentId": 6892182769831190,
"EquipmentNumber": "A101",
// 工件集合
"Pieces": [
{
// 装备标识
"EquipmentId": 6892182769831190,
// 员工编号
"Employee": "O0021",
// 工件编号
"Code": "JOYZL-20251030-000321",
// 扫码时间
"Scan": "2025-08-26 10:12:00"
}
…
],
// 响应状态码
"Status": 2
}新建排队工件(PieceCreate)
在指定装备新增排队待加工的工件,然后返回装备所有排队的工件。
请求示例
{
// 装备标识(单选)
"EquipmentId": 6892182769831190,
// 装备编号(单选)
"EquipmentNumber": "A101",
// 工件编号(必要)
"Code": "JOYZL-20251030-000321",
// 扫码时间(必要)
"Scan": "2022-12-13 10:30:20"
}响应示例
{
"EquipmentId": 6892182769831190,
"EquipmentNumber": "A101",
"Code": "JOYZL-20251030-000321",
"Scan": "2022-12-13 10:30:20",
// 工件集合
"Pieces": [
{
// 装备标识
"EquipmentId": 6892182769831190,
// 员工编号
"Employee": "O0021",
// 工件编号
"Code": "JOYZL-20251030-000321",
// 扫码时间
"Scan": "2025-08-26 10:12:00"
}
…
],
// 响应状态码
"Status": 2
}移除排队工件(PieceRemove)
移除装备排队中的工件,然后返回装备所有排队的工件。
请求示例
{
// 装备标识(单选)
"EquipmentId": 6892182769831190,
// 装备编号(单选)
"EquipmentNumber": "A101",
// 工件编号(必要)
"Code": "JOYZL-20251030-000321"
}响应示例
{
"EquipmentId": 6892182769831190,
"EquipmentNumber": "A101",
"Code": "JOYZL-20251030-000321",
// 工件集合
"Pieces": [
{
// 装备标识
"EquipmentId": 6892182769831190,
// 员工编号
"Employee": O0021,
// 工件编号
"Code": "JOYZL-20251030-000321",
// 扫码时间
"Scan": "2025-08-26 10:12:00"
}
…
],
// 响应状态码
"Status": 2
}清除排队工件(PieceClear)
清除指定装备所有排队的工件,无法清除已开始加工的工件,然后返回装备正在加工的工件(如果有)。
请求示例
{
// 装备标识(单选)
"EquipmentId": 6892182769831190,
// 装备编号(单选)
"EquipmentNumber": "A101"
}响应示例
{
"EquipmentId": 6892182769831190,
"EquipmentNumber": "A101",
// 工件
"Piece": {
// 装备标识
"EquipmentId": 6892182769831190,
// 员工编号
"Employee": O0021,
// 工件编号
"Code": "JOYZL-20251030-000321",
// 扫码时间
"Scan": "2025-08-26 10:12:00",
// 开始加工时间
"Begin": "2025-08-26 10:15:00"
},
// 响应状态码
"Status": 2
}获取报废工件(PieceScraps)
报废工件 由管理系统或扫码端报告的明确已报废工件, JOYZL SCADA 系统不会自动推断工件是否报废, 即便已联网的检验设备报告 NG 也不会将工件自动纳入报废工件。
查询报废工件无须校验区域,可全局查询以便于扫码端校验; 缺省所有参数时,返回全局所有报废工件; 指定装备标识(EquipmentId)或编号(EquipmentNumber)参数时,仅返回指定装备的报废工件; 指定开始(Begin)和结束(End)时间时将统计指定时间段报告的报废工件。
请求示例
{
// 装备标识(可选)
"EquipmentId": 6892182769831190,
// 装备编号(可选)
"EquipmentNumber": "A101",
// 开始时间(可选)
"Begin": "2022-12-13 00:00:00",
// 结束时间(可选)
"End": "2022-12-13 23:59:59"
}响应示例
{
"EquipmentId": 6892182769831190,
"EquipmentNumber": "A101",
"Begin": "2022-12-13 00:00:00",
"End": "2022-12-13 23:59:59"
// 工件集合
"Pieces": [
{
// 装备标识
"EquipmentId": 6892182769831190,
// 工件编号
"Code": "JOYZL-20251030-000321",
// 扫码时间
"Scan": "2025-08-26 10:12:00"
}
…
],
// 响应状态码
"Status": 2
}报废工件(PieceScrap)
报告工件报废。
请求示例
{
// 装备标识(可选)
"EquipmentId": 6892182769831190,
// 装备编号(可选)
"EquipmentNumber": "A101",
// 员工编号(可选)
"Employee": "O0021",
// 工件编号(必要)
"Code": "JOYZL-20251030-000321",
}响应示例
{
"EquipmentId": 6892182769831190,
"EquipmentNumber": "A101",
"Employee": "O0021",
"Code": "JOYZL-20251030-000321",
// 响应状态码
"Status": 2
}装备
装备表示工厂车间的生产设备,通常具有较大体积; 为便于与通信装置进行区分,装备对应大型设备,而设备对应通信装置。 装备由系统中配置的设备自动生成,多个通信设备可能属于单个装备。
获取装备数量(EquipmentAmount)
获取全部或指定区域的装备数量,可见范围取决于用户所在的区域。 缺省所有参数时,返回当前用户可见范围的所有装备数量; 指定区域标识(ZoneId)参数时,仅返回指定区域(不含子区域)的装备数量; 指定类型字符串(Type)参数时,仅返回指定类型的装备数量; 指定启用或禁用(Enable)参数时,仅返回指定状态的装备数量。
请求示例
{
// 区域标识(可选)
"ZoneId": 6892141150584634,
// 类型字符串(可选)
"Type": "CNC"
}响应示例
{
"ZoneId": 3358725158993927,
"Type": "CNC",
// 装备数量
"Equipment ": 142,
// 启用数量
"Enable ": 140,
// 在产数量
"Produce": 108,
// 待产数量
"Waiting ": 30,
// 告警数量
"Alarm ": 0,
// 响应状态码
"Status": 2
}获取多个装备(EquipmentSelect)
获取全部或指定区域的装备,可见范围取决于用户所在的区域。 缺省所有参数时,返回当前用户可见范围的所有装备; 指定区域标识(ZoneId)参数时,仅返回指定区域(不含子区域)的装备; 指定类型字符串(Type)参数时,仅返回指定类型的装备; 指定启用或禁用(Enable)参数时,仅返回指定状态的装备。
请求示例
{
// 区域标识(可选)
"ZoneId": 6892141150584634,
// 启用禁用(可选)
"Enable": true,
// 类型字符串(可选)
"Type": "CNC"
}响应示例
{
"ZoneId": 6892141150584634,
"Enable": true,
"Type": "CNC",
// 装备
"Equipments": [
{
// 装备标识
"Id": 6892141164168701,
// 区域标识
"ZoneId": 4000605404135427,
// 装备名称
"Name": "CNC",
// 装备编号
"Number": "A101",
// 生产厂商
"Manufacturer": "兄弟",
// 装备型号
"Model": "S500",
// 备注
"Remark": "数控加工",
// 类型
"Type": "CNC",
// 启用或禁用
"Enable": true,
// 创建时间
"Created": "2025-08-25 11:42:22",
// 更新时间
"Updated": "2025-08-25 11:42:28",
// 设备标识
"DeviceId": 821196270600196,
// 计量属性标识
"QuantityId": 821177815662595,
// 计时属性标识
"DurationId": 0,
// 扫码属性标识
"ScannerId": 0,
// 报警状态
"Alarm": {
"name": " NONE",
"text": "无",
"value": 0
},
// 作业状态
"State": {
"name": " PRODUCE",
"text": "生产",
"value": 1
},
// 当前计量
"Quantity": 1230,
// 当前计时
"Duration": 12560,
// 状态更新时间戳
"Timestamp": 123489876565
}
...
],
// 响应状态码
"Status": 2
}获取单个装备(EquipmentQuery)
用于通过装备标识或编号获取单个装备。
请求示例
{
// 装备标识(单选)
"Id": 6892141164168701,
// 装备编号(单选)
"Number": "A101"
}响应示例
{
"Id": 6892141164168701,
"Number": "A101",
// 装备
"Equipment": {
// 装备标识
"Id": 6892141164168701,
// 区域标识
"ZoneId": 4000605404135427,
// 装备名称
"Name": "CNC",
// 装备编号
"Number": "A101",
// 生产厂商
"Manufacturer": "兄弟",
// 装备型号
"Model": "S500",
// 备注
"Remark": "数控加工",
// 类型
"Type": "CNC",
// 启用或禁用
"Enable": true,
// 创建时间
"Created": "2025-08-25 11:42:22",
// 更新时间
"Updated": "2025-08-25 11:42:28",
// 设备标识
"DeviceId": 821196270600196,
// 计量属性标识
"QuantityId": 821177815662595,
// 计时属性标识
"DurationId": 0,
// 扫码属性标识
"ScannerId": 0,
// 报警状态
"Alarm": {
"name": " NONE",
"text": "无",
"value": 0
},
// 作业状态
"State": {
"name": " PRODUCE",
"text": "生产",
"value": 1
},
// 当前计量
"Quantity": 1230,
// 当前计时
"Duration": 12560,
// 状态更新时间戳
"Timestamp": 123489876565
},
// 响应状态码
"Status": 2
}获取装备状态(EquipmentState)
获取指定装备的最新状态。 此接口仅返回装备状态,不会返回装备的其它字段。
请求示例
{
// 装备标识(必要)
"Id": 6892141164168701
}响应示例
{
"Id": 6892141164168701,
// 报警状态
"Alarm": {
"name": " NONE",
"text": "无",
"value": 0
},
// 作业状态
"State": {
"name": " PRODUCE",
"text": "生产",
"value": 1
},
// 当前计量
"Quantity": 1230,
// 当前计时
"Duration": 12560,
// 状态更新时间戳
"Timestamp": 123489876565,
// 响应状态码
"Status": 2
}数据
获取装备任意时段采集数据的步骤:
- 获取遥测信号(SignalSelect), 查询诸如“速度”、“温度”、“电压”等信号的标识;
- 获取时序数据(ValueSelect), 按具体信号和时间段查询历史时序数据。
提示: 大部分时序数据都为浮点数或整数, 可通过面积图或折线图以图形方式展现于最终用户, 这有助于直观反应装备当时的工况。
获取遥测信号(SignalSelect)
获取装备(设备)遥测的信号项。 这些信号项(遥测信号)在生产加工过程中将被记录时序数据。 装备(设备)通常有多项遥测信号(属性), 接口会过滤掉不产生数据或仅用于控制的信号项。
遥测信号的属性标识(AttributeId)可用于获取时序数据, 请参考通信类接口 获取时序数据(ValueSelect) 了解更多信息。
请求示例
{
// 设备标识(单选)
"DeviceId": 2815031825661954,
// 装备标识(单选)
"EquipmentId": 6892182778556009,
// 装备编号(单选)
"EquipmentNumber": "A101"
}响应示例
{
"DeviceId": 2815031825661954,
"EquipmentId": 6892182778556009,
"EquipmentNumber": "A101",
// 信号集合
"Signals": [
{
// 属性标识
"AttributeId": 345659483765364,
// 属性名称
"Name": "转速",
// 单位
"Unit": "RPM"
}
…
],
// 响应状态码
"Status": 2
}