123 KiB
RDS 脚本方法字典
脚本方法使用示例
以下以异步创建并运行一个任务的脚本方法为例进行演示:
// 构建createWindTask脚本方法所需要的输入参数
var inputParams = {"fromSite": "PS-01"};// 天风任务的输入参数
var taskParam = {
// 任务类型 id
"taskId": "12345",
// 任务名称
"taskLabel": "Ps2Ws",
// 指定创建的任务实例的id
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035f9",
//任务优先级(天风任务的参数:task.priority)
"priority": 10
// 在天风任务中定义的参数
"inputParams": JSON.stringify(inputParams)
};
// 调用createWinTask方法,传入上面的输入参数
jj.createWindTask(JSON.stringify(taskParam));
任务相关
校验任务参数
-
方法说明
校验输入参数中的 taskId 和 taskLabel 字段,如果同时为空,则返回 false,否则则返回 true。
function checkTaskParam(param: string): boolean
-
输入参数
其参数
param是 JSON 字符串,结构如下:
{
// 任务类型 id
"taskId": "12345",
// 任务名称
"taskLabel": "Ps2Ws"
}
-
输出参数
-
true,taskId 和 taskLabel 字段不是都为空字符串。
-
false,taskId 和 taskLabel 字段同时为空字符串。
-
异常
本方法会抛出异常。
异步创建并运行一个任务
-
方法说明
本方法是非阻塞方法,将在脚本中创建一个线程,来执行天风任务的实例。
function createWindTask(param: string): string
-
输入参数
其参数
param是 JSON 字符串,结构如下:
{
// 任务类型 id
"taskId": "12345",
// 任务名称
"taskLabel": "Ps2Ws",
// 指定创建的任务实例的id
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035f9",
// 在天风任务中定义的参数
"inputParams": "{\"fromSite\":\"PS-01\"}"
}
注意:taskId 和 taskLabel 两者必选其一。如果同时存在,将首选使用 taskId 字段。
注意,inputParam 字段,是个 JSON 字符串。需要在脚本里将任务参数序列化为 JSON。
-
输出参数
JSON字符串
{
"code":200, //200表示成功 -1表示失败
"msg":"" //提示信息
}
-
异常
本方法不抛出异常。
根据任务实例 ID 查询任务实例
-
方法说明
根据任务实例 ID 查询任务数据。
function getTaskRecordById(taskRecordId: string): string
-
输入参数
taskRecordId,string 类型,是任务实例的唯一 ID。
-
输出参数
-
如存在指定 ID 的任务实例,返回 JSON 格式的字符串。
{ // 任务实例id "id":"123", // 天风任务id "defId":"6743", // 天风任务名 defLabel:"agvMove", // 任务实例状态(1000:运行中,1001:终止,1002:暂停,1003:结束,1004:异常结束,1005:重启异常,1006:异常中断) "status":1000, // 任务创建时间 "createdOn":"2022-02-12 11:23:12.0", // 任务结束时间 "endedOn":"2022-02-12 11:26:12.0", // 任务状态描述 "stateDescription":"物料搬运中", // 外部订单号 “outOrderNo”:"D6567812", // 机器人Id "agvId":"" } -
如果不存在指定 ID 的任务实例,返回 “null”。
-
异常
本方法抛出异常。
根据外部单号查询任务实例列表
-
方法说明
根据外部单号查询任务实例列表。
function getTaskRecordListByOutOrderNo(outOrderNo: string): string
-
输入参数
outOrderNo,string 类型,是外部单号 ID。
-
输出参数(JSON 格式的字符串):
是 JSON 数组,包含查询到的任务实例数据。
[{
// 任务实例id
"id":"123",
// 天风任务id
"defId":"6743",
// 天风任务名
defLabel:"agvMove",
// 任务实例状态(1000:运行中,1001:终止,1002:暂停,1003:结束,1004:异常结束,1005:重启异常,1006:异常中断)
"status":1000,
// 任务创建时间
"createdOn":"2022-02-12 11:23:12",
// 结束原因
"endedReason":"运行结束",
// 任务结束时间
"endedOn":"2022-02-12 11:26:12",
// 任务状态描述
"stateDescription":"物料搬运中",
// 外部订单号
“outOrderNo”:"D6567812"
}]
如果不存在指定外部单号的任务实例,返回 "[]"。
-
异常
本方法抛出异常。
根据机器人 ID 查询任务实例列表
-
方法说明
根据机器人ID查询任务实例列表。
function getTaskRecordByAgvId(agvId: string): string
-
输入参数
agvId,string 类型,是机器人 ID。
-
输出参数(JSON 格式的字符串):
是 JSON 数组,包含查询到的任务实例数据。
[{
// 任务实例id
"id":"123",
// 天风任务id
"defId":"6743",
// 天风任务名
defLabel:"agvMove",
// 任务实例状态(1000:运行中,1001:终止,1002:暂停,1003:结束,1004:异常结束, 1005:重启异常, 1006:异常中断)
"status":1000,
// 任务创建时间
"createdOn":"2022-02-12 11:23:12",
// 结束原因
"endedReason":"运行结束",
// 任务结束时间
"endedOn":"2022-02-12 11:26:12",
// 任务状态描述
"stateDescription":"物料搬运中",
// 外部订单号
“outOrderNo”:"D6567812"
}]
如果不存在对应机器人的任务实例数据,返回 "[]"。
-
异常
本方法抛出异常。
Core 运单封口
-
方法说明
将 Core 中指定 ID 的运单封口。
function markComplete(orderId: string): void
-
输入参数
orderId,string 类型,Core 运单执行 ID。
-
输出参数
无
-
异常
本方法会抛出异常。
校验任务实例ID是否存在
-
方法说明
校验任务实例id是否存在。
function isTaskRecordIdExist(taskRecordId: string): boolean
-
输入参数
taskRecordId,string 类型,任务实例id。
-
输出参数
-
true,存在。
-
false,不存在。
-
异常
本方法会抛出异常。
校验任务名称是否存在
-
方法说明
校验任务名称是否存在。
function isTaskLabelExist(taskName: string): boolean
-
输入参数
taskName,string 类型,任务名称。
-
输出参数
-
true,存在。
-
false,不存在。
-
异常
本方法会抛出异常。
根据查询条件获取任务实例
-
方法说明
根据参数的条件查询任务实例。
function queryTaskRecord(param: string): string
-
输入参数
其参数
param是 JSON 字符串,结构如下:
{
// 任务类型 id
"taskId":"",
// 任务名
"taskLabel":"",
// 任务实例 id
"taskRecordId":"",
// 任务实例状态(1000:运行中,1001:终止,1002:暂停,1003:结束,1004:异常结束,1005:重启异常,1006:异常中断)
"status":"",
// 执行任务的机器人 id
"agvId":"",
// 开始时间,需满足‘yyyy-MM-dd HH:mm:ss’格式。如果该值非空,则返回创建日期大于该时间的任务实例
"startDate":"",
// 结束时间,需满足‘yyyy-MM-dd HH:mm:ss’格式。如果该值非空,则返回创建日期小于该时间的任务实例
"endDate":""
}
-
输出参数
是 JSON 数组,包含查询到的任务实例数据。
[{
// 任务实例id
"id":"123",
// 天风任务id
"defId":"6743",
// 天风任务名
defLabel:"agvMove",
// 任务实例状态(1000:运行中,1001:终止,1002:暂停,1003:结束,1004:异常结束,1005:重启异常,1006:异常中断)
"status":1000,
// 任务创建时间
"createdOn":"2022-02-12 11:23:12",
// 结束原因
"endedReason":"运行结束",
// 任务结束时间
"endedOn":"2022-02-12 11:26:12",
// 任务状态描述
"stateDescription":"物料搬运中",
// 外部订单号
“outOrderNo”:"D6567812"
}]
如果不存在满足条件的任务实例数据,返回 "[]"。
-
异常
本方法抛出异常。
接收并持久化第三方系统任务请求
- 方法说明
function receiveThirdOrder(orderParam: string): boolean
接收第三方系统发送的任务请求,并存入数据库(此时未必创建任务)。表结构如下:
CREATE TABLE `t_windthirdorder` (
`id` varchar(255) NOT NULL,
`create_date` datetime(6) DEFAULT NULL,
`params` longtext,
`status` int DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
输入参数
其参数
orderParam是 JSON 字符串,示例如下:
{
"name": "运单名",
"type": "任务名称taskLabel"
}
注:数据表为通用第三方请求数据表,orderParam 存入表 params 字段,orderParam 字段可自定义结构。
-
输出参数
-
true,调用方法成功。
-
false,调用方法失败。
-
异常
本方法不抛出异常。
保存任务运行时日志
-
方法说明
新增RDS任务实例的运行日志,该日志将显示在任务实例的监控界面中。
function saveTaskLog(logParam: string): void
-
输入参数
其参数
param是 JSON 字符串,结构如下:
{
// 任务类型 id
"taskId": "402883a27cda555f017cda6f55ad01b6",
// 任务实例 id
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035f9",
// 任务块 id
"blockId": 2,
// 日志信息
"message": "[RootBp]任务开始运行:taskId=402883a27cda555f017cda6f55ad01b6",
// 日志级别:1,正常运行;2,正常停止;3,异常中断。
"level": 1
}
-
输出参数
无
-
异常
本方法不抛出异常。
创建并运行一个任务
-
方法说明
本方法是阻塞方法,可以在脚本中创建一个天风任务的实例,并在任务执行结束后返回。
function syncCreateWindTask(taskParam: string): string
-
输入参数
其参数
param是 JSON 字符串,结构如下:
{
// 任务类型 id
"taskId": "12345",
// 任务名称
"taskLabel": "Ps2Ws",
// 指定创建的任务实例的id
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035f9",
// 在天风任务中定义的参数
"inputParams": "{\"fromSite\":\"PS-01\"}"
}
注意,taskId 和 taskLabel 两者必选其一。如果同时存在,将首选使用 taskId 字段。
注意,inputParam 字段,是个 JSON 字符串。需要在脚本里将任务参数序列化为 JSON。
-
输出参数
-
"9013",任务正常结束。
-
"9014",任务异常结束。
-
异常
本方法不抛出异常。
终止任务
-
方法说明
本方法是非阻塞方法,可用于终止多个正在运行的天风任务实例。
function terminateTasks(param: string): void
-
输入参数
其参数
param是 JSON 字符串,结构如下:
[
{
// 指定创建的任务实例的id
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035f9"
},
{
// 指定创建的任务实例的id
"taskRecordId": "04d11f4f-d17c-4a41-9cf7-67de468035fe"
}
]
-
输出参数
无
-
异常
本方法会抛出异常。
查询子任务的任务id列表
-
方法说明
本方法是非阻塞方法,可根据父任务的id查询所有子任务的id。
function getChildrenTaskRecordId(recordId: string): string
-
输入参数
recordId,父任务的recordId。
-
输出参数
包含子任务id的 JSON 字符串,转换成 JSON 对象之后的示例数据如下所示:
[
"child-58d549a4-6d4c-4e01-a327-269e3d4c1863",
"child-sdsdfvsd-qrwe-4e02-a327-269eqwcfs863"
]
如果不存在满足条件的子任务,返回 "[]"。
-
异常
本方法会抛出异常。
设置任务优先级
-
方法说明
本方法是非阻塞方法,可根据设置任务的优先级。
function setTaskPriority(taskRecordId: string,priority: number): void
-
输入参数
taskRecordId,任务的实例id。
priority, 任务的优先级
-
输出参数
无
-
异常
本方法不会抛出异常。
机器人相关
校验机器人是否存在
-
方法说明
校验机器人是否存在。
function isRobotExist(robotName: string): boolean
-
输入参数
robotName,string 类型,机器人名称。
-
输出参数
-
true,存在。
-
false,不存在。
-
异常
本方法不抛出异常。
获取机器人基本信息
-
方法说明
获取机器人基本信息。
function getLiteRobotsStatus(): string
-
输入参数
无。
-
输出参数
[
{
"battery_level": 1, #机器人电池电量, 范围 [0, 1]
"confidence": 1, #机器人的定位置信度, 范围 [0, 1]
"currentGroup": "unnamed", #机器人当前所在机器人组
"current_map": "newCHACHECPD-15_1", #当前地图
"current_map_invalid": false, #机器人当前地图不在场景中
"dI": [], #输入信号
"dO": [], #输出信号
"disconnect": false, #与机器人网络断连
"dispatchable": true, #机器人可接单状态
"dispatchable_status": 0, #可接单状态 = api 设置可接单,1 = api 设置不可接单(小车占用资源), 2 = api 设置不可接单(小车不占用资源)
"errors": [], #报警码
"ip": "", #机器人ip
"low_battery": false, #低电量
"reloc_status": 1, #0 = FAILED(定位失败), 1 = SUCCESS(定位正确), 2 = RELOCING(正在重定位), 3=COMPLETED(定位完成)
"task_status": 0, #机器人当前的导航状态:0 = NONE, 1 = WAITING(目前不可能出现该状态), 2 = RUNNING, 3 = SUSPENDED, 4 = COMPLETED, 5 = FAILED, 6 = CANCELED
"unconfirmed_reloc": false, #未确认定位
"unlock": 0, #0: 控制权在 RDSCore 手上 1: 控制权被其他人抢走; 2: 控制权没有被抢占
"uuid": "sim_01" #机器人名
},
{
"battery_level": 1,
"confidence": 1,
"currentGroup": "RobotGroup-01",
"current_map": "newCHACHECPD-15_1",
"current_map_invalid": false,
"dI": [],
"dO": [],
"disconnect": false,
"dispatchable": true,
"dispatchable_status": 0,
"errors": [],
"ip": "",
"low_battery": false,
"orderId": "ab913f4b-9a35-4cdf-a4e5-07928897e0d2",
"reloc_status": 1,
"state": "FINISHED",
"task_status": 4,
"unconfirmed_reloc": false,
"unlock": 0,
"uuid": "sim_02"
}
]
-
异常
本方法抛出异常。
根据Id获取机器人基本信息
-
方法说明
根据Id获取机器人基本信息。
function getLiteRobotsStatuById(agvId:string):string;
-
输入参数
agvId,string 类型,机器人Id。
-
输出参数
{
"battery_level": 1, #机器人电池电量, 范围 [0, 1]
"confidence": 1, #机器人的定位置信度, 范围 [0, 1]
"currentGroup": "unnamed", #机器人当前所在机器人组
"current_map": "newCHACHECPD-15_1", #当前地图
"current_map_invalid": false, #机器人当前地图不在场景中
"dI": [], #输入信号
"dO": [], #输出信号
"disconnect": false, #与机器人网络断连
"dispatchable": true, #机器人可接单状态
"dispatchable_status": 0, #可接单状态 = api 设置可接单,1 = api 设置不可接单(小车占用资源), 2 = api 设置不可接单(小车不占用资源)
"errors": [], #报警码
"ip": "", #机器人ip
"low_battery": false, #低电量
"reloc_status": 1, #0 = FAILED(定位失败), 1 = SUCCESS(定位正确), 2 = RELOCING(正在重定位), 3=COMPLETED(定位完成)
"task_status": 0, #机器人当前的导航状态:0 = NONE, 1 = WAITING(目前不可能出现该状态), 2 = RUNNING, 3 = SUSPENDED, 4 = COMPLETED, 5 = FAILED, 6 = CANCELED
"unconfirmed_reloc": false, #未确认定位
"unlock": 0, #0: 控制权在 RDSCore 手上 1: 控制权被其他人抢走; 2: 控制权没有被抢占
"uuid": "sim_01" #机器人名
}
-
异常
本方法会抛出异常。
根据Id获取机器人位置
-
方法说明
根据机器人id获取机器人的位置
getVehicleStation(agvId:string):string;
-
输入参数
agvId,string 类型,机器人Id。
-
输出参数
{
"lastStation": "LM32", //上次位置 可能是空
"station": "AP25" //当前位置 可能是空
}
如果与调度断连返回空对象 {}。
-
异常
本方法不抛出异常。
获取Core报错信息
-
方法说明
获取Core报错信息。
function getCoreAlarms():string;
-
输入参数
无。
-
输出参数
{
"errors": [{
"code": 52106,
"desc": "(AMB-01: blocked by chengpin-02 in occupy path. blocked by chengpin-02 in block group's edge BlockGroup102)(AMB-02: blocked by AMB-05 in occupy path. blocked by AMB-05 in block group's edge BlockGroup94)(AMB-03: blocked by AMB-05 in block group's lm BlockGroup94)(AMB-05: blocked by AMB-03 in block group's lm BlockGroup105)(chengpin-02: blocked by AMB-01 in occupy path. blocked by AMB-01 in block group's edge BlockGroup102)",
"times": 5,
"timestamp": 1681110467
}, {
"code": 52201,
"desc": "(AMB-01,chengpin-02, in BlockGroup102, whose max number is 1 ), The number of robots in same block group is over max number.",
"times": 1,
"timestamp": 1681110452
}],
"warnings": [{
"code": 54000,
"desc": "AMB-02,AMB-05,chengpin-03,chengpin-08, unable to reach park point.",
"times": 1,
"timestamp":
1681110462
}]
}
当与调度断连时,本方法会返回 null。
-
异常
本方法不会抛出异常。
根据Id获取Core报错信息
-
方法说明
根据Id获取Core报错信息。
function getCoreAlarms(code:int):string;
-
输入参数
code,int类型,错误码。
-
输出参数
{
"errors": [{
"code": 52201,
"desc": "(AMB-01,chengpin-02, in BlockGroup102, whose max number is 1 ), The number of robots in same block group is over max number.",
"times": 1,
"timestamp": 1681110452
}]
}
当与调度断连时,本方法会返回 null。
-
异常
本方法不会抛出异常。
获取Rbk报错信息
-
方法说明
获取Rbk报错信息。
function getRbkAlarms():string;
-
输入参数
无。
-
输出参数
{
"errors": [{
"code": 52200,
"desc": "Blocked by : chengpin-02",
"times": 1,
"timestamp": 1681116822857
}, {
"code": 52200,
"desc": "Blocked by : AMB-01",
"times": 1,
"timestamp": 1681116822858
}]
}
当与调度断连时,本方法会返回 null。
-
异常
本方法不会抛出异常。
根据Id获取Rbk报错信息
-
方法说明
根据Id获取Rbk报错信息。
function getRbkAlarms(code:int):string;
-
输入参数
code,int类型,错误码。
-
输出参数
{
"errors": [{
"code": 52200,
"desc": "Blocked by : chengpin-02",
"times": 1,
"timestamp": 1681117052956
}, {
"code": 52200,
"desc": "Blocked by : AMB-01",
"times": 1,
"timestamp": 1681117052956
}]
}
当与调度断连时,本方法会返回 null。
-
异常
本方法不会抛出异常。
设置机器人软急停
-
方法说明
设置机器人软急停。
function setSoftStop(vehicleId: string,status: boolean): boolean
-
输入参数
vehicleId,string 类型,机器人名称。
status,boolean类型,true:设置机器人软急停 。false:取消机器人软急停
-
输出参数
-
true,成功。
-
false,失败。
-
异常
本方法不抛出异常。
获取机器人所有信息
-
方法说明
获取机器人所有信息。
function getRobotsStatus(): string
-
输入参数
无。
-
输出参数
{
"dynamic_obstacle": {},
"errors": [
{
"52101": 1634020173,
"desc": "hu-test-1,hu-test-3, have no charge point in map.",
"times": 1
},
{
"52103": 1634020173,
"desc": "hu-test-1,hu-test-3, have no park point in map.",
"times": 1
},
{
"53200": 1634020174,
"desc": "[{\"error_msg\":\"old: hu-test-1, now: AMB-01, please change back!\",\"ip\":\"106.14.198.1\"}]",
"times": 1
}
],
"fatals": [],
"notices": [],
"report": [
{
"area_resources_occupied": [
{
"area_name": "new",
"avoidObs_area_occupied": {
"radius": -1,
"x": 0,
"y": 0
},
"blocks_occupied": [],
"path_occupied": [
{
"end_id": "AP1",
"end_percentage": 0.7882161028093827,
"source_id": "AP61",
"start_percentage": 0.7882161028093827
}
]
}
],
"basic_info": {
"current_map": "20200529150233136",
"dsp_version": "simulation",
"ip": "106.14.198.1",
"model": "AMB-150",
"robot_note": "",
"version": "v3.3.4.51"
},
"changes": {
"maps": [
"20200529150233136.smap",
"default.smap",
"wwww(1).smap"
],
"model": true
},
"chassis": {
"goods_region": {
"name": "",
"point": []
},
"head": 0.42,
"radius": 0.0,
"shape": 1,
"tail": 0.38,
"width": 0.56
},
"connection_status": 1,
"current_order": {},
"dispatchable": false,
"is_error": false,
"lock_info": {
"desc": "",
"ip": "58.34.135.130",
"locked": true,
"nick_name": "DESKTOP-27FKEEM(0d50b)",
"port": 54733,
"time_t": "1634023715",
"type": 2
},
"network_delay": 100,
"rbk_report": {
"DI": [],
"DO": [],
"angle": -1.5626,
"battery_level": 1.0,
"blocked": false,
"brake": false,
"charging": false,
"confidence": 0.996,
"current": -1.0,
"current_map": "20200529150233136",
"current_map_md5": "72a91de898406e10b9cedfed51a3a5f9",
"current_station": "LM1",
"emergency": false,
"errors": [],
"fatals": [],
"fork": {
"fork_auto_flag": true,
"fork_height": -0.0,
"fork_height_in_place": false,
"forward_in_place": false,
"forward_val": 0.0
},
"info": {},
"jack": {
"jack_emc": false,
"jack_enable": false,
"jack_error_code": 0,
"jack_height": 0.0,
"jack_isFull": false,
"jack_load_times": 0,
"jack_mode": false,
"jack_speed": 0,
"jack_state": 0
},
"last_station": "CP2",
"lock_info": {
"desc": "",
"ip": "58.34.135.130",
"locked": true,
"nick_name": "DESKTOP-27FKEEM(0d50b)",
"port": 54733,
"time_t": "1634023715",
"type": 2
},
"notices": [],
"odo": 24.771,
"received_on": {
"data_nsec": "1110998989197957",
"frame_id": "",
"pub_nsec": "1110998989197957",
"seq": "0"
},
"reloc_status": 1,
"requestCurrent": -0.0,
"requestVoltage": -0.0,
"roller": {
"roller_emc": false,
"roller_enable": false,
"roller_error_code": 0,
"roller_isFull": false,
"roller_mode": false,
"roller_speed": 0,
"roller_state": 0
},
"soft_emc": false,
"steer": -0.0,
"time": 104303118,
"today_odo": 15.812,
"total_time": 444534615,
"voltage": 1.0,
"vx": -0.0,
"vy": -0.0,
"w": -0.0,
"warnings": [
{
"55001": 1634020734,
"desc": "The robot is in the dispatching state. If you need to control, please regain control and go offline during dispatching.",
"times": 1
}
],
"x": -0.3316,
"y": -1.4711
},
"undispatchable_reason": {
"current_map_invalid": false,
"disconnect": false,
"dispatchable_status": 0,
"low_battery": false,
"unconfirmed_reloc": false,
"unlock": 1
},
"uuid": "hu-test-1",
"vehicle_id": "AMB-01"
},
{
"area_resources_occupied": [
{
"area_name": "new",
"avoidObs_area_occupied": {
"radius": -1,
"x": 0,
"y": 0
},
"blocks_occupied": [],
"path_occupied": [
{
"end_id": "AP33",
"end_percentage": 1,
"source_id": "AP32",
"start_percentage": 1
}
]
}
],
"basic_info": {
"current_map": "zhihuichufang-Area-1ss-sim",
"dsp_version": "simulation",
"ip": "106.14.190.57",
"model": "AMB-300-D",
"robot_note": "",
"version": "v3.3.4.51"
},
"changes": {
"maps": [
"20210107101108218.smap",
"20210915133008125.smap",
"WEIYI-2L.smap",
"default-old.smap",
"default.smap",
"default123.smap",
"jiaxing-fork2.smap",
"seer-pda-20211011-132546.smap",
"seer-pda-20211011-132611.smap",
"seer-pda-20211011-132635.smap",
"seer-pda-2021930-175116(1).smap",
"wwww(1).smap",
"zhacai-sim.smap"
],
"model": true
},
"chassis": {
"goods_region": {
"name": "",
"point": []
},
"head": 0.52,
"radius": 0.0,
"shape": 1,
"tail": 0.48,
"width": 0.7
},
"connection_status": 1,
"current_order": {},
"dispatchable": false,
"is_error": false,
"lock_info": {
"desc": "",
"ip": "58.34.135.130",
"locked": true,
"nick_name": "8e06e130-a2fa-4681-8473-bc6f3f9d76fd",
"port": 58088,
"time_t": "1634025655",
"type": 255
},
"network_delay": 85,
"rbk_report": {
"DI": [],
"DO": [],
"angle": -2.9679,
"battery_level": 1.0,
"blocked": false,
"brake": false,
"charging": false,
"confidence": 0.9949,
"current": -1.0,
"current_map": "zhihuichufang-Area-1ss-sim",
"current_map_md5": "7a239eb7d76c4cdb1a4edac9524a15c5",
"current_station": "",
"emergency": false,
"errors": [],
"fatals": [],
"fork": {
"fork_auto_flag": true,
"fork_height": -0.0,
"fork_height_in_place": false,
"forward_in_place": false,
"forward_val": 0.0
},
"info": {},
"jack": {
"jack_emc": false,
"jack_enable": false,
"jack_error_code": 0,
"jack_height": 0.0,
"jack_isFull": false,
"jack_load_times": 0,
"jack_mode": false,
"jack_speed": 0,
"jack_state": 0
},
"last_station": "",
"lock_info": {
"desc": "",
"ip": "58.34.135.130",
"locked": true,
"nick_name": "8e06e130-a2fa-4681-8473-bc6f3f9d76fd",
"port": 58088,
"time_t": "1634025655",
"type": 255
},
"notices": [
{
"57005": 1634021893,
"desc": "json conversion error",
"times": 21
}
],
"odo": 35984.386,
"received_on": {
"data_nsec": "1110998932407317",
"frame_id": "",
"pub_nsec": "1110998932407317",
"seq": "0"
},
"reloc_status": 1,
"requestCurrent": -0.0,
"requestVoltage": -0.0,
"roller": {
"roller_emc": false,
"roller_enable": false,
"roller_error_code": 0,
"roller_isFull": false,
"roller_mode": false,
"roller_speed": 0,
"roller_state": 0
},
"soft_emc": false,
"steer": -0.0,
"time": 444682933,
"today_odo": 17.77,
"total_time": 26574775786,
"voltage": 1.0,
"vx": -0.0,
"vy": -0.0,
"w": -0.0,
"warnings": [
{
"55001": 1633952368,
"desc": "The robot is in the dispatching state. If you need to control, please regain control and go offline during dispatching.",
"times": 1
}
],
"x": -15.8727,
"y": 11.6028
},
"undispatchable_reason": {
"current_map_invalid": false,
"disconnect": false,
"dispatchable_status": 0,
"low_battery": false,
"unconfirmed_reloc": false,
"unlock": 1
},
"uuid": "hu-test-3",
"vehicle_id": "hu-test-3"
}
],
"scene_md5": "b481893504019cd71c03484f4b2419e1",
"warnings": []
}
当与调度断连时,本方法会返回 null。
-
异常
本方法抛出异常。
查询所有机器人充电阈值
-
方法说明
获取所有机器人充电阈值信息。
function queryChargeParam(): string; -
输入参数
无。
-
输出参数
[ { "vehicle": "AMB-01", "params": { "chargeNeed": 40.0, "chargeOnly": 30.0, "chargedOK": 50.0, "chargedFull": 90.0 } }, { "vehicle": "AMB-02", "params": { "chargeNeed": 50.0, "chargeOnly": 20.0, "chargedOK": 60.0, "chargedFull": 80.0 } } ]当与调度断连时,本方法会返回 null。
-
异常
本方法不抛出异常。
查询机器人充电阈值
-
方法说明
根据机器人名称获取机器人充电阈值信息。
function queryChargeParam(vehicles: string): string; -
输入参数
vehicles: JSON 格式的字符串(将数组转成字符串格式),查询指定数量的机器人充电阈值信息。
-
输出参数
[ { "vehicle": "AMB-01", "params": { "chargeNeed": 40.0, "chargeOnly": 30.0, "chargedOK": 50.0, "chargedFull": 90.0 } }, { "vehicle": "AMB-02", "params": { "chargeNeed": 50.0, "chargeOnly": 20.0, "chargedOK": 60.0, "chargedFull": 80.0 } } ] -
异常
本方法不抛出异常。
修改机器人充电阈值
-
方法说明
根据机器人名称修改机器人充电阈值信息。
function modifyChargeParam(param: string): boolean; -
输入参数
vehicles: JSON 格式的字符串(将数组转成字符串格式),查询指定数量的机器人充电阈值信息。
-
输出参数
- true: 修改成功。
- false: 修改失败。
-
异常
本方法不抛出异常。
-
示例:
function boot() { // 指定要修改的机器人名称,以及对应的阈值 const req = { "vehicles": ["sim_01"], "params": { "chargeNeed": 30 } }; // 查询修改前的阈值信息 const before = jj.queryChargeParam(JSON.stringify(["sim_01"])); // 使用 modifyChargeParam 修改阈值 const data = jj.modifyChargeParam(JSON.stringify(req)); // 查询修改后的阈值信息 const after = jj.queryChargeParam(JSON.stringify(["sim_01"])); // 打印结果 jj.scriptLog("info", "Charge", "query = " + before); jj.scriptLog("info", "Charge", "modify = " + data); jj.scriptLog("info", "Charge", "query = " + after); }得到以下打印信息,表示修改 chargeNeed 参数成功:
库位相关
检查站点是否存在
-
方法说明
检查站点是否存在。
function isPointExist(pointName: string):boolean
-
输入参数
pointName,站点名。
-
输出参数
-
true,该站点存在。
-
false,该站点不存在。
-
异常
本方法抛出异常。
检查库位是否存在
-
方法说明
检查库位名是否存在
function checkSiteExistedBySiteId(siteId: string): boolean
-
输入参数
-
siteId,库位名称。
-
输出参数
-
true,该库位存在。
-
false,该库位不存在。
-
异常
本方法抛出异常。
检查库区是否存在
-
方法说明
检查库区名是否存在
function checkSiteGroupExistedByGroupName(groupName: string): boolean
-
输入参数
-
groupName,库区名称。
-
输出参数
-
true,该库区存在。
-
false,该库区不存在。
-
异常
本方法抛出异常。
根据条件获取库位
-
方法说明
根据条件获取库位
function findSitesByCondition(conditions: string,sort:string): string
-
输入参数
-
conditions,查询条件,模糊查询用'%'标记
{ "area": "area01", //区域名 "colNum": ["abc","'%bc'","'%b%'","'ab%'"],//列,带'%'表示模糊查询 "content": ["abc","'%bc'","'%b%'","'ab%'"],//货物 "depth": ["abc","'%bc'","'%b%'","'ab%'"],//深 "filled": true, //是否有货 "groupNames": ["abc","'%bc'","'%b%'","'ab%'"],//库区名 "level": ["abc","'%bc'","'%b%'","'ab%'"],//货架层数 "locked": true, //是否已锁定 "lockedBy": "12345", //锁定的任务实例id "no": ["abc","'%bc'","'%b%'","'ab%'"],//库位编号 "rowNum": ["abc","'%bc'","'%b%'","'ab%'"], //货架行 "siteIds": ["abc","'%bc'","'%b%'","'ab%'"], //库位id "tags": ["abc","'%bc'","'%b%'","'ab%'"],//库位标签 "type": 1 //库位类别,1物理库位,0逻辑库位 } -
sort,根据siteId排序:"ASC"顺序排序,"DESC"倒序排序
-
输出参数
库位列表json
[{
"area": "area01", //区域
"colNum": "abc-1",//列
"content": "abc-1", //货物
"depth": "abc-1",//深
"disabled": true,//禁用
"filled": 1,//占用
"groupNames": "abc",//库区名
"level": "abc-1",//层
"locked": 1,//锁定
"lockedBy": "123456",//锁定的任务id
"no": "abc-1",//编号
"preparing": true,//准备中
"rowNum": "abc-1",//列
"siteId": "abc-1",//库位id
"tags": "abc-1",//标签
"type": 1,//库位类型
"working": true//工作中
},
{
"area": "area01",
"colNum": "abc-2",
"content": "abc-2",
"depth": "abc-2",
"disabled": true,
"filled": 1,
"groupNames": "abc",
"level": "abc-2",
"locked": 1,
"lockedBy": "123456",
"no": "abc-2",
"preparing": true,
"rowNum": "abc-2",
"siteId": "abc-2",
"tags": "abc-2",
"type": 1,
"working": true
}]
如果输出值没有满足条件的库位,方法将返回字符串"null"。
-
异常
本方法抛出异常。
-
例子
1.根据库位id查询库位是否有货
function test(){
var condition = {
"siteIds": ["E1-1"],
"filled": true
}
var site = jj.findSitesByCondition(JSON.stringify(condition),"ASC")
}
2.查询某一库区内的所有库位
function test(){
var condition = {
"groupNames": ["E1"]
}
var site = jj.findSitesByCondition(JSON.stringify(condition),"ASC")
}
根据条件获取有效库位
-
方法说明
根据条件获取有效库位,即未禁用(disabled=0)并且同步成功(syncFailed=0)的库位。
function findAvailableSitesByCondition(conditions: string,sort:string): string
-
输入参数
-
conditions,查询条件,模糊查询用'%'标记
{ "area": "area01", //区域名 "colNum": ["abc","'%bc'","'%b%'","'ab%'"],//列,带'%'表示模糊查询 "content": ["abc","'%bc'","'%b%'","'ab%'"],//货物 "depth": ["abc","'%bc'","'%b%'","'ab%'"],//深 "filled": true, //是否有货 "groupNames": ["abc","'%bc'","'%b%'","'ab%'"],//库区名 "level": ["abc","'%bc'","'%b%'","'ab%'"],//货架层数 "locked": true, //是否已锁定 "lockedBy": "12345", //锁定的任务实例id "no": ["abc","'%bc'","'%b%'","'ab%'"],//库位编号 "rowNum": ["abc","'%bc'","'%b%'","'ab%'"], //货架行 "siteIds": ["abc","'%bc'","'%b%'","'ab%'"], //库位id "tags": ["abc","'%bc'","'%b%'","'ab%'"],//库位标签 "type": 1 //库位类别,1物理库位,0逻辑库位 } -
sort,根据siteId排序:"ASC"顺序排序,"DESC"倒序排序
-
输出参数
-
包含库位列表的 JSON 字符串,转换成 JSON 对象之后的示例数据如下所示:
[{ "area": "area01", //区域 "colNum": "abc-1",//列 "content": "abc-1", //货物 "depth": "abc-1",//深 "disabled": true,//禁用 "filled": 1,//占用 "groupNames": "abc",//库区名 "level": "abc-1",//层 "locked": 1,//锁定 "lockedBy": "123456",//锁定的任务id "no": "abc-1",//编号 "preparing": true,//准备中 "rowNum": "abc-1",//列 "siteId": "abc-1",//库位id "tags": "abc-1",//标签 "type": 1,//是否物理库位 "working": true//工作中 }, { "area": "area01", "colNum": "abc-2", "content": "abc-2", "depth": "abc-2", "disabled": true, "filled": 1, "groupNames": "abc", "level": "abc-2", "locked": 1, "lockedBy": "123456", "no": "abc-2", "preparing": true, "rowNum": "abc-2", "siteId": "abc-2", "tags": "abc-2", "type": 1, "working": true }] -
如果没有符合条件的库位,则返回值为
"null",而不是[]。 -
异常
本方法抛出异常。
根据扩展字段获取有效库位
-
方法说明
根据扩展字段获取有效库位,即未禁用(disabled=0)并且同步成功(syncFailed=0)的库位。
function findAvailableSitesByExtFields(conditions: string): string
-
输入参数
-
conditions,查询条件,模糊查询用'%'标记
[ { "attributeName": "ext5", "attributeValue": "ex%" }, { "attributeName": "ext10", "attributeValue": "%ex" }, { "attributeName": "ex100", "attributeValue": "ex3" }, { "attributeName": "ex101", "attributeValue": "%ex" }, { "attributeName": "filled", // 是否占用 "attributeValue": "0" }, { "attributeName": "locked", // 是否锁定 "attributeValue": "0" }, { "attributeName": "area", // 区域 "attributeValue": "new" }, { "attributeName": "groupName", // 库区名 "attributeValue": "CYJ-IN-UP" }, { "attributeName": "siteId", // 库位id "attributeValue": "CYJ-IN-01" } ] -
请求示例
var conditions = [{"attributeName":"ext5", "attributeValue":"ex%"},{"attributeName":"ext10", "attributeValue":"%ex"},{"attributeName":"ex100", "attributeValue":"ex3"},{"attributeName":"ex101", "attributeValue":"%ex"},{"attributeName":"filled", "attributeValue":"0"},{"attributeName":"locked", "attributeValue":"0"},{"attributeName":"area", "attributeValue":"new"},{"attributeName":"groupName", "attributeValue":"CYJ-IN-UP"},{"attributeName":"siteId", "attributeValue":"CYJ-IN-01"}];
var data = jj.findAvailableSitesByExtFields(JSON.stringify(conditions));
-
库位列表json
-
包含库位列表的 JSON 字符串,转换成 JSON 对象之后的示例数据如下所示:
[ { "area": "new", "content": null, "filled": 1, "groupName": null, "locked": 0, "lockedBy": null, "siteId": "CYJ-IN-01", "siteName": null, "tags": "CYJ-IN-UP", "type": null } ] -
如果没有符合条件的库位,则返回值为
"null",而不是[]。 -
异常
本方法抛出异常。
根据条件更新库位
-
方法说明
根据条件更新库位
function updateSitesByCondition(conditions: string,values:string): number
-
输入参数
-
conditions,更新条件,模糊查询用'%'标记
{ "area": "area01", //区域名 "colNum": ["abc","'%bc'","'%b%'","'ab%'"],//列,带'%'表示模糊查询 "content": ["abc","'%bc'","'%b%'","'ab%'"],//货物 "depth": ["abc","'%bc'","'%b%'","'ab%'"],//深 "filled": true, //是否有货 "groupNames": ["abc","'%bc'","'%b%'","'ab%'"],//库区名 "level": ["abc","'%bc'","'%b%'","'ab%'"],//货架层数 "locked": true, //是否已锁定 "lockedBy": "12345", //锁定的任务实例id "no": ["abc","'%bc'","'%b%'","'ab%'"],//库位编号 "rowNum": ["abc","'%bc'","'%b%'","'ab%'"], //货架行 "siteIds": ["abc","'%bc'","'%b%'","'ab%'"], //库位id "tags": ["abc","'%bc'","'%b%'","'ab%'"],//库位标签 "type": 1 //库位类别,1物理库位,0逻辑库位 } -
values,修改的字段
{ "area": "abc", //区域 "colNum": "4", //列 "content": "abc", //货物 "depth": "2", //深 "disabled": true, //禁用 "filled": true, //有货 "groupName": "abc", //库区名 "level": "3", //层 "locked": true, //锁定 "lockedBy": "12345", //锁定的任务id "no": "10", //编号 "preparing": true, //准备中 "rowNum": "5", //行 "siteId": "site_01", //库位名 "tags": "abc", //标签 "type": 1, //是否物理库位 "working": true //工作中 } -
输出参数
-
更新成功的数据库记录行数
-
异常
本方法抛出异常。
-
例子
1.根据库位id查询有货未加锁的库位并进行加锁
function test(){
var taskId = jj.currentTimeMillis()
var condition = {
"siteIds": ["E1-1"],
"filled": true,
"disabled": false,
"locked": false
}
var value = {
"siteIds": ["E1-1"],
"filled": true,
"locked": true,
"lockedBy": taskId+""
}
var site = jj.updateSitesByCondition(JSON.stringify(condition),JSON.stringify(value))
}
2.更新库区内的有货未加锁的所有库位并进行加锁
function test(){
var taskId = jj.currentTimeMillis()
var condition = {
"groupName": ["E1"],
"filled": true,
"disabled": false,
"locked": false
}
var value = {
"groupName": ["E1"],
"filled": true,
"locked": true,
"lockedBy": taskId+""
}
var site = jj.updateSitesByCondition(JSON.stringify(condition),JSON.stringify(value))
}
根据条件更新库位扩展字段值
-
方法说明
根据库位id和扩展字段名更新扩展字段的值
function updateSiteExtFieldByIdAndExtFieldName(conditions: string): void
- 输入参数
- conditions,库位id、扩展字段名和更新值
[
{
siteId: "Loc-01",
extFieldName: "test",
updateValue: "111"
},
{
siteId: "Loc-02",
extFieldName: "test",
updateValue: "222"
},
{
siteId: "Loc-03",
extFieldName: "test",
updateValue: "333"
}
]
-
输出参数
无。
-
异常
本方法抛出异常
-
例子
-
更新Loc-01、Loc-02、Loc-03的扩展字段test的值分别为111、222、333
function test(){
var conditions = [
{
siteId: "Loc-01",
extFieldName: "test",
updateValue: "111"
},
{
siteId: "Loc-02",
extFieldName: "test",
updateValue: "222"
},
{
siteId: "Loc-03",
extFieldName: "test",
updateValue: "333"
}
]
jj.updateSiteExtFieldByIdAndExtFieldName(JSON.stringify(conditions));
}
全局缓存数据
获取缓存数据
-
方法说明
由于 RDS 的脚本里,无法使用全局变量,我们推荐如下方式缓存变量值。
根据已缓存的 key 获取缓存数据。
function getCacheParam(key: string): string
-
输入参数
-
key,缓存键。
-
输出参数
-
string,JSON 格式。如果数据不存在,将返回 null。
-
异常
本方法抛出异常。
缓存数据
-
方法说明
将参数中的 key 和 value 键值对在系统中进行缓存,缓存的数据将持久化,之后可通过 getCacheParam 方法根据 key 获取对应的 value。
function putCacheParam(key: string, value: string): void
-
输入参数
-
key,缓存键。
-
value,缓存值。如果要缓存一个对象,需要先序列化为 JSON 字符串。
-
输出参数
无。
-
异常 本方法不会抛出异常。
删除缓存数据
-
方法说明
删除缓存数据。
function clearCacheParam(key: string): void
-
输入参数
-
key,缓存键。
-
输出参数
本方法无输出参数。
-
异常
本方法不抛出异常。
获取所有的缓存数据
-
方法说明
获取缓存块的全部缓存数据,并以 JSON 格式返回。
function getAllCacheParams(): string
-
输入参数
无。
-
输出参数
-
string,JSON 格式。如果数据不存在,将返回空串。
-
异常
本方法抛出异常。
手持端相关
通知手持端(工位/岗位)
-
方法说明
可以给手持端的指定工位或者岗位发送弹框通知。该弹框可以人工确认。如无人工确认,可配置保持时间,超过保持时间,弹框自动消失。
function noticeOperator(workTypes: string, workStations: string, content: string, needConfirm: boolean, keepTime: number): void
-
输入参数
-
workTypes,string 类型,要通知的岗位。多岗位间逗号分隔。
-
workStations,string 类型,要通知的工位。多工位间逗号分隔。
-
content,string 类型,通知的内容。
-
needConfirm,boolean类型,表示是否需要手持端用户点击确认后,通知弹框才会消失。
-
keepTime,number类型,表示通知弹框在手持端的保持时间,单位秒,超过这个时间弹框将消失。
注意:本方法采用异步的方式发送群发通知。
-
输出参数
本方法输出参数为空。
-
异常
本方法抛出异常。
通知手持端用户
-
方法说明
可以给手持端的指定用户发送弹框通知。该弹框可以人工确认。如无人工确认,可配置保持时间,超过保持时间,弹框自动消失。
function noticeOperatorByUser(userNames: string, content: string, needConfirm: boolean, keepTime: number): void
-
输入参数
-
userNames,string 类型,要通知的用户。多用户间逗号分隔。
-
content,string 类型,通知的内容。
-
needConfirm,boolean类型,表示是否需要手持端用户点击确认后,通知弹框才会消失。
-
keepTime,number类型,表示通知弹框在手持端的保持时间,单位秒,超过这个时间弹框将消失。
注意:本方法采用异步的方式发送群发通知。
-
输出参数
本方法输出参数为空。
-
异常
本方法抛出异常。
通过menuId修改手持端按钮的label
-
方法说明
通过menuId定位修改手持端对应按钮的label(重启之后会失效,恢复到初始状态)
function setPadLabelByMenuId(menuId: String, label: String):void
-
输入参数
-
menuId,string 类型,要更改的手持端任务按钮的menuId
-
label,string 类型,将手持端按钮上标签的内容修改为label中的内容
-
输出参数
本方法输出参数为空。
-
异常
本方法抛出异常。
通过menuId修改手持端按钮的背景色
-
方法说明
通过menuId修改手持端按钮的背景色(重启之后会失效,恢复到初始状态)
function setPadBackgroundByMenuId(menuId: String, background: String):void
-
输入参数
-
menuId,string 类型,要更改的手持端任务按钮的menuId
-
background,string 类型,将手持端按钮上标签的背景色修改为background中的颜色(16进制的RGB格式)
-
输出参数
本方法输出参数为空。
-
异常
本方法抛出异常。
通过menuId设置手持端按钮是否禁用
-
方法说明
通过menuId设置手持端按钮是否禁用(重启之后会失效,恢复到初始状态)
function setPadDisableByMenuId(menuId: String, disable: boolean):void
-
输入参数
-
menuId,string 类型,要更改的手持端任务按钮的menuId
-
disable,布尔类型,手持端按钮是否设置为禁用
-
输出参数
本方法输出参数为空。
-
异常
本方法抛出异常。
多线程及时间
休眠指定时间
-
方法说明
本方法是阻塞方法,使当前线程休眠指定时间。
function sleep(ms: number): void
-
输入参数
-
ms,number 类型,休眠的时间,单位毫秒。
-
输出参数
本方法输出参数为空。
-
异常
本方法不抛出异常。
获取当前系统时间戳
-
方法说明
获取当前的系统时间戳。
function currentTimeMillis(): number
- 输入参数 无
- 输出参数 number 类型,当前系统的毫秒时间戳。
获取当前时间
-
方法说明
获取当前系统的格式化时间。
function nowDate(): string
-
输入参数
无
-
输出参数
字符串:按照
yyyy-MM-dd HH:mm:ss格式。 -
异常
本方法不抛出异常。
将时间戳转为日期格式
-
方法说明
将时间戳转为格式化的日期时间。
function timeMillisFormat(time: number): string
-
输入参数
-
time,number 类型,当前毫秒时间戳。
-
输出参数
字符串:按照
yyyy-MM-dd HH:mm:ss格式。 -
异常
本方法会抛出异常。
HTTP 请求
发送 POST 请求,参数为 JSON 格式
-
方法说明
本方法是阻塞方法,发送 POST 请求,参数为 JSON 格式。
function requestPost(url: string, param: string): string
-
输入参数
-
url,string 类型,请求的 URL。
-
param,string 类型,JSON 字符串,请求的参数。
-
输出参数
-
若请求成功:返回响应的 JSON 字符串。
-
若请求失败:null。
-
异常
本方法会不抛出异常。
发送 POST 请求,参数为 XML 格式
-
方法说明
本方法是阻塞方法,发送 POST 请求,参数为 XML格式。在本方法中会自动将传入的 JSON 格式字符串转化为 XML 格式
function requestPostXml(url: string, param: string): string
-
输入参数
-
url,string 类型,请求的 URL。
-
param,string 类型,JSON 字符串,请求的参数。
-
输出参数
-
若请求成功:将响应的 XML 格式 字符串 转化为 JSON 格式并返回。
-
若请求失败:null。
-
异常
本方法会不抛出异常。
发送 PUT请求,参数为 JSON 格式
-
方法说明
本方法是阻塞方法,发送 PUT请求,参数为 JSON 格式。
function requestPutJson(url: string, param: string): string
-
输入参数
-
url,string 类型,请求的 URL。
-
param,string 类型,JSON 字符串,请求的参数。
-
输出参数
-
若请求成功:返回响应的 JSON 字符串。
-
若请求失败:null。
-
异常
本方法会不抛出异常。
发送 GET 请求
-
方法说明
本方法是阻塞方法,发送 GET 请求。
function requestGet(url: string): string
-
输入参数
url,string 类型,请求的 URL。
-
输出参数
-
若请求成功:请求返回的字符串。
-
若请求失败:null。
-
异常
本方法会不抛出异常。
设置请求头
-
方法说明
本方法是阻塞方法,设置请求头,设置一次之后,对所有请求都有效。
function setHeader(key: string, value: string): void
-
输入参数
key,string 类型,请求头的key。
value,string 类型,请求头的value。
-
输出参数
无
发送 POST 请求
-
方法说明
本方法是阻塞方法,发送
POST请求,参数为JSON格式。可设置请求媒体(MediaType),可设置请求头
function requestHttpPost(url: String, param: String, headParam: String, mediaType: String):String
-
输入参数
url: 请求的 URL
param: 请求的入参 json 字符串
headParam: 请求头,如有传 json 字符串,无传空字符串
mediaType:请求类型默认 application/json,可有如下选择
JSON、JAVASCRIPT、HTML、XML、XWWWFORMURLENCODED分别表示:application/json、application/javascript、text/html、application/xml、application/x-www-form-urlencoded -
输出参数
成功返回 json 字符串,失败返回 null
注意:setHeader 设置对此方法也有效
发送 GET 请求
-
方法说明
本方法是阻塞方法,发送
GET请求,参数为JSON格式。可设置请求头
function requestHttpGet(url: String, headParam: String):String
-
输入参数
url: 请求的 URL
headParam: 请求头,如有传 json 字符串,无传空字符串
-
输出参数
成功返回 json 字符串,失败返回 null
注意:setHeader 设置对此方法也有效
发送 PUT 请求
-
方法说明
本方法是阻塞方法,发送
PUT请求,参数为JSON格式。可设置请求媒体(MediaType),可设置请求头
function requestHttpPut(url: String, headParam: String, mediaType: String, param: String)
-
输入参数
url: 请求的 URL
headParam: 请求头,如有传 json 字符串,无传空字符串
mediaType:请求类型默认 application/json,可有如下选择
JSON、JAVASCRIPT、HTML、XML、XWWWFORMURLENCODED分别表示:application/json、application/javascript、text/html、application/xml、application/x-www-form-urlencodedparam: 请求的入参 json 字符串
-
输出参数
成功返回 json 字符串,失败返回 null
注意:setHeader 设置对此方法也有效
日志记录
获取日志打印对象
-
方法说明
获取日志打印对象,可用于将指定信息打印进日志文件。
function getLogger(): Logger
-
输入参数
无
-
输出参数是日志对象,定义如下:
interface Logger {
info: (message: string) => void;
debug: (message: string) => void;
warn: (message: string) => void;
error: (message: string, e: any) => void;
}
调用方法:
jj.getLogger().info("hello world");
jj.getLogger().error("there is an error.", "");
使用以上方法,可在日志文件中打印指定记录。
-
异常
本方法会抛出异常。
在脚本页面下打印日志
-
方法说明
在 RDS 脚本页面下,打印日志信息。
function scriptLog(level: string, functionName: string, content: any): void
-
输入参数
-
level,string 类型,日志等级,可选 “INFO”,“ERROR”。
-
functionName,string 类型,一般填入所在函数的签名,用于快速定位信息。
-
content,any 类型,日志信息。
-
输出参数
无
-
异常
本方法会抛出异常。
注册方法
以下方法,需要在 boot() 函数中调用。
定时执行脚本方法
需求:脚本方法能传参。
-
方法说明
将脚本方法设置为定时执行。
注意,该方法需要在 boot() 方法中调用。
function defineScheduledFunctions(isParallel: boolean, delay: number, period: number, functionName: string, args: any[]): void
- 输入参数
- isParallel:boolean 类型,是否并行。
- delay:number 类型,启动延迟执行的时间,单位毫秒。
- period:number类型,脚本方法的周期,单位毫秒。
- functionName:string 类型,周期执行的方法名。
- args:周期执行的方法的参数。
- 输出参数
无
-
异常
本方法会抛出异常。
注册系统启动初始化方法
-
方法说明
注册系统启动即执行的初始化方法。
function defineInitDataFunctions(functionName:string):void
-
输入参数
functionName:注册的方法名。
-
输出参数
无
-
异常
本方法会抛出异常。
注册按钮
-
方法说明
向rds注册管理后台可见的按钮。
function registerButton(label: string, remark: string, scriptFunction: string, level: string, type: Number): void
- 输入参数
- label,string 类型,按钮名。
- remark,string 类型,按钮备注。
- scriptFunction,string 类型,点击按钮触发的方法名,注意该方法不能带参数。
- level,string 类型,按钮等级,用颜色区分。blue:蓝色,yellow:黄色 ,red:红色。
- type,Number类型,0: 普通按钮 1: 导出按钮,可选
- 输出参数
无
-
异常
本方法会抛出异常。
注册 Web 接口方法
-
方法说明
在脚本中注册接口方法。
function registerHandler(method: string, path: string, callback: string, auth: boolean): void
- 输入参数
- method:HTTP 请求方式,支持 POST,GET。
- path:接口的 URL 路径。
- callback:处理接口的脚本方法名。
- auth:调用此接口是否需要登录。
- 输出参数
无
-
异常
本方法会抛出异常。
注册事件处理器
-
方法说明
注册事件处理器,可处理天风任务“触发任务事件”块所抛出的事件。
function registerTaskEventFunction(functionName: string): void
- 输入参数
- functionName:注册的方法名。
- 输出参数
无
-
注意事项
若希望处理“触发任务事件”块抛出的事件,需要:
-
在脚本中实现与“触发任务事件”块的“事件名”参数同名的函数。
-
脚本函数的签名为:
function functionName(param: string): void -
在 boot() 方法中,调用 registerTaskEventFunction 方法将脚本函数注册为事件处理器。
-
异常
本方法会抛出异常。
业务配置
获取 application-biz.yml 的配置
-
方法说明
获取 application-biz.yml 的配置。
function getApplicationBusinessConfigValue(key: string): string
-
输入参数
key,string 类型,是 application-biz.yml 中所要获取配置的字段名。
-
输出参数
JSON 字符串。
-
异常
无
数据库
执行 SQL 语句
-
方法说明
通过 SQL 命令操作 RDS 系统数据库,可用于创建自定义数据表。
function jdbcExecuteSql(sql: string): Boolean
-
输入参数
sql:string 类型,创建表的 SQL 语句。示例如下:
CREATE TABLE `test` (`id` bigint NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4
-
输出参数:
-
true, SQL 命令执行成功。
-
false, SQL 命令执行失败。
-
异常
本方法不抛出异常,方法内捕获到异常后,按执行失败的信息返回处理。
使用 SQL 查询数据
-
方法说明
本方法可以使用自定义的 SQL 查询数据,并返回指定字段。
function jdbcQuery(sql: string): string
-
输入参数
sql:string 类型,SQL 语句。
-
输出参数是 JSON 格式的字符串。
假设查询 sql 参数为:sql="select id, name, age from person_table"
则返回的结果,经 JSON 反序列化后,数据如下:
[
{
"id": "1",
"name": "lilei",
"age": 14
}
]
-
异常
本方法不抛出异常。
更新数据
-
方法说明
更新数据记录。更新内容和目标条件,都支持动态扩展,即可执行动态拼接的 SQL 语句。
function jdbcInsertOrUpdate(sql: string, ...sqlParams: any): number
-
输入参数
-
sql,string 类型,SQL 语句字符串。
-
sqlParams,any 类型,可动态扩展的参数。
-
输出参数
number 类型:0 表示更新失败,大于 0 的数字表示更新的记录数目。
-
使用示例:
const sql = "update employee set age = 25 where name = ? and id = ?"
jj.jdbcInsertOrUpdate(sql, "bob", 123)
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
查询数据数量
-
方法说明
执行一条自定义 SQL 语句,以查询满足条件数据的数量。
function jdbcQueryCount(sql: string): number | null
-
输入参数
-
sql,string 类型,SQL 语句字符串。注意,只能使用 select count 语句。
select count(1) from person where age = 20 -
输出参数
number 类型,null 表示查询失败,其他数字表示查询到的记录数目。
-
异常 本方法不抛出异常,异常捕获后只作日志记录。
Modbus Tcp
Func01 读取线圈量
-
方法说明
Modbus 读取线圈量,功能码 01。
function readCoilStatus(ip: string, port: number, slaveId: number, offset: number): boolean | null
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- slaveId,number 类型,从机 slave ID。
- offset,number 类型,Modbus 地址。
- 输出参数
- null,读取失败。
- boolean,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Func02 读取线圈量
-
方法说明
Modbus 读取线圈量,功能码 02。
function readInputStatus(ip: string, port: number, slaveId: number, offset: number): boolean | null
-
输入参数
-
ip,string 类型,从机 IP。
-
port,number 类型,从机端口。
-
slaveId,number 类型,从机 slave ID。
-
offset,number 类型,Modbus 地址。
-
输出参数
-
null,读取失败。
-
boolean,读取成功的返回值。
-
异常
本方法不抛出异常,异常捕获后只作日志记录。
Func03 读取保持寄存器
-
方法说明
Modbus 读取保持寄存器,功能码 03。
function readHoldingRegister(ip: string, port: number, slaveId: number, offset: number, dataType: number): number | null
-
输入参数
-
ip,string 类型,从机 IP。
-
port,number 类型,从机端口。
-
slaveId,number 类型,从机 slave ID。
-
offset,number 类型,Modbus 地址。
-
dataType,number 类型,2:无符号整形,3:有符号整形。
-
输出参数
-
null,读取失败。
-
number,读取成功的返回值。
-
异常
本方法不抛出异常,异常捕获后只作日志记录。
Func04 读取输入寄存器
-
方法说明
Modbus 读取只读输入寄存器,功能码 04。
function readInputRegister(ip: string, port: number, slaveId: number, offset: number, dataType: number): number | null
-
输入参数
-
ip,string 类型,从机 IP。
-
port,number 类型,从机端口。
-
slaveId,number 类型,从机 slave ID。
-
offset,number 类型,Modbus 地址。
-
dataType,number 类型,2:无符号整形,3:有符号整形。
-
输出参数
-
null,读取失败。
-
number,读取成功的返回值。
-
异常
本方法不抛出异常,异常捕获后只作日志记录。
Func01 批量读取线圈量
-
方法说明
Modbus 读取线圈量多个连续地址值,并以数组的形式返回其中的值,功能码 01。
function batchReadCoilStatus(ip: string, port: number, slaveId: number, offset: number, len: number): Array<boolean> | null
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- slaveId,number 类型,从机 slave ID。
- offset,number 类型,Modbus 首地址。
- len,number 类型,Modbus 地址数量。
- 输出参数
- null,读取失败。
- Array,读取成功后,返回结果数组。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Func02 批量读取离散输入
-
方法说明
Modbus 读取离散输入多个连续地址值,并以数组的形式返回其中的值,功能码 02。
function batchReadInputStatus(ip: string, port: number, slaveId: number, offset: number, len: number): Array<boolean> | null
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- slaveId,number 类型,从机 slave ID。
- offset,number 类型,Modbus 首地址。
- len,number 类型,Modbus 地址数量。
- 输出参数
- null,读取失败。
- Array,读取成功后,返回结果数组。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Func03 批量读取保持寄存器
-
方法说明
Modbus 读取保持寄存器多个连续地址值,并以数组的形式返回其中的值,功能码 03。
function batchReadHoldingRegisters(ip: string, port: number, slaveId: number, offset: number, len: number): Array<number> | null
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- slaveId,number 类型,从机 slave ID。
- offset,number 类型,Modbus 首地址。
- len,number 类型,Modbus 地址数量。
- 输出参数
- null,读取失败。
- Array,读取成功后,返回结果数组。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Func04 批量读取输入寄存器
-
方法说明
Modbus 读取输入寄存器多个连续地址值,并以数组的形式返回其中的值,功能码 04。
function batchReadInputRegisters(ip: string, port: number, slaveId: number, offset: number, len: number): Array<number> | null
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- slaveId,number 类型,从机 slave ID。
- offset,number 类型,Modbus 首地址。
- len,number 类型,Modbus 地址数量。
- 输出参数
- null,读取失败。
- Array,读取成功后,返回结果数组。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Func05 写入线圈量
-
方法说明
Modbus 写入线圈量,功能码 05。
function writeCoilStatus(ip: string, port: number, slaveId: number, offset: number, value: boolean): boolean
-
输入参数
-
ip,string 类型,从机 IP。
-
port,number 类型,从机端口。
-
slaveId,number 类型,从机 slave ID。
-
offset,number 类型,Modbus 地址。
-
value,boolean 类型,写入的值。
-
输出参数
-
true,写入成功。
-
false,写入失败。
-
异常
本方法不抛出异常,异常捕获后只作日志记录。
Func06 写入保持寄存器
-
方法说明
Modbus 写入保持寄存器,功能码 06。
function writeHoldingRegister(ip: string, port: number, slaveId: number, offset: number, dataType: number, value: number): boolean
-
输入参数
-
ip,string 类型,从机 IP。
-
port,number 类型,从机端口。
-
slaveId,number 类型,从机 slave ID。
-
offset,number 类型,Modbus 地址。
-
dataType,number 类型,2:无符号整形,3:有符号整形。
-
value,number 类型,写入的值。
-
输出参数
-
true,写入成功。
-
false,写入失败。
-
异常
本方法不抛出异常,异常捕获后只作日志记录。
Func0f 批量写入线圈量
-
方法说明
Modbus 写入线圈量多个连续地址,功能码 0f。
function batchWriteCoilStatus(ip: string, port: number, slaveId: number, offset: number, value: Array<boolean>): boolean
-
输入参数
-
ip,string 类型,从机 IP。
-
port,number 类型,从机端口。
-
slaveId,number 类型,从机 slave ID。
-
offset,number 类型,Modbus 地址。
-
value,boolean 数组类型,多个需写入的值。
-
输出参数
-
true,写入成功。
-
false,写入失败。
-
异常
本方法不抛出异常,异常捕获后只作日志记录。
Func10 批量写入保持寄存器
-
方法说明
Modbus 写入保持寄存器多个连续地址,功能码 10。
function batchWriteHoldingRegister(ip: string, port: number, slaveId: number, offset: number, value: Array<number>): boolean
-
输入参数
-
ip,string 类型,从机 IP。
-
port,number 类型,从机端口。
-
slaveId,number 类型,从机 slave ID。
-
offset,number 类型,Modbus 地址。
-
value,number 数组类型,多个需写入的值。
-
输出参数
-
true,写入成功。
-
false,写入失败。
-
异常
本方法不抛出异常,异常捕获后只作日志记录。
通用写入单个地址
-
方法说明
Modbus 写入单个地址,通过参数 type 指定读取的地址类型。
function writeSingleModbusValue(ip: string, port: number, slaveId: number, type: string, offset: number, value: number): boolean
-
输入参数
-
ip,string 类型,从机 IP。
-
port,number 类型,从机端口。
-
slaveId,number 类型,从机 slave ID。
-
type,string类型,表示地址类型,可选择‘0x’,‘1x’,‘3x’,‘4x’,和功能码的对应关系如下:
0x:对应功能码0x01,表示读线圈。 1x:对应功能码0x02,表示读离散输入。 3x:对应功能码0x04,表示读输入寄存器。 4x:对应功能码0x03,表示读保持寄存器。
-
offset,number 类型,表示Modbus 地址。
-
value,number 类型,表示写入的值。
-
输出参数
-
true,写入成功。
-
false,写入失败。
-
异常 本方法不抛出异常,异常捕获后只作日志记录。
通用写入多个地址
-
方法说明
Modbus 写入单个地址,通过参数 type 指定读取的地址类型。
function writeBatchModbusValue(ip: string, port: number, slaveId: number, type: string, offset: number, values: number[]): boolean
-
输入参数
-
ip,string 类型,从机 IP。
-
port,number 类型,从机端口。
-
slaveId,number 类型,从机 slave ID。
-
type,string类型,表示地址类型,可选择‘0x’,‘1x’,‘3x’,‘4x’,和功能码的对应关系如下:
0x:对应功能码0x01,表示读线圈。 1x:对应功能码0x02,表示读离散输入。 3x:对应功能码0x04,表示读输入寄存器。 4x:对应功能码0x03,表示读保持寄存器。
-
offset,number 类型,表示Modbus 地址。
-
values,number 数组类型,表示写入的值。
-
输出参数
-
true,写入成功。
-
false,写入失败。
-
异常 本方法不抛出异常,异常捕获后只作日志记录。
通过实例名称写入单个地址
-
方法说明
Modbus 写入单个地址,通过参数 name 指定已经配置的实例名称。
function writeSingleModbusValueByInstanceName(name: string, offset: number, value: number): boolean
- 输入参数
- name,string 类型,已经配置的实例名称。
- offset,number 类型,表示 Modbus 地址。
- value,number 类型,表示写入的值。
- 输出参数
- true,写入成功。
- false,写入失败。
- 异常 如果没有配置 modbus 实例,则会抛出初始化异常。
通过实例名称写入多个地址
-
方法说明
Modbus 写入多个地址,通过参数 name 指定已经配置的实例名称。
function writeBatchModbusValueByInstanceName(name: string, offset: number, values: number[]): boolean
- 输入参数
- name,string 类型,已经配置的实例名称。
- offset,number 类型,表示 Modbus 地址。
- values,number 数组类型,表示写入的值。
- 输出参数
- true,写入成功。
- false,写入失败。
- 异常 如果没有配置 modbus 实例,则会抛出初始化异常。
通用读取单个地址
-
方法说明
Modbus 读取单个地址,通过参数 type 指定读取的地址类型。
function readSingleModbusValue(ip: string, port: number, slaveId: number, type: string, offset: number): number | null
-
输入参数
-
ip,string 类型,从机 IP。
-
port,number 类型,从机端口。
-
slaveId,number 类型,从机 slave ID。
-
type,string类型,表示地址类型,可选择‘0x’,‘1x’,‘3x’,‘4x’,和功能码的对应关系如下:
0x:对应功能码0x01,表示读线圈。 1x:对应功能码0x02,表示读离散输入。 3x:对应功能码0x04,表示读输入寄存器。 4x:对应功能码0x03,表示读保持寄存器。
-
offset,number 类型,Modbus 地址。
-
输出参数
-
null,读取失败。
-
number,读取成功的返回值。
-
异常 本方法不抛出异常,异常捕获后只作日志记录。
通用读取多个地址
-
方法说明
Modbus 读取多个地址,通过参数 name 指定已经配置的实例名称。
function readBatchModbusValue(ip: string, port: number, slaveId: number, type: string, offset: number, length: number): number[] | null
-
输入参数
-
ip: string 类型,从机 IP。
-
port: number 类型,从机端口。
-
slaveId: number 类型,从机 slave ID。
-
type: string类型,表示地址类型,可选择‘0x’,‘1x’,‘3x’,‘4x’,和功能码的对应关系如下:
0x:对应功能码0x01,表示读线圈。 1x:对应功能码0x02,表示读离散输入。 3x:对应功能码0x04,表示读输入寄存器。 4x:对应功能码0x03,表示读保持寄存器。
-
offset: number 类型,Modbus 地址。
-
length: number 类型,读取的数据长度。
-
输出参数
-
null: 读取失败。
-
number[]: 读取成功的返回值数组。
-
异常 本方法不抛出异常,异常捕获后只作日志记录。
通过实例名称读取单个地址
-
方法说明
Modbus 读取单个地址,通过参数 name 指定已经配置的实例名称。
function readSingleModbusValueByInstanceName(name: string, offset: number): number | null
- 输入参数
- name: string 类型,配置的唯一实例名称。
- offset: number 类型,Modbus 地址。
- 输出参数
- null: 读取失败。
- number: 读取成功的返回值。
- 异常 如果没有配置 modbus 实例,则会抛出初始化异常。
通过实例名称读取多个地址
-
方法说明
Modbus 读取多个地址,通过参数 name 指定已经配置的实例名称。
function readBatchModbusValueByInstanceName(name: string, offset: number, length: number): number[] | null
- 输入参数
- name: string 类型,配置的唯一实例名称。
- offset: number 类型,Modbus 地址。
- length: number 类型,读取的数据长度。
- 输出参数
- null: 读取失败。
- number[]: 读取成功的返回值。
- 异常 如果没有配置 modbus 实例,则会抛出初始化异常。
OPC-UA
OPC 读取数值
-
方法说明
读取 OPC server 中的某个地址位的值。
function readOpcValue(address: string | number): any
-
输入参数
-
address,string 类型,读取的地址位。
-
输出参数
-
读到的值。
-
异常
读取失败会抛出 RuntimeException 异常 “readOpcValue error”。
-
方法说明
function readOpcValue(namespaceIndex:number, address: string | number): any
-
输入参数
-
namespaceIndex, number类型,命名空间索引
-
address,string 类型,读取的地址位。地址类型 g=550e8400-e29b-41d4-a716-446655440000: g= 表示地址类型是 UUID;i=1008: i= 表示地址类型是 number;b=EAk=: b= 表示地址类型是 Opaque;s=1009: s= 表示地址类型是字符串
-
输出参数
-
读到的值。
-
异常
读取失败会抛出 RuntimeException 异常 “readOpcValue error”。
OPC 订阅方式读取数值
-
方法说明
通过订阅的方式,读取 OPC server 中的某个地址位的值。
function readOpcValueBySubscription(namespaceIndex: number, address: string): any
-
输入参数
-
namespaceIndex,number 类型,命名空间索引。
-
address,string 类型,读取的地址位。地址类型 g=550e8400-e29b-41d4-a716-446655440000: g= 表示地址类型是 UUID;i=1008: i= 表示地址类型是 number;b=EAk=: b= 表示地址类型是 Opaque;s=1009: s= 表示地址类型是字符串
-
输出参数
-
读到的值。
-
异常
读取失败会抛出 RuntimeException 异常 “readOpcValue error”。
OPC 写入数值
-
方法说明
读取 OPC server 中的某个地址位的值。
function writeOpcValue(address: string | number, value: any): boolean
-
输入参数
-
address,string 类型,表示写入的地址。
-
value,any 类型, 写入的值。
-
输出参数
成功返回 true,失败返回 false。
-
异常
本方法不抛出异常。
-
方法说明
读取 OPC server 中的某个地址位的值。
function writeOpcValue(namespaceIndex: number,address: string | number, value: any): boolean
-
输入参数
-
number类型,命名空间索引
-
address,string 类型,表示写入的地址。地址类型 g=550e8400-e29b-41d4-a716-446655440000: g= 表示地址类型是 UUID;i=1008: i= 表示地址类型是 number;b=EAk=: b= 表示地址类型是 Opaque;s=1009: s= 表示地址类型是字符串
-
value,any 类型, 写入的值。
-
输出参数
成功返回 true,失败返回 false。
-
异常
本方法不抛出异常。
Melsec
Melsec 读取 boolean
-
方法说明
Melsec 读取 boolean。
function readMelsecBoolean(ip: string, port: string, address: string): boolean | null
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- address,string 类型,读取的地址位。
- 输出参数
- null,读取失败。
- boolean,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Melsec 读取 number
-
方法说明
Melsec 读取 number。
function readMelsecNumber(ip: string, port: string, address: string): number | null
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- address,string 类型,读取的地址位。
- 输出参数
- null,读取失败。
- number,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Melsec 读取 string
-
方法说明
Melsec 读取 string。
function readMelsecString(ip: string, port: string, address: string, length: number) : string | null
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- address,string 类型,读取的地址位。
- length,number 类型,读取的长度。
- 输出参数
- null,读取失败。
- string,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Melsec 写入 boolean
-
方法说明
Melsec 写入 boolean。
function writeMelsecBoolean(ip: string, port: string, address: string, value: boolean): void
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- address,string 类型,写入的地址位。
- value,boolean 类型,写入的值。
- 输出参数
- 成功返回 true,失败返回 false。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Melsec 写入 number
-
方法说明
Melsec 写入 number。
function writeMelsecNumber(ip: string, port: string, address: string, value: number) : void
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- address,string 类型,写入的地址位。
- value,number 类型,写入的值。
- 输出参数
- 成功返回 true,失败返回 false。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Melsec 写入 string
-
方法说明
Melsec 写入 string。
function writeMelsecString(ip: string, port: string, address: string, value: string) : void
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- address,string 类型,写入的地址位。
- value,string 类型,写入的值。
- 输出参数
- 成功返回 true,失败返回 false。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Fins
Fins 读取 string
-
方法说明
Fins 读取 string。
function readFinsString(ip: string, port: number, area: number, finsIoAddr: number, bitOffset: number, wordLength: number) : string
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- area,number 类型,读取的存储区域代码,16进制值如:(0x82) 。
- finsIoAddr,number 类型,读取的地址位 。
- bitOffset,number 类型,读取的偏移量 。
- wordLength,number 类型,读取的长度 。
- 输出参数
- null,读取失败。
- string,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Fins 读取 word
-
方法说明
Fins 读取 word。
function readFinsWord(ip: string, port: number, area: number, finsIoAddr: number, bitOffset: number) : number
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- area,number 类型,读取的存储区域代码,16进制值如:(0x82) 。
- finsIoAddr,number 类型,读取的地址位 。
- bitOffset,number 类型,读取的偏移量 。
- 输出参数
- null,读取失败。
- number,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Fins 读取 bit
-
方法说明
Fins 读取 bit。
function readFinsBit(ip: string, port: number, area: number, finsIoAddr: number, bitOffset: number) : number
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- area,number 类型,读取的存储区域代码,16进制值如:(0x82) 。
- finsIoAddr,number 类型,读取的地址位 。
- bitOffset,number 类型,读取的偏移量
- 输出参数
- null,读取失败。
- number,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Fins 写入 word
-
方法说明
Fins 写入 word。
function writeFinsWord(ip: string, port: number, area: number, finsIoAddr: number, bitOffset: number, value: number) : void
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- area,number 类型,写入的存储区域代码,16进制值如:(0x82) 。
- finsIoAddr,number 类型,写入的地址位 。
- bitOffset,number 类型,写入的偏移量 。
- value,number 类型,写入的值。
- 输出参数
- 该方法无输出参数。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
Fins 写入 bit
-
方法说明
Melsec 写入 string。
function writeFinsBit(ip: string, port: number, area: number, finsIoAddr: number, bitOffset: number, value: boolean) : void
- 输入参数
- ip,string 类型,从机 IP。
- port,number 类型,从机端口。
- area,number 类型,写入的存储区域代码,16进制值如:(0x82) 。
- finsIoAddr,number 类型,写入的地址位 。
- bitOffset,number 类型,写入的偏移量 。
- value,boolean类型,写入的值。
- 输出参数
- 该方法无输出参数。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7
S7 读取 Int
-
方法说明
S7 读取 Int。
function readS7Int(type: string, ip: string, blockAndOffset: string): number;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - 输出参数
- null,读取失败。
- number,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 读取 DInt
-
方法说明
S7 读取 DInt。
function readS7DInt(type: string, ip: string, blockAndOffset: string): number;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - 输出参数
- null,读取失败。
- number,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 读取 Word
-
方法说明
S7 读取 Word。
function readS7Word(type: string, ip: string, blockAndOffset: string): number;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - 输出参数
- null,读取失败。
- number,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 读取 DWord
-
方法说明
S7 读取 DWord。
function readS7DWord(type: string, ip: string, blockAndOffset: string): number;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - 输出参数
- null,读取失败。
- number,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 读取 String
-
方法说明
S7 读取 String。
function readS7String(type: string, ip: string, blockAndOffset: string): string;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - 输出参数
- null,读取失败。
- string,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 读取 Bool
-
方法说明
S7 读取 Bool。
function readS7Boolean(type: string, ip: string, blockAndOffset: string): boolean;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - 输出参数
- null,读取失败。
- boolean,读取成功的返回值。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 写入 Int
-
方法说明
S7 写入 Int。
function writeS7Int(type: string, ip: string, blockAndOffset: string, value: number): boolean;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - value,number 类型,写入的值。
- 输出参数
- 成功返回 true,失败返回 false。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 写入 DInt
-
方法说明
S7 写入 DInt。
function writeS7DInt(type: string, ip: string, blockAndOffset: string, value: number): boolean;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - value,number 类型,写入的值。
- 输出参数
- 成功返回 true,失败返回 false。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 写入 Word
-
方法说明
S7 写入 Word。
function writeS7Word(type: string, ip: string, blockAndOffset: string, value: number): boolean;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - value,number 类型,写入的值。
- 输出参数
- 成功返回 true,失败返回 false。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 写入 DWord
-
方法说明
S7 写入 DWord。
function writeS7DWord(type: string, ip: string, blockAndOffset: string, value: number): boolean;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - value,number 类型,写入的值。
- 输出参数
- 成功返回 true,失败返回 false。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 写入 String
-
方法说明
S7 写入 String。
function writeS7String(type: string, ip: string, blockAndOffset: string, value: string): boolean;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - value,string 类型,写入的值。
- 输出参数
- 成功返回 true,失败返回 false。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 写入 Bool
-
方法说明
S7 写入 Bool。
function writeS7Boolean(type: string, ip: string, blockAndOffset: string, value: boolean): boolean;
- 输入参数
- type,string 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。
- ip,string 类型,PLC IP。
- blockAndOffset,string 类型,读取的地址,支持的区域取值示例如下(区分大小写):
地址名称 地址代号 示例 中间寄存器 M M100,M200 输入寄存器 I I100,I200 输出寄存器 Q Q100,Q200 DB块寄存器 DB DB1.100,DB1.200.7 V寄存器 V V100,V200 定时器的值 T T100,T200 计数器的值 C C100,C200 智能输入寄存器 AI AI100,AI200 智能输出寄存器 AQ AQ100,AQ200 - value,boolean 类型,写入的值。
- 输出参数
- 成功返回 true,失败返回 false。
- 异常 本方法不抛出异常,异常捕获后只作日志记录。
S7 写入
-
方法说明
S7 写入 Int、DInt、Word、DWord、String、Bool.
function writeS7(type String, ip String, slot int, rack int, dataType String, blockAndOffset String, value Any):Bool;
-
输入参数
-
type:同上
-
ip:同上
-
slot:CPU 模块的插槽号
-
rack:中央机架
-
dataType:在 Int,DInt,Word,String,Bool 中可选
-
blockAndOffset:同上
-
value: 与 dataType 类型匹配
-
输出参数
成功返回 true,失败返回 false。
-
异常
本方法不抛出异常,异常捕获后只作日志记录。
S7 读取
-
方法说明
S7 读取 Int、DInt、Word、DWord、String、Bool,类型地址位的值。
function readS7(type String, ip String, slot int, rack int, dataType String, blockAndOffset String):Any
-
输入参数
-
type:同上
-
ip:同上
-
slot:CPU 模块的插槽号
-
rack:中央机架
-
dataType:在 Int,DInt,Word,String,Bool 中可选
-
blockAndOffset:同上
-
输出参数
-
null,读取失败。
-
Any,读取成功的返回值。
-
异常
本方法不抛出异常,异常捕获后只作日志记录。
MQTT
MQTT 订阅信息(使用传入的topic)
-
方法说明
向指定的 topic 订阅信息 ,适用于订阅多个topic的场景。
function MQTTSubscribe(topic: string): string;
-
输入参数
-
topic,string 类型,订阅的 topic。
-
输出参数
订阅到的信息。
如果订阅失败返回 null。
-
异常
本方法不会抛出异常。
-
使用示例
-
- 在 application-biz.yml 里面开启MQTT,并完成相应的配置,如下:
# 是否开启 MQTT 服务
mqttConfigView:
enable: true
pubConfig:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# 订阅的主题,MQTT允许使用通配符订阅主题,不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
qos: 2
# 客户端唯一标识
clientId: RDS-Pub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
cleanSession: false
# 超时时间(seconds)
connectionTimeout: 30
# 设置会话心跳时间(seconds)
keepAliveInterval: 60
# 设置断开后重新连接
automaticReconnect: true
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
# 作为publish的遗嘱消息,会存到服务器,在publish端非正常断连的情况下,发送给所有订阅的客户端
# 不需要就填 null
willMsg: null
# 遗嘱消息发布的topic
willTopic: Examples1
subConfig:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# MQTT允许使用通配符sub订阅主题,但不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
qos: 1
# 客户端唯一标识
clientId: RDS-Sub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
cleanSession: false
# 超时时间(seconds)
connectionTimeout: 30
# 设置会话心跳时间(seconds)
keepAliveInterval: 60
# 设置断开后重新连接
automaticReconnect: true
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
-
- 编写脚本方法
var data = jj.MQTTSubscribe("testTopic");
jj.scriptLog("info","sub1",data);
MQTT 订阅信息(使用配置文件的topic)
-
方法说明
向 application-biz.yml 配置的 topic 订阅信息 ,适用于只订阅一个topic的场景。
function MQTTSubscribe(): string;
-
输入参数
无。
-
输出参数
订阅到的信息。
如果订阅失败返回 null。
-
异常
本方法不会抛出异常。
-
使用示例
-
- 在 application-biz.yml 里面开启MQTT,并完成相应的配置,如下:
# 是否开启 MQTT 服务
mqttConfigView:
enable: true
pubConfig:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# 订阅的主题,MQTT允许使用通配符订阅主题,不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
qos: 2
# 客户端唯一标识
clientId: RDS-Pub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
cleanSession: false
# 超时时间(seconds)
connectionTimeout: 30
# 设置会话心跳时间(seconds)
keepAliveInterval: 60
# 设置断开后重新连接
automaticReconnect: true
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
# 作为publish的遗嘱消息,会存到服务器,在publish端非正常断连的情况下,发送给所有订阅的客户端
# 不需要就填 null
willMsg: null
# 遗嘱消息发布的topic
willTopic: Examples1
subConfig:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# MQTT允许使用通配符sub订阅主题,但不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
qos: 1
# 客户端唯一标识
clientId: RDS-Sub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
cleanSession: false
# 超时时间(seconds)
connectionTimeout: 30
# 设置会话心跳时间(seconds)
keepAliveInterval: 60
# 设置断开后重新连接
automaticReconnect: true
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
-
- 编写脚本方法
var data = jj.MQTTSubscribe();
jj.scriptLog("info","sub",data);
MQTT 发布信息(使用传入的topic)
-
方法说明
向输入的 topic 发布信息 。
function MQTTPublish(topic: string, message: string): void;
-
输入参数
-
topic,string 类型,订阅的 topic。
-
message,string 类型,需要发布的信息。
-
输出参数
无。
-
异常
本方法不会抛出异常。
-
使用示例
-
- 在 application-biz.yml 里面开启MQTT,并完成相应的配置,如下:
# 是否开启 MQTT 服务
mqttConfigView:
enable: true
pubConfig:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# 订阅的主题,MQTT允许使用通配符订阅主题,不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
qos: 2
# 客户端唯一标识
clientId: RDS-Pub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
cleanSession: false
# 超时时间(seconds)
connectionTimeout: 30
# 设置会话心跳时间(seconds)
keepAliveInterval: 60
# 设置断开后重新连接
automaticReconnect: true
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
# 作为publish的遗嘱消息,会存到服务器,在publish端非正常断连的情况下,发送给所有订阅的客户端
# 不需要就填 null
willMsg: null
# 遗嘱消息发布的topic
willTopic: Examples1
subConfig:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# MQTT允许使用通配符sub订阅主题,但不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
qos: 1
# 客户端唯一标识
clientId: RDS-Sub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
cleanSession: false
# 超时时间(seconds)
connectionTimeout: 30
# 设置会话心跳时间(seconds)
keepAliveInterval: 60
# 设置断开后重新连接
automaticReconnect: true
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
-
- 编写脚本方法
jj.MQTTPublish("testTopic","RDS-Script sub message.");
MQTT 发布信息(使用配置文件的topic)
-
方法说明
向配置的 topic 发布信息 。
function MQTTPublish(message: string): void;
-
输入参数
-
message,string 类型,需要发布的信息
-
输出参数
无。
-
异常
本方法不会抛出异常。
-
使用示例
-
- 在 application-biz.yml 里面开启MQTT,并完成相应的配置,如下:
# 是否开启 MQTT 服务
mqttConfigView:
enable: true
pubConfig:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# 订阅的主题,MQTT允许使用通配符订阅主题,不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
qos: 2
# 客户端唯一标识
clientId: RDS-Pub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
cleanSession: false
# 超时时间(seconds)
connectionTimeout: 30
# 设置会话心跳时间(seconds)
keepAliveInterval: 60
# 设置断开后重新连接
automaticReconnect: true
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
# 作为publish的遗嘱消息,会存到服务器,在publish端非正常断连的情况下,发送给所有订阅的客户端
# 不需要就填 null
willMsg: null
# 遗嘱消息发布的topic
willTopic: Examples1
subConfig:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# MQTT允许使用通配符sub订阅主题,但不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量(0:消息最多传递一次(零次或一次)1:至少传递一次(一次或多次)。2:只传递一次)
qos: 1
# 客户端唯一标识
clientId: RDS-Sub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录,true每次都以新的身份连接服务器
cleanSession: false
# 超时时间(seconds)
connectionTimeout: 30
# 设置会话心跳时间(seconds)
keepAliveInterval: 60
# 设置断开后重新连接
automaticReconnect: true
# 表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
-
- 编写脚本方法
jj.MQTTPublish("RDS-Script sub message.");
需求单
创建需求单
-
方法说明
根据指定的参数创建新的需求单。
function addDemand(demandJson: string): string
-
输入参数
-
demandJson,string 类型,表示需求单的详情,反序列化后的示例如下:
{ "defLabel": "", // 需求单的名称 "content": "", // 需求内容,序列化之后的 JSON 数据 "createdBy": "", // 当前需求单的创建者 "description": "", // 需求单的描述 "menuId": "", // 补充需求菜单id "workTypes": "", // 可操作当前需求单的岗位 "workStations": "", // 可操作当前需求单的工位 "attrList": [ // 需求单的扩展字段值,不需要可以不传此参数 { "attributeName": "ExtendedField1", "attributeValue": "value1" }, { "attributeName": "ExtendedField2", "attributeValue": "value2" } ] } -
输出参数
成功时,返回需求单的 ID。
-
异常
本方法会抛出异常。
根据 ID 更新需求单状态为完成
-
方法说明
根据 ID 将指定的需求单的状态,更新为完成。
function updateDemandFinishedById(demandId: string, supplementContent: string, handler: string): number
-
输入参数
-
demandId,string 类型,表示需求单的 ID。
-
supplementContent,string 类型,表示补充需求内容,为序列化之后的 JSON 数据。
-
handler,string 类型,表示处理人。
-
输出参数
-
成功时,返回值为 1。
-
失败时,返回值为 0。
-
异常
本方法会抛出异常。
根据 createBy 更新需求单状态为完成
-
方法说明
根据 createBy 将指定的需求单的状态,更新为完成。
function updateDemandFinishedByCreateBy(createBy: string, supplementContent: string, handler: string): number
-
输入参数
-
createBy,string 类型,表示当前需求单的创建者。
-
supplementContent,string 类型,表示补充需求内容,为序列化之后的 JSON 数据。
-
handler,string 类型,表示处理人。
-
输出参数
-
成功时,返回值为 1。
-
失败时,返回值为 0。
-
异常
本方法会抛出异常。
文件操作
根据文件名读取脚本目录下的文件内容
-
方法说明
根据文件名,读取脚本目录下的文件内容。
function readFileToString(fileName: string): string
-
输入参数
-
fileName,string 类型,表示目标文件的名称(带后缀,例如 a.txt )。
-
输出参数
-
读取文件成功时,返回值为表示文件内容的字符串。
-
读取文件失败时,返回值为 null 。
-
异常
本方法不会抛出异常。
分拨单
标记分拨点满
-
方法说明
标记分拨点货满,不需要放货
function distributeMarkFull(loc:string)
- 输入参数
- loc,string类型,表示库位的id
- 输出参数
- 成功时,返回true
- 失败时,返回false
标记分拨点缺货
-
方法说明
标记分拨点缺货,可以放货
function distributeMarkNotFull(loc:string)
- 输入参数
- loc,string类型,表示库位的id
- 输出参数
- 成功时,返回true
- 失败时,返回false
报告放货完成
-
方法说明
报告当前库位放货完成,可离开
function distributeTaskDone(vehicleId:string)
- 输入参数
- vehicleId,string类型,表示机器人的id
- 输出参数
- 成功时,返回true
- 失败时,返回false
增加分拨点
-
方法说明
向正在运行的分拨任务,添加分拨点
function appendToLocList(taskRecordId:String, toLocList:String, blockNo:String): boolean
-
输入参数
-
taskRecordId,String类型,必填,任务实例的Id
-
toLocList,添加分拨点的参数,字符串,数据格式如下:
[ { "toLoc": "LM7", //必填分拨点 "postAction":"" //非必填,分拨点完成的回调 } ] -
blockNo,天风任务块编号("
b8"),可不填,默认对应任务下正在运行的分拨单,如果涉及多个需要指定块编号 -
返回值,成功
true,失败false -
案例
let loc = [{
"toLoc": "LM7"
}]
jj.appendToLocList("6e32d7f2-99fa-42d4-8c4d-cd267190d694",JSON.stringify(loc),"b8")
#说明:向在天风任务块编号是b8的任务id为6e32d7f2-99fa-42d4-8c4d-cd267190d694的分拨单添加一个分拨点LM7
删除分拨点
-
方法说明
向正在运行的分拨任务,删除分拨点
function deleteToLocList(taskRecordId:String, toLocs:String, blockNo:String): boolean
-
输入参数
-
taskRecordId,String类型,必填,任务实例的Id
-
toLocs, 删除分拨点的参数,字符串,数据格式如下:
["LM41"] -
blockNo,天风任务块编号("
b8"),可不填,默认对应任务下正在运行的分拨单,如果涉及多个需要指定块编号 -
返回值,成功
true,失败false -
案例
let delLoc = ["LM41"];
jj.deleteToLocList("276ccf58-c429-4e33-ad7b-4bcbe9d56e27", JSON.stringify(delLoc),"b8"))
#说明:向在天风任务块编号是b8的任务id为6e32d7f2-99fa-42d4-8c4d-cd267190d694的分拨单删除一个分拨点LM41
Websocket
根据ip向客户端发送消息
-
方法说明
根据ip向客户端发送消息
function sendMsgToWscByClientIp(msg:string,ip:string): void
-
输入参数
-
msg,string类型,表示要发送的消息
-
ip,string类型,表示接收消息的客户端ip
-
输出参数
-
无。
-
异常
本方法会抛出异常。
根据客户端名称向客户端发送消息
-
方法说明
根据客户端名向客户端发送消息
function sendMsgToWscByClientName(msg:string,clientName:string): void
-
输入参数
-
msg,string类型,表示要发送的消息
-
clientName,string类型,表示接收消息的客户端名
-
输出参数
-
无。
-
异常
本方法会抛出异常。
获取所有客户端ip
-
方法说明
获取所有websocket客户端的ip
function getWebsocketClientIp(): string
-
输入参数
-
无。
-
输出参数
-
所有客户端的ip
-
异常
本方法会抛出异常。
获取所有客户端名
-
方法说明
获取所有websocket客户端名
function getWebsocketClientName(): string
-
输入参数
-
无。
-
输出参数
-
所有客户端名
-
异常
本方法会抛出异常。
其他
创建唯一的 ID 编号
-
方法说明
创建唯一的 ID 编号。
function createUuid(): string
-
输入参数
无。
-
输出参数
-
表示一个唯一 ID 编号的字符串。
-
异常
本方法会抛出异常。
发送邮件
-
方法说明
向目标收件方发送简单邮件。
function sendMail(param: string): void
-
输入参数
-
param,string 类型,表示邮件的详情,反序列化后的示例如下:
{ "to": "yy@yy.com", // 接收方,必填 "subject": "Daily Meeting", // 主题,必填 "text": "xxx", // 内容,必填 "cc": "xxx@xxx.com,yyy@yyy.com", // 抄送,选填 "bcc": "zzz@zzz.com" // 秘密抄送,选填 } -
输出参数
无。
-
异常
本方法会抛出异常。
发送用户消息
-
方法说明
发送用户消息,不仅可以弹窗提醒,还可以在RDS的消息管理界面进行查看。
function sendUserMessage(level: string, messageTitle: string, messageBody: string): void
-
输入参数
-
level,string 类型,表示消息提醒的等级,有ERROR,WARN,INFO三种等级。
-
messageTitle,string 类型,表示用户消息的标题。
-
messageBody,string 类型,表示用户消息的内容。
-
输出参数
无。
-
异常
本方法不会抛出异常。
JSON字符串转化为XML字符串
-
方法说明
将json字符串转化为xml字符串
function jsonToXml(param: string): string
-
输入参数
-
param,string 类型,表示传入的json字符串
-
输出参数
-
xml字符串
-
异常
本方法会不抛出异常。
MD5字符串加密
-
方法说明
将字符串进行加密后返回
function md5Encode(param: string): string
-
输入参数
-
param,string 类型,表示传入的字符串
-
输出参数
-
32位小写字符串
-
异常
本方法会抛出异常。
Base64字符串重编码
-
方法说明
将字符串进行重编码后返回
function base64Encode(param: string): string
-
输入参数
-
param,string 类型,表示传入的字符串
-
输出参数
-
UrlBase64 重编码后的字符串
-
异常
本方法会抛出异常。
转换成分页对象
-
方法说明
根据给定的参数和数据,转换成分页对象并进行返回。
function transToPageObj(totalCount: number, currentPage: number, pageSize: number, totalPage: number, pageList: string): string
-
输入参数
-
totalCount, number 类型,表示分页数据的总条数
-
currentPage, number 类型,表示当前是第几页
-
pageSize, number 类型,表示每页显示的数量
-
totalPage, number 类型,表示总页数
-
pageList, string 类型,表示当前页的数据
-
输出参数
-
转换后的分页对象字符串
-
异常
本方法不会抛出异常。
-
请求示例
function transToPageObj() {
// 1. 提供分页相关参数和源数据
// 当前是第几页,最小值就是1!
var currentPage = 2;
// 每页的数据条数
var pageSize = 20;
// 获取相关的数据,以实际情况为准进行修改
var data = jj.findSitesByCondition("{}","ASC");
// 打印查询到的数据
jj.scriptLog("INFO", "transToPageObj", data);
// 转换成对象,方便截取当页的数据
var dataObj = JSON.parse(data);
// 截取指定页的数据
var pageListObj = dataObj.slice((currentPage-1)*pageSize, currentPage*pageSize);
// 将截取的数据转成字符串
var pageListStr = JSON.stringify(pageListObj);
// 2. 调用脚本方法,转换成分页对象
// 将数据转换成分页对象
var res = jj.transToPageObj(dataObj.length, currentPage, pageSize, Math.ceil(dataObj.length/pageSize), pageListStr);
// 打印转换后的结果
jj.scriptLog("INFO", "res=", res);
// 3. 拿着分页对象进行返回或其他操作
// TODO
}
获取天风任务参数
-
方法说明
在脚本中直接获取到天风任务参数。
function getScriptValue(key: string): string
-
输入参数
-
key,变量表达式。
-
输出参数
天风任务中参数key的值的字符串。
-
异常 本方法不会抛出异常。该方法如果获取一个不存在的值时将会返回NULL。
-
请求示例
function test() {
//获取任务变量status
jj.scriptLog("debug","b1,agvid:",jj.getScriptValue("task.variables.status"))
//获取b4块选出的库位
jj.scriptLog("debug","b1,agvid:",jj.getScriptValue("blocks.b4.siteId"))
//获取输入参数agvId
jj.scriptLog("debug","b1,agvid:",jj.getScriptValue("taskInputs.agvId"))
}
批量放行
-
方法说明
批量放行机器人,与等待放行块结合使用。
function releaseWaitPass(agvIds: Array<String>): boolean
- 输入参数
- agvIds,String 数组类型,需放行的机器人Id。
- 输出参数
- true,放行成功。
- false,放行失败
- 异常 本方法不会抛出异常。
- 请求示例
function releaseWaitPass(){
let agvIds = []//注意参数是数组
agvIds.push("AMB-150J")//放行一个就只用push一个
agvIds.push("sim_01")
jj.releaseWaitPass(agvIds)
}
脚本公平锁
-
方法说明
根据锁名称,获取不同的锁,并发情况下串行执行一段代码
function withFairnessLock(lockName: string, fair: boolean, action: () => void): void;
-
输入参数
-
lockName:String 锁的名称
-
fair:true: 公平锁更具时间先后顺序获取,false: 非公平锁,随机获取锁
-
action: 执行的代码块
-
输出参数
无
-
异常 本方法不会抛出异常。
-
请求示例
jj.withFairnessLock("kk", true, () => {
// 代码块
jj.scriptLog("INFO", "test", "test")
})
进程已结束,退出代码为 0