高级搜索 标王直达
石家庄包装彩印  纸袋纸、杯纸  其他包装用纸  防油纸、防潮纸  丝印辅助器材  丝印模具器材  ALC板批发  POF收缩膜  包装机械  更多
 
 
发布信息当前位置: 首页 » 供应 » 包装机械 » 其他 »

EFB0412MD

点击图片查看原图
品牌: EFB0412MD
单价: 面议
起订:
供货总量:
发货期限: 自买家付款之日起 3 天内发货
所在地: 上海 奉贤区
有效期至: 长期有效
最后更新: 2020-02-21
浏览次数: 346
询价
公司基本资料信息
 
 
产品详细说明
EFB0412MD  
下面的例子解释了系统功能块SFC50“RD_LGADR”(读模块逻辑地址)内参数的确定。例如,为功能块FB1编程可分为下面几个步骤:

台达风扇代理 
程先生 139 188 64473 qq:937926739


?声明一个IN变量“test”和一个TEMP变量“test2”,类型都为ANY(图1)。

?将SFC50的参数“PEADDR”传送到变量“test2”。

?通过为ANY指针“test”赋值,将数据传送到临时变量“test2”中。

语句L P##test首先将地址装载到Accu1,然后通过LAR1语句装载到地址寄存器AR1中(可能是LAR1 P##test的简化格式)。通过寄存器间接寻址将ANY指针(10 字节长)中的地址信息读出:

代码注释

0 L W[AR1,P#0.0] 读出当前Accu1中参数数据类型的代码。

2 L W[AR1,P#2.0] 读出Accu1中的重复因数。重复因数表明通过参数类型ANY传递的数据类型的大小。

4 L W[AR1,P#4.0] 读数据块的号或者从ANY指针中读出“0”(这个对应于ANY指针的第 4 到第 5 字节)。

6 L D[AR1, P#6.0] 将区域指针读入Accu1。

每次读地址寄存器AR1之后,数据被保存或者缓存(如T LW 0)在临时变量“test2”中(ANY指针)。按照Network 1中的语句顺序,传送到功能块FB1 的ANY指针被复制到临时变量“test2”中。

137:怎样通过交叉区域寄存器间接寻址访问功能块的本地数据或者功能?

这里必须预先定义本地数据。您可以使用下列语句访问FB或FC的本地数据:

对于存储器间接指针寻址,本地变量必须声明为临时变量(temp):

L P##Lokalvariable

LAR1

L W[AR1,P#X.x]

此处不能使用变量类型“Input”、“Output”和“In_Out”,将被语法检查视为非法。

138:怎样编程间接访问一个ARRAY类型变量的元素?

一个位、字节或者字符域的尺寸是按照字节限制排列的——在所有其它情况下是按照字对齐的。表T6-1中给出了一个域的存储示例。操作系统计算域中单个元素末端位置的位地址。域被分配到从下一个字地址(或字节地址)。下一个数据类型从下一个整字开始(或者整字节).

声明部分:

在声明部分,必须定义一个与将被间接寻址的ARRAY有着同一结构的ARRAY。不一定非要将ARRAY声明为IN-OUT变量;也可以声明为TEMP、IN或OUT变量。

网络:

域宽度(OFFSET)在网络中定义。ARRAY中的单个元素的*小常规数据宽度是一个字节;即使在两个变量之间定义一个BOOL。有必要确定相关的域的宽度和确定下一个期望域的起始地址。可使用下面的算法:

地址(指数):b = 元素长度*(指数 - 1)

创建具有不同数据类型的结构时,必须注意,在特定的环境下可能会自动插入填充字节。

保存ARRAY数据类型:

示例:ARRAY [1..2,1..3] OF 整数将生成下列域:

多维域是按照顺序保存的。在本例中整数 [1,1]后面是整数 [1,2],整数 [1,3]后面是整数[2,1]。

139:STEP 7 以哪种格式存储POINTER参数类型?

STEP 7以 6 个字节保存POINTER参数。表4-1显示了用于保存POINTER参数类型的内存区域以及每个字节中保存的数据。i POINTER参数类型保存了下列信息:

DB号(如果DB中没有保存任何数据时为0)。

CPU中的内存区域(表格中列出了不同内存区域的十六进制代码)。

数据的地址(按照Byte.Bit格式)。

如果将形式参数声明为POINTER参数类型,则只需要指定内存区域和地址。STEP 7自动将输入项目的格式转换为指针格式。

140:如何间接访问I/O地址区域?

下面演示了一个间接访问PA区域的例子。您具有对输出模块只写访问和对输入模块只读访问的权利

FUNCTION_BLOCK FB 2

TITLE =

VERSION : 0.1

VAR_INPUT

TargetAddress : DWORD := DW#16#FF; //Target address by PA address range

OutputValue : DWORD ; //Output value

P_Typ : BOOL ; //1=PE range, 0=PA range

END_VAR

VAR_OUTPUT

InputValue : DWORD ; //Input value

END_VAR

VAR_TEMP

TargetTmp : DWORD ;

END_VAR

BEGIN

NETWORK

TITLE =

U #P_Typ;

SPB PEA;

L #TargetAddress;

T #TargetTmp; //Load target address in the tempor鋜e store

SLD 3; //Calculate the formate of pointer Byte.Bit

T #TargetTmp; //Initialisation of temp variable with target address in L-Stack

L #OutputValue; //Load output value

T PAD [#TargetTmp]; //Transfere output value to target address

SPA End;

PEA: L #TargetAddress;

T #TargetTmp; //Load target address in the tempor鋜e store

SLD 3; //Calculate the formate of pointer Byte.Bit

T #TargetTmp; //Initialisation of temp variable with target address in L-Stack

L PED [#TargetTmp]; //Load output value

T #OutputValue; //Transfere output value to target address

End: CLR ;

END_FUNCTION_BLOCK

141:应用软件冗余当一个长度错误出现导致CPU处于STOP模式应该作些什么?

当在OB100中设置软件冗余功能块FC100时,必须注意下列情况:参数IEC_NO 的背景数据块必须至少有两个字的长度,同样应用于冗余用户程序的参数DB_NO的数据块也必须时这样。

142:在S7程序中,有许多FC、FB块, 我怎样对其中的一些块进行保护, 而其它的块可以是开放的呢?

1) Step7中, 可以先任意打开一块如OB1, 在"file"中选择"Generate Source"或快捷方式"Ctrl+T",弹出一个画面,填写"object name"如"tt",然后按OK确认,就会再弹出另一个画面,左边是你的程序中所有的块,如果你需要保护哪些块, 就把这些块移到右边,如FB1、FB2等等, 然后退出所有的程序块,再进入SIMATIC Manager中。

2) 在S7 Program Sources找到文件tt,双击tt打开,在第四行中加入"Know_How_Protect", 然后编译, 无错后存盘。这样FB1、FB2就被保护住,如想去掉保护,在tt中去掉"Know_How_Protect"编译存盘即可。

注意: 千万不要丢失或删除源文件(如tt), 否则程序被保护, 用户可以另存到其它目录中,或Export Source到硬盘中,再删除源文件,这样别人只能看到未保护的块。
 
更多»本企业其它产品

[ 供应搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 关闭窗口 ]