基于西门子S7-1200FC PLC与松下机器人Profinet通信实现机器人外部自动控制应用

⒈训练主题

通过西门子S7-1200 PLC与松下机器人Profinet通信实现机器人的外部自动化控制,应用中程序的调配采用二进制方式,同时PLC需要采集机器人安全作业原点(Home点),保证机器人安全作业,通过PLC的编程调试和机器人的配置实现上述功能。

⒉软硬件配置

⑴硬件配置

①机器人控制系统:TM1800G3机器人:YA-1VAR81;机器人连接电缆:TSMWU894LM;电缆单元:TSMWU600;200V/380V变压器:TSMTR010HGG;RT轴焊丝盘架(刚用):TSMYU204;校枪尺:AXU01727T;机器人通信装置(Profinet):TSMYU965,产品实物如下图。

②西门子PLC:CPU 1214FC DC/DC/RLY,型号:6ES7 214-1HF40-0XB0。

③按钮:若干。

④调试电脑1台,注意电脑IP地址在同一个网段(IP:192.168.0.***),子网掩码为:255.255.255.0。

⑵软件配置

①博途软件:TIA Portal V15,版本:V15

②松下机器人GSD说明文件:GSDML-V2.3-HMS-ABSPRT-20160826.xml

⒊PLC组态和配置

本应用设置8byte输组态入/输出共计各64位。

⑴加载松下机器人GSD说明文件

点击“选项(N)-管理通用站描述文件(GSD)(D)”,如下图加载松下机器人GSD文件(图示已加载)。

⑵组态西门子PLC(CPU 1214FC)和松下机器人说明文件

在“设备和网络”界面,添加PLC模块(此处添加方法不赘述),将如下图所示将“RT Migration”拖入设备网络视图界面。

拖住PLC端口连接松下机器人通信端口,创建通信连接如下图。

⑶对机器人RT Migration模块分配设备名称

右击RT Migration模块通信区域选择“分配设备名称”,如下图点击“更新列表”,博途通过网络检索机器人并显示相关信息(注意:如果不能分配名称,需先根据后文机器人示教器设置机器人Profinet通信IP地址),点击“分配名称”即完成机器人设备名称分配。

⑷分配机器人I/O地址

双击ABS-PRT(机器人RT Migration模块),如下图在“设备视图”将右侧“模块-InputOutput 0008 bytes”拖入插槽1中,并将“I地址”和“Q地址”均改为“70…77”。

⑸PLC及松下机器人IP地址及设备名称分配

如下图所示为PLC的IP地址和设备名称的分配。

如下图所示为机器人的IP地址和设备名称(机器人示教器不含设备名称分配,由PLC通过IP地址分配)的分配。

⑹编译和下载配置

如下图右击PLC主体(此处为“PLC1_1[CPU 1214FC DC/DC/RLY]”),选择“编译-硬件和软件(仅更改)”进行程序下载前的编译。

再次右击PLC主体(此处为“PLC1_1[CPU 1214FC DC/DC/RLY]”),选择“下载到设备(L)-硬件和软件(仅更改)”进行程序下载。

⒋松下机器人配置

⑴将机器人Profinet通信板卡安装到如下图示位置,并用提供的螺母固定。如下图右侧用导线将状态输入第1个端子“STATUS IN 1”与输出的第1个端子(OUT 1)连接。

⑵首次登录及密码

如下图在顺序菜单选择“设定-扩展设定-用户ID”在弹出“登录”界面,“用户ID”在“浏览”中选择“robot”,“密码”首次使用时为“0000”。

⑶配置Profinet通信IP地址及设置

如下图在菜单栏点击“设定-管理设定-系统-PROFINET-编辑”依次弹出如下界面。

在上图界面,点击“设定”,在弹出界面如下图设置机器人IP地址和子网掩码,注意IP地址和子网掩码需与PLC组态设置的松下机器人IP地址和子网掩码相一致,之后根据提示选择“OK”等直至退出设置。

说明:对Profinet设置界面配置很关键,部分参数说明如下:

①“状态IO”-“分配”选择“结束”,表示将通信的8byte的最后1个字节8位用于“状态IO”此设置可节约机器人通用IO用于控制其它设备如清枪器等;

②“通用I/O分配”“输入”和“输出”分别为“1-56”;

③“伺服ON输出”为“1”,与上图“用导线将状态输入第1个端子“STATUS IN 1”与输出的第1个端子(OUT 1)连接”的位置相一致。

⑷机器人以二进制方式外部自动调用焊接程序配置

如下图在菜单栏点击“设定-基本设定-程序启动方式”依次弹出如下界面并按图示设置。

由于机器人输入/输出前8位被用于“状态输入”和“状态输出”,本文采用“二进制”方式调用焊接程序,通用输入/输出均从第9位开始且分配8位共计可调用255个焊接程序,也即“通用输入009-通用输入 0016”和“通用输出009-通用输出 0016”。分配根据提示进行,同时将“通用输入0017”和“通用输出 0017”分配为“选通”,分配完成显示的“程序选择启动”和对应的“输入端子”如下图所示。

