最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity開發(fā)APP與西門子SIMATIC系列PLC連接 第二章

2022-01-15 21:53 作者:萬影星夢  | 我要投稿


魔晶自動化機電工程社團原創(chuàng)技術(shù)資料


專欄分類

工業(yè),自動化,電器,軟件開發(fā),C#?


各位們好,我是魔晶自動化機電工程社團的團長 萬影 星夢

首先,非常抱歉,這一章只能以專欄的形式發(fā)布,因為我的電腦似乎不是很給力,14號晚上調(diào)試了半天還是不能正常錄屏,錄屏的時候出現(xiàn)了嚴(yán)重的編碼過載,所以只能以專欄的形式發(fā)布了。


あ 正文

あ - 本章標(biāo)題

S7.Net實際演示與常用變量的讀取和寫入

あ - 內(nèi)容

01.實際演示 (順便把TIA Protal的部分基礎(chǔ)教給大家,如果已經(jīng)會了可以跳過):

首先,要創(chuàng)建一個新的TIA Protal項目 (圖A-0),創(chuàng)建完成后會自動跳轉(zhuǎn)至 <新手上路> 如圖A-1所示:

A-0
C-0

然后,我們要添加一個設(shè)備:

Protal?視圖操作如下:

在 開始>新手上路 點擊 設(shè)備和網(wǎng)絡(luò) - 組態(tài)設(shè)備 (圖C-0),如下圖所示,點擊添加新設(shè)備:

這里以S7-1200 CPU1214C 1AG40演示 (圖H2-0),如圖H2-1所示,如果選擇了 <打開設(shè)備視圖> 在添加設(shè)備后會自動跳轉(zhuǎn)至 Project視圖 并打開該設(shè)備的組態(tài)界面,反之 則不會自動跳轉(zhuǎn)?Project界面:

H2-0
H2-1 Project視圖>PLC_1>設(shè)備組態(tài)

剩下的要在 Project視圖 進行


在設(shè)備組態(tài)下 選中PLC本體,選中后,PLC本體周圍會有藍(lán)色線條,名稱背景色為藍(lán)色,如下圖所示:

HC-0

如圖HC-0所示,點擊屬性,打開分支 <防護與安全> ,出現(xiàn)四個選項,如下圖所示:

FX-0

如圖FX-0所示中,點擊訪問級別和連接機制進行必要的設(shè)置,如下所示:

CPU設(shè)置完成,接下來在Project視圖中 左邊欄<設(shè)備與網(wǎng)絡(luò) - 項目樹>中:

打開分支:PLC_1>程序塊,點擊添加新塊 (圖HNF-0),結(jié)果如圖HNF-1所示:

HNF-0
HNF-1

創(chuàng)建一個數(shù)據(jù)塊,如圖HNF-1所示,點擊左邊的數(shù)據(jù)塊選項然后命名選擇全局DB點擊確定添加數(shù)據(jù)塊

接下來要設(shè)置數(shù)據(jù)塊,如下圖,選中數(shù)據(jù)塊鼠標(biāo)右鍵>屬性:

取消<優(yōu)化的塊訪問>如下圖,點擊確定:

設(shè)置完畢,然后在數(shù)據(jù)塊中添加變量,我在這里添加幾個常用變量并賦值 (記得編譯和保存 編譯和保存在同一欄目):

TIA Protal中的設(shè)置全部完成,接下來是客戶端代碼部分

演示軟件:Microsoft Visual Studio 2019

在這里我們將使用 C#控制臺應(yīng)用(.NET Framework) 工程模板演示 (控制臺和Unity代碼結(jié)構(gòu)相差不大,孬會轉(zhuǎn)彎的都知道寫到Unity要怎么改)

連接部分的代碼如下圖所示 (上一期有詳細(xì)講):

接下來就可以測試連接了

以管理員身份運行NetToPLCsim.exe

彈出警告窗口時點擊是

注意,要底部狀態(tài)欄有 Port 102 OK才能繼續(xù),如下圖紅標(biāo)所示:

在TIA Protal里面啟動仿真,操作如下所示:

Step 1
Step 2
Step 3

在Step 3中紅標(biāo)A0的選擇有無動作和啟動模塊兩個選項,選擇無動作的時候需要手動將PLC置為RUN,操作如下所示:

接下來,在NetToPLCsim.exe中點擊Add,彈出窗口如下所示:

設(shè)置如下:

完成后點擊Start Server,設(shè)置完成。

