0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

學會高效編程及定義程序結構

vveeverything ? 來源:跟我學PLC吧 ? 2023-01-31 14:39 ? 次閱讀

為了結構化程序設計,STEP 7將用戶程序分類歸并為不同的塊,根據(jù)程序要求,可選用組織塊(OB)、功能塊(FB)、或功能(FC)三種類型的邏輯塊,而數(shù)據(jù)塊(DB)或(DI)則用來存儲執(zhí)行用戶程序時所需的數(shù)據(jù)。

三種編程方法:

(1)線性編程:將整個用戶程序寫在一個指令連續(xù)的塊中,處理器線性地或順序地掃描程序的每條指令。

(2)分部編程:將用戶程序分成相對獨立的指令塊、每個塊包含給定的部件組或作業(yè)組的控制邏輯。

(3)結構化編程:要求用戶程序提供一些通用的指令塊,以便控制一類相似或相同的部件,給通用指令提供的參數(shù)進一步說明各部件的控制差異。

一、數(shù)據(jù)塊及其數(shù)據(jù)結構

用戶程序運行所需的大量數(shù)據(jù)或變量存儲在數(shù)據(jù)塊中,數(shù)據(jù)塊也是實現(xiàn)各邏輯塊之間交換、傳遞和共享數(shù)據(jù)的重要途徑。對于CPU 314,用作數(shù)據(jù)塊的存儲器最多8KB,用戶定義的數(shù)據(jù)總量不能超過這個限制。對于數(shù)據(jù)塊必須遵循先定義后使用的原則。

1、定義數(shù)據(jù)塊

定義內容包括數(shù)據(jù)塊號及塊中的變量(包括:變量符號名,數(shù)據(jù)類型以及初始值等)。數(shù)據(jù)塊在使用前,必須作為用戶程序的一部分下載到CPU 中。

2、訪問數(shù)據(jù)塊

訪問時需要明確數(shù)據(jù)塊號和數(shù)據(jù)塊中的數(shù)據(jù)類型與位置。根據(jù)明確數(shù)據(jù)塊號的不同方法,可以用以多種方法訪問數(shù)據(jù)塊中的數(shù)據(jù)。

3168c9c4-a115-11ed-bfe3-dac502259ad0.png

由于有兩個數(shù)據(jù)塊寄存器(DB和DI寄存器),所以,最多可以同時打開兩個數(shù)據(jù)塊。一個作為背景數(shù)據(jù)塊,數(shù)據(jù)塊的起始地址存儲在DI寄存 器中;另一個作為共享數(shù)據(jù)塊,數(shù)據(jù)塊的起始地址存儲在DB寄存器中。

打開背景數(shù)據(jù)塊,在調用FB時可以自動實現(xiàn),由于調用FB時使用DI 寄存器,所以,一般不在FB程序中用OPN DI n指令打開數(shù)據(jù)塊。

3、背景數(shù)據(jù)塊和共享數(shù)據(jù)塊

任何FB、FC或OB均可讀寫存放在共享數(shù)據(jù)塊中的數(shù)據(jù)。背景數(shù)據(jù)塊是FB運行時的工作存儲區(qū),它存放FB的部分運行變量。調用FB時, 必須指定一個相關的背景數(shù)據(jù)塊。

作為規(guī)則,只有FB塊才能訪問存放 在背景數(shù)據(jù)塊中的數(shù)據(jù)。一般情況下,每個FB都有一個對應的背景數(shù) 據(jù)塊,一個FB也可以使用不同的背景數(shù)據(jù)塊。如果幾個FB需要的背景數(shù)據(jù)完全相同,為節(jié)省存儲器,則可以定義成一個背景數(shù)據(jù)塊,供它們分別使用。

二、數(shù)據(jù)結構

3189289a-a115-11ed-bfe3-dac502259ad0.png

1、用戶數(shù)據(jù)類型

STEP 7允許將基本或復式組合成“用戶”自已定義的數(shù)據(jù)類型,這種類型稱為用戶數(shù)據(jù)類型(UDT)。用戶數(shù)據(jù)類型必須首先單獨建立,并存放 在稱為UDT的特殊數(shù)據(jù)塊中。

建立用戶數(shù)據(jù)類型的目的,是為了將UDT作為一種數(shù)據(jù)類型使用,以方便定義多個結構相同的構造變量。

2、功能塊編程及調用

一個程序由許多部分(子程序)組成,STEP 7將這些部分稱為邏輯塊,并允許塊間相互調用。

319bfee8-a115-11ed-bfe3-dac502259ad0.png

功能塊由兩個主要部分組成:一部分是每個功能塊的變量聲明表,變量聲表聲明此塊的局部數(shù)據(jù);另一部分是邏輯指令組成的程序,程序要用到變量聲明表中給出的局部數(shù)據(jù)。

