ОК! Покупаем и пробую.
Вид для печати
ОК! Покупаем и пробую.
Пример для ПР200 есть в шаблонах сетевых устройств. https://www.owen.ru/forum/showthread.php?t=25978
Дорабатываю уже имеющуюся программу в CoDeSys, делаю это в первый раз (лабораторные работы в институте не в счёт), нужно упаковать биты в dword переменную и передать в МастерСкада. В МастерСкада с распаковкой разобрался, а как всё это оформить в CoDeSys? Нашёл только запаковку 8 битов в байт - не подходит.
Кроме 8 бит в байт можно сделать 16 бит в WORD
1. Решение "в лоб"
2. По мотивам библиотеки OSCATКод:FUNCTION PACK_W : WORD
VAR_INPUT
B0: BOOL;
B1: BOOL;
B2: BOOL;
B3: BOOL;
B4: BOOL;
B5: BOOL;
B6: BOOL;
B7: BOOL;
B8: BOOL;
B9: BOOL;
B10: BOOL;
B11: BOOL;
B12: BOOL;
B13: BOOL;
B14: BOOL;
B15: BOOL;
END_VAR
VAR
END_VAR
(*Тело функции*)
PACK_W.0:=B0;
PACK_W.1:=B1;
PACK_W.2:=B2;
PACK_W.3:=B3;
PACK_W.4:=B4;
PACK_W.5:=B5;
PACK_W.6:=B6;
PACK_W.7:=B7;
PACK_W.8:=B8;
PACK_W.9:=B9;
PACK_W.10:=B10;
PACK_W.11:=B11;
PACK_W.12:=B12;
PACK_W.13:=B13;
PACK_W.14:=B14;
PACK_W.15:=B15;
Увеличиваем количество бит до 32Код:FUNCTION PACK_W2 : WORD
VAR_INPUT
B0: BOOL;
B1: BOOL;
B2: BOOL;
B3: BOOL;
B4: BOOL;
B5: BOOL;
B6: BOOL;
B7: BOOL;
B8: BOOL;
B9: BOOL;
B10: BOOL;
B11: BOOL;
B12: BOOL;
B13: BOOL;
B14: BOOL;
B15: BOOL;
END_VAR
VAR
BYTE_0: BYTE;
BYTE_1: BYTE;
END_VAR
(*Тело функции*)
BYTE_0:=SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B7),1) OR BOOL_TO_BYTE(B6),1) OR BOOL_TO_BYTE(B5),1) OR BOOL_TO_BYTE(B4),1)
OR BOOL_TO_BYTE(B3),1) OR BOOL_TO_BYTE(B2),1) OR BOOL_TO_BYTE(B1),1) OR BOOL_TO_BYTE(B0);
BYTE_1:=SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B15),1) OR BOOL_TO_BYTE(B14),1) OR BOOL_TO_BYTE(B13),1) OR BOOL_TO_BYTE(B12),1)
OR BOOL_TO_BYTE(B11),1) OR BOOL_TO_BYTE(B10),1) OR BOOL_TO_BYTE(B9),1) OR BOOL_TO_BYTE(B8);
PACK_W2:=SHL(BYTE_TO_WORD(BYTE_1),8) OR BYTE_TO_WORD(BYTE_0);
Вложение 43093Код:FUNCTION PACK_DW : DWORD
VAR_INPUT
B0: BOOL;
B1: BOOL;
B2: BOOL;
B3: BOOL;
B4: BOOL;
B5: BOOL;
B6: BOOL;
B7: BOOL;
B8: BOOL;
B9: BOOL;
B10: BOOL;
B11: BOOL;
B12: BOOL;
B13: BOOL;
B14: BOOL;
B15: BOOL;
B16: BOOL;
B17: BOOL;
B18: BOOL;
B19: BOOL;
B20: BOOL;
B21: BOOL;
B22: BOOL;
B23: BOOL;
B24: BOOL;
B25: BOOL;
B26: BOOL;
B27: BOOL;
B28: BOOL;
B29: BOOL;
B30: BOOL;
B31: BOOL;
END_VAR
VAR
W1: WORD;
W0: WORD;
BYTE_0: BYTE;
BYTE_1: BYTE;
BYTE_2: BYTE;
BYTE_3: BYTE;
END_VAR
(*Тело функции*)
BYTE_0:=SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B7),1) OR BOOL_TO_BYTE(B6),1) OR BOOL_TO_BYTE(B5),1) OR BOOL_TO_BYTE(B4),1)
OR BOOL_TO_BYTE(B3),1) OR BOOL_TO_BYTE(B2),1) OR BOOL_TO_BYTE(B1),1) OR BOOL_TO_BYTE(B0);
BYTE_1:=SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B15),1) OR BOOL_TO_BYTE(B14),1) OR BOOL_TO_BYTE(B13),1) OR BOOL_TO_BYTE(B12),1)
OR BOOL_TO_BYTE(B11),1) OR BOOL_TO_BYTE(B10),1) OR BOOL_TO_BYTE(B9),1) OR BOOL_TO_BYTE(B8);
W0:=SHL(BYTE_TO_WORD(BYTE_1),8) OR BYTE_TO_WORD(BYTE_0);
BYTE_2:=SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B23),1) OR BOOL_TO_BYTE(B22),1) OR BOOL_TO_BYTE(B21),1) OR BOOL_TO_BYTE(B20),1)
OR BOOL_TO_BYTE(B19),1) OR BOOL_TO_BYTE(B18),1) OR BOOL_TO_BYTE(B17),1) OR BOOL_TO_BYTE(B16);
BYTE_3:=SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B31),1) OR BOOL_TO_BYTE(B30),1) OR BOOL_TO_BYTE(B29),1) OR BOOL_TO_BYTE(B28),1)
OR BOOL_TO_BYTE(B27),1) OR BOOL_TO_BYTE(B26),1) OR BOOL_TO_BYTE(B25),1) OR BOOL_TO_BYTE(B24);
W1:=SHL(BYTE_TO_WORD(BYTE_3),8) OR BYTE_TO_WORD(BYTE_2);
PACK_DW:=SHL(WORD_TO_DWORD(W1),16) OR WORD_TO_DWORD(W0);
Скажите, а операции MOVE с входом En нет в OwenLogic?
На ноутбуке барахлит USB-порт.
В процессе смены прошивки для ПР200 порт отключился и связь с ПР200 потерялась. Теперь на ПР200 горит пустой экран и мигает светодиод F2.
Вопросы:
1. ПР200 в сервис?
2. На будущее, так как смена ноутбука пока не планируется. Если я буду обновлять прошивку на другом ПК, а уже заливать программу на ноутбуке с плохим USB-портом, то таких проблем не будет (т.е. при заливке программы при потере связи с ПР200, он не может заглючить)?