产线自动化
概述
产线自动化是通过提供可视化的方式,使用JavaScript语言编写产线各设备之间的柔性调度逻辑,不再需要额外配备PLC或上位机。可支持150ms以上实时性要求的调度。
操作步骤
新建自动化化规则
登录Janus边缘计算平台,点击左侧菜单栏 产线自动化 - 自动化规则,进入自动化规则页面。
点击右上角 新增规则 ,进入自动化规则编辑页。
点击产线自动化应用,在自动化规则页面点击新增规则,进入产线自动化编辑页面。

基础信息
进入编辑页面,在 基础信息 标签页中填写自动化规则的基础信息。

- 名称:填写描述该自动化规则的名称(必填);
- 备注:填写描述该规则的备注信息(选填);
- 启用:若勾选,则在点击
保存时,启用该自动化规则。
设备范围
进入编辑页面,在 设备范围 标签页中配置本次产线自动化规则涉及到的设备,并给设备设置别名,用于在后面规则编写。

- 在设备一列中点击
⚙按钮在设备一行中点击选择此设备; - 不允许其他规则使用:若勾选,则该设备仅可通过本自动化规则执行产线自动化;
- 设置别名:设置一个别名,用于在后续规则设置及代码中用别名代称该设备;
- 点击
同步按钮,可替换当前规则中的原有名称,比如替换规则及触发条件、执行下发代码中的设备别名。

添加规则
进入编辑页面,在 规则 标签页中编写调度逻辑。
点击 添加规则 ,在对话窗口中输入规则名称,点击 确认 即可新建一条规则。

完成创建后,可对该创建的规则编写调度逻辑。
- 触发规则:可选
数据驱动和定时下发。- 若选择数据驱动,则需设定
相关设备数据驱动的数据范围; - 若选择定时下发,则需设定
定时下发的时间周期。
- 若选择数据驱动,则需设定
- 触发方式:可选
满足条件即触发及仅结果变更时触发- 满足条件即触发:当设备上传的数据满足
触发条件,则根据设定的触发次数执行若干次执行代码; - 仅结果变更时触发:根据触发条件返回结果判断是否执行触发,当触发判断结果从false变为true时,执行一次执行代码;
- 满足条件即触发:当设备上传的数据满足
- 触发条件:点击编辑按钮,可进入触发条件代码编辑窗口,编写调度成立的条件;
- 执行代码:点击编辑按钮,可进入执行代码编辑窗口,编写调度成立时需要传输的内容;
- 规则名称:编辑该规则名称;
- 是否启用:控制该规则的
启用/关闭状态。
触发条件示例
if ($CNC$ ['FeedSign']) { // $CNC$为设备别称,FeedSign为该设备某个布尔值数据栏位
return true;
}
return false; // 触发条件需最终输出一个true或false
执行代码示例
if (root["$mqtt$"]["LeftStart"] == 1) {
var params = {};
params["deviceID"] = "CNC001";
params["operation"] = "LeftStart";
}
if (root["$mqtt$"]["LeftEnd"] == 1) {
var params = {};
params["deviceID"] = "CNC001";
params["operation"] = "LeftEnd";
params["successPieces"] = root["$mqtt$"]["successPieces"];
params["failedPieces"] = root["$mqtt$"]["failedPieces"];
params["totalPieces"] = root["$mqtt$"]["totalPieces"];
}
调度下发到已接入设备执行代码示例
// 按照JavaScript语法标准编程
// 获取设备数据
var deviceData = root["$device$"]["data_4007"];
// 可添加条件分支,判断是否下发控制
if( deviceData == 1 ) {
// 准备要发送的参数内容,使用object包裹要下发的数据,
var pushData = {
"data_4008": 1,
"data_4009": 1
};
// 调用device.pushDataToDevice方法,将参数内容发送给设备,"$device$"是在设备范围中定义的别名
device.pushDataToDevice("$device$", pushData);
log.info("下发数据成功");
} else {
log.info("未达成条件,无法发送数据");
}
第三方系统通过API调度控制示例
// 获取设备数据
var deviceData = root["$device$"]["data_4007"];
// 可添加条件分支,判断是否下发控制
if( deviceData == 1 ) {
// 调用API
fetch("http://192.168.1.1:8080/api/v1/device/control", {
method: "POST",// 根据第三方系统API文档填入请求方法
headers: {
"Content-Type": "application/json",
//根据第三方系统API文档填写参数
},
body: JSON.stringify({
//根据第三方系统API文档填写参数
})
})
log.info("已发送控制请求");
}
日志打印示例,当语句触发时,可在系统左侧菜单栏运行日志中查看日志内容。
log.info("打印正常日志");
log.warning("打印警告日志");
log.error("打印错误日志");
运行日志
代码编写完毕后,若相关联设备上传数据,触发对应的产线自动化,在运行日志可查看执行情况,确认规则是否触发。

