สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: Circuitos
- ขั้นตอนที่ 2: เอสคลาโว MODBUS กับ Raspberry Pi 3B
- ขั้นตอนที่ 3: Maestro LabVIEW (HMI)
- ขั้นตอนที่ 4: Máquina De Estados
- ขั้นตอนที่ 5: แผงด้านหน้า
- ขั้นตอนที่ 6: Archivos Python
- ขั้นตอนที่ 7: HMI
- ขั้นตอนที่ 8: ผลลัพธ์สุดท้าย
วีดีโอ: Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
โพสต์ ESCRITO EN ESPAÑOL
Se simuló un circuito transmisor de temperatura, el elemento primario (Sensor) fue implementado mediante un potenciometro el cual varia el voltaje de entrada. จำลองสถานการณ์ สภาพแวดล้อมของเซ็นเซอร์ (Elemento Secundario), การใช้งานและโปรโตคอล MODBUS RTU, ข้อมูลที่เป็นประโยชน์จาก puerto serial hacia una computadora que será el maestro
Como maestro se elaboró un programa en labVIEW haciendo uso de la librería MODBUS que ya implementa. El esclavo es capaz de recibir las siguientes funciones del maestro:
- ฟังก์ชัน 0X01
- ฟังก์ชัน 0x02
- ฟังก์ชัน 0x03
- ฟังก์ชัน 0x04
- ฟังก์ชัน 0x05
- ฟังก์ชัน 0x06
Los registros implementados en el esclavo son:
- Direccionamiento MODBUS (16 บิต)
- Velocidad de transmisión (16 บิต)
- Medición de la temperatura (16 บิต)
- ข้อผิดพลาดบิต (1 บิต)
- Bit de selección (1 บิต) C o F
- Nivel máximo de medición (16 บิต)
- Nivel mínimo de medición (16 บิต)
เสบียง
- LabVIEW
- Raspberry Pi 3
- ADC MCP3008
- 1 โพเทนซิโอเมโทร
- จัมเปอร์
- FTDI (FT232RL)
- โปรโตบอร์ด
ขั้นตอนที่ 1: Circuitos
Circuito MCP3008 และ Frambuesa Pi
Conexión Raspberry Pi 3 และ FTDI:
- GND เป็น GND
- TX เป็น RX
- RX เป็น TX
ขั้นตอนที่ 2: เอสคลาโว MODBUS กับ Raspberry Pi 3B
Como ไพรเมอร์ pazo necesitas กำหนดค่า ติดตั้ง ใช้งาน และ Raspberry Pi 3B Sugiero ติดตั้ง NOOBS desde la pagina oficial. กำหนดค่า Luego สำหรับ Raspberry Pi 3B สำหรับพอร์ตที่ใช้กับพอร์ตอนุกรมและ puerto SPI
(ส่วนบุคคลของคุณ ฉันเชื่อมต่อ a mi raspi utilizando VNC Viewer สำหรับ ello hay que activar el servidor VNC de la raspi)
ต้นฉบับ el valor del ADC เป็นตัวแทนของ que la temperatura medida por el sensor esta en grados Celsius y al estar el bit de selección en 1 este valor se pasa a grados Fahrenheit.
สิ่งที่ต้องทำ esto, el esclavo MODBUS se realizó con Python haciendo uso de la librería Pyserial. Para la simulación del transmisor se trabajo con 4: รายการ:
- คอยส์
- อินพุตลงทะเบียน
- โฮลดิ้งลงทะเบียน
- อินพุตแบบแยกส่วน
Cada lista se hizo de 6 องค์ประกอบ Breve descripción de los elementos de cada รายการ:
- coils_lista[0] = bit de selección (si está en 0 significa que la unidad de medición es en Celsius caso contrario unidad de medición en Fahrenheit)
- discrete_input[0] = ข้อผิดพลาดบิต (este bit se enciende cuando el valor de temperatura esta fuera del rango establecido entre temperatura máxima y mínima)
- inputRegister_lista[0] = Valor del ADC (เซ็นเซอร์อุณหภูมิ simulado por un potenciometro) การพึ่งพาอาศัยกัน de valor de bit de selección
- HoldingRegister_lista[0] = dirección de esclavo
- HoldingRegister_lista[1] = ความกล้าหาญ เดอ อุณหภูมิ máxima
- holdRegister_lista[2] = valor de temperatura mínimo
- HoldingRegister_lista[3] = velocidad de transmisión.
El esclavo MODBUS การตัดสินใจ ส่วนบุคคล กับ ciertos พารามิเตอร์ เริ่มต้น como lo son:
- Valor de temperatura máxima 500 เซลเซียส
- Valor de temperatura minima 200 เซลเซียส
- Baudrate เริ่มแรก 9600
- ทิศทางของ esclavo 1
- Unidad de medición inicial en Celsius.
ลาโลจิกา aplicada es la siguiente:
En primer se buscó leer toda la trama MODBUS enviada por el maestro, esto se hizo en Python ค่ามัธยฐาน el código:
En segundo lugar se buscó la función que el maestro solicitaba para luego validar si la cantidad de salidas pedidas por el maestro eran validas sino generar un código de excepción 3, แยกประเภทการใช้งานจากอดีต 2 องค์กร y por ultimo realizar la instrucción pedida según el código de función เลอิโด
Y así sucesivamente con el resto de funciones implementadas. ช่วยเหลือ
Para ultimo paso en cada función crear una lista y mandar uno por uno por el puerto serial la petición del maestro. เพิ่มเติม
Aclaro que no valide si el CRC enviada al esclavo era el Correcto pero si lo hice สำหรับ el mensaje enviado al maestro ความสนุกของ CRC la adapte a mi código usando este link CRC MODBUS
เครื่องคิดเลข CRC
Códigos de excepción MODBUS
ขั้นตอนที่ 3: Maestro LabVIEW (HMI)
ความพร้อมใช้งานของ maestro que fuera de cierta manera amigable para un usuario final fue hecha por medio de labVIEW y su libría MODBUS la cual facilitaba la creación de un maestro MODBUS RTU.
Se elaboró una maquina de estados en labVIEW con las siguientes ตัวเลือก:
- ในนั้น
- conectar: aquí está el API ของ crear un nuevo maestro modbus con la opción habilitada de SERIAL.
- escribir: aquí se utiliza la funcion เขียน single hold register y เขียน single coil
- leer: aquí se กำหนดค่า los registros y coils de importancia para la lectura del maestro
ขั้นตอนที่ 4: Máquina De Estados
อธิบายความต่อเนื่อง detalladamente la configuración en cada opción:
คอนกตาร์:
การใช้งาน API สำหรับการสร้างใหม่ MODBUS การเลือกและตัวเลือก "New Serial Master", การควบคุมสำหรับการกำหนดค่า:
- Baudrate
- ความเท่าเทียมกัน
- พอร์ตอนุกรม (ทรัพยากรวีซ่า)
- ประเภทอนุกรม (RTU)
- ไอดี เดล เอสคลาโว่
escribir:
en escribir solo me interesaba que el maestro pudiera cambiar la temperatura máxima y mínima, el bit de selección, asignarle una nueva dirección al maestro y por ultimo asignarle un nuevo Baudrate ที่เป็นทางการ por esclavo en esclavoren a la que el maestro accedería อะ ลา คิว เอล มาเอสโตร Por lo que las funciones utilizadas fueron:
- เขียนม้วนเดียว
- เขียนเดียวถือลงทะเบียน.
เลียร์:
En leer solo me interesaba la lectura del bit de error y el input register asociado a mi ตัวแปร primaria
ลาส funciones utilizadas fueron:
- อ่านอินพุตลงทะเบียน
- อ่านคอยส์.
ขั้นตอนที่ 5: แผงด้านหน้า
El panel frontal en labVIEW se trató lo mejor posible que fuera amigable para el usuario final. หน้า El แผงด้านหน้า en labVIEW se trató lo mejor posible que fuera amigable para el usuario final. พอ lo que se realizó lo siguiente:
ติดตั้ง DMC GUI Suite สำหรับ labVIEW para tener un mejor diseño en cuanto a controles e indicadores.
2 เทอม (1 para indicar la temperatura en Celsius y otro para indicar la temperatura en Fahrenheit).
Botón "คำเตือน" que únicamente se enciende cuando el bit de error está encendido.
Botón para editar los rangos de temperatura a medir (สำหรับ que únicamente haga el cambio al registro cuando se es presionado el botón) caso contrario siempre los estuviera modificando lo cual causaría un funcionamiento wrongo.
Botón para editar la dirección del esclavo (para que únicamente haga el cambio al registro cuando se es presionado el botón)
Botón para editar el baudrate del esclavo (สำหรับ que únicamente haga el cambio al registro cuando se es presionado el botón)
ยกเลิกสำหรับ "Excepciones" (Para que genere una excepción dependiendo de la función MODBUS seleccionada)
ขั้นตอนที่ 6: Archivos Python
En estos archivos está implementado el esclavo MODBUS (Transmisor de temperatura) junto con el archivo ADC para leer la variable de interés del sensor de temperatura (จำลองสถานการณ์ 0 con un potenciometro)
ฉัน quedo pendiente implementar las funciones 15 y 16.
ขั้นตอนที่ 7: HMI
มาสเตอร์ Modbus RTU
Este es el maestro implementado en labVIEW. Hay cosas para mejorar, por ejemplo no pude corregir un error al conectar al primer Intto, investigue y no encontré una solución para aplicarla.
ขั้นตอนที่ 8: ผลลัพธ์สุดท้าย
Espero ayudar a algunas personas a comprender mejor la comunicación modbus RTU y una implementación en labVIEW. ภาษา
แนะนำ:
HMI อุตสาหกรรมและ Arduinos ใน MODBUS RTU: 4 ขั้นตอน
HMI อุตสาหกรรมและ Arduinos ใน MODBUS RTU: ในคำแนะนำนี้ ฉันจะอธิบายตัวอย่างการสื่อสารระหว่าง HMI อุตสาหกรรม (COOLMAY MT6070H, 150EUROS), Arduino CLONE DIY (10EUROS) และ Arduino UNO (10EUROS) เครือข่ายจะทำงานภายใต้โปรโต
Digistump และ Modbus RTU: 6 ขั้นตอน
Digistump และ Modbus RTU: บรรดาผู้ที่เห็นคำแนะนำของฉันเกี่ยวกับการสื่อสารระหว่าง Modbus RTU และ Raspberry Pi รู้ว่าฉันกำลังวางแผนโครงการสำหรับการสร้างเรือนกระจกโดยอัตโนมัติ ฉันได้สร้าง PCB ขนาดเล็ก 2 อันที่สามารถใส่ไว้ในกล่องโปรเจ็กต์ ลิงก์ไปยัง PCB ฉันจะรวม
การสื่อสาร Modbus TCP ระหว่าง Arduino และอุปกรณ์อุตสาหกรรม: 3 ขั้นตอน
การสื่อสาร Modbus TCP ระหว่าง Arduino และอุปกรณ์อุตสาหกรรม: วิธีอุตสาหกรรมในการควบคุมบอร์ด Arduino ด้วย HMI อุตสาหกรรมและเชื่อมโยงไปยังเครือข่ายอุตสาหกรรมด้วยการสื่อสาร Modbus TCP
โครงสร้าง De Un Transmisor De Audio Por Laser: 3 ขั้นตอน
Construcción De Un Transmisor De Audio Por Laser: โครงสร้างการส่งสัญญาณเสียงเลเซอร์
ESP32 Modbus Master TCP: 7 ขั้นตอน
ESP32 Modbus Master TCP: ในคลาสนี้ คุณจะตั้งโปรแกรมโปรเซสเซอร์ ESP32 ให้เป็น Modbus TCP Master เราจะใช้อุปกรณ์สองเครื่องซึ่งมีโปรเซสเซอร์นี้: Moduino ESP32 และ Pycom อุปกรณ์ทั้งสองทำงานในสภาพแวดล้อม MicroPython Modbus Slave ของเราจะเป็นคอมพิวเตอร์พีซีที่มี M