2020年我公司一个项目需要新增一些原料储罐,每个储罐都要液位、温度、泵出口压力等工艺参数,每个工艺参数又包含上上限、上限、需求值、下限、下下限值、当前值,量程上限,量程下限等共8个REAL类型,这是一个公共罐区,这些数据集中在一套s7-400 plc上,另套S7-400PLC需要这些数据时需要通讯来获取这些数据。 原来项目已经定义DB1中282子节数据分别用于上述数据通讯,经过测试这282字节通讯正常,一边更新数据,另一边立即就能收到数据变化。里面预留了一段储存区可以分配给新增储罐的工艺参数,但是好像差一个工艺参数的数据。刚开始我们以为很简单,直接把这个通讯字节数增加32字节就可以了。实际一测试,发现原来通讯字节数282已经一个极限,理论上功能块ADDR1-ADDR4每个最大可到244字节,然后我们四个地址每个设定100字节,通讯还是不成功,最后发下平均分配也不行,第一个地址接近242字节,后面地址通讯字节数依次减少,具体是怎么网络上各有说法,反正就是与网速,通讯距离有关。项目中最后只能在282字节内就减少工艺参数中不需要的,勉强符合操作要求。 空闲时候,为了研究S7-400之间SFB14/15的通讯最大字节数,我在同一台 电脑采用STEP7V5.5带PLC SIMV5.4SP3,开2个PLC SIM通讯测试(通讯距离,应该最短了,与物理设备无关)。首先测试单块最大字节数通讯,经过测试最后单边读取462字节是成功,增加到463字节就通讯失败了。然后我又测试分块通讯,ADDR1设置242字节,接受也是RD1设置242字节,ADDR2设置215字节,接受也是RD2设置215字节,测试通讯成功,然后再增加ADDR1/RD1,ADDR2/RD2字节数都会通讯失败,结果发现分段通讯总字节数458比单块通讯总字节数462少4字节呢。单块通讯最大字节数应该是最多可达462字节,我公司实际项目中网线长度近100m,通讯最大字节数282就不能增加了,我们也尝试过分段,结果分段总字节数还不到282字节。估计这个程序块的分段目的不是增加总通讯字节数,是为方便存放在不同区的数据直接取来通讯。 这个情况也给我一个启示,这种指令通讯尽量少采用,能采用硬件组态网络通讯的尽量采用硬件网络通讯,实在需要用到PLC之间的通讯时严格限制数据长度,通讯距离或者采用光纤,通讯数据量过大处理起来太痛苦。 |