我的通讯M8161为ON,即8位的,例如我发送的数据是01 03 02 00 00 0C CRC_L CRC_H (01是设备地址,03是读指令,0200是设备数据寄存器地址,00 0C是读取12个设备寄存器数据的个数),设备EVC会返回的数据格式是:01 03 18 ......... CRC_L CRC_H (...中是24个数据),总共也就是29个,RS指令写成RS D0 K29 D30 K29,(D8-D28均为0,不影响通讯,因为EVC在接收到数据的CRC校验的数据后,后面的数据是不做响应的)为什么发送的数据寄存器我也要分配成29个,是由于如果写成是K8,那么我通讯的时候,接收的数据是错误的,发现循环错位的现象。写成RS D0 K29 D30 K29时,不会出现那样的情况,接收到的数据也是正确的,但是发现一个问题是,每次脉冲信号发送数据后,D30-D58起初接收的数据是PLC发送的,也就是D30=01,D31=03,D32=02,D33=00,D34=00,D35=00,D36=0C依次类推,D38-D58为0,之后D30到D58的数据寄存器立马闪烁显示为EVC返回的数据,也就是此时D30=01,D31=03,D32=18,依次类推,D33-D56为24个数据,D57,D58为CRC校验的低8位,高8位。所以每次脉冲发送数据通讯时D30-D58数据寄存器内的内容都会跳动显示,而我只要EVC返回的数据,不知道如何去解决这样的问题?请大家帮帮忙! |