本文参考链接:西门子PLC丨PROFINET通讯仿真(虚拟通讯)做了一些更详细的优化,本文使用的类库并非原作者使用的类库。
首先,昨天项目已经创建好了,这边也加了一个InputField和一个Button,可以实现简单的读取,ok开始。
放入准备好的通讯类库;

新建一个博途的项目,本次测试使用博途V15,测试环境为虚拟机,Unity运行在本地计算机, 建立博途项目流程如下:
新建项目,右键项目-属性-保护-对勾,如图:


不得不说的是,仿真中加密的FB块是无法下载的哦~
添加CPU,本次使用S7-1200 系列,设置CPU安全等级,允许PUT/GET通信,300/400应该是没有的,可以正常用。

写程序,写完程序后重点来咯~~~以下内容,尤其是仿真和开工具的顺序很重要。
首先关闭虚拟机防火墙,都会吧。。。

虚拟机设置网络为桥接,选择好本机用的网卡。

设置CPU的IP,如下图,192.168.10.25:

设置虚拟机网卡IP,最好手动,要不然麻烦。我设置192.168.10.10(必须全部同网段)

然后管理员身份运行NetTOPLCSIM;(仿真之前运行)

上图提示获取端口,点击是即可,如果后期出现问题,也可以点击tools进行获取。 下图获取成功后点击OK

然后点击PLCSIM,点击确定

然后出现PLCSIM,直接搜索下载即可。

可以看到我们仿真已经成功了

然后点击nettoplcsim的Add,添加一个服务;

不要自己手动输入,要检测出来的。

注意观察下面的槽号要求;

设置完成点击OK,点击启动服务;


服务启动之后,我们进入客户端层面,Unity3D简单写了一个读取的脚本,代码如下(注释写的很清楚了):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using PLC通讯库.Siemens;//引入类库
using Siemens;//引入类库
using System.Threading;//新开线程不影响主线程,注意,该线程不适用于Unitty中组件的操作。
using UnityEngine.UI;//引入UI可以操作UI,不多说都懂
public class OP : MonoBehaviour
{
public InputField floattext;
Thread CONPLCNOW;//定义PLC连接线程,读取数据量不大,就不新建线程了
public SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200);//实例化类库
// Start is called before the first frame update
void Start()
{
//不加按钮了,直接运行就实例化然后连接
CONPLCNOW = new Thread(CON);//定义线程方法
CONPLCNOW.Start();//执行线程
}
private void CON(){//这里是连接PLC用的方法
siemensS7Net.IpAddress = "192.168.10.10";//定义所要连接PLC
siemensS7Net.Port = 102;//定义端口号S7NET通用102
siemensS7Net.ConnectServer();//连接PLC
if (siemensS7Net.ConnectServer().IsSuccess)//判断打印,不说了
{
print("连接成功");
}
else {
print(siemensS7Net.ConnectServer().ToMessageShowString());
}
}
public void readfloat()//定义读取按钮点击的方法
{
floattext.text = siemensS7Net.ReadFloat(floattext.text).Content.ToString();//读取并赋值,相信大家都能看懂。
}
// Update is called once per frame
private void OnDestroy()
{
CONPLCNOW.Abort();//记得关闭线程哦
}
}
可以看到图中PLC的IP是10而不是25,因为信息是通过转发的。
在客户端添加一个IP,如下图,我客户端IP为192.168.10.200

将button的点击事件绑定readfloat(),将定义的Iputfield挂到脚本上,以下是Unity基本操作,可以略过。


运行一下看看~

OK!已经连接成功啦,那我们尝试一下读取数据(上动图!)

欧克!这篇文章里,写了太多,要类库的可以私信但是不知道啥时候能回复。
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里编辑 3.解析依赖到项目中
Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u
之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有