WinCC数据显示问题请教?

我在用WINCC读PLC(OMRON程序密码锁死)数据的时候,那边还有带有个触摸屏,数据格式都为16进制BCD码,他屏上那里显示为-135,我这边显示数据为8135,他屏上为-7 ,我读回来为8007,但是如果那边正的时候,我读回来数据就跟他那边一致!比如屏867,我这里也是867!
 我在WINCC的值域做脚本,但是怎么也做不出来!还请教高手指点!

 我是如下处理的,肯定有问题,但是不知道思路对不对?
  #define TAG "PT_1L"
 if (GetTagWord(TAG)&0x0080=1)
   return (((unsigned)GetTagDouble(TAG)&0xFF7F)/-1.0)
 else
     return ((unsigned)GetTagDouble(TAG))

 
 

问题补充:
谢谢楼下的各位高人指点!
 对于 xsxzc、俱怀逸兴壮思飞、 dcount107,其实我在WINCC里曾经试过定义为有符号数了,但是结果还是一样,在I/O域的显示格式设置也是定义为10进制!

 对于 SG9,我也试过)&0xFF7F改为FFFF ,结果也是一样,没有反应!还是如题显示!所以我就不知道怎么搞了!
 谢谢各位!

最佳答案

数据类型选择有符号16位整形,另外格式化选择为ShortToSignedBCDWord。
 这样的话WinCC已经将PLC的16进制BCD码转化成10进制数据,I/O域的显示格式设置为10进制即可。

提问者对于答案的评价:
其实我曾经是把数据格式改为10进制的有符号的数据,但是我是用OPC做的,一更改格式,我的HMI上就显示连不上!不知道为什么?

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc272550.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