Программирование ПЛК Овен

Когда-то пришлось попробовать свои силы в программировании контроллеров из семейства Овен с помощью CoDeSys – специальной среды для разработки под программируемые контроллеры.

Как работать с контроллером через modbus протокол – подробно и аж с картинками.

Работа с Овен контроллером на C# – обсуждение в форуме.

Работа с Овен контроллером на Delphi (затрагиваются вопросы передачи данных через tcp) – тема в форуме.

Примеры программ на CoDeSys свалены в этой теме.

И, на последок, – просто шикарнейшая статья про работу с микроконтроллерами на C\C++.

TODO: по моему у меня тоже были какие то семплы вроде опроса/изменения регистров ПЛК через tcp/modbus – если найду выложить сюда

Полезные on-line сервисы

Список online-утилит которые умеют делать то, что лень запоминать. Будет обновляться.

Гугл не только умеет выступать в роли калькулятора если вы введете в строке поиска пример для рассчета, но и на лету переводить дюймы и фунту в метры и килограммы.

Сетевой калькулятор лихо подсчитывает маску подсети и тп – http://jodies.de/ipcalc

Получить хекс-код любого цвета – http://jdstiles.com/colorchart.html

Получить хекс-кода цвета на основе выбора (стандартная “пипетка”) – http://www.colorpicker.com/

Сервис откуда бесплатно можно скачать иконки в разных размерах и форматах – http://findicons.com/

Приятный редактор для сниппетов java-script, html, css – www.jsfiddle.net

Конвертер дат (GMT, UTC, New York, London – все переведет в родное московское время) – http://www.worldtimeserver.com для непосредственного перевода удобно использовать эту ссылку

Неплохой фотошоп-лайк он-лайн редактор изображений – http://pixlr.com/

Прекрасный онлайн тестер для регэкспов – http://regexpal.com/

Прокси-анонимайзеры:

http://anonymouse.org/
http://hidemyass.com/

Прекрасный визуализатор OID-MIB от cisco (там же можно просмотреть полное дерево OID в MIB):

http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en

http://10minutemail.com/ – нужно где-то зарегистрироваться и не хочется светить свое мыло? данный сервис предоставляет вам почтовый ящик на 10 минут (которые можно продлить)

http://mathserfer.com/ – высшая математика в рамках первых курсов вузов – выижмка из конспектов + ссылки на учебники – Беклемишев, Позняк, Демидович. Кроме теории есть возможность решать задачки on-line – пределы, производные, линейные уравнения, етс. За предоставление полного решения а не окончательного ответа просят внести скромную мзду.

http://oeis.org/ – наткнулись на числовую последовательность и хотите узнать о ней больше (оптимальная формула вычисления i-го элемента, основные свойства) – данная online-энциклопедия содержит обширный список самых экзотичных последовательностей.

http://mathurl.com/ – создание и редактирование математических формул с возможностью “расшаривания” постоянных ссылок на них

http://www.debuggex.com/ – еще один онлайновый сервис для отладки регулярных выражений. Интересен визуальным(!) отладчиком и подсказками.

UPDATE 12.03.2013

