PLC команды в Heidenhain
Структура команд
Команда состоит из Оператора и Операнда. Оператор идентифицирует фактическую операцию. Это заявление о том, что произошло с операндом.
Операнд содержит информацию о том, к какому содержимому памяти должна получить доступ операция.В общем случае операнд состоит из описания операнда и адреса операнда.
Если необходимо подключить два операнда, используется накопитель(accumulator).
Операнды
Маркеры (Markers) (0...9999 with iTNC 530)
M0 ... M999 - свободный, энергонезависимый(nonvolatile) (iTNC 530: можно определить область)
M1000 ... M3999 - свободный, энергозависимый(volatile)
M1900 ... M1989 - декодированная M-команда (если M4571=1)
M4000 ... M5999 - передача данных NC ↔ PLC
M6000 ... M9999 - свободный, энергозависимый(volatile)
Входа (Inputs)
I0 ... I31 - Логические устройства(Logic unit)
I64 ... I127 - 1. PL(Извлечение данных из стека данных)
I128 ... I152 - Логические устройства(Logic unit) / X46
I160 ... I175 - HR 410 / HR 332 / HRA 110 (наблюдать за параметрами MP7640, MP7645.0)
I192 ... I255 - 2. PL(Извлечение данных из стека данных)
I256 ... I319 - 3. PL(Извлечение данных из стека данных)
I320 ... I383 - 4. PL(Извлечение данных из стека данных)
Выхода (Outputs)
O0 ... O30 - Логические устройства(Logic unit)
O0 ... O7 - Логические устройства(Logic unit) / X46
O32 ... O62 - 1. PL(Извлечение данных из стека данных)
O64 ... O94 - 2. PL(Извлечение данных из стека данных)
O96 ... O111 - HR 410 / HR 332 / HRA 110 (наблюдать за параметрами MP7640, MP7645.0)
O128 ... O158 - 3. PL(Извлечение данных из стека данных)
O160 ... O190 - 4. PL(Извлечение данных из стека данных)
Счетчик (Counter)
C0 ... C31 C48 ... C79 C96 ... C127 |
C0 ... C47 C48 ... C95 C96 ... C143 |
- Counter start - Counter run - Counter enable |
MP4120.0 - 4120.31 |
MP4120.0 - 4120.47 |
- Заданное значение для счетчиков PLC |
Таймер (Timer)
TNC 426/430 | iTNC 530 | Описание |
T0 ... T47 T48 ... T95 T96 ... T303 |
T0 ... T47 T48 ... T95 T96 ... T999 |
- Timer start - Timer run - Timer run (вызов с модулем 9006) |
iTNC 530: С помощью ключевого слова NUMBERMP4111 = xx в OEM.SYS дополнительные машинные параметры MP4111.x (индекс x >= 96) создаются в файле параметров машины, чтобы можно было ввести время для таймера T96 и т.д.
При использовании модуля 9006 со значением параметра передачи -1 используется параметры MP4110.x/4111.x.
Byte (0...9999, 8-bit)
B0 ... B127 - свободный, энергонезависимый(nonvolatile) (iTNC 530: можно определить область)
B128 ... B2047 - передача данных NC ↔ PLC
B2048 ... B9999 - свободный, энергозависимый(volatile)
Word (0...9998, 16-bit)
Wxxxx
см. Byte, адрес операнда (xxxx) /, кратный 2
Double word (0...9996 ,32-bit)
Dxxxx
см. Byte, адрес операнда (xxxx) /, кратный 4
Constant
K-2147483647 ... +2147483647
K$80000001 ... K$7FFFFFFF
Индексный регистр (Indexregister)
Mn[X] | Operanden-Nummer = n + X |
In[X] | Operanden-Nummer = n + X |
On[X] | Operanden-Nummer = n + X |
Cn[X | Operanden-Nummer = n + X |
Tn[X] | Operanden-Nummer = n + X |
Bn[X] | Operanden-Nummer = n + X |
Wn[X] | Operanden-Nummer = n + 2*X |
Dn[X] | Operanden-Nummer = n + 4*X |
Sn[X] | String-Nummer = n + X |
S#Dn[X] | Dialogtext-Nummer = n + X |
S#En[X] | Fehlertext-Nummer = n + X |
Sn^X | Teilstring-Nummer = n + X |
Операции (Operations)
Загрузка и сохранение команд (Load and Store Commands)
L | Загрузка(Load) |
LN | Нет Загрузки(Load Not) |
L- | Загрузить два дополнения(Load Two's Complement) |
LB | Загрузка Байта(Load Byte) |
LW | Загрузка Слова(Load Word) |
LD | Загрузка двойного Слова(Load Double Word) |
LX | Скопируйте содержимое индексного регистра в накопитель Слов(Copy contents of the index register into the word accu |
= | Присвоить (Assignment) |
=N | Не Присвоить (Assignment not) |
=- | Присвоить два дополнения(Assignment two's complement) |
=X | Скопировать содержимое слова accu в индексный регистр |
B= | Присвоить Байт(Assignment Byte) |
W= | Присвоить Слово(Assignment Word) |
D= | Присвоить Двойное Слово(Assignment Double Word) |
Установка команд (Set Commands)
S | Set |
R | Reset |
SN | Set not |
RN | Reset not |
Логические команды (Logic Commands)
A | And |
AN | And Not |
O | Or |
ON | Or Not |
XO | Select Or |
XON | Select Or Not |
Арифметические Команды (Arithmetic Commands)
+ | Add |
- | Subtract |
х | Multiply |
/ | Divide |
MOD | Remainder |
Сравнения (Comparisons)
== | Equal to |
< | Less than |
> | Greater than |
<= | Less than or equal to |
>= | Greater than or equal to |
<> | Not equal to |
Скобки и Логические команды (Brackets and Logic Commands)
A[ | And [ ] |
AN[ | And Not [ ] |
O[ | Or[ ] |
ON[ | Or Not [ ] |
XO[ | Exclusive Or [ ] |
XON[ | Exclusive Or Not [ ] |
Скобки и Арифметические Команды (Brackets and Arithmetic Commands)
+[ | Add [ ] |
-[ | Subtract [ ] |
x[ | Multiply [ ] |
/[ | Divide [ ] |
MOD[ | Remainder [ ] |
Скобки и Сравнения (Brackets and Comparisons)
==[ | Equal to [ ] |
<[ | Less than [ ] |
>[ | Greater than [ ] |
<=[ | Less than or equal to [ ] |
>=[ | Greater than or equal to [ ] |
<>[ | Not equal to [ ] |
] | Close brackets |
Команды перемещения (Move Commands)
<< | Ход влево(Move left) |
>> | Ход вправо(Move right) |
Команды работы с Битами (Bit Commands)
BS | Установить Бит(Set Bit) |
BC | Сбросить Бит(Reset Bit) |
BT | Test Bit |
BSX |
Установить бит в соответствии с содержимым индексного регистра (Set Bit according to the contents of the index register) |
BCX |
Бит сброса в соответствии с содержимым индексного регистра (Reset Bit according to the contents of the index register) |
BTX |
Тестовый бит в соответствии с содержимым индексного регистра (Test Bit according to the contents of the index register) |
Команды увиличения (Increment Commands)
INC | Increment operand by 1 |
INCX | Increment index by 1 |
INCW | Increment word accu by 1 |
Команды уменьшения(Decrement Commands)
DEC | Decrement operand by1 |
DECX | Decrement index by 1 |
DECW | Decrement word accu by 1 |
Операции со Стеком(Stack Operations)
PS |
Загрузить данные в стек данных (Load data onto the data stack) |
PL |
Извлечь данные из стека данных (Fetch data from the data stack) |
PSL |
Загрузить логический блок в стек данных (Load logic accu onto data stack) |
PSW |
Загрузить word accu в стек данных (Load word accu onto data stack) |
PLL |
Извлечь логику accu из стека данных (Fetch logic accu from data stack) |
PLW |
Извлечь слово accu из стека данных (Fetch word accu from data stack) |
PSX |
Поместить содержимое индексного регистра в стек (Place contents of index register onto the stack) |
PLX |
Загружает двойное слово из стека в индексный регистр (Load double word from stack into the index register) |
Команды перехода (Jump Commands)
JP |
Безусловный переход (Unconditional jump) |
JPT |
Переход если логическая accu = 1 (Jump if logic accu = 1) |
JPF |
Переход если логическая accu = 0 (Jump if logic accu = 0) |
CM |
Вызов модуля (Call module) |
CMT |
Вызов модуля если логическое значение accu = 1 (Call module if logic accu = 1) |
CMF |
Вызов модуля если логическое значение accu =0 (Call module if logic accu = 0) |
EM |
Конец модуля - конец программы (End of module - end of program) |
EMT |
Конец модуля - конец программы, если логическое значение accu = 1 (End of module - end of program if logic accu = 1) |
EMF |
Конец модуля - конец программы, если логическое значение accu=0 (End of module - end of program if logic accu = 0) |
LBL |
Метка перехода (Jump label) |
Case Operations
CASE |
Вызов индексированного модуля (Indexed module call) |
ENDC |
Завершить вызов индексированного модуля (End indexed module call) |
Условное Выполнение Программы (Conditional Program Execution)
IFT |
Выполнить следующую последовательность программ, если логическое значение accu = 1 (Execute following program sequence if logic accu = 1) |
IFF |
Выполнить следующую последовательность программ, если логическое значение accu = 0 (Execute following program sequence if logic accu = 0) |
ELSE |
Выполнить альтернативную последовательность программ (Execute alternative program sequence) |
ENDI |
Конец последовательности программ (End of program sequence) |
Цикл программы (Program Loop)
REPEAT |
Повторить следующую последовательность программ (Repeat the following program sequence) |
UNTILT |
до логического accu = 1 (until logic accu = 1) |
UNTILF |
до логического accu = 0 (until logic accu = 0) |
WHILET |
Выполнить следующую последовательность программ, если логическое значение accu = 1 (Execute the following program sequence if logic accu = 1) |
WHILEF |
Выполните следующую последовательность программ, если логическое значение accu = 0 (Execute the following program sequence if logic accu = 0) |
ENDW |
Конец последовательности программ, возврат к началу (End of program sequence, return to beginning) |
Выполнение строки (String Execution)
L(STRING) |
Загрузить строку (Load string accu) |
+(STRING) |
Добавить строку (Add a string) |
=(STRING) |
Хранить строку (Store a string) |
OVWR |
Перезаписать строку (Overwrite a string) |
== |
Равно (Equal to) |
< |
Меньше, чем (Less than) |
> |
Больше, чем (Greater than) |
<= |
Меньше или равно (Less than or equal to) |
>= |
Больше или равно (Greater than or equal to) |
<> |
Не равны (Not equal to) |
Многозадачность (Multitasking)
SUBM | Call a Submit module |
RPLY | Status interrogation of a Submit module |
CAN | Abort a Submit module |
SPAWN | Start a Spawn process |
Include PLC Program
USES | PLC-File include |
GLOBAL | Entry point for other PLC-Files |
EXTERN | Exit point in other PLC-Files |
PLC Constant Field
KFst[X] | Value from Constant field (name=st) into index register |
KFIELD | Begin Constant field (lists of constants) |
ENDK | End Constant field |
Вроде все. Что не перевел, так как не понял как правильно перевести, если кто знает как правильно черкните на почту .
Понравилась статья, поделись ей.
Работает ли они и на iTNC 640?
И второй вопрос — можно наитти мануал (PDF) для етот PLC програмнирование на 640 в Интернет?
Я не професионал, только интересуюс из етого…