toni_unitn Inserito: 24 luglio 2019 Segnala Share Inserito: 24 luglio 2019 Salve a tutti. sto cercando di compilare il progetto s7300 appena convertito in s71500, e ho problemi con tutti i segmenti in cui uso un puntatore awl tramite istruzione lar1. Esempio: in step7 avevo questo segmento: AUF "ALARMS - EMERGENCIES" LAR1 P#0.0 L #MacroAlarmsNumber LBL1: T #Temp_INT O DBX [AR1,P#0.1] O DBX [AR1,P#0.2] O DBX [AR1,P#0.3] O DBX [AR1,P#0.4] O DBX [AR1,P#0.5] O DBX [AR1,P#0.6] O DBX [AR1,P#0.7] O DBX [AR1,P#1.0] O DBX [AR1,P#1.1] O DBX [AR1,P#1.2] O DBX [AR1,P#1.3] O DBX [AR1,P#1.4] O DBX [AR1,P#1.5] O DBX [AR1,P#1.6] O DBX [AR1,P#1.7] = DBX [AR1,P#0.0] +AR1 P#2.0 L #Temp_INT LOOP LBL1 In TIA portal me lo ritrovo pari pari: AUF "ALARMS - EMERGENCIES" LAR1 P#0.0 L #MacroAlarmsNumber LBL1: T #Temp_INT O DBX [ AR1 , P#0.1 ] O DBX [ AR1 , P#0.2 ] O DBX [ AR1 , P#0.3 ] O DBX [ AR1 , P#0.4 ] O DBX [ AR1 , P#0.5 ] O DBX [ AR1 , P#0.6 ] O DBX [ AR1 , P#0.7 ] O DBX [ AR1 , P#1.0 ] O DBX [ AR1 , P#1.1 ] O DBX [ AR1 , P#1.2 ] O DBX [ AR1 , P#1.3 ] O DBX [ AR1 , P#1.4 ] O DBX [ AR1 , P#1.5 ] O DBX [ AR1 , P#1.6 ] O DBX [ AR1 , P#1.7 ] = DBX [ AR1 , P#0.0 ] +AR1 P#2.0 L #Temp_INT LOOP LBL1 Il problema è che il compilatore mi informa che: "L'indirizzo parzialmente qualificato non può essere convertito in un indirizzo completo." e mi impedisce di sostituire la CPU 315 con una 1513 Come posso fare? Grazie 1000 Link al commento Condividi su altri siti More sharing options...
toni_unitn Inserita: 24 luglio 2019 Autore Segnala Share Inserita: 24 luglio 2019 Do qualche dettaglio in più: quello che ho appena descritto mi succede nel momento in cui, dopo aver convertito con successo il programma step7 con tutta la configurazione HW, cerco di sostituire , nella config HW di TIA , la cpu 315 con una 1513. Ho notato adesso che in realtà mi è comparsa la nuova CPU nella lista dei dispositivi, però ho tutta questa lesta di messaggi "L'indirizzo parzialmente qualificato non può essere convertito in un indirizzo completo." in corrispondenza di tutti i puntatori AWL (Saranno centinaia......) Non ho capito se questo pregiudichi o meno il funzionamento del programma..tutti i messaggi hanno a fianco la croce bianca sul cerchio rosso... Link al commento Condividi su altri siti More sharing options...
batta Inserita: 24 luglio 2019 Segnala Share Inserita: 24 luglio 2019 Ma sono solo avvisi, non errori. La sostituzione l'ha fatta, e la compilazione va a buon fine, giusto? I puntatori devono funzionare anche con la cpu 1500. Piccolo appunto: perché, al posto di controllare uno per uno tutti i 16 bit, non fai un controllo di tutta la word? Esempio: AUF "ALARMS - EMERGENCIES" LAR1 P#0.0 L #MacroAlarmsNumber LBL1: T #Temp_INT L W [ AR1 , P#0.0 ] L 16#0 <>I = DBX [ AR1 , P#0.0 ] +AR1 P#2.0 L #Temp_INT LOOP LBL1 Link al commento Condividi su altri siti More sharing options...
toni_unitn Inserita: 24 luglio 2019 Autore Segnala Share Inserita: 24 luglio 2019 grazie 1000 per la risposta per quanto riguarda la tua domanda, secondo me se faccio come dici tu, una volta che mi si setta il bit 0 della word poi non va più giù perché è proprio lui che fa mantenere diversa da 0 la word. Il bit 0 deve essere 1 se e solo se è 1 uno qualunque degli altri 15 bit della word Link al commento Condividi su altri siti More sharing options...
batta Inserita: 24 luglio 2019 Segnala Share Inserita: 24 luglio 2019 7 minuti fa, toni_unitn scrisse: per quanto riguarda la tua domanda, secondo me se faccio come dici tu, una volta che mi si setta il bit 0 della word poi non va più giù perché è proprio lui che fa mantenere diversa da 0 la word. Il bit 0 deve essere 1 se e solo se è 1 uno qualunque degli altri 15 bit della word Sì, non avevo notato che il controllo parte dal secondo bit, e che il risultato viene messo nel primo bit sempre della stessa word. Strano, però. Di solito si usano tutti i 16 bit della word come allarmi, e il risultato si mette da un'altra parte. Link al commento Condividi su altri siti More sharing options...
toni_unitn Inserita: 24 luglio 2019 Autore Segnala Share Inserita: 24 luglio 2019 Qui da noi si risparmia anche sui bit Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 25 luglio 2019 Segnala Share Inserita: 25 luglio 2019 12 ore fa, toni_unitn scrisse: Qui da noi si risparmia anche sui bit E meno male che non si pagano....... 😁 Rispetto a quanto ha suggerito un luminare del codice come Batta io aggiungerei allora lo shift a destra di 1 prima del confronto: L W [ AR1 , P#0.0 ] SRW 1 <<<<<<<< così ripulisci il bit meno significativo L 16#0 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 25 luglio 2019 Segnala Share Inserita: 25 luglio 2019 1 ora fa, pigroplc scrisse: io aggiungerei allora lo shift a destra di 1 prima del confronto: 👍 Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora