SFC20功能例子注解_第1页
SFC20功能例子注解_第2页
SFC20功能例子注解_第3页
SFC20功能例子注解_第4页
SFC20功能例子注解_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SFC20功能例子 注解谁能够把这注解一下,给大家分享一下,谢谢了LARI P#SOURCEL B#16#10T LB AR1,P#O.OL B#16#2T LB ARI,P# 1.0 L #LENGT LW ARLP#2.0 L #SOU_DBT LW ARLP#4.0 L P#DBX0.0T LD AR1.P#6.O LARI P#DESTL B#16#10T LB ARl,P#0.0 L B#16#2T LB ARl,P#1.0 L #LENGT LW ARl,P#2.0 L #DES_DBT LW AR1,P#4.O L P#DBX0.0:二# SOURCE:=MW0:=#DESTT

2、LD AR1,P#6.O CALL "BLKMOV" SRCBLK RET_VAL DSTBLK注解:L B#16#10T LB ARl,P#0.0装载语法标示ID并且传送给ANY指针L B#16#2T LB ARI,P# 1.0装载数据类型字节并传送给ANY指针L #LENGT LW ARLP#2.0装载字节传送给ANY指针字节长度III LENG变量指定L #SOU_DBT LW AR1,P#4.OL P#DBX0.0T LD AR1,P#6.O指定数据块号为SOU_DB,起始地址为DBXO.O下面为目标地址ANY指针,含义与源地址ANY指针相同.由于SFC20的INP

3、UT, OUT端的数据类型都是ANY指针,所以必须根据 ANY指针格式处理.在此给你作了解释,亿万电器论坛和中华工控网上你发的帖子就不再做重复解 释了.LARI P#TEMP5L B#16#10T LB AR1,P#O.OL B#16#2T LB |AR1,P#1.OL #IN4T LW AR1,P#2.OL #IN0T LW AR1,P#4.OL W#16#84T LB AR1,P#6.OL W#16#0T LB |AR1,P#7.OL #IN1SLW 3T LW AR1,P#8.OLARI P#TEMP6L B#16#10T LB AR1,P#O.OL B#16#2T LB AR1,P#1

4、.OL #IN4T LW ARLP#2.0L #IN2T LW ARLP#4.0L W#16#84T LB AR1,P#6.OL W#16#0T LB |AR1,P#7.OL #IN3SLW 3T LW ARLP#8.0CALL "BLKMOVSRCBLK :=#TEMP5RET VAL:= #TEMP7DSTBLK :二#TEMP6注释:temp5和temp6是ANY指针变量,整个程序的主要局部就是构建一个完整的ANY指针,以temp5为例:LARI P#TEMP5将TEMP5的指针存放在地址存放器1里L B#16#10T LB AR1,P#O.O 写入ANY指针的第一个字节B#1

5、6#10L B#16#2T LB AR1,P#1.O 写入ANY指针的第二个字节B#16#2,表示数据的读 取以字节位单位L #IN4T LW AR1.P#2.O 写入ANY指针的第二个字 数据的长度L #INOT LW AR1,P#4.O 写入ANY指针的第三个字节DB块号/L W#16#84T LB AR1,P#6.OL W#16#0T LB AR1,P#7.0以上这个局部改成如下比拟好L W#16#84TLW ARIf #6.0表示数据的类型是DB块数据L #IN1SLW 3左移动三位的目的是,INI输入的是起始字节的号,而地址指针里处理字节地址外,还有位地址,而左移动三位后相当于乘以

6、8,这样就得到了字节的地址T LW ARLP#8.0数据的地址,对ANY指针的最后一个双字进行赋值,表示的是整个程序的意思就是根据输入的变量IN0-4N4,将一个DB块的数据拷贝到另 外一个DB块里,INO和IN1对应的是来源的数据,IN2和IN3对应的是LJ标的数据,IN4是数据 的长度,两者是一样的.ANY数据类型的结构 ANY数据类璽指针Byten Byte n*2 Byte n+4 Byte n+6 Byte n+816# 10 Dalalype复制系数|DB号|1000 0RRR:0000 OBBB"Tbbbbbbbbbbbbbxxx ANY参数类型指针敷摇类型标识符VOI

7、D00ROOI01BYTE02CHAR03WORD04I NT05DWORD06DINT07REAL08DATE09TODOATIME0BS5TIMEOCDT0ESTRING13參数类型标识符BLOCK FB17BLOCK FC18BLOCK DB19BLOCKSDB1ACOUNTER1CTIMERIDANY指针定义的存储区如果不在过程映像区,那么不能使用SFC20进行复制, 首先,必须将位于过程映像之外的输入数据根据连续顺序复制到全局数据块 中,然后再使用SFC20将数据从全局数据块数据源复制到口标数据区输 出、标记、数据块,不能使用ANY指针直接访问外设地址区如MP#PE300.0 BYT

