欢迎光临散文网 会员登陆 & 注册

Unity开发APP与西门子SIMATIC系列PLC连接 第三章

2022-11-30 21:35 作者:万影星梦  | 我要投稿


魔晶自动化机电工程社团原创技术资料


专栏分类

工业,自动化,电器,软件开发,C# 


各位们好,我是魔晶自动化机电工程社团的团长 万影 星梦

这次咕咕咕的有亿点点久了,我承认我这次更新的速度非常的慢,很抱歉,我来晚了。

那么直接步入正题

这章是这个文集的最后一章


あ 正文

あ - 本章标题

利用Unity的预制件功能实现批量数据读取监视

あ - 内容

01>前文

如下图所示,这个TIA Protal工程中有本期预制的数据块

和一个预制的Unity工程(其中的软件名称为MJ C R,开发到后期可能会更名)

02>主要部分

如下图所示,我们这一章关键是讲预制件的制作

首先在Unity的项目下创建一个文件夹

如下图,这个名为A3的文件夹作为预制件的放置文件夹


如果想让预制件适配场景,就需要在场景下创建


图中是已经创建好了的游戏对象并假设它已经加了一些控件和必要的代码,但它现在还不是预制件,我们需要将它制成预制件,只需在层级拖动游戏对象到项目的文件夹即可

其实这种批量读取是靠Unity中制作好的预制件不断复制克隆而来的,代码基本没啥难度,这是目前我整出来最省事的方法

这是Unity项目里面其中一个预制件的代码,功能是读取变量并且带单位(写的时候可以参考一下这个代码):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using S7.Net;

public class Console03 : MonoBehaviour
{
	public enum 数据类型表
	{
		Bool,
		Int,
		DInt,
		Word,
		Dword,
		Real
	};
	public 数据类型表 数据类型;
	public string 单位;
	public string 数据地址;
	public string 变量名称;
	public Plc PLC;
	public Text T0;
	public Text T1;

	void Update()
	{
		PLC = GameObject.Find("Canvas").gameObject.GetComponent<PLCControl>().EPLC;
		T0.text = 变量名称;

		if (PLC.IsConnected == true)
		{
			if (数据类型 == 数据类型表.Bool)
			{
				bool A1 = (bool)PLC.Read(数据地址);
				T1.text = A1.ToString();
			}
			if (数据类型 == 数据类型表.Int)
			{
				int A1 = (ushort)PLC.Read(数据地址);
				T1.text = A1.ToString() + 单位;
			}
			if (数据类型 == 数据类型表.DInt)
			{
				var A1 = (uint)PLC.Read(数据地址);
				T1.text = A1.ToString() + 单位;
			}
			if (数据类型 == 数据类型表.Word)
			{
				var A1 = (ushort)PLC.Read(数据地址);
				T1.text = A1.ToString() + 单位;
			}
			if (数据类型 == 数据类型表.Dword)
			{
				var A1 = (uint)PLC.Read(数据地址);
				T1.text = A1.ToString() + 单位;
			}
			if (数据类型 == 数据类型表.Real)
			{
				var A1 = ((uint)PLC.Read(数据地址)).ConvertToFloat();
				T1.text = A1.ToString() + 单位;
			}
		}
	}
}

结果如下

03>演示

将预制件拖入场景后赋予相关的代码变量值

这是一个带单位数据监视的预制件,它已经放置在场景中并且代码已经赋值

数据类型是Int,指向的数据地址是DB1.DBW4.0 <数据块:DB1 地址:4.0 地址类型:DBW>

地址对应的TIA Protal项目中的数据块数据

接下来启动TIA Protal的PLC仿真并启动NET TO PLCSim,设置参照第二章

然后启动unity的项目并连接PLC:

Unity预览

实际运行

到此,PLC的测试连接和数据的读写就完成了


后记


        工业上位机控制系统有很多的实现方式,例如Winform项目。本文集只是个关于S7.Net这款开源库的入门方式。在这其中,Unity也只是一个为了将工业HMI功能移植到手机运行的一种方式。

        Unity这款3D引擎理论上适用于很多行业,例如游戏、人工智能、3D场景模拟,目前在游戏行业使用较多,网上关于这款引擎的教程也很多。这里不多赘述,感兴趣的可以去自主学习

        本文集如有任何技术上的问题,欢迎广大看官指出,本社团会核实后进行修改


本文集到此结束

在此致谢来自五湖四海的看官


Thank You For Watching

ありがとうございます


魔晶自动化机电工程社团

万影 星梦


2021~2022


最后,感谢各位能观看我的专栏,你们的支持是UP主最大的动力


End‍‍


2023年8月8日第一次修改

Unity开发APP与西门子SIMATIC系列PLC连接 第三章的评论 (共 条)

分享到微博请遵守国家法律