當調用功能塊時,需要提供塊執(zhí)行時要用到的數(shù)據(jù)或變量,也就是將外部數(shù)據(jù)傳遞給功能塊,這稱為參數(shù)傳遞。

3、變量聲明表(局部數(shù)據(jù))

局部數(shù)據(jù)分為參數(shù)和局部變量兩大類,局部變量又包括靜態(tài)變量和臨時變量(暫態(tài)變量)兩種。參數(shù)是在調用塊和被調用塊間傳遞的數(shù)據(jù)。靜態(tài)變量和臨時變量是僅供邏輯塊本身使用的數(shù)據(jù)。

31b1cade-a115-11ed-bfe3-dac502259ad0.jpg

4、邏輯塊局部數(shù)據(jù)的數(shù)據(jù)類型

在變量聲明表中,要明確局部數(shù)據(jù)的數(shù)據(jù)類型,這樣操作系統(tǒng)才能給變量分配確定的存儲空間。局部數(shù)據(jù)可以是基本數(shù)據(jù)類型或是復式數(shù)據(jù)類型, 也可以是專門用于參數(shù)傳遞的所謂“參數(shù)類型”。

31cd65a0-a115-11ed-bfe3-dac502259ad0.jpg

STEP 7對分配給塊局部數(shù)據(jù)(在變量聲明表中)的數(shù)據(jù)類型(基本、復式、參數(shù))是有一定限制的。

31ef3734-a115-11ed-bfe3-dac502259ad0.jpg

STEP 7允許用物理地址(絕對地址)或符號地址或常數(shù)等形式作為實參給形參賦值,但對于不同的形參類型,STEP 7限制了賦值形式。

32009ed4-a115-11ed-bfe3-dac502259ad0.png

5、功能塊編程與調用舉例

對功能塊編程分兩步進行:第一步工作是定義局部變量(填寫局部變量表);第二步是編寫要執(zhí)行的程序。寫功能塊程序時,可以兩種方式使用局部變量:

①使用變量名,此時變量名前綴“?!保詤^(qū)別于在符號表中定義的符號地址,增量方式下,前綴 會自動產生;

②直接使用局部變量的地址,這種方式只對背景數(shù)據(jù)塊和L堆棧有效。

例一:二分頻器

二分頻器是一種具有一個輸入端和一個輸出端的功能單元,輸出頻率為輸入頻率的一半。

(1)FC1的變量聲明表

32144362-a115-11ed-bfe3-dac502259ad0.png

(2)FC1梯形圖程序

32956172-a115-11ed-bfe3-dac502259ad0.png

(3)OB1調用梯形圖程序

32a82e38-a115-11ed-bfe3-dac502259ad0.png

例二:時鐘脈沖發(fā)生器

使用定時器實現(xiàn)自由設定時鐘脈沖發(fā)生器功能脈沖占空系數(shù)1:1。

(1)FC1變量聲明表

32c7470a-a115-11ed-bfe3-dac502259ad0.png

(2)FC1梯形圖程序

32e35c2e-a115-11ed-bfe3-dac502259ad0.jpg

(3)OB1調用梯形圖程序

32f0b676-a115-11ed-bfe3-dac502259ad0.png


三、可編程序控制器應用設計

PLC系統(tǒng)設計步驟:

3301349c-a115-11ed-bfe3-dac502259ad0.jpg

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲器
    +關注

    關注

    38

    文章

    7365

    瀏覽量

    163085
  • 數(shù)據(jù)

    關注

    8

    文章

    6713

    瀏覽量

    88300
  • 編程
    +關注

    關注

    88

    文章

    3521

    瀏覽量

    93262

原文標題:西門子PLC|學會高效編程及定義程序結構

