遍歷結構體_三菱ST語言編程(3)——結構體變量

e9c9760c4a73b1d45a16c4852240fd9e.gif

上篇文章介紹了數組,是一組相同類型數據的列表,那么不同類型的數據能否組合到一起用一個標簽表示呢?答案當然是可以的,而實現這個功能的就是結構體(struct)。

建立結構體

在三菱結構化編程的界面中左側程序部件里可以找到結構體標簽欄:

645faa361e631505ff5ab690a6dcd3be.png

結構體

右鍵-新建數據-輸入數據名-確定:

622f9a61fcde408303b5b757e9063222.png

建立結構體

確定后出現結構體設置窗口,在這個窗口中聲明這個結構體中想要包含的變量,這里隨便寫一些:

c24beacf8ef900ecf689fb85de74f4e0.png

編輯變量

結構體建立完成。

結構體中聲明的便簽與程序中直接聲明的標簽相比,它能夠聲明的只有基本數據,而在標準的ST語言中,結構體中聲明的變量可以是另一個結構體,甚至可以是功能塊,這里三菱PLC的結構體并不是完整版的結構體。

結構體的使用

與數組不同,結構體建立完成后并不能直接使用,需要在程序中聲明成標簽。可以將結構體看做是比位(bit),字(word)等基本數據類型更高級的數據類型。將上面建立的結構體聲明標簽并在程序中賦值:

bc861ea1248fdc2a044f1822a1246e14.png

聲明結構體標簽

聲明標簽設置數據類型時,在類型分類勾選結構體,然后在右側列表里找到想要聲明的結構體。

3375db7d76f57c094f37d043938b1f6a.png

變量調用

可以看到,在程序中寫出結構體標簽名stExample后面加上符號“.”會自動出現表格,而表格中的內容就是剛剛在結構體中建立的所有標簽,用鼠標或者方向鍵選中想要的標簽,回車確定即可寫入程序中:

d6991e53d112ecbe0010decff0b82211.png

變量賦值

結構體內部變量的賦值與普通變量沒有區別,相當于為每個變量加了一個前綴。

除了單個變量的賦值之外,結構體還可以整體賦值,例如將上面的結構體stExample的數據賦給新的結構體stCopy:

7a0c10d478810dd1b925a707638ae997.png

整體賦值

通過監看stCopy可以看到它的值與數據源stExample一致。只有兩個標簽的數據類型為相同結構體才可以整體賦值。

結構體有什么用?

這里只介紹了部分的了解

1.與數組配合,制作產品信息列表

相信工控人都聽過產品一詞,所有自動化設備都是在為產品服務。結構體可以用來記錄一個產品的多種信息。例如某電池生產線生產多種電池,每個電池有獨立的標簽,出廠前要測量每個電池的電壓,和外觀檢測。

根據需求可以建立如下結構體:

27fa11528385d5708077e13ddbb6b008.png

這個結構體中包含了一個電池的所有信息,然后根據需要把它聲明稱一定數量的數組:

afa544b7efeab4a0fb648d61eb9b72c9.png

聲明數組

這樣就stBattery這個標簽可以存儲100個電池的所有信息,我們在線監看一下這個結構體數組:

58dacb5af2fa58f020d28517af51acb0.png

監看結構體

在實際的項目中,可以用視覺判斷電池類型和外觀檢測,可以用掃碼器讀碼,電壓表測量電壓。每一塊電池的所有信息都可以很方便的緩存到這個結構體中,以便用于分揀、替廢等工序。我們可以寫一小段程序來篩選出不同類型合格的產品,例如:將電池分為4個類型,A電池電壓3.5V,B為2.7V,C為4.0V,D為1.5V,外形檢測正常的為合格電池。

3845a8dc3ff88762b2d7ba51ed0c5478.png

篩選電池

通過for循環遍歷列表中的所有電池結構體,將符合條件的電池信息按類型分別填入stBatteryA,stBatteryB,stBatteryC,stBatteryD四個結構體列表中。由于數據太多模擬的話一個一個賦值太費勁了,這里就不再仿真驗證了。

2.用于做功能塊(fb)的接口

在復雜的項目中,我們可能會用到輸入輸出變量非常多的自建功能塊,將有相同屬性的變量整合為結構體,會使程序變得清爽,例如:

2a182f36b9ad88644ca4fbe5281216dc.png

功能塊接口

圖中是使用FBD(功能塊圖,三菱叫結構化梯形圖)展現的一個自建功能塊,它的輸入結構體stDeviceStates包含34個bit變量,輸出結構體包含8個bit,如果全部寫成基本變量那這個功能塊就太長了,恐怕一個屏幕都裝不下,賦值也會變得困難。

在標準的ST語言中結構體的作用遠不止于此,但是本人用到的也比較少。

89740268cd16cbac42c2c61707aab639.png

d642e013c2967e5f1f172b8fe39f8671.gif

文章來源:綜合網絡,侵權聯刪,謝謝。

99ea51f97e5cf0b6c14fc4efbbe5f769.gif戳這里,實用案例

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454992.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454992.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于微信小程序swiper的問題

關于小程序swiper的問題 代碼 在官方示例上給swiper添加了currentbindchangecircular添加了一個buttonbindtap用于切換下一張 index.wxml <swiper indicator-dots"{{indicatorDots}}"bindchange"swiperChange"current"{{index}}"circular&quo…

PyQt5案例匯總(完整版)

個人博客點這里 PyQt5案例匯總(完整版) 起步 PyQt5是一套綁定Qt5的應用程序框架。他在Python 2.x和3.x中都是可用的。該教程使用的是Python3.x。 Qt庫是一套最有用的GUI庫。 PyQt5是作為一套Python模塊實現的。他已經超過620個類和6000個函數與方法。他是一個運行在所有主…

中的 隱藏鼠標菜單_Mac移動隱藏刪除頂部菜單欄圖標教程

蘋果菜單欄貫穿 Mac 的屏幕頂部。左側是蘋果菜單和應用菜單&#xff0c;應用菜單一般顯示你當前使用的Mac軟件的所有功能菜單。右側通常是以圖標顯示的狀態菜單&#xff0c;幫助你快速查看Mac的狀態以及快速訪問某些Mac軟件。移動圖標位置若想要重新排列狀態菜單欄的圖標&#…

可以用什么代替平面鏡

答案是鏡面 潛望鏡是利用平面鏡來改變光路轉載于:https://www.cnblogs.com/lidepeng/p/7280593.html

[hadoop] kettle spoon 基礎使用 (txt 內容抽取到excel中)

spoon.bat 啟動kettle。 測試數據 1. 新建轉換 輸入中選擇文本文件輸入 雙擊設置文本輸入 字符集、分隔符設置 獲取對應的字段&#xff0c;預覽記錄。 拖入 excel輸出&#xff0c;設置轉換關系 設置輸出路徑 獲取字段 啟動轉換 導入的excel數據&#xff08;設置好格式,圖中ID,A…

ffmpeg提取音頻播放器總結

ffmpeg提取音頻播放器總結&#xff1b; 一&#xff1a;簡介 從編寫音頻播放器代碼到完成播放器編寫&#xff0c;測試&#xff0c;整整5天的時間&#xff0c;這時間還不算之前對 ffmpeg熟悉的時間&#xff0c;可以說是歷經千辛萬苦&#xff0c;終于搞出來了&#xff0c;雖然最…

【BZOJ 4103】 [Thu Summer Camp 2015]異或運算 可持久化01Trie

我們觀察數據&#xff1a;樹套樹 PASS 主席樹 PASS 一層一個Trie PASS 再看&#xff0c;異或&#xff01;我們就把目光暫時定在01Tire然后我們發現&#xff0c;我們可以帶著一堆點在01Trie上行走&#xff0c;因為O(n*q*30m*30)是一個可選復雜度。 我們想一下我們正常的時候…

Docker學習筆記——Java及Tomcat Dockerfile

1、Java Dockerfile創建項目目錄java&#xff0c;目錄下上傳所需java版本壓縮包&#xff0c;并創建Dockerfile文件&#xff0c;項目結構如下&#xff1a;java-Dockerfile-jdk-8u111-linux-x64.gzDockerfile內容&#xff1a;# JAVA # Version 1.8.0_111 # SOURCE_IMAGE FROM cen…

rabbitmq接口異常函數方法_RabbitMQ監控(三):監控隊列狀態

#RabbitMQ 監控(三)驗證RabbitMQ健康運行只是確保消息通信架構可靠性的一部分&#xff0c;同時&#xff0c;你也需要確保消息通信結構配置沒有遭受意外修改&#xff0c;從而避免應用消息丟失。RabbitMQ Management HTTP API提供了一個方法允許你查看任何vhost上的任何隊列&…

FFMpeg語法參數中文參考手冊

