Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porVinicio Ortuno Modificado hace 10 años
1
Programación red MODBUS Ensamblar y Tx una trama. Rx y Desensamblar una trama. Calculo CRC. Librerías con parámetros MODBUS y gestión del puerto serie. Funciones principales:
2
Interfaces para Tx y Rx // Envía una trama int MODBUSEnvia( HANDLE hPort, int l, // Tamaño de la trama unsigned char *pb // Trama a enviar con CRC incluido ); // Devuelve 0 si ha habido error en la transmisión, 1 si no ha habido // Recibe una trama int MODBUSRecibe( HANDLE hPort, int lmax, // Tamaño máximo admisible de la trama unsigned char *pb // Trama recibida ); // Devuelve 0 si ha habido error en la recepción, >=1 indica la longitud de la trama
3
Estructura Programa Tx Gestion Puerto Serie Ensamblado Rx int main(){ unsigned char mc[8]={0xc7,0x04,0x04,0xb0,0x00,0x01,0x00,0x00}; unsigned char mcRec[100]; int l; hPort=OpenSerialPort("COM1",CBR_9600,8,NOPARITY,TWOSTOPBITS,10); if (hPort==INVALID_HANDLE_VALUE) { printf("Error abriendo puerto com1"); return 1; } MODBUSCRC(6,mc,mc+6); printf("\nTrama enviada: "); MODBUSImprime(8,mc); MODBUSEnvia(hPort,8,mc); l=MODBUSRecibe(hPort,100,mcRec); printf("\nTrama recibida: "); MODBUSImprime(l,mcRec); CloseSerialPort(hPort); return 0; }
4
Tx Escribir en el puerto serie cada byte. En serie.cpp: SerialSendByte(HANDLE hPort, BYTE byte) Informar de cualquier error. Funciones Tx:
5
Rx Escuchar constantemente el puerto serie. En serie.cpp: SerialReceiveByte(HANDLE hPort, BYTE *pbyte, BOOL *pTimeout) Informar de cualquier error. Chequear CRC trama recibida.(Final) Funciones Rx:
6
Interfaz Línea Comandos > 23 RL0 1 > 23 RL0 0 > 3 RL0 1 > 4 RL0 0 3 RL0 1 1 char 3 char 1 espacio Para Leer de la línea de comandos: fgets (cadena, 100, stdin); Interpretación de números enteros: casting a integer (ASCII Table)
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.