我在用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