【傻瓜级JS-DLL-WINCC-PLC交互】7.​C#直连PLC并读取PLC数据

简介: 【傻瓜级JS-DLL-WINCC-PLC交互】7.​C#直连PLC并读取PLC数据

思路

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执行案例

目录
相关文章
|
11天前
|
JavaScript 前端开发 安全
js逆向实战之烯牛数据请求参数加密和返回数据解密
【9月更文挑战第20天】在JavaScript逆向工程中,处理烯牛数据的请求参数加密和返回数据解密颇具挑战。本文详细分析了这一过程,包括网络请求监测、代码分析、加密算法推测及解密逻辑研究,并提供了实战步骤,如确定加密入口点、逆向分析算法及模拟加密解密过程。此外,还强调了法律合规性和安全性的重要性,帮助读者合法且安全地进行逆向工程。
50 11
|
21天前
|
存储 C# 开发者
枚举与结构体的应用:C#中的数据组织艺术
在C#编程中,枚举(`enum`)和结构体(`struct`)是非常重要的数据类型。枚举用于定义命名常量集合,提高代码可读性;结构体则封装相关数据字段,适合小型数据集。本文从基本概念入手,探讨它们的使用技巧、常见问题及解决方案,帮助开发者更好地利用这些特性构建健壮的应用程序。
23 8
|
6天前
|
JSON JavaScript 前端开发
6-19|Python数据传到JS的方法
6-19|Python数据传到JS的方法
|
1月前
|
JavaScript 前端开发
JavaScript 与 DOM 交互
【9月更文挑战第01天】
22 2
|
2月前
|
JavaScript 前端开发 UED
Vue.js动画魔法:解锁流畅过渡,让每一次交互都成为用户心中的小确幸!
【8月更文挑战第30天】在Vue.js中,动画与过渡效果不仅是视觉点缀,更是提升用户体验的关键。通过流畅的动态效果,应用的互动性和吸引力得以增强,从而提高用户满意度和参与度。`<transition>`和`<transition-group>`组件结合CSS过渡,可轻松实现元素的进入、离开及列表变化动画。合理的性能优化,如使用硬件加速,能避免页面卡顿,确保动画既美观又高效。下面是一个简单的淡入淡出效果示例,展示了如何利用Vue.js实现平滑的动画过渡。总之,恰当的动画设计能显著提升应用的用户体验。
41 0
Vue.js动画魔法:解锁流畅过渡,让每一次交互都成为用户心中的小确幸!
|
2月前
|
Java 开发者 关系型数据库
JSF与AWS的神秘之旅:如何在云端部署JSF应用,让你的Web应用如虎添翼?
【8月更文挑战第31天】在云计算蓬勃发展的今天,AWS已成为企业级应用的首选平台。本文探讨了在AWS上部署JSF(JavaServer Faces)应用的方法,这是一种广泛使用的Java Web框架。通过了解并利用AWS的基础设施与服务,如EC2、RDS 和 S3,开发者能够高效地部署和管理JSF应用。文章还提供了具体的部署步骤示例,并讨论了使用AWS可能遇到的挑战及应对策略,帮助开发者更好地利用AWS的强大功能,提升Web应用开发效率。
51 0
|
2月前
|
Devops 持续交付 测试技术
JSF遇上DevOps:开发流程将迎巨变?一篇文章带你领略高效协同的魅力!
【8月更文挑战第31天】本文探讨了如何在JavaServer Faces(JSF)开发中融入DevOps文化,通过持续集成与部署、自动化测试、监控与日志记录及反馈机制,提升软件交付速度与质量。文中详细介绍了使用Jenkins进行自动化部署、JUnit与Selenium进行自动化测试、ELK Stack进行日志监控的具体方法,并强调了持续改进的重要性。
30 0
|
2月前
|
JSON 前端开发 JavaScript
[译] 处理 JavaScript 中的非预期数据
[译] 处理 JavaScript 中的非预期数据
|
JavaScript 数据可视化 前端开发
《JavaScript数据可视化编程》——导读
在我们的日常生活中,数据的重要性与日俱增。尤其对于一些庞大的组织机构(诸如Facebook和Google这种体量的公司)来说,数据几乎是一切决策的核心。在地缘政治领域,正在前所未有地收集数据,以致爆出诸如美国国家安全局监控丑闻这样的事件,这从另一个侧面反映了我们正在经历一个宏观数据时代。
2827 0
|
JavaScript 前端开发 数据可视化