在PLC的程序設計中,有時候會有這種需求:希望某段邏輯一直為真(1)或一直為假(0);希望某段程序僅在PLC啟動后執行一次;希望有一個頻率固定的時鐘脈沖來進行通信或控制報警燈。所有這些需求,都可以手動編程來實現。但我今天想給大家介紹的一個小技巧,不需要任何編程,利用S7-1200/1500 CPU本身提供的系統字節位(System Byte Bits)與時鐘字節位(Clock Byte Bits)來實現上述功能。
所謂“系統字節位”,是指系統字節(byte)中的位(bit)。
這里的“系統字節”,是在CPU的硬件配置中指定的一個M存儲區的字節。當將硬件配置下載到CPU之后,操作系統會對該字節的某些位進行寫操作,以實現特定的功能(比如:某個位常為1,某個位常為0)。
時鐘字節與系統字節類似,也是在硬件配置中指定的M存儲區的字節,它的位(bits)可以周期性的變化。
我們以CPU1215C為例,打開其硬件組態,在屬性頁面中,找到“系統與時鐘存儲區(System and clock memory)”,如下圖:
可以看到,默認情況下,系統字節位與時鐘字節位都沒有啟用。
通過勾選“使用系統存儲區字節(Enable the use of system memory byte)”就可以啟用系統字節位。系統默認使用位存儲區(M)的個字節(Byte1)作為系統字節。
系統字節的值是可以修改的,其范圍在0~8191之間。
無論使用哪個字節作為系統字節,其0~7位(bits)都遵循如下規則:
使用默認的MB1作為系統字節的硬件配置如下圖:
時鐘字節(Clock byte)第0~7位的定義見下表:
使用默認MB0作為時鐘字節的硬件配置如下圖:
注:S7-300/400中也支持時鐘字節,但是不支持系統字節。
硬件配置好之后,將其編譯下載到CPU中,便可以在程序中使用了。是不是很方便呢?