可能是最详细的CC-Link协议解析-数据交换篇

[复制链接]
查看76066 | 回复0 | 2024-3-13 09:08:49 | 显示全部楼层 |阅读模式
EnTalk

书接前文,上一篇文章描述了CC-Link从站上电建立连接的过程,本篇我们重点分析CC-Link从站和主站进行数据交换的过程。

01

正常情况下的数据交换

按照以前文章的习惯,我们先列出数据交换过程使用的报文格式:







在数据交换阶段,即:refresh cycle主站会依次查询从站,轮询的方式体现出了CC-Link的独特的地方。

首先我们看一下当前的PLC中CC-Link参数配置情况:

-  当前采用CC-Link V2版本;

-  配置了两个从站;

-  第一个从站为基于北京骥远Xone的Ver.2 远程设备站,占用1个内存站,4倍扩展周期;

- 第二个从站为基于MFP3的Ver.1 远程设备站,占用2个内存站。





下面我们通过协议文档,并结合抓取的报文,分析正常的数据交换过程。



如上图:主站和两个从站1、2在交换数据。在wireshark中显示为“M->S:1”,“S:1->M”。

如下图:对于第一个从站,主站采用了polling&refresh data的方式,即:请求该从站数据,同时把所有从站的数据广播出来,所有从站此时要将整个数据报文接收,然后将属于自己的数据存储下来。

对于第二个从站,主站采用了polling的方式,仅仅是告诉第二个从站,此时它可以回复数据了。



在每个refresh cycle结束,主站都会发送refresh cycle end报文,并且会发送两次。通过FA格式的帧报文发送,可以看到发送的第二个字节为当前最后一个正常从站的地址。



02

异常情况下的数据交换

我们继续CC-Link从站和主站进行数据交换的过程,但会重点关注某个从站异常情况下的交换过程。

该部分用到的数据报文和上一篇类似,这里不再列出。

首先我们列出当前PLC的硬件组态配置。如下图:





首先我们给出正常通信时的报文。如下图所示,红色部分表示两个refresh cycle,也就是两个数据交换周期。从报文中可以看到主站首先采用FF格式报文,刷新所有从站数据,并同时请求2号从站数据。然后主站依次请求4号从站和1号从站,采用FE格式报文,4号(1号)从站在接收到主站请求时进行回复。



如果在正常运行中,一个从站断电了,然后又上电,CC-Link通讯会是怎样一个过程?

我们可以通过抓取报文进行分析,如下图:



上图中,我们在系统正常运行时,将4号从站的电源切断。可以看到主站针对4号从站发出的Polling data没有应答,在连续请求4次后(因为在PLC硬件组态配置中,设置了重试次数为3),主站继续请求1号从站数据。

如下图:主站在监控4号从站未在线,达到1s左右的时间,不再继续针对4号从站进行Polling data,转而每隔一段时间在return cycle阶段,通过test polling的方式查询4号从站。



如下图所示,恢复4号从站的供电。4号从站经过如下的过程,重新进入到数据交换周期。

- 4号从站在接收到PLC主站的Test polling data时,进行应答。PLC会每隔一段时间在return cycle中,通过test polling data的方式查询掉线的从站。

- 主站在经过两个数据交换周期(refresh data cycle)后,开始和4号从站进行正常的数据交换报文。



03

CC-Link V2的数据交换

CC-Link协议目前分为V1.10和V2两个版本,下面我们重点分析V2版本下的数据交换。

按照我们之前的套路首先列出相关的报文和协议内容,如下图:







通过以上的V2协议的分析,我们可以看出V2的核心思路是通过分时的方式,在不增加从站占用内存站的情况下,增加从站的通信数据量。

我们PLC的配置和上一篇文章的一致,重点看1号站的配置为:占用1站,4倍设置。如下图所示:



通过对比,1号从站,2号从站,4号从站。我们可以看到2号从站的远程站点数(64)是4号从站(32)的1倍,1号从站的远程站点数和2号从站相同。但2号从站的占用站数是1号从站和4号从站的1倍。

此处要先介绍一下支持CC-Link V2的设备为北京骥远开发的基于Xone嵌入式板卡的测试设备,如下图所示:



Xone嵌入式板卡运行CC-Link V2协议,配置为占用1站,4倍扩展循环。

抓取的报文如下:



下图中,我们选择从站1作为过滤条件。





结合数据对报文进行分析如下图,按下demo板上的SW11按键,用户CPU采集到高电平信号后,通过Xone嵌入式板卡的接口(MODBUS/SPI)将该数据写入Xone,Xone进而通过CC-Link发送给PLC。





如上两图,通过抓取的报文可以看到在TSQ==0的报文中,上报了高电平信号(对应X100),在其他报文中实际上报的是其他区的数据(X110…)。在PLC的在线监控中可以看到X100最低位的值由0变成了1。

接下来我们再分析一下CC-Link V2输出的过程,即从PLC->Xone->Host CPU的过程。首先我们在线PLC,然后强制Y100.0的输出为1。



观察demo板上的输出指示灯(该灯由Host CPU控制),可以看到D1点亮。如下图:



进一步抓取报文分析,我们可以看出在TSQ=0的时候,Y100被输出。每隔4个周期,输出一次,正好对应4被扩展循环。



至此,数据交换部分的分析完毕。下一篇,我们将聊聊CC-Link协议开发的过程和所使用的工具。







北京骥远自动化

邮箱:cn-sales@jiyuansys.com

电话:010-85958895

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则