技术论坛

博图报关于数据长度错误的思考-------写给初学者

作者 主题
侠士

经验值: 1372
发帖数: 187
精华帖: 2
主题:【分享】博图报关于数据长度错误的思考-------写给初学者


只看楼主 楼主 2019-12-05 17:20:16

       今天,公司新来的同事提出一个问题,就是在FB块中建一个数组,用冒泡法做个简单的程序,总是报FB数据长度错误,PLC即刻停机。如图是程序和PLC诊断。

      其实这是个简单的错误,本没有必要再次分享,但在网上搜了一下,答案要么太笼统,要么没人理会。基本没有初学者满意的回复。

       对于高手来说,不可能犯这样的错误;对于刚接触博图和SCL语言的初学者来说,本身不是很明白一些概念,这样的程序写出来,看着没有一点问题,就是不能运行。让许多初学者很郁闷,PLC怎么这么麻烦。失去了继续学习的兴趣。

     今天贴出来,希望高手不要见笑。希望初学者增强信心,继续努力学习!

       这个问题的根本不在于数组在那建立,不在于for循环的语法问题。而在于冒泡法做循环时一定注意下表不能超过已建数组的最大下表。

      像此问题,数组下表是0-3,当循环+1时,3+1=4,数组最大下表就访问到Any_out[4],二这个是数组没有定义的。所以无法访问的地址。这是初学者在使用SCL编程时,在数组、结构体、循环、引用等经常容易忽视的。有的初学者觉得S7-300有模拟器,随便建硬件组态,而模拟时不看硬件的地址,随便写个地址,模拟就会出现同样的错误。希望谨记

    

捕获.PNG

捕获2.PNG



学无止境,永远保持一颗谦虚上进的心。
以下网友喜欢您的帖子:

  
重要声明:

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

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1597036&b_id=66&s_id=84&num=5

至圣

经验值: 20129
发帖数: 2777
精华帖: 23
回复:博图报关于数据长度错误的思考-------写给初学者


只看楼主 1楼 2019-12-05 20:31:38

数组边界检查仍然还得靠编程的人自己检查把握,下标溢出错误是运行时错误,编译器不会提示的。



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

  
版主

经验值: 76183
发帖数: 19138
精华帖: 378
回复:博图报关于数据长度错误的思考-------写给初学者


只看楼主 2楼 2019-12-05 23:33:56

可以根据需要定义数组索引是从1或0开始呀,FOR/NEXT循环的循环值就应与数组索引严格对应。


初学者更应该学习的是编程的规范与排查问题的方法


Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
游士

经验值: 267
发帖数: 65
精华帖: 0
回复:博图报关于数据长度错误的思考-------写给初学者


只看楼主 3楼 2020-01-10 23:19:04

 

初学者更应该学习的是编程的规范与排查问题的方法


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 8095
发帖数: 1308
精华帖: 6
回复:博图报关于数据长度错误的思考-------写给初学者


只看楼主 4楼 2020-01-11 09:15:16

下标可以设置从1开始呀,开始下标与结束下标还是很关键的,我觉得最简单的方法就是数位数,比如0到3 就是四次(可能我这么描述不太正确,得看怎么结束的),但是这么一来时间久了就习惯了,就不会有超出下标的情况了,另外博图也可以读取数组的数量啊,通过读取数量再做排序……


养活一团春意思,撑起两根穷骨头
以下网友喜欢您的帖子:

  
侠客

经验值: 642
发帖数: 105
精华帖: 0
回复:博图报关于数据长度错误的思考-------写给初学者


只看楼主 5楼 2020-11-24 11:49:17



any和数组使用


QQ:779519874
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
博图报关于数据长度错误的思考-------写给初学者
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。