0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用C#实现西门子PLC数据定时读取保存

工控论坛 ? 来源:上位机Guide ? 2025-08-07 16:17 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

来源:上位机Guide,作者:上位机付工

前言

在平时开发中,我们时常会遇到需要后台静默运行的应用场景,这些程序不需要用户的直接操作或界面展示,而是专注于定时任务的执行。比如说,我们需要定期从西门子PLC(可编程逻辑控制器)中读取数据并进行保存,以便后续分析使用。

可以使用Windows服务来实现在系统启动时自动运行,无需登录用户干预,非常适合处理这种周期性的、对实时性有一定要求的任务。

本文将和大家分享如何使用C#创建一个这样的Windows服务,它能够定时地从西门子PLC中读取数据,并将其安全地存储起来。

Windows服务说明

Windows服务是一种特殊类型的应用程序,设计用来在系统启动时自动运行,并且无需用户登录即可执行任务。

它非常适合以下几种场景:

执行需要持续运行的任务,例如日志采集、网络代理等。

进行系统的后台维护工作,比如自动更新和性能监控。

在无人值守的环境中执行特定任务。

Windows服务具有以下几个核心特性:

管理便捷:通过服务控制管理器(SCM)进行管理和配置。

独立于用户登录状态:服务的运行不受用户是否登录的影响,确保了高可用性和稳定性。

开机自启:支持设置为系统启动时自动运行,保证关键任务能够及时执行。

Windows服务创建

1、创建一个新项目,项目模板选择Windows服务(.Net Framework):

cc78bd52-7205-11f0-a18e-92fbcf53809c.png

2、项目名称为WindowsServiceDemo,项目创建完成后如下:

cc8a3ab4-7205-11f0-a18e-92fbcf53809c.png

3、修改服务名称为SiemensPLCService:

cc9d0784-7205-11f0-a18e-92fbcf53809c.png

4、在设计界面的空白处,右击弹窗中,选择添加安装程序:

ccaf7b76-7205-11f0-a18e-92fbcf53809c.png

5、点击添加安装程序之后,会自动添加一个ProjectInstaller界面,里面有两个组件,分别是serviceProcessInstaller和serviceInstaller。

ccbf8674-7205-11f0-a18e-92fbcf53809c.png

6、选择serviceInstaller,在右侧的属性进行设置,主要可以设置以下属性:

ServiceName:服务名称

Description:服务描述

StartType:启动类型

ccce3246-7205-11f0-a18e-92fbcf53809c.png

7、接着选择ProjectInstaller进行设置,主要设置Account,指示用来运行此服务的账户类型,可以设置为LocalSystem。

cce56d9e-7205-11f0-a18e-92fbcf53809c.png

8、设置完成之后,切换到SiemensPLCService这个类,点击切换到代码视图,我们可以看到后台有一些自动生成的代码:

cd00d084-7205-11f0-a18e-92fbcf53809c.png

我们可以在OnStart和OnStop里写一些代码逻辑。

9、写了一个简单的逻辑,就是每次服务启动或停止都会向指定的文件中写入一串信息。

cd0edc2e-7205-11f0-a18e-92fbcf53809c.png

cd24932a-7205-11f0-a18e-92fbcf53809c.png

Windows服务安装卸载

我们直接运行刚刚创建的服务,发现是无法运行的,提示如下:

cd3d1a9e-7205-11f0-a18e-92fbcf53809c.png

接下来,我们使用这个exe来进行安装和卸载Windows服务。

1、首先,使用管理员权限打开cmd命令行,然后进入这个路径下,便于直接操作InstallUtil。

cd C:WindowsMicrosoft.NETFrameworkv4.0.30319

d0498ea2-7205-11f0-a18e-92fbcf53809c.png

2、安装服务命令:installutil exe绝对路径;

installutil C:UsersAdministratorDesktopWindowsServiceDemoWindowsServiceDemoinDebugWindowsServiceDemo.exe

d05c3cfa-7205-11f0-a18e-92fbcf53809c.png

打开服务,可以看到TestService这个名称的服务已经安装完成,

d0714afa-7205-11f0-a18e-92fbcf53809c.png

3、安装完成后,双击打开,可以启动服务,也可以手动停止:

d08b5e9a-7205-11f0-a18e-92fbcf53809c.png

4、观察D盘文件,可以看到PLC的数据每秒会存一次到指定文件中:

d097e25a-7205-11f0-a18e-92fbcf53809c.png

5、需要卸载服务时,可以执行卸载服务命令:installutil exe绝对路径 -u ;

installutil C:UsersAdministratorDesktopWindowsServiceDemoWindowsServiceDemoinDebugWindowsServiceDemo.exe -u

d0a54cce-7205-11f0-a18e-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    5037

    文章

    14086

    浏览量

    476560
  • 西门子
    +关注

    关注

    98

    文章

    3194

    浏览量

    118615
  • WINDOWS
    +关注

    关注

    4

    文章

    3617

    浏览量

    91746
  • 应用程序
    +关注

    关注

    38

    文章

    3339

    浏览量

    59208

原文标题:C# 实现PLC数据自动化定时采集与存储(无需界面,自动化运行)

