PDA

Просмотр полной версии : UNM



Fudz
27.09.2012, 10:55
Здравствуйте не могли бы вы мне помочь освоить UNM библиотеку. А конкретно теорию я как бы знаю хотелось бы примерчик самый элементарный например опрос дискретного модуля любого регистра и получение ответа.

kgsh82
28.09.2012, 07:00
Пример есть, надо лишь поискать

http://www.owen.ru/forum/showthread.php?t=551&page=7

Fudz
28.09.2012, 13:39
Да спс посмотрел тяжеловато разобраться. Попытался написать элементарную отправку запроса пример ниже:

IF OUT1 <> 1 THEN
LockDevice(0);
END_IF;

IF SWICH THEN
OUT2:=SetByte(0, '$10$03$00$01$24$35', 6);
END_IF;

Но при запуске программы и включении Swich ПЛК автоматически перезагружается. В чем проблема подскажите пожалуйста.

capzap
28.09.2012, 14:21
Да спс посмотрел тяжеловато разобраться. Попытался написать элементарную отправку запроса пример ниже:

IF OUT1 <> 1 THEN
LockDevice(0);
END_IF;

IF SWICH THEN
OUT2:=SetByte(0, '$10$03$00$01$24$35', 6);
END_IF;

Но при запуске программы и включении Swich ПЛК автоматически перезагружается. В чем проблема подскажите пожалуйста.

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

Fudz
28.09.2012, 19:22
да я знаю что все в 16 системе crc посчитал по калькулятору. Сделал как вы сказали все ровно что-то не то:

IF OUT1 <> 1 THEN
LockDevice(0);
END_IF;

IF SWICH THEN
OUT2:=SetByte(0, '$10$03$00$01$24$35', 6);
IF SWICH=TRUE THEN SWICH:=FALSE; END_IF;
END_IF;

capzap
28.09.2012, 19:25
это видели? http://www.owen.ru/forum/attachment.php?attachmentid=7051&d=1348770779

Fudz
28.09.2012, 22:00
может у меня запрос не правильный. ПЛК110 и один дискретный модуль.
$10 = 16 dec адрес дискретного модуля
$03 = 03 dec read holding registers
дальше адрес и количество регистров и CRC

capzap
28.09.2012, 22:27
из-за ошибок в запросах, перегрузки плк не бывает.
В приведенном Вами примере кроме SWICH, такая же картина и с OUT1, постоянно пытаетесь занять порт, которому и одного раза хватает
Ну и как бы надо устранять избыточность кода, можно и так написать
IF SWICH THEN
OUT2:=SetByte(0, '$10$03$00$01$24$35', 6);
SWICH:=FALSE;
END_IF;главное чтоб SWICH в программе один раз в ИСТИНУ ставили, а то теряется смысл в присвоении ей ФАЛЬШИ

ЗЫ Вы же просили пример и почему им не воспользуетесь, не составите свой код аналогично?