显示的“程序选择应答”和对应的“输出端子”如下图所示。

点击“OK”,之后根据提示退出配置。

⒌PLC与松下机器人联调

根据上文叙述,建立PLC与松下机器人映射的关联地址如下表所示。

西门子S7-1200FC PLC与松下机器人profinet通信地址映射

PLC输入-机器人输出

PLC输出-机器人输入

序号

S7-1200FC地址输入

松下机器人输出

备注

序号

S7-1200FC地址输出

松下机器人输入

备注

1

I70.0

机器人外部IO空出备用(如控制清枪器输入信号等)

1

Q70.0

机器人外部IO空出备用(如控制清枪器控制信号等)

2

I70.1

2

Q70.1

3

I70.2

3

Q70.2

4

I70.3

4

Q70.3

5

I70.4

5

Q70.4

6

I70.5

6

Q70.5

7

I70.6

7

Q70.6

8

I70.7

8

Q70.7

9

I71.0

通用输出9

机器人反馈PLC选择的二进制焊接程序

9

Q71.0

通用输入9

PLC(QB71)控制机器人以二进制方式调用焊接程序

10

I71.1

通用输出10

10

Q71.1

通用输入10

11

I71.2

通用输出11

11

Q71.2

通用输入11

12

I71.3

通用输出12

12

Q71.3

通用输入12

13

I71.4

通用输出13

13

Q71.4

通用输入13

14

I71.5

通用输出14

14

Q71.5

通用输入14

15

I71.6

通用输出15

15

Q71.6

通用输入15

16

I71.7

通用输出16

16

Q71.7

通用输入16

17

I72.0

通用输出17

选通信号

17

Q72.0

通用输入17

选通信号

18

I72.1

通用输出18

机器人位于HOME点

18

Q72.1

19

I72.2

19

Q72.2

20

I72.3

20

Q72.3

21

I72.4

21

Q72.4

22

I72.5

22

Q72.5

23

I72.6

23

Q72.6

24

I72.7

24

Q72.7

49

I76.0

49

Q76.0

50

I76.1

50

Q76.1

51

I76.2

51

Q76.2

52

I76.3

52

Q76.3

53

I76.4

53

Q76.4

54

I76.5

54

Q76.5

55

I76.6

55

Q76.6

56

I76.7

56

Q76.7

57

I77.0

通用输出001

报警输出

57

Q77.0

通用输入001

外部伺服ON输入

58

I77.1

通用输出002

错误输出

58

Q77.1

通用输入002

运行确认输入

59

I77.2

通用输出003

运行模式输出

59

Q77.2

通用输入003

运行模式输入

60

I77.3

通用输出004

示教模式输出

60

Q77.3

通用输入004

示教模式输入

61

I77.4

通用输出005

预备输出

61

Q77.4

通用输入005

(备用)

62

I77.5

通用输出006

伺服电源ON输出

62

Q77.5

通用输入006

错误解除输入

63

I77.6

通用输出007

启动过程输出

63

Q77.6

通用输入007

启动输入

64

I77.7

通用输出008

停止时输出

64

Q77.7

通用输入008

停止输入

⑴松下机器人采用二进制调用焊接程序实现自动化焊接的控制时序图如下图所示。

 

其中注意:

①程序编号“Prog0ZZZ.prg”的“0ZZZ”为程序号,受机器人“通用输入009-通用输入016”(对应PLC为QB71)信号控制,为避免输入程序号超限,应限制PLC信号QB71的输入范围,要求1≤QB≤256,即可以调用焊接程序范围从“Prog0001.prg”到“Prog0256.prg”。

②除“I72.1/通用输出18/机器人位于HOME点”仅设置输入信号外,其它信号均设置输入和对应输出信号,PLC编程时对于驱动信号可以采集相应的反馈信号进行确认。

③PLC的IB70和QB70空置,对应松下机器人外部接线端子有效,此部分接线端子可用于机器人控制清枪器等设备使用。

④机器人调用焊接程序实现自动化焊接的控制要件有:调用程序号、输入选通、启动输入(启动按钮)、外部伺服ON输入、错误解除输入(复位按钮)、停止输入(停止按钮)和急停。其中PLC依次输出“调用程序号”、“输入选通”、“外部伺服ON输入”和“启动输入”,相互间隔200ms,机器人急停除通过软件控制外部伺服ON输入外,还受硬件急停接线控制如下图所示,“外部安全开关输入”端子的“23-24”和“25-26”受硬件接线控制。

⑤“I72.1/通用输出18/机器人位于HOME点”为机器人安全作业原点监测,是机器人外部自动化控制中确保机器人安全的重要信号之一。

⑵PLC编程调试样例(部分)

⑶松下机器人编程

创建机器人焊接程序如下:

⑷联调运行状态显示

