您现在所在的是:

西门子SIEMENS

回帖:8个,阅读:1012 [上一页] [1] [下一页]
* 帖子主题:

WINCCk中的C的小问题

1008
xxgg
文章数:26
年度积分:50
历史总积分:1008
注册时间:2006/5/26
发站内信
发表于:2009/6/29 17:20:11
#0楼
在调试WINCC程序的时候出了这么个现象,我采集上来的数有几个MODBUS是WORD型的,有数据,实际上这些数据是放大了10倍放上来的。现在要还原,先在内部变量那里定义了个FLOAT型变量InterTag,到时界面中的数据就连接到这些个内部变量。我在脚本中写了这么点C的代码,实现转换:
float i;int j;
j=GetTagWord("PLCTag");
i=j*0.1;
SetTagFloat("InternalTag",i);

很简单的。但运行后发现内部变量InternalTag却不变,始终为0。不知道原因可能在哪儿呢,请指教!谢谢!
38116
cvlsam 版主
文章数:12488
年度积分:727
历史总积分:38116
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2009/6/29 20:25:22
#1楼
j是INT类型的,为何去接受WORD类型,WORD类型的数据范围为0-65535,INT类型为-32768~+32767,请使用C语言中的强制类型转换语句。
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2009/6/29
发站内信
发表于:2009/6/30 0:04:39
#2楼
该用户被锁定,回复内容不予显示!
849
zero5555
文章数:0
年度积分:50
历史总积分:849
注册时间:2009/6/30
发站内信
发表于:2009/6/30 7:32:35
#3楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
1008
xxgg
文章数:26
年度积分:50
历史总积分:1008
注册时间:2006/5/26
发站内信
发表于:2009/6/30 9:03:14
#4楼
谢谢二楼的兄弟回复。
刚开始查的时候我也看到了这个问题,但我估计不是这个问题,因为采集上来的数只有一两百,好像不会引起这样的问题。
我会试试看的。
38116
cvlsam 版主
文章数:12488
年度积分:727
历史总积分:38116
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2009/6/30 9:25:17
#5楼
以下是引用xxgg在2009-6-30 9:03:14的发言:
谢谢二楼的兄弟回复。
刚开始查的时候我也看到了这个问题,但我估计不是这个问题,因为采集上来的数只有一两百,好像不会引起这样的问题。
我会试试看的。

另外,请说明你的代码写在什么地方,全局动作?

如果是全局动作,请激活Wincc前勾选全局脚本运行系统选择。

表情
1008
xxgg
文章数:26
年度积分:50
历史总积分:1008
注册时间:2006/5/26
发站内信
发表于:2009/6/30 10:08:59
#6楼
呵呵,兄弟在线啊!这个问题我还是肯定注意了的,虽然是初学~~
就是写在全局动作中的,5秒触发一次。


[此贴子已经被作者于2009-6-30 10:09:58编辑过]
12704
lixiaobai
文章数:7780
年度积分:49
历史总积分:12704
注册时间:2006/4/5
发站内信
08年最佳博客奖
发表于:2009/6/30 21:36:03
#7楼
如果只是放大100倍,可以直接在属性里设置的啊
说说
1008
xxgg
文章数:26
年度积分:50
历史总积分:1008
注册时间:2006/5/26
发站内信
发表于:2009/7/1 8:55:09
#8楼
回楼上的兄弟,是缩小10倍,下面取值上来是WORD,要转成符点型(也不一定,就是原值缩小10倍就完了,有的有小数点,其实用字符也可以,没想)。您说的方法是怎么转啊,不用针对这个问题的也可以,多学点。

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

78.0005