![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Выложил окончательный код на гитхаб. Входы/выходы работают, АЦП опрашивает. ЦАП за ненадобностью не задействовал, аналогично с RS-485 (т.к. когда на борту есть CAN, 485 может понадобиться разве что какое-нибудь УГ модбасовое в качестве раба подключить). Дальнейшую модификацию кода каждый по своим надобностям может делать (или мне небольшую денежку заплатить).
В итоге из неюзабельного куска говна получился кусок говна юзабельный (увы, все-таки там все так плохо с защитами, что лучше в серьезные места не ставить).
Напомню публикацию, которая мне помогла на первых порах. Сегодня окончательно прозвонил нужные ноги, добавил в список набортный светодиод (как X8, которого все равно нет), добавил в опрос АЦП набортные реостаты (эти синие в левом углу платы) - ХЗ, на кой черт их впендюрили, если все равно настройки как бы во флеше или даже внешней EEPROM сохранялись.
Прошивать пришлось через USART-бутлоадер, т.к. st-link все равно только в режиме бутлоадера почему-то работал. Чтобы не дергать туда-сюда питание, я еще кнопочку к NRST припаял.
Выложил на ютупчик видосик. Жаль, нет у меня какого-нибудь крепежа лопатофона ко лбу, а "action camera", что у меня есть, дает настолько паршивое видео, что использовать ее совсем нецелесообразно.
Как оказалось, питание на концевики идет через диодик напрямую с входа, а выход "COM" замкнут на землю! Очень оригинальное решение: на кой черт тогда, спрашивается, было опторазвязки паять, если земля платы голой жопой наружу торчит на неизвестно какое расстояние?
Даже к релюхам есть вопросы: на обмотке нет обратного диода, чтобы защитить дарлингтоны (а тут бросок может быть вольт 100, а то и больше, когда отключаешь).
Два красненьких то ли диода, то ли стабилитрона (скорей, второе) слева от MCP1251, наверное, пытается защитить выходы ЦАП. Я с ЦАПами не связывался - гораздо чаще ШИМ нужен, а не аналог.
Понятно, что с такими косяками никто и не думал о гальваноразвязке всех интерфейсов: 232, 485 и CAN. На CAN даже диодную защиту не воткнули, как сделали с 232 и 485.
Протокол управления описан на гитхабе. Как обычно, текстовый. По CAN такой же, как в других моих железках: 2 байта - код команды, 1 байт - код параметра (старший бит - метка геттера), 1 байт - код ошибки, 4 байта - данные.
CAN ID я сразу 2 сделал: один на вход, другой - на выход. Посмотрел где-то на ютубе видосик, как китаец две таких штуки по CAN соединил, и, щелкая на одной концевиками, управлял релюхами на другой. Здесь как только состояние концевиков изменяется (с настраиваемой задержкой для ликвидации дребезга), в сеть отправляется сообщение с выходным идентификатором. И если второй железке входной ID сделать равным выходному первой, да заменить код команды "концевики" на код команды "релюшки" на первой, то получится связанная пара устройств.
Почему сразу не выложили нечто подобное - не понимаю. Ведь только теперь этот "ПЛК" стал настоящим ПЛК, т.к. его стало возможным программировать по-человечески — на любимой сишечке. Без ограничений, накладываемых "языками ПЛК".
В итоге из неюзабельного куска говна получился кусок говна юзабельный (увы, все-таки там все так плохо с защитами, что лучше в серьезные места не ставить).
Напомню публикацию, которая мне помогла на первых порах. Сегодня окончательно прозвонил нужные ноги, добавил в список набортный светодиод (как X8, которого все равно нет), добавил в опрос АЦП набортные реостаты (эти синие в левом углу платы) - ХЗ, на кой черт их впендюрили, если все равно настройки как бы во флеше или даже внешней EEPROM сохранялись.
Прошивать пришлось через USART-бутлоадер, т.к. st-link все равно только в режиме бутлоадера почему-то работал. Чтобы не дергать туда-сюда питание, я еще кнопочку к NRST припаял.
Выложил на ютупчик видосик. Жаль, нет у меня какого-нибудь крепежа лопатофона ко лбу, а "action camera", что у меня есть, дает настолько паршивое видео, что использовать ее совсем нецелесообразно.
Как оказалось, питание на концевики идет через диодик напрямую с входа, а выход "COM" замкнут на землю! Очень оригинальное решение: на кой черт тогда, спрашивается, было опторазвязки паять, если земля платы голой жопой наружу торчит на неизвестно какое расстояние?
Даже к релюхам есть вопросы: на обмотке нет обратного диода, чтобы защитить дарлингтоны (а тут бросок может быть вольт 100, а то и больше, когда отключаешь).
Два красненьких то ли диода, то ли стабилитрона (скорей, второе) слева от MCP1251, наверное, пытается защитить выходы ЦАП. Я с ЦАПами не связывался - гораздо чаще ШИМ нужен, а не аналог.
Понятно, что с такими косяками никто и не думал о гальваноразвязке всех интерфейсов: 232, 485 и CAN. На CAN даже диодную защиту не воткнули, как сделали с 232 и 485.
Протокол управления описан на гитхабе. Как обычно, текстовый. По CAN такой же, как в других моих железках: 2 байта - код команды, 1 байт - код параметра (старший бит - метка геттера), 1 байт - код ошибки, 4 байта - данные.
CAN ID я сразу 2 сделал: один на вход, другой - на выход. Посмотрел где-то на ютубе видосик, как китаец две таких штуки по CAN соединил, и, щелкая на одной концевиками, управлял релюхами на другой. Здесь как только состояние концевиков изменяется (с настраиваемой задержкой для ликвидации дребезга), в сеть отправляется сообщение с выходным идентификатором. И если второй железке входной ID сделать равным выходному первой, да заменить код команды "концевики" на код команды "релюшки" на первой, то получится связанная пара устройств.
Почему сразу не выложили нечто подобное - не понимаю. Ведь только теперь этот "ПЛК" стал настоящим ПЛК, т.к. его стало возможным программировать по-человечески — на любимой сишечке. Без ограничений, накладываемых "языками ПЛК".