很多朋友在刚使用西门子300PLC的时候,感觉定时器特别难用,定时时间输入数值特别麻烦,总是忘记输入的格式,如S5T1000MS。在STL代码的解读过程中,发现很多定时时间是直接构造的一个字,用来表示定时器时间,我们掌握这种格式后对STL代码的解读会很有帮助。
S5TIME有16位的存储空间,不同位置的值代表不同的含义。
S5TIME数据结构
(1)0-11为BCD码时间值,每4个位代表一个10进制数,取值范围为0-999。
(2)12-15位为时间单位(时基),14和15位没有实际意义。12和13位组合一共有4种可能,分别代表:
定时器时基
定时时间由时间值和时基构成:定时时间=时间值*时基(时间单位)。时间单位有4种:分别为10ms、100ms、1s、10s四中类型。我们以1秒钟的定时时间进行分析:
(1)定时器中的值为0100H:时基为10ms时,时间值为BCD#100。
时间单位:12位和13位为00,所以时间单位就是10ms;
时间值:只有百位有1,所以时间值为BCD#100;
定时时间:100*10ms=1000ms。
(2)定时器中的值为1010H:时基为100ms时,时间值为BCD#10。
时间单位:12位和13位为01,所以时间单位就是100ms;
时间值:只有十位有1,所以时间值为BCD#10;
定时时间:10*100ms=1000ms。
(3)定时器中的值为2001H:时基为1s时,时间值为BCD#1。
时间单位:12位和13位为10,所以时间单位就是1s;
时间值:只有个位有1,所以时间值为BCD#1;
定时时间:1*1s=1s。
明白数据类型之后,定时器对于用户程序来说定时器时异步更新的,跟我们建立的程序的扫描周期是无关的,PLC系统会以固定的时间间隔(时基)更新定时器的当前值,定时器的当前值为0时,定时器接通。
,