S7-1200 Step7 V12学习体会-位指令汇总

LionAL99

  • 帖子

    153
  • 精华

    4
  • 被关注

    1

论坛等级:游侠

注册时间:2007-03-20

普通 普通 如何晋级?

发布于 2013-11-07 19:45:01

6楼

S7-1200中对位的操作方式比较灵活,既有通常对直接位变量的各种操作,也有对字节,字及双字的位进行操作,以下对各种情况进行说明。
1)位变量的绝对地址引用
对位于I,Q,M区的绝对地址位变量是直接引用其的绝对地址,如I0.1,Q3.5,M10.3等;对位于DB区的绝对地址,需先在DB中声明,再引用绝对地址,如DB1.DBX2.0,如未声明即引用,会发生编译警告。




上例中绝对地址DB1.DBX40.1未在数据块DB1中声明,故在引用时出错;
引用绝对地址时,依照好的编程习惯,要先在PLC或数据块变量表中对绝对地址先赋予变量名。
总的来说,引用绝对有如下几种情况:
1.1 I区:引用格式为I0.1
1.2 Q区:引用格式为Q0.1
1.3 M区:引用格式为M10.0
1.4 DB区,分为:
1.4.1 在DB中定义的位变量,引用格式形如DB1.DBX40.0
1.4.2 在DB中定义元素为Bool型的数组arrayBool[0..n],引用格式形如DB1.DBX0.1,其符号寻址为”标准数据块名”.arrayBool1[n]
1.4.3 FB的背景数据块同样适用于以上2条调用情况。
2)符号寻址
符号寻址有几种情况,最普通的是使用对应绝对地址的变量名,此变量名在PLC变量表或数据块(含全局数据块及背景数据块);
其二是在程序块中定义字节,字或双字变量,然后以“变量名.Xn”类似形式引用其位变量,注意变量名可以是PLC变量名,DB变量名或FB/FB的接口区变量;
其三是在FB/FC接口区声明变量时对变量进行覆盖,以数组形式进行覆盖,然后在程序中直接引用数组元素即可进行位变量引用,此方法还可进行间接寻址(即数组下标可为变量)。
以上第一种情况比较容易理解,在此不以例子来说明,以下重点针对第二种及第三种情况进行举例说明。

2.1 符号变量的部分调用
符号变量的部分调用称为”slice”调用,是指定义了一个变量(如长度为双字),则可以对其以部分引用,如以位,字节或字对其引用。
以下以定义一个字变量,然后对其以位引用,分以下几种存储区域说明:
2.1.1 I/Q/M存储区:形式为 “intPLCTag1”.xn,其中intPLCTag1为PLC变量名
2.1.2 DB存储区:形式为 “标准数据块”.int1.xn,其中int1为DB“标准数据块”中变量名
2.1.3 FB/FC接口区:形式为 #intTag1.xn,其中intTag1为接口区变量
说明:接口区变量以前辍#标注,PLC变量或DB变量以双引号标注。
但是,使用V11编程及V2.2硬件时,在SCL编程时,只能对接口区参数进行slice引用。使用V12则不会出现此问题。





2.2变量覆盖位引用
只有以标准模式(与S7-300/400兼容)形式调用DB的FB或FC(或FB中保持性为“在IDB中设置”的变量)才能创建变量覆盖,当以位元素数组覆盖变量时,即可对该变量进行位引用。



上例中intTemp1为FB的临时变量,用于传送数组下标。intTag1为FB的输入变量,atintTag1[0..15]为其覆盖变量,其元素为Bool型,对其数组元素的引用即可体现位变量调用。
上例作用相当于部分引用形式的 #intTag1.Xn,但不同之处是可以通过变更数组下标来实现间接寻址,而变量名的部分引用则不能变更。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15740条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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