一、概述

CCLink是一种可编程控制器(例如PLC)与设备进行通信的协议。它是一种闭源的半开放协议,由三菱电机公司开发,并在全球范围内使用。CCLink支持多种通信媒介,包括以太网、串行通信等,并支持多个周期时间、不同数据长度和数据呈现方式的要求。

CCLink使用Cyclic (CCLink) 和 Transient (CCLink IE) 两种模式进行数据传输。CCLink和CCLink IE均支持点对点和多节点网络拓扑结构。

CCLink的配置参数可以通过GX Works2编程软件进行设置,并可根据特定设备或应用程序进行自定义设置。

二、通信协议

1. 帧格式

CCLink的帧结构包含码头、数据和帧尾,此外它还包含了数据长度和通讯地址信息。

//---------------------------------------------------------
    | Station No |  Length | Data | Checksum | EOF |
//---------------------------------------------------------

1)站号:指示该网络上的设备或节点。可以取值1到64。

2)长度:数据区域的字节数目,不包括其他区域。

3)数据:要传输的数据信息。

4)校验和:检测数据传输是否正确的值。

5)帧尾:指示帧的结束符。

2. 网络拓扑结构

CCLink支持以下几种网络拓扑结构:

  • 点对点网络
  • 多节点环形网络
  • 多节点总线网络
  • 多节点星型网络
  • 多节点混合网络

3. 通信模式

CCLink有以下两种通信模式:

  • Cyclic
  • Transient

4. 通信速度

CCLink的数据传输速度通常介于10Kbps和10Mbps之间,取决于要求的网络长度和通信速度。

三、CCLink通讯的实现

1. 网络初始化

网络必须进行初始化才能和控制器通信。初始化过程包括节点地址分配、手动或自动配置网络参数等步骤。

2. 通信协议

使用CCLink通讯协议之前,应该熟悉其帧结构和数据格式。通信协议通常是在控制器中使用GX Works2编程软件生成。

3. 数据传输

数据传输可以通过代码实现,例如在PLC程序中使用SFC或指令组的形式实现数据传输。

4. 错误处理

CCLink通讯过程中可能发生错误,例如通信超时或者传输数据有误等,此时应该进行错误处理。

5. 程序设计示例

以下是使用GX Works2编程软件实现CCLink通讯的一个简单示例:

//---------------------------------------------------------
SFC100   CCLINK COMMUNICATION EXAMPLE

          STRUCTURE OF THE CCLINK HEADER
          -----------------------------------------------------------------
HEAD      Struct
          STATION_NO     Dw       ; Station Number (1 - 64)
          LENGTH         Dw       ; Data Length (2 - 357)
          -----------------------------------------------------------------
          End_Struct

DATA      LblW 32767
COMLEN    EQU   X'04'; Length of the Message Communication field
RCV_BUCK  EQU   X'00'; Receive status buffer number
SND_BUCK  EQU   X'01'; Send status buffer number

NETWORK_INIT:
          INIT_NWK  'NETWORK 1',          ; Network configuration name
                  X'00000000',            ; Node configuration
                  XCCLINK,                ; Network type
                  X'00000001',            ; Station number
                  X'00000004',            ; Network communication speed
                  X'0000000F',            ; Maximum number of message communications
                  X'00000000',            ; Acquire Time-out
                  X'00000000',            ; Response Time-out
                  X'00000000',            ; Num error messages to store
                  X'00000000',            ; Retry interval
                  X'00000003',            ; Communication mode - cyclic
                  X'00000000',            ; Keep alive time
                  [1,2,3]                 ; Connected remote station numbers

SEND_STR:
          MOV    WORD PTR DATA+0, 1       ; Station Number

; WRITE SINGLE COIL
MSG1:     MOV    WORD PTR DATA+2, 5       ; Data Length
          MOV    BYTE PTR DATA+4, 0       ; Slave address
          MOV    BYTE PTR DATA+5, 5       ; Function code
          MOV    BYTE PTR DATA+6, 0       ; Starting address high byte
          MOV    BYTE PTR DATA+7, 0       ; Starting address low byte
          MOV    BYTE PTR DATA+8, 0       ; Output value high byte
          MOV    BYTE PTR DATA+9, 1       ; Output value low byte
          CALL PRG016
          JR     Z, MSG2                 ; No error


MSG2:     MOV    AX, 0
          RET

; READ SINGLE COIL
MSG3:     MOV    WORD PTR DATA+2, 4       ; Data Length
          MOV    BYTE PTR DATA+4, 0       ; Slave address
          MOV    BYTE PTR DATA+5, 1       ; Function code
          MOV    BYTE PTR DATA+6, 0       ; Starting address high byte
          MOV    BYTE PTR DATA+7, 0       ; Starting address low byte
          CALL PRG016
          JR     Z, MSG4                 ; No error
         
MSG4:     CMP    BL, 1                   ; Coil status is on
          RET

END:      END_SFC

//---------------------------------------------------------

四、总结

CCLink通讯协议是一种可编程控制器与设备进行通信的协议。它具有多种通信媒介、支持多种网络拓扑结构以及通信速度可变等特点。通过程序设计,可以实现对CCLink通讯协议的使用,进而实现设备之间的数据传输。