色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

SCL與STL的區別是什么?SCL常見問題及解決辦法!

jf_HqYZKkad ? 來源:自動化微招聘 ? 2023-01-17 14:27 ? 次閱讀

【導讀】經典STEP7的SCL語言和博途的SCL略有不同,下面就經典STEP7的SCL與STL區別及一些常見問題做一個總結。

【一】SCL 與 STLSCL(StructuredControlLanguage)語言,也就是結構化控制語言,它其實和IEC標準制定的ST語言是一樣的。S7-SCL 可以編譯成 STL, 雖然其代碼量相對于 STL 編程有所增加,但我們更關心的是程序結構和程序的總體效率。類似于計算機行業的發展,匯編語言已經被舍棄,取而代之的是 C/C++等高級語言。S7-SCL 對工程設計人員要求較高,需要其具有一定的計算機高級語言的知識和編程技巧。

STL是STEP7時代推出的語言,它不是STRUCT TEXT LANGUAGE的縮寫,所以它和ST語言完全沒關系。STL語言是一種匯編語言,是面向機器底層的語言,可以直接操作寄存器,可讀性不強,和80C51單片機的機器語言是一個層面。所以它是一種低級語言,而ST和SCL都是中高級語言。

【二】S7-SCL 常見問題

(1)如何規范地的開發一個 S7-SCL 程序?

解答:開發一個 S7-SCL 程序,應當遵循如下流程:

? 規劃需要的塊類型,即程序的整體結構。? 規劃子任務(FB,FC 等等)? 定義各個子任務的之間輸入/輸出接口? 定義各個子任務在原文件中的順序及調用關系? 定義符號表? 編譯檢查? 下載調試

(2)S7-SCL 支持哪些 STEP7 塊,與其它語言有什么關系?

解答:S7-SCL 支持如下 STEP7 的塊:OB,FC,FB,DB,UDT。在 S7 程序中,S7-SCL 塊可以與其它STEP7 編程語言生成的塊互相調用。S7-SCL 可以被編譯成 STL, S7-SCL 生成的塊也可以作為庫文件被其它語言引用。由于 S7-SCL 程序由 ASCII 文本構成,所以它非常容易被導入或導出。

(3)為什么雙擊打開 S7-SCL 類型的程序后,顯示的格式卻是 STL 格式?

解答:S7-SCL 程序編譯后生成的執行代碼實際上為 STL 格式,如下圖中的 FC1, 雖然其標示為 SCL格式,但如果用戶將 Source 目錄中的 FC1 的源文件刪除后,再雙擊打開 FC1 后,顯示的將為 STL格式。

f7bbe60a-9595-11ed-bfe3-dac502259ad0.png

(4)什么是 OK Flag?

解答:在 S7-SCL 程序中,OK 是一個布爾類型的特殊本地變量。它用來顯示塊執行是否正確。OK 標志的使用與 STL 編程中對于 FC/FB 的 ENO 處理(STL 是用狀態字的 BR 位來保存狀態)非常相似。在程序的開始,可以將 OK 標志賦值為 TURE,如果程序執行有錯誤(例如 0 作為除數),則當程序退出時,用戶通過程序將 OK 標志改寫為 FALSE,此數值將被存儲在輸出參數 ENO 當中。OK 標志是一個系統變量,不需要定義,如果用戶希望在程序中使用此標志,可以在 S7-SCL編程菜單 Options>Customize>Compiler 中,應當選擇 Set OK flag.項。否則 ENO 將無法被評估。

OK 標志使用的例子:

OK:= TRUE;Division:= 1 / IN;IF OK THEN // 除法操作正常;// 此處可以添加在除法操作正常情況下,其它的用戶程序ELSE //除法操作不正常;// :END_IF;

(5)在 STL 中可以讀取一個組織塊的信息 (例如 OB1 中的循環時間),在 S7-SCL 中是否存在同樣的可能?

解答:STEP7 中的任意 OB 塊在生成之后,其內部都自動生成一些特有的臨時變量,例如 OB1 中的變量OB1_PREV_CYCLE 即為CPU 上個掃描周期所用的時間。在 S7-SCL 編輯器中,通過“Insert> Block Template > OB”創建一個 OB 模板。在缺省情況下,此模板的臨時變量區域將創建一個ARRAY OF BYTE 類型的臨時變量。此區域與 OB 塊的臨時變量區域是相對應的,但由于沒有變量名稱標識,并且數據類型也不相同,所以用戶使用起來非常不方便。如果用戶想要使用 S7-SCL格式的 OB 塊內的特有變量,請按下列步驟進行:

