技术干货

profinet源码直接用ST写的多还是库封好的多?

520
520
2026/03/18 21:14

刚做机器人应用不到一年,现在有个六轴的小项目要走PN通讯,IO模块大概挂12个,从站有ET200SP也有几个第三方阀岛。之前看的例程都是封装好的库函数直接调,底层跑的啥我也没细看。最近客户那边突然要我们自己改一下GSD文件里的参数映射,折腾GSD的时候顺带翻了下协议栈源码,几千行C看得脑壳疼。

想问下各位,实际项目里profinet的源码你们是直接用ST写应用层、底层协议跑操作系统的多,还是全都用库封装好只调API?我们这个项目实时性要求不算高,循环周期1ms够用了,但后面可能要扩到32个IO,不知道库方案撑不撑得住。

10 4

全部回复 (4)

日进斗金
日进斗金#1

1ms周期、32个IO以内,西门子官方的PN Coupler或者IRT库直接用就行,没必要自己啃协议栈。我手上一个AGV项目跑了快三年,64个从站、512字节IO,循环周期500us,用的库方案,没出过实时性问题。自己改GSD的时候注意VendorID和DeviceID别跟现有设备撞了,槽位映射那块的ModuleIdentNumber改完记得在TIA里重新组态一遍,不然下进去报错你会以为是源码问题。

2026/03/19 03:34
叶斌
叶斌#2

建议把实时核和非实时核分开,PN跑在RT核上,应用逻辑跑A核,别全堆一起。我这边一个项目从站才8个就掉线,后来查是任务优先级没分清楚,PN的看门狗被业务代码拖超时了。

2026/03/20 01:45
老谢
老谢#3

直接说——你这个规模根本不需要看协议栈。ET200SP加第三方阀岛走PN IRT的话,1ms完全够,跑四年都不会出问题。倒是你那个GSD改完用PROFINET Commander或者Proneta扫一下,看看实际槽位对不对得上,光在TIA里看是没用的,第三方阀岛经常有些隐藏的诊断槽位。

2026/03/22 15:39
leil94
leil94#4

你说的32个IO是32个站点还是32个字节?

2026/03/25 13:28