前段时间收到国内ProfiTrace代理的电话,说是有一个这方面的技术培训会可以参加,我个人还是比较感兴趣,但一问价格就傻了,3天要8000RMB。我心想简直就是抢钱呀,自己掏钱决不会去,公司一般也不会那么慷慨,至少我没见到过这样的公司。
其实如果说技术难度,ProfiTrace并不是不能实现,目前制约的应该在于Profibus协议本身,对协议非常熟悉的人在国内还是不多,虽然有很多工程应用,但大多是皮毛的东西。说远了,其实我们完全可以自己设计一个类似功能的产品,当然是软件和硬件结合,下面描述一下我个人的想法。
硬件部分:
ProfiTrace声称可以达到采样速率为12Mbps,其实根据Profibus协议,波特率上限就是12Mbps,RS485完全可以支持,因此只要总线上的采样速度足够快并且能及时上传那么就完全可以达到。硬件应该具备一个高速UART接口,较大的FIFO(目前市场上已经有256字节FIFO的UART),一个较快的MCU(ARM7就可以,如果认为功能不够强,用ARM9也行),一个USB接口或100MB以太网接口,个人觉得以太网更合适,因为PC机上的程序更好写,这些东西组合在一起就类似ProfiCore的功能,有了硬件支持,下一步才有可能实现软件的功能。
软件部分:
MCU软件-就是把RS485总线上的数据都抓上来,通过USB或以太网发送给PC机,当然传送的数据除了原始数据以外,还有加入一些控制信息,如每个数据帧的接收时间,校验结果等等。软件结构比较简单,但要求更新数据必须很快,否则会有丢数据的危险。从实现上看,gcc toolchain应该足够了。
PC机软件-从USB或以太网接收到数据后,先要缓存,然后分析数据,可以先做简单分析,如SD1、SD2格式的报文,负责分析都是在简单分析基础上完成的。从实现上看,可以使用开源的库,如libusb或winpcap,解析可以用perl来做,界面可以考虑用FLTK或Tk来完成。
下图是一个目标系统框图。