登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:WINCCk中的C的小问题

点击:1051 回复:8

在调试WINCC程序的时候出了这么个现象,我采集上来的数有几个MODBUS是WORD型的,有数据,实际上这些数据是放大了10倍放上来的。现在要还原,先在内部变量那里定义了个FLOAT型变量InterTag,到时界面中的数据就连接到这些个内部变量。我在脚本中写了这么点C的代码,实现转换:
float i;int j;
j=GetTagWord("PLCTag");
i=j*0.1;
SetTagFloat("InternalTag",i);
很简单的。但运行后发现内部变量InternalTag却不变,始终为0。不知道原因可能在哪儿呢,请指教!谢谢!
09-06-29 17:20
j是INT类型的,为何去接受WORD类型,WORD类型的数据范围为0-65535,INT类型为-32768~+32767,请使用C语言中的强制类型转换语句。
09-06-29 20:25
2楼
该帖内容不符合相关规定!
09-06-30 00:04
3楼
该帖内容不符合相关规定!
09-06-30 07:32
谢谢二楼的兄弟回复。
刚开始查的时候我也看到了这个问题,但我估计不是这个问题,因为采集上来的数只有一两百,好像不会引起这样的问题。
我会试试看的。
09-06-30 09:03

引用 xxgg 在 2009-6-30 9:03:14 发言【内容省略】

另外,请说明你的代码写在什么地方,全局动作?
如果是全局动作,请激活Wincc前勾选全局脚本运行系统选择。
表情
09-06-30 09:25
呵呵,兄弟在线啊!这个问题我还是肯定注意了的,虽然是初学~~
就是写在全局动作中的,5秒触发一次。
最后修改:2009-6-30 10:09:58
09-06-30 10:08
如果只是放大100倍,可以直接在属性里设置的啊
09-06-30 21:36
回楼上的兄弟,是缩小10倍,下面取值上来是WORD,要转成符点型(也不一定,就是原值缩小10倍就完了,有的有小数点,其实用字符也可以,没想)。您说的方法是怎么转啊,不用针对这个问题的也可以,多学点。
09-07-01 08:55

工控新闻

更多新闻资讯