1.最近使用plc和上位机进行通讯的时候,上位机工程师有点懵逼,为了项目的正常推进,只能让我这个plc工程师写个demo,使劲的打打他的脸啊 ,上位机使用的是c#,那我就用动态库给他写一个demo吧
废话不说直接上程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using S7.Net;
namespace s7nent和西门子1200通讯
{
class Program
{
static void Main(string\[\] args)
{
ErrorCode errcode;
Plc plc = new Plc(CpuType.S71200,"192.168.1.10",0,0);
plc.ReadTimeout = 1500;
plc.WriteTimeout = 1500;
try
{
plc.Open();
Console.WriteLine("plc连接成功");
//判定plc是否连接成功
if (plc.IsConnected)
{
Task.Run(()=> {
#region 1.对plc的bool量进行读写
//for (int i = 0; i < 10; i++)
//{
// int a = i / 8;
// int b = i % 8;
// string Sname = "DB1.DBX1"+a.ToString()+"." + b.ToString();
// plc.Write(Sname, 1);
// Console.WriteLine(Sname + ":写入1成功!写入的数据为:" + plc.Read(Sname));
// Thread.Sleep(2000);
//}
//for (int i = 9; i >= 0; i--)
//{
// int a = i / 8;
// int b = i % 8;
// string Sname = "DB1.DBX1" + a.ToString() + "." + b.ToString();
// plc.Write(Sname,0);
// Console.WriteLine(Sname + ":写入0成功!写入的数据为:" + plc.Read(Sname));
// Thread.Sleep(2000);
//}
#endregion
#region 2.对字节进行有效读写
//for (int i = 0; i < 10; i++)
//{
// string Sname = "DB1.DBB" + i.ToString();
// plc.Write(Sname, Convert.ToByte(i*10));
// Console.WriteLine(Sname+":写入1成功!写入的数据为:"+plc.Read(Sname));
// Thread.Sleep(2000);
//}
//for (int i = 9; i >= 0; i--)
//{
// string Sname = "DB1.DBB" + i.ToString();
// plc.Write(Sname, Convert.ToByte(0));
// Console.WriteLine(Sname + ":写入0成功!写入的数据为:" + plc.Read(Sname));
// Thread.Sleep(2000);
//}
#endregion
#region 3.对字进行有效的读写
//for (int i = 0; i < 10; i++)
//{
// string Sname = "DB1.DBW" + (12+i*2).ToString();
// plc.Write(Sname, Convert.ToUInt16(i * 100+1));
// Console.WriteLine(Sname + ":写入1成功!写入的数据为:" + plc.Read(Sname));
// Thread.Sleep(2000);
//}
//for (int i = 9; i >= 0; i--)
//{
// string Sname = "DB1.DBW" + (12+i*2).ToString();
// plc.Write(Sname, Convert.ToUInt16(0));
// Console.WriteLine(Sname + ":写入0成功!写入的数据为:" + plc.Read(Sname));
// Thread.Sleep(2000);
//}
#endregion
#region 4.对浮点数进行有效的读写
//for (int i = 0; i < 10; i++)
//{
// string Sname = "DB1.DBD" + (32 + i * 4).ToString();
// plc.Write(Sname, Convert.ToSingle(-i * 100 +5.53996));
// Console.WriteLine(Sname + ":写入成功!写入的数据为:" +((uint)plc.Read(Sname)).ConvertToFloat());
// Thread.Sleep(2000);
//}
//for (int i = 9; i >= 0; i--)
//{
// string Sname = "DB1.DBD" + (32 + i * 4).ToString();
// plc.Write(Sname, Convert.ToSingle(0));
// Console.WriteLine(Sname + ":写入0成功!写入的数据为:" + ((uint)plc.Read(Sname)).ConvertToFloat());
// Thread.Sleep(2000);
//}
#endregion
#region 5.对双字进行有效的读写
//for (int i = 0; i < 20; i++)
//{
// string Sname = "DB1.DBD" + (72 + i * 4).ToString();
// plc.Write(Sname, Convert.ToUInt32(Math.Pow(2,i)));
// Console.WriteLine(Sname + ":写入成功!写入的数据为:" +plc.Read(Sname));
// Thread.Sleep(2000);
//}
//for (int i =19; i >= 0; i--)
//{
// string Sname = "DB1.DBD" + (72 + i * 4).ToString();
// plc.Write(Sname, Convert.ToUInt32(0));
// Console.WriteLine(Sname + ":写入0成功!写入的数据为:" + plc.Read(Sname));
// Thread.Sleep(2000);
//}
#endregion
#region 6.对short类型进行读写
//for (int i = 0; i < 20; i++)
//{
// string Sname = "DB1.DBW" + (152 + i * 2).ToString();
// plc.Write(Sname, Convert.ToInt16(100-i*100));
// Console.WriteLine(Sname + ":写入成功!写入的数据为:" + ((ushort)plc.Read(Sname)).ConvertToShort());
// Thread.Sleep(2000);
//}
//for (int i = 19; i >= 0; i--)
//{
// string Sname = "DB1.DBW" + (152 + i * 2).ToString();
// plc.Write(Sname, Convert.ToInt16(0));
// Console.WriteLine(Sname + ":写入0成功!写入的数据为:" + plc.Read(Sname));
// Thread.Sleep(2000);
//}
#endregion
#region 7.对int类型进行读写
for (int i = 0; i < 20; i++)
{
string Sname = "DB1.DBW" + (192 + i * 4).ToString();
plc.Write(Sname, Convert.ToInt32(100 - i * 100));
Console.WriteLine(Sname + ":写入成功!写入的数据为:" + ((ushort)plc.Read(Sname)));
Thread.Sleep(2000);
}
for (int i = 19; i >= 0; i--)
{
string Sname = "DB1.DBW" + (192 + i * 4).ToString();
plc.Write(Sname, Convert.ToInt32(0));
Console.WriteLine(Sname + ":写入0成功!写入的数据为:" + plc.Read(Sname));
Thread.Sleep(2000);
}
#endregion
Thread.Sleep(100);
Console.WriteLine("BYTE读写完毕");
});
}
}
catch(Exception ex)
{
Console.WriteLine("plc连接失败!"+ex.ToString());
}
Console.ReadKey();
}
}
}
这样就直接搞定,再有问题那就去枪毙哦