Nogle der kan Step7

hej NG.

dette er det mest passende forum jeg kunne finde (ved godt emnet ikke passer helt ind)

jeg skal lave en lille programstump i step7 som skal bruges flere gange. i programstumpen skal jeg bruge nogle værdier fra en db blok og 2 værdier fra det generelle program, jeg skal bruge programstumpen 20 gange hvor jeg skal hente værdier fra

20 ens paramentereret db blokke

de 2 værdier jeg skal bruge fra programmet henter jeg bare ind ved at define dem som in variabler men hvordan laver jeg det med databasen ?

er jeg virkelig nød til at lave 20 fb'er eller er der en bedere måde ?

Reply to
Ts
Loading thread data ...

det er Siemens PLC software til deres S7-300, S7-400 PLC'er.

En PLC er den enhed der styre de fleste moderne automatiske anlæg.

Reply to
Ts

Intet svar sorry, men ren nysgerrighed. Hva dulen er Step7 ?

Mvh Klavs.

Reply to
Klavs Rommedahl

For perfektion: PLC er en forkortelse af Programmable Logic Controller På københavnsk: Process controller På Jysk: Industri Styring

Bo //

Reply to
Bo Bjerre

Siemens's seneste softvare til deres PLCer, som bruges til styringer i industrien

--
Calle.
Reply to
Calle.

Hej Jeg spurgte en af mine venner som er gammel Step7/Step5 (og altmuligt andet) programmør. Jeg håber nedenstående, længere, forklaring kan hjælpe noget:

Et kort svar.

Søg i STEP7's hjælp, evt. pointer eller data type ANY.

Nederst er et uddrag fra hjælpen, hvor der anvendes SFC20 med en Source-pointer og en Destination-pointer. I praksis betyder det at man kan kopiere x antal bits, bytes, ord eller dobbeltord, startende fra en given adresse i en given datablok, til en given adresse i en given datablok. Dette eksempel kan kun laves i STL.

----------------------------------------------------------------------------

-----------------------------------------

Hvis man ikke ønsker en helt så avanceret funktion kan man angive faste værdier for Source og destination i POINTER-format.

Eksempel hvor pointeren angives som faste adresse: Kopiere 20 bytes fra DB10 til DB20 fra adresse 50 (DBB50) Eksemplet er vist som STL men kan også laves i LAD.

CALL SFC 20 SRCBLK := P#DB10.DBB0 BYTES 20 RET_VAL := MW 0 DSTBLK := P#DB20.DBB50 BYTES 20

Forklaring: P# angiver at formatet er af typen POINTER DB10.DBB0 angiver at pointeren skal stille sig på byte 0 i datablok 10 BYTES 20 angiver længden på den mængde data der skal kopieres

MW0 er et tilfældigt ord som vil indeholde status for SFC20.

----------------------------------------------------------------------------

----------------------------------------- Using the Parameter Type ANY

You can define formal parameters for a block that are suitable for actual parameters of any data type. This is particularly useful when the data type of the actual parameter that is provided when the block is called is unknown or can vary (and when any data type is permitted). In the variable declaration of the block, you declare the parameter as data type ANY. You can then assign an actual parameter of any data type in STEP 7.

STEP 7 assigns 80 bits of memory for a variable of the ANY data type. If you assign an actual parameter to this formal parameter, STEP 7 codes the start address, the data type, and the length of the actual parameter in the 80 bits. The called block analyzes the 80 bits of data saved for the ANY parameter and obtains the information required for further processing.

Assigning an Actual Parameter to an ANY Parameter

If you declare the data type ANY for a parameter, you can assign an actual parameter of any data type to the formal parameter. In STEP 7, you can assign the following data types as actual parameters:

a.. Elementary data types: you specify the absolute address or the symbolic name of the actual parameter.

b.. Complex data types: you specify the symbolic name of the data with a complex data type (for example, arrays and structures).

c.. Timers, counters, and blocks: you specify the number (for example, T1, C20, or FB6).

d.. The following figure shows how data are transferred to an FC with parameters of the ANY data type.

In this example, FC100 has three parameters (in_par1, in_par2, and in_par3) declared as the ANY data type.

a.. When FB10 calls FC100, FB10 transfers an integer (the static variable speed), a word (MW100), and a double word to DB10 (DB10.DBD40).

b.. When FB11 calls FC100, FB11 transfers an array of real numbers (the temporary variable "Thermo"), a Boolean value (M 1.3), and a timer (T2).

Specifying a Data Area for an ANY Parameter

You can assign not only individual addresses (for example, MW100) to an ANY parameter but you can also specify a data area. If you want to assign a data area as the actual parameter, use the following format of a constant to specify the amount of data to be transferred:

p# Area ID Byte.Bit Data Type Repetition Factor

For the data type element, you can specify all elementary data types and the data type DATE_AND_TIME in the format for constants. If the data type is not BOOL, the bit address of 0 (x.0) must be specified. The following table illustrates examples of the format for specifying memory areas to be transferred to an ANY parameter.

Actual Parameter Description

p# M 50.0 BYTE 10 Specifies 10 bytes in the byte memory area: MB50 to MB59.

p# DB10.DBX5.0 S5TIME 3 Specifies 3 units of data of the data type S5TIME, that are located in DB10: DB byte 5 to DB byte 10.

p# Q 10.0 BOOL 4 Specifies 4 bits in the output area: Q 10.0 to Q 10.3.

Example for Using the Parameter Type ANY

The following example shows how you can copy a memory area of 10 bytes using the parameter type ANY and the system function SFC20 BLKMOV.

STL Explanation

FUNCTION FC10: VOID VAR_TEMP Source : ANY; Target : ANY; END_VAR BEGIN LAR1 P#Source;

L B#16#10; T LB[AR1,P#0.0];

L B#16#02; T LB[AR1,P#1.0];

L 10; T LW[AR1,P#2.0];

L 22; T LW[AR1,P#4.0]; L P#DBX11.0; T LD[AR1,P#6.0];

LAR1 P#Target;

L B#16#10; T LB[AR1,P#0.0];

L B#16#02; T LB[AR1,P#1.0];

L 10; T LW[AR1,P#2.0];

L 33; T LW[AR1,P#4.0]; L P#DBX202.0; T LD[AR1,P#6.0];

CALL SFC 20 ( SRCBLK := Source, RET_VAL := MW 12, DSTBLK := Target ); END_FUNCTION

----------------------------------------------------------------------

-----------------------------------------------

Jeg ved ikke om ovenstående giver nogen mening, men det var det bedste jeg lige kunne komme op med her. Du må gerne videresende min evige moralprædken for andre PLC-programmører. "Lær og forstå Siemens' datatyper" Så er man godt hjulpet fremover........

/Anton "Ts" skrev i en meddelelse news:40969ee9$0$268$ snipped-for-privacy@dread11.news.tele.dk...

Reply to
Anton

MANGE tak....... lige hvad jeg skulle bruge, du må sige mange tak til din ven :)....

Reply to
Ts

Hej Bo,

Og i midten af riget ? (Ikke riget i midten :)

--
Venlig hilsen,
Søren
              * If it puzzles you dear... Reverse engineer *
LM317-PSU-Designer v1,0b
Reply to
Søren

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.