? 在路徑 STEP7 的安裝路徑 Step7S7DATAS7wiz 下,包含所有 OB 塊的 STL 格式模板,可以使用寫字板打開這些模板 (例如 OB31.awl), 并復制相應變量定義。? 創建一個新的 S7-SCL 源文件并插入剛才復制的變量定義。? 調整 S7-SCL 源文件中的語法結構? 在這個程序的開始部分, 可以設置 "Title" 和"Version" , 例如 Title=' ' 和 Version= '0.1'? 在 BEGIN 語句后面插入一個分號,至此,即完成格式修改。另外,也可以打開本文中的 S7-SCL 例子目錄中的 OB_Templ 項目,其中包括了 44 個 S7-SCL 源文件格式的組織塊。

(6)如何理解 FC/SFC 的輸出參數 RET_VAL(返回值)?

解答:對于此問題,如果讀者對 PASCAL 語言或者高級編程語言非常熟悉,可能此問題就非常容易解釋。許多 SFC (系統功能) 都有輸出參數 RET_VAL (返回值) ,它提供一個可供評估的錯誤代碼。STEP 7 在線幫助中提供有更多關于系統功能和輸出參數 RET_VAL 的信息。通過在 SIMATIC管理器中選中 SFC 然后按“F1”鍵可以獲取相關的在線幫助信息。同樣,一個 FC 也可以返回一個結果,下面給出了一些例子,說明了如何在 S7-SCL 中調用帶有返回值 (RET_VAL) 的功能 (FC 或 SFC)。

定義 FC1, 函數類型為 INT (返回值)

f7db2060-9595-11ed-bfe3-dac502259ad0.jpg

調用 FC1,得到返回值:

f7e7a0b0-9595-11ed-bfe3-dac502259ad0.jpg

調用一個系統功能 (SFC24):當調用系統功能 SFC 24 “TEST_DB”(測試數據塊) 時,得到關于 CPU主內存中一個數據塊的信息。SFC24 確定指定 DB 的數據字節數,并檢查該 DB 是否受到寫保護。選定 DB 所包含的數據字節數通過參數“DB_LENGTH”輸出,參數“WRITE_PROT”包含關于選定 DB 的寫保護 ID 的信息 (FALSE 表示沒有寫保護)。

f7fecbc8-9595-11ed-bfe3-dac502259ad0.png

(7)在 S7-SCL 程序中,PLC 中的地址標識與 STL/LAD 中的地址標識有何區別,使用中有何注意事項?

解答:在 S7-SCL 程序中,PLC 中的地址標識與 STL/LAD 中的地址標識基本相同,方便了編程人員快速掌握 S7-SCL 語言。下圖為 PLC 中的 S7-SCL 程序地址標識格式,圖中一些格式有些特殊,實際上,下面的格式在 S7-SCL 中都是正確的。

DB1.D0.0:=DB1.DBX0.1;DB1.DB1:=DB1.DBB1;DB1.DW2:=DB1.DBW2;DB1.DD4:=DB1.DBD4;QX0.0:=Q0.0;IX0.0:=I0.0;MX0.0:=M0.0;

所以說,在一般情況下,編程人員依舊可以 STL 的標識方式用于 S7-SCL。注意:如果數據塊編號及地址都使用了間接尋址方式,則必須使用 S7-SCL特定的標識方式,例如如下語句:

STATUS_1:=WORD_TO_BLOCK (INDEX).DW [COUNTER]; (此格式正確)STATUS_1:=WORD_TO_BLOCK (INDEX).DBW [COUNTER]; (此格式錯誤)

f817c600-9595-11ed-bfe3-dac502259ad0.jpg

上圖為S7-SCL 中的 PLC 地址格式。x 可以為 0 至 65535 之間的數字(絕對地址),y 可以為 0 至 7 之間的數字(位地址),對于其它 FB,OB,DB, T,C 等等的標識格式,S7-SCL 格式基本與 STL 格式相同,此處不做說明。

(8)為什么用戶人工輸入的程序在編譯時經常提示語法錯誤?

解答:S7-SCL 程序和所有的高級語言一樣,有著自己特定的語法,而很多編程人員容易在人工輸入程序時忽視語法格式,這樣就造成編譯錯誤。因此強烈建議編程人員使用 S7-SCL 的模板向導。在菜單 Insert 中,提供了 Block Call, Block Template, Control Structure, 三個向導,用戶可以通過使用此向導,提高輸入效率。例如在下圖中指出了兩個常見錯誤,用戶如果使用向導,就不容易出錯誤:

