Seby_cucu Inserito: 4 aprile 2016 Segnala Share Inserito: 4 aprile 2016 Ciao a tutti spero che qualcuno mi possa aiutare. ho una CPU M340 e deve comunicare tramite modbus RS485 con una scheda MBS7. Praticamente devo gestire i fancoil per poterli accendere e spegnere. Tutto il collegamento è fatto bene infatti riesco a spegnere e accendere il dispositivo. Il mio problema è proprio all'avvio. Quando accendo il PLC vorrei che alla prima scansione mi leggesse tutti i fancoil e di tutti mi leggesse solo il registro 4. Gli altri settano altre cose che per il momento non uso. Non capisco come usare la funzione poichè se cambio l'indirizzo del dispositivo all'avvio non me lo rileva nonostante faccio un ciclo di lettura per tutti i teorici dispositivi collegati. Do il timeout per ogni lettura (200ms), do l'indirizzo del canale ADDM('0.0.0.SYS'), do la lunghezza dei caratteri da leggere, e metto il reset =1 per aggiornare sempre il baffer della risposta. Dove sbaglio? Ciao Spero di avere una risposta Link al commento Condividi su altri siti More sharing options...
RDA Inserita: 5 aprile 2016 Segnala Share Inserita: 5 aprile 2016 Hai usato a provare Read_var. Link al commento Condividi su altri siti More sharing options...
Seby_cucu Inserita: 5 aprile 2016 Autore Segnala Share Inserita: 5 aprile 2016 CIAO, DEVO LEGGERE UNA STRINGA POICHeE' IL DISPOSITIVO MI RISPONDE CON STRINGE DI CARATTERI PER QUESTO USO INPUT_CHAR E PRINT_CHAR. Il dispositivo è un MBS7. :-( Link al commento Condividi su altri siti More sharing options...
Giuseppe Signorella Inserita: 5 aprile 2016 Segnala Share Inserita: 5 aprile 2016 Ciao Seby_cucu, Controlla che il tasto caps lock,non sia rimasto inserito. Sul forum è vietato scrivere in maiuscolo, in quanto equivale ad urlare. Buon proseguimento. Link al commento Condividi su altri siti More sharing options...
Seby_cucu Inserita: 5 aprile 2016 Autore Segnala Share Inserita: 5 aprile 2016 Ciao Giuseppe, inizialmente non lo avevo notato. Farò più attenzione Grazie Ciao Link al commento Condividi su altri siti More sharing options...
Seby_cucu Inserita: 11 aprile 2016 Autore Segnala Share Inserita: 11 aprile 2016 Ciao a tutti, nessuno mi sa dare un piccolo .? Sono sempre allo stato iniziale, non trovo nessun aiuto nella guida. Lasciando stare il primo avvio di tutto il sistema, mi sapete dire perchè non leggo il cambio di stato del dispositivo? Se accendo e spengo io da programma tutto ok, ma se qualcuno accende il condizionatore con il telecomando io con la input_char non rilevo il cambiamento di stato . Spero in un vostro aiuto Ciao a tutti Link al commento Condividi su altri siti More sharing options...
biros66 Inserita: 11 aprile 2016 Segnala Share Inserita: 11 aprile 2016 se parli di Modbus, dimentica print_xxx e input_xxx, utilizzerai Read_Var - Write_Var, attenzione: solamente sei sei master del bus. Potresti anche utilizzare la libreria Xmit_ Se il master non è il tuo PLC non devi implementare nulla, M340 è nativo Modbus. Se utilizzi print_char oppure input_char non stiamo parlando di Modbus bensì di Ascii. Se così controlla il carattere di fine trasmissione.. Link al commento Condividi su altri siti More sharing options...
Seby_cucu Inserita: 12 aprile 2016 Autore Segnala Share Inserita: 12 aprile 2016 Grazie Biros, faccio il controllo che mi suggerisci. Sono costretta ad usare input_char e print_char perchè me lo impone il dispositivo con cui comunico, e quello che non capisco è perchè se riesco a dare il comando di scrittura, ad esempio per spegnerlo, va tutto ok ma non riesco a rilevare il suo stato in lettura nel caso in cui il comando non gli arrivi dal PLC. Provo la tua idea Grazie Link al commento Condividi su altri siti More sharing options...
Seby_cucu Inserita: 13 aprile 2016 Autore Segnala Share Inserita: 13 aprile 2016 Ciao sempre io! Visto che nessuno mi sa dare risposta provo a postare il codice così magari mi sapete dare un suggerimento: vorrei solo leggere il registro 4 del mio fancoil, il cui indirizzo è 3: so che sbaglio in count_case =0 ma non capisco come impostarlo perchè se lo elimino non legge nulla poichè la input_char non sa cosa leggere e non gli arriva nessuna richiesta dal master; se la metto allora o mi tiene acceso il dispositivo ( in read_2 il secondo parametro è 16#9) o me lo tiene spento. Se in SEND_ManPar[3]:=3 qualunque cosa ci sia in read_2 me lo spegne, se send_ManPar[3]:=4 mi scrive in continuazione quello che c'è in read_2 e nessuno può cambiare lo stato del dispositivo, neppure se io da codice lo spengo. IF (not(rec_manpar[0].0) or (count_case = 1)) then (*Ciclo di lettura *) case count_case of 0: read_1 := byte_as_word(16#FE, 3); read_2 := byte_as_word(16#0004, 16#9); read_3:= 16#0000; send_ManPar[2]:= 2; (*timeout trasmissione*) send_ManPar[3]:= 4; (*numero di caratteri da inviare*) print_char(ADDM('0.0.0.SYS'), buf_string_send, send_ManPar); count_case:=1; 1: rec_manpar[2]:=2; input_char (ADDM('0.0.0.SYS'), 0, 20, rec_manpar, buf_string_rec); read_fancoil:= string_to_ascii(buf_string_rec); count_case := 3; 3: (* interpretazione risposta *) IF(rec_manpar[1] = 0) then (*ricezione valida *) fc_alm[indice_fan] := false; else fc_alm[indice_fan] := true; end_if; if (simu) then count_case:= 10; elsecount_case:= 0; end_if; 10: qui eseguo la scrittura che funziona perfettamente count_case:= 11; 11: if not(send_ManPar[0].0) then count_case:= 0; end_if; end_case; end_if; Grazie Ciao a tutti 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