labview通过hostlink读写Omron CJ系列PLC,同时与多把扫码枪进行通信(心得)

这段时间做了个小项目,有关数据采集的,用的平台是labview,功能是上位机要通过串口与四把扫码枪通信,收到条码后给PLC启动指令,PLC测试完成后给上位机指令,上位机开始存数据和显示。


在做的过程中遇到了一些问题,前面博客有写点击打开链接


做这个项目经历了人生第一次出差,到厂方后,发现前期沟通的功能需求跟实际的需求至少有百分之80不一致,也就意味着前期做的软件需要全部推翻重来……大概熬了一整天完成了新版功能需求的软件雏形。


做完第二天到厂房做现场测试,发现上位机无法收到数据,或者偶尔收到条形码的信息,经过各种调试,用串口调试助手试验,大概得出两个可能的原因:

1.程序中采用串口收发数据,在一次写、一次读之后没有清除缓冲区,就可能发生上面的情况;

2.程序中设计的是用hostlink协议一次读取PLC80个寄存器的内容,总共有三百多个字节,通过串口调试助手试验,读取格式为:@00RD0290004059*回车  ,发现每次只能收到一百三个左右的字节,考虑是不是hostlink协议对PLC读写有什么限制。


发现问题后回去加班做了两部分的修改:

1.在每次写之后和读之前加上了清除缓冲区模块;

2.把一次读取80个寄存器的命令改为读取四次,每次读取20个寄存器。

修改完成后,在室内进行模拟试验,已经能正确读写数据,并能显示存储。


随后信心满满再次去厂房进行现场调试。又有新的问题:

1.单个扫码枪一次工作,PLC依次启动时,软件一切正常;

2.两个扫码枪一起工作时,程序会报错,PLC读取超时。


分析原因:

程序中写了四次读取PLC寄存器,代表四把扫码枪对应工位的产品谁在检测,两个同时启动时,可能读写存在冲突,一个在读时,另一个工位又启动了,就无法写入了,所以产生错误。


发现问题后,由于时间有限,只能回学校修改,解决的方法就是加了若干个标志位,也就是布尔变量,在一个工位进行读写操作时,屏蔽其他工位的读写,随时保证程序中只有一次读写。


修改完成后,在实验室模拟了现场的测试流程,目前没有发现BUG,现已交给厂房测试,等反馈。


总结:

1、做产品的跟在实验室做研究真的是完全不一样;

2、做软件的需求分析太重要太重要太重要了!彻底搞清客户的需求,能少做很多无用功。这次也是因为在学校的局限性,一直电话沟通,厂房那边的对接人员不是很懂,这几方面原因造成了这次功能需求了解不清楚。

3、都说程序员百分之20在写代码,百分之80在改代码,这次体会到了。在调试过程中,通过发现问题,解决问题,才能提高。


后续待补充:

关于Hostlink命令分为C-mode以及Fins,它们的命令格式和字节限制需要一整篇博文来专门总结,后面再写。


上图:(最终软件界面)

labview通过hostlink读写Omron CJ系列PLC,同时与多把扫码枪进行通信(心得)_第1张图片

你可能感兴趣的:(labview通过hostlink读写Omron CJ系列PLC,同时与多把扫码枪进行通信(心得))