Segnetics

Вернуться   Segnetics > База знаний > Библиотека

Библиотека Здесь сосредоточены познавательные статьи, раскрывающие те или иные аспекты оборудования или условий его применения

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.06.2017, 12:00   #1
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Программирование Trim5 и SMH4 на С++ без использования toolchain

Потребуется:
  • Подключение по протоколу SFTP
  • Подключение по протоколу SSH
  • Хороший текстовый редактор с выделением синтаксиса и работой в SFTP, например sublime text
  • Выход контроллера в интернет (нужен только на этапе подготовки, в работе не нужен)


Подготовка к работе:

  1. Установить консольное подключение по SSH (логин root, пароль как задано в smlogix)
  2. cp -f /etc/apt/sources.list /etc/apt/sources.list_bak - делаем бэкап списка репозиториев
  3. echo "dns-nameservers 8.8.8.8" >> /etc/network/interfaces - это настройка dns-сервера на google
  4. echo "deb http://ftp.de.debian.org/debian/ jessie main contrib non-free" >> /etc/apt/sources.list - это добавления репозитория debian
  5. apt-get update - обновление списка пакетов репозитория. Занимает продолжительное время (около 5 минут)
  6. apt-get install libmodbus-dev - установка пакета разработчиков библиотеки протокола MODBUS
  7. apt-get install libmodbus5 - установка самой библиотеки протокола MODBUS
  8. apt-get install gpp - установка компилятора
  9. apt-get install g++ - установка компилятора
  10. apt-get install make - установка утилиты make, которая позволяет компилировать большие проекты с использованием Makefile
  11. cp -f /etc/apt/sources.list_bak /etc/apt/sources.list - восстанавливаем список репозиториев из бэкапа

На этом подготовка закончена.


Компилирование и пример программы.

Для просмотра примера в этом сообщении находятся файлы mod.cpp (файл с кодом) и Makefile, а также проект SMLogix.

Содержание Makefile:

Цитата mod: mod.cpp
g++ mod.cpp -o mod -I/usr/include/modbus -lmodbus
В первой строке находится информация о том, какой проект мы собираем, а после двоеточия - из какого файла. В данном случае, название бинарного исполняемого файла будет "mod", скомпилирован он будет из файла "mod.cpp".

Во второй строке после знака табуляции (обязательное требование) идёт инструкция компилятора. По словам:
  • g++ - указание, что используется компилятор g++, который был установлен ранее (gpp)
  • mod.cpp - название файла с исходным кодом
  • -o - аргумент компилятору, указывающий на создание исполняемого файла
  • mod - название целевого файла (должен совпадать с названием в первой строке)
  • -I/usr/include/modbus -lmodbus - ссылка на расположение установленной библиотеки modbus

---

Работа примера:
  1. Загрузить проект SMLogix в контроллер, дождаться полной загрузки проекта
  2. По SFTP закачать на контроллер папку с двумя файлами: mod.cpp и Makefile. Можно создать папку /var/mod
  3. В SSH-сессии перейти в эту папку (команда cd /var/mod)
  4. Далее написать в консоли make. Компилятор должен сразу вывести вторую строку из Makefile и «задуматься» на некоторое время (5-10 секунд). После этого снова появится строка ввода команды – это значит, что всё хорошо
  5. Запустить программу. Команда ./mod
  6. Наблюдать, как на экране контроллера побегут увеличивающиеся цифры
  7. Файлы mod.cpp и Makefile можно удалить, они больше не нужны
Вложения
Тип файла: zip project_mod.zip (14.4 Кбайт, 232 просмотров)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Ilya J., 08.07.2019 в 15:40 Причина: Исправление ошибки примера.
Arsie вне форума   Ответить с цитированием
Старый 09.06.2017, 18:32   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Программирование Trim5 на С++ без использования toolchain

Не могу не отметить недостатки этого способа программирования:

Первый. Если забыть восстановить "заводские" репозитории, то первое же обновление софта контроллера приведёт к явному или неявному краху системы.

Второй. Установка компилятора приведёт к установки его более свежих библиотек. Со временем расхождение версий будет увеличиваться всё больше и больше, что тоже не очень хорошо.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 19.11.2018, 23:18   #3
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Программирование Trim5 и SMH4 на С++ без использования toolchain

Дополняю всю верхнюю писанину скриптом: coding.sh (переименовать расширение .txt в .sh)
Скрипт нужно переместить на контроллер (всё равно куда, но рекомендую в /home).
Запускать командой "bash coding.sh" из нужной папки, само собой.

Это маленький Интегратор, который может настроить среду компиляции на контроллере trim5/smh4 (g++ и make), а так же умеет создавать шаблоны программ, которые успешно компилируются утилитой make. Кроме того, легко добавит ваш скомпилированный бинарник в автозапуск. Автозапуск отсюда же можно легко удалить.

Приятный бонус - установка "скриншотилки" и простая возможность делать скриншоты с автоматическим нумерованием.

Главное: не ставьте контроллер с установленным компилятором или скриншотилкой на объект! Стабильность системы с этими дополнительными пакетами не гарантируется.

P.S. Хотел сделать ещё больше функционала, но понял, что дальше пойдёт чистой воды "вкусовщина" - как я люблю. Поэтому делать этого не стану. Сам пользуюсь этим инструментом часто. Вот довёл до ума, чтобы было не стыдно показывать. Пользуйтесь.



Миниатюры
Нажмите на картинку для увеличения

Название:  scr01.jpg
Просмотров: 4181
Размер:  22.9 Кбайт   Нажмите на картинку для увеличения

Название:  scr02.jpg
Просмотров: 4159
Размер:  29.2 Кбайт  
Вложения
Тип файла: txt coding.txt (6.4 Кбайт, 297 просмотров)


__________________
В сегнетиксе не работаю с самого начала 2019 года.

Последний раз редактировалось Gromov, 21.11.2018 в 11:46
Gromov вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Вкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Matrix, Trim5, SMH4 и USB. Решение проблем, если они есть Arsie Библиотека 4 21.09.2021 15:37
Удаленный перезапуск (перезагрузка) контролера SMH4, Trim5 monstr696 Форум Segnetics 26 18.05.2020 21:03
Помогите настроить связь между Trim5 и SMH4 (решено) HWAK SMConnect & SMConfig 10 25.04.2018 12:50
C++ без toolchain на SMH4 archi Вопросы о программировании 8 15.11.2017 15:47


Часовой пояс GMT +4, время: 21:21.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023