LINUX.ORG.RU

Посоветуйте язык программирования


0

0

Subj для решения следующей задачи: нужно написать конвертер из STL в LAD/FBD/SM и сделать средство их редактирования с сохранением в STL. На данный момент на SF есть 2 проекта - classicladder & ladderdesigner, но ни один из них не понимает STL и не знает LAD в полном объеме (FBD не знает ни один). В общем вопрос - что проще - дописать конвертер на Ц/Ц++ и доделать 1 из проектов или все переписать на TCL/TK, Python, etc? ССылки приветствуются.

Для незнакомых с автоматикой (Siemens) поясню:
STL: (Это то, что понимает их CPU, по сути assembler)
A  I 1.0
AN I 1.2
O
A  I 1.3
A  I 1.4
A(
L  IW 4
L  IW 6
>I
)
O  I 1.5
=  Q 2.0

SM
Q2.0=((I1.0&&I1.2)||(I1.3&&I1.4&&(IW6>IW4))||I1.5)

LAD (граф. представление, примерно следующее)
    I1.0  I1.2
--+--||----||-----------+----(Q2.0)
  |                     |
  | I1.3  I1.4 +-----+  |
  +--||----||--| >I  |--+
  |            |     |  |
  |       IW 6-|     |  |
  |       IW 4-|     |  |
  |            +-----+  | 
  | I1.5                |
  +--!!-----------------+

FBD (тоже граф., напоминает наши схемы на ЛА,ЛЕ, etc)
     +---+
I1.0-| & |
     |   |             +----+
I1.2-|   |-------------| >1 |
     +---+      +---+  |    |
           I1.3-| & |  |    |
    +----+ I1.4 |   |--|    |--Q2.0
IW6-| >I |------|   |  |    |    
    |    |      +---+  |    |
IW4-|    |       I1.5 -|    |
    +----+             +----+
anonymous

>или все переписать на TCL/TK, Python, etc?

Я бы сказал, что нужно это делать на Haskell. Не потому, что я привык это говорить ;-) а потому, что задача непонятная:-). Там сложные задачи приятнее решать. IMHO.

DonkeyHot ★★★★★
()

А можно по-подробнее ?

Вот LAD получить достаточно просто - парсишь STL и делаешь parse tree - это удобно делать на уже упомянутом Haskell, ну, либо на любом языке ML группы.

ARia

anonymous
()

Парсинг

Для парсинга можно применять средства вроде lex(flex) и yacc(bison). Кстати, раз здесь упомянули Python, то для него есть модуль PLY -- Python Lex and Yacc. Кроме того, Python имеет библиотеки для работы с графикой (пригодится для рисования схем) и средства функционального программирования, что позволяет в простых случаях вполне обойтись без использования "чистых" фп-языков.

DKorolkov
()
Ответ на: комментарий от anonymous

>нужно написать конвертер из STL в LAD/FBD/SM

>А можно по-подробнее ?

Подробнее не могу. Если я правильно понял и задача - сделать рисовалку/редактор похожих схем, то я бы взял DIA для редактирования, наделал бы нужных примитивов, и делал бы конверторы из/в DIA xml. Возможно придется делать "умную" программу, оптимизирующую расположение элементов и пути соединений на схеме - тут я ничем не могу помочь.

А на чем это делать - IMO все равно - везде есть готовые библиотеки обработки XML.

DonkeyHot ★★★★★
()
Ответ на: Парсинг от DKorolkov

>что позволяет в простых случаях вполне обойтись без использования "чистых" фп-языков.

Конечно, если задача сведется к простому разбору/преобразованию лучше использовать то, то знаешь лучше.

Но Parsec и HaXML выглядят _крайне_ привлекательно :-)

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

>>нужно написать конвертер из STL в LAD/FBD/SM

>Подробнее не могу. Если я правильно понял и задача - сделать рисовалку/редактор похожих схем, то я бы взял DIA для редактирования, наделал бы нужных примитивов, и делал бы конверторы из/в DIA xml. ....

А зачем xml если формат хранения STL?

anonymous
()
Ответ на: комментарий от Rock

Тогда для тех, кто в танке ж) А на эту dia можно понавесить функции компиляции, загрузки программы в контроллер etc? Или только отредактировал --> файл --> компилятор --> контроллер? И есть ли возможность прикрутить визуализацию - т.е. чтоб показывало состояние входов/выходов etc? (данные ессно из из контроллера в данный момент)

anonymous
()
Ответ на: комментарий от anonymous

>данные ессно из из контроллера в данный момент

Значит я неправильно понял задачу:-).

DonkeyHot ★★★★★
()
Ответ на: комментарий от anonymous

Про первую часть вопроса: это то как раз просто.

#!/bin/bash
fromSTL <stlfile >diafile || exit
dia diafile || exit
toSTL <diafile >stlfile || exit
и т.д.:-)

Можно и пункт меню для этого добавить - если стоит.

DonkeyHot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.