Ideone – онлайн-компилятор целого выводка языков (включая не только web-ориентированные, но и такие мастодонты как C/C++, C#, Java и т.п.) Есть ограничения на доступную память – 256 мегабайт и время компиляции. Удобно если надо что-то быстро проверить.

Cloud9 IDE – новый стандарт для инструментов совместной разработки под Web. Полноценная IDE со всякими плюшками вроде отладки, code completion, интеграции с github, bitbucket и т.д.

Codenvy IDE – еще одна IDE для Web-разработки, позволяющая использовать всю мощь облачной инфраструктуры для разработки HTML5/JavaScript/Ruby/PHP/etc приложений. Позволяет легко разворачивать приложения на популярных облачных сервисах – AWS Elastic Beanstalk, Cloud Foundry, Heroku и др.

вот в этом обзоре – http://habrahabr.ru/post/159999/ упоминаются остальные online-среды разработки под web. Отдельного внимания заслуживают комментарии – встречается любопытные ссылки.

pythonanywhere.com – Среда разработки на python’е. Предоставляются на только возможности IDE и взаимодействия команды в рамках проекта, но также и услуги хостинга приложений.

repl.it – элегантный online-интерпретатор построенный по принципу Read-Eval-Print-Loop. Поддерживает 15 языков следующих данной концепции среди которых QBasic, Forth, Scheme и Brainfuck.

sqlfiddle.com – решительно полезный инструмент для отладки SQL-запросов. Поддерживает диалекты специфичных БД – MS SQL, PostgreSQL, SQLite, MySQL, Oracle (включая PL SQL).

coderun.com – а как насчет online-версии Visual Studio? Данная IDE поддерживает готовые проекты ASP.NET, WCF, Silverlight и WPF.

http://code.ohloh.net/ – все сниппеты кода ищутся там по опенсурсным проектам и коду гуляющему по интернету. Можно сужать поиск до конкретных методов класса или интерфейса.

https://www.draw.io/ – легкий и удобный online-редактор для создания диаграмм, схем и даже простеньких мокапов (UML, BPMN).

https://w3dt.net/ – набор бесплатных онлайн утилит для поиска и устранения неисправностей для ваших сетевых ресурсов

http://www.justinmind.com – удобный и легкий в использовании инструмент для прототипирования приложений (Web, Mobile, Desktop). Кроме всего прочего умеет генерит интерактивные демки, которые можно расшарить для дизайнера или девелоперов. Для использования правда придется установить клиентское приложение.

www.todoist.com – простой и удобный онлайн планировщик забесплатно.

xe.com – онлайн конвертор любой валюты

https://panopticlick.eff.org/ – для параноиков, на тему большего брата – проверка уникальности “следов” вашего браузера в интернете

https://www.found.no/play – fiddle for Elastic Search, define structure of document, mapping and tune your queries

http://www.json-generator.com/ – it does what it claims, generate valid json file based on JavaScript object

http://requestmaker.com/ – simple tool to test web API, you can set header, body and type of request

https://www.mockable.io/ – backend guys do not provide API, but you want to test your app? you can create mock web-service, define body of request and much more with this handy tool

http://rasterbator.net/ – convenient way for subdividing of huge images for printing at A4 printer without necessity to use a lens to find out details of image

http://doodle.com// – handy online tool for meeting planning

Как подменить браузер для сайта – подменяем user-agent

К сожалению, встречается такая категория сайтов, которые брезгливо отказываются работать с тем конкретным браузером который у нас установлен. Не приходилось читать сообщение вида “Для работы необходим Microsoft Internet Explorer версии X.0 и выше.” в таких случаях выхода два – матерясь ставить пресловутый эксплорер или, если по каким то причинам это не возможно (ну например у вас линукс или мак) – попробовать подменить user-agent в вашем браузере – строчку идентифицирующую вид вашего браузера.

Подробная хорошая инструкция как это сделать описана здесь – как подменить user-agent в браузере.

Как послать snmp-trap

Иногда бывает необходимо проверить как обрабатывают snmp-шные трапы программы-демоны типа snmptrapd (из пакета утилит net-snmp), а естественной ситуации когда возникает snmp-трап ждать долго.

Как послать snmptrap (snmp-ловушку):

snmptrap -v 1 -c <community string> <target ip> ‘enterprise-oid‘ ‘simulated agent ip’ generic-trap specific-trap ‘up-time’ [oid type value]

где:

  • community string – строка сообщества (простейший “пароль”)
  • target ip – адресс хоста на который мы отправляем трап
  • enterprise-oid – оид события который мы хотим симулировать
  • simulated agent ip – ip-адрес с которого мы симулируем отправку события
  • generic-trap – общий тип сгенерированного трапа
  • specific-trap – подтип сгенерированного трапа (поле TRAP-TYPE в описании миба)
  • up-time – аптайм
  • oid – обычный оид – информация которую мы хотим передать snmp-демону
  • type – идентификатор типа данных – i – Integer, s – String остальное описано там
  • value – непосредственно данные по оиду

причем пар generic и specific трапов может быть несколько

пример:

snmptrap -v 1 -c public 127.0.0.1 ‘1.2.3.4.5.6’ ‘192.192.192.192’ 6 99 ’55’ 1.11.12.13.14.15 s “teststring”

UPDATE 02.10.2013

Если необходимо выслать какой то определенный трап к команде выше необходимо добавить путь к миб-файлам, после чего можно использовать символьное описание трапа. Для теста подойдут события, описанные в стандартном мибе, поставляющемся с библиотекой net-snmp – NET-SNMP-EXAMPLES-MIB.

snmptrap -M /path-to-net-snmp-folder/mibs -mAll -v1 -c public <target-ip> NET-SNMP-EXAMPLES-MIB::netSnmpExampleNotification “” 6 17 “” SNMPv2-MIB::sysLocation.0 s “sample of trap message

Как запустить приложение с удаленного компьютера на своем X-сервере

При работе с удаленным компьютером через ssh периодически возникает ситуация когда надо запустить gui-приложение с удаленного компьютера, на котором удаленный рабочий стол
не настроен, иксы сломаны или еще что-нибудь. Для этого всего-то и надо изменить настройки x-сервера на удаленной машине так, чтобы gui приложения него запускались на вашем компьютере.

Как запускать приложения с удаленного компьютера через ssh на своем X-сервере

1. Удалить строку “-nolisten tcp” в конфигурационном файле вашей DE (чтобы ваш X-сервер принимал внешние tcp-соединения)
2. Перезагрузить иксы (чтобы изменения вошли в силу)
3. Ввести команду “xhost +” (указываем что все внешние хосты могут использовать наш X-сервер для отображения своих красивых окошек)

на удаленном компьютере:

1. export DISPLAY=your.ip.addr.ess:0 (указать какоий дисплей использовать для всех приложений из текущей консоли)

Указанный ниже пример для рабочей станции с установленным kde4

1. На своем компьютере:

1) vim /etc/kde4/kdm/kdmrc
2) в нем найти и удалить строку ” -nolisten tcp”
3) после чего перезагрузить иксы
4) набрать команду xhost +

