es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comunicación serie RS232 con controlador PR4000 de MKS.

Estoy intentando establecer una conexión serial a través de un puerto RS232 en el controlador PR4000 de MKS. Este controlador está conectado a un medidor de presión, e intento leer la presión desde mi PC con el siguiente script:

import time
import serial
import bitarray
ba = bitarray.bitarray()

Configurar las conexiones en serie (los parámetros difieren en el dispositivo al que se está conectando)

ser = serial.Serial(
    port='COM7',
    baudrate=9600,
    parity=serial.PARITY_ODD,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.SEVENBITS
)

ser.isOpen()

print('Ingrese sus comandos a continuación.\r\nInserte "exit" para salir de la aplicación.')
data_in = 0
while True:
    data_in = input(">> ")
    if data_in == 'exit':
        ser.close()
        break
    else:
        ser.write((data_in).encode('utf-8'))
        out = ''
        time.sleep(0.1)
        while ser.inWaiting() > 0:
            out = ser.read(ser.inWaiting()).decode('utf8')
        if out != '':
            print(out)

Este código está inspirado en esta publicación:

https://stackoverflow.com/questions/676172/full-examples-of-using-pyserial-package

Puede encontrar la documentación del controlador aquí:

https://www.idealvac.com/files/manuals/PR4000_InstructionManual.pdf

El capítulo de interfaz comienza en la página 43.

Básicamente, la interfaz RS funciona con una sintaxis de solicitudes y respuestas.

Ejemplo de respuesta:

RT,ON: establecer el modo remoto en el controlador.
?RT: preguntar por el estado del modo remoto.

Logré establecer la conexión con Hyper Terminal.

Pero con Python, he intentado ingresar los comandos y no puedo obtener ninguna respuesta, el búfer serial está vacío.

¿Cree que el problema está en el formato de las solicitudes?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema puede no estar necesariamente en el formato de las solicitudes, sino en la forma en que las solicitudes son enviadas y recibidas. Es posible que el controlador no esté recibiendo las solicitudes correctamente o que no esté enviando las respuestas de vuelta en el formato esperado.

    Algunos posibles pasos de solución de problemas podrían incluir lo siguiente:
    – Verificar que el puerto, la velocidad de transmisión, la paridad, los bits de parada y el tamaño de bytes estén configurados correctamente para que coincidan con las especificaciones del controlador PR4000.
    – Verificar que las solicitudes enviadas a través del script coinciden con la sintaxis/formato requerido que aparece en el manual de PR4000.
    – Probar diferentes métodos de envío/recepción de datos a través de la conexión serie (como usar read() en lugar de inWaiting()) para ver si eso hace una diferencia.
    – Leer la documentación y ejemplos de PySerial para asegurarse de que la biblioteca se esté utilizando correctamente.

Comments are closed.