f82fa072-9595-11ed-bfe3-dac502259ad0.png

(9)S7-SCL 程序中如何使用多重背景?

解答:S7-SCL 程序中可以使用多重背景,下面的程序列出了正確格式,聲明完成后,在程序中即可調用:

Supply1 : FB10; //將 Supply1 定義為 FB10 類型Supply2,Supply3,Supply4 : FB100; //將 Supply2,Supply3,Supply4 定義為 FB100 類型

(10)如何在 S7-SCL 程序中實現數據塊間接尋址?

解答:S7-SCL 程序中對數據塊間接尋址提供了良好的支持,編程也很簡單。

<1>下面的程序列出了正確格式:

STATUS_1:= DB11.DW[COUNTER]; //字節間接尋址STATUS_2:= DB12.DX[WNO, BITNO]; //位間接尋址,用戶改變 WNO,BITNO 數值即可STATUS_1:= Database1.DW[COUNTER]; // Database1 為 DB 類型的本地變量STATUS_2:= Database2.DX[WNO, BITNO];STATUS_1:= WORD_TO_BLOCK_DB(INDEX).DW[COUNTER];//INDEX 被定義為 BLOCK_DB 數據類型,COUNTER 為整數數據類型,這樣可以實現數據塊編號,字節地址同時間接尋址,此功能是一種功能很強間接尋址方式。

<2>以下是數據塊直接尋址方式格式:

STATUSBYTE :=DB101.DB10; //字節直接尋址格式STATUS_3 :=DB30.D1.1; //位直接尋址格式MEASVAL :=DB25.DW20; //字直接尋址格式STATUSBYTE :=Status_data.DB10;STATUS_3 :="New data".D1.1;MEASVAL :=Measdata.DW20;STATUS_1 :=WORD_TO_BLOCK_DB (INDEX).DW10;

(11)在 S7-SCL 程序中調用 FC/FB 與在 STL/LAD 中調用 FB/FC 有何區別?

解答:在 STL/LAD 程序中調用 FB 可以不把參數填寫完整,但在 S7-SCL 程序中調用 FB 時,必須把FB參數填寫完整;對于FC的調用S7-SCL與STL/LAD區別不大。強烈建議編程人員使用S7-SCL的模板向導調用 FB。

(12)為了將 S7-SCL 中的位數據類型(BYTE, WORD 或 DWORD)轉換到“REAL”數據類型時,需要使用哪種數據類型轉換程序?

解答:為了將 S7-SCL 中的位數據類型(BYTE, WORD 或 DWORD)轉換到數字數據類型“REAL”時,需要使用以下指令:

