B2B
一次糟心的PLC项目经历
2022-04-01 16:04  浏览:247
 
配置
西门子1215(先选的1214,后来因为工作存储器的关系换了)和16个MODBUS称重仪表,每个称重仪表的通讯量在200个字节左右,并且不是连续地址。
 
编程第一个坑
称重仪表的双字整数与西门子的高低字节是反的,所以读取写入都要经过转换,因为没有现成的指令(SWAP指令交换的是字节,不是字),所以我自己编写了功能块来转换,但是16个仪表的通讯量过于大,导致功能块要被调用200多次(建议这个量级,大家用循环来做,这种项目用梯形图绝对搞不定的),当时我的第一反应就是,PLC极有可能性能和存储都不行。但是因为前期与领导沟通的并不愉快,我只是提了一句,说这个系列的PLC很可能不行,因为我知道就算我说绝对不行,PLC也不可能换的。
 
编程第二个坑
其实这个不算坑,因为已经预料到,并且是不能绕过的。16个MODBUS称重仪表,每个称重仪表的通讯量在200个字节,并且不是连续地址,直接用轮询指令简单粗暴的一次性读写,是绝对不可能的了,只能划分区域,尽量将实时读取的数据压缩到最小,类似参数、控制用的字节,只在某些特定情况完成读写。其实我应该感谢西门子,感谢博图,博图对数组、结构体、variant指针的支持,使程序量极大的简化,要不然真能干一个项目少活一年。
 
编程第三个坑
配方我全部放在PLC里完成的,因为配方数据量巨大,所以保持性存储器被填满了,只能由原来的6个配方改为3个,不够也没办法了(与客户要求可能已经不满足了)。配方也没有办法放在屏里,因为,配方包含了很多数组和指针的逻辑功能,KTP系列的屏完成不了。
 
调试第四个坑
滞后性!虽然已经尽自己最大努力优化了MODBUS程序,可是16个仪表的延时还是在8秒以上(1200虽然可以挂3个主站模块,1个扩展板,将从站分别处理,可是相应的逻辑程序会增加,因为当时1214的工作存储器已经接近极限了),与实时性有关的功能都变成了鸡肋。
 
调试第五个坑
调试过程因为要更改功能,发现1214的工作存储器不够了,调整成了1215。
 
调试第六个坑
换成1215之后发现有个光电检测出了问题,当物体移动过快,光电就检测不到了,我测试了一下,只有一段检测程序运行的时候是可以的,所以程序体量太大会导致“反应慢”的问题。(中断和:P都不行,我已经考虑过了)。领导也是个机灵鬼,让我单独挂一个PLC执行检测功能,我呵呵。
 
总结一
对于几十万的设备,省下一两万的成本,搭进去更多的售后成本,丢掉客户体验,甚至影响公司口碑,得不偿失。
 
总结二
我有多数技术人员的通病,我只关心设备最后的结果好坏,很少关心人情世故,我要和我的领导道个歉,“让你难堪了”。
 
您可能感兴趣的...