來源:上位機(jī)Guide,作者:上位機(jī)付工
前言
在平時(shí)開發(fā)中,我們時(shí)常會(huì)遇到需要后臺(tái)靜默運(yùn)行的應(yīng)用場景,這些程序不需要用戶的直接操作或界面展示,而是專注于定時(shí)任務(wù)的執(zhí)行。比如說,我們需要定期從西門子PLC(可編程邏輯控制器)中讀取數(shù)據(jù)并進(jìn)行保存,以便后續(xù)分析使用。
可以使用Windows服務(wù)來實(shí)現(xiàn)在系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行,無需登錄用戶干預(yù),非常適合處理這種周期性的、對(duì)實(shí)時(shí)性有一定要求的任務(wù)。
本文將和大家分享如何使用C#創(chuàng)建一個(gè)這樣的Windows服務(wù),它能夠定時(shí)地從西門子PLC中讀取數(shù)據(jù),并將其安全地存儲(chǔ)起來。
Windows服務(wù)說明
Windows服務(wù)是一種特殊類型的應(yīng)用程序,設(shè)計(jì)用來在系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行,并且無需用戶登錄即可執(zhí)行任務(wù)。
它非常適合以下幾種場景:
執(zhí)行需要持續(xù)運(yùn)行的任務(wù),例如日志采集、網(wǎng)絡(luò)代理等。
進(jìn)行系統(tǒng)的后臺(tái)維護(hù)工作,比如自動(dòng)更新和性能監(jiān)控。
在無人值守的環(huán)境中執(zhí)行特定任務(wù)。
Windows服務(wù)具有以下幾個(gè)核心特性:
管理便捷:通過服務(wù)控制管理器(SCM)進(jìn)行管理和配置。
獨(dú)立于用戶登錄狀態(tài):服務(wù)的運(yùn)行不受用戶是否登錄的影響,確保了高可用性和穩(wěn)定性。
開機(jī)自啟:支持設(shè)置為系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行,保證關(guān)鍵任務(wù)能夠及時(shí)執(zhí)行。
Windows服務(wù)創(chuàng)建
1、創(chuàng)建一個(gè)新項(xiàng)目,項(xiàng)目模板選擇Windows服務(wù)(.Net Framework):

2、項(xiàng)目名稱為WindowsServiceDemo,項(xiàng)目創(chuàng)建完成后如下:

3、修改服務(wù)名稱為SiemensPLCService:

4、在設(shè)計(jì)界面的空白處,右擊彈窗中,選擇添加安裝程序:

5、點(diǎn)擊添加安裝程序之后,會(huì)自動(dòng)添加一個(gè)ProjectInstaller界面,里面有兩個(gè)組件,分別是serviceProcessInstaller和serviceInstaller。

6、選擇serviceInstaller,在右側(cè)的屬性進(jìn)行設(shè)置,主要可以設(shè)置以下屬性:
ServiceName:服務(wù)名稱
Description:服務(wù)描述
StartType:啟動(dòng)類型

7、接著選擇ProjectInstaller進(jìn)行設(shè)置,主要設(shè)置Account,指示用來運(yùn)行此服務(wù)的賬戶類型,可以設(shè)置為LocalSystem。

8、設(shè)置完成之后,切換到SiemensPLCService這個(gè)類,點(diǎn)擊切換到代碼視圖,我們可以看到后臺(tái)有一些自動(dòng)生成的代碼:

我們可以在OnStart和OnStop里寫一些代碼邏輯。
9、寫了一個(gè)簡單的邏輯,就是每次服務(wù)啟動(dòng)或停止都會(huì)向指定的文件中寫入一串信息。


Windows服務(wù)安裝卸載
我們直接運(yùn)行剛剛創(chuàng)建的服務(wù),發(fā)現(xiàn)是無法運(yùn)行的,提示如下:

接下來,我們使用這個(gè)exe來進(jìn)行安裝和卸載Windows服務(wù)。
1、首先,使用管理員權(quán)限打開cmd命令行,然后進(jìn)入這個(gè)路徑下,便于直接操作InstallUtil。
cd C:WindowsMicrosoft.NETFrameworkv4.0.30319

2、安裝服務(wù)命令:installutil exe絕對(duì)路徑;
installutil C:UsersAdministratorDesktopWindowsServiceDemoWindowsServiceDemoinDebugWindowsServiceDemo.exe

打開服務(wù),可以看到TestService這個(gè)名稱的服務(wù)已經(jīng)安裝完成,

3、安裝完成后,雙擊打開,可以啟動(dòng)服務(wù),也可以手動(dòng)停止:

4、觀察D盤文件,可以看到PLC的數(shù)據(jù)每秒會(huì)存一次到指定文件中:

5、需要卸載服務(wù)時(shí),可以執(zhí)行卸載服務(wù)命令:installutil exe絕對(duì)路徑 -u ;
installutil C:UsersAdministratorDesktopWindowsServiceDemoWindowsServiceDemoinDebugWindowsServiceDemo.exe -u

-
plc
+關(guān)注
關(guān)注
5040文章
14345瀏覽量
482561 -
西門子
+關(guān)注
關(guān)注
98文章
3255瀏覽量
119601 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3625瀏覽量
93015 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3341瀏覽量
59845
原文標(biāo)題:C# 實(shí)現(xiàn)PLC數(shù)據(jù)自動(dòng)化定時(shí)采集與存儲(chǔ)(無需界面,自動(dòng)化運(yùn)行)
文章出處:【微信號(hào):gkongbbs,微信公眾號(hào):工控論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
西門子plc數(shù)據(jù)類型_西門子plc通訊方式
讀取西門子PLC系統(tǒng)時(shí)間的程序資料概述
西門子S7-200 PLC編程與應(yīng)用(定時(shí)器與計(jì)數(shù)器)
廣州巨控grm530如何讀取西門子s7300數(shù)據(jù)
Linux系統(tǒng)實(shí)現(xiàn)西門子PLC的數(shù)據(jù)采集
C#和西門子PLC使用Udp通信
C#使用西門子S7協(xié)議讀寫PLC DB塊
C#與西門子PLC通訊
C#西門子PLC上位機(jī)開發(fā)環(huán)境搭建
基于TIA搭建西門子PLC仿真環(huán)境及通信方案
西門子1200PLC之間的ModbusTCP通訊如何實(shí)現(xiàn)?
西門子plc怎么讀取485模塊數(shù)據(jù)
S7協(xié)議讀取西門子S7-200 Smart PLC數(shù)據(jù)

使用C#實(shí)現(xiàn)西門子PLC數(shù)據(jù)定時(shí)讀取保存
評(píng)論