西门子的手册在同行业里面是全的,有些细节阐述仍然不够详细;
下面用三个问题展开,说明一下所见所得:
1.手册允许的大容量和报警的容量变量不一致;
下面以1500的DB大小描述为例:
可以看到是否优化,大容量是不同的,这个意思是没问题的;
具体来说,非优化的块大64kb,对应的应该是65536 byte;
在尝试用过多的数据来尝试的时候,可以看到警告信息,显示允许的大容量是65534byte, 由此可以发现二者的不同;
个人认为,这是从不同的角度去看问题产生的不同,一个应该类似于占用的空间,一个是可用空间,中间类似公摊面积的一些额外开销;
对应的,优化的块的空间也是不同的,比如下面:
这个里面有2个问题:
1是允许的大空间16777216byte=16M byte; 而手册里面是3.5M byte,这可能是个错误, 这个手册是新的,2024.7 月份的;
2.是同样的,这里面有个4个byte的额外开销;
第二个问题:DB的大数组下标是多少?
这个有两个维度,是数组本身Index 的允许数量范围,300 PLC 统一是32767,1500根据数组的元素类型的不同而不同;
比如BYTE 大可以到16777216,这个数字比较好记,因为这是16 M 展开的数字;INT 减半,REAL 再减半;
第二个维度前面提到的DB块本身的空间限制,由于优化和非优化的块的大小不同,差别比较大,参看前面的图片;
第三个问题:数组元素的可见性
在1500中,可见的数组大条目是10000,这是尝试了好多次得出的;这个数量也可以和多维数组共享,比如[1..100,1..100],[1..20,1..500].超过不会报错,在离线阶段不可见;
有表述不正确的地方欢迎指正;