




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
BeckhoffChina技術(shù)文檔|24倍福官方網(wǎng)站: 倍福中國(guó)微信公眾號(hào)(在線支持):Beckhoff20140220在線幫助系統(tǒng): 倍福中國(guó)FTP資料下載: BeckhoffChina技術(shù)文檔文檔內(nèi)容可能隨時(shí)更新如有改動(dòng),恕不事先通知TTwinCATIoT及Analytics用于設(shè)備健康管理作者:陳利君職務(wù):華南區(qū)技術(shù)工程師郵箱:l.chen@日期:2021-09-14摘要:自動(dòng)化設(shè)備的健康管理,其機(jī)制就是采集生產(chǎn)設(shè)備的健康狀態(tài),進(jìn)行存儲(chǔ)和分析。不同行業(yè)設(shè)備的健康數(shù)據(jù)、分析工具、健康指標(biāo)可能會(huì)不同,但數(shù)據(jù)的采集、傳輸和存儲(chǔ)方法是相通的——自動(dòng)化設(shè)備的健康數(shù)據(jù)由一臺(tái)或多臺(tái)PLC提供,但健康狀態(tài)分析通常在局域網(wǎng)內(nèi)或者Internet上的另一臺(tái)PC上進(jìn)行,數(shù)據(jù)的提供方與使用方經(jīng)由IoT技術(shù)來(lái)連接。TwinCAT提供兩種基于IoT技術(shù)的設(shè)備健康管理方案:一種是TwinCAT3Analytics套件,另一種是PLC自由編程實(shí)現(xiàn)IoT數(shù)據(jù)通訊,二者都采用MQTT協(xié)議。實(shí)際上這兩種方案可以采集任何工藝數(shù)據(jù),供用戶后期使用。以上代碼由萬(wàn)品雷從自己的機(jī)器學(xué)習(xí)項(xiàng)目中抽取而來(lái),本文僅是測(cè)試記錄,也可作為代碼配套說(shuō)明。附件:序號(hào)文件名備注1TwinCATAnalyticsFileSaveLocal作者:萬(wàn)品雷2AnalyticsIotMQTT作者:萬(wàn)品雷3AnalyticsDataCollection.pptx作者:萬(wàn)品雷4歷史版本:免責(zé)聲明:我們已對(duì)本文檔描述的內(nèi)容做測(cè)試。但是差錯(cuò)在所難免,無(wú)法保證絕對(duì)正確并完全滿足您的使用需求。本文檔的內(nèi)容可能隨時(shí)更新,如有改動(dòng),恕不事先通知,也歡迎您提出改進(jìn)建議。參考信息: 目錄 1 概述 31.1 設(shè)備健康管理方案 31.2 方式A:TcAnalytic工具 41.2.1 數(shù)據(jù)采集 41.2.2 數(shù)據(jù)后處理 41.3 方式B:PLC寫代碼通過(guò)IoT存取數(shù)據(jù) 41.3.1 數(shù)據(jù)采集 41.3.2 數(shù)據(jù)后處理 42 配置方式:AnalyticsIotMQTT 52.1 準(zhǔn)備工作 52.1.1 控制器側(cè) 52.1.2 MQTT服務(wù)側(cè) 52.1.3 數(shù)據(jù)記錄存儲(chǔ)側(cè) 52.1.4 Analytic數(shù)據(jù)后處理側(cè) 52.2 數(shù)據(jù)采集的配置 62.2.1 如果單機(jī)本地直接采集 62.2.2 如果通過(guò)MQTT服務(wù)器 102.3 數(shù)據(jù)記錄和存儲(chǔ) 122.4 Analytics數(shù)據(jù)后處理 162.4.1 方法一:用TC3Scope導(dǎo)出 172.4.2 方法二:用TC3ScopeView 183 PLC代碼方式:TwinCATAnalyticsFileSaveLocal 203.1 準(zhǔn)備工作 203.2 項(xiàng)目:TcMLFrameWork 203.2.1 引用庫(kù):References 213.2.2 自定義結(jié)構(gòu)體:ST_UserData 213.2.3 自定義功能塊:FBs 213.2.4 全局變量:GVL_Logger 233.2.5 全局變量:GVL_test 233.2.6 全局變量:GVL 233.2.7 程序:Main 233.2.8 程序:PRG_Logger 233.2.9 程序:PRG_Client 253.3 執(zhí)行結(jié)果 263.3.1 生成和發(fā)送數(shù)據(jù) 263.3.2 接收數(shù)據(jù) 26TwinCATIoT及Analytics用于設(shè)備健康管理ByLizzyChen2021.06.25資源:來(lái)自倍福中國(guó)STS組概述設(shè)備健康管理方案自動(dòng)化設(shè)備的健康管理,其機(jī)制就是采集生產(chǎn)設(shè)備的健康狀態(tài),進(jìn)行存儲(chǔ)和分析。不同行業(yè)設(shè)備的健康數(shù)據(jù)、分析工具、健康指標(biāo)可能會(huì)不同,但數(shù)據(jù)的采集、傳輸和存儲(chǔ)方法是相通的——自動(dòng)化設(shè)備的健康數(shù)據(jù)由一臺(tái)或多臺(tái)PLC提供,但健康狀態(tài)分析通常在局域網(wǎng)內(nèi)或者Internet上的另一臺(tái)PC上進(jìn)行,數(shù)據(jù)的提供方與使用方經(jīng)由IoT技術(shù)來(lái)連接。TwinCAT提供兩種基于IoT技術(shù)的設(shè)備健康管理方案:一種是TwinCAT3Analytics套件,另一種是PLC自由編程實(shí)現(xiàn)IoT數(shù)據(jù)通訊,二者都采用MQTT協(xié)議。實(shí)際上這兩種方案可以采集任何工藝數(shù)據(jù),供用戶后期使用。如圖所示:?上圖中,TwinCATController或者DataAgent與MQTTMessageBroker建立了MQTT數(shù)據(jù)流之后:TwinCATStorage可以引用這個(gè)數(shù)據(jù)流,把數(shù)據(jù)源源不斷地“導(dǎo)入”本地進(jìn)行存儲(chǔ);本地存儲(chǔ)的文件,又可以在本機(jī)或者復(fù)制到其它電腦;其它電腦可以通過(guò)TwinCATMessurement做曲線顯示或者通過(guò)TwinCATAnalyticsWorkbench做離線分析;TwinCATHMI則提供控件和方法可以“實(shí)時(shí)”顯示數(shù)據(jù)源的變化情況;邊緣設(shè)備上運(yùn)行TwinCATAnalyticsRuntime,可以進(jìn)行在線分析。不是每個(gè)應(yīng)用都必須用到上述所有功能,本文介紹最簡(jiǎn)單也最容易實(shí)施的應(yīng)用,就只包含前3點(diǎn):創(chuàng)建數(shù)據(jù)流、本地存儲(chǔ)和曲線顯示。方式A:TcAnalytic工具詳見(jiàn)第2章數(shù)據(jù)采集DataLogger緩存文件的存儲(chǔ)單機(jī)本地直接采集這是最簡(jiǎn)單的情況,緩存文件直接就存在PLC的啟動(dòng)目錄“C:\TwinCAT\3.1\Boot\Analytics”通常是倍福IPC上安裝TwinCATXAE,提供數(shù)據(jù)的PLC程序在IPC上運(yùn)行,同時(shí)存儲(chǔ)和分析數(shù)據(jù)也在這臺(tái)IPC上執(zhí)行。MQTT存在服務(wù)器上面這是常用的能發(fā)揮MQTT優(yōu)勢(shì)的用法,PLC需要連接外網(wǎng),把臨時(shí)數(shù)據(jù)送到指定的MessageBroker服務(wù)器上。這個(gè)服務(wù)器可能在局域網(wǎng),也可能在Internet上。PLC上不必安裝XAE和分析工具,所以對(duì)控制器的要求不高,嵌入式PC就可以滿足。StorageProvider指定時(shí)間段的數(shù)據(jù)記錄最終需要的數(shù)據(jù)是指定時(shí)間段內(nèi)特定變量的數(shù)據(jù)記錄。如果只有DataLogger而沒(méi)有StorageProvider,按默認(rèn)配置就只能保存最近5秒的數(shù)據(jù)。數(shù)據(jù)后處理數(shù)據(jù)采集是為了使用,如果不對(duì)數(shù)據(jù)做后處理,那就沒(méi)必要采集了。用配置方式生成的數(shù)據(jù),使用特殊的文件格式(.tay),倍福提供數(shù)據(jù)后處理的系列工具(TC3ScopeExportTool.exe;TC3XAE的Messurement),用于圖形化顯示、導(dǎo)出數(shù)據(jù)、應(yīng)用分析等。后處理就是在ScopeView中裝載數(shù)據(jù)記錄文件(.tay),顯示波形曲線,進(jìn)行各種分析。也可以導(dǎo)出成.csv或者.txt文件,由用戶自定義的第三方工具進(jìn)行處理。方式B:PLC寫代碼通過(guò)IoT存取數(shù)據(jù)數(shù)據(jù)采集詳見(jiàn)第3章。產(chǎn)生數(shù)據(jù)側(cè)PLC把產(chǎn)生的數(shù)據(jù)上傳到MQTT。除了引用IoT的庫(kù),其它都由用戶自定義。存儲(chǔ)數(shù)據(jù)側(cè)PLC從MQTTBroker獲取數(shù)據(jù),然后寫入csv文件,或者寫入數(shù)據(jù)庫(kù)。除了引用IoT的庫(kù),其它都由用戶自定義。數(shù)據(jù)后處理根據(jù)PLC存儲(chǔ)的數(shù)據(jù)格式自行定義,比如后續(xù)如何分析csv文件,或者如何從數(shù)據(jù)庫(kù)提取數(shù)據(jù)進(jìn)行分析等。配置方式:AnalyticsIotMQTT準(zhǔn)備工作控制器側(cè)授權(quán):控制器側(cè)TF3500|TC3AnalyticsLogger安裝包:已經(jīng)包含在XAR或XAE中,不需要單獨(dú)安裝控制器:CX5130,WES7,TC3.1.4024.15(XAR)MQTT服務(wù)側(cè)即在MQTT服務(wù)器上緩存Analytics數(shù)據(jù)的功能。如果在云上安裝MQTT服務(wù)器,Analytics臨時(shí)中轉(zhuǎn)數(shù)據(jù)就存在云上。如果在局域網(wǎng)某臺(tái)PC上安裝MQTT服務(wù)器,Analytics數(shù)據(jù)就存在局域網(wǎng)這臺(tái)PC上。常用的測(cè)試工具是在云服務(wù)器或者某臺(tái)PC上安裝mosquitto,使之成為MQTT服務(wù)器:安裝包:mosquitto-1.4.14-install-win32.exe,數(shù)據(jù)記錄存儲(chǔ)側(cè)MQTT服務(wù)器上只是存儲(chǔ)臨時(shí)數(shù)據(jù)文件,如果需要記錄和存儲(chǔ)數(shù)據(jù),需要IPC上安裝TC3XAE和TF3520AnalyticsStorageProvider:授權(quán):TF3520AnalyticsStorageProvider,安裝包:TF3520-Analytics-Storage-Provider.exeAnalytic數(shù)據(jù)后處理側(cè)做數(shù)據(jù)后處理的IPC上也要安裝TwinCAT3XAE和AnalyticsEngineering安裝包:TC3-Measurement-Full.exe,提示:安裝時(shí)要勾選TE35xxAnalyticsEngineering,默認(rèn)是不選中此項(xiàng)的方法一:TC3ScopeExportTool.exe執(zhí)行文件:C:\TwinCAT\Functions\TF3300-Scope-Server\TC3ScopeExportTool.exeC:\TwinCAT\Functions\TE130X-Scope-View\TC3ScopeExportTool.exe方法二:TC3ScopeView(TC3MessurementProject)TC3ScopeView自帶功能其它授權(quán):TE3500|TC3AnalyticsWorkbench TE3520|TC3AnalyticsServiceTool提示:TE35xx也有7天試用版授權(quán)數(shù)據(jù)采集的配置如果單機(jī)本地直接采集PLC程序提供數(shù)據(jù)的PLC程序,最重要是把需要采集變量都加上屬性{attribute'TcAnalytics'}。示例的PLC程序僅一個(gè)變量Main.bTest,無(wú)邏輯:PROGRAMMAINVAR {attribute:'TcAnalytics'} bTest:BOOL;END_VAR;配置DataLogger如果解決方案資源管理器中沒(méi)有ANALYTICS這項(xiàng),就從TwinCAT項(xiàng)目的右鍵菜單中選擇ShowHiddenConfigurations|ShowANALYTICSConfiguration:然后從ANALYTICS右鍵菜單選擇“AddDataLogger”DataLogger的默認(rèn)配置是這樣的:TF3500_TC3_Analytics_Logger_en-us_draft.pdf第19頁(yè)有每項(xiàng)的含義,單機(jī)本地存儲(chǔ)時(shí)可以直接使用默認(rèn)配置,打開其它兩個(gè)頁(yè)面可見(jiàn)TLS為None,TimeSource為None。如果創(chuàng)建DataLogger時(shí)PLC編譯過(guò)的程序中已經(jīng)存在屬性為{attribute:'TcAnalytics'}的變量,DataLogger下就會(huì)自動(dòng)生成PLCStream:如果創(chuàng)建的時(shí)候還沒(méi)有需要Logger的變量,而是之后才給PLC變量加上屬性{attribute:'TcAnalytics'},那么程序編譯后,PLCStream就會(huì)自動(dòng)出現(xiàn)在DataLogger下。選擇需要采集的PLC變量在PlcStream的Selection頁(yè)面勾選變量:只有屬性為{attribute:'TcAnalytics'}的變量,才會(huì)出現(xiàn)在可供選擇的列表中。也可以再查看下DataHandling頁(yè)面,雖然直接使用如下默認(rèn)設(shè)置即可:這里的File就是默認(rèn)存儲(chǔ)采集數(shù)據(jù)的文件路徑,%TC_BOOTPRJPATH%就表示“C:\TwinCAT\3.1\Boot\Analytics”激活配置并下載運(yùn)行PLC程序在文件夾下查看數(shù)據(jù)記錄的結(jié)果根據(jù)文件夾的更新時(shí)間,可以查到最新的記錄文件:維持PLC正常運(yùn)行,過(guò)幾分鐘再查看這個(gè)文件夾:可見(jiàn)文件名變化了,文件大小不變。對(duì)照文件修改日期,可以推測(cè)文件名的后半部T09-32-02-029的含義是,9點(diǎn)32分02秒029毫秒。修改時(shí)間17:32是北京時(shí)間,而對(duì)應(yīng)的格林威治時(shí)間(時(shí)區(qū)0)剛好是09:32。文件大小不變,而兩個(gè)文件的時(shí)間相差5s120ms,預(yù)計(jì)10kB數(shù)據(jù)只包含了Logger中最新5s120ms時(shí)間內(nèi)的歷史數(shù)據(jù)。用TargetBrower觀察數(shù)據(jù)記錄在TargetBrowser的TcAnalyticsFile頁(yè)面找到文件夾(后4位字符387A):可以見(jiàn)到采集的變量,及記錄長(zhǎng)度,當(dāng)前是00:00:05:110如果通過(guò)MQTT服務(wù)器先完成上一節(jié)“如果單機(jī)本地直接采集”的第(1)至(4)步。然后修改第(2)步中DataLogger的參數(shù)設(shè)置。如果通過(guò)MQTT服務(wù)器,第一項(xiàng)DataFormat就應(yīng)選擇Binary,而MQTTHostName處要填寫服務(wù)器的IP。對(duì)于最簡(jiǎn)單的匿名訪問(wèn),直接使用1883端口,Topic可以修改也可以默認(rèn),ClientID可以填或者不填。查看PlcStream的狀態(tài)如果一切正常,控制器激活配置并且PLC啟動(dòng)運(yùn)行后,PlcStream的Online頁(yè)的MQTTConnection狀態(tài)應(yīng)顯示為“Connected”:提示:如果不正常就會(huì)顯示紅色的Disconnected,這時(shí)就需要去檢查控制器的授權(quán)、網(wǎng)絡(luò)連接、服務(wù)DataLogger服務(wù)是否啟動(dòng)了。如果都沒(méi)問(wèn)題,可以嘗試設(shè)置為自動(dòng)啟動(dòng)和引導(dǎo)運(yùn)行PLC程序,然后重啟控制器。用TargetBrower觀察數(shù)據(jù)記錄從主菜單TwinCAT|TargetBrowser|TargetBrowser打開目標(biāo)瀏覽器,在TcAnalytics頁(yè)面找到MQTTBroker的IP,展開樹形結(jié)構(gòu)顯示LiveData:如果能顯示IP下的LiveData中的變量與程序中定義并在DataLogger中選擇的變量一致,就說(shuō)明通過(guò)MQTT的數(shù)據(jù)采集(DataLogger)成功了。數(shù)據(jù)記錄和存儲(chǔ)以下操作在配置DataLogger的同一臺(tái)或者另一臺(tái)安裝了TC3XAE和StorageProvider的IPC上執(zhí)行。配置StorageProviderRecorder打開目錄:C:\TwinCAT\Functions\TF3520-Analytics-StorageProvider\WinService\執(zhí)行程序:TcAnalyticsStorageProvider_Config.exe設(shè)置MessageBroker信息,最重要的是IP地址,匿名訪問(wèn)的端口都是1883。初次測(cè)試使用匿名訪問(wèn)即可。設(shè)置完成后點(diǎn)擊CheckSetting,顯示OK就可以返回了。然后點(diǎn)擊Start按鈕,確認(rèn)狀態(tài)為Running。打開StorageProviderRecorder主菜單TwinCAT|Analytic|StorageProviderRecorder選擇云上的Provider正常應(yīng)該能列表顯示可用的Provider:如果列表為空,點(diǎn)擊配置圖標(biāo),檢查ConnectionSettings:填寫正確的MQTT服務(wù)器IP和端口后,點(diǎn)擊CheckSettings,正常結(jié)果應(yīng)為OK。如果Broker選擇的下拉框仍然為空,就需要檢查本機(jī)的Provider配置和授權(quán)了。選擇要存儲(chǔ)的數(shù)據(jù)記錄從TargetBrowser中選擇變量拖放到StorageProviderRecorder可以一次選擇單個(gè)或者多個(gè)變量,然后設(shè)置TopicAlias和記錄時(shí)長(zhǎng):上圖中A、B兩處的時(shí)長(zhǎng)設(shè)置是互相排斥的,A處指單次記錄,B處指循環(huán)記錄,設(shè)置A處則B處清零,反之亦然。例如在A處設(shè)置為2分鐘,結(jié)果StorageProviderRecorder中的記錄項(xiàng)就增加了1項(xiàng)“Main_XYZ”,如圖所示:?jiǎn)?dòng)數(shù)據(jù)記錄點(diǎn)擊指定Topic前面的START按鈕:可見(jiàn)MAIN_XYZ前的按鈕稍后就顯示為藍(lán)色的STOP,這表示當(dāng)前正在記錄,可以手動(dòng)停止。下載記錄數(shù)據(jù)2分鐘后,MAIN_XYZ前面的圖標(biāo)又顯示為紅色的START,表示記錄已經(jīng)停止,可以手動(dòng)啟動(dòng)。每記錄一次,就會(huì)生成一個(gè)文件。點(diǎn)擊界面上方的保存按鈕,選擇剛才記錄的MAIN_XYZ:點(diǎn)擊Download,選擇存儲(chǔ)路徑即可。查看數(shù)據(jù)記錄的文件到指定路徑查看剛才記錄的文件:上圖中.tay文件大小234kB,就是MAIN_XYZ中3個(gè)Real型變量在2分鐘內(nèi)的歷史記錄。因?yàn)槭荁inary格式,可以計(jì)算文件有效占用空間。PLC默認(rèn)周期10ms,2分鐘內(nèi)PLC運(yùn)行了12000次,每次記錄3個(gè)Real數(shù)據(jù)即12字節(jié)。所以純數(shù)據(jù)的Size為144kB。3*4*(2*60*1000/10)=12*12000=144,000Byte考慮到12000行的Timestamp,每個(gè)64位即8字節(jié),總計(jì)96,000Byte數(shù)字和時(shí)間的總占用字節(jié)數(shù)為:144,000+96,000=240,000Byte而計(jì)算機(jī)的1kB實(shí)際是1024字節(jié),所以該數(shù)據(jù)記錄不論保存為什么格式的文件,不應(yīng)小于240,000/1024=234.375kB。對(duì)照截圖中的.tay文件大小234kB,可見(jiàn)這是一個(gè)純二進(jìn)制文件,沒(méi)有插入任何標(biāo)記。Analytics數(shù)據(jù)后處理.tay文件通過(guò)ScopeView進(jìn)行采集,然后轉(zhuǎn)成其他格式文件.tay文件直接通過(guò)Tc3ScopeExportTool.exe進(jìn)行處理注意:.tas文件不能刪除否則文件無(wú)法使用方法一:用TC3Scope導(dǎo)出執(zhí)行文件TC3ScopeExportTool.exeC:\TwinCAT\Functions\TF3300-Scope-Server\TC3ScopeExportTool.exe或C:\TwinCAT\Functions\TE130X-Scope-View\TC3ScopeExportTool.exe選擇Source和Destination即源文件.tay和目標(biāo)文件,目標(biāo)文件可以是.csv或者.txt:設(shè)置文件格式、數(shù)據(jù)通道和時(shí)間然后點(diǎn)擊Start,正常就應(yīng)該出現(xiàn)導(dǎo)出成功的提示:方法二:用TC3ScopeView確認(rèn)安裝TCXAE的電腦上有TE1300授權(quán)從.tay文件中讀取歷史數(shù)據(jù)顯示成曲線,需要TwinCATScopeProfessional授權(quán)。如果沒(méi)有,可生成TrialLicense,最多可以顯示5個(gè)變量。新建Messurement項(xiàng)目打開TargetBrowser,拖放變量可以一次選中多個(gè)變量拖放到ScopeProject。開始記錄點(diǎn)擊Scope開始記錄的圖標(biāo),就會(huì)從離線文件.tay中裝截?cái)?shù)據(jù),就象現(xiàn)場(chǎng)從PLC中記錄的數(shù)據(jù)一樣:上圖可見(jiàn),.tay文件記錄了2分鐘的數(shù)據(jù),而Scope中顯示出來(lái)的曲線就是2min。如果變量數(shù)目超過(guò)5,ScopeProject就會(huì)報(bào)錯(cuò),提示需要TwinCATScopeProfessional的正式授權(quán)。Scope中的其它分析功能.tay離線文件數(shù)據(jù)裝載進(jìn)Scope后就可以和在線監(jiān)視的變量一樣,實(shí)現(xiàn)Scope功能中的所有分析了。從Scope導(dǎo)出到.csv這是Scope標(biāo)準(zhǔn)功能,不再詳述。從主菜單Scope|Export進(jìn)入導(dǎo)出模板:然后一步步按提示操作即可。PLC代碼方式:TwinCATAnalyticsFileSaveLocal準(zhǔn)備工作通訊雙方都需要授權(quán):TF6701|TC3IoTCommunicationBACN庫(kù)文件安裝:tc3_5gutilities.library,路徑:\AnalyticsIotMQTT\TcMLFrameWorkServer\TcMLFrameWorkServer\MLFrameWorkServer\_Libraries\bacn\tc3_utilities\安裝包:無(wú)控制器:CX5130,WES7,TC3.1.4024.15(XAR)編程PC:筆記本,Win1064位,TC3.1.4024.15,VS2017,TcXaeShell項(xiàng)目:TcMLFrameWork倍福中國(guó)工程師創(chuàng)建了這個(gè)示例項(xiàng)目,封裝了幾個(gè)關(guān)鍵的FB,F(xiàn)B_MQTTClient用于在發(fā)送端打包結(jié)構(gòu)體到Json格式送到MQTT,F(xiàn)B_MQTTServer在接收端從MQTT接收J(rèn)son數(shù)據(jù)再解包成結(jié)構(gòu)體,F(xiàn)B_StructDataSave用于存儲(chǔ).csv文件。需要記錄的數(shù)據(jù)首先要放在結(jié)構(gòu)體ST_UserData中。示例項(xiàng)目中只有一套PLC程序,通過(guò)全局變量.bClient切換角色。引用庫(kù):References?說(shuō)明:上圖中TC3_Utilities是新增的庫(kù),向倍福工程師索取Demo程序,找到這個(gè)庫(kù)文件后還需要單獨(dú)安裝。自定義結(jié)構(gòu)體:ST_UserDataTYPEST_UserData:STRUCT iRowIndex :UDINT; strDateTime :STRING; iSensorValue1 :INT; iSensorValue2 :BOOL; iSensorValue3 :REAL; iSensorValue4 :REAL; iSensorValue5 :REAL;END_STRUCTEND_TYPE自定義功能塊:FBsFB_MQTTClientFUNCTION_BLOCKFB_MQTTClientVAR_INPUT sClientId:STRING(255):='MyTcMqttClient';//defaultisgeneratedduringinitialization sTopicPub :STRING(255):='topicTest01'; //baidusHostName:STRING(255):='85';//defaultislocalhostnHostPort:UINT:=1883;//defaultis1883sTopicPrefix:STRING(255);//topicprefixforpubandsubofthisclient(handledinternally)nKeepAlive:UINT:=60;//inseconds stPubData :ST_UserData; bAllowedPublish :BOOL:=TRUE; //sUserName:STRING(255);//optionalparameter//sUserPassword:STRING(255);//optionalparameter//stWill:ST_IotMqttWill;//optionalparameter//stTLS:ST_IotMqttTls;//optionalparameter//ipMessageFiFo:I_IotMqttMessageFiFo;//ifreceivedmessagesshouldbequeuedduringcallofExecute() END_VARVAR_OUTPUT bError:BOOL; bConnected:BOOL;END_VARFB_MQTTServerFUNCTION_BLOCKFB_MQTTServerVAR_INPUT sClientId:STRING(255):='MyTcMqttClient2';//defaultisgeneratedduringinitialization sTopicSub :STRING(255):='topicTest01'; //baidusHostName:STRING(255):='85';//defaultislocalhostnHostPort:UINT:=1883;//defaultis1883sTopicPrefix:STRING(255);//topicprefixforpubandsubofthisclient(handledinternally)nKeepAlive:UINT:=60;//insecondsEND_VARVAR_OUTPUT bError :BOOL; bConnected :BOOL; stSubData :ST_UserData; bLoggerTriger :BOOL;END_VARFB_StructDataSaveFUNCTION_BLOCKFB_StructDataSaveVAR_INPUT sLoggerPath :T_MaxString:='C:\Logger'; bLoggerTriger :BOOL; aColumnTitle :ARRAY[1..CSV_MAX_ITEMS]OFSTRING(CSV_ITEM_SIZE); aColumnValue :ST_UserData; iFileID :DINT;END_VARVAR_OUTPUTEND_VAR全局變量:GVL_LoggerVAR_GLOBAL g_stSubData :ARRAY[1..2]OFST_UserData; g_aColumnTitle :ARRAY[1..CSV_MAX_ITEMS]OFSTRING(CSV_ITEM_SIZE);END_VARVAR_GLOBALCONSTANT CSV_MAX_ITEMS :UDINT:=8;//TotalItems CSV_ITEM_SIZE :UDINT:=30;//maxbyteperItemEND_VAR全局變量:GVL_testVAR_GLOBALbClient:BOOL:=FALSE;tName:STRING:='85';//'localhost'OR'85'END_VAR全局變量:GVLVAR_GLOBAL g_stPubData :ST_UserData;END_VAR程序:MainPROGRAMPRG_LoggerVAREND_VARIFGVL_test.bClientTHEN PRG_Logger();ELSE PRG_Client();END_IF程序:PRG_LoggerPROGRAMPRG_LoggerVAR fbMQTTServer :ARRAY[1..2]OFFB_MQTTServer; fbStructDataSave :ARRAY[1..2]OFFB_StructDataSave;END_VARfbMQTTServer[1]( sClientId:='MyTcMqttClient11', sTopicSub:='topicTest01', sHostName:='85', nHostPort:=1883, sTopicPrefix:=, nKeepAlive:=, bError=>, bConnected=>, stSubData=>g_stSubData[1], bLoggerTriger=>);fbMQTTServer[2]( sClientId:='MyTcMqttClient22', sTopicSub:='topicTest02', sHostName:='85', nHostPort:=1883, sTopicPrefix:=, nKeepAlive:=, bError=>, bConnected=>, stSubData=>g_stSubData[2], bLoggerTriger=>); g_aColumnTitle[1]:='FileID';g_aColumnTitle[2]:='RowIndex';g_aColumnTitle[3]:='DateTime';g_aColumnTitle[4]:='SensorValue1';g_aColumnTitle[5]:='SensorValue2';g_aColumnTitle[6]:='SensorValue3';g_aColumnTitle[7]:='SensorValue4';g_aColumnTitle[8]:='SensorValue5'; fbStructDataSave[1]( sLoggerPath:='C:\Logger2\Logger11', bLoggerTriger:=fbMQTTServer[1].bLoggerTriger, aColumnTitle:=g_aColumnTitle, aColumnValue:=g_stSubData[1], iFileID:=1);fbStructDataSave[2]( sLoggerPath:='C:\Logger2\logger22', bLoggerTriger:=fbMQTTServer[2].bLoggerTriger, aColumn
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025貴州電子信息職業(yè)技術(shù)學(xué)院輔導(dǎo)員考試試題及答案
- 2025石河子工程職業(yè)技術(shù)學(xué)院輔導(dǎo)員考試試題及答案
- 2025電子科技大學(xué)中山學(xué)院輔導(dǎo)員考試試題及答案
- 產(chǎn)權(quán)保護(hù)與爭(zhēng)議解決考試試卷及答案2025年
- 2025年信息技術(shù)考試模擬試卷及答案
- 2025年藝術(shù)生文化課模擬考試卷及答案
- 2025年人工智能倫理與社會(huì)影響考試試卷及答案
- 2025年數(shù)字營(yíng)銷考試試卷及答案
- 2025年公共部門績(jī)效管理專業(yè)畢業(yè)考試試題及答案
- 2025年房地產(chǎn)評(píng)估師考試題及答案選集
- GB/T 10322.1-2023鐵礦石取樣和制樣方法
- 垃圾焚燒發(fā)電廠污水處理檢修規(guī)程
- 安徽省池州市貴池區(qū)2023年數(shù)學(xué)六年級(jí)第二學(xué)期期末達(dá)標(biāo)檢測(cè)試題含解析
- 2023中小學(xué)德育工作指南德育工作實(shí)施方案
- 無(wú)土栽培學(xué)(全套課件660P)
- 成語(yǔ)故事半途而廢
- GB/T 7233.1-2009鑄鋼件超聲檢測(cè)第1部分:一般用途鑄鋼件
- GB/T 545-1996海軍錨
- GB/T 3683-2011橡膠軟管及軟管組合件油基或水基流體適用的鋼絲編織增強(qiáng)液壓型規(guī)范
- GB/T 17766-1999固體礦產(chǎn)資源/儲(chǔ)量分類
- GB/T 1094.1-2013電力變壓器第1部分:總則
評(píng)論
0/150
提交評(píng)論