? 從 BYTE 到 REAL:“DINT_TO_REAL(DWORD_TO_DINT(BYTE_TO_DWORD(value))”? 從 WORD 到 REAL:“DINT_TO_REAL(DWORD_TO_DINT(WORD_TO_DWORD(value))”? 從 DWORD 到 REAL:“DINT_TO_REAL(DWORD_TO_DINT(value))”

注意事項:用戶在將 BYTE, WORD 或 DWORD 數據類型轉換到 “REAL” 數據類型時,S7-SCL中常見的錯誤可以參考下例:

從 WORD 到 REAL:“DWORD_TO_REAL(WORD_TO_DWORD(value))”(錯誤程序)。

如果執行了這一轉換,會得到錯誤的結果。原因:DINT_TO_REAL 函數將把源數據轉換并按照 IEEE REAL 的格式存儲到目的變量,而DWORD_TO_REAL 僅僅是從源數據拷貝位串至目的變量。因此,為了獲得正確的“REAL”數,必須總是通過中間步驟“DWORD_TO_DINT”和“DINT_TO_REAL”實現。

(13)在 S7-SCL 中如何區分某個變量名是本地變量,還是符號名?

解答:S7-SCL 中本地變量與符號名的引用有如下區別:

? 如果引用中只有變量名,則此變量為本地變量,如:Motor_Status:= Motor_1? 如果引用中變量名稱上包括“”,則此變量為符號名,如:Motor_Status:= “Motor_1”

(14)如何訪問一個字符串中的單個字符?

解答:對于字符串中的單個字符,使用如下的訪問格式,是錯誤的:

MB10 := str[5] 這樣的表達式無法實現將字符串的第 5 個字符送至 MB10 中。

方法:可以使用 IEC 函數 MID 來得到字符串的某個部分,例子如下:VARstr : STRING[20];END_VARMB10:=CHAR_TO_BYTE(STRING_TO_CHAR(MID(IN:=str,L:=1,P:=5)));

(15)如何加密我的 S7-SCL 程序?

解答:S7-SCL 程序加密與 STL 程序加密方法幾乎一樣,用戶可以在程序中加入關鍵字:KNOW_HOW_PROTECT,再進行編譯即可,下圖中的 FC1 在編譯后,即出現了加鎖保護的圖標 。

注意:提供給最終用戶的項目中應當刪除 S7-SCL 源代碼,否則用戶在雙擊加密的塊后(例如下圖中的 FC1),依然可以關聯打開 S7-SCL 源代碼。

f85a9674-9595-11ed-bfe3-dac502259ad0.jpg

注意:提供給最終用戶的項目中如果刪除 S7-SCL 源代碼,用戶將只能看到 STL 格式的程序,稍微復雜些的 S7-SCL 程序在 STL 格式下幾乎是無法閱讀的。此方法類似于加密的效果。

(16)如何對 S7-SCL 程序中的數據塊及靜態變量初始化?

解答:S7-SCL 程序中對數據塊及靜態變量初始化和 STL 語言格式類似,下面的程序列出了正確格式:

DAT1 : REAL := 100.5;A1 : INT := 10 ;A2 : STRING[6] := 'FACTOR';A3 : ARRAY[1..12] OF REAL := 0.0, 10(100.0), 1.0;

審核編輯 :李倩

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

    關注

    6035

    文章

    44554

    瀏覽量

    634651
  • 編程語言
    +關注

    關注

    10

    文章

    1942

    瀏覽量

    34707
  • S7-SCL
    +關注

    關注

    0

    文章

    13

    瀏覽量

    7733

原文標題:【干貨】SCL與STL的區別是什么?SCL常見問題及解決辦法!

文章出處:【微信號:自動化微招聘,微信公眾號:自動化微招聘】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    常見墊圈故障及解決辦法 防漏墊圈的設計與應用

    常見墊圈故障及解決辦法 1. 墊圈老化 故障現象: 墊圈因長時間使用而老化,失去彈性,導致密封性能下降。 解決辦法: 定期檢查墊圈的老化情況,及時更換新的墊圈。 2. 墊圈變形 故障現象: 由于安裝
    的頭像 發表于 12-12 15:31 ?209次閱讀

    電力電纜的常見故障及解決辦法 電力電纜與通訊電纜的區別

    電力電纜的常見故障及解決辦法 電力電纜是電力系統的重要組成部分,負責將電能從發電站傳輸到用戶端。由于其長期暴露在戶外環境中,電力電纜可能會遇到各種故障。以下是一些常見的電力電纜故障及其解決辦法
    的頭像 發表于 12-12 15:11 ?284次閱讀

    雷達探測器常見故障及解決辦法

    雷達探測器,特別是用于車輛泊車輔助的雷達系統,常見故障及其解決辦法可以歸納如下: 一、無報警提示故障 故障現象 : 在掛入倒擋或者按下雷達開關后,雷達系統毫無反應。 可能原因 : 倒車雷達系統工作
    的頭像 發表于 11-24 09:46 ?355次閱讀

    RS232串口通信中常見問題解決辦法

    RS232串口通信中常見問題解決辦法主要包括以下幾個方面: 一、物理連接問題 問題 :串口線未插穩或接口松動。 解決辦法 :重新插拔串口線,確保連接牢固。同時檢查插頭和針腳是否損壞,如有損壞需更換
    的頭像 發表于 11-21 09:32 ?1063次閱讀

    溫控器常見故障及解決辦法

    溫控器是維持室內溫度舒適的必備設備。然而,像所有電子設備一樣,它們也可能出現故障。了解常見故障及其解決辦法可以幫助您快速解決問題,避免不必要的維修費用。 一、溫控器不工作 故障現象: 溫控器顯示正常
    的頭像 發表于 11-06 13:51 ?3739次閱讀

    常見MCU故障及解決辦法

    微控制器單元(MCU)是現代電子設備中的核心組件,負責處理和控制各種功能。然而,由于各種原因,MCU可能會出現故障。以下是一些常見的MCU故障及其解決辦法: 1. 電源問題 故障現象: MCU無法
    的頭像 發表于 11-01 13:41 ?1484次閱讀

    常見元器件故障及解決辦法

    在電子設備的日常使用和維護中,元器件的故障是不可避免的。了解常見元器件的故障類型及其解決辦法,對于快速定位問題并進行修復至關重要。 1. 電阻器故障 故障現象: 電阻值變化:電阻器老化或損壞導致其實
    的頭像 發表于 10-29 16:21 ?427次閱讀

    CAN總線應用常見問題(2)CAN總線應用過程中的常見問題解決辦法

    CAN總線作為一種常用的通信協議,在汽車、工業自動化等領域得到廣泛應用。然而,由于各種原因,CAN總線在使用過程中可能會出現各種故障,本文將繼續講解CAN總線應用過程中的常見問題解決辦法。? 低
    的頭像 發表于 07-26 11:22 ?4206次閱讀
    CAN總線應用<b class='flag-5'>常見問題</b>(2)CAN總線應用過程中的<b class='flag-5'>常見問題</b>和<b class='flag-5'>解決辦法</b>

    聚徽觸控 - 教學一體機常見故障及解決辦法

    教學一體機在使用過程中可能會遇到多種故障,以下是一些常見的故障及解決辦法
    的頭像 發表于 07-01 15:44 ?801次閱讀

    閃測儀測量常見問題解決辦法

    閃測儀在使用過程中可能會遇到一些常見問題,以下是一些可能遇到的問題及其解決方案:測量精度問題問題描述:測量結果與實際尺寸存在偏差。解決方案:確保閃測儀的校準是最新且準確的。檢查測量環境是否穩定,避免
    的頭像 發表于 05-07 10:18 ?812次閱讀
    閃測儀測量<b class='flag-5'>常見問題</b>及<b class='flag-5'>解決辦法</b>

    Profinet IO通信故障的解決辦法

    Profinet IO通信故障可能由多種原因引起,以下是一些常見的通信故障及其解決辦法
    的頭像 發表于 03-08 11:27 ?1122次閱讀

    西門子SCL PLC高級編程教程

    借助SCL,可以簡化控制技術領域復雜的計算、算法、數據管理和數據組織等編程工作。
    發表于 01-22 10:27 ?708次閱讀
    西門子<b class='flag-5'>SCL</b> PLC高級編程教程

    西門子博途中的LAD、FBD與SCL編程

    選擇要在其后插入新程序段的程序段。 在快捷菜單中,選擇命令“插入 STL 程序段”(Insert STL network) 或“插入 SCL 程序段” (Insert SCL net
    發表于 01-16 09:33 ?2857次閱讀
    西門子博途中的LAD、FBD與<b class='flag-5'>SCL</b>編程

    西門子博圖SCL練習1:使用FC計算平均值

    西門子博圖SCL練習1:使用FC計算平均值
    的頭像 發表于 01-02 10:25 ?2770次閱讀
    西門子博圖<b class='flag-5'>SCL</b>練習1:使用FC計算平均值

    STEP7博圖中的SCL設置和屬性解析

    SCL V11中,可以檢查“擴展狀態信息”。與SCL V5.x相反,始終創建最小化的調試信息,這允許進行基本調試!
    的頭像 發表于 01-02 09:58 ?1931次閱讀
    STEP7博圖中的<b class='flag-5'>SCL</b>設置和屬性解析
    主站蜘蛛池模板: 红尘影院手机在线观看| 手机毛片免费看| 亚洲日韩有码无线免费| 跪趴式啪啪GIF动态图27报| 欧美亚洲日韩一道免费观看| 在线视频一区二区三区在线播放| 韩国黄色影院| 亚洲国产剧情中文视频在线| 国产精品悠悠久久人妻精品| 色翁荡熄月月| 成人在线观看播放| 琪琪婷婷五月色综合久久| 97视频在线免费播放| 乱爱性全过程免费视频| 中文字幕乱码一区AV久久| 久久免费看少妇高潮A片特爽| 亚洲中文 字幕 国产 综合| 国产一及毛片| 亚洲精品第一国产综合| 国产一区免费在线观看| 香蕉尹人综合精品| 国产午夜精品片一区二区三区| 午夜国产视频| 国产亚洲视频精彩在线播放| 亚洲黄色免费观看| 娇妻让壮男弄的流白浆| 亚洲无码小格式| 久久大胆视频| 中文字幕无码亚洲字幕成A人蜜桃| 久久久久久88色偷偷| 中文字幕一区二区三区在线播放 | 爆乳啪啪无码成人二区亚洲欧美| 女人会操出水图| AAA级精品无码久久久国片| 欧美性爱-第1页| 北岛玲手机在线观看视频观看 | 果冻传媒APP免费网站在线观看| 性xxxx18公交车| 好男人在线观看视频观看高清视频免费| 亚洲精品国产字幕久久vr| 精品无码一区二区三区不卡|