zoukankan      html  css  js  c++  java
  • stm32与三菱PLC通信

    一、三菱PLC通讯概要

        三菱PLC FX系列通信结构如下图所示:

      三菱PLC FX系列的通信规格如下图所示:

      三菱PLC FX系列一般有以下几种通信模块,以FX2N为例:

      FX2N-232-BD

      FX2N-232IF

      FX2N-232ADP

      FX2N-485-BD

      FX2N-422-BD

      ..........

      无协议通讯情况下,以BD结尾的模块一般是使用RS通信指令,以IF结尾的模块一般使用对应的模块指令。

    个人觉得BD模块操作起来更简单方便。

      具体通信看对应PLC的通讯用户手册,RS-232、RS-422与 RS-485标准只对接口的电气特性做出规定,而

    涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。

      FX系列PLC四种通信模式的特性如下:
      首先讲讲FX系列PLC的通信方式。
      FX系列PLC根据使用的通信模块与协议不同,分为以下四种通信模式:
      1、PLC的N:N通信方式
      2、PLC双机并联通信方式
      3、PLC与计算机专有协议通信方式(无须梯形图,电脑直接读写操纵PLC) 
      4、PLC与计算机无协议通信方式(梯形图RS指令方式,可自定义通信协议) 
      以下将详细列出各通信模式的特性:
        N:N网络 PLC并联 专用协议计算机连接 无协议通信
      传输标准 RS485 RS485/RS422 RS485/RS422或RS232
      传输距离 500m RS485/RS422:500mRS232:15m
      连接数量 8站 1:1 1:N(N<=16) 1:1
      通信方式 半双工 FX,FX2c,FXon:半双工FX2n: 全双工
      数据长度 固定 7bit/8bit
      校验  无/奇/偶
      停止位  1bit/2bit
      波特率 38400bps 19200bps 300/600/1200/2400/4800/9600/19200
      头字符 固定 无/有效
      尾字符  
      控制线 ------ 
      协议 --- 格式1/格式4 无
      和校验 固定 无/有效 
      适用机型 FX2n,FXon FX2n,FX,FX2c FX2n,FXon,FX,FX2c
      FX系列PLC专用协议通信指令一览
       以下将详细列出PLC专用协议通信的指令:
      指令 注释  
      BR 以1点为单位,读出位元件的状态  
      WR 以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值  
      BW 以1点为单位,写入位元件的状态  
      WW 以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件  
      BT 以1点为单位,SET/RESET 位元件  
      WT 以16点为单位,SET/RESET 位元件,或写入值到字元件  
      RR 控制PLC运行RUN  
      RS 控制PLC停止STOP  
      PC 读出PLC设备类型  
      TT 连接测试  
    注:位元件包括X,Y,M,S以及T,C的线圈等;
      字元件包括D,T,C,KnX,KnY,KnM等。

    二、三菱PLC编程口通讯(可以看三菱PLC编程口通讯协议完整版即程序.pdf--感谢网友visualboy提供)

      接下来讲一下该协议实际上适用于PLC编程端口以及 FX-232AW 模块的通信。
    通讯格式:
      命令 命令码 目标设备
      DEVICE READ CMD "0" X,Y,M,S,T,C,D
      DEVICE WRITE CMD "1"  X,Y,M,S,T,C,D
      FORCE ON CMD " 7" X,Y,M,S,T,C
      FORCE OFF CMD  "8"  X,Y,M,S,T,C
      传输格式: RS232C
      波特率: 9600bps
      奇偶: even
      校验: 累加方式(和校验)
      字符: ASCII 
      16进制代码: 
      ENQ 05H 请求
      ACK 06H PLC正确响应
      NAK 15H PLC错误响应
      STX 02H 报文开始
      ETX 03H 报文结束
    帧格式:
      STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower)
      例子:
      STX ,CMD ,ADDRESS, BYTES, ETX, SUM
      02H, 30H, 31H,30H,46H,36H, 30H,34H, 03H, 37H,34H
      SUM=CMD+......+ETX;
      30h+31h+30h+46h+36h+30h+34h+03h=74h;
      累加和超过两位取低两位
    1、DEVICE READ(读出软设备状态值)
      计算机向PLC发送:
      始 命令 首地址 位数 终 和校验
      STX CMD GROUP ADDRESS BYTES ETX SUM
      例子:从D123开始读取4个字节数据
      02h 30h 31h,30h,46h,36h 30h,34h 03h 37h,34h
      地址算法:address=address*2+1000h
      再转换成ASCII
      31h,30h,46h,36h
      PLC返回
      STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM
      注:最多可以读取64个字节的数据
      例子:从指定的存储器单元读到3584这个数据
      02h 33h 35h 38h 34h 03h 44h,36h
    2、DEVICE WRITE(向PLC软设备写入值)
      始 命令 首地址 位数 数据 终 和校验
      STX CMD GROUP ADDRESS BYTES 1ST DATA 2ND DATA ...... LAST DATA ETX SUM
      例子:向D123开始的两个存储器中写入1234,ABCD
      02h 31h 31h,30h,46h,36h 30h,34h 33h,34h,31h,32h,43h,44h,41h,42h 03h 34h,39h
      PLC返回
      ACK (06H) 接受正确
      NAK (15H) 接受错误
    3、位设备强制置位/复位
      FORCE ON置位
      始 命令 地址 终 和校验
      STX CMD ADDRESS ETX SUM
      02h 37h address 03h sum
      FORCE OFF复位
      始 命令 地址 终 和校验
      STX CMD ADDRESS ETX SUM
      02h 38h address 03h sum
      PLC返回
      ACK(06H) 接受正确
      NAK(15H) 接受错误
      设备强制中的地址公式:Address=Address/8+100h
    说明:
    1.帧中的BYTES表示需要读取或者写入的字节数。
    2.地址算法上有说明。
    3.累加和是从STX后面一个字节开始累加到ETX的和。
    三菱FX系列PLC编程口通信源代码
    fx_comm.h 

    三、FX系列PLC专用协议通信

      FX系列PLC专用协议通信指令格式详解:
    约定说明:
         ENQ为请求标志,ASCII值5,VB中以chr(5)表示;
         ACK为正确标志,ASCII值6,VB中以chr(6)表示; 
         STX为请求标志,ASCII值2,VB中以chr(2)表示;
         EXT为请求标志,ASCII值3,VB中以chr(3)表示; 
         表格中红色字为需要求和效验的部分;
         和效验为每一项的ASCII值的总和转换成十六进制后区低两位;
         站号、PLC号、元件数量、和效验都是以十六进制表示;
         等待延时为0-150毫秒,以十六进制0H-FH表示,如100ms为AH。
    1、批量读出位元件--BR指令
        格式:
      1 2 3 4 5 6 7 8             15 16 17
      PC侧: ENQ 站号 PLC号 BR 延时 首地址 数量 和效验       ACK 站号 PLC号
      PLC侧:         STX 站号 PLC号 数据 EXT 和效验   
                    9 10 11 12 13 14      

    [注] 上述中:

    1、"PLC号"系统默认为"FF";

    2、"首地址 "应以十进制表示,如首地址"X0018"表示从X寄存器的第18地址单元开始读取I/O量;

    3、"数量"表示读取的I/O量个数;

    4、"和效验"是指从"站号"到"数量"之间的各代码的ASCII码的累加和;

    5、PLC侧的响应码中"和效验"是指从"站号"到"EXT"之间的各代码的ASCII码的累加和。

    6、可以读出"X"、"Y"和"M"寄存器的内容。

    例如:要读出站号为0的Fx2n系列PLC的X00到X08共9点的状态值,延时100ms,假设采用Communication Format(D8120)的Format 1 方式::
      注  释: 请求 站号 PLC号 命令 延时 元件首地址 元件数量 和效验
      代  码: ENQ 0 0 F F B R A X 0 0 0 0 0 9 4 2
      ASCII码: 05H 30H 30H 46H 46H 42H 52H 41H 58H 30H 30H 30H 30H 30H 35H 34H 32H
      您只要将以上兰色部分的代码以字符串形式(VB中可以表示为CHR(5)&" 00FFBRAX00000942")发送到PLC,就会有正确的回应信息,如下: 
      注 释: 头 站号 PLC号 元件首地址 尾 和效验
      代 码: STX 0 0 F F 0 0 1 1 0 1 1 0 1 EXT 0 5
      ASCII码: 02H 30H 30H 46H 46H 30H 30H 31H 31H 30H 31H 31H 30H 31H 03H 30H 35H
      若发送码有误,则有以下回应:
      注 释: 头 站号 PLC号 和效验
      代 码: NAK 0 0 F F 0 6
      ASCII码: 15H 30H 30H 46H 46H 30H 36H
    2、批量读出字元件--WR指令
      格式:
      1 2 3 4 5 6 7 8             15 16 17
      PC侧: ENQ 站号 PLC号 WR 延时 首地址 数量 和效验       ACK 站号 PLC号
      PLC侧:         STX 站号 PLC号 数据 EXT 和效验   
                    9 10 11 12 13 14      
      该命令使用方法与1(BR)命令相同,不再赘述。
    3、批量写入位元件--BW指令
      格式:
      1 2 3 4 5 6 7 8 9      
      PC侧: ENQ 站号 PLC号 BW 延时 首地址 数量 写入值 和效验   
      PLC侧:           ACK 站号 PLC号
                      10 11 12
    4、批量写入字元件--WW指令(M寄存器100单元置"1")
      格式:01FFWWAM01000100010C
      1 2 3 4 5 6 7 8 9      
      PC侧: ENQ 站号 PLC号 WW 延时 首地址 数量 写入值 和效验   
      PLC侧: 05H 01 FF  A M0100 01 0001  0C ACK 站号 PLC号
                      10 11 12
     请自行分析以上代码。
    请继续关注如何控制PLC的运行/停止。

    四、stm32与三菱PLC通信

      stm32采用USART串口通信,采用三菱PLC规定的通信协议进行通信即可。

      通信时,需要分清谁当主机,谁当从机,采用的协议和指令有所不同。

    • PLC做主站:需要采用通讯板,比如232BD(1对1)、485BD(1对多)等,可以通过无协议和专用协议来通讯;
    • 单片机做主站:除上述之外,还可以采用PLC编程口,编程口协议。

      编完程序后,采用回环测试,观察是否正常运行,再进行下一步开发。

    注:有些PLC拥有配套触摸屏,其通讯控制程序已固化在PLC中,不可在对程序进行增改。在对此PLC进行RS指令通讯时,注意不能再修改D8120.

  • 相关阅读:
    Linux 查看内存状态
    Linux sar工具安装使用
    DNS ARP地址解析原理
    TCP/UDP 端口
    TCP/IP 传输原理
    Window vagrant 安装部署【转】
    Window7下vagrant的部署
    Ubuntu下访问SSH
    使用 Vagrant 打造跨平台开发环境
    Vagrant入门[转]
  • 原文地址:https://www.cnblogs.com/steed/p/7681115.html
Copyright © 2011-2022 走看看