You are on page 1of 2

support.industry.siemens.com|ProductSupport|martes,11.

julio2017
Imprimirestapgina GenerarPDF

Tipodeartculo:Descarga,IDdeartculo5606852,Fechadelartculo:07/11/2000

Asignacindepunterosaunafuncin

PREGUNTA:
Cmosepuedeaveriguarladireccincorrespondienteenunafuncindesdeunavariabledeentradadetipo
PUNTERO?

RESPUESTA:
STEP7guardaeltipodeparmetroPUNTEROen6Bytes.Conayudadeestos6bytessepuedeaveriguarladireccinde
memoria.LadeclaracindelformatoPUNTEROsepuedeverenlasiguientetabla:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Byte0 NmerodeDB("0") Byte1
Byte2 Zonadememoria(verabajo) 0 0 0 0 0 b b b Byte3
Byte4 b b b b b b b b b b b b b x x x Byte5

b=DireccindeByte
x=Direccindebit

Advertencia:
Sielpunteronoapuntaaningnmdulodedatos,comoNmerodeDBsetieneun"0".

Lazonadememoria(Byte2)secodificadelasiguienteforma:

Cdigoenhexadecimal Zonade Descripcin


memoria
B80 Accesodirectoaperiferia
B81 E Zonadememoriadelasentradas
B82 A Zonadememoriadelassalidas
B83 M Zonadememoriadelasmarcas
B84 DB Mdulodedatos
B85 DI Mdulodedatosdeinstancia
B86 L Zonadedatoslocales(PilaL)
B87 V Zonadedatoslocalesanterior(PilaV)

SiaunafuncinseleasignaunparmetrodeENTRADAdeltipoPUNTERO,STEP7generaelformatodelpunteropartiendo
deladireccinindicada.Losdatoscreadossedepositanenlazonadedatosdelapilalocaldelmdulodesdedondese
llamalafuncin.Alafuncinllamadasloseleasignaladireccindelosdatos(CALLBYADRESS).Desdeelpuntode
vistadelafuncin,losdatosseencuentranenlapilaLanterior,lacualcorrespondeconlapilaLdelmdulodesdedonde
sellamaalafuncin(LosOBsnotienenaccesoalapilaV).Elclculodeladireccinpropialatienequehacerelusuario.

ParacalcularestadireccinhayquecargarenestafuncinunavariabledeentradadetipoPUNTERO.Acontinuacinhay
quetransferirelcontenidodelacumuladoralregistrodedirecciones.Enesteregistrosetieneahoraunadireccin,enla
cualseencuentraasuvezotradireccinqueapuntaalbloquededatos.

ACUMULADOR1 Registrodedirecciones
1
Lp#input_pointer 87xxxxxx
LAR1 87xxxxxx Vxy.0

Atravsdedireccionamientoindirectoatravsdelregistrodedirecciones,desdeelbyte2delbloquededatossepuede
leerlazonadememoriabuscada.Ladireccindelbytesepuedefiltrardelosbytes2.4(porejemplo,conunaoperacin
dedesplazamiento).
Conlasinstruccionesmostradasacontinuacinsepuedecargarladireccinrealenelregistrodedirecciones.

ACUMULADOR1 Registrodedirecciones
1
LD[AR1,p#2.0]
LAR1 Direccinpropia
Atencinsiseasignanvariablesde SisedireccionaelvalorcargadoactualmenteenAR1enlapilade
tipopunteroavariablestemporales datoslocalesL(identificadordezona16#86),entonceshayque
indicarexplcitamentelasvariableslocalesdememoriainterna
cuandoseaccedaaestazona.
LL...[AR1,p#x.y]
TL...[AR1,p#x.y]

Enlavaloracindelnmerodelmdulodedatoshandetenerseencuentalassiguientesparticularidades:
Siseasignaalafuncinunadireccindemdulodedatos,lacualestdireccionadaatravsdelregistroDB1(sinindicar
explcitamenteelnmerodelmdulodedatos,porejemplop#DBX0.0),sloconlaayudadelosbytes0y1nosepuede
averiguarelnmerodelmdulodedatos.
Silaasignacindedireccinalmdulodelafuncinsehaceenunmdulodefuncionesdetalformaqueelpuntero
apuntealasvariables(IN/OUT/IN_OUT/STATIC)enunmdulodedatosdeinstancia,enestecasossepuede
averiguarelnmerodelmdulodedatos.AestavariabledireccionadahayqueaccederatravsdelregistrodeDB.

ACUMULADOR1 Registrode DB1 DB2


direcciones1
Lp#input_pointer 87xxxxxx
LAR1 87xxxxxx Vxy.0
LW[AR1,p#0.0] NmerodeDB Vxy.0
Ttemp_db
AUFDB[temp_db] <temp_db>
AUFDI[temp_db] <temp_db> <temp_db>

Funcinejemplo:
Enelproyectoabajodisponiblesemuestracomoasignarunpunteroaunafuncin.EnelmdulodeorganizacinOB1se
llamaalafuncinFC1yaquseasignalosiguiente:
UnPUNTEROaunadireccindemarcay
UnPUNTEROaunadireccindemdulodedatos.

ParmetrosdelFC:

Parmetro Declaracin Tipodedatos Descripcin


INPUT_Pointer INPUT POINTER Direccindeinicioasignada

Elclculodelazonadememoriaascomolasdireccionesbyteybitseproduceenlafuncinconayudadevariables
PUNTERO.Porejemplo,aunbloquedevariablesselesumaelvalor16#11111111,elcualestdireccionadoatravsdeun
PUNTERO.

Download:
ElDownloadcontienenunproyectodeSTEP7V5conlafuncinFC1,elmdulodedatosDB1yunallamadaejemplodesde
elmdulodeorganizacinOB1.Elproyectosepuedeadaptaratodoslosrequerimientosdelusuario.

Pointer.exe(137KB)

Hayquecopiarelfichero"Pointer.exe"enundirectorioaparteyarrancarelficherohaciendodobleclicksobrel.El
proyectodeSTEP7V5sedescomprimeautomticamenteycontinuacinyasepuedeabriryelaborarconeladministrador
SIMATIC.

Elartculoperteneceala(s)carpeta(s)derboldeproductos:
Esteartculoestrelacionadocon4producto(s).

SiemensAG2009-2017 - Piedeimprenta Polticadeprivacidad Directivassobrecookies Condicionesdelservicio IDdigital 0.0.0.0

You might also like