如下图是PLC和机器人正常运行的部分状态显示:

下图一:博途组态通信正常;

下图二:自动模式下示教器接通状态;

下图三:自动调用焊接程序运行状态。

附注:设置松下机器人作业原点(Home)方法

⑴在示教器菜单栏“查看-切换显示-显示位置-XYZ表示”把XYZ显示的数字手抄下来如下图所示。

⑵在示教器菜单栏“设定-扩展设定-范围监测-块监测-选择一个CUBE01(或者其它的也可以)”,然后把刚才手抄的XYZ的数字输入下图,注意点1基于上图对应数据加10mm写入,点2基于上图对应数据减10mm写入。此外根据上文叙述,机器人在作业原点时对应“通用输出0018”供PLC采集该信号。

完成上述设置后,点击“OK”并根据提示退出配置,至此机器人“作业原点(Home)”设置完成。

Read more

Web To App (web网页一键打包成android Apk文件)

引言 随着公司业务的快速发展,我们计划推出一款面向移动端用户的应用。然而,当前开发团队主要由 Web 前端工程师组成,缺乏原生 Android 开发经验。在完成 Web 版本的业务系统后,产品团队提出了一个关键需求:希望将现有的 Web 网站“安装”到用户的 Android 手机上,以提供类似原生 App 的使用体验。 面对这一需求,我主动承接了“将 Web 应用打包为 Android APK”的任务,并着手寻找一种对 Web 团队友好、低门槛且可自动化的实现方案。 现状与挑战 传统上,将 Web 内容封装为 Android 应用(通常称为“Web App 套壳”)需要搭建完整的 Android 开发环境。

通义千问Qwen3-VL全面解析:从图像理解到视频分析的AI视觉大模型实战指南!

通义千问Qwen3-VL全面解析:从图像理解到视频分析的AI视觉大模型实战指南!

通义千问VL模型可以根据您传入的图片或视频来进行回答。 应用场景 * 图像问答:描述图像中的内容或者对其进行分类打标,如识别人物、地点、动植物等。 * 数学题目解答:解答图像中的数学问题,适用于中小学、大学以及成人教育阶段。 * 视频理解:分析视频内容,如对具体事件进行定位并获取时间戳,或生成关键时间段的摘要。 * 物体定位:支持二维和三维定位,可用于判断物体方位、视角变化、遮挡关系。 * 文档解析:将图像类的文档(如扫描件/图片PDF)解析为 QwenVL HTML或 Markdown格式,该格式不仅能精准识别文本,还能获取图像、表格等元素的位置信息。 * 视觉编码:可通过图像或视频生成代码,可用于将设计图、网站截图等生成HTML、CSS、JS 代码。 * 文字识别与信息抽取:识别图像中的文字、公式,或者抽取票据、证件、表单中的信息,支持格式化输出文本;Qwen3-VL模型支持的语言已增加至33种。 这一代在各个方面都进行了全面升级:更优秀的文本理解和生成能力、更深入的视觉感知和推理能力、扩展的上下文长度、

前端API设计最佳实践:让你的API更优雅

前端API设计最佳实践:让你的API更优雅 毒舌时刻 API设计?听起来就像是后端工程师的事情,关前端什么事?你以为前端只需要调用API就可以了?别天真了!如果API设计得不好,前端开发会变得非常痛苦。 你以为随便设计个API就能用?别做梦了!我见过太多糟糕的API设计,比如返回的数据结构不一致,错误处理不规范,文档不完整,这些都会让前端开发者崩溃。 为什么你需要这个 1. 提高开发效率:良好的API设计可以减少前端开发的工作量,提高开发效率。 2. 减少错误:规范的API设计可以减少前端开发中的错误,提高代码的可靠性。 3. 改善用户体验:合理的API设计可以提高应用的响应速度,改善用户体验。 4. 便于维护:良好的API设计可以使代码更易于维护,减少后期的维护成本。 5. 促进团队协作:规范的API设计可以促进前后端团队的协作,减少沟通成本。 反面教材 // 这是一个典型的糟糕API设计 // 1. 不一致的命名规范 // 获取用户列表 fetch('/api/getUsers') .then(response

3 分钟上手 Claude Code!API 中转站让 AI 编程效率翻倍

你是否遇到过 Claude Code API 申请繁琐、海外网络卡顿、按量计费不划算的问题?这篇文章不仅会教你 3 分钟上手 Claude Code 核心功能,还会分享一个国内友好的 API 中转站 —— 零配置、低成本,让 AI 编程效率直接翻倍! Claude Code 为什么值得用? * 终端原生交互:支持 shell 命令执行、多文件处理,比 IDE 插件更灵活; * 200K 超长上下文:轻松处理复杂项目,自动生成代码、修复 bug、写文档; * 可组合工作流:支持管道命令和并行任务,批量处理 Lint 问题、生成 PR 更高效。 传统使用痛点:这些坑你一定踩过 * API