Paolo GUerrieri Inserito: 20 ottobre 2016 Segnala Share Inserito: 20 ottobre 2016 Buongiorno a tutti, sto usando in un progetto con 3 connessioni di comunicazione verso lo stesso plc. per una di queste connessioni, ho provato ad usare la nuova libreria sharp7, ma ho delle difficolta a mantenere la comunicazione con il plc. Mentre le comunicazioni attraveso la libreria snap7.dll vengono mantenute, quella fatta attraverso sharp7, una volta caduta non riesco più ad attivarla... mi restituisce sempre l'errore in connessione N°5. Il motivo per cui ho usato tale libreria, sta nel fatto che il comando di reset di un singolo bit funziona molto bene, mentre lo stesso della libreria snap7.dll non riesco a farlo funzionare. Sharp7: client2.WriteArea(S7Consts.S7AreaDB, 108, 0, 0, S7Consts.S7WLBit, rset); dove rset è un array di byte[1] Chiedo cortesemente come mai lo stesso comando della libreria snap7.dll non funziona...(forse sbaglio io ...) e come fare per risolvere il problema dell apertura della comunicazione attraverso sharp7 (errore 5) L'ambiente è dot net c# con WPF Grazie in anticipo Guerrieri P. Link al commento Condividi su altri siti More sharing options...
dan64100 Inserita: 20 ottobre 2016 Segnala Share Inserita: 20 ottobre 2016 Ciao, Il comando usando snap7.dll non ti funziona perchè sbagli la chiamata : gli stai passando 0 come Amount, dovrebbe essere 1. Così funziona: client2.WriteArea(S7Client.S7AreaDB, 108, 0, 1, S7Client.S7WLBit, rset); Il motivo per cui in Sharp7 funziona deriva da una scelta di "sopravvivenza" Il protocollo Siemens è abbastanza cervellotico per il data typing : se usi S7AreaCT devi usare S7WLCounter come WordLength, se leggi/scrivi un bit devi usare 1 come Amount e via dicendo. Dato che Sharp7 verrà usato anche da programmatori VB.NET e sono stato letteralmente massacrato di email da gente che buttava dentro codice random senza leggere i manuali e testare gli errori di ritorno ( ogni riferimento è puramente casuale) , ho deciso di verificare/aggiustare i parametri in ingresso ove possibile. Nel tuo caso, dovendo accedere ad un bit, l'unico Amount permesso è 1 e Sharp7 lo mette di default. Per ciò che riguarda le connessioni mi sembra strano il comportamento differente, verificherò. Nel frattempo controlla, cosa hai come risorse di comunicazione nelle proprietà della CPU ? Link al commento Condividi su altri siti More sharing options...
Paolo GUerrieri Inserita: 20 ottobre 2016 Autore Segnala Share Inserita: 20 ottobre 2016 si in effetti sbagliavo io nel passaggio di parametri per il set/rset del bit.... Attualmente la cpu è una VIPA 315 SB e dovrebbe supportare 8 connessioni, tant'è vero che con la dll mantengo aperte 3 connessioni contemporaneamente senza problemi. Saluti Paolo Link al commento Condividi su altri siti More sharing options...
dan64100 Inserita: 20 ottobre 2016 Segnala Share Inserita: 20 ottobre 2016 public Form1() { InitializeComponent(); for (int c=0; c<MaxItems; c++) { Clients[c] = new S7Client(); Clients[c].SetConnectionType(S7Client.CONNTYPE_OP); } } private void ConnectBtn_Click(object sender, EventArgs e) { int Rack = System.Convert.ToInt32(TxtRack.Text); int Slot = System.Convert.ToInt32(TxtSlot.Text); int Result; NC = System.Convert.ToInt32(TxtConn.Text); for (int c = 0; c<NC; c++) { Result = Clients[c].ConnectTo(TxtIP.Text, Rack, Slot); ShowResult(c, Result); System.Threading.Thread.Sleep(10); } timer1.Enabled = true; DisconnectBtn.Enabled = true; ConnectBtn.Enabled = false; } private void timer1_Tick(object sender, EventArgs e) { int Result; for (int c = 0; c < NC; c++) { Result = Clients[c].DBRead(1, 0, 16, Buffer); if (Result==0) label5.Text = cnt++.ToString(); else ShowResult(c, Result); } } Sono arrivato a circa 50000 pacchetti trasferiti in 10 connessioni contemporanee con questo codice su una 315 2PN/DP a zero errori. Sei completamente certo di usare client separati ? Link al commento Condividi su altri siti More sharing options...
Paolo GUerrieri Inserita: 21 ottobre 2016 Autore Segnala Share Inserita: 21 ottobre 2016 Direi di si....comunque per sicurezza riverifico il tutto.... Intanto grazie per la disponibilità Saluti Paolo 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