现场项目需要跟另一个Profinet网络进行通信,双方约定好使用PN/PN耦合器进行一些数据传输。
调试当天,来了个挺帅的小伙子,我们定义好了通信的格式,就各自忙去了。过了一会儿,帅哥跑来告诉我,他无法组态PN/PN耦合器的Universal Module。我用疑惑的眼光看了他一眼,心想:不可能吧,我们经常这么用啊。于是我把程序打开给他看下,我用的是Step7 V5.5,就是下面这张图:
帅哥说:"我在博途里找不到这个模块啊"。他用的是博途V13版本,我打开一看,硬件组态里确实没有Universal module;
难道西门子在博途中取消了"Universal module"?组态不同可是不能交换数据哦,好吧,我们不用它了。重新约定使用的输入输出点,分配地址,编译下载硬件组态,编写程序,搞定。
下午,当我在忙着考虑别的通信的时候,帅哥又出现了。"你程序写了吗?"他问。"写了啊,我都下载到CPU里了"我说。"可我为什么看不到你的心跳信号呢?"(作者注:心跳信号是通信双方为了判断通信是否正常而以一恒定频率发送给对方的信号)
难道程序有问题?于是我在线监控一下。"我这边有心跳输出啊,为什么你收不到呢?"难道线有问题?让我想一下。(调试现场遇到不正常的情况的时候,往往会有比较多的可能,我习惯于先坐下来想一想,理一理思路,而不是急于动手)
我这边输出点用的数值比较大,Q4001.0,程序运算完成后,需要刷新到过程输出映像区。这里好像有一个问题,过程输出映像区多大呢?看下硬件组态:
CPU319默认的输入输出映像区的大小都是1024,而程序里用的是Q4001.0,这个显然是不够啊。CPU319支持的最大映像区的大小为8019,修改下映像区的大小;
修改后重新下载,心跳信号正常输出,可以和小伙伴愉快的交换数据啦。
本篇调试故事会小总结:
1)博途(TIA Portal)的PN/PN耦合器硬件组态里没有Universal module块,约定通信方式时尽量不要使用它;
2)当使用比较大的的IO地址时,需要检查CPU硬件组态中配置的输入/输出映像区的大小,不然可能会出现程序的结果无法刷新到输入/输出映像区的情况。
今天的小故事就先分享到这里啦。
扫描下面的二维码,关注“方正智芯”的原创文章,提供工业控制领域(PLC、单片机、通信)的技术和经验的分享,持续关注,持续进步。
点击这里下载本文的PDF版本:
发表评论