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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:27:04