发表于:2017/6/10 21:51:12
#10楼
以下是引用jiouai84在2017/6/10 21:28:38的发言:
如图1ascii方式时,规定了起始码4位1个hex数,转换成一个ascii码,所以只用一个d0,地址码,8位,hex两位,两个ascii码,所以用两个d,而rtu模式时,如图2,地址码8位,用一个d,数据区首地址,4个hex数,16位用一个d,这样算对吗?
FX2N做无协议时,程序初始化时M8161被置位,表明是8位数据处理模式,意思是在使用RS指令时,每个寄存器的高8位被忽略掉,只有低8位有效:如图1ascii方式时,规定了起始码4位1个hex数,转换成一个ascii码,所以只用一个d0,地址码,8位,hex两位,两个ascii码,所以用两个d,而rtu模式时,如图2,地址码8位,用一个d,数据区首地址,4个hex数,16位用一个d,这样算对吗?
一、先说Modbus ASCII方式,这种模式下,起始码是符号“:”,它的ASCII码是H3A,占用1个字节,比如保存在D0;
从站地址比如是H01,换算为ASCII码后占用2个字节,即为H30、H31,依次保存在D1、D2;
功能码比如是H03,换算为ASCII码后占用2个字节,即为H30、H33,依次保存在D3、D4;
预读的寄存器起始地址比如是H1234,换算为ASCII码后占用4个字节,即为H31、H32、H33、H34,依次保存在D5、D6、D7、D8;
预读的寄存器个数比如是H0001个,换算为ASCII码后占用4个字节,即为H30、H30、H30、H31,依次保存在D9、D10、D11、D12;
计算出的LRC校验码这里是HB5,换算为ASCII吗后占用2个字节,即为H42、H35,依次保存在D13、D14
结束符分别是回车和换行符,它们的ASCII码依次是H0D、H0A,占2个字节,依次保存在D15、D16
所以PLC做无协议时需要发送17个字节,即就是RS D0 K17 D20 K15
PLC发送17个字节、接收15个字节。
二、Modbus RTU方式,这种模式下一帧数据的开始条件和结束条件默认为大于等于3.5字符时间,
从站地址为H01,占一个字节,保存在D0里
功能码为H03,占一个字节,保存在D1里
预读的寄存器起始地址为H1234,占2个字节,其中高字节保存在D2、低字节保存在D3
预读的寄存器数量为H0001,占2个字节,其中高字节保存在D4、低字节保存在D5
CRC校验原始值为HBCC0,通信发送时低字节在前、高字节在后,所以D6保存的是HC0、D7保存的是HBC
所以RS指令格式就是RS D0 K8 D10 K7
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
联系!腾讯扣扣149034219