例说指针的威力:快速对V区每个字节赋同一值

已锁定

  • 帖子

    0
  • 精华

    3
  • 被关注

    9

论坛等级:新手

注册时间:2008-07-01

普通 普通 如何晋级?

例说指针的威力:快速对V区每个字节赋同一值

1707

17

2012-03-27 22:33:02

学习指针中,有点无聊,自个儿找点乐子。
S7-200提供了丰富的指令,可以对单个位、多个连续的位、多个不连续的位或者是其它的存储格式(字节、字、双字)进行操作,但是对多个连续存储单元进行操作的指令往往有一定的操作数量上的限制,如复位指令R最多才可以对255个位进行操作,而功能相似的其它指令如内存填充指令FILL、块传送指令BMB、BMW、BMD也都有255的限制,如果想把V区的所有字节都赋值为1,个人感觉指针是“不二人选”,现以对CPU224XP CN共10240个字节的V区赋值为例,简单说明一下指针的威力,程序如下:

TITLE=将V0~V10239的每个字节值设为1
Network 1
LD SM0.1
MOVD &VB0, AC1 //指针初始化

Network 2
LD V10239.0 //V区最后一个字节,作为程序结束条件
//此处也可用比较指令 LDB= VB10239,1
//不过太占存储空间,指令处理时间也长,总体效率太低
//不如LD 位 速度快
//这里个人感觉是个技巧:能用“位”表示的就坚决不用比“位”大的存储单元表示
//如某些条件判断等,如果不做注释的话,可能用大存储单元程序看起来容易明白一些
//用“位”表示某种意思时,一定要写好注释,这可能又和“软件工程”扯到一起了

NOT //不妨来点逆向思维
MOVB 2#1, *AC1 //传送值
INCW AC1 //指针变址

一开始,没用指针,想看看用其它指令是个什么样子,就用了循环+填充指令来实现的,做出来结果不是一般地差劲,而是相当相当地差劲,耗时1500多ms,看门狗也叫个不停,后来改进到40多ms,感觉还是不怎么样,就用了指针,现在也就1ms。单从时间上比较,差了1000多倍,其优劣毋需多言。

爱PLC,爱语言,爱编程,爱指针。
哪位老师有更好的方法,不妨交流一下,共同学习。
例说指针的威力:快速对V区每个字节赋同一值 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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