QQ登录

只需一步,快速开始

s7-1500 有表格先进先出的程序块吗

[ 复制链接 ]
s7-1500 有表格先进先出的程序块吗大家帮帮忙!我刚刚把S7300的项目移植到V12中,可是原来使用的表格功能无法使用了。没有在S7-1500中找到表格功能,用什么指令能代替表格啊!


-----FIFOQueue指令! ]




--自己写一个比库还方便,1500的没试过。原来S7-200或者S7-300的表指令都不太好,都是针对WORD的表,实际使用中我们的项目是用DWORD,所以自己用指针写一个还好用。


------我是懒人懒办法,DWord就调用两次表指令


--------是,以前用过欧姆龙的,也是调用两次,那个烦啊! 用西门子的自己写个小FB, clear,write,FIFO,LIFO都包括了,用指令写也没几行,以后都可以用了,一次辛苦点,以后都轻松多了。


------如果是整个UDT对象的FIFO怎么办?


-----你都写了个俄罗斯方块了,就这点事对你也叫个事?呵呵
不要拿300/400的眼光来看1500。 在1500里的用户数据,虽然继承的名称是300里的UDT,但是它又不同于UDT,它可以作为参数直接赋值的! 看西门子网上的FAQ,1500里当功能块的接口参数过多时,就推荐将这些参数做成UDT,然后直接用该UDT作为参数传递,这样可以减少调用FB/FC接口的数量,程序会看起来简洁。 看看STEP7V5.5里的PID功能块FB41,那参数一大堆……


--------其实呀,在Step7 V55,UDT也是可以作为一个参数传递的,我经常这么用,但是为了减少 FB背景块的大小和提高效率,我都是用 IN_OUT类型,这样不会 copy实参到形参了,IN_OUT类型的UDT其实是个指针,指向UDT块所在实例化DB块中的首地址。
我曾经做了一个队列,队列存储的对象是一个64个字节的UDT对象数组,用来队列执行设备动作指令,全自动的哦,还可以在触摸屏编辑,随时添加或者删除设备。比如有有3台变频器,但是,有10个传动装置,我需要用切换的方式用3个变频器驱动10个传动装置。10个装置执行的时间有差异,比如1号已经执行完了,它占用的变频器必须释放,然后给未执行的,比如说3号,然后3号从队列取指令,开始动作。每个循环都去检测有无变频器被释放,如果有,立即从队列中取设备和指令继续执行未执行的任务,直至无任务可执行位置。这个类似于操作系统的抢占性,3台变频器就是资源。

---------那既然楼上如此理解,何来这一问? “如果是整个UDT对象的FIFO怎么办?”

1、博途里,针对UDT实现FIFO没有任何问题。 你列举的功能,在博途里一样能实现。
2、我说的在博途时实现并不是将UDT作为接口参数传递(当然也可以作为接口参数), 而是直接赋值;比如在某一个DB里定义了a、b两个变量,类型为某一个UDT,那么直接用a:=b来赋值就好了。 基于这个原因,自己写一个UDT的FIFO队列有什么难的? 就当它是一个Int一样操作就好了。
3、不敢苟同这一句:"但是为了减少 FB背景块的大小和提高效率,我都是用 IN_OUT类型,这样不会 copy实参到形参了"

-------如果自己写一个表功能块,UDT和简单数据类型的区别就在于一个用MOVE指令,一个用SFC20


------那是因为你用LAD或者STL。 如果用SCL,不管类型是常规数据类型如Int还是UDT,都可以直接a:=b。
我自己写的表指令就是用SCL,实际上写一些循环类的程序比STL会更方便些。以前用300/400的时候都是用STL+SCL。 现在用博途后都转到SCL了。 以前自己拿STL做的一些块,比如USS通讯、Modbus通讯、表指令、Ramp函数等,现在在博途里都改成用SCL写,指令会更方便。

-----对于第三点,我是参考编程手册的。in_OUT只有6个字节啊,用in/out的话,一个64字节的UDT那就需要 64个字节,而且是是copy过去的。我的理解是IN_OUT我传递的是指针,而IN/OUT我传递的是实参的副本。这点类似于C语言参数传递中的指针类型还是普通参数类型。

-------这个我还真不知道能直接复制,我一直以为UDT是个指针,呵呵,谢谢你的指教。STL除了一些运算和简单的重复性的逻辑外我几乎不会用。SCL我大量的用,和你不同的是,我是LAD+SCL。TIA portal我用的不多,基本上还是step7 V55为主。我骨子里是个守旧派,对V55有偏爱,呵呵~,电脑比较慢,portal运行不顺畅,i5+6GB内存还是很卡。


---------UDT就像高级语言中的结构变量,在PLC中还是顺序保存的。我习惯用STL,就用SFC20替代L/T指令进行数据传送,其它编程思路不变


-----------s7-55有表格先进先出的程序块吗?
--------对PORTAL的SCL语言意见很大,用着没STEP下爽。
------------额,这个号好像没有,可以自己试试写一下,
回复

使用道具 举报

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