首页 > 其他分享 >Unity开发日常记录_6_PC工业仿真项目 使用S7.Net 和 博图TIA Portal V16 和 S7-PLCSIM Advanced V3.0 和 Robot Studio 进行工业仿真

Unity开发日常记录_6_PC工业仿真项目 使用S7.Net 和 博图TIA Portal V16 和 S7-PLCSIM Advanced V3.0 和 Robot Studio 进行工业仿真

时间:2024-12-07 14:58:11浏览次数:4  
标签:仿真 ABB V3.0 S7 DLL Unity PLC 服务器

Unity开发日常记录_6_工业仿真项目 使用S7.Net 和 博图TIA Portal V16 和 S7-PLCSIM Advanced V3.0 和 Robot Studio 进行工业仿真:

本文中开发的几个项目体量比较小,也没有做很多优化,单纯是记录整个项目遇到的问题 和 对应的解决方案,以及注意事项,为大家做工业仿真项目提供一个思路,有更好的方案和优化欢迎讨论,对于说的不对的地方也欢迎指正,共同学习。

技术路线

1.博图TIA Portal V16 与 Unity通讯,

S7-1200可以选择S7-PLCSIM V16 进行数据中转
S7-1500可以选择S7-PLCSIM Advanced V3.0进行数据中转

实控虚(真实机械台数据 控制 虚拟仿真台):
可以单独用C# 写个 负责PLC和ABB数据处理的服务器 + Unity 应用 组合实现
服务器 + Unity :真实机械台与服务器用网线通信,服务器与Unity之间可以使用 TCP/UDP/Http 通讯

虚控虚(PLC程序数据 控制 虚拟仿真台):
可以单独用QT 写个 负责ABB数据处理的服务器 + Unity 应用 组合实现,也可以集成于Unity应用来实现所有功能。
QT+Unity:ABB与QT服务器数据通过ABB的DLL调用, QT服务器与Unity 通信使用Http方式 ,PLC与Unity 不需要中转 直接使用S7.net 直接连接

为什么无论哪种方案都需要单独的一个服务器而不能整合成一个Unity应用?因为与ABB通信的主要DLL之一的System.Diagnostics.EventLog.dll可能依赖于Windows事件日志系统,这在Unity的跨平台环境中可能无法正确运行。其实集成于一个Unity应用中也有曲线方案,就是将单独写的服务器放在工程项目中,然后在Unity中通过Process.Start(ProcessStartInfo) 启动一个外部服务器新进程,看起来就像是集成一体了。或者如果可能,可以尝试将相关功能从这些DLL中提取并编译为Unity兼容的DLL。
在这里插入图片描述


总结一下

在Unity中进行PLC和ABB通信 一种可行的方案是 使用S7.Net + ABB官方的DLL
S7.Net 可以在Unity中作为插件被调用
ABB的DLL 需要写成单独的服务器 然后跟Unity进行通信

注意事项

1.S7-1200可以选择S7-PLCSIM V16 进行数据中转,但是同时 进行 读写操作的时候 数据通讯延迟大
2.丝滑的方案就是采用S7-1500选择S7-PLCSIM Advanced V3.0进行数据中转,但是限制在与Advanced 不支持S7-1200
3.Unity实现物理效果 有很多方案Articulation Body 是一种 ,需要注意一下支持的Unity的版本
在这里插入图片描述
4.注意一下PLC 和 ABB数据 通信的频率,非常要注重的地方在于 读写数据时候什么时候要用异步,否则会造成严重的通讯卡顿延迟
5.Unity拿到了PLC或者ABB的数据 那么在3D物体身上的表现上 要注意 物体动画的实现,要知道实际的机械台很多的PLC信号间隔特别小约等于0,等通过网络传输到虚拟的台子上,会有零点几秒的延迟,这些延迟会造成很多问题,所以这个地方需要PLC 程序 ABB程序 Unity程序 三方协同。要么就解决通讯延迟的问题。

资源

S7.Net插件 和 ABB 的 DLL 可以进我主页搜索下载

后话

