GithubHelp home page GithubHelp logo

akamaus / gcodec Goto Github PK

View Code? Open in Web Editor NEW
0.0 5.0 1.0 450 KB

a Haskell EDSL for generating Fanuc Macro B codes

License: BSD 3-Clause "New" or "Revised" License

Haskell 98.84% Shell 0.45% Makefile 0.71%

gcodec's People

Contributors

soulnicolasj avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

soulnicolasj

gcodec's Issues

Учесть зарезервированные ЧПУ коды и слова

В пользовательских макропрограммах используются следующие
зарезервированные слова:
AND, OR, XOR, MOD, EQ, NE, GT, LT, GE, LE,
SIN, COS, TAN, ASIN, ACOS, ATAN, ATN, SQRT, SQR, ABS,
BIN, BCD, ROUND, RND, FIX, FUP, LN, EXP, POW, ADP, IF,
GOTO, WHILE, DO, END, BPRNT, DPRNT, POPEN, PCLOS,
SETVN
Имена символов каждый с новой строки:

*

[
]
?
@
&
_
O

Ограничение по скобкам 5 уровней

Пример #1=SIN [ [ [#2+#3] *#4 +#5] *#6];

  • Вложение в скобки
    Скобки используются для изменения порядка выполнения действий.
    Можно использовать до пяти уровней вложения в скобки, включая
    скобки для заключения функции. При превышении пятиуровневой
    глубины вложения выдается сигнал тревоги PS0118.

Учесть диапазоны чисел

  • Постоянные значения, которые могут быть использованы в <выражении>
    от +0,00000000001 до +999999999999
    от -999999999999 до -0,00000000001
    Число значащих цифр 12 (десятичная система).
    Если этот диапазон превышен, выдается сигнал тревоги PS0012.
    неожиданные результаты.

Пример:
При попытке присвоить следующие значения переменным #1 и #2:
#1=9876543210123,456
#2=9876543277777,777

получаются значения переменных:
#1=9876543200000,000
#2=9876543300000,000

Учесть и реализовать адресные слова: G,M,F,X,Y,Z...

Основные коды:
G - подготовительные коды значение (0-199)
M - код вспомогательных функций (00-999)

Остальные коды
X,Y,Z - оси значения в микронах 100=0.100, могут быть с +/-
A,B,C - оси (не используются) значения от импульсов до градусов и микрон
S - скорость шпинделя (об/мин)
F - подача, скорость перемещения при G01(мм/мин)
D - код номера коррекции на диаметр инструмента (0-1000)
H - код номера коррекции на длину инструмента (0-1000)
P - многозадачный код (используется для обозначения параметров в разных функциях)
L - код используемый с G10 для задания адресных параметров (0-999)
N - код номера кадра (могут идти не по порядку)
Q - многофункциональный параметрический код
I,J,K - коды используемые для указания центра окружности при круговой интерполяции (в микронах)
R - для обозначения радиуса при интерполяции

Реализовать следующие функции

Функции

i=SIN[#j] Синус (в градусах)

i=COS[#j] Косинус (в градусах)

i=TAN[#j] Тангенс (в градусах)

i=ASIN[#j] Арксинус

i=ACOS[#j] Арксинус

i=ATAN[#j] Арккосинус

i=ATAN[#j]/[#k] Арктангенс (один аргумент), также может использоваться ATN.

i=ATAN[#j,#k] Арктангенс (два аргумента), также может использоваться ATN.

i=SQRT[#j] Квадратный корень, также может использоваться SQR.

i=ABS[#j] Абсолютное значение

i=BIN[#j] Преобразование из двоично-десятичного кода в двоичный

i=BCD[#j] Преобразование из двоичного кода в двоично-десятичный

i=ROUND[#j] Округление, также может использоваться RND.

i=FIX[#j] Округление до ближайшего меньшего по модулю целого числа

i=FUP[#j] Округление до ближайшего большего по модулю целого числа

i=LN[#j] Натуральный логарифм

i=EXP[#j] Экспонента по основанию e (2.718...)

i=POW[#j,#k] Степень (#j в степени #k)

i=ADP[#j] Прибавление десятичной точки

Операции:

i=#j Определение или замена переменной

i=#j+#k Сложение

i=#j-#k Вычитание

i=#j OR #k Логическое ИЛИ (побитно 32 бита)

i=#j XOR #k Логическое исключающее ИЛИ (побитно 32 бита)

i=#j*#k Умножение

i=#j/#k Деление

i=#j AND #k Логическое И (побитно 32 бита)

i=#j MOD #k Остаток (остаток A, полученный после округления #j иближайших целых чисел. Если #j - отрицательная велпредполагается, что #i - отрицательная величина.)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.