要查看你的ff mpeg支持哪些 格式&#xff0c;可以用如下命令&#xff1a;$ ffmpeg -formats | less還可以把 視頻文件導出成jpg序列幀&#xff1a;$ ffmpeg -i bc-cinematic-en.avi example.%d.jpgdebian下安裝ffmpeg很簡單&#xff1a;&#xff03;apt-get install ffmpegffmp…

Java類集框架 —— LinkedHashMap源碼分析

前言 我們知道HashMap底層是采用數組單向線性鏈表/紅黑樹來實現的&#xff0c;HashMap在擴容或者鏈表與紅黑樹轉換過程時可能會改變元素的位置和順序。如果需要保存元素存入或訪問的先后順序&#xff0c;那就需要采用LinkedHashMap了。 LinkedHashMap結構 LinkedHashMap繼承自H…

apache 支持.htaccess重寫url

1. httpd.conf 添加&#xff1a; <Directory />Options Indexes FollowSymLinks MultiviewsAllowOverride allRequire all grantedRewriteEngine On</Directory> 開啟&#xff1a; 在phpinfo里找到&#xff1a; 說明開啟成功。 2.httpd-vhosts.conf &#xff08;開…

oom 如何避免 高并發_【高并發】高并發環境下如何防止Tomcat內存溢出?看完我懂了!!...

【高并發】高并發環境下如何防止Tomcat內存溢出&#xff1f;看完我懂了&#xff01;&#xff01;發布時間&#xff1a;2020-04-19 00:47,瀏覽次數&#xff1a;126, 標簽&#xff1a;Tomcat寫在前面隨著系統并發量越來越高&#xff0c;Tomcat所占用的內存就會越來越大&#xff0…

[JSOI2008]最小生成樹計數

OJ題號&#xff1a;  BZOJ1016 題目大意&#xff1a;   給定一個無向帶權圖&#xff0c;求最小生成樹的個數。 思路&#xff1a;   先跑一遍最小生成樹&#xff0c;統計相同權值的邊出現的個數。   易證不同的最小生成樹&#xff0c;它們不同的那一部分邊的權值實際上是…

vuex webpack 配置_vue+webpack切換環境和打包之后服務器配置

import axios from ‘axios‘import store from ‘../store/index‘const rootUrl process.env.API_ROOT//創建axios實例const service axios.create({timeout:30000 //超時時間})//添加request攔截器service.interceptors.request.use(config >{if (Object.keys(config.hea…

redis基本用法學習(C#調用FreeRedis操作redis)

FreeRedis屬于常用的基于.net的redis客戶端&#xff0c;EasyCaching中也提供適配FreeRedis的包。根據參考文獻4中的說法&#xff0c;FreeRedis和CsRedis算是近親&#xff08;都是GitHub中賬號為2881099下的開源項目&#xff09;&#xff0c;因此其用法特別相似。FreeRedis的主要…

opencv:圖像的基本變換

0.概述 圖像變換的基本原理都是找到原圖和目標圖的像素位置的映射關系&#xff0c;這個可以用坐標系來思考&#xff0c;在opencv中&#xff0c; 圖像的坐標系是從左上角開始(0,0)&#xff0c;向右是x增加方向(cols)&#xff0c;向下時y增加方向(rows)。 普通坐標關系&#xff1…

FFMpeg在Windows環境下的編譯

1&#xff0e;安裝MinGW &#xff08;1&#xff09;下載文件&#xff1a;MinGW-5.1.4.exe&#xff0c; &#xff08;2&#xff09;安裝時選擇下列組件&#xff1a; binutils-2.19.1-mingw32-bin.tar.gz gcc-core-3.4.5-20060117-3.tar.gz gcc-g-3.4.5-20060117-3.tar.gz …

中通知設置響鈴_主動切斷干擾源——手機“通知”精細化管理

上周去參加我福福幼兒園的母親節活動&#xff0c;內容是孩子和家長一起穿手鏈。期間我發現和我同桌的一個家長的手機不停在響&#xff0c;當然伴隨著注意力被打斷。不僅是這位家長自己&#xff0c;連我也受到了干擾。于是職業病又犯了&#xff0c;我悄悄的看了一眼這位家長的手…

OCM_第十九天課程:Section9 —》Data Guard _ DATA GUARD 原理/DATA GUARD 應用/DATA GUARD 搭建...

注&#xff1a;本文為原著&#xff08;其內容來自 騰科教育培訓課堂&#xff09;。閱讀本文注意事項如下&#xff1a;1&#xff1a;所有文章的轉載請標注本文出處。2&#xff1a;本文非本人不得用于商業用途。違者將承當相應法律責任。3&#xff1a;該系列文章目錄列表&#xf…