[text] boot.js

Viewer

  1. var modbusIp70 = "192.168.2.70"         //modbus ip 
  2. var modbusPort70 = 502                                 //modbus port
  3. var modbusSlaveId70 = 1                         //modbus slaveId master/slave service
  4. var modbusOffset70 = 0                               //Dirección de lectura de señal/Signal read address
  5. var modbusAddrType70 = "0x"         //Signal ata type 0x: Read coil 1x: Read discrete input 3x: Read input register 4x: Read holding register
  6. var modbusIp71 = "192.168.2.71"         //modbus ip 
  7. var modbusPort71 = 502                                 //modbus port
  8. var modbusSlaveId71 = 1                         //modbus slaveId master/slave service
  9. var modbusOffset71 = 0                               //Dirección de lectura de señal/Signal read address
  10. var modbusAddrType71 = "0x"         //Signal ata type 0x: Read coil 1x: Read discrete input 3x: Read input register 4x: Read holding register
  11.  
  12.  
  13.  
  14. function boot() {
  15.     // Registration of the response method for the order button of the "Warehouse Shipment" menu
  16.     jj.registerHandler("POST", "/script-api/addDemandDataUI", "addDemandDataUI", false);
  17.     jj.registerHandler("POST", "/script-api/addDemandDataUE", "addDemandDataUE", false);
  18.     jj.registerHandler("POST", "/script-api/DevolucionUI", "DevolucionUI", false); //------update
  19.     jj.registerHandler("POST", "/script-api/DevolucionUE", "DevolucionUE", false); //------update
  20.     // Read Modbus data regularly Rampa MockUp
  21.     jj.defineScheduledFunctions(true, 4000, 4000, "EnvioMockup", [])
  22. }
  23.  
  24.  
  25. //Función Rampa MockUp
  26. function EnvioMockup(){
  27.     // 读取 Modbus 信号值
  28.  
  29.     var signalValue70= jj.readSingleModbusValue(modbusIp70, modbusPort70, modbusSlaveId70, modbusAddrType70, modbusOffset70)
  30.     //jj.scriptLog("INFO", "EnvioMockup70", "Pedido de Mockup enviado!" + signalValue70)
  31.  
  32.     var signalValue71= jj.readSingleModbusValue(modbusIp71, modbusPort71, modbusSlaveId71, modbusAddrType71, modbusOffset71)
  33.     //jj.scriptLog("INFO", "EnvioMockup71", "Pedido de Mockup enviado!" + signalValue71)
  34.     
  35.     // 生成任务之前不仅要先读取 Modbus 生成任务信号,还要读取缓存变量 name
  36.         var flag70 = jj.getCacheParam("CB70")// 获取缓存变量 name。
  37.         var flag71 = jj.getCacheParam("CB71")// 获取缓存变量 name。
  38.       // 发起任务的信号值 == 1 && 缓存变量 name != true
  39.     if(signalValue70 == 1 && flag70 != "true" ){
  40.         // 构造任务输入参数
  41.         if (signalValue71 == 1 && flag71 != "true" ) {
  42.     
  43.         let inputParams = {
  44.         destination:""  //机器人目标站点
  45.         }
  46.             
  47.         // 构造任务参数
  48.         let orderReq = {
  49.             taskLabel:"MoveMatMockUpOdu", //任务名
  50.             inputParams:JSON.stringify(inputParams)
  51.         }
  52.  
  53.         // 发起任务
  54.         jj.createWindTask(JSON.stringify(orderReq))
  55.         // 将 name 变量设置为 true。此处仅举例说明,缓存变量的处理,应按实际业务需求进行。
  56.                 jj.putCacheParam("CB70", "true")
  57.                 jj.putCacheParam("CB71", "true")
  58.         
  59.         // 打印日志
  60.         jj.scriptLog("INFO", "EnvioMockup", "Pedido de Mockup enviado!")
  61.         }
  62.     }
  63. }
  64.  
  65.  
  66.  
  67.  // UNIDAD INTERIOR
  68. function addDemandDataUI(param) {
  69.     var paramObject = JSON.parse(param);
  70.     let response = new ScriptRepsonseEntity();
  71.     let operatorResponse = new OperatorRepsonseEntity();
  72.     // Create Demand Task
  73.     let robotDefLabel = paramObject["robotTaskDef"];
  74.     //let puesto = paramObject["targetSite"];
  75.     let menuId = paramObject["menuId"];
  76.     let addParam = {
  77.         // NOMBRE Demand Task data name, can be customized, and yml Demand Task configuration parameters to maintain uniformity in the defLabel field value
  78.         defLabel: robotDefLabel,
  79.         description: "Abastecimiento UI",
  80.         // The menu id corresponding to the Demand Task supplement needs to be present in the yml configuration
  81.         menuId: "chooseMatSiteUI",
  82.         // Work Type visible in Demand Task data
  83.         workTypes: "COMMON-TYPE",
  84.         // Work Station visible in Demand Task data
  85.         workStations: "UNIDAD INTERIOR",
  86.         createdBy: menuId,
  87.         // Object of the Demand Task content
  88.         content: paramObject,
  89.         // Demand extension field, need to be configured now in the configuration file
  90.         attrList: [{"attributeName": "attribute1","attributeValue": "123"},{"attributeName": "attribute2","attributeValue": "123"}]
  91.     };
  92.     // Create Demand Task data
  93.     jj.addDemand(JSON.stringify(addParam));
  94.  
  95.     response.body = JSON.stringify(operatorResponse);
  96.     return response;
  97. }
  98.  
  99.  // UNIDAD EXTERIOR
  100. function addDemandDataUE(param) {
  101.     var paramObject = JSON.parse(param);
  102.     let response = new ScriptRepsonseEntity();
  103.     let operatorResponse = new OperatorRepsonseEntity();
  104.     // Create Demand Task
  105.     let robotDefLabel = paramObject["robotTaskDef"];
  106.     let menuId = paramObject["menuId"];
  107.     let addParam = {
  108.         // NOMBRE Demand Task data name, can be customized, and yml Demand Task configuration parameters to maintain uniformity in the defLabel field value
  109.         defLabel: robotDefLabel,
  110.         description: "Abastecimiento UE",
  111.         // The menu id corresponding to the Demand Task supplement needs to be present in the yml configuration
  112.         menuId: "chooseMatSiteUE",
  113.         // Work Type visible in Demand Task data
  114.         workTypes: "COMMON-TYPE",
  115.         // Work Station visible in Demand Task data
  116.         workStations: "UNIDAD EXTERIOR",
  117.         createdBy: menuId,
  118.         // Object of the Demand Task content
  119.         content: paramObject,
  120.         // Demand extension field, need to be configured now in the configuration file
  121.         attrList: [{"attributeName": "attribute1","attributeValue": "123"},{"attributeName": "attribute2","attributeValue": "123"}]
  122.     };
  123.     // Create Demand Task data
  124.     jj.addDemand(JSON.stringify(addParam));
  125.  
  126.     response.body = JSON.stringify(operatorResponse);
  127.     return response;
  128. }
  129.  
  130.  
  131.  
  132. // Response method for clicking on an order on the Demand Task details page, this method is used to generate a handling job based on the start and end point of the call point
  133. function dealOrderUI(param) {
  134.     let demandInfo = JSON.parse(param);
  135.     // Content of Demand Task
  136.     let contentObject = demandInfo["content"];
  137.     let contentParam = contentObject["params"];
  138.     // Selected call point Worksite id
  139.     let toSiteId = contentParam[0]["value"];
  140.     // Additions to the Demand Task
  141.     let supplementContentObject = demandInfo["suplementContent"];
  142.     let suppleParam = supplementContentObject["params"];
  143.     let fromSiteId = suppleParam[0]["value"];
  144.     let inputParams = {
  145.         fromSiteId: fromSiteId,
  146.         toSiteId: toSiteId
  147.     };
  148.  
  149.     let taskParam = {
  150.         // Name of the Wind Task to move materials
  151.         taskLabel: "moveMat",
  152.         inputParams: JSON.stringify(inputParams)
  153.     };
  154.     // Running the Wind Task of handling materials
  155.     jj.createWindTask(JSON.stringify(taskParam));
  156. }
  157.  
  158. // Response method for clicking on an order on the Demand Task details page, this method is used to generate a handling job based on the start and end point of the call point
  159. function dealOrderUE(param) {
  160.     let demandInfo = JSON.parse(param);
  161.     // Content of Demand Task
  162.     let contentObject = demandInfo["content"];
  163.     let contentParam = contentObject["params"];
  164.     // Selected call point Worksite id
  165.     let toSiteId = contentParam[0]["value"];
  166.     // Additions to the Demand Task
  167.     let supplementContentObject = demandInfo["suplementContent"];
  168.     let suppleParam = supplementContentObject["params"];
  169.     let fromSiteId = suppleParam[0]["value"];
  170.     let inputParams = {
  171.         fromSiteId: fromSiteId,
  172.         toSiteId: toSiteId
  173.     };
  174.  
  175.     let taskParam = {
  176.         // Name of the Wind Task to move materials
  177.         taskLabel: "moveMatUE",
  178.         inputParams: JSON.stringify(inputParams)
  179.     };
  180.     // Running the Wind Task of handling materials
  181.     jj.createWindTask(JSON.stringify(taskParam));
  182. }
  183.  
  184.  
  185. function DevolucionUI(param){//------update
  186.  
  187.     //Attention ! followed by //------ changes means it may need to be modified. If not, it means no change is needed.
  188.  
  189.     //1.Operator parameters are processed and the format is converted (no changes required)
  190.     jj.getLogger().info("Create task parameters:" + param);
  191.     var paramJson = JSON.parse(param);
  192.     var params = paramJson["params"];
  193.  
  194.     /*2.Read the parameters from the Operator, (change according to the actual situation)
  195.     If the number of incoming parameters is equal to 1: keep 'let from = params[0]["value"]; 'and remove         'let to = params[1]["value"];'.
  196.     If the incoming parameter is equal to 2: just leave it as it is.
  197.     If the incoming parameters are greater than 2; add code as per the rule, e.g.: if the incoming                 parameters are 3, add 'let site = params[2]["value"];'.
  198.     When reading the parameters passed by the Operator, in the following points need to be noted.
  199.     1. the naming of the parameters to the left of the equal sign corresponds to [task input parameters] -->         [variable name] in wink task, in this case, wink task writes incoming variable names from , to. so in        this script, also named from , to.
  200.     2. the value 0 in params[] corresponds to the first parameter, 1 corresponds to the second parameter,             and so on the third parameter is params[2].
  201.     */
  202.     let from = params[0]["value"];//------update
  203.     //let to = params[1]["value"];//------update
  204.  
  205.  
  206.     /*3.Determine if the input parameters are empty, and if any of the parameters are empty, a prompt will be made in the Operator.
  207.     1.if (from == "" || to == "") This is the line that needs to be added or deleted according to the actual number of parameters, as well as changed according to the actual naming of the parameters.
  208.     2. ||  This symbol means the or operation, and as long as either side of the symbol holds, the following code is executed
  209.     3.If there are three or more parameters to be judged, the expression is :if (... || ... || ... || ...)
  210.     4.operatorResponse.msg = "Please enter the starting site or ending site"; change the pop-up message according to the actual need
  211.  
  212.     */
  213.     if (from == "" || from == null) { //------update
  214.         jj.getLogger().info("Parametros en blanco!!!!!1");
  215.          var res = { code:400, msg: "Favor indicar puesto" }
  216.         return { code: 400, body: JSON.stringify(res) };
  217.     }
  218.  
  219.     try {
  220.  
  221.         //4.Plug the from and to obtained by the previous code into inputParams, and the points to note are as follows
  222.         /*
  223.         1. both the left and right side of the ':' symbol, the naming is strictly consistent, both correspond to the naming of [task input parameter]-->[variable name] in wink task
  224.         2. if you need to add, for example, wink task [task input parameters]-->[variable name], in addition to from, to and site, then add code site: site,
  225.         3. If you need to delete, you can delete the corresponding line directly
  226.  
  227.         */
  228.  
  229.  
  230.         let inputParams = {
  231.             from: from, //------update
  232.             //to: to, //------update
  233.         };
  234.  
  235.         //5.Generate wink task
  236.         //You need to change the content after taskLabel: to the task name of the corresponding wink task, in this case Devolucion.
  237.  
  238.         let taskParam = {
  239.             taskLabel: "DevolucionUI",//------update
  240.             inputParams: JSON.stringify(inputParams),
  241.         };
  242.         jj.createWindTask(JSON.stringify(taskParam));
  243.  
  244.        var res = { code:200, msg: " Tarea Generada !" }
  245.         return { code: 200, body: JSON.stringify(res) };
  246.     } catch (error) {
  247.         jj.getLogger().error("create tss task error", error);
  248.         var res = { code:400, msg: "fail" }
  249.         return { code: 400, body: JSON.stringify(res) };
  250.     }
  251.  
  252. }
  253.  
  254.  
  255. function DevolucionUE(param){//------update
  256.  
  257.     //Attention ! followed by //------ changes means it may need to be modified. If not, it means no change is needed.
  258.  
  259.     //1.Operator parameters are processed and the format is converted (no changes required)
  260.     jj.getLogger().info("Create task parameters:" + param);
  261.     var paramJson = JSON.parse(param);
  262.     var params = paramJson["params"];
  263.  
  264.     /*2.Read the parameters from the Operator, (change according to the actual situation)
  265.     If the number of incoming parameters is equal to 1: keep 'let from = params[0]["value"]; 'and remove         'let to = params[1]["value"];'.
  266.     If the incoming parameter is equal to 2: just leave it as it is.
  267.     If the incoming parameters are greater than 2; add code as per the rule, e.g.: if the incoming                 parameters are 3, add 'let site = params[2]["value"];'.
  268.     When reading the parameters passed by the Operator, in the following points need to be noted.
  269.     1. the naming of the parameters to the left of the equal sign corresponds to [task input parameters] -->         [variable name] in wink task, in this case, wink task writes incoming variable names from , to. so in        this script, also named from , to.
  270.     2. the value 0 in params[] corresponds to the first parameter, 1 corresponds to the second parameter,             and so on the third parameter is params[2].
  271.     */
  272.     let from = params[0]["value"];//------update
  273.     //let to = params[1]["value"];//------update
  274.  
  275.  
  276.     /*3.Determine if the input parameters are empty, and if any of the parameters are empty, a prompt will be made in the Operator.
  277.     1.if (from == "" || to == "") This is the line that needs to be added or deleted according to the actual number of parameters, as well as changed according to the actual naming of the parameters.
  278.     2. ||  This symbol means the or operation, and as long as either side of the symbol holds, the following code is executed
  279.     3.If there are three or more parameters to be judged, the expression is :if (... || ... || ... || ...)
  280.     4.operatorResponse.msg = "Please enter the starting site or ending site"; change the pop-up message according to the actual need
  281.  
  282.     */
  283.     if (from == "" || from == null) { //------update
  284.         jj.getLogger().info("Parametros en blanco!!!!!1");
  285.          var res = { code:400, msg: "Favor indicar puesto" }
  286.         return { code: 400, body: JSON.stringify(res) };
  287.     }
  288.  
  289.     try {
  290.  
  291.         //4.Plug the from and to obtained by the previous code into inputParams, and the points to note are as follows
  292.         /*
  293.         1. both the left and right side of the ':' symbol, the naming is strictly consistent, both correspond to the naming of [task input parameter]-->[variable name] in wink task
  294.         2. if you need to add, for example, wink task [task input parameters]-->[variable name], in addition to from, to and site, then add code site: site,
  295.         3. If you need to delete, you can delete the corresponding line directly
  296.  
  297.         */
  298.  
  299.  
  300.         let inputParams = {
  301.             from: from, //------update
  302.             //to: to, //------update
  303.         };
  304.  
  305.         //5.Generate wink task
  306.         //You need to change the content after taskLabel: to the task name of the corresponding wink task, in this case Devolucion.
  307.  
  308.         let taskParam = {
  309.             taskLabel: "DevolucionUE",//------update
  310.             inputParams: JSON.stringify(inputParams),
  311.         };
  312.         jj.createWindTask(JSON.stringify(taskParam));
  313.  
  314.        var res = { code:200, msg: " Tarea Generada !" }
  315.         return { code: 200, body: JSON.stringify(res) };
  316.     } catch (error) {
  317.         jj.getLogger().error("create tss task error", error);
  318.         var res = { code:400, msg: "fail" }
  319.         return { code: 400, body: JSON.stringify(res) };
  320.     }
  321.  
  322. }
  323.  
  324. class OperatorRequestEntity {
  325.     constructor() {
  326.         this.robotTaskDef = "";
  327.         this.station = "";
  328.         this.params = [];
  329.     }
  330. }
  331. class OperatorRequestParamsEntity {
  332.     constructor() {
  333.         this.key = "";
  334.         this.value = "";
  335.     }
  336. }
  337. class OperatorRepsonseEntity {
  338.     constructor() {
  339.         this.code = 200;
  340.         this.msg = "OK";
  341.     }
  342. }
  343. class ScriptRepsonseEntity {
  344.     constructor() {
  345.         this.code = 200;
  346.         this.body = "OK";
  347.     }
  348. }
  349. class SelectOption {
  350.     constructor() {
  351.         this.value = "";
  352.         this.label = "";
  353.     }
  354. }

Editor

You can edit this paste and save as new:


File Description
  • boot.js
  • Paste Code
  • 05 Jul-2024
  • 16.2 Kb
You can Share it: