BeckHoff <--> ABB 机器手 Profinet 通讯

VIPBeckHoff <--> ABB 机器手 Profinet 通讯
本文介绍了BeckHoff PLC与ABB机器人通过PROFINET通信的实现方案。主要内容包括:1)通信接口的详细变量定义,涵盖输入/输出信号、设备状态监控、夹爪控制等关键功能位;2)全局数据结构和变量配置说明;3)机器人任务控制程序的实现方法,包括参数校验、任务指令下发和状态监控机制;4)重点分析了任务调度功能块的代码逻辑,涉及慢速模式处理、多参数配置和执行状态判断。该方案通过结构化变量定义和模块化程序设计,实现了PLC对机器人作业的精确控制,为工业自动化系统集成提供了可靠通信范例。
开通可读全文 ·1k 人阅读
最低0.47元/天 解锁文章

                                               

目录

                                               ​编辑

一、 BeckHoff 与ABB 机器手 通讯采用PROFINET 通讯方式

二、通讯接口定义

1、 IO定义

2、全局变量配置

三、PLC通讯接口全局定义

四、通讯程序接口变量声明 

  

1、输入接口定义 变量声明

2、输出接口定义 变量声明

五、机器人调用顺控程序 

​编辑

六、调用机器人运行程序号,控制机器人执行任务

6.1 调用  ABB参数配置、任务监控函数 F_SEQ_X2_Robot

​编辑

6.2 F_SEQ_X2_Robot  函数  程序代码

6.3 F_SEQ_X2_Robot    函数代码分析

6.3.1  函数整体功能概述

6.3.2代码详细分析

1. 初始化输出状态

2. 输入参数有效性检查

3. 任务参数配置

4. 任务参数 1 的处理

5. 其他任务参数的配置

6. 任务完成状态判断

6.3.3  PLC与设备交互编程注意事项

1. 输入参数错误处理

2. 变量命名规范

3. 任务状态监控

4. 代码优化

七、附录

1、通讯程序调用

2、通讯程序代码变量声明

3、通讯程序代码


一、 BeckHoff 与ABB 机器手 通讯采用PROFINET 通讯方式

二、通讯接口定义

1、 IO定义

2、全局变量配置

三、PLC通讯接口全局定义

全局变量数据结构

四、通讯程序接口变量声明 

  

1、输入接口定义 变量声明

STRUCT
	(*============================== INPUTS ==============================================*)

	i_bExecError		: BOOL;	(*Execution Error (System output)*)
	i_bEmgStop			: BOOL;	(*Emergency Stop (System output)*)
	i_bMotorOnState		: BOOL;	(*Motors On State (System output)*)
	i_bMotorOffState	: BOOL;	(*Motors Off State (System output)*)
	i_bPPMoved			: BOOL;	(*Program Pointer Moved (System output)*)
	i_bCycleOn			: BOOL;	(*Cycle On (System output)*)
	i_bAutoOn			: BOOL;	(*Auto On (System output)*)
	i_bUserError		: BOOL;	(*User Error active // programmed by stefan knoblauch. Not ABB Standard *)

	i_bRes_by1b0		: BOOL;	(*Reserve byte 1 bit 0*)
	i_bRes_by1b1		: BOOL;	(*Reserve byte 1 bit 1*)
	i_bRes_by1b2		: BOOL;	(*Reserve byte 1 bit 2*)
	i_bRes_by1b3		: BOOL;	(*Reserve byte 1 bit 3*)
	i_bRes_by1b4		: BOOL;	(*Reserve byte 1 bit 4*)
	i_bRes_by1b5		: BOOL;	(*Reserve byte 1 bit 5*)
	i_bRes_by1b6		: BOOL;	(*Reserve byte 1 bit 6*)
	i_bRes_by1b7		: BOOL;	(*Reserve byte 1 bit 7*)

	i_bRes_by2b0		: BOOL;	(*Reserve byte 2 bit 0*)
	i_bRes_by2b1		: BOOL;	(*Reserve byte 2 bit 1*)
	i_bRes_by2b2		: BOOL;	(*Reserve byte 2 bit 2*)
	i_bRes_by2b3		: BOOL;	(*Reserve byte 2 bit 3*)
	i_bRes_by2b4		: BOOL;	(*Reserve byte 2 bit 4*)
	i_bRes_by2b5		: BOOL;	(*Reserve byte 2 bit 5*)
	i_bRes_by2b6		: BOOL;	(*Reserve byte 2 bit 6*)
	i_bRes_by2b7		: BOOL;	(*Reserve byte 2 bit 7*)
	

	i_bRes_by3b0		: BOOL;	(*Reserve byte 3 bit 0*)  
	i_bRes_by3b1		: BOOL;	(*Reserve byte 3 bit 1*)
	i_bRes_by3b2		: BOOL;	(*Reserve byte 3 bit 2*)
	i_bRes_by3b3		: BOOL;	(*Reserve byte 3 bit 3*)
	i_bRes_by3b4		: BOOL;	(*Reserve byte 3 bit 4*)
	i_bRes_by3b5		: BOOL;	(*Reserve byte 3 bit 5*)
	i_bRes_by3b6		: BOOL;	(*Reserve byte 3 bit 6*)
	i_bRes_by3b7		: BOOL;	(*Reserve byte 3 bit 7*)


	i_bPickEnd_BoxEmpty	: BOOL;	(*Reserve byte 4 bit 0*)    // 料框空,脉冲至滚筒3#
	i_bPlaceEnd_BoxFull	: BOOL;	(*Reserve byte 4 bit 1*)    // 料框满,脉冲至滚筒4#
	i_bLoadEnd_ToNest1	: BOOL;	(*Reserve byte 4 bit 2*)    // 放置完成,脉冲至转台 Nest1
	i_bUnloadEnd_ToNest12:BOOL;	(*Reserve byte 4 bit 3*)    // 取料完成,脉冲至转台 Nest12	
	i_bPickEnd_Once		: BOOL;	(*Reserve byte 4 bit 4*)    // 单次抓取完成,脉冲至滚筒3#
	i_bPlaceEnd_Once   	: BOOL;	(*Reserve byte 4 bit 5*)    // 单次放置完成,脉冲至滚筒4#
	i_bRes_by4b6		: BOOL;	(*Reserve byte 4 bit 6*)
	i_bCheckPartStart	: BOOL;	(*Reserve byte 4 bit 7*)	 // 运行到位开启料箱内产品有无检测

	i_bJobRequest		: BOOL;	(*Ready for new job*)
	i_bJobRead			: BOOL;	(*Job data has been read*)
	i_bJobActive		: BOOL;	(*Job is busy (running)*)    // =忙碌中
	i_bRobIsHome		: BOOL;	(*Robot is in home position*)  // 原点
	i_bRobInConveyorZone: BOOL;	(*Robot is in Conveyor Zone*) // 在传输区域
	i_bRobInRotaryZone	: BOOL;	(*Robot is in Rotary Zone *) // 在转台区域
	i_bOpen_Gripper		: BOOL;	(*Reserve byte 5 bit 6*)   // 打开夹爪
	i_bClose_Gripper	: BOOL;	(*Reserve byte 5 bit 7*)   // 关闭夹爪
	
	i_bReject_DiscardEnd: BOOL;	(*Reserve byte 6 bit 0*)   // 废料丢弃完成
	i_bLoadPartRuning	: BOOL;	(*Reserve byte 6 bit 1*)   //取件过程中
	i_bUnloadPartRuning	: BOOL;	(*Reserve byte 6 b   //取件过程中it 1*)   //取件过程中
	i_bRes_by6b3		: BOOL;	(*Reserve byte 6 bit 3*)
	i_bRes_by6b4		: BOOL;	(*Reserve byte 6 bit 4*)
	i_bRes_by6b5		: BOOL;	(*Reserve byte 6 bit 5*)
	i_bRes_by6b6		: BOOL;	(*Reserve byte 6 bit 6*)
	i_bRes_by6b7		: BOOL;	(*Reserve byte 6 bit 7*)

	i_bRes_by7b0		: BOOL;	(*Reserve byte 7 bit 0*)
	i_bRes_by7b1		: BOOL;	(*Reserve byte 7 bit 1*)
	i_bRes_by7b2		: BOOL;	(*Reserve byte 7 bit 2*)
	i_bRes_by7b3		: BOOL;	(*Reserve byte 7 bit 3*)
	i_bRes_by7b4		: BOOL;	(*Reserve byte 7 bit 4*)
	i_bRes_by7b5		: BOOL;	(*Reserve byte 7 bit 5*)
	i_bRes_by7b6		: BOOL;	(*Reserve byte 7 bit 6*)
	i_bRes_by7b7		: BOOL;	(*Reserve byte 7 bit 7*)
	
	i_byJob  			: BYTE;	(*Group Input byte 8  bit 64 -Bit 71*)	 (*Mirror of motion task to PLC, Bit 0*)
	i_byOverride		: BYTE;	(*Group Input byte 9  bit 72 -Bit 79*)	// 当前速度
	i_byPickNo		    : BYTE;	(*Group Input byte 10 bit 80 -Bit 87*)	// 当前抓取号	
	i_byPlaceNo		    : BYTE;	(*Group Input byte 11 bit 88 -Bit 95*)	// 当前放置号	
	i_byGI_by12		    : BYTE;	(*Group Input byte 12 bit 96 -Bit 103*)	
	i_byGI_by13		    : BYTE;	(*Group Input byte 13 bit 104 -Bit 111*)	
	i_byGI_by14		    : BYTE;	(*Group Input byte 14 bit 112 -Bit 119*)	
	i_byGI_by15		    : BYTE;	(*Group Input byte 15 bit 120 -Bit 129*)	
	
	i_byRes_by16		: BYTE;	(*Reserve byte 16*)	
	i_byRes_by17		: BYTE;	(*Reserve byte 17*)	
	i_byRes_by18		: BYTE;	(*Reserve byte 18*)	
	i_byRes_by19		: BYTE;	(*Reserve byte 19*)	
	i_byRes_by20		: BYTE;	(*Reserve byte 20*)	
	i_byRes_by21		: BYTE;	(*Reserve byte 21*)	
	i_byRes_by22		: BYTE;	(*Reserve byte 22*)		
	i_byRes_by23		: BYTE;	(*Reserve byte 23*)	
	
	i_arbyRes			: ARRAY [1..40] OF BYTE; (*Reserve  byte 24 until byte 63*)


END_STRUCT

2、输出接口定义 变量声明

STRUCT

    (*============================== OUTPUTS =============================================*)

    q_bResetExecError    : BOOL;    (*Reset Execution Error (System input)*)
    q_bResetEmgStop        : BOOL;    (*Reset Emergency Stop (System input)*)
    q_bMotorsOn            : BOOL;    (*Motors On (System input)*)
    q_bMotorsOff        : BOOL;    (*Motors On (System input)*)
    q_bStartAtMain        : BOOL;    (*Start At Main (Program Pointer to Main) (System input)*)
    q_bStop                : BOOL;    (*Stop Program (System input)*)
    q_bRes_by0b6        : BOOL;    (*Reserve byte 0 bit 6*)
    q_bRes_by0b7        : BOOL;    (*Reserve byte 0 bit 7*)

    q_bRes_by1b0        : BOOL;    (*Reserve byte 1 bit 0*)
    q_bRes_by1b1        : BOOL;    (*Reserve byte 1 bit 1*)
    q_bRes_by1b2        : BOOL;    (*Reserve byte 1 bit 2*)
    q_bRes_by1b3        : BOOL;    (*Reserve byte 1 bit 3*)
    q_bRes_by1b4        : BOOL;    (*Reserve byte 1 bit 4*)
    q_bRes_by1b5        : BOOL;    (*Reserve byte 1 bit 5*)
    q_bRes_by1b6        : BOOL;    (*Reserve byte 1 bit 6*)
    q_bRes_by1b7        : BOOL;    (*Reserve byte 1 bit 7*)

    q_bRes_by2b0        : BOOL;    (*Reserve byte 2 bit 0*)
    q_bRes_by2b1        : BOOL;    (*Reserve byte 2 bit 1*)
    q_bRes_by2b2        : BOOL;    (*Reserve byte 2 bit 2*)
    q_bRes_by2b3        : BOOL;    (*Reserve byte 2 bit 3*)
    q_bRes_by2b4        : BOOL;    (*Reserve byte 2 bit 4*)
&

VIP BeckHoff <--> 基恩士(CV-X300)三维机械手视觉系统Profinet通讯 & 控制 摘要:本文详细介绍了BeckHoff PLC与基恩士CV-X3000视觉系统通过Profinet通讯的实现方案。主要包括硬件配置、通讯接口定义(包含5个关键结构体)、视觉功能块编程实现及状态机控制逻辑分析。系统支持程序号切换(24/25命令)、执行条件配置(41/42命令)、图像触发检测(Trg1信号)及结果判定(OK/NG),通过定时器控制和3次重试机制确保通信可靠性,并提供完善的错误诊断功能(wTemp_Diagnose错误字)。该方案适用于工业自动化中的视觉引导、质量检测等场景, 开通可读全文·1k 阅读·25 点赞·16 收藏 阅读全文

相关推荐

ABB机器人常见的几大数据类型

ABB机器人数据存储描述了机器人控制器内部的各项属性,ABB机器人控制器数据类型多达100余种,其中常见的数据类型包括基本数据、i/o数据、运动相关数据。 1、基本数据 基本数据: bool 逻辑值:逻辑状态下赋予的真或者假。逻辑值有两种情况:成立和不成立则逻辑值为真使用true或1表示不成立则逻辑值为假使用false或0表示 byte 字节值:用于计量存储容量的一种计量单位,取值范围为(0-255) num 数值:变量、可存储整数或小数整数取值范围(-8388607~8388608) dnum

soinlove36的专栏 1万+

LABVIEW TCP通讯之ABB机械手控制

前言: 最近在学习LABVIEW TCP通讯时,由于身边没有合适的设备,只能自己建立一个服务器一个客户端进行测试。电脑刚好安装了ABB机械手的RobotStudio,所以测试了TCP socket控制ABB机械手的程序。 如下 LABVIEW做服务器,ABB做客户端。 LABVIEW界面如下: 实现效果如下: ...

风动9527的博客 4846

智能体机器人综述:模型,数据和驾驭

论文 “Towards Agentic Robots: Model, Data, Environment, and Harness”。来自港中文 MMLab、复旦、清华、浙大、中山等单位。这篇综述的价值主要在于框架化和工程视角,尤其是 Harness 部分对编排、记忆、监控、技能、基础设施、分层的拆解,可以直接当作搭建 agentic 机器人系统的设计清单。它在评估方法上的提醒也很中肯。它的短板在于"agentic"的边界太宽,缺少定量证据,安全议题被低估,和经典机器人学的衔接不足。

yorkhunter的博客 438

PLC与ABB机器人进行PROFINET通信的具体方法和步骤详解

PROFINET是一种用于工业自动化的实时以太网通信协议,它提供了高性能和可靠性,适用于在工厂自动化中连接PLC(可编程逻辑控制器)和机器人等设备。在本文中,我们将详细介绍如何在S PLC和ABB机器人之间建立PROFINET通信,并提供相应的源代码。这样,你就可以实现高性能和可靠的通信,以便在工业自动化环境中控制和监控机器人的运动和状态。因此,在进行设置之前,请参考相关的文档和手册,以确保按照正确的步骤进行操作。在PLC和机器人之间进行数据交换,并验证控制指令的传输和机器人的响应。

ReElixir的博客 5094

ABB机械臂与PC通讯(socket),

ABB与PC通讯,里面是ABB的程序,在ABB机械臂上测试通过,相较于论坛和github上其接受和发送数据的过程程序较简单,无注释,可以在robotstudio里的help查看函数的介绍

ABB机器人与倍福TC3 Ethernet IP主从通讯.zip

ABB机器人与倍福TC3 Ethernet IP主从通讯

Vivado FFT IP核避坑指南:从Matlab数据生成到FPGA验证的完整流程

本文详细解析了Vivado FFT IP核从Matlab数据生成到FPGA验证的完整流程,重点解决跨平台数据一致性、IP核配置陷阱和验证方法论等核心问题。通过实战案例和避坑指南,帮助工程师高效实现FFT运算的硬件验证,确保结果与Matlab的误差控制在0.3%以内。

weixin_42543046的博客 392

2019年上交电院计算机直博保研经历

本人选报的是上交六月一日在武汉举办的直博选拔,五月三十一日到达酒店,地点在武汉大学旁边(PS:上交是不管住宿、来回车票的,~划重点~包括夏令营),入住后当然是紧张的准备英语面试等等内容了,当天我是排在了下午面试,感觉还很好,上午可以多睡一会,最好能够去踩踩点上午,然后下午面试一定要早去,说是一点开始,但是老师十二点半就开始让学生进去了,有一个同学排在第二个,但是当时叫到他时还不到一点,没到,最后据...

LifeMaker的博客 4868

基于YOLOv8的玉米病害监测系统

本研究的主要目标是设计并实现一个基于深度学习的玉米病害识别系统,通过采用YOLOv8算法进行玉米叶片病害的自动化识别。研究首先对玉米病害的种类和特点进行了分析,选择了具有代表性的病害类型,如玉米锈病、灰叶斑病、枯叶病和健康叶片,以构建一个多类别的分类问题。数据集的构建和处理是研究的关键部分,通过数据增强、图像标注等手段确保了数据的多样性和丰富性,从而提高了模型的泛化能力。

yupan__的博客 490

STM32N6低功耗模式详解:从Sleep到VBAT的工程实践

低功耗模式是嵌入式系统能效设计的核心机制,其本质是通过动态调控CPU时钟、外设供电与电压域状态,在唤醒延迟、功能保留与静态电流之间实现最优平衡。基于Arm Cortex-M55内核的STM32N6采用多电压域架构(核心域/保持域/备份域/模拟域),支持Sleep、Stop、Standby及VBAT四级功耗分级,并深度融合DVFS(动态电压频率缩放)与外设时钟门控等关键技术。该设计不仅显著降低待机电流至亚微安级,更保障RTC持续计时、TCM内容可选保留、WKUP快速唤醒等关键能力,广泛应用于电池供电的AIoT

weixin_36369848的博客 238

双目相机标定理论与编程实现

双目相机标定是计算机视觉中的重要任务,通过确定双目相机的内参和外参,可以实现立体视觉的深度感知和三维重建。通过使用OpenCV库提供的函数,我们可以方便地进行双目相机的标定工作。双目相机标定是计算机视觉中的重要任务,用于确定双目相机的内参和外参,以实现立体视觉的深度感知和三维重建。通过上述代码,我们可以获得左右相机的内参矩阵、畸变系数、旋转矩阵和平移矩阵等参数,从而完成双目相机的标定过程。使用双目相机采集一系列左右相机的图像,确保标定板在不同位置和角度下都能被双目相机拍摄到。函数来检测标定板的角点。

ByteKnight的博客 315

【机器学习系列】一文搞懂 零知识机器学习(zkML)

位串行乘法器:实现了Booth编码优化,将乘法分解为移位-加法序列,减少部分积数量50%:模拟脉动阵列的2D网格计算,支持分块(tiling)策略优化内存层次卷积映射:提供直接卷积(行缓冲+滑动窗口)和im2col+GEMM两种硬件映射策略。

VectorShift的博客 143

AI应用架构师实战:半导体器件仿真AI智能体系统搭建

半导体器件仿真(如MOSFET、FinFET等)是芯片设计的核心环节,传统流程依赖专家手动调参、多物理场仿真引擎(如TCAD)耗时(小时级至天级)、经验难以沉淀,导致研发周期长、成本高。如何构建一个AI智能体系统,实现仿真任务的自动化调度、参数智能优化、结果分析与知识沉淀,成为提升半导体研发效率的关键挑战。

移动开发前沿的博客 1215

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: BeckHoff_FB --> FB_SYS_SEQ_CONTROL_SFC_V1
下一篇: BeckHoff <--> 基恩士(CV-X300)三维机械手视觉系统Profinet通讯 & 控制
三阶码叟
博客等级 码龄10年 592粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三阶码叟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值