Dudas: Autómatas siemens. Software Step7

Duda 1: ¿Se puede leer una variable de un bloque DB desde un OB?

llevo tiempo intentándolo y no lo consigo, he hecho esto:

AUF DB 1

o lo que es lo mismo en KOP:

DB1

----------------------(OPN)---

En el DB1 tengo declarado un array doble 10x10 del tipo INT con el nombre "variable1" y quiero acceder a él desde el OB1. Además, si fuera posible acceder a esta tabla mediante otros 2 índices "j" y "k" desde el OB1 es decir algo como DB1.variable1[j,k] la cuestión es

duda 2: ¿Se puede hacer esto? en caso afirmativo, ¿Cómo? ¿Hay alguna manera mejor?

El objetivo en sí es poder leer/escribir en una tabla o vector y que sea direccionado por unos indices, vamos, algo como int tabla[10][10],j=0,k=0; tabla[j][k] = valor; sencillo de hacer en C o pascal, me resulta imposible hacerlo para el autómata. Tengo manuales etc... pero en ninguno veo una explicación clara y precisa a esta cuestión.

Reply to
ByTePTr
Loading thread data ...

Gracias. La otra es que hay cosas en AWL que no puedo realizar en KOP y viceversa, por ejemplo,

U DBX 0.0 SPBNB _001 L W#16#1 L MW 0 SLW T MW 0 SET SAVE CLR _001: U BIE = M 3.3

que en KOP sería: _______________ DBX 0.0 | SHL_W | M3.3

----| |-----| EN ENO |----------------( )-- | | MW0-- | IN OUT |--MMW0 | | W#16#1 - | N | |______________|

Quiero cambiar la "entrada" DBX0.0 por DBX[MD 0] por ejemplo, esto, me lo permite hacer en AWL pero no en KOP. Asimismo, para pasar de KOP a AWL es necsario que estén todas las E/S del bloque (en este caso SHL_W) asignadas. ¿Es que no se puede hacer este tipo de direccionamiento en KOP? ¿Por qué?. No tiene mucho sentido.

"Apatiko" escribió en el mensaje news: snipped-for-privacy@tiscali.es...

nombre

esta

Reply to
ByTePTr

Me funcionan estos:

AUF DB 3 // abrimos DB3 L DBW 0 // word del DB abierto (DB3) la 0 L DBW 2 // word 2 cargada db3.dbw 2 L DB3.DBW 2 // en teoria esto es lo mismo

AUF DB 2 // abrimos db2 AUF DI 4 // abrimos db4 como bloque de instancia

L DB1.DBB 0 T DBB [MD 7] // T db2.dbw[md7] no permitido L DBB [MD 7] // leeemos del db2 (abierto con auf db) T DIB [MD 11] // dejamos en db4 (abierto con auf di o sea de instancia)

U DB2.DBX 1.0 = DB1.DBX 3.1

L #cadena // cargamos la variable cadena indicada en la estructura de datos del FB T DBW 3 // La dejamos en db2.dbw3 podria ser dbw[mw0] con mw = 3

U DBX [MD 0] = DBX [MD 4] L DB2.DBB 0

y esto por ejemplo, no se permite: L DB2.DBB[MW 0]

Tampoco entiendo porqué si en un bloque DBn hemos creado variables con sus respectivos nombres, luego al llamar desde un bloque FB u OB no nos reconoce los nombres de dichas variables, es decir, no me coge por ejemplo DB2.nombre_ variable ni nada por el estilo, por tanto, tienes que acceder de las formas que he indicado anteriormente, esto lo que he sacado en claro haciendo pruebas. Estaba pensando quizás indicarlo en la tabla de símbolos, por ejemplo: nombre_variable1 DB2.DBB0... etc. tal vez funcione, pero si es asi, ¿qué sentido tiene entonces que tengas que declarar los nombres en el bloque OB?.

"ByTePTr" escribió en el mensaje news:bicb0b$ snipped-for-privacy@eui1nw.euskaltel.es...

esta

a
Reply to
ByTePTr

Vale, muchas gracias, sobre todo era importante para mí saber que no se puede hacer.

En caso de que sea necesario trataré de arreglármelas con una mezcla de AWL+KOP. Que parece ser lo mejor, más que nada porque ciertas cosas como el seteo de básculas y ver si se cumplen las condiciones lógicas de los "contactos" se ven más claro en KOP.

"Apatiko" escribió en el mensaje news: snipped-for-privacy@tiscali.es...

lo

es

asignadas.

qué?.

Reply to
ByTePTr

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.