文章出處:【微信號:跟我學PLC,微信公眾號:跟我學PLC吧】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    labview中常用的程序結構有哪幾種

    ,簡稱NI)開發(fā),廣泛應用于工程、科學和教育領域。LabVIEW通過圖形化編程界面,使用戶能夠快速構建復雜的數(shù)據(jù)采集、儀器控制、信號處理和用戶界面等應用程序。在LabVIEW中,程序結構是組織代碼
    的頭像 發(fā)表于 09-04 16:32 ?205次閱讀

    plc編程st語言怎么編

    控制。下面是一個基本的ST語言編程指南,包括如何開始編寫一個簡單的程序。 1. 基本結構 ST程序通常包含變量聲明、函數(shù)(或過程)定義和主
    的頭像 發(fā)表于 08-25 10:05 ?290次閱讀

    鴻蒙原生應用元服務開發(fā)-倉頡基本概念程序結構

    通常,我們都會在擴展名為 .cj 的文本文件中編寫倉頡程序,這些程序和文件也被稱為源代碼和源文件,在程序開發(fā)的最后階段,這些源代碼將被編譯為特定格式的二進制文件。 在倉頡程序的頂層作用
    發(fā)表于 08-13 10:57

    技術干貨驛站 ▏深入理解C語言:掌握程序結構知識

    在計算機編程的世界中,C語言被廣泛認可為一門強大而高效編程語言,其簡潔的語法和直接的指令使得它成為了許多程序員的首選。了解C語言的程序結構
    的頭像 發(fā)表于 07-27 08:45 ?876次閱讀
    技術干貨驛站 ▏深入理解C語言:掌握<b class='flag-5'>程序結構</b>知識

    如何看懂檢測設備程序邏輯

    檢測設備程序邏輯是確保設備正常運行和提高檢測效率的關鍵。本文將介紹如何看懂檢測設備程序邏輯,包括程序結構、程序設計、程序調試、
    的頭像 發(fā)表于 07-17 16:50 ?238次閱讀

    人工智能輔助編程工具的定義和工作原理

    員的工作方式。這類工具利用機器學習、深度學習等先進技術,幫助程序員更高效、更準確地編寫和維護代碼,極大地提升了軟件開發(fā)的效率和質量。本文將對人工智能輔助編程工具進行深入解析,探討其定義
    的頭像 發(fā)表于 07-05 18:00 ?756次閱讀

    數(shù)控程序編程通??煞譃槟膬纱箢?/a>

    編程定義 手工編程是指數(shù)控程序員根據(jù)零件的加工要求和機床的性能,通過人工編寫數(shù)控程序的過程。手工編程
    的頭像 發(fā)表于 07-01 14:17 ?457次閱讀

    ABB機器人的基本程序數(shù)據(jù)有哪些

    ABB機器人是一種廣泛應用于工業(yè)自動化領域的智能設備,其基本程序數(shù)據(jù)是實現(xiàn)機器人自動化控制的基礎。本文將詳細介紹ABB機器人的基本程序數(shù)據(jù),包括程序結構、數(shù)據(jù)類型、指令系統(tǒng)、程序控制、
    的頭像 發(fā)表于 06-17 09:20 ?599次閱讀

    嵌入式中C語言結構體基本實現(xiàn)

    C語言中的數(shù)組只能允許程序定義存儲相同類型數(shù)據(jù)。但是結構是C語言編程中允許您存儲不同數(shù)據(jù)類型的數(shù)據(jù)。 結構體的
    的頭像 發(fā)表于 05-11 08:49 ?787次閱讀
    嵌入式中C語言<b class='flag-5'>結構</b>體基本實現(xiàn)

    嵌入式系統(tǒng)中C語言結構體的基礎實現(xiàn)與應用

    C語言中的數(shù)組只能允許程序定義存儲相同類型數(shù)據(jù)。但是結構是C語言編程中允許您存儲不同數(shù)據(jù)類型的數(shù)據(jù)。
    發(fā)表于 03-12 14:29 ?320次閱讀
    嵌入式系統(tǒng)中C語言<b class='flag-5'>結構</b>體的基礎實現(xiàn)與應用

    如何使用C語言回調函數(shù)降低程序耦合性呢?

    耦合性是程序結構中各個模塊之間相互關聯(lián)的度量。它取決于各個模塊之間接口的復雜程度、調用模塊的方式以及哪些信息通過接口。
    的頭像 發(fā)表于 02-22 11:34 ?446次閱讀
    如何使用C語言回調函數(shù)降低<b class='flag-5'>程序</b>耦合性呢?

    梯形圖編程原則與PLC程序設計方法

    輸入 / 輸出繼電器、內部輔助繼電器、定時器、計數(shù)器等器件的觸點可以多次重復使 用,無需復雜的程序結構來減少觸點的使用次數(shù)。
    的頭像 發(fā)表于 12-15 13:34 ?1701次閱讀
    梯形圖<b class='flag-5'>編程</b>原則與PLC<b class='flag-5'>程序</b>設計方法

    java源程序是由類定義組成的嗎

    Java源程序是由類定義組成的。在Java中,類是用來定義對象的一種結構化方式。一個類可以包含字段(變量)和方法(函數(shù)),它們一起描述了對象的屬性和行為。 在Java中,每個源文件都必
    的頭像 發(fā)表于 11-28 16:36 ?530次閱讀

    golang結構體如何定義?如何使用呢?

    結構體是go語言最重要的數(shù)據(jù)結構之一,go和其它編程語言不一樣,它沒有類的概念,類比過來struct就相當于其它語言中的類,因此十分重要。
    的頭像 發(fā)表于 11-28 10:36 ?338次閱讀

    c源程序的基本結構是什么

    C語言源程序的基本結構是由多個函數(shù)組成的。每個程序至少包含一個主函數(shù),也可以包含其他的函數(shù),而這些函數(shù)相互之間可以進行相互調用,以完成特定的任務。 一、頭文件部分 在一個C語言源程序
    的頭像 發(fā)表于 11-24 10:24 ?1468次閱讀