




[摘 要]為解決目前工程中PLC 編程存在的問題,文章介紹了一種PLC 程序編制的模塊化方法,闡述了程序工作原理、編程的規則、常見設備控制、功能塊的編寫,以期為相關人員提供參考。
[關鍵詞]PLC ;編程;功能塊
[中圖分類號]TP311.1 [文獻標志碼]A [文章編號]2095–6487(2024)07–0163–04
西門子S7–300 PLC 產品屬于模塊化的中小型PLC 產品,常用于電機、閥門、變頻器等的控制。在工程項目中,因編程人員對程序編制的理解不同,編制出的控制程序較多,有的程序組織塊選擇不當,出現CPU 停止工作;有的程序占用資源大,CPU 執行時間長,出現報錯;有的程序采用線性編制,后期檢查、維護及升級困難。為了解決上述問題,規范程序編制,使程序達到易讀性、易修改性,文章以S7–300 PLC為例,介紹了一種PLC 編程的模塊化方法,以供從業人員參考。
1 程序工作原理
S7–300 CPU 模塊主要由微處理器與儲存器組成,儲存器分為系統儲存器、裝入儲存器、工作儲存器3部分。其中,系統儲存器集成在CPU 中,包括定時器、I/O 過程映像、診斷緩沖區等;裝入儲存器用于儲存用戶程序,常見的有Flash 卡和MMC 卡;工作儲存器集成在CPU 中,用戶程序只能在工作儲存器和系統儲存器中運行。
操作系統對程序循環執行,先更新輸入、輸出過程映像區,把數字量輸入模塊的信息讀到輸入過程映像區,輸出過程映像區的數據被寫入數字量輸出模塊。然后執行用戶程序,直至下一個掃描周期,程序被循環執行。程序下載的過程是程序從用戶硬盤下載到CPU 的裝入儲存器,再從裝入儲存器把與程序執行相關的邏輯塊和數據塊裝入工作儲存器[1]。
2 編程的規則
為了保證編寫程序的易讀性,易于修改,采用結構化編程模式,使程序模塊規范化,方便項目的調試與維護,對程序編制中的內容規定如下。
(1)應熟悉硬件配置,掌握PLC 外部設備的配置情況,輸入信號如按鈕、開關量、模擬量等,輸出信號如電磁閥、中間繼電器等,再對I/O 信號地址進行規劃,編制I/O 地址分配表,之后對計數器和定時器進行分配,然后分配存儲器的數據放置區域,確定專用寄存器的規劃,接著是各功能塊或子程序的編制,最后是程序編制及調試、修改。
(2)編程方式采用結構化編程,把控制任務劃分為相對獨立的子程序,再把子程序細分為功能塊。主程序調用子程序,子程序調用功能塊,這樣逐級調用的實現自動控制任務。
(3)編程時必須寫描述性注釋,注釋包括功能塊標題、塊注釋、程序段標題、段注釋、語句行的注釋等。
(4)用戶程序須在OB 塊中調用才能執行,調用程序塊的類型是OB、FB、FC,被調用程序塊的類型是FB、FC、SFB、SFC。程序的分層調用如圖1 所示[2]。
2.1 組織塊選用
用戶程序包含不同的程序塊,依據個人PLC 組態經驗,組織塊的基本選項是:OB1、OB35、OB40、OB80、OB82、OB83、OB84、OB85、OB86、OB87、OB100、OB101、OB102、OB121、OB122。
OB1 是自由循環組織塊,可以調用FB、SFB、FC、SFC 等用戶程序;OB35 是循環中斷組織塊,用于調用PID 調節塊;其他OB 中斷組織塊,用于處理各種故障事件。如果不選擇,發生相應故障時,CPU會停止工作[3]。
2.2 程序塊的要求
程序塊編制分配原則如下,如果程序塊與系統塊編號重復,應修改避讓。
(1)FC1 為公用數據模塊,FC5 為手自動切換模塊,FC6 為系統模式模塊,FC10 為輸入處理模塊,FC20 為運行處理模塊,FC30 為停止處理模塊,FC40為輸出處理模塊,FC50 為報警與聯鎖模塊,FC60 為循環調用塊,FB10 為電機控制模塊,FB30 為控制閥控制模塊。
(2)在STEP7 中PID 調節塊應放在OB35中,時間間隔為100 ms,不宜修改。PID 調節器直接使用FB41、FB42、FB43,溫度PID 調節器直接使用標準庫中的FB58、FB59[4]。
(3)Modbus RTU 通訊編程要求:①發送數據請求程序編寫,在OB1 中調用FB8 P_SND_RK,數據塊是DB40 ;②接收數據程序編寫,在OB1 中調用FB7 P_RCV_RK,數據塊是DB41[5]。
(4)數據塊使用規劃原則。同一類數據存劃分同一個塊,中間寄存器按數據類型劃分同一個塊,第3方通訊數據存放在DB60 以后,FB 塊的背景數據設置專門區域,其他專用功能可以單獨劃分,如報警信息、運行時間。依據個人項目組態經驗,DB 數據塊劃分見表1。
3 常見設備控制
3.1 控制要求
設置遠程/ 本地控制,遠程控制是操作站對設備進行啟動/ 停止操作;本地控制是通過現場操作盤的按鈕對設備進行啟動/ 停止操作。自動/ 手動控制中,自動是由PLC 程序進行控制,手動是操作員操作按鈕或鼠標的控制。如果操作站發生失效,操作員通過現場操作盤上的按鈕可以對設備進行控制。
單臺設備應有軟手操/ 自動切換,軟手操時可以啟/ 停功能,由自動切換到軟手操時設備不能停機;由軟手操切換到自動時,設備啟/ 停取決于自動程序。
3.2 電機的控制
電機的控制要求是遠程/ 停止/ 本地、自動/ 手動、運行狀態、停止狀態、故障狀態、啟動命令、停止命令、電流值、運行時間累計值等功能,如果配置了變頻器,就增加1 個AO 點。對6 kV 電機控制的附加要求是啟動與停止應使用不同數據位,增加溫度、轉速、振動等模擬量顯示功能。
3.3 閥門的控制
調節閥的控制要求是開到位、關到位、定位器給定、閥位反饋。開關閥的控制要求是開到位、關到位、電磁閥打開/ 關閉等,應考慮電磁閥有雙線圈驅動或兩個電磁閥的情況。
3.4 常見設備的I/O點數
依據個人施工經驗,查閱電氣設備資料,對常見設備的I/O 點數進行匯總,低壓電機的DI 點6 個,DO 點1 個,AI 點1 個;高壓電機的DI 點6 個,DO點2 個,AI 點8 個;變頻器的AI 點1 個,AO 點1 個;電磁閥的DO 點最多2 個;閥門定位器的AI 點1 個,AO 點1 個;閥門回訊器的DI 點2 個。
4 功能塊的編寫
用戶程序編寫要做到模塊化,應設置公用功能塊和專用功能塊,便于程序調用。
4.1 常量模塊
在邏輯控制組態中,經常需要常1 或常0,可做常量功能塊,用途是封閉專用功能塊引腳。組態方法是選擇位存儲器的一位,如M1.0、M1.1,將M1.0的NO 和M1.0 的NC 進行邏輯或運算,結果給輸出M1.0,即為常1 ;將M1.1 的NO 和M1.1 的NC 進行邏輯與運算,結果給輸出M1.1,即為常0。
4.2 時鐘脈沖塊
S7–300 控制器中有固定的時鐘脈沖,在CPU 參數設置中選擇即可。但這些時鐘都是固定的,脈沖周期從0.1~2 s。如果需要長脈沖,就應做一個時鐘脈沖塊,方便功能塊編制時使用。西門子PLC 的定時器種類較多,組態脈沖塊選用S_ODT 定時器,常用脈沖塊如圖2 所示,功能是連接計數器、定時器、觸發器等。
4.3 電機控制塊
工業上大多數轉動設備都是電機拖動,對電機控制應編寫專用功能塊。按照編程時驅動分為兩類:①單驅,指輸出DO 占1 個位,該位值為1,電機啟動,該位值為0,電機停止;②雙驅,指輸出DO 占兩個位,一個位值為1,電機啟動,另一個位值為1,電機停止。
(1)電機單驅控制塊如圖3 所示,適用于低壓電機拖動的水泵、風機、空壓機等場合。
該功能塊是一個電機控制的通用塊,帶有啟動聯鎖、運行聯鎖、設備聯鎖,其中啟動聯鎖指不滿足啟動條件而禁止啟動,運行聯鎖指運行中工藝參數超限而聯鎖停車,設備聯鎖指上下游關聯設備運行狀態而聯鎖停車。如需調試,宜用M1.0 或M1.1 對功能塊引腳封鎖。電機狀態字是一個MB,第0 位表示單驅動,第1 位表示驅動狀態,第2 位表示解鎖,第3 位表示滿足聯鎖,第4 位表示外部故障,第7 位表示跳閘。
(2)電機雙驅控制塊如圖4 所示。適用于高壓電機拖動的水泵、壓縮機、磨煤機等場景。
該功能塊引腳含義與單驅控制塊幾乎相同,區別在于啟動信號與停止信號采用的是脈沖信號,設置定時器和狀態字是兩個,可以使用1 個。高壓電機的本體配置有5 個溫度,即前后軸的溫度、定子3 個溫度,這些模擬量引入FC10 輸入處理模塊進行處理,可以連接在啟動聯鎖及運行聯鎖上,實現方便組態的目的。
4.4 控制閥開關塊
常見控制閥一般分為氣動控制閥與電動控制閥,開關功能塊編程實現方式較多,具體如下。
(1)氣動控制閥的開關塊如圖5 所示。該功能塊的引腳描述清晰明確。故障的判定條件是開閥命令發出,運行時間大于設定時間;或者關閥命令發出,運行時間大于設定時間。
(2)電動控制閥的開關塊如圖6 所示。電動控制閥是伺服電機驅動,分為正轉和反轉,編程時應考慮兩個驅動位,其他與氣動閥類似。
5 結束語
文章通過介紹程序編制流程、程序分層調用、程序塊要求、常用功能塊編制等,給出了規范程序主體結構的思路,提供了常用設備功能塊編制方案要點,為相關人員提供了一種規范性模塊化的程序編寫方法,對于提高施工效率、設備升級改造等均具有工程實用價值。
參考文獻
[1] 廖常初.PLC 編程及應用(第3 版)[M]. 北京:機械工業出版社,2008.
[2] 胡學林. 可編程控制器原理及應用[M]. 北京:電子工業出版社,2007.
[3] 柴瑞娟,陳海霞. 西門子PLC 編程技術及工程應用[M].北京:機械工業出版社,2006.
[4] 廖常初.S7–300/400 PLC 應用技術(第2 版)[M]. 北京:機械工業出版社,2008.
[5] 崔堅. 西門子S7 可編程控制器——STEP7 編程指南[M].北京:機械工業出版社,2007.