三菱FX3U编程口通信协议

最近在做一个小东西,涉及到了三菱fx3u通信协议,经过几天的资料查找,做个整理,方便以后查询。本文介绍的是电脑通过USB-SC09-FX与FX3U进行通信,用的软件是串口助手;
设置如下:
波特率

通信命令有两种,一种是DEVICE READ/WRITE,另一种是FORCE ON/OFF;

  • DEVICE READ/WRITE 就是读写PLC里面的寄存器。比如D,M,Y,X等以字节为单位读写
  • FORCE ON/OFF 这个是强制置位,强制让Y,M,X等变为开或者关
  • 命令格式:
    • DEVICE READ :STX CMD ADDR BYTE ETX SUM
    • DEVICE WRITE:STX CMD ADDR BYTE DATA EXT SUM
    • FOREC ON/OFF :STX CMD ADDR EXT SUM
  • STX 02H,ETX 03H
  • CMD:
    • DEVICE READ 30H
    • DEVICE WRITE 31H
    • FORCE ON 37H
    • FORCE OFF 38H
  • ADDR:这里我就介绍几个D,M,Y的,其余的需要你们自己去查找了。
    • DEVICE 和 FORCE的地址是不一样的
      • DEVICE:
        • Dn ADDR = n*2 + 1000H;也就是说D的起始地址是1000H,但D是2个字节的
        • Mn ADDR = n/8 + 100H; 这是计算在那一个字节里面,因为一个地址里面有8位,而M只占1位,然后用n%8计算在那一位里面
        • Yn ADDR = n/8 + A0H;与上面M一样,不同点就是FX3U的Y是以8进制来排序的,这里的n是8进制
        • ADDR 是把每一位转化为ASCLL码,高位在前,低位在后的发送,比如我计算D100的地址,100 * 2 = 200 = C8H,ADDR = 10C8H,那么在命令里面发送数据为 31H 30H 43H 38H 这就代表地址
      • FORCE:
        • Mn ADDR = n + 800H;
        • Yn ADDR = n + 500H;n是8进制
        • ADDR 这里除了地址与上面不同,连排列顺序也变了,他先发送低两位,在发送高两位,比如Y10的地址,ADDR = 8H + 500H = 508H,发送数据是 30H 38H 30H 35H;
      • 在写代码的时候,Y这种8进制数编码可以先转换为10进制,然后加上500H的10进制也就是1280,在转换成16进制,就是地址了。M,D这种都是10进制的,可以直接加首地址,在转换成16进制。但是发生时,十六进制的A,B,C,D,E,F是需要转换成ASCLL码发送的。
    • BYTE:用来控制读写几个字节的数据,比如写4个字节,就发送 30 34,最多只能
    • SUM:把除STX以外的数据都相加,取低两位,变成ASCLL码发送出去。
      • 举例:把Y10强制制为ON,02H 37H 30H 38H 30H 35H 03H 30H 37H,SUM= 37H+30H+38H+30H+35H+03H = 107H,取07。

命令的响应:发送05H是测试通信是否连接,返回06H代表成功,15H代表失败。
发送读D寄存器的时候在02 和 03之间就是数据,以ASCLL码值返回每一位,并且先发送的是低两位,然后在是高两位。数据是16进制的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值