技术论坛

STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗

作者 主题
新手

经验值: 22
发帖数: 2
精华帖: 0
主题:【求助】STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 楼主 2019-10-11 12:39:36

各位大神:

       现有两个DB块中各有30个字节,要求这共60个字节数据不能有相同的重复出现,比如DB1.DBB0当前为1,那么就要跟其他59个字节去一一比对,如有同为1的其他字节就需要报警提示,其他字节也一样,有什么简单方便的指令或编程方法吗?一一去做比对有些繁琐了。

       另外一个DB块中是10个字节一组的30个字符串,也需要每个字符串之间做对比,有重复的就报警,是不是也能一个一个的去做对比呢?

       麻烦各位大神给支支招,谢谢!


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1588384&b_id=4&s_id=0&num=10

至圣

经验值: 72013
发帖数: 8043
精华帖: 145
回复:STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 1楼 2019-10-11 13:04:52

对比,只能是一个一个的进行。

这个程序在论坛上讨论的也比较多,早前那些冒泡法,指针偏移是你需要的一种编程方法。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 20158
发帖数: 2781
精华帖: 23
回复:STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 2楼 2019-10-11 13:08:11

楼主,你这是考试的题目?还是实际工程应用?

能再详细地介绍一下背景应用吗?储存的什么数据?为什么不能有重复值?


Less is more……
以下网友喜欢您的帖子:

  
新手

经验值: 22
发帖数: 2
精华帖: 0
回复:STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 楼主 3楼 2019-10-11 13:24:11
以下是引用唐诗宋瓷在2019-10-11 13:08:11的发言 >2楼

楼主,你这是考试的题目?还是实际工程应用?

能再详细地介绍一下背景应用吗?储存的什么数据?为什么不能有重复值?

是实际应用,两个DB块分别存储60个库区位置号,按入库先后堆栈,理论上不会出现一个位置重复2次的情况,之前是有人为修改后,导致数据错误,现在做这个对比就是想防止类似情况再次出现。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 20158
发帖数: 2781
精华帖: 23
回复:STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 4楼 2019-10-11 14:04:18
以下是引用20170309439812在2019-10-11 13:24:11的发言 >3楼

是实际应用,两个DB块分别存储60个库区位置号,按入库先后堆栈,理论上不会出现一个位置重复2次的情况,之前是有人为修改后,导致数据错误,现在做这个对比就是想防止类似情况再次出现。

以下是引用唐诗宋瓷在2019-10-11 13:08:11的发言 >2楼:楼主,你这是考试的...

引用2楼详细内容:

楼主,你这是考试的题目?还是实际工程应用?

能再详细地介绍一下背景应用吗?储存的什么数据?为什么不能有重复值?

再详细一点,什么样的数据类型?这个问题有解决办法,可以不使用遍历比较的手段


Less is more……
以下网友喜欢您的帖子:

  
至圣

经验值: 20158
发帖数: 2781
精华帖: 23
回复:STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 5楼 2019-10-11 14:40:51

这60个字节的数值是不是通过HMI这样的上位装置输入设置的?

检测手段:

1、边界检测,上溢出(值>60)或者下溢出(值<0)?

2、冲突检测,数值是否重复?


Less is more……
以下网友喜欢您的帖子:

  
至圣

经验值: 20158
发帖数: 2781
精华帖: 23
回复:STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 6楼 2019-10-11 15:31:14

@20170309439812 简单,采用哈希表(HashTable)。

1、开辟一数据缓冲区,存放RFID读来的数值UploadValue,

2、建立一个数组HashTable[0,60] of INT,初始值全部设为VALID :=-1(有效的)

3、建立一功能函数Hash,进行如下求模取余数运算,

Remainder := MOD(UploadValue,DIVISOR),此处DIVISOR 的值设为61

4、进行判断 

IF HashTable[Remainder] = VALID THEN

    DBx.DBBx := UploadValue;

    HashTable[Remainder] := INVALID; //常量INVALID := -2,无效的。

ELSE

    Alarm := TRUE; //重复数据,输出非法报警。

基本上就这样,字符串的类似。


Less is more……
以下网友喜欢您的帖子:

  
至圣

经验值: 20158
发帖数: 2781
精华帖: 23
回复:STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 7楼 2019-10-11 15:45:46
Less is more……
以下网友喜欢您的帖子:

  
侠圣

经验值: 2464
发帖数: 374
精华帖: 0
回复:STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 8楼 2019-10-12 08:20:32

没想到啥好办法,用SCL语言好一点吧


 
以下网友喜欢您的帖子:

  
至圣

经验值: 15532
发帖数: 1735
精华帖: 0
回复:STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 9楼 2019-10-12 08:49:44
以下是引用唐诗宋瓷在2019-10-11 13:08:11的发言 >2楼

楼主,你这是考试的题目?还是实际工程应用?

能再详细地介绍一下背景应用吗?储存的什么数据?为什么不能有重复值?

我也有这样的疑惑?尽谅详细点OK?


海纳百川,厚德务实!
以下网友喜欢您的帖子:

  
至圣

经验值: 20158
发帖数: 2781
精华帖: 23
回复:STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗


只看楼主 10楼 2019-10-14 15:10:19

 @20170309439812 结果如何了?


Less is more……
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
STEP7 中DB块字节之间以及字符串之间的对比有什么简便的指令或编程方法吗
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。