发布于 2008-08-24 15:38:03
0楼
22日晚上看到4楼5楼的意见,我回复了一个帖子,怎么删除了?
当时认为4楼5楼意见可能帮助我找到了问题所在.我在3楼所说的“报文长度和格式(包括最后的两个CRC字节)不需要考虑”是指的MODBUS功能16代码格式有一个字节是描述写入字符的字节数的,即5楼给出的发送代码格式第七行“06H”(表示后面有6个字节),我以为这个数字可能是自动配的,因为在DB块的数值配置中没有这个数值配置的地方。我验证了该文挡(5楼展示的)的01—06功能,08功能,使用SSCOM32(虚拟串口软件)都能看到CP341发出的MODBUS代码,但是功能16不行,而恰恰我做通的这几个功能代码在DB块的数据长度都是6字节,我使用的例程的LEN配置的数字正是6。当时我确实没有注意FB8的一个管脚LEN需要变化参数。回忆起例程关于ASCII通讯中的LEN是10,发出的代码长度也是10个,22日晚上我以为问题可能找到了。
但是今天我到办公室做了实验,还是不行。功能16在数据块配置的数据长度是12字节,根据其他功能的经验,我把FB8的LEN修改为12,结果不行。考虑到MODBUS的字符格式,功能16其中一个字节是后续字符长度(即上面说到的06H),我甚至在5楼展示的表中第五行前加了一行字节格式B#16#06,按照MODBUS格式全部字节数是13字节,但是在DB块是14字节。我实验了LEN修改为13,14都不灵。
我认为支持不支持功能16的仿真软件在其次,关键是为什么在SSCO32没有看到代码,那怕是错误的代码。要找到为什么CP341没有发这个代码。
6楼的意见我同意,我手头就有支持功能16的仿真软件,我也用CP341做通了MASTER和SLAVE,但是那是其他功能,这个功能16真把我难为坏了。
2楼"这里比较BT"是什么意思?