从制定通信协议所想到的......

第一次听到通信协议有关的事,是2001年初到公司的时候,那个时候,总是把通信协议和硬件(或通信链路)扯在一起,对232/485、TCP等通信链路和Modbus、PPI、TFP分不清到底是什么关系(记得当时,陈老师有好多次纠正我不要把通信说成通讯,通信包括通讯和可信两部分含义,有通讯可靠的意思)。

在工控上经常有人问,Modbus TCP和Modbus Rtu那个通信快,对西门子PLC200,用PPI通信协议是否比用库实现的Modbus Rtu快呢?问这些问题的人,把一些基本概念混淆了。就像以为所有的车只要上了高速公路,车子性能就好了,速度就快了,其实车还是那个车,只是规定变了。

我的理解,通信协议(或规约)就是一种约定,也许是开始制定协议的时候,考虑到硬件的性能因素,所以协议好像和硬件不能分割了,就像modbus rtu协议换了硬件链路,协议内容不变,就变成了modbus plus了。

其实,关于通信协议的一些事我也说不清楚,也许有些东西只能意会而不能言传。

这段时间比较喜欢Modbus协议,喜欢他的简洁,喜欢他的开放。不像PPI、MPI等协议为了防止破解,加了很多冗余字节,所以势必在同样的硬件条件下,有效通信的效率降低。

此外,对协议制定,现在从架构的层次来考虑了,以前制定一个硬件通信协议,总是这样制定:如 登录命令,设置××参数命令,读取××参数命令,下发数据命令等等,有多少项,也许就有多少条指令。只要增加或修改指令,那相应的上位机和下位机通信部分的代码就要修改。

目前模仿一些PLC系统,先在下位机设定一个一定大小的存储区,里面放一些已知或目前未知的参数,协议内容无论硬件有多复杂,都仅包含三块内容:读、写指令,参数区具体定义。相对程序来说,就编写两部分,读写操作,剩下的就是配置参数而已。

这样简单多了,以不变应万变(结合我的组态后台使用,那简直用一个字来形容“爽”)!

上一篇:Create a new repository


下一篇:mysql初学