WINCC 与西门子 settagbit 点击:2543 | 回复:5



学来学去

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 51回
  • 年度积分:0
  • 历史总积分:154
  • 注册:2007年10月16日
发表于:2010-09-15 21:54:34
楼主

我用WINCC与西门子300通讯,用到了settagbit("local",gettagdword("1#plc_ID100")&ox10000)

其中 local 为 内部BIT型的变量, 1#plc_ID100 指的就是 PLC中的ID100的数值,

上面的意思就是把1#PLC_ID100中的101.0即I101.0赋值给lacol

实际测试发现 无法实现所需功能。

经与测试 使用("1#plc_ID100")&ox8000   就能实现要求,

求教是不是 这个语法中 是不是不支持ID100中大于16位后的数据?  其他双字也是这个样子

望高手赐教! 为满足 把1#PLC_ID100中的101.0即I101.0赋值给lacol   的好办法。?

我声明的变量只有ID100,没有分成一个一个的位,所以一个一个位赋值的办法就别说了。

是不是有别的函数可以满足此要求?




qianmo003

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 82回
  • 年度积分:0
  • 历史总积分:201
  • 注册:2010年9月13日
发表于:2010-09-16 09:46:25
1楼

路过的 不清楚这个呢

天下第七

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 173回
  • 年度积分:0
  • 历史总积分:273
  • 注册:2004年8月10日
发表于:2010-09-16 13:07:10
2楼

0xFFFF是最大了,0x是16位数据,0x10000从来没见过。

tigermu

  • 精华:6帖
  • 求助:0帖
  • 帖子:175帖 | 5410回
  • 年度积分:0
  • 历史总积分:19807
  • 注册:2003年1月19日
发表于:2010-09-16 13:33:15
3楼
对于word类型来讲,你的10000超出范围了。

学来学去

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 51回
  • 年度积分:0
  • 历史总积分:154
  • 注册:2007年10月16日
发表于:2010-11-01 09:31:50
4楼
看来是这样的,这个命令只能支持到16位! 我测试过啦, 控制0~15位都没问题,再高就不管用了。

nichun123

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 79回
  • 年度积分:5
  • 历史总积分:664
  • 注册:2011年12月04日
发表于:2014-08-15 00:19:16
5楼

SetTagBit("b",(short)GetTagDWord("a"&0x10000));


热门招聘
相关主题

官方公众号

智造工程师