0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全局数据包通信简介

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-05-29 10:04 次阅读

1全局数据包通信简介

对于PLC之间的数据交换,只关心数据的发送区和接收区,全局数据包的通信方式是在配PLC硬件的过程中,组态所要通信PLC站之间的发送区和接收区,不需要任何程序处理,这种通信方式只适合S7-300/300/400 PLC之间相互通信。

下面将以举例的方式介绍全局数据包通信,使用的软硬件如下:

所需硬件:CPU315-2DP,CPU416-2DP

所需软件:STEP7 V5.2 SP1

4c9255ae-fd67-11ed-90ce-dac502259ad0.png注意:TIA软件平台不再支持全局数据包通信方式

2全局数据包的配置

1)首先打开编程软件STEP7,建立一个新项目如MPI_GD,在此项目下插入两个站STATION1/CPU416-2DP,STATION2/CPU315-2DP,分别组态硬件,插入CPU,配置MPI的站号和通信速率,在本例中MPI的站号分别设置为2号站和4号站,通信速率为187.5Kbit/S。

这些工作完成以后,可以组态数据的发送区和接收区。点击项目名MPI_GD后出现STATION1,STATION2和MPI网,点击MPI,再点击菜单“Options”->

“Define Global Date”进入组态画面如图1、2:

4ca1bf94-fd67-11ed-90ce-dac502259ad0.png

图1进入全局数据组态界面

4cc3677a-fd67-11ed-90ce-dac502259ad0.png

图2全局数据组态界面

2)插入所有需要通信的PLC站CPU

双击GD ID右边的CPU栏选择需要通信PLC站的CPU。CPU栏总共有15列,这就意味者最多有15个CPU能够参与通信。在每个CPU栏底下填上数据的发送区和接收区,例如:CPU416-2DP的发送区为DB1.DBB0~DB1.DBB21,可以填写为DB1.DBB0:22,然后在菜单“edit”选择“Sender”作为发送区。

CPU315-2DP的接收区为DB1.DBB0~21,可以填写为DB1.DBB0:22。编译存盘后,把组态数据分别下载到CPU中,这样数据就可以相互交换了。发送接收数据区的设置参考图3:

4ce682b4-fd67-11ed-90ce-dac502259ad0.png

图3设置通信区

地址区可以为DB,M,I,Q,区,长度S7-300最大为22个字节,S7-400最大为54个字节。发送区与接收区应一致,所以在上例中通信区最大为22个字节。

3多个CPU通信

了解多个CPU通信首先要了解GD ID,编译以后,每行通信区都会有GD ID号,

可以参考图3为

4cf5eb82-fd67-11ed-90ce-dac502259ad0.png

A:全局数据包的循环数,每一循环数表示和一个CPU通信,例如两个S7-300CPU通信,发送与接收是一个循环,S7-400中三个CPU之间的发送与接收是一个循环,

循环数与CPU有关,S7-300CPU最多为4个,所以最多和4个CPU通信。S7-400CPU414-2DP最多为8个,S7-400CPU416-2DP最多为16个。

B:全局数据包的个数。表示一个循环有几个全局数据包,例如两个S7站相互通信

一个循环有两个数据包。如图4所示:

4d052a02-fd67-11ed-90ce-dac502259ad0.png

图4一个循环两个数据包

C:一个数据包里的数据区数

可以参考图5:CPU315-2DP发送4组数据到CPU416-2DP,4个数据区是一个数据包。从上面可以知道一个数据包最大为22个字节,在这种情况下每个额外的数据区占用两个字节,所以数据量最大为16个字节。

4d186cc0-fd67-11ed-90ce-dac502259ad0.png

图5一个数据包里的数据区数

对于A,B,C的介绍只是用于优化数据的接收区和发送区,减少CPU的通信负载,简单应用可以不用考虑这些,GD ID编译后自动生成。

4通信的诊断

在多个CPU通信时,有时通信会中断,是什么原因造成通信中断?我们编译完成后,在菜单“View”中点击“Scan Rates”和“GD Status”可以扫描系数和状态字。如图6所示:

4d2b2946-fd67-11ed-90ce-dac502259ad0.png

图6通信诊断

S R:扫描频率系数。如图6 SR1.1为225,表示发送更新时间为225×CPU循环时间。范围为1~255。通信中断的问题往往设置扫描时间过快。可改大一些。

GDS:每包数据的状态字(双字)。可根据状态字编写相应的错误处理程序,结构如下:

第一位:发送区域长度错误。

第二位:发送区数据块不存在。

第四位:全局数据包丢失。

第五位:全局数据包语法错误。

第六位:全局数据包数据对象丢失。

第七位:发送区与接收区数据对象长度不一致。

第八位:接收区长度错误。

第九位:接收区数据块不存在。

第十二位:发送方从新启动。

第三十二位:接收区接收到新数据。

GST:所有GDS相“OR”的结果

如果编程者使用CP5511/5611编程卡可以首先诊断一下连线是否可靠,如上例中S7-300 MPI地址是2,S7-400MPI地址是4,用CP卡连接到MPI网上(PROFIBUS接头必须有编程口)可以直接读出2,4号站,在“控制面板”->“PG/PC interface” ->“Diagnostics”->“read”读出所以网上站号,如图7所示:

4d382c22-fd67-11ed-90ce-dac502259ad0.png

图7使用网卡诊断站号

