目录
1、下载仿真软件
1.1、安装PLCSIM Advanced V4.0软件
安装方式:西门子工控中心自行搜索或者百度自行查询,此软件安装过程全英文,一直下一步安装即可。
1.2、WinPcap4.1.3
安装方式:百度自行查询,一直下一步安装即可。
https://www.winpcap.org/install/bin/WinPcap_4_1_3.exe
安装完成后
WIN+R打卡运行弹窗输入CMD单击确定(需要在管理员模式下运行cmd)。
接着输入 net start npf(如果不在管理员模式下输入,会报错,自行尝试)。出现红框内容说明模拟仿真配置完成,可以正常使用了
2、博途软件的前期准备
2.1、修改的几个关键点
2.1.1、保证块支持编译仿真
2.1.2、DB块的设置
不同软件的通讯基本上只有两种地址:绝对寻址和指针。
所以我们要用偏移量来进行通讯
在变量设置完成后编译一下自动出现偏移量
2.1.3、CPU的设置
2.1.3.1、CPU的网口IP地址配置
1、首先是IP地址,后续只要保证虚拟网卡和CPU在同一网段就行
安装完仿真软件会自动出现一个网络,进行配置即可
2.1.3.2、CPU的连接机制
要保证允许外接通讯
2.2、PLCSIM Advanced V4.0仿真软件配置方法
有关方法可自行百度
Instance name:PLC名称,必须输入
IP address[X1]:PLC的IP地址,必须输入
Subnet mask:子网掩码,必须输入
Default gateway:默认网关,可选
PLC family:PLC系列,根据需要选择
3、C#程序准备
3.1、程序包准备
项目中添加一个NuGet包
3.2、简易修改变量的程序编写
public static void p()
{
//rack:PLC机架号
//slot:plc插槽号
Plc plc = new Plc(CpuType.S71500, "192.168.2.100",0,1);
plc.Open();
if (plc.IsConnected)
{
//MessageBox.Show("连接成功");
// plc.Write("M0.0", false);
/*
方法:public object Read(string variable)
入参:读取数据地址
出参:Object类型数据,可强制类型转换
*/
//plc.Write("DB1.DBX0.0", false);
var db1Bool1 = plc.Read("DB1.DBX0.0");
Console.WriteLine("启动:" + db1Bool1);
bool db1Bool2 = (bool)plc.Read("DB1.DBX0.1");
Console.WriteLine("停止:" + db1Bool2);
int IntVariable = (ushort)plc.Read("DB1.DBW2.0");
Console.WriteLine("状态:" + IntVariable);
float RealVariable = ((uint)plc.Read("DB1.DBD4.0")).ConvertToFloat();
Console.WriteLine("电量:" + RealVariable);
var dIntVariable = (uint)plc.Read("DB1.DBD8.0");
Console.WriteLine("Dint: " + dIntVariable);
var dWordVariable = (uint)plc.Read("DB1.DBD12.0");
Console.WriteLine("Dword: " + Convert.ToString(dWordVariable, 16));
var wordVariable = (ushort)plc.Read("DB1.DBW16.0");
Console.WriteLine("Word: " + Convert.ToString(wordVariable, 16));
MessageBox.Show("ss");
}
//write
if (plc.IsConnected)
{
plc.Write("DB1.DBX18.0", true);
plc.Write("DB1.DBX18.1", true);
plc.Write("DB1.DBW20.0", Convert.ToInt16(123));
plc.Write("DB1.DBD22.0", Convert.ToSingle(11.111));
plc.Write("DB1.DBD26.0", 123);
plc.Write("DB1.DBD30.0", Convert.ToUInt32(22));
plc.Write("DB1.DBW34.0", Convert.ToUInt16(33));
}
Console.ReadLine();
plc.Close();//关闭连接
}