當前位置:首頁 » 編程軟體 » 編程DBD

編程DBD

發布時間: 2023-03-07 14:18:12

㈠ 在博途1500中,編程可以直接用DB塊數據,為什麼還有個plc變數,這兩者有什麼區別嗎

現在回過頭來才發現,以前的「答非所問」,現在彌補一下啊

  1. PLC變數是用來定義I/O信號使用的.

    例如:外部數字量、模擬量輸入信號,還有模擬量輸出信號

    i0.0、i0.1 Q0.0 Q0.1

    還有內部M區繼電器,定時器,計數器等,非DB塊的寄存器都需要在PLC變數表中定義變數名稱。

    =============================================

  2. 兩者的關系就是直接定址和符號定址的關系

  3. 例如DB1.DBW0這個是直接定址

如果DB塊比較少,DB塊內部的變數也比較少,這樣是沒啥問題的

但是如果DB塊和DB塊內部的變數多了,再使用這種絕對定址方式就很不方便了。不容易區分哪個變數是做什麼用的。

3.可以給每個DB塊定義一個有含義的名字

1). 例如DB1是用來控制輸送帶1的可以取名為 Motor_01

DB1.DBX0.1 :是電機啟動命令,取名為 Start_CMD

DB1.DBX0.2 :是電機停止命令,取名為 Stop_CMD

DB1.DBD2 :是電機速度設定,取名為 Speed_Set

這樣在程序中寫Motor_01.Start_CMD就是 DB1.DBX0.1

Motor_01.Stop_CMD就是DB1.DBX0.2

2).如果DB2是第二條輸送帶那麼就可以取名為Motor_02

3).這樣就是類似與面向對象的編程。

這里就不詳細展開了,這個編程思路和方法需要慢慢揣摩了

這些方法都是在編寫中大型程序時才能體現出它們的作用。

4. PLC變數是用來定義I/O信號使用的.

㈡ 西門子plc300中的編程中db1.dbd4是什麼意思

數據塊1的第四個地址開始的一個雙整數型數據佔用4個位元組地址即DB1.DBB4,DB1.DBB5,DB1.DBB6,DB1.DBB7,

㈢ PLC ENT指令可以用什麼指令替代

不可以用任何指令代替,ENT是入累加器堆棧指令,對於400來說,PLC有4個運算累加器,進入堆棧是將ACC3復制給ACC4,把ACC2復制給ACC3,這樣的復制可以操作將運算結果暫存。可以加快部分運算的運算速度。
由於300隻有2個運算累加器,因此ENT指令壓堆棧是不可行的,所以,對於300來說,只能採取傳出傳入數據的方式來保存部分臨時變數。。
例如這個實例
STL
解釋
L
DBD0
//從數據雙字DBD0中將值載入ACCU
1。(該值必須以浮點格式表示)。
L
DBD4
//將值從ACCU
1復制到ACCU2。從數據雙字DBD4中將值載入ACCU
1。(該值必須以浮點格式表示)。
+R
//將ACCU
1和ACCU
2的內容作為
浮點數
(32位,IEEE
754)相加,並將結果保存到ACCU
1中。
L
DBD8
//將值從ACCU
1復制到ACCU
2,並從數據雙字DBD8中將值載入ACCU
1。
ENT
//將ACCU
3的內容復制到ACCU
4。將ACCU
2的內容(中間結果)復制到ACCU
3。
L
DBD12
//從數據雙字DBD12中將值載入ACCU
1。
-R
//從ACCU
2的內容中減去ACCU
1的內容,並將結果保存在ACCU
1中。將ACCU
3的內容復制到ACCU
2。將ACCU
4的內容復制到ACCU
3。
/R
//將ACCU
2
(DBD0
+
DBD4)的內容除以ACCU
1
(DBD8
-
DBD12)的內容。將結果保存在ACCU
1中。
T
DBD16
//將結果(ACCU
1)傳送到數據雙字DBD16。
對於這個實例,如果是在300的時候,ENT是不能用的,因此在L
DBD8的之前將結果傳出,也就是例如T
LD20之類的。然後再載入運算。。不知道您是否明白了
也就是如果要改寫例子上的400程序
應該這樣改寫
L
DBD0
L
DBD4
+R
T
LD40
L
DBD8
L
DBD12
-R
L
LD40
TAK
/R
T
DBD16
由於傳入傳出是要內存、
數據塊
或者是臨時存儲區寫操作和讀操作,因此指令的執行時間將會比在寄存器中操作要慢一些,上段程序的執行時間將比原來的程序長,但是由於300沒有四個寄存器操作,因此臨時結果只能放在內存區、數據塊或者臨時存儲區中了。
注意這里使用了TAK交換累加器指令,也就是說,當-R後,DBD8-DBD12的結果是放在ACC1裡面的,載入LD40之後,ACC1的內容為LD40(也就是DBD0+DBD4),ACC2的內容是DBD8-DBD12,由於這時候如果用直接浮點數除法的指令,那麼就變成了(DBD8-DBD12)÷(DBD0+DBD4)與原程序不符,使用了TAK指令後,ACC1內容將和ACC2的
內容交換
,也就似乎ACC1的內容進入了ACC2,ACC2的內容進入了ACC1,這樣再用浮點數除指令的時候,就相當於分子和
分母
對調,與原題目就吻合了。這里使用TAK指令的目的,就是為了使得DBD8-DBD12的結果不必輸出到臨時變數或者是臨時存儲區等,保證了性能不進一步下降。這在語句表編程中相當常見,語句表編程一定要掌握累加器中的值的存儲和傳送方式。特別對於西門子S7
400這個有著4個累加器的PLC更是如此。

㈣ 西門子300plc里進行查詢怎麼編程

你可以這樣編: L P#0.0 L MD10 SLD 3 +D T MD 10
OPN "DB1"
這樣db1.dbd[md10]就是你想要的指針值了。比如MD10=4,那就是DB1.DBD4.
之後 L MD 10 L P#4.0 +D
那麼db1.dbd[md10]就向後挪了一個雙字變為DB1.DBD8。

希望採納!

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:741
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:1005
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:712
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:874
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:773
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1120
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:346
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:224
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:910
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:869