0号站位CP5611站号,如果没有读出2,4号站,说明连线有问题或MPI网传输速率不一致,可以把问题具体化。

5事件触发的数据传送

如果需要控制数据的发送与接收,在某一事件,某一时刻,接收和发送所需要的数据,这时将用到事件触发的数据传送。这种通信方式通过调用CPU的系统功能SFC60 (GD_SND),SFC61(GD_RCV)来完成的,而且只有S7-400CPU支持,并且必须设置CPU的SR(扫描频率)为0,可参考图8全局数据的组态画面:

4d4a1f68-fd67-11ed-90ce-dac502259ad0.png

图8在S7-400CPU侧的SR为0

与上面作法相同编译存盘后下载到相应的CPU中,然后在S7-400侧中调用SFC60/61控制接收与发送。

所需硬件:CPU315-2DP,CPU416-2DP。

所需软件:STEP7 V5.2 SP1

4d67d58a-fd67-11ed-90ce-dac502259ad0.png

CIRCLE_ID,BLOCK_ID参考GD A。B。C。

例子中M1.1为1时CPU416接收CPU315的数据MB20~MB29放到MB40~MB49中,M1.0为1时CPU416发送数据MB60~MB69到CPU315MB60~MB69中

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    5706

    浏览量

    134405
  • 软硬件
    +关注

    关注

    1

    文章

    269

    浏览量

    19055
  • 数据包
    +关注

    关注

    0

    文章

    229

    浏览量

    24095

原文标题:S7-300/400 通过全局数据包通信

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SI4432数据包较短,加长数据包以后尾部是乱码

    小弟最近在用STC11L08X+SI4432做通信,设置数据包长度为14个字节的时候可以正常通信也没有错码,但是一旦我将数据包长度扩大超过了14个字节后,从FIFO中读取出来的
    发表于 12-08 14:41

    LabVIEW 与其他语言TCP通信数据包解析求助

    做为下位机与上位机进行TCP通信,上位机非labview编程语言设计,切已经定好数据格式:帧头EB90+两个字节数据包长度+
    发表于 09-14 09:15

    请问SRIO每次出传输数据包的个数,数据包负载大小怎么设置?

    本帖最后由 一只耳朵怪 于 2018-6-19 14:25 编辑 DSP一次发送16个数据包,每个数据包256字节,一次传输4096个字节。如果现在DSP向FPGA发送2048字节数据,后面2048个字节它自动为零,造成效
    发表于 06-19 05:22

    请问如何获取蓝牙通信数据包

    各位大佬,我现在有两个蓝牙在通信,我想获取两个蓝牙相互通信数据包不知道有什么方法没
    发表于 05-07 06:35

    请问在串口通信数据包的帧头和帧尾怎样加入到数据包

    ,请问在串口通信中,数据包的帧头和帧尾(比如0x55,0xaa)是怎样加入到数据包的?是不是定义一个数组,将帧头和帧尾设置成0x55,0xaa,再将整个数组发送?在发送包含帧头帧尾的数据包
    发表于 03-30 05:55

    ucosIII邮箱如何发送结构体和全局数组?

    RT;想要使用ucosIII发送消息,看到能够发送全局数组或者全局结构体,但是自己写的话,发现不能够发送这些数据,想问问有人做过吗?怎么实现
    发表于 04-08 00:42

    全局数组和全局变量之类的数据结构会对RTOS带来什么样的影响?

    ,过于频繁是不是就会严重影响系统的实时性?这样是不是意味着使用RTOS的情况下,共享内存的形式不是很适用?3.按RTOS的思维的话是不是应该发送消息缓存设计成消息队列?需要写入数据的任务通过消息队列将数据发送给发送任务?总的来说,全局数
    发表于 06-13 09:00

    串口通信简介和STM32的串口通信

    串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。文章主要是串口通信简介和STM32的串口通信
    发表于 08-04 06:23

    SPI通信简介

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库 2.读入数据 总结SPI通信简介PCB芯片间的数据通信方式有很多种,其中
    发表于 08-12 07:04

    STM32F4串口通信简介

    STM32F4串口通信串口通信简介:串口通信,是指外设和计算机之间,通过数据信号线、地线等,按位进行传输数据的一种
    发表于 08-18 08:00

    89C52串口通信简介

    1、89C52串口通信简介2、串口通信需要配置的寄存器2-1、串行数据缓冲器SBUF2-2、串行控制寄存器SCON(1)SM0 SM1(2)SM2(3)REN(4)TB8(5)RB8(6)TI(7
    发表于 12-02 07:10

    STM32F103芯片实现USART串口通信简介

    本文主要叙述了STM32F103芯片实现USART串口通信简介,通过库函数实现STM32F103芯片给电脑发送"Hello,world!"实验环境:keil μVision
    发表于 01-21 12:39

    IIC通信简介

    文章目录一、简介二、起始信号和终止信号三、字节传送与应答四、数据帧格式五、写入与读取数据一、简介  IIC总线是由数据线SDA和时钟SCL构
    发表于 01-21 06:31

    西门子光纤通信简介

    西门子光纤通信简介
    发表于 08-17 15:39 34次下载

    西门子博途中全局数据块中的变量寻址

    全局数据块中的变量可以按符号名或绝对地址进行寻址。对于符号寻址,可以使用数据块的名称和变量名,并用圆点分隔。数据块的名称用引号括起来。
    的头像 发表于 07-04 10:15 4034次阅读