S7-1500 PLC网页服务器数据读取异常:数值<1000时显示乱码
S7-1500 PLC网页服务器数据读取乱码问题解决
问题分析
你遇到的数值小于1000时返回乱码的情况,大概率是以下原因导致:
- PLC网页服务器返回的内容编码与前端解析编码不匹配,小数值的字符编码未被正确识别
- PLC输出数值时,对小于1000的数值添加了非ASCII填充字符或控制字符
- 同步XMLHttpRequest请求可能引发的解析异常
解决方案
1. 强制指定响应编码
在发送请求前,设置响应的MIME类型和编码,匹配PLC实际使用的编码(S7-1500常用ISO-8859-1或UTF-8):
function getDtata() { let xhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xhttp.onreadystatechange = function(){ if (this.readyState === 4 && this.status === 200) { document.getElementById("dov").textContent = this.responseText; } }; // 添加编码设置 xhttp.overrideMimeType("text/plain; charset=ISO-8859-1"); xhttp.open("GET","DB.html",true); xhttp.send(); }
如果ISO-8859-1无效,尝试替换为charset=utf-8。
2. 过滤响应中的非数字字符
如果是PLC返回了额外的无效字符,直接提取响应文本中的数字部分:
xhttp.onreadystatechange = function(){ if (this.readyState === 4 && this.status === 200) { // 保留数字和小数点,过滤其他字符 let cleanValue = this.responseText.replace(/[^0-9.]/g, ''); document.getElementById("dov").textContent = cleanValue; } };
3. 改用异步请求
原代码使用同步请求(第三个参数为false)可能导致数据未完全解析就被渲染,改为异步请求更稳定。
4. 检查PLC网页服务器配置
登录S7-1500的Web管理界面,确认网页输出的编码设置,将其调整为UTF-8(通用编码),避免编码不匹配问题。
内容的提问来源于stack exchange,提问作者Khaled
相关产品推荐
相关产品推荐