接下來啟動客戶端即可。

結(jié)果如下圖所示:

建議在后面添加個代碼,否則會自動退出:Console.ReadLine();

如下圖所示(因為后面的內(nèi)容需要,加了個While語句):

02.常用變量的讀取與寫入 (注意要放在最后)

在客戶端添加以下代碼:

if (PLC.Isconnected == true)
{
	while(true)
	{
		Console.Write("請選擇操作> ");
		String E = Console.ReadLine();
		if (E == "Read")
		{
			Console.WriteLine("操作:讀取");
			Console.Write("輸入偏移量> ");
			string A = Console.ReadLine();
			String B = null;
			if (!A.Contains("DBX"))
			{
				Console.Write("輸入數(shù)據(jù)類型> ");
				B = Console.ReadLine();
			}
			if (A.Contains("DBX"))
			{
				bool A1 = (bool)PLC.Read("DB1." + A);
				Console.WriteLine(A1);
			}
			else if (A.Contains("DBW") & (B == "Int"))
			{
				int A2 = (ushort)PLC.Read("DB1." + A);
				Console.WriteLine(A2);
			}
			else if (A.Contains("DBW") & (B == "Word"))
			{
				var A2 = (ushort)PLC.Read("DB1." + A);
				Console.WriteLine(A2);
			}
			else if (A.Contains("DBD") & (B == "Real"))
			{
				var A3 = ((uint)PLC.Read("DB1." + A)).ConvertToFloat();
				Console.WriteLine(A3);
			}
			else if (A.Contains("DBD") & (B == "Dint"))
			{
				var A3 = (uint)PLC.Read("DB1." + A);
				Console.WriteLine(A3);
			}
			else if (A.Contains("DBD") & (B == "DWord"))
			{
				var A3 = (uint)PLC.Read("DB1." + A);
				Console.WriteLine(A3);
			}
			else
			{
				Console.WriteLine("無效的輸入值");
			}
		}
		else if (E == "Write")
		{
			Console.WriteLine("操作:寫入");
			Console.Write("輸入偏移量> ");
			string A = Console.ReadLine();
			String B = null;
			if (!A.Contains("DBX"))
			{
				Console.Write("輸入數(shù)據(jù)類型> ");
				B = Console.ReadLine();
			}
			Console.Write("輸入寫入的值> ");
			if (A.Contains("DBX"))
			{
				bool A1 = bool.Parse(Console.ReadLine());
				PLC.Write("DB1." + A, A1);
			}
			else if (A.Contains("DBW") & (B == "Word") | (B == "Int"))
			{
				var A2 = short.Parse(Console.ReadLine());
				PLC.Write("DB1." + A, A2);
			}
			else if (A.Contains("DBD") & (B == "Real"))
			{
				var A3 = double.Parse(Console.ReadLine());
				PLC.Write("DB1." + A, A3);
			}
			else if (A.Contains("DBD") & (B == "Dint"))
			{
				var A3 = uint.Parse(Console.ReadLine());
				PLC.Write("DB1." + A, A3);
			}
			else if (A.Contains("DBD") & (B == "DWord"))
			{
				var A3 = uint.Parse(Console.ReadLine());
				PLC.Write("DB1." + A, A3);
			}
			else
			{
				Console.WriteLine("無效的輸入值");
			}
		}
		else
		{
			Console.WriteLine("無效的輸入值");
		}
	}
}

運行效果:

到此,PLC的測試連接和數(shù)據(jù)的讀寫就完成了


い下期內(nèi)容預(yù)告

數(shù)據(jù)的批量讀取

最后,感謝各位能觀看我的專欄,你們的支持是UP主最大的動力


End

Unity開發(fā)APP與西門子SIMATIC系列PLC連接 第二章的評論 (共 條)

分享到微博請遵守國家法律
义马市| 米脂县| 滦南县| 曲阳县| 洛南县| 万源市| 七台河市| 武定县| 灵璧县| 河南省| 全南县| 嘉义市| 旬邑县| 当涂县| 开原市| 宽甸| 固安县| 宁陵县| 商丘市| 漳浦县| 扎囊县| 建阳市| 稻城县| 麻江县| 白水县| 商丘市| 教育| 赞皇县| 桑日县| 西乌珠穆沁旗| 临沧市| 边坝县| 房产| 荥阳市| 迁安市| 绥中县| 韶关市| 汶川县| 凌源市| 刚察县| 那曲县|