Просмотр полной версии : UNM
Здравствуйте не могли бы вы мне помочь освоить UNM библиотеку. А конкретно теорию я как бы знаю хотелось бы примерчик самый элементарный например опрос дискретного модуля любого регистра и получение ответа.
Пример есть, надо лишь поискать
http://www.owen.ru/forum/showthread.php?t=551&page=7
Да спс посмотрел тяжеловато разобраться. Попытался написать элементарную отправку запроса пример ниже:
IF OUT1 <> 1 THEN
LockDevice(0);
END_IF;
IF SWICH THEN
OUT2:=SetByte(0, '$10$03$00$01$24$35', 6);
END_IF;
Но при запуске программы и включении Swich ПЛК автоматически перезагружается. В чем проблема подскажите пожалуйста.
Да спс посмотрел тяжеловато разобраться. Попытался написать элементарную отправку запроса пример ниже:
IF OUT1 <> 1 THEN
LockDevice(0);
END_IF;
IF SWICH THEN
OUT2:=SetByte(0, '$10$03$00$01$24$35', 6);
END_IF;
Но при запуске программы и включении Swich ПЛК автоматически перезагружается. В чем проблема подскажите пожалуйста.
Через знак доллара передаются данные в шестнадцатиричной системе, надеюсь контрольная сумма соответствует, а поповоду перегрузки, попробуйте в нутри тела условия переменной присвоить фальш, зачем каждый цикл посылать запросы, достаточно одного
да я знаю что все в 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;
это видели? http://www.owen.ru/forum/attachment.php?attachmentid=7051&d=1348770779
может у меня запрос не правильный. ПЛК110 и один дискретный модуль.
$10 = 16 dec адрес дискретного модуля
$03 = 03 dec read holding registers
дальше адрес и количество регистров и CRC
из-за ошибок в запросах, перегрузки плк не бывает.
В приведенном Вами примере кроме SWICH, такая же картина и с OUT1, постоянно пытаетесь занять порт, которому и одного раза хватает
Ну и как бы надо устранять избыточность кода, можно и так написать
IF SWICH THEN
OUT2:=SetByte(0, '$10$03$00$01$24$35', 6);
SWICH:=FALSE;
END_IF;главное чтоб SWICH в программе один раз в ИСТИНУ ставили, а то теряется смысл в присвоении ей ФАЛЬШИ
ЗЫ Вы же просили пример и почему им не воспользуетесь, не составите свой код аналогично?
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot