在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中,便可以在程序中使用了。是不是很方便呢?