思路
JS-DLL-WINCC-PLC之间进行交互,思路,先用Visual Studio创建一个C#的DLL控件,然后这个控件里面嵌入浏览器组件,实现JS与DLL通信,然后DLL放入到WINCC里面的图形编辑器中,实现DLL与WINCC的通信。然后PLC与WINCC之间进行连接,实现WINCC与PLC之间连接,最后自己封装方法把他们串联起来。
C#直连PLC并读取PLC数据
1.首先你得知道PLC网络IP
在博途中查看到,运行的IP地址为 192.168.0.1
2.端口默认 102
3.查看机架和插槽
从下图中可以看到,机架和插槽为0,1
4.查看新建数据的变量地址
地址公式:数据模块编号 + "." + 数据类型(DBX,DBW,DBD 对应 Bool,ushort,float)+变异量
所以下面的变量数据地址为:BD3.DBX0.0
5.配置PLC权限,让他可以直接C#拥有读写权限
如果不走这一步,后面代码汇报做
Unhandled exception. S7.Net.PlcException: Received 12 bytes: '32-02-00-00-00-00-00-00-00-00-81-04', expected 19 bytes.
---> S7.Net.PlcException: Received 12 bytes: '32-02-00-00-00-00-00-00-00-00-81-04', expected 19 bytes.
设置完全权限
勾选 允许来自远程对象的PUT/GET通讯访问
然后将项目从新编译,并装载进PLC!!!!!!!!!!!!!!!!!!!!!!!!!!!
6.代码编写案例地址
https://download.csdn.net/download/qq_59747594/88580348
7.代码讲解
将项目用Visual Studio打开,demo案例在下面位置
7.1C#读取PLC的数据,需要用到 S7.Net
using S7.Net; //引用通信,可以自行网上搜索如何安装,一堆资料 namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); const short TestServerPort = 102;//PLC运行的端口地址 const string TestServerIp = "192.168.0.1";//PLC运行的IP地址 // new Plc(CpuType.S71200, PLC的IP, PLC的端口, PLC的机架, PLC的插槽); var plc = new Plc(CpuType.S71200, TestServerIp, TestServerPort, 0, 1); plc.Open(); Console.WriteLine($"是否已连接: {plc.IsConnected}"); // 数据变量的地址 var addr = "DB1.DBX0.0"; Console.WriteLine($"原始值: {plc.Read(addr)}"); plc.Write(addr, 1); Console.WriteLine($"修改后: {plc.Read(addr)!}"); Console.ReadLine(); } } }
7.2执行案例