Hola buenos días a todos. Tengo una duda con un SCADA que estoy haciendo y que no termina de funcionarme. Consta de dos termpares y un pHmetro. He conseguido incluir y que funcionen los dos termopares, pero no consigo que lea lo que manda la señal del pHmetro. El pHmetro manda señal a TX3 y RX3 (por el puerto serie) y se que funciona bien porque probandolo sin ACIMUT y demás va bien. El tema es que es incompatible la función regs con la variable Strings que necesita el pHmetro. Me salta el error al compilar es "error: cannot convert 'String' to 'int' in assignment".
Entonces quería saber si hay alguna manera de que ACIMUT lea sin la función regs, o si puede leer el pHmetro por el puerto serie sin la variable String. Os dejo la parte del programa. Muchas gracias
surbyte:
Bueno no digo que este resuelto porque luego me da otro error al compilar pero me debe faltar alguna librería
corrige esta linea final
regs[pH_1] = sensorstring.toInt();
Muchisimas gracias surbyte. Ahora ya he conseguido solucionar ese tema y ya tengo los dos termopares y el pHmetro funcionando finalmente. He tenido que modificar alguna cosilla pero todo OK. Tengo una duda, que es importante para el proyecto. Al convertir a INT es normal que no marque decimales? O hay alguna manera de cambiar eso y que muestre al menos un decimal o dos? Siento si la pregunta es muy tonta jajaja. Muchas gracias de antemano y de nuevo gracias por la ayuda.
Dejo el código final:
*Edito: La idea que se me ha ocurrido es cuando lee el valor de sensorstring (sensorstring = Serial3.readStringUntil(13); ) si pudiera multiplicarlo por 100 ya cogería ese valor entero. Luego solo tendría que dividirlo entre 100 en la parte de "regs [pH_1] = (sensorstring.toInt()*100); " y ya lo tendría, creo. Pero no puedo, o no se, hacerlo para que lo multiplique porque me da error....
Muchas gracias por el esfuerzo, pero los termopares los lee con decimales sin problema en el SCADA, es el pHmetro (sensorstring) lo que no lee con decimales. Porque al convertirlo a Int se los come claro. Mi pregunta era sobre sensorstring, que es lo que transformo como bien me dijiste. La librería que has modificado viene de serie para el funcionamiento de los termopares. Van conectados a una placa Thermocouple Amplifier y usa esa biblioteca para su funcionamiento. No tiene nada que ver con el pHmetro. Siento si ha suponido esfuerzo en vano compañero. Muchas gracias de todas formas. Y si, soy novato en el tema de Arduino y de su programación. He leído que quizás convirtiendo la variable String "sensorstring" a float se podría hacer algo tipo como lo que he editado en el comentario anterior....Sería: void serialEvent4 () {
__ sensortring.toFloat () * 100;__
y regs [pH_1] = (sensorstring.toInt () / 100);
Pero no sé si se podría, si es un disparate. Muchas gracias de antemano
Tienes toda la razón y lo siento mucho, pero al ver que el primer post que me comentaste me lo dijiste a la primera pensaba que se entendía. Muchas gracias de todos modos compañero
surbyte:
No has explicado nada sobre que lee cada parte asi que es dificil sugerite.
Si lo ingresa por serial. Yo tengo el phmetro conectado a RX3 y Tx3 (y no se puede cambiar porque lleva una plaquita conectada que así lo especifica).
Entrega los datos por serial.
Entonces al final lo que hice, como bien me indicaste, es convertir ese valor del sensorstring a int. Lo que pasa es que se come los decimales. Lo que busco,si fuera posible, es hacer que me los muestre. Por eso había pensado lo de si fuera posible multiplicar por 100 el valor que da para así al transformarlo no coma decimales (no los tendría) y luego dividirlo entre 100 a la hora de mostrarlo en pantalla. Ese proceso es el que no se me ocurre como hacerlo. Espero haberme explicado mejor y nuevamente te pido disculpas.
Hola muy buenas. Tengo un problema a la hora de simular el SCADA, que creo que tiene algo que ver con la temporización de la toma de datos. Me explico.
El programa usa protocolo RTU Modbus. Y la transferencia la hago en 9600 blaudios.
El probelma viene cuando simulo mi SCADA. El programa arranca y funciona perfectamente, pero al minuto o dos minutos da fallo de conexión. Como si hubiera perdido la conexión con el Arduino. Estoy volviendome loco viendo qué puede ser y no hay manera. Muchas gracias de antemano. Dejo el código completo:
Hola! Después de volverme loco ya se por qué falla! No era problema del protocolo sino un poco de la programación. Os cuento. El sistema tiene dos termopares y dos pHmetros. El sistema con dos termopares y un pHmetro va perfectamente y no hay problemas de interferencias ni fallos de ningún tipo. La cosa es que al conectar el segundo pHmetro como que colapsa y se va el servidor, creo que por que tiene problemas al procesas datos del RX3 TX3 y el RX2 TX2 al mismo tiempo digamos. Obviamente eso tiene que ser cuestión de hacer una programación adecuada. Y ahí es donde yo fallo....se os ocurre como hacer que no se solapen. Dejo el código: *El valor del pH metro es "sensorstring" y "sensorstring1". Muchas gracias amigos