先写这么多,后期考虑将做的这些Unity工业仿真项目 慢慢形成的简易框架整理一下 然后发出来,其实也没有什么框架,就是将各种文件读取功能、各种监听、多个PLC管理和状态回调等 这些功能提出来方便后面新项目复用罢了。

标签:仿真,ABB,V3.0,S7,DLL,Unity,PLC,服务器
From: https://blog.csdn.net/qq_42692089/article/details/144214691

相关文章

  • Centos7安装Mysql8.0和Mysql5.7
    Mysql5.7安装rpm-Uvhhttp://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm安装yum-yinstallmysql-community-server--nogpgcheck一键安装5.7#更换完了网易云的网络元快多了systemctlstatusmysqld 查看mysql服务状态systemctlstartmysqld ......
  • 基于Multisim八路彩灯控制电路的设计(含仿真和报告)
    【全套资料.zip】八路彩灯控制电路设计Multisim仿真设计数字电子技术文章目录功能一、Multisim仿真源文件资料下载【Multisim仿真+报告+讲解视频.zip】功能(1)从左向右依次点亮,再从左向右依次熄灭。(2)从右向左依次点亮,再从右向左依次熄灭。(3)所有灯全亮,所有灯全灭。......
  • 基于方块编码的图像压缩matlab仿真,带GUI界面
    1.算法运行效果图预览(完整程序运行后无水印) 下图是随着方块大小的变化,图像的压缩率以及对应的图像质量指标PSNR的变化趋势曲线。 2.算法运行软件版本matlab2022a 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频)figure;subplot(121);plot(sets,tr......
  • 基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
    1.课题概述      基于WOA鲸鱼优化的购售电收益与风险评估算法.WOA优化算法是一种基于鲸鱼捕食过程的仿生优化算法,其包括鲸鱼行走觅食、鲸鱼包围以及鲸鱼螺旋捕食三个步骤。在WOA优化算法中,将售电公司的购售电收益风险计算公式作为WOA优化算法的目标函数,然后通过WOA的迭代......
  • centos7静默安装oracle11g
    centos7静默安装oracle11g一.centos7安装oracle1.查看Swap分区空间(不能小于2G)grepSwapTotal/proc/meminfo2.修改CentOS系统标识(由于Oracle默认不支持CentOS)vim/etc/redhat-release2.1.删除CentOSLinuxrelease7.9.2009(Core)(快捷键dd),改成redhat-7redhat-73.......
  • 虚拟机centos7安装mysql8
    虚拟机centos7安装mysql8.x#删除系统仓库[root@localhost~]#rm-rf/etc/yum.repos.d/*#CentOS7更换阿里云软件仓库[root@localhost~]#wget-O/etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com/repo/Centos-7.repo#下载mysql源安装包[root@localhos......
  • 虚拟机centos7安装mysql8
    虚拟机centos7安装mysql8.x#删除系统仓库[root@localhost~]#rm-rf/etc/yum.repos.d/*#CentOS7更换阿里云软件仓库[root@localhost~]#wget-O/etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com/repo/Centos-7.repo#下载mysql源安装包[root@localhos......
  • 二值化、压缩感知、自适应采样策略傅里叶单像素成像仿真
    傅里叶单像素成像仿真......
  • Profinet转EtherNet/IP网关是如何解决西门子S7-1500PLC与AB PLC的通讯问题的
    一、案例背景在一个工业现场,一端是AB的PLC,IP地址192.168.1.20;另一端西门子是S7-1500系列,IP地址192.168.2.248。AB的PLC内有B3、N7、F8三个寄存器文件涉及到通讯,分别对应西门子PLC的M、DB1、DB2三个存储区域。通过捷米特网关的参数设置软件进行配置,配置完成后下载重启,再......
  • centos7 python3.9.10 报错 No module named _ssl
    配置openssltar-zxvfopenssl-1.1.1w.tar.gzcdopenssl-1.1.1w/./config--prefix=/usr/local/openssl--openssldir=/usr/local/opensslmakemakeinstallmv/usr/bin/openssl/usr/bin/openssl_backupln-s/usr/local/openssl/bin/openssl/usr/bin/opensslln-s/......