公司新聞
一個連接西門子plc設備的.net庫,搞自動化的有福了!
發布時間: 2024-03-16 23:16 更新時間: 2024-12-02 08:00
(一)S7Net動態庫說明
目前該動態庫支持的西門子PLC類型有S7-200,S7-300,S7-400,S7-1200和S7-1500,基本涵蓋了西門子所有的PLC產品。該庫可以直接讀寫PLC中的全局DB塊,作為通訊的接口。下面對需要的一些函數以及數據類型做簡單說明。構造函數:cpu 為枚舉類型,代表PLC類型。ip 為PLC地址,需要和PLC組態的地址一致,同時,和通訊的PC IP地址應在同一局域網段。rack 為導軌號,slot 為插槽號,均可在博途硬件組態處獲得。如下圖所示,ip=“192.168.0.5”。如下圖所示,rack為0,slot為1。
public enum CpuType
{
S7200 = 0,
S7300 = 10,
S7400 = 20,
S71200 = 30,
S71500 = 40
}
1
2
3
4
5
6
7
8
9
獲取是否連接成功:
public bool IsConnected { get; }1
連接PLC:
public void Open();public Task OpenAsync();
1
2
按位寫操作:參數db代表訪問的DB塊編號,如下圖所示UISendInt編號為3,UIReadInt編號為4。
startByteAdr是在數據塊內以字節為單位的起始地址,可以傳入0。bitAdr 為需要操作的位的偏移地址(以startByteAdr為基準),value 為寫入的值。dataType為枚舉類型,我們操作的是數據塊,傳入DataBlock。
public void WriteBit(DataType dataType, int db, int startByteAdr, int bitAdr, bool value);
public enum DataType
{
Counter = 28,
Timer = 29,
Input = 129,
Output = 130,
Memory = 131,
DataBlock = 132
}
1
2
3
4
5
6
7
8
9
10
1
1
(二)PLC設置
實現外部程序可以訪問操作DB塊,需要對PLC部分做一些設置。首先對于要讀取或者訪問的DB塊,要將優化的塊訪問取消,默認為勾選的,選中塊右擊選擇屬性。同時還要在硬件組態中,設置防護與安全中的連接機制。將“允許來自遠程對象的PUT/GET訪問”勾選。如下圖:
(三)C#程序
在C#上位機軟件中,對通訊類庫的函數做一個簡單的包裝,以方便我們使用。首先新建一個類S7,在項目中需要引用S7.NET,并在該類中包含命名空間。using S7.Net;1
public S7(S7DataType.CpuType cpuType,string ip,Int16 rack,Int16 slot)
{
plc = new Plc((CpuType)cpuType,ip, rack,slot);
}
~S7()
{
this.plc.Close();
}
1
2
3
4
5
6
7
8
9
10
{
this.plc.OpenAsync();
}
public void Close()
{
this.plc.Close();
}
1
2
3
4
5
6
7
8
9
{
try
{
lock (this)
{
return this.plc.ReadBytes(DataType.DataBlock, db, startByteAdr, count);
}
}
catch
{
return new byte[2];
}
}
public void PlcWriteBytes(int db, byte[] value, int startByteAdr = 0)
{
lock (this)
{
this.plc.WriteBytes(DataType.DataBlock, db, startByteAdr, value);
}
}
public void PlcWriteBit(int db, int bitAdr, bool value, S7DataType.DataType dataType =
S7DataType.DataType.DataBlock)
{
int temp1 = bitAdr / 8;
int temp2 = bitAdr % 8;
lock (this)
{
this.plc.WriteBit((DataType)dataType, db, temp1, temp2, value);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
byte[] temp = new byte[2];
temp[0] =(byte) (data >> 8);
temp[1] = (byte)(data);
return temp;
}
public static Int16 BytesToInt16(byte[] bytes)
{
Int16 temp;
temp =(Int16)( bytes[0] << 8 | bytes[1]);
return temp;
}
(四)S7Net動態庫下載
https://download.csdn.net/download/m0_37763193/1172173728:56
其他新聞
- S7-1200/1500PLC讀寫微軟SQL數據庫(V3.0) 2024-12-02
- 西門子觸摸屏與RS485接口的通信實例! 2024-12-02
- 適用于工業機器人的西門子伺服系統——SINAMICS V90 2024-12-02
- SINAMICS V90在木工旋切機上的應用 2024-12-02
- 【14R254】西門子變頻器V90 簡介 2024-12-02
- 為什么PLC程序中不要用M和T,為什么要需要PLC編程標準化? 2024-12-02
- 工控網絡安全實驗|PLC設備拒絕服務(DoS)數據與分析 2024-12-02
- 西門子2024財年迎來強勁開局 2024-12-02
- 世界工業自動化50強,西門子一如既往的是老大,國內暫時還沒有 2024-12-02
- 工控安全廠商看工控丨西門子工業自動化 2024-12-02
- S7-200 SMART基本控制庫之IO調整功能 2024-12-02
- S7-1200/1500 連接 S200 PN實現 EPOS 基本定位控制(使用FB38051) 2024-12-02
產品分類
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684