Professional Documents
Culture Documents
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:
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.
Funcinejemplo:
Enelproyectoabajodisponiblesemuestracomoasignarunpunteroaunafuncin.EnelmdulodeorganizacinOB1se
llamaalafuncinFC1yaquseasignalosiguiente:
UnPUNTEROaunadireccindemarcay
UnPUNTEROaunadireccindemdulodedatos.
ParmetrosdelFC:
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).