找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
{{itemCategory}}
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
这个用SCL语言实现起来比较简单。主要是把思路理清楚。
题目要求是有请求时,存一个取一个。
思路:
根据当前队列缓存区元素数目,将具体指放入队列尾部,当前数目加1,然后将头部元素取出,剩余元素依次向前移动一个,当前数目减1,完成操作。具体可见附图。
1、STEP7 300的堆栈命令?
详见:
详见《基于Siemens S7-300/400 PLC的FIFO功能实现》连接:
http://blog.cechina.cn/xxkjfw/228942/message.aspx
《实现每次20字节FIFO功能FB200功能块的代码,以及实际应用举例》连接:
http://blog.cec.pandabuying.com/hylotus/228942.aspx
2、排序命令有吗?
没有。需要自己编制。例如:
转帖:
用STL语言实现冒泡排序:
假定十个数据,放在DB1中,安放顺序如下:
DBD0
DBD4
…
DBD36
下面是西门子的程序
OPN DB 1 /////打开DB1这个数据块
L 10 ////装载10到MB0中,因为有十个数据,要进行十次排序,9次也可以的
LL0: T MB 0
L P#0.0 ////装载地址指针,这是关键,不要搞错了
LAR1
L 9
LL1: T MB 2 ////内部循环,进行9次,直到把最大值排到最后
L DBD [AR1,P#0.0]
L DBD [AR1,P#4.0]
<R
JC LL2 ////比较前后两个值,如果前面大于后面的,则前后数据交换
L DBD [AR1,P#0.0]
T #m_temp
L DBD [AR1,P#4.0]
T DBD [AR1,P#0.0]
L #m_temp
T DBD [AR1,P#4.0]
LL2: +AR1 P#4.0 ////指针自动进行加4,因为是浮点数,所以要跳过4个字节
L MB 2
LOOP LL1 ///这个指令自动的将A寄存器里的值减1
L MB 0
LOOP LL0
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!