关键词不能为空

当前您在: 主页 > 英语 >

SCL编程问答

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-27 21:57
tags:

-

2021年2月27日发(作者:jail)



问题


:


解答


:


关键字





S7-SCL


使用说明



操作指南


:





我能否得到一个访问



SCL


数组的索引




可以。 在


SCL


中可以有一个访问数组变量的索引



这里索引也可以是一个单精度的变量



STEP7 ? STL


成对比





Exam pie: fun ctio n FC1:void var anna : ARRAY[1..3O] OF INT;


willy : INT;


end var begin willy:= 1;


willy := ann a[willy];


end function


索引




SFC14



SFC15 ANY


参数的编程


?



中如何进行





S7-SCL






LAD/FBD/STL


编辑器中,要在



UDT



DB


中声明一个



ANY


数据类型的变量是不可能


的,因为



ANY







当调用


SFC14



变量是一个参数类型。但是,可以声明



ANY


变量是一个临时变量。




SFC15


时,应确保通过



ANY


变量



记录”被参数化的用户数据区的长度必须与




HW


STL


中调用这些块


,


Config


中的模 块组态中的用户数据区长度相同





(


例如


3


字节


)


。这就是为什么建议要在



目的是可以定义



ANY





SCL




LAD/FBD/STL




指针。







如果直接调用



SFC14





组态的字节数是奇数,则






指针到精确的字节上



(


例如



0.0 BYTE 3


)


。如果在符号编程过程中



中,传送


STRUCT


< p>
ARRAY



q ANY


类型的块参数时,编译器传送适当的



ANY



SFC15


并通过



“STRUCT


或“


ARRA


Y


类型的变量用符号提供



记录”参数


,


若从站



SFC14/15


报告错误代码



80B1




这个动作的原因是



偶数长度。



STEP 7

< p>
中的


STRUCT



AR RAY


总是按字的边界储存在存储器中,



所以总是传输的



< br>如果在


S7-SCL


中调用


SF C14



SFC15


并要动态地提供< /p>



ANY


指针,建议在



SCL


'


变量区域声明视


< br>图”中使用“


AT'


结构。






T




IPT DJV PniLrrT


smuCT



ex


宁」


5


&VTEJ



/ /XCi FjC-r inv FOxJLrt e



h


F



DE


KX L


IXE:


■卩■ 口



DyLc lO


?二专炖


Spr



(




PnCnTjrtl


tVPtj


m


瑪:


woFp




DT


杠」


EE



01 aye.




/


r


n


f


M


rfiTT


-


REfr;





//PuillLtL to bj IL- BEd


丁匚■=


r'.Trw


?口


_



L :



EID



CraStT



EOn- TTTE



TII^



]>r


mRld



EfT*


C-QU


rtr


!■


INr




*


匚点


3



1'


//


「卩


=


厲耳诵


2


已日?


JL




CJuiyT o*



yr#


-^-iTiuirrt^ir



方■「?!




/



Urt



i 02


「血丄盐


Uut.L1i^tL3


J D


/ jQ?rc ;