2. На удаленном компьютере, в терминале откуда собираетесь запускать приложения

1) export DISPLAY=your.ip.addr.ess:0 (перенаправляем весь вывод на наш дисплей)
2) для проверки запускаем kde-шные часики – вводим в удаленном терминале xclock

Если все сделали правильно – должны появиться часики – простейшее gui-приложение, запущенное на удаленном компьютере и отображаемое посредством наших иксов.

Программирование в Vim

vi editor - description of the main commands

описание основных команд редактора vi - кликабельно

Vi – редактор который умеет работать в двух режимах – пищать и не пищать. (c)

Самое главное – если на экране происходит что-то не то, не понятно как выйти из vim, непонятно как отменить все изменения в vim – жмите Esc до победного писка, а потом вводите :q! и жмите Enter.

Любителям современных IDE-комбайнов, которые, кажется, заменяют людям называющим себя программистами головы, он может показаться страшным архаизмом времен, когда интернет был юн а компьютеры были в диковинку. Но, не смотря на свой обескураживающий поначалу консольный вид, этому бодрому старичку вполне под силу завоевать ваши симпатии – бесконечный набор плагинов и широчайшие возможности настройки под себя – делают его верным соратником в деле редактирования каких-бы то ни было текстов. Тем более, порой, он вообще единственное что есть в вашем распоряжении. Тут хочется заметить про существенные отличия vi, наличиствующего на любой nix-like системе от vim (расширени vi) – достаточно существенны и голый vi как таковой используется, в основном, из безысходности, так как vim вполне подойдет для работы с малыми и средними по объему проектами.

Работа с вимом – подробные видио-инструкции на английском – тут.

Еще плагины:

автодополнение для vim – insenvim.sourceforge.net/

быстрый переход к определению метода\функции для vim – ctags.sourceforge.net/

работа с деревом проекта – The nerd tree

оптимизация комментирования – The nerd commenter

vim chaet sheet extended
расширенная шпаргалка по vim

напоминалка:

1) темный терминал :set background=dark

2) подсветка синтаксиса :syntax on

3) перенастроить его под си :set filetype=с (при условии что по адресу /usr/share/vim/vim6*. есть файл с.вим)

4) запустить make (ошибки валит в quick fix window) :make

5) открыть quick fix window :cw

6) поиск (все найденное валит в quick fix window) :grep, :vimgrep

Напоследок, глобальные статьи по настройке vim:

Советы по Vim (на английском)

Советы по Vim на русском: тут и тут

Блог на русском – http://allaboutvim.blogspot.com

Любопытный и подробный пост на хабре – http://habrahabr.ru/blogs/vim/53435/

И, по традиции доброй половины страничек с кратким описанием вима,  видео от его создателя: 7 привычек для эффективного редактировани текста.

Linux – tar – как распаковать gz bz2

Как распаковать bz2 файлы:

tar -xvfj files.tar.bz2

Как распаковать gz файлы:

tar xvfz *.tar.gz

Как заархивировать папку с помощью tar:

tar -cvzf <archive-name> <Path-to-target-folder>

пример:

tar -cvzf /tmp/my-archive /tmp/my-dir

Печать документов OpenOffice на java

Подробное описание по тематике “Печать документов OpenOffice на java” находил тут.
А вообще масса полезной инфы – там однако искать там что-то – сам черт ногу сломит.

некоторые полезные снипеты

1. Как установить ориентацию печати для документов OpenOffice на java

protected void storeDocComponent(XComponent xDoc, String storeUrl, boolean landscape) throws java.lang.Exception
{
    XStorable xStorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, xDoc);
    PropertyValue[] storeProps = new PropertyValue[0];
    if(landscape)
    {
        XPrintable xPrintable = (XPrintable)UnoRuntime.queryInterface(XPrintable.class, xDoc);
        PropertyValue[] printerDesc = new PropertyValue[1];
        printerDesc[0] = new PropertyValue();
        printerDesc[0].Name = “PaperOrientation”;
        printerDesc[0].Value = PaperOrientation.LANDSCAPE;
        xPrintable.setPrinter(printerDesc);
    }
    xStorable.storeAsURL(storeUrl, storeProps);
}

2. Как установить формат печати для документов OpenOffice на java

protected void storeDocComponent(XComponent xDoc, String storeUrl, boolean landscape) throws java.lang.Exception
{
    XStorable xStorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, xDoc);
    PropertyValue[] storeProps = new PropertyValue[0];
    if(landscape)
    {
        XPrintable xPrintable = (XPrintable)UnoRuntime.queryInterface(XPrintable.class, xDoc);
        PropertyValue[] printerDesc = new PropertyValue[1];
        printerDesc[0] = new PropertyValue();
        printerDesc[0].Name = “PaperFormat”;
        printerDesc[0].Value = com.sun.star.view.PaperFormat.A3;
        xPrintable.setPrinter(printerDesc);
    }
    xStorable.storeAsURL(storeUrl, storeProps);
}

разумеется, можно и в одной функции выставлять сразу несколько свойств печати

3. Как в OpenOffice подогнать документ в заданное число страниц

    ScaleToPages:=3;//подгоняем на 3 страницы

OpenOffice – работа с OCalc на java – несколько полезных неочевидностей

1. Как создать текстовый курсор для OpenOffice OCalc на java

    cell =xSpreadsheet.getCellByPosition(0,1);
    XText xText = (XText) UnoRuntime.queryInterface(XText.class, cell);
    XTextCursor xTextCursor = xText.createTextCursor();
    // insert the string
    xText.insertString(xTextCursor, “hello open office!!”, false);  

2. Как объединить текстовые ячейки для OpenOffice OCalc на java

    OW.Tables[0].CellRangeByName[‘A2:A4’].MergeRange;

3. Как указать что заголовки не должны скролироваться для OpenOffice OCalc на java

    FreezeAtPosition – заголовки морозит

4. Как при формировании отчета отображать шапку на каждом листе для OpenOffice OCalc на java

    OC.Sheets[0].CellRange[0,0,0,0].SetAsTitleRows;
    OC.Sheets[0].CellRange[0,0,0,0].SetAsTitleColumns;

Укрощение OpenOffice OCalc на java

копать начинать отсюда:

http://wiki.services.openoffice.org/wiki/API/Samples/Java/Writer/TextTable

большая портянка кода жава, есть полезные сниппеты для разбора документа OpenOffice
http://giampow.blogspot.com/2009/11/openoffice-api-generic-document.html

длинный но полезный тред на скл.ру посвященный обсуждению и работе с OpenOffice
http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=405083&pg=1