Autor Tema: Modbus inputs de diferentes puertos  (Leído 1951 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Prometeo91

  • PIC10
  • *
  • Mensajes: 7
Modbus inputs de diferentes puertos
« 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

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Modbus inputs de diferentes puertos
« Respuesta #1 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.

Desconectado Prometeo91

  • PIC10
  • *
  • Mensajes: 7
Re:Modbus inputs de diferentes puertos
« Respuesta #2 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 :).

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Modbus inputs de diferentes puertos
« Respuesta #3 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.

Desconectado Prometeo91

  • PIC10
  • *
  • Mensajes: 7
Re:Modbus inputs de diferentes puertos
« Respuesta #4 en: 09 de Enero de 2017, 19:20:44 »
Mil gracias mi buen amigo, ya pude probarlo y funciono de maravilla :) :o :-/ ((:-)) ((:-)) ((:-)) ((:-)) ((:-)) ((:-)) ((:-)) ((:-)) ((:-))


 

anything