你知道西門子PLC支持多少個連接嗎?
很多人都知道西門子PLC有連接數(shù)的限制,下圖是S7-1200的連接資源:
說實話,我是看得不太明白的,于是,有了下面的測試,測試基于xktComm庫,我計劃按順序開啟N個連接,然后每個連接在連接成功后再進(jìn)行一次數(shù)據(jù)讀取,確認(rèn)通信正常,觀察下N的限制是多少?
于是有了下面的代碼:
Console.WriteLine("多連接通信測試開始");
List<SiemensS7> SiemensList = new List<SiemensS7>();
for (int j = 1; j <= 40; j++)
{
Thread.Sleep(500);
Console.WriteLine($"第{j}次連接測試" + "\r");
SiemensS7 objS7 = new SiemensS7();
if (objS7.Connect(IpAddress, CPU_Type.S71200, 0, 0))
{
Console.WriteLine($"第{j}次連接成功");
object value = objS7.Read("MD0", xktComm.Common.VarType.DInt);
if (value != null)
{
SiemensList.Add(objS7);
Console.WriteLine($"第{j}次通信測試讀取成功:" + value.ToString());
}
else
{
Console.WriteLine($"第{j}次通信測試讀取失敗");
}
}
else
{
Console.WriteLine($"第{j}次連接失敗");
}
}
while (true)
{
Console.WriteLine("請輸入你要測試的連接索引,輸入100表示退出");
int index = Convert.ToInt32(Console.ReadLine());
if (index != 100)
{
if (SiemensList.Count >= index)
{
object res = SiemensList[index - 1].Read("MD0", xktComm.Common.VarType.DInt);
Console.WriteLine("讀取結(jié)果:" + res.ToString());
}
else
{
continue;
}
}
else
{
break;
}
}
Console.WriteLine("多連接通信測試完成");
為了保證連接始終可用,我增加了一個二次測試,就是將所有的連接都放到一個集合中,后續(xù)可用隨意測試某個連接是否仍然可用。