جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-23 12:53
انشر ESCRITO EN ESPAÑOL
Se simuló un Circular transmisor de temperature، El elemento primario (Sensor) fue Implementado mediante un potenciometro el cual varia el voltaje de entrada. Para enviar la información del sensor (Elemento Secundario)، si application el protocolo MODBUS RTU، por medio de un puerto serial hacia una computadora que será el maestro.
حدد برنامج كومو في المختبر بشكل مفصل لاستخدامه في مكتبة MODBUS. 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 بت)
- فيلوسيداد دي ترانسيسيون (16 بت)
- Medición de la temperatura (16 بت)
- خطأ بت دي (1 بت)
- Bit de selección (1 بت) C o F
- نيفيل ماكسيمو دي ميديسيون (16 بت)
- نيفيل مينيمو دي ميديسيون (16 بت)
اللوازم
- LabVIEW
- Raspberry Pi 3
- ADC MCP3008
- 1 Potenciometro
- صداري
- FTDI (FT232RL)
- بروتوبورد
الخطوة 1: Circuitos
Circuito MCP3008 y Frambuesa Pi
Conexión Raspberry Pi 3 y FTDI:
- GND و GND
- TX a RX
- RX a TX
الخطوة 2: Esclavo MODBUS En Raspberry Pi 3B
كومو برايمر بازو نيسيستاس كونكورار و إنستالار تو سيستيما أوبراتيفو إن تو رازبيري باي 3 بي. Sugiero instalar NOOBS desde la pagina oficial. تكوين Luego tu Raspberry Pi 3B للفقرة poder الاستفادة من المسلسل puerto SPI.
(Personalmente yo me conectó a mi raspi utilizando VNC Viewer para ello hay que activar el servidor VNC de la raspi)
Originalmente el valor del ADC تمثل كلاً من درجة الحرارة المتوسطة من خلال أجهزة الاستشعار التي تم الحصول عليها من الدرجة المئوية والأداء على مستوى منخفض من الدرجة الأولى.
Ya sabiendo todo 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 listas:
- لفائف
- سجلات الإدخال
- السجلات القابضة
- مدخلات منفصلة
Cada lista se hizo de 6 elementos. Breve descripción de los elementos de cada lista:
- coils_lista [0] = bit de selección (si está en 0 colora que la unidad de medición es en Celsius caso contario unidad de medición en Fahrenheit)
- discrete_input [0] = خطأ بت (este bit se enciende cuando el valor de temperature esta fuera del rango establecido entre temperature máxima y mínima)
- inputRegister_lista [0] = Valor del ADC (مستشعر درجة الحرارة المحاكي من خلال قياس القدرة) يعتمد على قيمة وحدة التحكم.
- HoldingRegister_lista [0] = dirección de esclavo
- HoldingRegister_lista [1] = شجاعة درجة الحرارة máxima
- HoldingRegister_lista [2] = شجاعة درجة الحرارة mínimo
- HoldingRegister_lista [3] = سرعة الإرسال.
El esclavo MODBUS a decisión personal cuenta con ciertos parámetros iniciales como lo son:
- فالور دي تمبراتورا ماكسما 500 درجة مئوية
- فالور دي تيمبيراتورا مينيما 200 مئوية
- باودرات الرسمية دي 9600
- Dirección de esclavo 1
- Unidad de medición inicial en Celsius.
La lógica aplicada es la siguiente:
En Primer lugar se buscó leer toda la trama MODBUS enviada por el maestro، esto se hizo en Python mediante 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، seguido de validar si el maestro pedía una dirección Implementadao sino de generar y من خلال تطبيق حقيقي لتعليم الأطفال سيغون إل كوديجو دي وظيفة leído.
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 series la petición del maestro.
Aclaro que no valide si el CRC enviada al esclavo ، حقبة التصحيح pero si lo hice para el mensaje enviado al maestro. La función de CRC la adapte a mi código usando este link CRC MODBUS
حاسبة CRC
Códigos de excepción MODBUS
الخطوة 3: Maestro LabVIEW (HMI)
La creación de un maestro que fuera de cierta manera amigable para un usuario final fue por medio de labVIEW and su librería MODBUS la cual يسهل creación de un maestro MODBUS RTU.
شرح مفصل عن العمل:
- فيه
- conectar: aquí está el API de crear un nuevo maestro modbus con la opción habilitada de SERIAL.
- إسكريبير: استخدام هذا النوع من الوظائف كتابة سجل واحد وكتابة ملف واحد
- leer: aquí se configuran 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 لتفعيل "الإصدار الجديد من المسلسل الرئيسي" ، حيث يتحكم crearon في التكوين:
- بودرات
- التكافؤ
- المنفذ التسلسلي (مصدر التأشيرة)
- نوع المسلسل (RTU)
- معرف ديل إسكلافو.
إسكريبير:
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 al esclavo por lo que ya sabi de anteménénenarle un nuevo Baudrate 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 variari primaria.
Las funciones utilizadas fueron:
- قراءة سجل الإدخال
- اقرأ ملفات.
الخطوة 5: اللوحة الأمامية
El panel frontal en labVIEW se trató lo mejor posible que fuera amigable para el usuario final. Por lo que se realizó lo siguiente:
قم بتثبيت تطبيق واجهة المستخدم الرسومية لـ DMC للحصول على ميزة LabVIEW para tener un mejor diseño en cuanto a controles e indicadores.
2 termómetros (1 para indicar la temperature en Celsius y otro para indicar la temperatura en Fahrenheit).
Botón "تحذير" من قائمة التعليمات الموجودة في قائمة الخطأ التي تشير إلى الخطأ.
Botón para editar los rangos de temperatura a medir (para que únicamente haga el cambio al registro cuando se es presionado el botón) في حالة كونكاريتو لوز إستوفيرا modificando lo cual reasonaría un funcionamientorecto.
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 (para que únicamente haga el cambio al registro cuando se es presionado el botón)
Un botón para "Excepciones" (Para que genere una excepción reliendo de la función MODBUS seleccionada)
الخطوة 6: Archivos Python
En estos archivos está appado el esclavo MODBUS (ناقل درجة الحرارة) أثناء التنقل مع ADC للتفاعل مع أجهزة استشعار درجة الحرارة (Simulado en el canal 0 con un potenciometro).
Me quedo pendiente تنفيذ وظائف 15 y 16.
الخطوة 7: HMI
ماجستير Modbus RTU
إستي المايسترو التطبيقية في المختبر. Hay cosas para mejorar ، por ejemplo no pude corregir un error al conectar al primer intento، تحقيق y no encontré una solución para aplicarla.
الخطوة 8: النتيجة النهائية
Espero ayudar a algunas personas a compender 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 يعرفون أنني أخطط لمشروع لأتمتة دفيئة. لقد صنعت قطعتين صغيرتين من ثنائي الفينيل متعدد الكلور يمكن وضعها داخل صندوق عرض. الرابط إلى ثنائي الفينيل متعدد الكلور سأشمل
اتصال Modbus TCP بين Arduino والأجهزة الصناعية: 3 خطوات
اتصال Modbus TCP بين Arduino والأجهزة الصناعية: طريقة صناعية للتحكم في لوحة Arduino باستخدام HMI الصناعية وربطها بشبكة صناعية باستخدام اتصال Modbus TCP
Construcción De Un Transmisor De Audio Por Laser: 3 خطوات
Construcción De Un Transmisor De Audio Por Laser: Construcci & oacute؛ n de un transmisor de audio con laser
ESP32 Modbus Master TCP: 7 خطوات
ESP32 Modbus Master TCP: في هذه الفئة ، ستقوم ببرمجة معالج ESP32 ليكون Modbus TCP Master ، وسنستخدم جهازين يحتويان على هذا المعالج: Moduino ESP32 و Pycom. كلا الجهازين يعملان في بيئة MicroPytthon. سيكون Modbus Slave جهاز كمبيوتر شخصي مع M