SimenR Skrevet 13. oktober 2016 Del Skrevet 13. oktober 2016 Hei, først og fremst, jeg kan ikke java, men jeg forstår mye av det når jeg leser det. Håper noen kunne hjulpet meg med en utfordring. Jeg har et nettverk med 7 PLS enheter, og et HMI panel, koblet sammen med modbus. HMI panelet må indikere, ikke bare om det er feil på bussen, men nøyaktig hvilken PLS som mangler kommunikasjon. Måten jeg har valgt og løse dette på er og lese ut stringen ProtocolErrorMessage, som er en systemvariabel, og deretter søke etter "prot1,MRTU,1" for PLS nr 1, "prot1,MRTU,2" for PLS nr 2, og så videre. Dersom den finner det = feil. Problemet; er at denne stringen skriver ut en- og en linje. Dvs først kommer det 5 linjer(alle variablene den ikke klarer og lese) med prot1,MRTU,1, deretter kommer det 5 linjer med prot1,MRTU,2 og slik holder den på til den begynner på nytt, eller feilen forsvinner. Er det noen måte jeg kan huske prot1,MRTU,1 mens den skriver prot1,MRTU,2. Dersom stringen hadde vært en liten tekst fil, og jeg kunne søke gjennom all teksten på en gang hadde problemet vært løst. Slik koden fungerer nå bruker den tagen som angir om det finnes feil i systemet i det hele tatt(offline), og resetter først når alt er OK. Dette er selvsagt ikke funksjonen jeg ønsker. Tar imot alle forslag med stor takk function Schedule1_OnAction(me, eventInfo) { var ComTag_WTD01 = project.getTag("ComTag_WTD01"); //Tag som blir brukt til com error symbol på dør var ComTag_WTD02 = project.getTag("ComTag_WTD02"); //Tag som blir brukt til com error symbol på dør var ComTag_WTD03 = project.getTag("ComTag_WTD03"); //Tag som blir brukt til com error symbol på dør var ComTag_WTD04 = project.getTag("ComTag_WTD04"); //Tag som blir brukt til com error symbol på dør var ComTag_WTD05 = project.getTag("ComTag_WTD05"); //Tag som blir brukt til com error symbol på dør var ComTag_WTD06 = project.getTag("ComTag_WTD06"); //Tag som blir brukt til com error symbol på dør var ComTag_WTD07 = project.getTag("ComTag_WTD07"); //Tag som blir brukt til com error symbol på dør var value = project.getTag("ProtocolErrorMessage"); //Com error message string fra protocol var offline = project.getTag("WTDXX_OFFLINE"); //Global com error,(offline=1 er ok)(=2 er error) var str = value; if (offline == 1) { //Denne gjør at alt må være ok, før errorene forsvinner. ComTag_WTD01=0 //Er det kommunikasjonsfeil i systemet? ComTag_WTD02=0 ComTag_WTD03=0 ComTag_WTD04=0 ComTag_WTD05=0 ComTag_WTD06=0 ComTag_WTD07=0 project.setTag("ComTag_WTD01",ComTag_WTD01); //Hvis nei setter man tagen til 0. project.setTag("ComTag_WTD02",ComTag_WTD02); project.setTag("ComTag_WTD03",ComTag_WTD03); project.setTag("ComTag_WTD04",ComTag_WTD04); project.setTag("ComTag_WTD05",ComTag_WTD05); project.setTag("ComTag_WTD06",ComTag_WTD06); project.setTag("ComTag_WTD07",ComTag_WTD07); } if (str.search("prot1,MRTU,1") != -1) { //Sjekker om adresse 1 står i ProtocolErrorMessage //Check if the ComTag<i> variable can be set to 0 ComTag_WTD01=1 project.setTag("ComTag_WTD01",ComTag_WTD01); //Hvis den finner adr 1, så setter den ComTag_WTD01 til 1, og symbolet vil skjule statusen på døren. } if (str.search("prot1,MRTU,2") != -1) { // Multipliser nedover for resten av dørene. ComTag_WTD02=1 // project.setTag("ComTag_WTD02",ComTag_WTD02); // } if (str.search("prot1,MRTU,3") != -1) { // Multipliser nedover for resten av dørene. ComTag_WTD03=1 // project.setTag("ComTag_WTD03",ComTag_WTD03); // } if (str.search("prot1,MRTU,4") != -1) { // Multipliser nedover for resten av dørene. ComTag_WTD04=1 // project.setTag("ComTag_WTD04",ComTag_WTD04); // } if (str.search("prot1,MRTU,5") != -1) { // Multipliser nedover for resten av dørene. ComTag_WTD05=1 // project.setTag("ComTag_WTD05",ComTag_WTD05); // } if (str.search("prot1,MRTU,6") != -1) { // Multipliser nedover for resten av dørene. ComTag_WTD06=1 // project.setTag("ComTag_WTD06",ComTag_WTD06); // } if (str.search("prot1,MRTU,7") != -1) { // Multipliser nedover for resten av dørene. ComTag_WTD07=1 // project.setTag("ComTag_WTD07",ComTag_WTD07); // } } Lenke til kommentar
Enthroner Skrevet 13. oktober 2016 Del Skrevet 13. oktober 2016 (endret) Litt usikker på hva som egentlig forsøkes her, men se om dette er logisk for deg: function Schedule1_OnAction(me, eventInfo) { // såvidt jeg kan se så er setTag(string, int) hvor int lik 0 feil // og int lik 1 bra, derfor kan vi bare sjekke mot en feil i search // du bruker aldri vars for tags, de blir alltid satt til 0 eller 1 så: var value = project.getTag("ProtocolErrorMessage"); //Com error message string fra protocol var offline = project.getTag("WTDXX_OFFLINE"); //Global com error,(offline=1 er ok)(=2 er error) project.setTag("ComTag_WTD01",value.search("prot1,MRTU,1") != -1); project.setTag("ComTag_WTD02",value.search("prot1,MRTU,2") != -1); // project.setTag("ComTag_WTD03",value.search("prot1,MRTU,3") != -1); // project.setTag("ComTag_WTD04",value.search("prot1,MRTU,4") != -1); // project.setTag("ComTag_WTD05",value.search("prot1,MRTU,5") != -1); // project.setTag("ComTag_WTD06",value.search("prot1,MRTU,6") != -1); // project.setTag("ComTag_WTD07",value.search("prot1,MRTU,7") != -1); // if (offline == 2){ // handle offline error // you can now inspect tags to see which is the offender } } EDIT: dette ser ut som javascript? Er det java eller javascript du jobber med? Endret 13. oktober 2016 av Enthroner Lenke til kommentar
Sokkalf™ Skrevet 13. oktober 2016 Del Skrevet 13. oktober 2016 Det er ihvertfall ikke Java. Lenke til kommentar
Enthroner Skrevet 13. oktober 2016 Del Skrevet 13. oktober 2016 Det er ihvertfall ikke Java. Trodde ikke det jeg heller, dog har ikke vært borti siden Java 6 så tenkte kanskje det kunne være noe slags javascript tilnerming for event handling i GUI eller tilsvarende... Lenke til kommentar
SimenR Skrevet 13. oktober 2016 Forfatter Del Skrevet 13. oktober 2016 Det er javascript! Beklager for feil forum og den merklige kommenteringen, var egentlig kun ment for mine øyne.. Stemmer at det blir brukt i et GUI. Bruker tagen ComTag_WTD01 for og hide/unhide et grafisk symbol, som viser kommunikasjonsfeil til PLS nr1. i GUI. Jeg må se litt nærmere på posten din Enthroner, når jeg har koblet opp test riggen. Jeg er litt usikker på om dere forstår problemet, jeg er litt dårlig til og forklare, spessielt ting jeg ikke kan godt. Men jeg prøver på nytt. Koden over fungerer, men ikke helt slik jeg ønsker. Dette er på grunn av offline tagen som først reseter ComTag_WTD0x når alle kommunikasjons feilene er vekk. Tidligere så koden slik ut(utsnitt): if (str.search("prot1,MRTU,1") != -1) { ComTag_WTD01=0 project.setTag("ComTag_WTD01",ComTag_WTD01); } else { ComTag_WTD01=1 project.setTag("ComTag_WTD01",ComTag_WTD01); } Si at jeg har feil på adr. 1 og 2. Teksten som kommer fra ProtocolErrorMessage ser slik ut: [prot1,MRTU,1] read tag [WTD01_Open] failed - Error: No response etter et sekund kommer neste linje som er: [prot1,MRTU,1] read tag [WTD01_LOP] failed - Error: No response Og så videre: [prot1,MRTU,1] read tag [WTD01_LOL] failed - Error: No response [prot1,MRTU,1] read tag [WTD01_LOPR] failed - Error: No response [prot1,MRTU,1] read tag [WTD01_Rc] failed - Error: No response Deretter kommer feilene som hører til adr. 2. [prot1,MRTU,2] read tag [WTD02_Open] failed - Error: No response [prot1,MRTU,2] read tag [WTD02_LOP] failed - Error: No response [prot1,MRTU,2] read tag [WTD02_LOL] failed - Error: No response [prot1,MRTU,2] read tag [WTD02_LOPR] failed - Error: No response [prot1,MRTU,2] read tag [WTD02_Rc] failed - Error: No response Så begynner den på nytt fra toppen. På grunn av at linjene ikke vises samtidig kan jeg ikke bruke koden ovenfor. Da vil ComTag_WTD01 gå lav når det står "[prot1,MRTU,2] rea......." og ComTag_WTD02 vil gå høy selv om det fortsatt er feil på adr 1. Så de vil blinke annen hver gang avhengig av hva som står i ProtocolErrorMessage. Lenke til kommentar
quantum Skrevet 13. oktober 2016 Del Skrevet 13. oktober 2016 Det er javascript! Hva med å poste i gruppa for JavaScript? Lenke til kommentar
SimenR Skrevet 13. oktober 2016 Forfatter Del Skrevet 13. oktober 2016 Det er javascript! Beklager for feil forum Hva med å poste i gruppa for JavaScript? Det er åpenbart en feil, hvis du kan fortelle meg hvordan jeg flytter tråden, skal jeg gjøre det med glede. Lenke til kommentar
quantum Skrevet 13. oktober 2016 Del Skrevet 13. oktober 2016 Det er åpenbart en feil, hvis du kan fortelle meg hvordan jeg flytter tråden, skal jeg gjøre det med glede. Det tror jeg bare mod kan gjøre, men siden alle innlegg her som ikke er skrevet av deg bare handler om at dette ikke er Java så er det vel ikke så farlig om ikke det blir med over i en ny tråd? Just a tought så du kanskje får svar på det du lurer på. 1 Lenke til kommentar
Enthroner Skrevet 14. oktober 2016 Del Skrevet 14. oktober 2016 Dette if (str.search("prot1,MRTU,1") != -1) { ComTag_WTD01=0 project.setTag("ComTag_WTD01",ComTag_WTD01); } else { ComTag_WTD01=1 project.setTag("ComTag_WTD01",ComTag_WTD01); } er det samme som project.setTag("ComTag_WTD01",str.search("prot1,MRTU,1") != -1 ? 0 : 1); så det var en logisk feil i mitt forrige forslag antakelig. Legg til ? 0 : 1 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator) så burde det fungere. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå