技(jì)術(shù)論壇
>
硬件在環的過零檢測仿真實驗教程
硬件在環的過零檢測仿真實驗教程
發布:2021-12-31

1、實驗目的

基于Simulink官方的過零檢測仿真案例,采用低(dī)代碼控制(zhì)器(qì)代替其中的開(kāi)關模塊,選擇輸出信号,實現硬件在環仿真。


2、實驗模型

本實驗原始模型來(lái)自于Simulink官方的房(fáng)屋溫度控制(zhì)模型,官網給出了該模型原理(lǐ)的詳細介紹(https://ww2.mathworks.cn/help/simulink/slref/accurate-zero-crossing-detection.html),在MATLAB命令行(xíng)窗口中輸入命令:openExample('simulink_general/sldemo_zeroxingExample')可(kě)打開(kāi)該模型,如下圖所示:

原始模型.png

采用低(dī)代碼控制(zhì)器(qì)代替開(kāi)關模塊進行(xíng)過零檢測時(shí),将開(kāi)關模塊替換為(wèi)S-函數(shù),在S-函數(shù)中實現與低(dī)代碼控制(zhì)器(qì)通(tōng)信功能,修改後的模型如下圖所示:

仿真模型.png

3、實驗步驟

低(dī)代碼控制(zhì)器(qì)的特點在于不需要對控制(zhì)器(qì)進行(xíng)代碼的編寫,隻要在excel文件之中進行(xíng)測點配置、通(tōng)信通(tōng)道(dào)和(hé)AOE配置就可(kě)以實現相應的控制(zhì)。

3.1、編寫低(dī)代碼控制(zhì)器(qì)配置文件

低(dī)代碼控制(zhì)器(qì)文件配置分為(wèi)三個(gè)部分:測點配置、通(tōng)信通(tōng)道(dào)配置和(hé)AOE配置。測點配置用于配置控制(zhì)器(qì)輸入和(hé)輸出信号點的參數(shù),本案例中需要的信号是輸入的正弦信号絕對值、按時(shí)間(jiān)生(shēng)成的過零信号,通(tōng)信通(tōng)道(dào)的配置是為(wèi)了将控制(zhì)器(qì)與simulink仿真模型建立modbus通(tōng)信,實現仿真模型與控制(zhì)器(qì)的信息交互,而AOE配置是建立AOE模型網絡來(lái)實現所需的控制(zhì)邏輯和(hé)功能。

3.1.1、測點配置

 測點配置表格的內(nèi)容包含了測點的點号、名稱、别名、是否離散、是否是計(jì)算(suàn)點以及默認值等。點号是程序裏給這個(gè)測點的編号,可(kě)以自己定義,使用時(shí),測點與通(tōng)信通(tōng)道(dào)的點号一一對應完成對接。别名是英文字母與下劃線組合使用,可(kě)以當做(zuò)變量名用于AOE表格裏表達式的書(shū)寫,使之可(kě)以不用點号來(lái)表達,使得(de)表達式的意思表達得(de)更加清楚。本案例測點配置如下圖所示:

測點配置.png

3.1.2、通(tōng)信通(tōng)道(dào)配置

低(dī)代碼控制(zhì)器(qì)通(tōng)過Modbus協議與Simulink進行(xíng)通(tōng)信。由于Matlab僅有(yǒu)Modbus客戶端功能,因此需要将低(dī)代碼控制(zhì)器(qì)配置為(wèi)Modbus服務端,如下圖所示,其中通(tōng)道(dào)數(shù)量為(wèi)1,服務端口需設置為(wèi)未占用端口。

服務端配置.png

然後對客戶端信息和(hé)測點信息等進行(xíng)配置,如下圖所示:

通(tōng)道(dào)配置.png

3.1.3、AOE配置

本案例中AOE文件配置內(nèi)容分為(wèi)三個(gè)部分。

AOE網絡聲明(míng)

 AOE網絡聲明(míng)部分,定義了表格之中的AOE網絡個(gè)數(shù)和(hé)整體(tǐ)信息以及一些(xiē)變量的初始值。其中觸發條件分為(wèi)三類:SimpleRepeat(定時(shí)觸發,需要自行(xíng)設定定時(shí)時(shí)間(jiān))、TimeDriven(時(shí)間(jiān)驅動)、EventDriven(事件驅動);變量的定義方式為(wèi):<變量名1>:<初值1>;<變量名2>:<初值2>;…。本案例中的AOE網絡聲明(míng)如下所示:

網絡聲明(míng).png

控制(zhì)器(qì)的作(zuò)用是實現過零檢測,所以名稱定為(wèi)過零檢測,觸發條件設置為(wèi)事件控制(zhì)。變量初始值定義了過零比較值threshold為(wèi)0.5。

AOE節點聲明(míng)

 節點類型分為(wèi)Switch和(hé)Condition兩類,其中Switch節點為(wèi)二分支邏輯判斷,觸發邏輯為(wèi):表達式為(wèi)真時(shí),該節點序号為(wèi)1的邊進行(xíng)動作(zuò);表達式為(wèi)假時(shí),序号為(wèi)2的邊進行(xíng)動作(zuò)。當Switch節點為(wèi)AOE網入度為(wèi)0的節點(首節點)時(shí),Switch節點直接觸發,若超時(shí)時(shí)間(jiān)內(nèi)表達式為(wèi)真,則執行(xíng)動作(zuò)1,為(wèi)假或者發生(shēng)超時(shí)事件執行(xíng)動作(zuò)2;Condition節點的表達式為(wèi)事件觸發條件,超時(shí)時(shí)間(jiān)內(nèi)表達式為(wèi)真,則節點事件發生(shēng),該節點出發的所有(yǒu)動作(zuò)并行(xíng)執行(xíng)。本案例的控制(zhì)邏輯可(kě)以用AOE網表示如下:

AOE圖.png

對應上(shàng)圖需要定義的節點有(yǒu)3個(gè),節點聲明(míng)如下所示:

節點聲明(míng).png

 第一個(gè)節點是simulink通(tōng)信事件節點,為(wèi)事件觸發類型,當DoCal_POINT>0.5時(shí),也就是測點11輸出1,表示允許控制(zhì)器(qì)計(jì)算(suàn)時(shí),該節點被觸發,進入運算(suàn)流程。
第2個(gè)節點是邏輯判斷節點,對于設定值進行(xíng)大(dà)小(xiǎo)比較判斷開(kāi)關控制(zhì)信号是否大(dà)于threshold,也就是測點7的值是否大(dà)于0,完成邏輯判斷後根據結果進入兩條不同動作(zuò)的邊:判斷結果為(wèi)真執行(xíng)第1條邊,否則執行(xíng)第2條邊,邊的順序是就是文件裏面定義的順序。
最後一個(gè)節點是結束節點,是事件觸發類型,當所有(yǒu)的計(jì)算(suàn)步驟都完成,信号傳輸後,進入結束節點,計(jì)算(suàn)結束,并将DoCal_POINT的數(shù)值改為(wèi)0,等待下一次通(tōng)信之後,開(kāi)始計(jì)算(suàn)。超時(shí)時(shí)間(jiān)定為(wèi)100ms,因為(wèi)需要DoCal_POINT置0再讓AOE執行(xíng)過程結束,防止AOE被反複觸發。

AOE邊聲明(míng)

 邊需要聲明(míng)首尾節點,格式為(wèi):<尾節點ID>;<首節點ID>。邊的方向為(wèi):尾節點→首節點。邊的動作(zuò)類型有(yǒu):None、SetPoints、Solve、Milp、SimpleMilp、Nlp。其中,SetPoints除了對測點設值之外,還(hái)可(kě)以進行(xíng)變量定義和(hé)計(jì)算(suàn),動作(zuò)參數(shù)分為(wèi)數(shù)字量和(hé)模拟量;Solve為(wèi)求解方程Ax=b;Milp為(wèi)混合整數(shù)線性規劃問題求解;Nlp為(wèi)非線性規劃問題求解。本案例中的AOE邊聲明(míng)如下圖所示:

邊聲明(míng).png

 本實驗中的邊聲明(míng)的動作(zuò)類型是SetPoints,SetPoints類型的動作(zuò)邊在連接節點的同時(shí)還(hái)需要進行(xíng)動作(zuò)。接下來(lái)簡單介紹每條邊的動作(zuò):
1. 連接第1和(hé)第2節點的邊:動作(zuò)名稱:aoe觸發測點複位,需要在這個(gè)邊的動作(zuò)上(shàng)将DoCal_POINT置0,防止循環結束時(shí)還(hái)未置0導緻網絡再觸發。
2. 連接第2和(hé)第3節點的邊:動作(zuò)名稱:輸出正弦波絕對值,動作(zuò)類型為(wèi)SetPoints,當第2個(gè)節點判斷為(wèi)真的時(shí)候,需要輸出三組輸出信号的絕對值,
3. 連接第2和(hé)第3節點的邊:動作(zuò)名稱:輸出正弦波限幅值,動作(zuò)類型為(wèi)SetPoints,當第2個(gè)節點判斷為(wèi)假的時(shí)候,需要輸出三組輸出信号的限幅值。

3.1.4、配置文件存儲

在excel表格中編寫完成之後,将表格另存為(wèi).csv格式(純文本形式存儲表格數(shù)據)文件供低(dī)代碼控制(zhì)器(qì)使用。

3.4、編寫Simulink與控制(zhì)器(qì)通(tōng)信程序

打開(kāi)Simulink模型中S-函數(shù)的源文件,将S-函數(shù)的輸入信号數(shù)量設置為(wèi)2、輸出信号數(shù)量設置為(wèi)1,采樣時(shí)間(jiān),采樣時(shí)間(jiān)設置為(wèi)0.01(每仿真10ms與控制(zhì)器(qì)通(tōng)信一次)。添加建立Modbus通(tōng)信的命令,其中需要服務端ip和(hé)端口參數(shù):

主站(zhàn)建立通(tōng)信.png

添加溫度設定值、溫度測量值、讀取控制(zhì)指令程序:

通(tōng)信內(nèi)容.png

3.5、低(dī)代碼控制(zhì)器(qì)配置與運行(xíng)

将控制(zhì)器(qì)電(diàn)源線與電(diàn)源相連,打開(kāi)電(diàn)源開(kāi)關,再用網線将控制(zhì)器(qì)與計(jì)算(suàn)機連接,就可(kě)以使用。利用發現工具獲得(de)控制(zhì)器(qì)ip,如下圖所示:

發現工具.png

當控制(zhì)器(qì)啓動并接入計(jì)算(suàn)機,被計(jì)算(suàn)機發現後,可(kě)以得(de)到如下界面(打開(kāi)一個(gè)浏覽器(qì),并輸入控制(zhì)器(qì)地址也可(kě)以得(de)到如下界面)。

登錄界面.png

點擊界面中控制(zhì)器(qì)id,進入控制(zhì)器(qì)配置界面,選擇并導入測點、通(tōng)道(dào)和(hé)AOE配置文件(excel文件另存為(wèi).csv格式文件後使用,可(kě)點擊配置文件和(hé)仿真模型.rar下載配置文件和(hé)仿真模型,中points-aoe-zeroxing.csv為(wèi)測點配置文件,tcp-mbd-transport-SH_sim.csv為(wèi)通(tōng)道(dào)配置文件,aoe-zeroxing.csv為(wèi)AOE配置文件,zeroxing_test.slx為(wèi)仿真模型,zeroxingCtrl.m為(wèi)S-函數(shù)源文件,其中語句m = modbus('tcpip', '127.0.0.1', 502);中的ip需要修改為(wèi)控制(zhì)器(qì)實際ip),點擊界面中的“reset”即可(kě)保存配置并運行(xíng)控制(zhì)器(qì)。


配置界面.png


4、運行(xíng)仿真

先運行(xíng)低(dī)代碼控制(zhì)器(qì),再運行(xíng)Simulink模型,進行(xíng)仿真。得(de)到的利用低(dī)代碼控制(zhì)器(qì)的輸出信号與原模型十分接近。

仿真結果.png

由該仿真實驗可(kě)以看出,使用低(dī)代碼控制(zhì)器(qì)并不需要繁複的程序代碼編寫,隻需要編寫測點配置、通(tōng)信通(tōng)道(dào)配置和(hé)AOE配置文件就可(kě)以實現通(tōng)信和(hé)控制(zhì)功能,與目前常用的其他控制(zhì)器(qì)相比,更方便于非編程技(jì)術(shù)背景人(rén)員的應用。