返回主站|会员中心|保存桌面

安川变频器专营    

变频器、软启动器、伺服驱动器

联系方式
  • 联系人:吴经理
  • 电话:18576370666
  • 邮件:18576370666@163.com
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > 威纶触摸屏和西门子PLC字符串显示问题!
新闻中心
威纶触摸屏和西门子PLC字符串显示问题!
发布时间:2025-08-21        浏览次数:0        返回列表

威纶触摸屏与西门子PLC字符串显示问题分析及解决方案

问题现象

当威纶触摸屏显示西门子PLC(如S7-1200)的字符串变量时,若第二次写入的字符串长度小于第一次,触摸屏会残留第一次字符串的部分内容。例如:

  • 第一次写入"ABCD1234",触摸屏显示"ABCD1234"

  • 第二次写入"abcd5",触摸屏显示"abcd5234"(残留"234")。

问题原因

  1. PLC内存未清空

    • 西门子PLC在修改字符串长度时,仅更新显示长度,未清除内存中原有字符。例如,"ABCD1234"(8字符)修改为"abcd5"(5字符)时,PLC内存仍保留后3字符("234"),导致触摸屏显示异常。

  2. 触摸屏读取机制

    • 威纶触摸屏按固定长度读取字符串(如4字符),若PLC未清空内存,触摸屏会读取残留字符。例如,PLC变量实际为"abcd5234",触摸屏读取前4字符为"abcd",但残留部分仍可能影响显示。

  3. 编码方式不匹配

    • 若字符串包含中文,需确保PLC和触摸屏使用相同编码(GBK或UNICODE)。编码不一致会导致乱码或显示异常。

解决方案

方法1:PLC端清空字符串内存

  • 使用FILL_BLK指令
    在PLC程序中,通过FILL_BLK指令将字符串内存清空。例如:

    pascal// 清空字符串变量"datastring"(长度为254)FILL_BLK(IN := '', OUT := "datastring", COUNT := 254);
    • IN:填充值(空字符串'');

    • OUT:目标字符串变量;

    • COUNT:填充长度(需与字符串最大长度一致)。

    • 参数说明

  • 逻辑优化
    在写入新字符串前,先执行清空操作:

    pascal// 先清空,再写入新值FILL_BLK(IN := '', OUT := "datastring", COUNT := 254);"datastring" := "abcd5";

方法2:触摸屏端强制覆盖显示

  • 动态字符串ID关联
    在威纶触摸屏中,通过动态字符串ID触发显示更新:

    1. 在触摸屏中建立字符串表,定义多个状态(如"状态1""状态2")。

    2. 使用位状态切换开关关联字符串ID,每次切换时强制刷新显示。

  • 脚本控制
    通过触摸屏脚本(如VBscript)在显示前清空文本框内容:

    vb// 示例:清空文本框后显示新值TextBox1.Text = "";TextBox1.Text = "abcd5";

方法3:检查编码与通讯配置

  • 编码一致性

    • S7-1200/1500支持WString(UNICODE)和String(GBK);

    • 威纶触摸屏需在“系统参数”中设置对应编码。

    • 确保PLC和触摸屏使用相同编码(GBK或UNICODE)。例如:

  • 通讯参数匹配

    • 检查PLC和触摸屏的通讯协议(如Modbus TCP、S7协议)是否支持字符串传输。

    • 确认变量地址映射正确(如DB1.DBW0对应触摸屏的LW0)。

验证与调试

  1. 在线监视PLC变量

    • 使用TIA Portal或STEP 7的在线监视功能,确认PLC中字符串变量值是否正确。

  2. 触摸屏日志分析

    • 查看触摸屏的报警日志,排查通讯错误或显示异常记录。

  3. 分段测试

    • 先测试短字符串(如2字符),逐步增加长度,观察显示变化。

推荐实践

  • 结构化编程
    将字符串处理封装为功能块(FB),例如:

    pascalFUNCTION_BLOCK FB_StringHandleVAR_INPUTClearCmd : Bool; // 清空命令NewString : String(254); // 新字符串END_VARVAR_OUTPUTActualString : String(254); // 实际显示字符串END_VARBEGINIF ClearCmd THENFILL_BLK(IN := '', OUT := ActualString, COUNT := 254);END_IF;ActualString := NewString;END_FUNCTION_BLOCK
  • 异常处理
    在程序中加入长度检查逻辑,避免字符串越界:

    pascalIF LEN("datastring") > 254 THEN// 触发报警或截断字符串END_IF;
收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服