8、E 16下列图例如了如何将数据从外设地址区PEW300复制到DB5数据块.注意:在上述例如中使用SFC20 BLKMOV要占用CPU大量循环时间,因此这也 涉及到CPU装载存储区的使用问题.在这种情况下使用装载和传送指令比拟 好例如L PEW 300T DB5.DBW0间接寻址的例如程序如下:文件TAE.zip11包含使用间接寻找访问PQ数据区的例如程疗:,对输出模块是只 写操作,对输入模块为只读操作,文件PAE.zip“包含两个STL源文件.你好!使用说明!SRCBLK INPUT ANY k Q、M、D、L指定要复制的存储区源区域.不允许 指定STRING类型的数组.RET.VAL OUT

9、PUT INT L Q、M、D、L在功能执行时如有故障发生,此参数 值中包含故障代码.DSTBLK OUTPUT ANY L Q、M、D、L指定要将数据复制到的存储区LI标 区域.不允许指定STRING类型的数组.注意源区域与LI标区域一定不可以交义.如果指定的LI标区域大于源区域,此 功能只将源区域中包含的数据复制到U标区域.如果指定的口标区域DSTBLK 参数小于源区域SRCBLK参数,那么功能仅复制所能写入到忖标区域的尽可能 多的数据.如果实际存在的LI标区域或源区域小于源区域或U标区域的存储区 的参数集大小SRCBLK、DSTBLK参数,那么数据将不传送.如果ANY指针源或U标是布尔类

10、型,那么指定的长度必须是8的倍数;否那么SFC将不能执 行.源或LI标参数或二者都的数据类型也可以为STRINGo如果源为字符 串,将只复制该字符串的当前字符.如果源和H标为字符串,那么复制字符数U 的当前长度将被写入.如果要复制包括最大长度和实际长度的字符串,可如下 操作:创立自己在SRCBLK和DSTBLK参数中使用的ANY指针请使用BYTE 数据类型完成此操作.特性:如果用SFC 20 BLKMOV将未链接的数据块复制并装载到RAM 例如 通过编程设备,SFC将被延时多达儿毫秒.这会导致一个长的OB循环时间, 可能会使循环监控报警.所以应防止在CPU通过SFC 20复制块时装载这类 块.

11、看指令相应帮助文件就清楚了!L W#16#3230'20' (for 2000 year)T LW 26/ Load ASCII first and second value of the year/ Save in temporary ASCII arrayL P#0.0 LARI L 0 SLD 3 +AR1/ Load start address/ Save this address in address register 1 / Load start address/ Create pointer/ Add this value to address register

12、1L P#0.0LAR 2L 28/ Load start address/ Save this address in address register 2 / Load start addressSLD 3/Create pointer+AR2/ Add this value to address register 2 / Conversion from BCD format to ASCII formatL 8/ Load number of loopsNext: NOP 1/ Do nothingT #Index_ASCH/ Save actual loop number as Inde

13、x ASCIIregis ter 1SRW 4L B#16#30L LB 【ARLP#0.0】/ Load value from address in address/ Shift bits four places to the right / Load value 0 in ASCIIOW/ Do OR operation with bitsSLW 8/ Shift bits eight places to the rightT LW 【AR2,P#0.0】/ Save this value to address in address register 2/ Load value from

14、address in addressL LB 【ARLP #0.0】regis ter 1L DW#16#F/ Load F valueAW/ Do AND operation with bitsL B#16#30/ Load value 0 in ASCIIOW/ Do OR operation with bitsL LW AR2,P#0.0/ Load value from address in address register 2OW/ Do OR operation with bitsT LW【AR2,P#00】/ Save this value to address in addre

15、ssregister 2 +AR1 P#1.0 +AR2 P#2.0L# Index_ ASCIILOOP Ne xt nNextH label/ Add one byte to address register 1/ Add two bytes to address register 2/ Before next loop load actual loop counter/ Decrease actual loop counter and jump toLAR 1 P#Da te _time _ AS CII and set all para mete rsL B#16#10T LB ARl

16、.P#0.0 Destination*1 pointerL B#16#2T LB ARl.P#1.0 Destination pointerL 22T LW【ARl,P#2.0】 "Destination" pointerL # DB_date_and_timeT LW【AR1,P#4.O】 Destination*1 pointerLP# DBX 16.0T LD【AR1,P#6.O】 Destination*1 pointer/ Load pointer of destination data block/ Load value 10 (for S7 always the same)/ Set this value in right place in/ Load value 2 (data type BYTE)/ Set this value in right place in/ Load number bytes to copy (repetition factor)/ Set this value in right place in/ Load DB number/ Set this value in right place in/ Load start me

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论