回复:300的定时器定时时间怎样做成寄存器呀?

上钩的鱼

  • 帖子

    14
  • 精华

    0
  • 被关注

    4

论坛等级:新手

注册时间:2010-02-10

普通 普通 如何晋级?

发布于 2010-11-11 15:28:14

5楼

300的PLC有个极端可恶的问题,就是定时器的定时值,无法直接使用MW100这样的字来直接的“间接寻址”。经过反复实验,得到2种方式。

一、使用“库-Standard Library –System Function Blocks”SFB3、4、5。
无256个定时器的限制,可无限使用,但每个定时器需要使用一个DB块。使用时,一般命名“T1”的地方,要命名上DB1,输入为双字,且为TIME格式。TIME格式需要转换,但用MOVE MD10 MD20即可,MD20做为输入。但是如果用得多,得建非常多的DB块。

二、普通定时器
1.设输入为MW2(为秒),还要建一个DB块,内建T1(DINT)、T2(DINT)、T3(TIME)、T4(S5TIME)、T5(放常数1000)。
2.命令:
I_DI 单字转双字。
MUL_DI 双字乘法。更烦人的是,MUL_DI不支持常数或MW单字,所以做为乘数的单字,也非得先转成双字才行。太别扭了。
FC40 TIME格式转成S5TIME格式。这个好像只能在DB块里定义。用MW或MD,在符号表里定义,好像不行,真烦人!更烦人的是,这样转完,MW2中的十进制数,是ms,想要s,还得再想办法*1000才行。
3.程序:
I_DI MW2 DB1.T1 (T1=MW2) (赋值,且变成双字)
MOVE 1000 DB1.T5 (T5=1000)
MUL_DI DB1.T1 DB1.T5 DB1.T2 (T2=T1*1000)(s变成ms)
MOVE DB1.T2 DB1.T3 (T3=T2) (还不能直接乘完放进T3里)
FC40 DB1.T3 DB1.T4 (T4=T3) (TIME格式再转成S5TIME格式)
使用T时,输入值TV,可以直接用DB1.T4了。

譬如销金矿,金非销故有,虽复本来金,终以销成就,一成真金体,不重复为矿.
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54710条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。