You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PLC网页控制界面故障:启动排水按钮失效求助

排查建议与解决方案

1. 核心问题:变量名大小写不匹配

你的JavaScript排水按钮函数中,PLC变量名的开头字母是小写:

name = '"webInterface".startDraining';

但所有其他配置(IOserver.htm、HTML注释、填充按钮的JS代码)里的变量名都是大写开头的WebInterface。PLC变量名通常大小写敏感,这就是排水按钮无法触发PLC位的直接原因。

修改为一致的大写开头即可:

name = '"WebInterface".startDraining';

2. 额外验证与排查步骤

  • 修正按钮初始值逻辑:你通过document.getElementById('startDraining').value获取初始值,但HTML按钮未设置value属性,默认是空字符串,取反后会得到true,可能不符合PLC对布尔值的要求。建议手动初始化:
    var drainingButton = false; // 替换原获取value的代码
    
  • 添加请求日志排查:在$.post中加入错误捕获,通过浏览器控制台(F12)确认请求状态:
    $.post(url, sdata, function (result2) { 
        console.log("排水请求响应:", result2);
    }).fail(function(jqXHR, textStatus, errorThrown) {
        console.error("排水请求失败:", textStatus, errorThrown);
    });
    
  • 检查按钮类型干扰:当前按钮是type="submit",如果按钮位于<form>标签内,点击会触发表单提交,可能打断JS逻辑。建议改为:
    <button type="button" id="startDraining" bgcolor="startDrainingStatus" class="button">
    <span>Start draining</span>
    </button>
    
  • 核对PLC变量映射:再次确认IOserver.htm中"startDraining":":=&quot;WebInterface&quot;.startDraining:"的变量名,和PLC侧的定义完全一致。

3. 代码优化建议

将重复的按钮逻辑封装为通用函数,减少重复出错的概率:

function togglePlcVariable(variableName, button) {
    var currentState = !button.dataset.state;
    button.dataset.state = currentState;
    var sdata = escape(variableName) + '=' + currentState;
    $.post("IOServer.htm", sdata, function(res) {
        console.log(variableName, "操作结果:", res);
    }).fail(function(err) {
        console.error(variableName, "操作失败:", err);
    });
}

// 绑定按钮事件
document.getElementById("startFilling").onclick = function() {
    togglePlcVariable('&quot;WebInterface&quot;.startFilling', this);
};
document.getElementById("startDraining").onclick = function() {
    togglePlcVariable('&quot;WebInterface&quot;.startDraining', this);
};

内容的提问来源于stack exchange,提问作者tomiSeby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:55:18