如何为PLC定时器设置变量时间

我使用的是西门子的PLC400现在的问题是经过了一次除法运算,需要把结果赋值给定时器的初始值,请问具体应该怎么完成,具体的程序是什么?

1、从上位机写整型数INT或实数REAL到PLC,首先该数值需包含以毫秒为单位的时间值,在写入PLC的数据存储区后,利用ITD(Integer to Double Integer)或RND(Real to Double Integer with Rounding Off)将该值转换为双整形,然后将该值写到类型为TIME的变量里,在程序中调用FC40,将TIME转换成S5TIME即可。
2、从上位机写WORD到PLC,首先该数值需包含以某时基为单位的时间值,在写入PLC的数据存储区后,用Word Logic下的WOR_W指令将该值与其时基相或,再利用MOVE指令将得到的数值写入S5TIME类型的变量中。

这是两种类型的转换
具体操作,你经过除法好 将结果 需要通过TRUNC 将浮点数->DINT;
通过传送指令将DINT->TIME;
再通过库函数FC40(库/标准库/IEC功能块/FC40)将
TIME->S5#TIME 。
明白没?追问

只有一点不懂~~就是通过TRUNC转换后的DINT数据~~应该存储在什么位置呢??似乎继续用md存储不行了吧~~~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-25
程序上看没有问题,只需要把R转换为S5time就可以了,首先使用取整命令对MD26取整。找一个DB块建立一个名称为aaa 格式为 S5time 值为 S5T#100MS的变量。
使用MOVE命令把取整后的变量移动到S5TIME中就可以了,数据格式都为MB追问

不是很懂~~您的意思是得到DINT数据后,需要另外在DB块中定义一个100ms的基准值??
能不能给我说说具体流程~~~取整后的数据又应该存储为什么格式呢??MB??

追答

转换为双整形后,我们得到了一个整数,通过MOVE 把整数赋值为S5time的时间,时间单位为你在DB块里设置的单位(没有做测试,如果有PLC可以直接观察结果),这样你的S_PULSE 的TV管角就可以直接填写S5TIME时间了,格式为DB1.DBW1000(数字作为举例,实际直由你建立的变量为准)

本回答被提问者采纳
第2个回答  2011-05-24
一个很简单的问题不知为什么你们要回答的这么复杂,这个问题分四步就可以完成
一:把运算结果值存到数据寄存器里面
二:用PLC启动ON一次的常开地址把寄存的结果传送到另一个数据寄存器里,
三:用上面那个数据寄存器直接定义定时器的时间
四:完
第3个回答  2011-05-24
定时器这个不是很难啊,有一个子程序可以专门赋予时间啊。再用一个中间继电器连接到主程序就好了。着重定时的程序在我培训的时候经常编
相似回答