Реверс-инжиниринг китайского ПЛК FX3U-14MR. Часть 1. Железо / Хабр
На рынке уже довольно давно присутствуют китайские клоны промышленных контроллеров Mitsubishi серий FX1, FX2, FX3. Их особенностью является возможность программирования в средах GX Developer, GX Works2 от Mitsubishi. Самые дешевые продаются в виде маленьких плат. Те, что подороже, имеют корпус, сеть RS-485, часы реального времени и т.д.
Это китайский бескорпусный FX1N-10MTА это китайский FX3U-14MRБольшинство этих ПЛК (клонов) сделано на микроконтроллерах линейки STM32, а в последнее время также на клонах STM от китайских Geehy Semiconductor, GigaDevice и др. Далее слово «клон» я буду употреблять уже в связке с микроконтроллером STM32. В статье я не буду рассматривать аспекты программирования «клонов-клонов», т.е. буду считать, что имею дело с самым настоящим STM32, для которого можно применять официальную документацию STMicroelectronics.
Так о чем же эта статья? На электронных форумах некоторые участники прошивают отладочные платы типа Blue pill, которые сделаны на STM32, прошивками от этих самых китайских ПЛК, получая возможность программировать платы из GX Developer, GX Works2.
Я же решил сделать обратную процедуру, а именно взять промышленный контроллер (не идеальный, но кое-что на нем уже есть) с готовыми полевыми обвязками. Задействовать железо этих ПЛК в средах программирования микроконтроллеров, таким образом получить более широкие возможности по программированию в С/C++, не ограниченные языками FBD, LD. Также этому в некоторой степени способствовала статья Repurposing a PLC clone for use with Arduino. Для этого я приобрел китайский FX3U-14MR, почти такой же как на фотографии выше, у которого кроме дискретных и аналоговых входов-выходов есть еще RTC и RS-485 сеть. Я не являюсь профессиональным электронщиком (простите мою любительскую схему) или программистом микроконтроллеров, а скорее принадлежу к плеяде АСУшников и вообще люблю готовые программные модули и библиотеки, поэтому программировать буду в Arduino IDE, используя Arduino core for STM32 MCUs STM32duino со всеми доступными библиотеками.
Но прежде чем писать программы, нужно понять все «железо». Определить Microcontroller Unit (далее MCU), получить схему подключения периферии, чем мы и займемся в первой части.Плата контроллера выглядит вот так. На моем контроллере есть некоторые изменения, о которых я расскажу ниже. Из основного видны: MCU STM32F103VCT6, оптопары дискретных входов, ключи ULN2003 для реле, трансивер RS-485 SP485E (рядом с разъемом RS-485), операционный усилитель LM158 для аналоговых выходов DA0, DA1, батарея RTC и часовой «кварц» рядом с ней. Слева внизу последовательный порт RS-232 и трансивер TP3232N. Рядом с MCU микросхема I2C EEPROM. Сверху (синие) подстроечные резисторы, еще выше светодиод Run и ручной переключатель режима Start/Stop. Ну и конечно виден некий разъем, на который, как я предполагал изначально, выведен интерфейс отладки STM32 SWD. Такая вот ардуина на стероидах.
После нескольких часов, проведенных с лупой и мультиметром, удалось восстановить часть схемы интересующей меня периферии.
Электрическая схема основных узловMCU
Когда я заказывал ПЛК, то надеялся (на самом деле 50/50), что он будет оснащен чипом STM32F103VCT6, как было видно на фотографиях лота. Но когда получил контроллер, то вместо STM32 увидел это. Хуже всего, что на нем не оказалось никакой вменяемой маркировки, только что-то типа 14CPU (или GPU), нацарапанной поверх затертого корпуса (что же там было до этого?). Впрочем я также ожидал клоны STM32 от Geehy Semiconductor или GigaDevice, но не совсем «noname». Я предположил, что это может быть отбраковка STM32, которую предприимчивые китайцы решили пустить в дело. Либо в лучшем случае это просто такая защита от копирования изделия (другими китайцами 🙂 ). В общем после всех дальнейших манипуляций с ПЛК я воспринимаю этот процессор как STM32F103VCT6, так как он видится и программируется в STM32CubeProgrammer, и STM32 ST-LINK Utility через интерфейс SWD. А также загружается с USART1 при выборе соответствующего boot mode.
Вероятно это STM32F103VCT6. Все залито лаком, который впрочем легко смываетсяI2C EEPROM
8-ножечная микросхема, расположенная рядом с MCU, оказалась чипом EEPROM с интерфейсом I2C. И скорее всего это что-то типа 64Кбит FT24C64 или похожая. На моей плате чип оказался тоже затертым. Пересмотрев множество фотографий аналогичных ПЛК, я так и не смог на 100% уверенно определить маркировку. Поэтому дальше с EEPROM разбирался уже на программном уровне. А вот зачем тут нужен EEPROM — вопрос. Я не разбирался подробно в штатных средствах программирования клонов Mitsubishi, но предполагаю, что в EEPROM могут храниться энергонезависимые переменные программы, либо может быть даже сама программа ПЛК. EEPROM не задействует аппаратный I2C STM32, хуже того он задействует линию SWDIO (PA13) интерфейса отладки SWD. В общем придется делить SWD с GPIO и использовать программный I2C.
Дискретный входы/выходы Xn/Yn, светодиод Run
Дискретные входы с обозначениями X0-X7 заведены на оптопары. Выходы оптопар притянуты к +3. 3В, при срабатывании оптопары вход MCU замыкается на 0. Т.е. логика в программе для дискретных входов будет инвертированная.
Дискретные выходы Y0-Y4 подключены через ключи Дарлингтона ULN2003 к выходам MCU. Логика управления прямая. Управление светодиодом Run инвертированное.
Аналоговые входы/выходы ADn/DAn, два потенциометра настроек
Схема аналоговых каналов без подробностей. Необходимый минимум есть на электрической схеме. У части аналоговых входов (0-20мА) впаян параллельный резистор на 500Ом, преобразующий внутри токовый сигнал 0-20мА в 0-10В. Кроме того на плате присутствует пара подстроечных резисторов (делителей напряжения) синего цвета. Из оригинального описания ПЛК они предназначены для ручного задания значений некоторых регистров, которые можно использовать в программе ПЛК. В MCU они также заведены на АЦП входы. Напряжение с двух аналоговых выходов ЦАП MCU через операционные усилители преобразуется в сигнал 0-10В.
Ручной переключатель режима Start/Stop
На электрической схеме тоже обозначен. Либо притягивает вход MCU к +3.3В либо к 0. Но вот сам вход MCU уже представляет больший интерес. Переключатель подключен к порту PB2/BOOT1. Таким образом этим переключателем можно задавать состояние входа BOOT1 для управления режимом внутреннего загрузчика STM32. Запомним это.
Цепь мониторинга питания
Производитель, не сильно мудрствуя, сделал мониторинг питания контроллера на стабилитроне и делителе напряжения, подключенных прямо к входному напряжению +24В. На одной из фотографий выше показано, где расположены элементы этой цепи. Тут нет оптической развязки, и я не рекомендую питать контроллер напряжением выше +24В, чтобы не спалить вход MCU, напряжение на котором уже близко к 5В. Благо данный вход GPIO толерантный к 5В. Но такая цепь (раз она уже есть) позволяет отлавливать обесточивание ПЛК, а буферные конденсаторы обеспечивают несколько секунд работы без питания. Таким образом можно успеть сделать запись сохраняемых параметров в EEPROM, что я и сделал в своей программе-примере.
RTC
Часы реального времени являются частью MCU STM32F103VCT6. Плата имеет всю необходимую обвязку (кварцевый резонатор, батарею) для их функционирования. На схеме эти цепи не отражены.
Интерфейс RS-485
Заведен на UART4 MCU. Линия контроля передачи DE делит линию PA14 с SWCLK интерфейса отладки SWD аналогично EEPROM.
Интерфейс RS-232
Под RS-232 задействован USART1 MCU. Его можно будет использовать как угодно. В том числе для подключения к MCU через UART в STM32CubeProgrammer и загрузки прошивки как альтернатива SWD, в том числе в Arduino IDE. Для подключения вам понадобится USB-Serial адаптер либо аппаратный COM в ПК.
BOOT0 / BOOT1
У STM32 есть встроенный загрузчик прошивки, который позволяет удалять и заливать прошивку через USART1. Это очень удобно, т.к. USART1 на ПЛК как раз выведен на RS-232. Это касается и самых простых ПЛК, типа FX1N-10MT, которые не имеют SWD. К слову FX1N я тоже прошивал и программировал в STM32CubeProgrammer и Arduino IDE как раз через USART1.
Для загрузки через USART1 до включения питания контроллера необходимо замкнуть вход BOOT0 на +3.3V, удерживать при подключении и работе в STM32CubeProgrammer. По умолчанию он подтянут к земле через 10кОм.
А вот BOOT1 необходимо притянуть к 0, если это не так. Иначе не будет работать загрузка через UART. У FX1N-10MT это уже сделано в схеме, У FX3U это делается переключателем Start/Stop.
Нам нужны режимы либо User Flash memory, либо System memory.
Опять немного про FX1N-10MT. У меня есть еще такой контроллер, как на самой первой фотографии. Если присмотреться, можно увидеть там ниже центра 2 контактные площадки. С этим контроллером повезло, эти площадки как раз под джампер, подключающий +3.3В к BOOT0. Не у всех ПЛК она есть, на FX3U ее нет. Я впаял туда штырьевые контакты и поставил джампер. Теперь достаточно установить перемычку, включить питание ПЛК и можно заливать в него прошивку через UART. Вообще возможно про FX1N-10MT напишу отдельную заметку.
Так вот у рассматриваемого в статье ПЛК FX3U BOOT0 не выведен на какую либо контактную площадку, поэтому придется допаиваться к резистору, если BOOT0 вам нужен. В случае использования SWD трогать BOOT0 не обязательно, но есть нюансы, о которых позже.
Перемычка +3.3В<->BOOT0 (только на время прошивки)Интерфейс SWD или ради чего все затевалось
Когда я выбирал ПЛК, специально искал плату с контактными площадками с подписями типа PA13, PA14, RST. Ведь это порты отладочного интерфейса STM32 SWD, который позволяет делать что угодно с MCU. На многих ПЛК эти контакты есть. Мои ожидания оправдались. Эти контакты действительно были линиями SWD, но не без сюрприза. На плате оказались подписи P13, P14, и они были перепутаны местами по отношению к PA13, PA14. Кроме того у меня оказалось 6 контактных площадок вместо 5 как на всех виденных фотографиях других ПЛК, на некоторых было всего 4. Последний контакт оказался заведен на EEPROM. Таким образом можно в принципе копировать EEPROM внешним программатором, т.к. все его линии в итоге выведены на площадки. На своей плате я напаял 5-штырьковый разъем, на фото можно увидеть пустующий 6 контакт. Распиновка есть на электрической схеме.
Мы определились с периферией и интерфейсами программирования. А как заставить все это «петь и танцевать», во второй части. Продолжение следует.
Dan Mitsu Porn Pictures, XXX Photos, Sex Images #906807
Dan Mitsu Porn Pictures, XXX Photos, Sex Images #906807 — PICTOA НовыйСвязанный контент
Итак, вы пришли послушать альбом Дэна Мицу. Отлично
выбор! Это один из самых популярных альбомов на нашем сайте. Оно имеет
все, что вам нужно, чтобы потратить некоторое время на взбивание мяса и дать
ваше воображение разыграется. На сайте так много горячих фотоальбомов
сеть – бесчисленное количество миллионов порно фото – но наша философия такова
организуйте их прямо здесь, чтобы вам не приходилось слишком долго нажимать и просматривать
для того, чтобы иметь то, что вы действительно хотите. Кроме того, какой смысл
найти только одну горячую картинку, когда их наверняка больше? Мы чувствуем
так же, как и вы: важно, чтобы все они были в одном
место, чтобы вы могли получить максимум удовольствия с минимумом хлопот. В
Кроме того, в dan mitsu довольно легко переключаться между разными фотографиями.
галерея – просто нажмите на текущую фотографию, и вы увидите
следующий, и все фотографии располагаются сразу под основным изображением. Из
конечно, вы всегда можете ознакомиться с некоторыми из наших предложений; если ты любишь
этот альбом, скорее всего, вы будете полностью очарованы другими!
Неважно, что ты здесь из-за девушек, специфических
поза, в которой они выступают, то, как они взаимодействуют с кем-то или
вы просто случайно просматриваете, чтобы повеселиться; наш сайт
наполнены энергией и бодростью этих
Загрузить | Уведомление о защите авторских прав в цифровую эпоху | Условия использования | Свяжитесь с нами
18 U.S.C. 2257 Заявление о соответствии требованиям к ведению записей
UGJ Японское порно Mitsu Dan 壇蜜 Фото 8!
Р18 Карибский Спермания МинетЯпония УраЛесбиянки ДрочкаЯпония НогиЯпония ТокиоFaceFuck джавхд Бесплатные камеры 日本語
Дом джавхд JJGirls JavTube японские красавицы Яв Галерея Бесплатное живое шоу красотка горячие фото
Знакомство с искусством СексАрт хентай трансвистит транссексуалы Азии ледибой Европейский филиппинский Тайский БарДевушка Лесби Колготки Анальный буккаке Нога
J Sex Network Jav CosPuri 4K JavHD Exclusive HandJob Japan Jav SpermMania Jav UraLesbian Chaturbate Cams