QQ登录

只需一步,快速开始

在s7-1500中怎么给S_ODT定时器赋值

[ 复制链接 ]
在s7-1500中怎么给S_ODT定时器赋值

编程过程中发现S_ODT定时器的TV不好进行赋值操作。

根据说明输入TV的数据可以是word也可以是s5time类型。

但是word数据写入便提示错误,

以前在step7时可以将word数据直接move成s5time类型,

现在博途的转换指令好像不行了,move以及convert都不行。


-----我该怎么将其他数据类型转换为定时器可接受的数据类型s5time

tep7也不能word直接转s5time啊

在扩展指令的日期时间那里有t_conv可以word直接转s5time




--------------楼主如果用IEC定时器TON 就没有这个烦恼了,在博途下,可以转变下编程思路。

S_ODT TV值可以进行赋值操作的,预置值肯定是可以改变的。

为什么S_ODT TV即可以是WORD或者是S5TIME 因为它们都占用16 bits空间,同时,WORD类型是非数字类型的数据类型。

S5TIME 是以BCD码格式来存储时间的。是以你只要对WORD 或者INT类型,进行相应的转换就行

比如,先用CONVERT转换成BCD码,然后写时基,比如 OR 2#16#2000 就是以1秒为时基(在使用S5time 时,时基是CPU自动分配的)

时基和S5TIME时间格式见下图

在s7-1500中怎么给S_ODT定时器赋值

在s7-1500中怎么给S_ODT定时器赋值

在s7-1500中怎么给S_ODT定时器赋值

在s7-1500中怎么给S_ODT定时器赋值


你的时间在MW300里设定(INT),先转换成BCD格式 存放在MW400(WORD),然后就是,保留 时间值 AND W#16#0FFF过程,最后写入时基w#16#2000,结果仍然存放在MW400(word),用它来当做TV值


------还是你的方法好,博途 已经有了直接转换的指令了!T_Conv,不用自己根据S5TIME时间格式来转换了!



----推荐用IEC的定时器,不要考虑格式转换的问题,简单!


-----试着用了一下,果然数据类型的错误不报了,编译也通过了。

但又出现一个问题,因为是做一个炉子的温度控制,其时间段可达到五六个小时,

在使用 OR 2#16#2000 就是以1秒为时基后,其最高定时时间是一定的(大概两个多小时),超出之后便赋给定时器最大值(两个多小时)。

使用T_Conv指令也出现该问题。是否是因为数据溢出了


现在准备使用IEC定时器看看。


-------用IEC 定时器是个方法吗,同时可以以10S为时基来进行计时,这样 最大为999*10秒,大于2小时了


------10S为时基是修改 OR 2#16#2000 指令吧,

我改了3000,4000,还是有问题。

现在采用了IEC 定时器方式,

直接给触摸屏设定Time或S5Time值




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索