作者 | 主题 |
---|---|
whdiao 游民 经验值:122 发帖数:6 精华帖:1 |
楼主 2020-03-19 10:03:35
主题:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错 WinCC 7.4SP1版本可以归档字符串变量,使用WinCC连通性软件包WinCC OLE DB提供程序将 归档数据库用ListView控件列表显示。参考WinCC帮助文档中的实例“使用WinCC OLE DB 提供程序和Visual Basic.NET读取过程值归档” 问题: 使用TAG架构带WHERE子句的命令字符串一切正常, 其中ArTagsTag_1为模拟量变量,ArTagsT_1为字符串变量。 CommandString ="TAG:R,'ArTagsTag_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE RealValue > 2 AND RealValue < 5'" 而使用TAG_EX架构带WHERE子句却报错,提示“不能转换变量”或者“错误的SIN命令”。 CommandString ="TAG_EX:R,'ArTagsTag_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE VariantValue > 2 AND VariantValue < 5'" 或者 CommandString ="TAG_EX:R,'ArTagsT_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE VariantValue ='YOU''" |
whdiao 游民 经验值:122 发帖数:6 精华帖:1 |
4楼 2020-03-20 15:14:20
主题:回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错 WinCC 7.5SP1新版本不仅可以归档字符串变量,还可以通过WinCC连通性软件包WinCC OLE DB提供程序的TAG_EX架构记录集,将字符串变量读取出来。 对于超过10万条包含字符串记录的归档,不需要自建SQL server数据库,就能通过脚本编制自己的万能报表,这种方式摆脱了“用户归档”记录数有限制的问题。 参考7.5 SP1帮助文档中的实例“使用WinCC OLE DB提供程序和Visual Basic.NET读取过程值归档” 因为7.5SP1官方帮助中没有给出TAG_EX架构的范例,只有自己摸索一下。 建立两个归档变量: ArTagsTag_1为浮点变量,ArTagsT_1为字符串变量。 1、使用TAG_EX架构命令字符串 CommandString="TAG_EX:R,('ArTagsTag_1'; 'ArTagsT_1'),'0000-00-00 00:01:00.000','0000-00-00 00:00:00.000'" 如图正常读取了字符串和浮点数 2、选择非字符串变量,命令字符串带TimeStep子句 CommandString="TAG_EX:R,'ArTagsTag_1','0000-00-00 00:01:00.000','0000-00-00 00:00:00.000','TIMESTEP=20,5'" 如图正常读取了带时间间隔条件的浮点数
3、选择非字符串变量,带WHERE子句 CommandString ="TAG_EX:R,'ArTagsTag_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE VariantValue > 20.0 AND VariantValue < 21.0'" 如图正常读取了20—21之间的浮点数 4、使用TAG架构读取非字符串变量时,带WHERE和TimeStep子句(注意VariantValue变为RealValue) CommandString="TAG:R,'ArTagsTag_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE RealValue > 20.0 AND RealValue < 21.0','TIMESTEP=20,5'" 正常读取
存在的问题: 5、选择字符串变量,带TimeStep子句 CommandString="TAG_EX:R,'ArTagsT_1','0000-00-00 00:01:00.000','0000-00-00 00:00:00.000','TIMESTEP=20,5'" 查询结果为空
6、选择字符串变量,带WHERE子句 CommandString ="TAG_EX:R,'ArTagsT_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE = 'YOU''" 报错!
总结一下: 1、WinCC 7.5SP1版本连通性软件包WinCC OLE DB提供程序,支持字符串、Int64和UInt64的读取,这是一个进步。 2、TAG_EX架构只有读取非字符串变量时,才可以使用WHERE和TimeStep子句。 3、TAG_EX架构读取字符串变量,不支持WHERE和TimeStep子句,希望西门子改进一下! 目前解决办法是先全部读取出来,再后期处理。 附上:WinCC 7.5SP1版本连通性软件包官方文档 链接:https://pan.baidu.com/s/1VMFw_O5DLE8vdshlElW7dw
|