使用 DB_ANY 數(shù)據(jù)類型 (S7-1200/1500)
DB_ANY 數(shù)據(jù)類型用來標(biāo)識任意數(shù)據(jù)塊。對于 S7-1200/1500 系列的 CPU,可以選擇訪問編程期間尚不可用的數(shù)據(jù)塊。為此,請在訪問塊的塊接口中創(chuàng)建一個 DB_ANY 數(shù)據(jù)類型的塊參數(shù)。數(shù)據(jù)塊名稱或先前分配給數(shù)據(jù)塊名稱的 DB_ANY 數(shù)據(jù)類型的變量將在運行期間傳送到此參數(shù)??梢酝ㄟ^以下指令,處理數(shù)據(jù)塊中用符號表示的內(nèi)容:
VARIANT_TO_DB_ANY:將 VARIANT 轉(zhuǎn)換為 DB_ANY
DB_ANY_TO_VARIANT:將 DB_ANY 轉(zhuǎn)換為 VARIANT
有關(guān)這些指令的更多信息,請參見“基本指令 > STL/SCL > 轉(zhuǎn)換操作 > VARIANT”(Basic instructions > STL/SCL > Conversion operations > VARIANT)。
該過程具有以下優(yōu)勢:不需要知道將要處理的數(shù)據(jù)塊就能創(chuàng)建程序代碼。
在本示例中需要使用以下對象:
編程示例
以下示例說明了如何使用 DB_ANY 數(shù)據(jù)類型:
沖孔機可以沖出各種各樣的幾何形狀。沖孔作業(yè)將傳送到機器,每個作業(yè)有特定的作業(yè)數(shù)據(jù)。作業(yè)數(shù)據(jù)的作業(yè)類型和數(shù)據(jù)值各有不同。
操作步驟 - 創(chuàng)建 PLC 數(shù)據(jù)類型
在第一個作業(yè)中,將在一塊金屬板上沖出一個圓孔。要使沖孔機能夠執(zhí)行此作業(yè),需要提供中心點坐標(biāo)以及圓孔的半徑。可以通過 PLC 數(shù)據(jù)類型 (UDT) 將這些作業(yè)數(shù)據(jù)一起傳送到?jīng)_孔機。
創(chuàng)建 PLC 數(shù)據(jù)類型“UDT_Hole”以傳送作業(yè)數(shù)據(jù):
在項目樹中,雙擊“PLC 數(shù)據(jù)類型”(PLC data types) 文件夾中的命令“新增數(shù)據(jù)類型”(Add new data type)。 這樣,將創(chuàng)建并打開一個用于創(chuàng)建 PLC 數(shù)據(jù)類型的新聲明表。 在 PLC 數(shù)據(jù)類型中聲明以下行: X-coordinate > REAL Y-coordinate > REAL Diameter > REAL ![]() ![]() |
在第二個作業(yè)中,將在一塊金屬板上沖出一個矩形。對于此作業(yè),需要提供兩個坐標(biāo),分別定義此矩形的左上角和右下角??梢酝ㄟ^ PLC 數(shù)據(jù)類型“UDT_RectangleWindowStatic”將這些作業(yè)數(shù)據(jù)一起傳送到?jīng)_孔機。
創(chuàng)建 PLC 數(shù)據(jù)類型“UDT_RectangleWindowStatic”:
在項目樹中,雙擊“PLC 數(shù)據(jù)類型”(PLC data types) 文件夾中的命令“新增數(shù)據(jù)類型”(Add new data type)。 這樣,將創(chuàng)建并打開一個用于創(chuàng)建 PLC 數(shù)據(jù)類型的新聲明表。 在 PLC 數(shù)據(jù)類型中聲明以下行: X1-coordinate > REAL Y1-coordinate > REAL X2-coordinate > REAL Y2-coordinate > REAL ![]() ![]() |
“UDT_RectangleWindowStatic”的作業(yè)數(shù)據(jù)只能用于沖出其邊沿分別與 x 和 y 軸平行對齊的矩形。
如果要沖出具有不同對齊設(shè)置的矩形(即不與 x 和 y 軸平行對齊),則需要其它 PLC 數(shù)據(jù)類型。例如,在其它 PLC 數(shù)據(jù)類型中,可以指定高度和寬度,以及矩形與 x 軸的角度。
創(chuàng)建 PLC 數(shù)據(jù)類型“UDT_RectangleWindowFlexible”:
在項目樹中,雙擊“PLC 數(shù)據(jù)類型”(PLC data types) 文件夾中的命令“新增數(shù)據(jù)類型”(Add new data type)。 這樣,將創(chuàng)建并打開一個用于創(chuàng)建 PLC 數(shù)據(jù)類型的新聲明表。 在 PLC 數(shù)據(jù)類型中聲明以下行: X-coordinate > REAL Y-coordinate > REAL Height > REAL Width > REAL Angle > REAL ![]() ![]() |
用于指定矩形中心位置的 x 軸和 y 軸坐標(biāo)。
操作步驟 - 創(chuàng)建數(shù)據(jù)塊
在下一部分,您將學(xué)習(xí)如何將簡單的幾何形狀(其作業(yè)數(shù)據(jù)已在 PLC 數(shù)據(jù)類型中定義)傳送到?jīng)_孔機。沖孔作業(yè)在程序代碼中被細分成多個沖孔操作,這些沖孔操作由沖孔機連續(xù)執(zhí)行。沖孔機有一個十字工作臺,金屬板將緊緊地夾在這個工作臺上??梢詫⑹止ぷ髋_沿 x 軸和/或 y 軸移動,就像在坐標(biāo)系中一樣。十字工作臺由兩個電機推動。該工具有不同的印模用來在金屬板上沖出各種形狀,例如大小不同的圓形和矩形。該工具還可以最多旋轉(zhuǎn) 90 度來切出具有不同對齊角度的矩形。
現(xiàn)在,可使用 PLC 數(shù)據(jù)類型創(chuàng)建多個背景數(shù)據(jù)塊。之后,該背景數(shù)據(jù)塊將包含具體值,如圓孔的值。
創(chuàng)建背景數(shù)據(jù)塊“DB_OrderHole”:
雙擊“程序塊”(Program blocks) 文件夾下方的命令“添加新塊”(Add new block)。 “添加新塊”(Add new block) 對話框隨即打開。 |
單擊“數(shù)據(jù)塊 (DB)”(Data block (DB)) 按鈕。 指定名稱“DB_OrderHole”。 選擇數(shù)據(jù)塊“UDT_Hole”作為類型。 單擊“確定”(OK)。 |
輸入相應(yīng)的起始值:
要制造特定的金屬板部件,例如控制柜的側(cè)面板,則將必需的幾何形狀加載到?jīng)_孔機。為此需要創(chuàng)建另一個包含數(shù)據(jù)塊列表的數(shù)據(jù)塊。
創(chuàng)建數(shù)據(jù)塊“DB_OrderList”:
雙擊“添加新塊”(Add new block) 命令。 “添加新塊”(Add new block) 對話框隨即打開。 單擊“數(shù)據(jù)塊 (DB)”(Data block (DB)) 按鈕。 指定名稱“DB_OrderList”。 選擇“全局?jǐn)?shù)據(jù)塊”(Global DB) 作為該數(shù)據(jù)塊的類型。 單擊“確定”(OK)。 |
在數(shù)據(jù)塊中創(chuàng)建以下作業(yè)列表:
操作步驟 - 創(chuàng)建程序代碼
為每個作業(yè)類型,創(chuàng)建一個單獨的函數(shù)。在此,將沖孔作業(yè)細分為具體的各個沖孔操作,并包含在 ARRAY 中。
創(chuàng)建 PLC 數(shù)據(jù)類型“UDT_Punch”。 雙擊“PLC 數(shù)據(jù)類型”(PLC data types) 下方的命令“添加新數(shù)據(jù)類型”(Add new data type)。 將創(chuàng)建一個名為“UserDataType_x”的新 PLC 數(shù)據(jù)類型。 將 PLC 數(shù)據(jù)類型重命名為“UDT_Punch”。 在 PLC 數(shù)據(jù)類型中聲明以下行: Tool > DINT x > REAL y > REAL w > REAL ![]() ![]() 創(chuàng)建 ARRAY 數(shù)據(jù)塊“DB_PunchList”。 ![]() ![]() |
要為一個孔洞準(zhǔn)備沖孔作業(yè)并將其細分為具體的各個沖孔操作,則需創(chuàng)建一個 SCL 函數(shù)并命名為“FC_PrepareHole”。
聲明該塊接口,如下所示:![]() ![]() 編寫以下程序代碼: ![]() ![]() |
要為一個窗口準(zhǔn)備沖孔作業(yè),則需通過一個函數(shù)將四個沖孔操作序列組合到一個沖孔作業(yè)中。創(chuàng)建一個 SCL 函數(shù)并命名為“FC_PrepareWindowStatic”。
聲明該塊接口,如下所示:![]() ![]() 編寫以下程序代碼: ![]() ![]() |
要為一個可變矩形準(zhǔn)備沖孔作業(yè),則需通過一個函數(shù)將四個沖孔操作序列組合到一個沖孔作業(yè)中。創(chuàng)建一個 SCL 函數(shù)并命名為“FC_PrepareWindowFlexible”。
聲明該塊接口,如下所示:![]() ![]() 編寫以下程序代碼: ![]() ![]() |
沖孔機現(xiàn)在應(yīng)該會開始處理作業(yè)。如果它已經(jīng)在處理作業(yè),則應(yīng)從作業(yè)列表中獲取下一個作業(yè)并進行準(zhǔn)備。
創(chuàng)建一個 SCL 函數(shù)塊。 雙擊“添加新塊”(Add new block) 命令。 “添加新塊”(Add new block) 對話框隨即打開。 單擊“函數(shù)塊 (FB)”(Function block (FB)) 按鈕。 指定名稱“FB_PrepareNextOrder”。 聲明該塊接口,如下所示: ![]() ![]() 聲明全局變量“AllOrdersDone”: ![]() ![]() 編寫以下程序代碼: ![]() ![]() |
通過將當(dāng)前沖孔作業(yè)細分成幾個沖孔操作,為列表中的下一個作業(yè)做好了準(zhǔn)備。沖孔機必須能夠識別當(dāng)前正在處理哪個沖孔作業(yè)。
創(chuàng)建一個 SCL 函數(shù)。 雙擊“添加新塊”(Add new block) 命令。 “添加新塊”(Add new block) 對話框隨即打開。 單擊“函數(shù) (FC)”(Function (FC)) 按鈕。 指定名稱“FC_PrepareOrder”。 聲明該塊接口,如下所示: ![]() ![]() 編寫以下程序代碼: ![]() ![]() |
在 SCL 函數(shù)塊“FB_PrepareNextOrder”中調(diào)用 SCL 函數(shù)“FC_PrepareOrder”
之后,在 OB1 中調(diào)用“FB_PrepareNextOrder”:
除了上述的操作方式之外,還通過在預(yù)定義作業(yè)中使用數(shù)據(jù)塊“DB_OrderList”將作業(yè)加載到?jīng)_孔設(shè)備中,動態(tài)生成作業(yè)列表。此外,也可選擇不同的作業(yè)列表。在執(zhí)行一個作業(yè)列表后,再將新的作業(yè)列表加載到?jīng)_孔設(shè)備中。為此,需額外編寫以下代碼:
為函數(shù)塊“FB_PrepareNextOrder”創(chuàng)建一個背景數(shù)據(jù)塊。
雙擊“程序塊”(Program blocks) 文件夾下方的命令“添加新塊”(Add new block)。 “添加新塊”(Add new block) 對話框隨即打開。 單擊“數(shù)據(jù)塊 (DB)”(Data block (DB)) 按鈕。 指定名稱“DB_FB_PrepareNextOrder”。 選擇數(shù)據(jù)塊“FB_PrepareNextOrder”作為類型。 單擊“確定”(OK)。 |
如需交換作業(yè)列表,則需額外創(chuàng)建一個 SCL 函數(shù):
創(chuàng)建 STL函數(shù)“FC_SwapOrderList”。 聲明該塊接口,如下所示: ![]() ![]() 聲明全局變量“NewModelNr”: ![]() ![]() 編寫以下程序代碼: ![]() ![]() |
創(chuàng)建數(shù)據(jù)塊“DB_OrderRepository”:
雙擊“程序塊”(Program blocks) 文件夾下方的命令“添加新塊”(Add new block)。 “添加新塊”(Add new block) 對話框隨即打開。 單擊“數(shù)據(jù)塊 (DB)”(Data block (DB)) 按鈕。 指定名稱“DB_OrderRepository”。 選擇“全局?jǐn)?shù)據(jù)塊”(Global DB) 作為該數(shù)據(jù)塊的類型。 單擊“確定”(OK)。 |
之后,在 OB1 中調(diào)用“FC_SwapOrderList”:
結(jié)果
以下示例說明了如何使用指令“DB_ANY_TO_VARIANT:將 DB_ANY 轉(zhuǎn)換為 VARIANT”來確定數(shù)據(jù)塊的 PLC 數(shù)據(jù)類型,以及如何據(jù)此選擇和執(zhí)行適當(dāng)?shù)暮瘮?shù)。
-
plc
+關(guān)注
關(guān)注
5016文章
13389瀏覽量
465536 -
cpu
+關(guān)注
關(guān)注
68文章
10908瀏覽量
213087 -
西門子
+關(guān)注
關(guān)注
95文章
3063瀏覽量
116487 -
數(shù)據(jù)類型
+關(guān)注
關(guān)注
0文章
236瀏覽量
13667
原文標(biāo)題:西門子博途:使用 DB_ANY 數(shù)據(jù)類型
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
詳解PLC的工作原理和數(shù)據(jù)類型
暢銷西門子助聽器價格表_西門子助聽器價格大全
![暢銷<b class='flag-5'>西門子</b>助聽器價格表_<b class='flag-5'>西門子</b>助聽器價格大全](https://file1.elecfans.com//web2/M00/A6/4F/wKgZomUMPNOAc5InAAALDIjB_Uk526.jpg)
西門子plc數(shù)據(jù)類型_西門子plc通訊方式
![<b class='flag-5'>西門子</b>plc<b class='flag-5'>數(shù)據(jù)類型</b>_<b class='flag-5'>西門子</b>plc通訊方式](https://file.elecfans.com/web1/M00/9E/49/o4YBAF05G46ARZwyAAAyrP5yWaE148.jpg)
西門子PLC模擬量輸入輸出相關(guān)數(shù)據(jù)類型轉(zhuǎn)換
![<b class='flag-5'>西門子</b>PLC模擬量輸入輸出相關(guān)<b class='flag-5'>數(shù)據(jù)類型</b>轉(zhuǎn)換](https://file.elecfans.com/web1/M00/B8/7F/pIYBAF5ywGmAH9qFAACKpgTRmrQ123.png)
對于ANY數(shù)據(jù)類型及參數(shù)傳遞的詳細解析
![對于<b class='flag-5'>ANY</b><b class='flag-5'>數(shù)據(jù)類型</b>及參數(shù)傳遞的詳細解析](https://file.elecfans.com/web1/M00/EA/7D/pIYBAGBzsPCAXxSoAAA2C17kHZU990.png)
編程語言SCL中ANY數(shù)據(jù)類型
![編程語言SCL中<b class='flag-5'>ANY</b><b class='flag-5'>數(shù)據(jù)類型</b>](https://file.elecfans.com/web1/M00/F1/0B/pIYBAGCsafyAR7QkAAAkf7jPILk461.png)
S7-1200:DB_ANY類型
西門子博途F型PLC數(shù)據(jù)類型與標(biāo)準(zhǔn)PLC數(shù)據(jù)類型的差別
利用物通博聯(lián)工業(yè)網(wǎng)關(guān)實現(xiàn)西門子plc數(shù)據(jù)采集和控制
![利用物通<b class='flag-5'>博</b>聯(lián)工業(yè)網(wǎng)關(guān)實現(xiàn)<b class='flag-5'>西門子</b>plc<b class='flag-5'>數(shù)據(jù)</b>采集和控制](https://file.elecfans.com/web2/M00/52/70/pYYBAGLLyhqAVmYRAAbXfP1kjRI408.png)
C#使用西門子S7協(xié)議讀寫PLC DB塊
![C#使用<b class='flag-5'>西門子</b>S7協(xié)議讀寫PLC <b class='flag-5'>DB</b>塊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
西門子博途中的SCL關(guān)系表達式
西門子博途:使用PLC數(shù)據(jù)類型 (UDT)
![<b class='flag-5'>西門子</b><b class='flag-5'>博</b>途:使用PLC<b class='flag-5'>數(shù)據(jù)類型</b> (UDT)](https://file1.elecfans.com/web2/M00/8C/97/wKgZomSudFqAH7RwAAAXIple76w076.png)
西門子PLC UDT數(shù)據(jù)類型的使用方法
![<b class='flag-5'>西門子</b>PLC UDT<b class='flag-5'>數(shù)據(jù)類型</b>的使用方法](https://file1.elecfans.com/web2/M00/8D/2B/wKgZomS3itGAHBUCAAAvgGb2gew526.png)
評論