TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Prometeo91 en 09 de Enero de 2017, 17:34:16

Título: Modbus inputs de diferentes puertos
Publicado por: Prometeo91 en 09 de Enero de 2017, 17:34:16
Muy buenas tardes amigos del foro, espero que hayan tenido un buen fin de semana.

Verán, tengo un PIC16F690 en el cual, tengo conectado entradas en diferentes puertos, me gustaría poder juntarlas todas en un arreglo, y mandarlas por modbus, algo que se vea asi: 
Código: [Seleccionar]
int8 inputs =0b00000111;, donde pueda colocar los datos obtenidos de los diferentes puertos en los primeros bits. De momento seme ocurrió esto, pero no trabaja jejeje  :oops:.

 
Código: [Seleccionar]
   int1 apagadores[7];
   
   apagadores[0]=(input(pin_c1)!=1);
   apagadores[1]=(input(pin_c2)!=1);
   apagadores[2]=(input(pin_b4)!=1);
   apagadores[3]=0;
   apagadores[4]=0;
   apagadores[5]=0;
   apagadores[6]=0;
   apagadores[7]=0;
   
  for(in=0; in<=8; ++in){
  shift_left(inputs,1,apagadores[in]);
  }


No se si ustedes conozcan algún método mejor, ya que no seme ocurre nada mas por el momento jejeje

De ante mano le doy las gracias a quien responda, y les deseo una buena tarde
Título: Re:Modbus inputs de diferentes puertos
Publicado por: KILLERJC en 09 de Enero de 2017, 17:39:27
Lo mas eficiente (pero no mas bonito) creo que seria:

Código: C
  1. int8 apagadores;
  2.  
  3. apagadores = 0; // Set inicial todos a 0, solo me encargo de ponerlos en 1 en caso que sea necesario.
  4. if(input(PIN_C1)) bit_set(apagadores,0);
  5. if(input(PIN_C2)) bit_set(apagadores,1);
  6. if(input(PIN_B4)) bit_set(apagadores,2);
  7. if(input(PIN_xx)) bit_set(apagadores,3);
  8. if(input(PIN_xy)) bit_set(apagadores,4);
  9. if(input(PIN_xz)) bit_set(apagadores,5);

Creo que seria lo mas eficiente ya que en ASM seria un BTFSS y un BSF, es decir 2 instrucciones por cada bit.
Título: Re:Modbus inputs de diferentes puertos
Publicado por: Prometeo91 en 09 de Enero de 2017, 17:54:36
Mil gracias KILLERJC   :) :) :) :):-/ :-/ :-/ :-/ :-/. Acabo de salir de la oficina, pero en un ratito que vuelva lo pruebo. Cualquier cosa te comento el resultado.

Aprovechando, estoy ocupando el CCS 4.12, pero la libreria de modbus tiene problemas en la seccion de coils, si lo utilizo con ModScan no marca lio, pero al utilizarlo con Mtester o algun soft de SCADA como Realiance SCADA 4 o LabView, me marca error.

De casualidad sabes el origen de este problema? o tienes alguna libreria que no tenga ese predicamento?

Mil gracias otra vez :).
Título: Re:Modbus inputs de diferentes puertos
Publicado por: KILLERJC en 09 de Enero de 2017, 18:11:28
No poseo ninguna libreria de MODBUS y no uso CCS, por lo cual no podria ayudarte en eso. Pero espero que alguien lo lea del foro y si lo probo que pueda ayudarte.
Título: Re:Modbus inputs de diferentes puertos
Publicado por: Prometeo91 en 09 de Enero de 2017, 19:20:44
Mil gracias mi buen amigo, ya pude probarlo y funciono de maravilla :) :o :-/ ((:-)) ((:-)) ((:-)) ((:-)) ((:-)) ((:-)) ((:-)) ((:-)) ((:-))