您好,欢迎访问一九零五行业门户网

s7时间怎么设定

如何用 sfc1 (read_clk) 读取日期和时间以及如何用 sfc0 (set_clk) 设定日期和时间?
系统功能 sfc1 和sfc0分别用于读取和设置 cpu 的系统时钟。系统时钟存储在数据类型为date_and_time的变量里。通过指针访问系统时钟的单个组成元素。
说明
可以使用系统功能 sfc1 (read_clk)和sfc0 (set_clk)分别读取和设置 cpu 的系统时钟。系统时钟存储在数据类型为“date_and_time”的变量里。数据类型date_and_time所包含的关于年、月、日、时等信息是以 bcd 码的格式存储在 8 个字节里。该数据类型显示的范围是:
dt#1990-1-1-0:0:0.0 到 dt#2089-12-31-23:59:59.999
下表给出了实例表示 2014 年1月 2 日,星期四,3点 5 分 11.854 秒对应数据类型date_and_time的每个字节所包含的内容。
绝对地址
内容
例子
字节0

b#16#14
字节1

b#16#01
字节2

b#16#02
字节3
小时
b#16#03
字节4
分钟
b#16#05
字节5

b#16#11
字节6+字节7高4位*
(字6)
毫秒
w#16#8545
字节7 (低四位*)
星期:
1:星期日
2:星期一
3:星期二
4:星期三
5:星期四
6:星期五
7:星期六
b#16#45
*毫秒大值999的bcd码需要占用12位。因此,毫秒值占用字节6以及字节7的高4位。字节7的剩下低4位用于表示星期。
通过指针访问数据类型date_and_time的单个变量。这种读取和设定系统时钟的步骤下面以样例说明,样例在ob1中用了4个网络段的程序。
用sfc1 (read_clk)读取系统时钟的说明
1. 调用系统功能sfc1 (read_clk)读取系统时钟(图1)。
输出参数“cdt”用于接收cpu的当前系统时钟。用数据数据类型为date_and_time的临时变量(此处为readdateandtime)连接参数“cdt”。
2. 用指令lar1 p##readdateandtime(指针)将临时变量readdateandtime的地址装载到地址寄存器ar1中(图2)。接着,通过间接装载指令访问变量readdateandtime的单个字节/字,并通过提供的操作数显示出来。
3. 例如,访问字节3(小时)并通过操作数”read”.hour(此处为db1.dbb3)输出:
lb[ar1, p#3.0]
t read.hour
4. 用于毫秒和星期的字节6和7存在重叠,因此必须先访问字6获取毫秒并右移4位(srw4)再输出。为了输出星期,需要用b#16#f屏蔽字节7来获得字节7的低4位。
用sfc0 (set_clk)设定系统时钟的说明
1. 定义一个数据类型为date_and_time的临时变量,比如writedateandtime,并用指令lar1 p##writedateandtime把这个变量的地址装载到地址寄存器ar1中(图3)。通过间接寻址把数据装载并传送到用于存储年、月、日、时等的单个字节。
2. 例如,传送用于设置小时的”write”.hour(此处为db2.dbb3)到临时变量writedateandtime的字节3(小时):
l write.hour
t b[ar1, p#3.0]
3. 用于毫秒和星期的字节6和7存在重叠,因此在传送毫秒的设置值之前需要把操作数(此处为write.millisecond,,db2.dbw6)左移4位(slw4)。
4. 无需设置星期,因为它可以由设置的日期推导得出。
5. 调用系统功能sfc0 (set_clk)用于设置系统时钟并把临时变量writedateandtime赋给输入参数”pdt”(图4)。重要的是sfc0只调用一次,否则系统时钟在每个周期都被设定并将因此停留在设定的时间。
6. 例子中(图4),检测操作数write.setclk(此处为db2.dbx8.0)的上升沿。当有上升沿时,调用sfc0并以临时变量writedateandtime中给定的值设定系统时钟。
其它类似信息

推荐信息