to 楼主:
1. 测试构思:用一问一答的方式连续向PLC(三菱FX系列可编程控制器)发出定长的串命令,让PLC也返回一个定长数据,用已知正确的通讯内容检查监测软件的结果是否相符(不定长通讯串的测试还未进行)。符合要求后,它便可用于在不占用串口资源的条件下,监测一个未知通讯协议的软件与其它设备的串口通讯对话内容。
2. 通讯软件: 用我自编的《用FX-PLC编程口通讯电缆遍历读PLC的映象区》与三菱可编程控制器通讯,见本站贴子:
http://www.gkong.com/gkong_bbs/dispbbs.asp?Boardid=3&ID=7357
源程序已以附件的形式发给了你。
3. 8楼给出的由PC端发出的通讯命令格式解释如下:
从0000h地址起读PLC的内存映象,每次读入10h字节,PLC每次返回一串数据后,下一个PC命令是紧接着读下一个地址0010h,和读入10h字节……余类推。PC发出命令部分人为用分隔符","隔开以便理解,如下:
,0,0000,10,,54
=起始符chr(02)每次相同;
0=读命令,每次相同;
0000=元件首地址0000h,内容会变;
10=读入字节数10 h,每次相同;
=结束符chr(03),每次相同;
54=前面所有字符的两位数校验和54h,内容会变。
下一个命令是:
,0,0010,10,,55
解释与前面相似。
4. 连续测试时,PC每次发出的数据串是定长的11个字符,只是因地址顺序迁移的原因,内容有变化。
5. PLC返回的是以ASCII-16进制字符表示的数据(因为本PLC的S元件未用,它全部是“00”)。 且PLC每次它每次返回的数据长度也是相同的,它等于起始符+数据+结束符+校验和:1+32+1+2=36。
我的通讯软件已将PLC的数据正确读入Execl电子表格里了,由8楼内容可见,你的软件监测结果似乎未能通能过定长串通讯测试。
另告:通讯的波特率是9600。
盼望得到你的指教,谢谢!