早几年前负责的一个项目需要破解了岛津部分
液相类产品的通讯协议,项目完成后就没有下文了,最近翻看这些资料想起曾经还做过这件事情,就拿出来与大家分享下,同时也希望能结交一些这个行业的朋友。因为项目的需要只进行了输液泵、紫外检测器与自动进样器的破解,好像光协议破解累计花了近四个月,当时每天就是围绕电平与信号在转,头都大了,现在想来也不知道自己是怎么过来的,呵呵。
先说说岛津
液相系统的控制组成,PC软件+1个controller box,各种
液相系统仪器接入至controller box统一控制,box功能还比较强大,可以接泵、检测器、自动进样器、柱温箱、收集器等一大堆东东。PC软件与controller box之间的通讯用RS232,controller box与个仪器设备之间通过光纤通讯。我的目标就是替代岛津的PC软件与controller box,开发自己的软件与硬件,不过只需要控制泵、检测器、自动进样器就OK。
要破解通讯协议,涉及的PC程序、controller box、输液泵、紫外检测器与自动进样器都需要用到。PC软件与box之间的232通讯命令的截获很简单,通过将发送与接收的信号引出,用串口小精灵就能截获。不过这是一堆数据,输液泵、检测器与自动进样器的命令都在一起,可以根据协议中的地址位将命令分类。这个时候虽然不能弄清楚协议中各字节的意义,但大体命令类型与协议结构还是有所了解。
PC软件发送的命令给了box,但box最终发送给输液泵、检测器与自动进样器的命令是不是与该命令是否一致还未知,而且需要替代box,设计box类似功能的硬件与嵌入式程序也就是必须的了。通过不断分析,弄清楚了box与仪器设备之间的通讯协议为HDLC,于是设计基于支持HDLC协议的CPU设计硬件与程序。先用自己设计的硬件接收box发送的控制命令,确定与232接收到的命令大体一致;然后用硬件模拟box发送控制命令,接收仪器返回的命令。经过一条条命令确认,最终明白box只是将232命令进行再次组装并转换成HDLC协议,命令的发送与响应都是在PC软件完成,就这样项目所需要的通讯协议都破解了。
这里举例说明自动进样器的协议,那些设置命令如排空时间、清洗容量、清洗速度等都简单,来说一个sequence的控制。sequence编程如下:
Line From To Rep Vol(ul) Stop.t(min)
0 0 1 2 1.0 2
1)、对应动作顺序
0号样品瓶吸样→分析→0号样品瓶吸样→分析→1号样品瓶吸样→分析→1号样品瓶吸样→分析
2、 对应控制命令
1)0号样品瓶吸样:
01 10 77 00
01 10 10 00
01 10 FF FF 00 12 C2 FD 80 C0 FD 83 A2 FD 81 FD 84 E0 E5 E4
01 10 19 00 00 00 01 00 C8 00 29 00 96 00 23 00 32 00 64
01 10 11 00
(说明:01 10 19后的00 00表示0号瓶号。)
吸样过程完成,自动进样器反馈回01 10 2F命令,接收到该命令后控制器发送01 10 1A,开始运行RUN过程;
分析:01 10 1A
分析过程完成后,自动进样器反馈回01 10 2A命令,当设置的运行时间长于01 10 2A返回的时间,控制器则等到运行时间到再发送01 10 78,否则01 10 2A接收到就发送01 10 78命令,自动进样器返回至READY状态;
2)0号样品瓶吸样与分析命令重复;
3)1号样品瓶吸样:
01 10 77 00
01 10 10 00
01 10 FF FF 00 12 C2 FD 80 C0 FD 83 A2 FD 81 FD 84 E0 E5 E4
01 10 19 00 01 00 01 00 C8 00 29 00 96 00 23 00 32 00 64
01 10 11 00
吸样过程完成,自动进样器反馈回01 10 2F命令,接收到该命令后控制器发送01 10 1A,开始运行RUN过程;
分析:01 10 1A
分析过程完成后,自动进样器反馈回01 10 2A命令,当设置的运行时间长于01 10 2A返回的时间,控制器则等到运行时间到再发送01 10 78,否则01 10 2A接收到就发送01 10 78命令,自动进样器返回至READY状态;
4)1号样品瓶吸样与分析命令重复,当自动进样器返回READY状态,sequence控制完成。
当时破解的是10A系列产品,岛津的产品已经从10A全面更新为20A,希望能有这方面兴趣爱好的朋友进行进行交流!!!