回复:应用探讨——西门子指针编程使用探讨

jerry6873

  • 帖子

    15
  • 精华

    0
  • 被关注

    3

论坛等级:新手

注册时间:2011-11-24

普通 普通 如何晋级?

发布于 2011-12-18 15:14:02

120楼

//一个写数组的小程序,写100个数到数组ARRAY[1..100]
//DB1是一个1-100的整型数组

OPN DB 1 //打开DB1
L P#DBX 0.0 //DB1首地址到ACCU1
LAR1 // DB1首地址从ACCU1到AR1
L 100 //循环长度
next: T #LoopCounter //循环变量
T DBW [AR1,P#0.0] //写到DB1中
+AR1 P#2.0 //指针+2
LOOP next //做ACCU1-1后不是零转移
绝大部分指令是针对ACCU1和ALO的,每个硬件都有针对自己的指令。
+AR1 P#2.0是AR1的专用指令,它不影响ACCU1,AR1也是一个专用累加器,
它的计算不影响ACCU1.
L P#2.0
+AR1
这两条指令是用ACCU1来计算指针的,+AR1是ACCU1的指令和+AR1 P#2.0是
两抹事,+AR1完了影响ACCU1。
用指令做程序也是一个逻辑流,LAD是个大圆,STL程序是许多小圆被穿成一个大圆.
你可以使用跳转指令,来控制逻辑流,使能你的程序中断其线性流,重新从不同
点开始扫描。你可以使用循环控制指令(LOOP),调用一个程序段多次。但最后要
有路可走,不能在一个地方循环出不来了。迷宫虽然乱,但一直往前走。
例如LAD程序我们可以肯定在大圆里不会计算溢出,但不能确定的情况下必须用指令来做
溢出了做什么,不溢出做什么。在比如要做BOOL变量的异或,用LAD没法,只有用STL
A M 20.0
FP M 46.7
X M 91.7
= M 91.7
这是常用的一个按钮开停设备的程序
我们都是做工程项目的,一切要从实际出发.如果你对CPU各个寄存器都非常熟悉清楚的话,
而且年龄也不大的话可以用STL..
我的观点是能用高级的做好就不用低级的语言去做.理论上只要有+1指令,-1指令,转移指令
就能做任何程序.问题是称一袋大米你能去一粒一粒数吗.
况且在调试时STL你也不敢说百分百的情况都想到了.有些情况运行一年后才发现.
在工程上PLC要是停机是很可怕的事情,设备瞬间停了,所有的原料都在皮带斗提上..
所以程序的好坏是使用者说了算.工程完了程序不出事钱能拿到就是好的..白猫黑猫....
可歌可泣
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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