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":":="WebInterface".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('"WebInterface".startFilling', this); }; document.getElementById("startDraining").onclick = function() { togglePlcVariable('"WebInterface".startDraining', this); };
内容的提问来源于stack exchange,提问作者tomiSeby
相关产品推荐
相关产品推荐

