产品描述
西门子代理商6SL3225-0BE27-5AA1 西门子代理商6SL3225-0BE27-5AA1
使用200或200SMART的朋友,想必对TD文本显示器都有一些了解,相对于触摸屏来说,它的组态更加便捷,性价比也更高,平时在热线上我们也会遇到一些关于文本显示器的问题,在此跟大家分享一二。
【场景一】
工程师:“您好,西门子技术支持”
客户:“您好,我这有个关于文本显示器屏幕显示的问题,需要向您请教”
工程师:“您描述下问题”
客户:“是这样的,我这有个TD400的文本显示器,屏幕上莫名多出eeee的字符,不知道是哪来的?”
(OS:对于这种问题,我首先想到的是,是不是向导中添加了该字符或者添加的数据类型和实际的数据类型不符,或者是数据值**出范围呢)
工程师:“您打开文本显示向导,检查下该界面是否配置了字符”
客户:“我仔细检查了,eeee这几个字符我在向导中没有配置,而且奇怪的是,另外一个界面配置和该界面相同,但却没有这几个字符”
(OS:问题至此,我也有点懵,这怎么可能,稍微冷静了下,想到文本显示向导配置完后会分配一个库存储区,会不会是库存储区被占用了呢)
工程师:“您检查下库存储区的地址在程序中有没有被占用?”
15秒后......
客户“没有占用”
(OS:客户都这么说了,咱也不好意思再多问,那好吧,只能亲自来看看客户的程序,看看问题究竟在哪?)
拿到程序后,首先查看了文本显示的向导,的确如客户描述,并没有多余的字符配置。
那既然没有,就看看分配的库存储区吧,从VB1000~VB3686
仔细检查客户的程序,较终还是找到了问题的所在,在某个子程序中,客户使用了VW1640~VW1646以及VB2000~VB2007的地址,这部分地址刚好在库存储区的地址范围内。
客户配置了多个界面,为什么只单单影响了该界面呢?这个其实在文本显示器的数据块中可以找到答案,数据块中,每个界面都分配了一段地址区域,而VW1640~VW1646以及VB2000~VB2007就恰好占用了该区域,就导致该界面莫名多出几个字符。
问题既然找到了,那解决的办法无非就两种,要不修改向导的库存储区,要不将程序中占用的地址改为其他地址。
题外话:作为一名热线工程师,平时处理的问题比较多,这里特别想唠叨几句,向导中的库存储区在程序中被占用的情况非常普遍,很多客户在编程时没有对寄存器地址进行整体规划的习惯,随意性比较大,导致出现各种问题。几点建议和大家共勉:首先编程时一定要对寄存器地址做整体规划,养成良好的习惯;
其次,向导中的建议地址并非**,例如程序中使用了指针地址,或者在向导配置完后再占用该地址区域,都不会产生错误,所以一定要做到心中有数;
最后一点呢,看个人习惯,大部分人习惯寄存器地址由小到大使用,那么在分配库存储区时就可以考虑将这部分地址区域尽量靠后。例如CPU226的用户数据大小为10240字节,就可以将库存储区分配到VB5000以后。
【场景二】
工程师:“您好,西门子技术支持”
客户:“您好,我有个关于TD200C的问题需要向您咨询,情况是这样的,我手头有一套老设备,CPU222+TD200C,现在想对文本显示器的某些内容进行修改,但是上载程序后却没有文本显示器的向导”
工程师:“您确定将程序块 数据块 系统块都上载了吗?”
客户:“我确定,而且我将上载的程序下载到其他PLC当中,文本显示器也可以正常显示”
(OS:据客户描述,可以判断,上载的程序中肯定是有文本显示器的相关配置,既然向导中没有内容,那就很可能在数据块中,于是让客户查看数据块内容)
工程师:“您查看下程序中的数据块,是否有数据块页面”
客户:“的确有,但是有个问题,该数据块中一个注释也没有,我也不知道哪个页面对应哪段代码,而且我想修改的是文本显示器当中的汉字,这里面也没有一个汉字啊”
(OS:明明知道该数据块中就是文本显示器向导的内容,可是该如何查找需要修改的内容呢,根据客户描述,TD200C界面上有“公司”这两个汉字,于是百度上搜索了一个查看字符编码的工具,看看有可能会转成其他什么编码)
工程师:“数据块中是否有B9AB和CBBE?”
客户:“是的”
可以了解到,文本显示器上的汉字使用的是GBK编码,于是尝试将文本显示器上的文字内容,转换为16进制,并和数据块中的内容对照,可以一一对应,至此可以判断,文本显示器上的内容是和数据块中的内容对应。如果客户需要修改文本显示器的内容,可以在数据块中进行修改。
产品推荐
友情链接