因为搭建西门子PLC上位机开发环境需要安装四五个软件,为防止病毒因此在虚拟机搭建。虚拟机环境搭建坑还是挺多的,此处对于虚拟机安装不做详细展开,需要自行百度,同时帮助其他像我一样的新手避坑。代码方面因为我也是新手所以仅供参考,当然有意见建议提供我会非常乐意学习。
资源下载
VMWare
虚拟机安装
1. 安装VMWare(此处省略,没啥坑点,自行百度即可)
2. 虚拟机安装Windows操作系统
选择典型推荐、下一步
选择安装程序光盘镜像文件,即下载的Windows安装包iso文件,然后下一步
百度个产品密钥粘贴一下(YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY),然后下一步
自行设置虚拟机名称,并选择存放位置,注意存放位置需要放在空间较大的磁盘,防止后期不够用
设置虚拟机磁盘不小于100G,虚拟磁盘单个多个都可以,如果空间比较小建议单个
点击自定义硬件,修改下参数
调整内存处理器参数,内存不小于8G(似乎是博图的安装要求,记不清了),处理器可以自行设置,此参数后期可调整,不必担心
点击完成执行安装,安装过程与电脑装操作系统一样,无特殊注意事项
网络配置
点击 VMware 菜单栏的 编辑
,选择虚拟网络编辑器
,在弹出的虚拟网络编辑器窗体中,点击更改设置
。选择VMnet8
,取消勾选
的使用本地 DHCP 服务将 IP 地址分配给虚拟机,查看下方的子网 IP
和子网掩码
,点击 NAT设置
。在NAT 设置窗体中,记下网关IP
内容。
配置本机VMNet8,网关与上一步设置保持一致
设置虚拟系统中网卡的TCP/IPv4 属性,默认网关与宿主机VMnet8 网卡一致,IP 地址最后一位自定义设置
如配置后无法联网,大概重启一下就好了。然后关闭防火墙,本机应该就可以ping通虚拟机ip了
西门子环境安装
先安装STEP7 Professional
一路下一步即可
安装WINCC professional
注意安装需要环境.net framework 3.5 SP1 ,其他一路下一步即可
安装S7-PLCSIM
没啥注意点,一直下一步即可,不过总是要求重启,安装包有文档说明怎么处理,如果不在乎重启那无所谓
授权
执行Sim_EKB_Install,如下图执行授权安装即可
PLC设备模拟
创建设备
打开TIA Portal,创建新项目
配置属性
创建数据块
取消优化(设置后可通过偏移量读写对应字段值)
添加字段,随便加几个测试用即可
配置NetToPLCsim
NetToPLCsim我理解有点像端口映射,将宿主IP映射到PLC IP,映射完成就可以通过宿主IP访问PLC IP,这里需要注意NetToPLCsim必须先于博途仿真运行。
以管理员身份启动NetToPLCsim.exe
然后操作博图点击“开始仿真”,并下载到设备,启动模拟机,搜索到虚拟设备、点击下载
点击装载、完成
点击run
回到NetToPLCsim点击Add,选择对应IP,修改槽位(按上述设置,此处选1),添加完成点击Strat Server
至此测试环境就完成了
开发测试
首先创建个WINFORM测试程序(此处IP为虚拟机IP,端口其实没有必要设置,默认就是102)
using S7.Net;
using System;
using System.Windows.Forms;
namespace PLCTEST
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void buttonConnect_Click(object sender, EventArgs e)
{
textBox_log.AppendText("开始连接" + Environment.NewLine);
Plc plc = new Plc(CpuType.S71200, textBox_IP.Text,int.Parse(textBox_port.Text), 0, 0);
plc.Open();
textBox_log.AppendText("连接成功" + Environment.NewLine);
bool result = (bool)plc.Read("DB1.DBX0.0");
textBox_log.AppendText("DB1.DBX0.0 value: " + result + Environment.NewLine);
textBox_log.AppendText("写入新值:"+ !result + Environment.NewLine);
plc.Write("DB1.DBX0.0", !result);
result = (bool)plc.Read("DB1.DBX0.0");
textBox_log.AppendText("DB1.DBX0.0 new value: " + result + Environment.NewLine);
}
}
}
到这一步环境配置和代码测试就结束了,更进一步的上位机学习敬请期待吧