-
1 # 機械自動化
-
2 # 工控人
感謝邀請!PLC程式設計時變數太多,怎麼規劃地址和便於記憶,首先我們先看下PLC中代表變數的軟元件有哪些,主要有輸入X輸出Y,輔助繼電器M,定時器T,計數器C,狀態S,資料暫存器D,XY一般小型PLC很少,40點、60點的,這個根據輸入輸出型別進行規劃即可,主要就是分清楚高速輸入、高速輸出,普通的不要佔用。
輔助繼電器M有兩類,普通的和掉電儲存的,根據需要來選擇,在規劃地址的時候一段程式或者功能塊使用連續的M,從編號0、10、20等開始,中間留有部分以備補充,比如這段用到M206,下一段就從M210或者M220開始。對於並聯輸出的,LD M72 OR M82 OR M92 OUT Y1,這樣把編號的最後弄成統一的便於記憶也方便我們在最後除錯的時候好檢查。
定時器有不同單位的時間如1ms、10ms、100ms的,也有普通型和累計型的,也是根據需求來選擇,向M一樣可以根據使用的地方進行規劃地址編號。計數器也有普通計數器和高速計數器、16位和32位之分,也有保持型計數器等,同樣根據需要來確定,一般高速計數器的使用都是固定的,對應的輸入都有固定的計數器。
地址的規劃和選擇首先要根據需要、功能來決定,然後在PLC程式設計中所表達的動作進行統一編號,對於PLC的順控程式,我們儘量在程式設計時進行段的宣告、註釋準確如下圖,把整個PLC程式分成好幾個小段寫,每個小段可以寫特定的動作組合、部分、功能、意義等,然後地址的規劃在每段進行排列,第一段用M0~M100,第二段用M100~M200等等設計,方便我們尋找元件變數,對程式設計和後期的除錯都很有幫助。
還有就是為了便於記憶,我們也可以採用標籤對軟體變數進行標記,免去註釋,比如X0的標籤是開始,Y0的標籤是指示燈,以後我們就可以直接用“ LD 原點 OUT 指示燈”來表示 LD X0 OUT Y0了,這樣就更方便了,PLC中每個變數都可以做標籤進行宣告。
-
3 # 儒拉小鎮
其實你問的這個,在我剛使用PLC的時候也會遇到,但是理解了PLC的程式設計思想後,尤其是使用SIEMENS的PLC後,不會有這樣的問題。
這裡針對SIEMENS的PLC來說吧。
SIEMENS有好多M,MB或者MD也可以使用。但是使用這些變數後,發現程式是雜亂無章的。包括輸入輸出點。
針對這個問題,EPLAN給出了答案。
在EPLAN軟體,專案資料--PLC--地址/分配列表。裡面有完整的命名。如下圖:
尚未完成的專案。後面備註會是中文的名稱。
從中可以看出PLC的輸入點,PLC的輸出點也會是類似的。
這裡面有一個重要的資訊。就是這個輸入點,對應的圖紙在哪裡。
對應的PLC程式也是一樣的。
對應的報警資訊也是一樣的:
不僅僅是輸入輸出的PLC地址,其他匯流排過來的,例如相機,螺絲刀等,實際上是不需要用對應的IO地址的,會建立塊。這次用到一個Cognex相機,會封裝一下,對應的介面有匯流排起始地址,Ready,Running,Result,Start等都封裝成介面。一個相機對應一個FB塊,一個對應的DB背景塊。用到10個相機,就是10個DB背景塊。測試一個可以了,其他的也都可以了。
下面是用到的Schmersal帶鎖安全門程式塊。
氣缸作為常用的執行元件,會有輸入介面和輸出介面,手自動,執行報警燈。實際上也是不需要中間變數的,只要有背景塊就行了。
時間繼電器,自動執行也是需要封裝的。
在用到的時候,有一個專案是一條主的流水線,上面有托盤,托盤有RFID號。另外有一條支路,然後在一起裝配起來。
建立了UDT,DB塊集中這些UDT。如下:
可以看出,從頭到尾,壓根就沒有M變數,更不會有地址的規劃。
至於PLC FC塊、FB塊、DB塊每個公司都不一樣。最好的方法是按照EPLAN圖紙來。例如這個相機,圖紙的地址為=ST20.OP40+E-270A1,給相機的FC塊為FC270,相機的FB塊為FB270,背景塊為DB270,另外一個相機地址=ST20.OP40+E-271A1,背景塊地址為DB271.
至於圖紙,也是有規範的。
當你程式設計,不再為地址規劃,記憶發愁的時候,就算成功了!!
-
4 # 控制研究控
現在很多PLC都支援符號優先的程式設計方法了! 因此,在定義變數的時候用自己熟悉的符號+裝置代號的表示方法是比較好的!
其實,每個人和每個單位的編輯符號的方法不同,但是隻要是在一個專案中是比較統一的,且便於程式設計人員快速讀懂程式內容的,都庫說是較好的方法!
而且,PLC控制的這些裝置,大體上用的比較多的也就那麼幾類,比如,電機,閥門,氣缸,溫度訊號,液位訊號,流量訊號等等!因此當你熟知這些裝置需要採集的相關點之後,就可以來規劃了!
說一下我常用的規劃方法:
電機,比如Motor1,motor2,或者M#1,M#2,這樣就表示一個大的電機代號,而電機通常也就是啟動,停止,執行,故障這些,因此可以用:
Motor1_bRun來表示啟動,這裡的b就表示bool。
那麼Motor1_bStop表示停止,Motor_bOut表示輸出控制接觸器的線圈,Motor_bTrip表示熱繼電器跳閘的故障點訊號!
當然,其實可以在前邊加上i或者o來表示是DI訊號還是DO訊號,也可以在結尾,比如:
oMotor_bOut表示這個是電機的輸出DO訊號,iMotor_bTrip表示是電機的DI輸入熱故障訊號!
像閥門的話,也是開關輸入訊號和開啟關閉的輸出訊號,通常用valve這個英文字面意思直接表示,比如Valve1_bOut,Valve_bOpen,Valve_bClose,前邊或者後邊也可以加入i或者o表示是di或者do!
氣缸的話就是cylinder,因此氣缸前進應該是iCylinder1_bAdvance,氣缸後退應該是iCylinder1_bReturn這樣!
還有就是模擬量的,就以溫度感測器來舉例,用TE表示溫度感測器,比如TE_IntValue,因為模擬量訊號輸入通常是16位的整數,因此這裡是Int,Value就是數值的意思!然後TE_bHAlrrm,這個是溫度高報警的一個bool變數,同樣,TE_bLAlarm就是溫度低報警訊號!
就簡單說這麼多了,總之呢,你給變數定義的符號名已經是能讓你清晰的辨認出來這個變數的屬性的,比如是DI訊號還是DO訊號,是bool型別還是int型別,或者是實數real型別!---儘量的表述完整清晰,該用縮寫的時候用一些縮寫,免得太長了,這樣就差不多了!
-
5 # 電子及工控技術
我們在編寫PLC梯形圖時常常會遇到輸入訊號量較多,特別是對大型複雜的梯形圖,梯形圖裡的變數涉及到十幾個甚至幾十個的時候我們會感到“力不從心”的感覺。那麼當遇到這種情況如何進行規劃地址呢?下面針對我編寫梯形圖時對變數地址的處理的經驗來談談我的是如何處理的。
現在的PLC程式設計軟體都是具有設定變量表的功能,例如三菱PLC的程式設計軟體GX-WORKS2、西門子(SIEMENS)的博圖TIA(PORTAL)軟體以及施耐德的SoMachine程式設計軟體都具有建立變量表的功能,我以自己正在使用的施耐德SoMachine可程式設計控制器程式設計軟體為例來說明如何來規劃變數地址。
當我們接到控制任務編制梯形圖時,我們都要根據控制要求建立控制變數,這種變數一般設定區域性變數和全域性變數兩種型別,若設定區域性變數時就會在程式組織單元(POU)中建立變量表格,在這個變量表格中會有變數(VAR)的範圍、變數的名稱、變數地址、變數資料型別以及對變數的註釋等。在這種軟體中變數的地址我們只要變數的範圍字首(I、Q、M)、長度字首(X、B、W、D)和地址偏移量就可以了,我們的主要工作是為了便於對變數的記憶要給變數定義名稱,變數定義名稱的原則是“看名知其意”。我們以最熟悉的電機正反轉程式為例,我們要在POU中建立6個區域性變數,分別給這些變數起名稱為PosButton(正轉按鈕)、NegButton(反轉按鈕)、 StopButton(停止按鈕)、EmergencyStop(急停按鈕)、PosRun(正轉執行控制)、NegRun(反轉執行控制),這些變數名稱都符合“看名知其意”的原則。透過對這樣的變數命名不管變數有多少都能夠很好的記憶。變數命名後只要與相關PLC物理地址相關聯就可以對外部負載進行控制了,所以這種軟體對變數的命名非常之靈活,不像以前的PLC軟體對變數的命名有固定的格式要求很呆板。
透過變數與PLC的物理地址向關聯後,我們可以給變數進行註釋,如上圖所示的那樣,然後在梯形圖中顯示出註釋,這樣能夠進一步對理解記憶變數所對應PLC的物理地址有好處。
回覆列表
這也簡單,舉個例,0-100用來做伺服資料,200-400用來做儲存,500-700用來做其它資料,不是很好記憶嗎