文章出处:【微信号:gkongbbs,微信公众号:工控论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    西门子PLC案例

    西门子PLC案例,感兴趣的小伙伴们可以看看。
    发表于 07-29 18:42 ?192次下载

    西门子plc数据类型_西门子plc通讯方式

    西门子PLC的品质非常好,其网络稳定性、开放性深受工控人员的喜爱,而且编程软件分类多,使用方便。在国内工控界具有显著地位。虽然大家对西门子PLC都有一定的了解,但要你说出
    发表于 07-25 10:57 ?1.5w次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>plc</b><b class='flag-5'>数据</b>类型_<b class='flag-5'>西门子</b><b class='flag-5'>plc</b>通讯方式

    读取西门子PLC系统时间的程序资料概述

    本文档的主要内容详细介绍的是读取西门子PLC系统时间的程序资料概述。
    发表于 07-20 16:35 ?23次下载
    <b class='flag-5'>读取</b><b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>系统时间的程序资料概述

    西门子S7-200 PLC编程与应用(定时器与计数器)

    西门子S7-200 PLC编程与应用(定时器与计数器)说明。
    发表于 05-09 10:18 ?73次下载

    读写西门子PLC

    读写西门子PLC资料。
    发表于 05-10 09:33 ?38次下载

    广州巨控grm530如何读取西门子s7300数据

    西门子S7300通过巨控GRM530模块实现数据网络远程传输,实现远程手机APP监控,网页监控,wincc组态异地监控,PLC
    的头像 发表于 08-04 08:41 ?1981次阅读
    广州巨控grm530如何<b class='flag-5'>读取</b><b class='flag-5'>西门子</b>s7300<b class='flag-5'>数据</b>

    Linux系统实现西门子PLC数据采集

    今天跟大家分享一下,基于Linux系统实现西门子PLC数据采集。
    的头像 发表于 02-22 16:27 ?2467次阅读
    Linux系统<b class='flag-5'>实现</b><b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>的<b class='flag-5'>数据</b>采集

    C#西门子PLC使用Udp通信

    目录 一、PLC程序工程创建 1、硬件配置 2、程序编程 3、添加监控表 二、C#程序工程创建 1、界面UI 2、代码编写 (1)创建本地Udp (2)读PLC的线程函数 (3)定时
    发表于 04-17 14:45 ?7次下载
    <b class='flag-5'>C#</b>和<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>使用Udp通信

    C#使用西门子S7协议读写PLC DB块

    教大家使用C#如何方便快速的读写西门子DB块的值,实现上位机跟plc进行通讯的流程 使用的西门子PLC
    发表于 04-19 10:05 ?22次下载
    <b class='flag-5'>C#</b>使用<b class='flag-5'>西门子</b>S7协议读写<b class='flag-5'>PLC</b> DB块

    C#西门子PLC通讯

    存储数据,但是在Intel的X86架构的PC上,确是以小端模式。所以,在从PLC读取一个INT类型的变量,需 要将读取回来的字节数组高低字节调换,后面
    发表于 04-20 09:54 ?2次下载
    <b class='flag-5'>C#</b>与<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>通讯

    C#西门子PLC上位机开发环境搭建

    一、安装软件 ? 1. TIA_Portal_STEP7 15 博途,西门子的自动化开发软件 2. SIMATIC_S7PLCSIM_V15_1 西门子的仿真软件 3.?NetToPLCsim C#
    发表于 05-08 10:07 ?3次下载
    <b class='flag-5'>C#</b><b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>上位机开发环境搭建

    基于TIA搭建西门子PLC仿真环境及通信方案

    随着工控及上位机的广泛应用,在学习过程中,很多时候,我们都需要软件和硬件的结合。本方案主要用于解决在学习过程中PLC硬件的需求,以西门子PLC为例,详细描述了基于TIA博途系列软件实现
    的头像 发表于 07-26 09:41 ?1599次阅读
    基于TIA搭建<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>仿真环境及通信方案

    西门子1200PLC之间的ModbusTCP通讯如何实现

    西门子1200PLC通过以太网通讯与其它设备进行数据交互,西门子1200PLC可以和西门子系列
    发表于 07-30 14:49 ?1.2w次阅读
    <b class='flag-5'>西门子</b>1200<b class='flag-5'>PLC</b>之间的ModbusTCP通讯如何<b class='flag-5'>实现</b>?

    西门子plc怎么读取485模块数据

    西门子PLC(Programmable Logic Controller)是一种可编程逻辑控制器,广泛应用于工业自动化领域。在实际应用中,PLC经常需要与各种外部设备进行通信,以实现
    的头像 发表于 06-16 09:13 ?5818次阅读

    S7协议读取西门子S7-200 Smart PLC数据

    西门子S7-200 Smart PLC因其稳定性和易用性而广泛应用。通过使用S7协议,可以实现PLC数据的高效
    的头像 发表于 07-11 11:55 ?1.2w次阅读
    S7协议<b class='flag-5'>读取</b><b class='flag-5'>西门子</b>S7-200 Smart <b class='flag-5'>PLC</b><b class='flag-5'>数据</b>