使用OPC DA接口将robotdtudio与西门子sim进行仿真连接

使用OPC DA接口将robotdtudio与西门子sim进行仿真连接

简介

使用软件

  • 博途TIA V16

  • RobotStudio 6.01

  • ABB IRC5 OPC Configuration

  • NetToPLCsim

使用组件

  • S7.NET
  • OPCDAAUTO.dll

操作流程

请添加图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NOmDqyDj-1627527632236)(image/1.png)]

设计思路

  • 1、配置相应的读取参数
  • 2、opc订阅item点位数据,点位的值发生跳变后,通过datachange回调函数反馈至C#通讯助手
  • 3、回调函数的数据处理后,通过s7协议写入至plc
  • 4、设置一个time定时器,定时器每隔一秒触发,读取plc数据并写入opc中

opc 配置

robotstudio

1、安装 irc5opcserver 软件
2、使用robotstudio 新建项目,选项添加 pc-interface,添加工程
3、创建工程添加数据,这里需要注意
重点、重点、重点:
robotstudio 软件添加数据,信号输入输出可以通过opc读取到数据,但是进行写入操作时,只有输出信号可以做数据写入,输入信号不可以做数据写入,同样,程序中的数据定义要添加 PERS 的关键字,如下:

MODULE MainModule
    PERS num i := 4;
    PERS num i1 := 4;
    PERS string s := "dd";
	PROC main()

机械手也必须在自动模式下才可以进行数据写入。
4、打开ABB IRC5 OPC Configuration软件,点击红色机械手图标,scan查找现在有的客户端,添加,即可将仿真环境开放opc接口,

软件配置,dll文件引用

c#助手需要使用OPCDAAUTO.dll这个动态链接库,64位平台需要进行一步注册的操作,即将dll文件复制到system\wow64文件夹下,用管理员权限运行cmd,执行regsvr32 opcdaauto.dll 即可。具体详细流程百度。
运行c#助手,先进行plc参数配置,然后开始数据读取。
测试环境是只进行了mw数据的通讯测试,博途软件设置的数据类型是有符号的10进制,可以进行正常的数据读写。

博途配置

创建plc工程, 创建数据块和测试数据地址,启动仿真环境,用管理员权限打开nettoplcsim软件,add添加,network填写自己的ip地址,我是用的127.0.0.1,plcsim点击后面的两个点,打开识别到的模拟环境的ip,直到最下方提示 port 102 ok,点击start server开始服务,将数据进行端口映射。

软件使用

plc读取数据配置

在如下页面中,左侧的opc展示页面和右侧的plc数据读取页面数据是一一对应的关系,添加数据的时候要注意数据类型,目前测试的都是整数型数据,虽然plc可以进行浮点数数据的配置即读取,但还未和opc做浮点数的对接。
请添加图片描述

点击plc配置,打开如下页面,进行plc点位的添加,
请添加图片描述

plc点位添加完,点击设置完成,再点击开始读取,即可让助手读取plc数据。

opc数据读取配置

请添加图片描述

右侧配置opc参数,输入框添加自己电脑的设备名称, 在我的电脑右击属性查看,然后点击选择服务,会遍历自己电脑中的所有opc服务器并显示在下拉框中,选择opc服务器,在点击opc配置,添加相应的opc点位
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BunJgTXI-1627527632242)(image/4.png)]
在打开的窗口,选择相应的点位,添加至右侧,最后确定即可,就可以完成opc数据读取的配置

注意事项::::

测试结果显示,如果对abb软件进行一些操作的时候,需要停止opc的数据写入,所以在页面的右侧添加了一个按钮,这个按钮用来单纯的控制opc的写入,在需要对abb程序,参数进行修改的时候,关闭opc写入就可以对abb进行操作了。
具体的仿真逻辑是可以先创建两个数字输入信号,只创建信号名称和类型,绑定系统输入io,一个是start at main 一个是电机上电,开始流程,有示教器进行仿真,对这两个信号进行强制一操作,即可以完成自动模式下abb机械手主程序运行的操作,下一步对程序数据操作即可。
测试程序::

MODULE MainModule
    PERS num i := 4;
    PERS num i1 := 4;
    PERS string s := "dd";
	PROC main()
        i1 := 99;
		WHILE TRUE DO
            IF i=2 THEN
                i1 := 2;
            ELSEIF i = 4 THEN
                i1 := 4;
            ELSEIF i = 6 THEN
                i1 := 6;
            ENDIF
        ENDWHILE
	ENDPROC
ENDMODULE

工程下载
https://download.csdn.net/download/qq_41666269/20619015

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值