na hrCdf-^n^ (Ert-I rf -I n


M


bh


jlLa!


bn


VM^TIMP



T


■切



Al



4r




INT?


XTwrF


I

< p>
E


T


T


J



|13*_***



*


,匸气卜


H


丄于


- D fcyce


b


j=ffe^ Co




L


虫鼻



JHV Po_pte




By


佢「好肚讣


H

< br>—


IB




tiuii^frlfrj


y/'Lenat r. ft!



Buff PhtMTfpi


Egiez.



Qtn


匚;




irfr_TCi_50ftD


iiEyM_Caiin:|


Buiitf


QlAfXr




FQlHSf.r


itQ^ !


fc/C t t-ddf-ESi ICL


r&g


/UTTtrrt^r


XTPO


jjeJ cbia



yr


史〕



n



*



L



3-


IWT^TO^tCBC


(Dl^H'cniTwr)


^y/W-rm+ser eJ -iciznt Ion M


丹皿


du




■■ * In


D


p


J JEL


-CL


IJII


i^LkiMrh



>Llpri_-|i



i


a


■吧


a




flu



let


JT


Sr


TIG





lULIet EyC?_HoliLte?



:


P




111


dlfc.


lfCM_T5_lV0rK DfTTCiWM


C


H


h


严打「



PP_A



-


T^frt_ltiy_POlTltrr( J


/j Ur :


tr



raa^n


H:



h GF-




EtiOr


-


5niH_PJkT(LltI>R


EL^T



Ecrer


-


5fPa PAT^LJttPFL


FUl^Tfj


iCsli_irCH_ia.- ElLctJ


no rwcTivN



F_RtrczSff, Piraac


: -


TCPT X4iy Foimtcr


卜;

ae




vixt



5^-Cl-i




.01


程序描述




功能块提供了



SFC14


读取和


SFC15


写一致 性的数据到一个标准的从站。数据被储存



< br>


所指的


DB


块中



所指的地址开始的地址区中。



字节的长度



(



BYTE_COUNT)


定要与


STE P 7


组态所选模块的长度相同。



如果




参数的状态指示未


< br>1



rue),



SFC15


传输数据到从站,若指示为


< p>



SFC14


从从站读取 数据。



“LADDR


参数



和返回值



“RETVAL




STEP 7 SFC14/15


在线帮助中有描述。



用户创建数据区拷贝功能注意事项



例 如,在



索引的直接访问是不允许的。



统是禁止访问的。



形式下


,


用户需自定义两个索引标签



,


数据区拷贝和



除此之外系



原因是数据块号和此数据 块的地址仅可以在运行的过程中被访问。



下载





附件下载包括有



S7-SCL


功能



FC10



STEP 7


项目。复制



“NY_”


文件到一个单独的文件夹,然



后双击打开文件。



STEP 7 V5.4


项目及所有相关子目录就会自动解包。可以使用



SIMATIC


管理器打开和




处理解压缩项目。



此处有


STEP 7


项目中的两个相同的



S7


程序。




S7Prog_d


”包括德文注释的



S7-SCL


功能。




S7Prog_e


”包括英文注释的



S7-SCL


功能。



ANY_ ( 48 KB )


相关信息




关于带


AT


功能的


ANY


指针的结构的更多信息可在条目号



21946854


获得。



关键字


:


ANY poi nter


S7-SCL


中的全局常数



%


▼■显示订货号



描述



使用


S 7-SCL


,不能定义任何全局常数。



解决方法


:



STEP 7


的符号表中,使用相应 的数据类型创建标记字或双字。为这些标记区域分配恒定的数值。此后


,


便可以在整个项目中通过符号寻址和恒定分配的数值来使用标记数据区,这当然也包括




S7-SCL













.01


在变量表中定义

< br>



变量


,


INT


类型,地址是






0B1


里使用



load



transfer



指令赋值。



由此即可在项目和



S7-SCL




程序里使用此变量。



FUHCTIOH


QUADRAT :


INT



VAR_IWPUI


wert


:


INT;



END VAR



6EGTH



IF


wert


QUADRAT



ELSE



QUADRAT




Q



|


G



bal


CQK3t|


THEM


:=


vert


*


wert;



wert =


2


QUJLDRIT =


QgPRAT


=



Tjert


= 2


, wert = 2




=



EHD IF;



EHD FUHCTIDH



01


S7-S CL


中如何编辑、比较字符串,或将字符串转变为其他的数据类型


?


描述


:


此条目下处理下列问题


:


对一个字符串中的某个字符进行直接读写访问



编辑,比较,转换数据类型



编写一个字符串比较的



FB


例程



对一个字符串中的某个字符进行直接读写访问



MB10 = str[5]




01


实例说明如何




字符串中的单个元素是无法单独访问的,例如这样的格式不允 许


:


使用


IEC FC26



MID'


函数、转换函数

< br>



STRING TO CHA


R


和“


CHAR TO BYTE


对字符串中某个元素



进行访问。






01





参数含义


:






IN


:


STRING


格式的输入变量。






从位置


P


开始(含



P


)的字符串长度。(数据类型


:


INT


)




起始字符位置。



(数据类型:


INT







RET VAL


STRING


格式的输岀变量。






编辑,比较转换数据类型






下面的



PDF


文件中是使用



IEC


标准函数进行字符串编辑的



S7-SCL


一些例子与说明。








S7_SC



String_Parameterzuweisung_e


( 99 KB )






字符串比较



FC


例程







FC


的参数往往传递的是地址。



由于


FC



STR ING


类型的参数地址指向调用者中字符串的存储位置





果此


< /p>


FC


被调用时,所传递的指向字符串的地址是无效的。然而对于< /p>



FB


,传递的字符串存储于背景






中,所传递的地址是总是有效的。对于包含字符串比较程序的



FC


,在处理之前必须将字符串数据从





OUT





IN_OUT


传到临时变量区,



否则编译会失败,错误消息是


:




correct


数分配错误)。









02




S7-SCL


字符串比较



FC

程序示例。当此


FC


被调用时


,


如果没有被装载到



FC


的临时变量区


,




stri ng1






stri


将无法被获取。



ng2



DB





IN< /p>





FWVTIOW


tc7




niT



VftK^l^OUT



:


S


T


RING


[


IS


1


f


■tringE:


STRTNC[


L S]


;



VM


T


TEI


?



STLIHGllfen


/ /Declaration o 1 temporary VarraJile



tmpS:


3TIIIUO(16]


o


I



匕己


j&porary Vatxahie



IF


tiiipl-


s>ti?ip?


TIHEN



f


c7z


=


lOO


;


/


/Handing over if St iiigl ■=


:?-


Et r ingZ



ELSE



f c?:


=


S


;


/


/ IT an din^


o


ve r


i


f Str in = St-r in^2



Eini_jr




BUD TVnClTON




02


然而,缓存字符串数据到临时 变量区域将很快导致本地存储需求增长,如果只有少数的



用临时变量是适宜的,但是



STRING


变量很多,建议使用


< /p>


DB


变量缓存字符串。图


DB100


缓存输入变量的示例。



E UNCTION


FCS:




ITT



U11K_IN_OUT



Stringl:



[161


;


^tringZ;



STRING


(161


;



END_i?t





:


=


dhIOO


.


tiapZ?


=



IF


dhlOO tJupL


3


dhlOO-tapZ


THEN


fQgy


IDO




ELSE



fc3:-


S;



END IE


f



eiw^f lUbJdtion




03


关键字


:



消息号



15:4099


错误消息,临时变量,指针




STRING


变量,使


03


为使用数据块











如何读岀带有

S7-SCL


关键字“


AT


勺字符 串中的管理和字节部分


?


说明


:


在某些数据通信任务中


,







例如通过


TCP


协议



见条目号:


19033929



传送有可变信息长度的数据,字符串



的管理和字节部分可能必须分开。



S7-SCL


的关键字


AT


可用于这一目的。




数据类型


STRING


包含最多


254


个字符。



STRING


数据类型的变量的最大长度为



256


个字符。在变量创



建时,也同时定义了其最大长度。当前长度






字符串 使用的实际长度



在字符串重构或编辑过程中被输入。字


符串的第一个字节指定最大长度,第二个字节指定实际长度





。接下来的字符为



ASCII


格式。图


T1-01


显示



STRING


数据类型的结构。






01


注意事项


:


数据类型


STRING


格式的更多信息可在



STEP 7


的在线帮助中找到


: < /p>


数据类型


STRING


的格式”。



可在


S7-SCL


的帮助中找到关于关键字



“AT


的更多信息


:


声明变量范围的视图




S7-SCL


中关键字“


AT


是变量或变量范围视图的一个定义。建议使用功能块的静态变量而不是全局数据



块。然后就可通过符号连接这个变量,例如



ABC



STRING


类型。



使用


S7-SCL


指令


AT


通过

< p>
STRING


变量


ABC


来创建一个模板。如图


T1-01


所示,数据类型


STRING


包含



256


个字节。字符串的最大长度和实际长度分别输入到字节



1


和字节


2


。在图< /p>


T1-02


的样例程序中,字节


“Str ing_maximal


包含最大长度,而字节




String_actual


包含 实际长度。字符串中的字符,最多总共



通过域



JKL: ARRAY[1..254] OF BYTE


定义。



可通过变量



连结字节部分,例如字符串


ABC


中的第三个字节,及字符串中的第一个字符。



包含了读取数据类型



ST RING


的字节部分的一个


S7-SCL


程序。



[1]:= MB1



02



S7-SCL


中如何访问



BYTE



WORD



DWORD


变量的各个位




说明


:



254



,



T1-02










S7-SCL


版本



V5.1


起,可以使用


< p>
AT


函数去读写变量的元素。当定义变量视图后,可以读写


:


变量数据类型为



BYTE



WORD



DWORD


的位




变量数据类型为



WORD



DWORD


的字节




变量数据类型为



DWORD


的字



AT


特性主要用于



INPUT



OUT PUT


和本地变量。图


.01


显示了访问



BYTE


变量位的



AT


功能的



S7-SCL


样例


:


?**


-


-i


?■



Hvoas


^rui*s


*



aFv


^'^jOFaiL



*?n*


* ■


am


' ^ui -


u


Fw - E -


LJIM


-



1X--


sj(p*?ww


-


■:


.-'itaflHAATsi?.


N


u


ri



FVWCTIOM



BI


J


OCK


fbiZ?



?i_l?pirT



UkinVarByta




BTTl,



7Llc?rV*r


AT


rf^lnVArByt*:


ABUY[0 OF


BOOL;




BHB



VM



?t_



OUTPUT




Xft:



BOOL;










XI:



XZ




X3:



EOOL,;



BOOL;



BQOLj



^aOLi



BOOL




BOOL




BOOL






X-l;



XS




X6




X7





VJUt



KO



=


XI



=



X2:


=



X3


-


Kt


=



Xg


=





x?


-



riUtrVar


(0);


riUtrVtrtlU


TlleteVkr


(Z);


rilt?tVfcrt3U


rilctiVAr


(4)


;


riLttrVkt[5B


[bl;



EHB FVHCTIOIf BIOCV



-EKBRWffr


(1




<1


'







01



.01


在这个

S7-SCL


的样例程序中,创建了输入叁数的多视图。如果


FB40


被调用,你能参数化作为输入和





输岀变数的




Mai nVarByte







X5


叁数。



FilterVar


叁数不在调用块中岀现。变量





MainVarByte


被分为变量




FilterVar


< p>
8


个布尔值。请参考



S7-SCL


的在线帮助中



声明变量范围视








部分。













声明视图




FB



VAR, VAR_TEM P,


























FC




数据类型的声明



基本类型



变量的数据类型



复杂类型



ANY/


指针




基本类型



复杂类型



X


ANY/


指针





X


X



X


X


)


1


VAR



N ,


X


)


1








VAR_OUT




声明视图



基本类型



复杂类型



X





VAR_IN_OUT




ANY/


指针



X



声明视图



基本类型



复杂类型



X


X


VAR




VAR_TEMP














声明视图






VAR_IN, VAR_OUT




VAR_IN_OUT















.01






这里应该注意变量域






1


ANY/


指针





X


X



X


X




基本类型



复杂类型




X





ANY/


指针



X



VAR OUT


中的


ANY


指针在功能块中是不允许的。上述样例程序也不能用于



FC


中的


VAR IN


变量和


VAR OUT


域。




< /p>



.02


示例复制两个输入变量




WORD


数据类型



到一个输岀变量


< br>(


DWORD


数据类型



。两个输入变量的



存储区

< br>




被复制到输岀变量

< p>





怖冶



“a


齐詁颐闿円心曲


I


帥」


iJ

< p>
』諮


.



te%#


十才


?


X ◎ fr


*jy.a-


w


-


.


^sB-



BilJ CfiLiii


+iti




>ili


Y



J



却轉


ecu




” *ta


*


4


^siK-rtff



? ]


+


OCOC



?


-


-


|i?


gniiTJi


^xwzt


HrcH-s




Erw



(3



<:


(f


UtoT'i.



CT





~


-Tip.


X


i




a


. T I


ttpj^Ljdic.u...



Dr


监时!


a.


U


|p


FTOCTIOK BLKK


FBILO



TMjNPirr



MOM


J



byword:


U0hl>


;



EKD VAA



?M_ovT^rr



AE_gftti?cht


:


PHOAD


J



C_duord


LT


STRUCT



匸丄

< br>*


w




WORD




~




hl


曲:


V0U>;



■n^STHCT;



IBCIN



C_dtffltd. X_l4u



A_WQird; C-duQifd E_hi^


=


B_H(jcd^


I NV FUHCTIOH BLOCK



?







啟獣


/


h].


:,




03


变量“


A word


中的数据被写入到输岀











“C_ dword'


的低位字中,而变量




B word


中的数据被写入到高位字中。



C_dword


高位字节



1


低位字节



高位字节



低位字节



高位字

(



C_dwort.B_high



低位字




C_


_dwort.A_low


”)







.02






以上样例也可用于要被复制到



WORD


变量中的



BYTE


变量。






注意


:






不能定义一个由



8


个布尔类型变量组成的




类型的结构。因为结构变量最小是一个





结构不能由一个字节组成。





补救


:






定义一个



8


个布尔的队列替代现有的



8


个布尔变量组成的结构。这样就可以访问每个位了。

< br>





变量声明



备注





错误




ByteVar:



Byte; < /p>


编译的错误信息


:


数据类型和变量类型不 一致





BoolVar AT ByteVar: STRUCT







BoolVar_1:= BOOL;




BoolVar_2:= BOOL;





正确




ByteVar: BYTE;




如图


.01





BoolVar AT ByteVar: ARRAY [0 .. 7] OF BOOL;








.03






这个限制不适用于变量类型



WORD



DWORD





软件环境


:






FAQ


的图片由



S7-SCL

< p>
版本


V5.3


生成。







如何使用



AT


函数在


S7-SCL


中构造一个



ANY


指针


?



WORD ,


一个




说明




S7 -SCL


中可以使用



AT


命令来定义其它声明变量的视图。



下面的两个例子描述了如何为



ANY


指针声



明组件,创建



ANY


指针以及确定用于从



DB6


复制数据到



DB7



SFC20 (BLKMOV)


的参数。



F


表描述了如何在函数中定义一个



ANY


指针。



步骤



No.


STEP 7


将参数类型



ANY


的数据保存在



10


个字节中。为此必须定义一个结构变量,



它包含如“


data


ype


”,




rep eat factor




DB number



的参数类型,还有构造



ANY


指针的字节和位地址。图



示了在


FC


中两个结构变量




Test1


和“


Test2


的样例声明。



Li%20Ran/2_Release/20110505/Fi ni shed/S7_SCL_AT_Fu nktion_01. png



01


2


使用


S7-SCL


指令


AT

< p>
通过结构变量




Test1


或“


Test2


创建一个模板,并且给为此而定义的变量声



明“


ANY


类型,例如“

< p>
pAny_source



。这样使用指令




已经定义了一个



ANY


指针



现在必须如图



01


所示通过结构说明预置



ANY


指针。以下指令对应于



ANY


指针



P#0 .0



Byte 10


”的结构


:



01











//


语法



ID


为十六进制


< br>


//


为数据类型字节




//


长度为


10


字节




〃为



DB6



//


数据块的字节和位地址

< p>


4


用定义了的



ANY


变量




pAny_source





pAny_destin


确定



SFC20(BLKMOV)




ANY


参数


(



< /p>


01



,例如


,



INT


类型的变量



erg


对应于函数的返回值




RET_VAL



,


下表描述了如何在



UDT


中定义一个



ANY


指针。



步骤



No.


“AnyPoint


”的



UDT1


:


首先创建一个



UDT


来定义


ANY


参数,例如为参数创建一个符号名为



Syn taxID: BYTE;


//


指定语法


ID


DataTy pe: BYTE;


〃数据类型编码



DataCou nt: INT;


DB_Number: WORD;


//


重复因数



〃数据块数



Byte Poi nter: DWORD;


//


字节和位地址的指针




2


在函数中声明了变量,女


n



AnyPoint


类型


(UDT1)





buffer_source



(DB)





buffer_destin


目的


(



DB



。使用


S7-SCL


指令



AT


通过结构变量




buffer_source


和< /p>



buffer_destin


创建模板, 并声明为此



而定义的变量为




ANY


类型,例如




Source_Any


和“


Destin_Any


”使用指令




已经定义


ANY


指针如图


02


所示。



Li%20Ra n/2_Release/20110505/Fi ni shed/S7_SCL_AT_Fu nktion_02. png



02



现在必须用图



02


中的结构化指令预置


< p>
ANY


指针。以下指令对应于目的数据块的






“P#0.0 Byte 10 ”








//


语法


ID


为十六 进制




16#10;





〃数据类型字节




16#02;





//


本长度 为


10


字节



16#0A;





//




DB7






//


数据块的字节和位地址

< p>



dw#16#84000000;





用定义了的



ANY


变量




Source_Any


”和




Destin_Any


'


确定



SFC20 (BLKMOV)




ANY


参数


(







02< /p>



,例如


,








ny)



ANY


指针







INT


类型的变量


< br>“


erg


対应于函数的返回值








RET_VAL






关于


ANY


指针的更多信息可见






参数类型



ANY


的格式






STEP 7


的在线帮助的以下标题中




注意事项






如果在



S7-SCL


中用


STL


程序调用一个函数,而且该函数有一个



ANY


类型的


OUT


参数,就要用



ANY





指针将其参数化,例如,像




P#0.0 BYTE l0


不可能在



S7-SCL


中,因为



ANY


指针在



STL







S7-SCL

中的处理是不一样的。当在



S7-SCL


中从


ANY



U ANY


赋值时,为了转发接收到



INPUT


参数






6 < /p>


字节



。为了确定



STL


程序的



ANY OUT




ANY


指针,就会有


10


个字 节从一个指针复制到其它指针





参数推荐使用



< br>STRUCT


类型



如上例所述



。如果一个不是






S7-SCL


编译器就会创建地址


< /p>



10


字节


)< /p>


并且将其写入



ANY






复制“


SCL_


”文件到一个单独的 文件夹,并且双击打开。





ANY


的类型变量赋值给



ANY


变量,那么



指针。



STEP 7 V5.5


项目以及其全部相关子目录就




会自动解包。可以使用



SIMATIC


管理器打开和处理压缩项目。



STE P 7


项目包含两个站。站






个函数中定义



ANY


指针的程序


< br>而站


2


包含在一个



UDT


中定义



ANY


指针的程序。







Li%20Ra n/2_Release/20110505/Fi ni shed/disk_ SCL_ ( 88 KB )





关键字






滤波器,滤波,变量数据类型,变量视图





How can you con struct an ANY poin ter in S7-SCL using the AT fun cti



1


包含在一



on?




EH^


Dis play part number








In structi


ons




In S7-SCL you can use the AT comma nd to defi ne other views of the declared variables. The two




exa mples below describe how to declare the components for the ANY poin ter, create the ANY poin ter and


parameterize the SFC20 (BLKMOV) for copying data from DB6 to DB7.


The table below describes how to p roceed to defi ne an ANY poin ter in a fun cti on.


No. P rocedure


STE P 7 saves the data of the p arameter type ANY in 10 bytes. For this you must defi ne a structured


variable that contains the p arameter types like


the byte and bit address for con struct ing the ANY poin ter. Fig. 01 shows a sample declarati on of the two


structured variables































































ruMcrzoiT


FCIZ


VOID



VAK



restl




STRUCT


//AWY Struhvut I


AUT_id:


BYTE;


//refine ftHT


Wow;


STI


Si



S


fluif


e?_r>B


V


:


WOW)


J


3


our


c


e



_


P


o


int er:


D?0K>;



BMI>_STRVCT


r



Tes



2:


STRUCT


Str-


uktut ±



AUY



id:


BYTE;


//T-efxiie AMY


De?tin_I>a.t


aType




EYTS


;


Destii^Iienglit z


KJORD


;


Destin DE Kumuieu;


anlegeil



TfOKD*


Dew




in


Byte


ENl)_STRircT;~



er


:


DUJQtiD;



st ruciz-Tire


2



ZZI>e)[ia]



atioii JLWY Pointer tur Quell-DE


fIng


AWT


o?


PE



pAjiy_fourc<


IT


Textl:


AKT


;



//I>etelAFatL>H. JLH7 Pointer iut Ziel- DB //r>ecifiring ANY


point.5E of tsrget DB


pAiiy_(le3cln


M


Test#:


AKY


;



er


5




IWT




f


/ft-iickgabewart /


?et>Lirn vaXue


Stin VAR



T


电孔



J_. JLHT



id:


=


L6ff 10




Z/^o rl>eleg&ii der Quell


-


AIIY-Point


e


r Variablen


T^stL


,


Sovirt:e_PaVaType


;


=


Testi


Source


Lericrht


:


=


I?^0ia;



2


r


values


?


QH



三口


irus pgint-er



T^stl


1



T



stJ. 5ource_Byte_Poiiiter:


=


duf 16#34000CLiO;



T?seZ. AHY_ld.:


-


L6#10;


Z



T


< p>
st2-


Destiti



DsbaType;


=


1?|?


;


//kssign values for destirLfitioEL pointer



TescZ


.


r>e


etin_Leii^ht


: =


lejiCia;



Test^


.


I>e


^I>B_H'uiiLiier


: =


IfiSOT


j


T^s^t?. I>eEtiEi^Byt


-e_PoiEiter-;


=


dT^#16#e4DOOCOOF



/_/



ufriif STC20 1111(1 Fafajne




rierijnm de r AKY



Poin.t ezr-Var iab len



//CaLliiig EFCZO and programsxng of AITY ipoirit&r varlablGS


er


J




=


3FC?C (sccblk


- =


pAn




soxirue, dstlJ Ik


:


=


p


Aiiy_destin);


ZIW EUNCTIDEI



Fig.


01


Use the S7-SCL in


struction


AT to create a temp late via the structured variable



and declare the


Thus with


he in structi


on



you have defi ned an ANY poin


ter.






3


Now you must pr eset the ANY poin ter with the structured in structi ons as in Fig. 01. The


follow ing



nstructio ns corres pond to the structure of the ANY poi nter


Byte 10



































ID


//Hex for the syn tax



//for the data type


Byte


//le ngth here 10


bytes


//for


DB6


//byte and bit address of the data


block





Parameterize the ANY parameters of the SFC20 (BLKMOV) with the defi ned ANY variables


'pAny _source


mple.



in)





The table below describes how to p roceed to defi ne an ANY poin ter in a



UDT.










No. P rocedure





1


To defi ne the ANY p arameters you first create a UDT, for exa mple a UDT1 with the symbolic n



ame











The variable


(RET_VAL).


'AnyPoint


arameters:


Syn taxID: BYTE;


tax ID


DataT ype: BYTE;


type


//sp ecification of the syn


//code for the data




DataCou nt: INT; //rep eat factor



DB_Number: WORD;


//n umber for data block


Byte Poin ter: DWORD;


//poin ter for byte and bit address


n the fun cti on you declare the variables, for exa mple


'buffer_desti n


AT to create the templates via the structured variables


declare the


'Desti n_Any



you have defi ned the ANY p oi nters as in Fig. 02.





























































TYPE


AnyP


oint



STRUCT



Syntax ID;


BYTE;





EYTE^


DmgCczunt;


IHT;


DB



Mujuljsr


:


TiJORL


;


SycaPo


irtCeif




DUO HE;



EMD_STRircT



EiWTYPE



F-UMCVION


FCl:


VOID



VUK



buf


f


er_5


3ource_Aiiy


BT


bu


?


?er_sflu.r c e


AJJT


i


but


AnyPoiiit;


DeEtin_Aiiy


AT


buf fer_destiii:


AHT;


erg:


IMT;



E2n> VAft



bTif


EyTit.a.3iir):


=


l^#iO


;



tnif iar_Eource. Dat-aTyi)e:


=


;



hixif fer_source


.


Dat-aCoxirit


:


=


16#0


a;


buffer


e,


DB


;


=


X6f 0^


;



buf fet


—sour u?


-Byte


Poin




er




=


d-wil^#S4000000^



kxuf fRE



dQFtzLn >:


=


IS? 10


;



buf fer_(irpe:


-


ISSZ


;


bvtier_(lestln. DataCount:


=


16#0


A


;



bxi


?


ief_(le


ST-lii.


DB_tJujiil)er


:




IS i 0 7




b'ii?faif_dGstill. EytaPoiiit SI:


:


=


d-w#i63ftS4CiOOOOO;



e


rg:


=


SFC^O C^rcblk:


=


Sour



, dstiblh


:


=


__Any)


;


EXD


FUNCTIOK



Fig.


02


Now you must pr eset the ANY poin ter with the structured in structi ons as in Fig. 02. The


follow ing


nstructio ns corres pond to the ANY poi nter


data block.



16#10;



16#02;


< p>
16#0A;



//hex for the syn tax


ID


//for data type


Byte


//le ngth here 10


bytes


//for


DB7


//byte and bit address of the data


block



dw#16#84000000;




4


Parameterize the ANY parameters of the SFC20 (BLKMOV) with the defi ned ANY variables





The variable


More in formatio n on the structure of the ANY poin ter is also available in the On li ne Help of STE P 7 in the cha


pter en titled


Format of the ANY p arameter type


Note


If you call a fun cti on with the STL p rogram in S7-SCL, which has an OUT p arameter of the ANY type, the n


parameterization with an ANY p oi nter, like


S7-SCL, because the ANY poin ters are p rocessed differe ntly in STL and S7-SCL. When assig ning from


ANY to ANY in S7-SCL, the 10 bytes are cop ied from on poi nter to the other (6 bytes) in order to forward the ANY


poin ters received to the INPUT p arameters. To p arameterize the ANY OUT p arameters of an


STL p rogram we recomme nd variables of the


type other tha n ANY is assig ned to an ANY variable, the n the S7-SCL comp iler creates the address (10 bytes) and


writes it to the ANY poin ter.


Copy the


V5.5 pr oject the n unp acks automatically with all the associated subdirectories. You can the n use the


SIMATIC Man ager to open and pr ocess the extracted pr oject. The STEP 7 p roject in cludes two stati ons.




Stati on_1 contains the pr ogram for defi ning the ANY poin ter in a fun cti on and Stati on_2 contains the



p rogram for defi ning the ANY poin ter in a UDT.


SCL_ ( 88 KB )




在没有明确声明



DB


的情况下,如何使用


< p>
S7-SCL


打开一个数据块


< br>


描述




编程过程中,可以使用参数类型



BLOCK_DB




.01



.


在编译时,具体 的数据块是不确定的,所以



S7-SCL


编译器通过符号表和



DB

< p>
的变量声明不能找到对应的数据类型。如果使用绝对地址访问



DB


,


S7-SCL


假定



该数据类型为



BOOL, BYTE, WORD



DWORD




下面的例子,通过绝对地址寻址




可以访问


DB


数据中的变量。在



FB


中,没有确定



DB


块(


db_test


)的数




D D0


此时被读。



run


KBL



VAR TPPUT



E3b_tcit:


_L.B;



stGt_VQrl:


T ZflL;



?HI> VU



nip mJMCTlUH BLOCK




.01



DB


的数据


DD0


< br>DINT


数据格式。


DD0


被转 化为


TIME


类型变量。





Stati on_1 contains the pr ogram for defi ning the ANY poin ter in a fun cti on and Stati on_2 contains the



注意




< /p>


语句



允许直接访问



DB


。必须定义


WORD


类型的







变量用于


D B


号和整型类型的变量





ndex


用作


DB


数据索引。







如果


DB


号是



类型的一个输入变量类型,可以间 接地使用




变量访问



DB








更多的信息请参考



S7-SCL


在线帮助







Absolute access to data blocks





In dexed access to data



blocks




Class B con versi on fun cti



ons





以及条目号



10553802


的第


5



.




如果数据块变量被分配给一个




UDT


且数据类型为



STRING


,应该怎样为它分配初始值并初始化



DB








显示订 货号












描述


:





对于分配给



UDT



User-defi ned Data Type


,用户自定义数据类型




且数据类型为



STRING


的数据块变量


,





举例来讲,必须定义



UDT


中的初始值。图



01


给岀了两个


DB


变量声明:











?


数据块中变量




的数据类型为





已定义符号:





这里



UDT1





了数据类型为




的结构化数据类型规范




。必须在此处将初始值




例如,









输入到


UD T


中。





?


数据块中变量




的数据类型为




。可以在此处直接分配初始值




例如,














包含




mi


7iitTnf4L



IT UTT



r iirv^



-tiiBi


.J



ST±1? r



Em


TTM



^PL1_t. dul



4Ti?CT



.


M_V “ _L Uu



Lj



?


< /p>


X


-


TDTK


-


I


F


1



fi?_4T?rF





DB V.U- i 5 b-c- io^ i




7 E -



?!■ I?TT



KOL.



峠!



?T?IIKr




K9 pnrTKiil




01


我们建议按下表所示来初始化 数据块,用每个数据元素的初始值来替代实际值。



步骤
































SIMATIC Manager


中,在


LAD/STL/FBD


编辑器内打开数据块。



通过



设置数据块视图为





DPttl











■?y






*



r-ac^v



*



Ata-



*


,皿


X




02























通过菜单命令




将初始值传送到实际值。



ffctr


J




03




然后,必须再重新加载数据块到



CPU







如何调用带有输岀参数



RET VAL


的功能或系统功能


?





显示订货号








操作步骤


:





许多


SFC



系统功能



都有输岀参数



RET_VAL



返回值

< p>


,它提供一个可供评估的错误代码。






帮助中提供有更多关于系统功能和输岀参数






后按“


F1


键获取相关的在线帮助信息。







同样的,一个编好的功能可以返回一个结果






RET _VAL





S7-SCL


中调用带有返回值















STE P 7


在线



RET VAL


的信息。通过在



SIMATIC


管理器中选中



SFC




――例如用于自定义调试。



下表给岀了一些例子,



说明了如何在



的功能



FC



SFC





调用带有返回值的功能



< p>
FC



SFC



样例


:


带有


INT< /p>


返回值的功能


:

































































FUNCTION


PCI:


INT


< br>VM


L


INPUT



a




IHT;


fc:


ruT




END VAR



IF


a


::


-b


THE KT


FC1==


1;



END


工巧



IE


a-




THE hr


FC1


T


=



10;


ENDIE;



EN1>_EUWCTION




01


:


调用带有返回值的功能


:


E1IWCTIOH


P


CE;


T'OLD



VAR



c:


riJT;



END ?t



BEGIK



c:


-


FCl


b-


-


2J


;



EKTD TiraCTION




02


调用一个系统功能




本例为



SFC24



:


当调用系统功能



SFC


24



TEST_D


” (测试数据块



时,得到关于



CPU


主内存中一个数据块的



信息。通过调用



SFC24


可确定指定



DB


的数据字节长度,并检查该



DB


是否受到写保护。



feM-rMN


ITLB


■”


MP



lU IHHI



mjiv



rfljhj


EJm





ITD



Frrzt ioBi_>iSEP



KT


三咚




4


?



1ITTE 7Tnr



W


LP


*



F-I



II



1.



*4


■ riksr








03







03






指定


DB


所包含的数据字节数通过参数



“ < /p>


DB_LENGTH


输岀,参数“


WRI TE_PROT


包含关于指







DB< /p>


的写保护


ID


的信息


FALSE


表示没有写保护








字符串类型注意事项







S7-SCL


编译器在本地堆栈上为一个被使用的功能创建临时变量


,


这个变量定义为固定长度




1



8

< p>
字节






类型功能正常,但定义为



STRING


类型时例外,因为在



S7-SCL


一个


FC



STRING



类型返回值为






254


个字符,该类型通常生成长度为



256


字节。一个


STRING


变量最大为



256

< br>字节包含


254


个字符


,




最大字符串长度可以通过



S7-SC L


编译器设置









减小。如果一个



IEC


功能的


STRING


返回变量由


VAR_TEMP


区域分配,必须先用字符串初始化






abc:='';








关键字


:






FC


调用,功能调用







S7-SCL


的功能块的接口改变后,如何调整背景数据块和多重背 景数据块


?









说明


:






当一个功能块以



S7-SCL


源程序方式生成时,建议在源程序中直接生成背景数据块。如果不在相应的源程






序中声明背景数据块,则每当接口(包含在


< br>S7-SCL


的源程序)改变后,背景数据块都要重新生成。否则


,




在背景数据块和功能 块之间将岀现冲突。反之,如果背景数据块在源程序中直接生成,则不需要这些步骤。





当执行命令“


File > Com pile


时,背景数据块将被自动生成。



这样,功能块的改变将被直接传送到背景数据块




例如






中。这也防止了数据冲突的发生。




01


描述了在



S7-SCL


的功能块中如何声明相应的背景数据块。



首先编程功能块


,


然后编程背景数据块


,


这样当背景数据块生成时,功能块的变量就确定了。



iwrriDK BUCE


Ft 34



Liril


HIT


A


J :




Iiri


:


EHT>



N -VU



twioiRprr



OTTI



TflT


.


E j T .


J


T


I


.


IU


L



'



■JITTZ:



ZJJTi



■XB m



OWi


-


INI


1


IMi



.


-


Eui


耳此



~K



ncH



EXB BUA ftUtfE




01



如果一个功能块在另一个功能块中被调用


,


仅需分配一个背景数据块给具有多重背景能力的功能块。



景数据块被称为多重背景数据块。它通过在功能块的静态变量声明中定义一个



调用功能块的静态变量


FB


数据类型的来生成。被


(及块参数)变为调用功能块静态变量的一个子集。



m



< br>_


占宙


:■* H s :



1I- z/pN :' r


r



AE f


T



<




mi_Tn



inu




R”


rm,



bFV


FM


.



.ncM



h J . ..


:?


-


??



q j.-




-Bl..


;.ir , ,


I,



?


-


ID


e,


n S41T


I.



nc


D


=


jm* TDE


Q: Z?Li



IT,



CU



BM


■ IW


■f


K



r vHrr


阳韶


FRIF



?啊




--



.


?



卜“…



■Ibiii



m


wi luru




02



02


显示了



SFB4



FB22

< br>调用。一个类型为




TON< /p>


的静态变量




SFB4


的符号名)在多重背景数据块




(为了



SFB4



FB22


)的应用中被声明,例如



,数据块符号名为



“SFB4_TO


”。多重背景数据块






仅仅在


SFB4


在被


FB22


调用后生成。







:



这个背


DB22












为了更新背景数据块,建议下载前在



SIMATIC


管理器中检查数据块的一致性。








Edit > Check Block Consistehcy...






SCL_ ( 1 KB )






S7- SCL


中读取一个组织块的起始信息









问题


:







STL


中可以读取一个组织块的起始信息









选中块文件夹并通过菜单命



打开对话框。然后执行功能




Program > Compile all

< p>



例如


OB1


中的循环时间



,在


S 7-SCL


中是否存在同样的可




解答


:





”创建一个



OB


。在临时区域,缺省情况下将创建一





SCL


编 辑器中,通过




hsert > Block Temp late > OB






ARRAY OF BYTE


类型的数据区域。











如果您想要处理



SCL


源文件中一个



OB


的起始信息,请按下列步骤进行


:





1



.








2.





3.






例子


:





对于时间错误



OB3


已经超过了循环时间



,系 统会调用



OB8O


并设置标志



M1.0




确定


OB


起始信息的结构。该信息包含在



OB



STL

源文件中,可在路径



Drive:Sieme nsSte p7S7DATAS7wiz


复制相应信息。



下找到。使用编辑器打开合适的



OB



例如






创建一个新的



SCL


源文件并插入您刚才复制的起始信息。

< br>


调整


S7-SCL



0B


的临时区域,以便可以通过符号方式访问变量。





S7-SCL (


例如


0B1


循环时间


)


中如何读 取一个组织块



(0B)


的起始信息< /p>




OS


示订货号



说明




下面的这个表描述了一个组织块的



S 7-SCL


源代码的生成步骤,重点在读取组织块的起始信息的



码。



序步骤


:





SIMATIC


管理器中选择这个源 文件



并且插入



S7-SCL


源代码到你的



STEP 7


项目中,使用菜单


“< /p>


插入



S7


软件



SCL


源代码



2


接下来通过双击



S7-SCL source


打开


S7-SCL


编辑 器


.



S7-SCL


编辑器中,通过



插入





块类型



0B


,你能够创建一个



0B


。在临时数据区域,一个作




0B


起始信息默认的字节数组被创建。< /p>



如果在


S7-SCL

< br>源文件中你需要更多的



OB


起 始信息,在资源管理器中打开下面的路径



'vDrive>:Program Files'Sieme nsSte p7S7DATAS7WIZ


你能够在这里发现组织块的



STL


源代码



打 开适当的


STL


源代码



例如



,并且从


STL




文件中复制


S TL


源代码到


S7-SCL


源文件中。




STL




-


-


-


-


-


-


-


-



本文更新与2021-02-27 21:57,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/676352.html

SCL编程问答的相关文章