cpu13.ru - форум OMRON http://cpu13.ru/ |
|
Необходимо ввести число в память контролеера, строго в HEX http://cpu13.ru/viewtopic.php?f=3&t=78 |
Страница 1 из 1 |
Автор: | pavelzii [ Пн апр 20, 2009 12:29 ] |
Заголовок сообщения: | Необходимо ввести число в память контролеера, строго в HEX |
Здравствуйте, Олег. У меня стоит задача в Supervisor. Необходимо ввести число в память контролеера, строго в HEX, т.е я должен в SCADA вводить числа HEX. Подскажите, пожалуйста, можно ли это сделать. Вывода чисел в HEX я добился, а вот ввода никак не получается. Если да, то как это реализовать. Заранее благодарен. |
Автор: | Олег [ Вт апр 21, 2009 11:37 ] |
Заголовок сообщения: | |
Оригинальная задачька, неужели оператор в хекс числах разбираться может? Стандартными методами супервайзора этого кажись не сделать, ну разве только значение спайдером менять. можно подключить к супервайзору компонент OMRON CX Thumbwheel Control, и менять задание в хекс формате из него. (самый простой способ, но я не знаю в составе чего он идёт, кажись из сервер лайта) можно и скриптами, в Примерах лежит Preobraz.rar, там скрипты преобразования в разные форматы. В твоём случае должен получится скрипт где ты редактируешь текстовую точку, т.е. записываешь в неё что-то вроде CAFE, потом подпрограммой скрипта из примера преобразуешь текст в число 51966 и отправляешь в котроллер |
Автор: | pavelzii [ Вт апр 21, 2009 14:55 ] |
Заголовок сообщения: | |
Программу перевода я написал, беспроблем. А вот как из скрипта мне отправить значение переменной integer в вашем примере (result2), не знаю. Если есть функция записи переменной типа integer в контроллер, не могли бы вы мне ее подсказать, а то я ещё не во всех функциях разобрался. Точку с параметрами I/O и реальным адрессом контроллера я создал. Заранее благодарен. |
Автор: | pavelzii [ Вт апр 21, 2009 15:25 ] |
Заголовок сообщения: | |
У меня получилось. Сделал я как вы мне посоветовали. Я использовал функцию EditPoint по аналогу, прировнял внутреннюю переменную к внешней, а внешнюю поставил в функцию EditPoint. Постояно выпадает окно для подтверждения ввода уже с переведённым числом в десятичный формат А от этого уже наверно ни как не избавишся? |
Автор: | Олег [ Вт апр 21, 2009 21:41 ] |
Заголовок сообщения: | |
Вообще-то я так и не понял в чём проблема... Код: EditPoint(xxx, "Set Text to", FALSE ,FALSE )
myHEX= xxx CALL FF_255( ) zzz = result2 zzz точка на чтение запись из контроллера (с интервалом в 3-5 сек), все остальные, точки в памяти супервайзора. Точка сама запишется по своему изменению в контроллер. если хочется чтобы в окне редактирования отображалось текушее значение, поставь первой строчкой xxx = Hex(zzz) |
Автор: | pavelzii [ Ср апр 22, 2009 13:28 ] |
Заголовок сообщения: | |
Извените, но у меня ни как не получается разобраться с Subrountain. Кокда я прописываю функцию CALL у меня появляется Subrountain. CALL FF_255( ), FF_255- это как я понимаю название самого скрипта? И что это за условие Subrountain? Извените, просто я еще в этом не силен работал только над одним проэктом, а с СХ-Supervisor мне работать теперь постояно. Спасибо, за удилённое мне время и за ранее благодарен. |
Автор: | Олег [ Ср апр 22, 2009 23:23 ] |
Заголовок сообщения: | |
CALL FF_255( ) это обрашение к подпрограмме, которая в глобальном скрипте числится как Subroutine с именем FF_255. т.е. чтобы обратится к подпрограмме с этим именем, её сначала нужно прописать в глобальном скрипте. (с текстом и переменными из примера) Эта подпрграмма, текстовую точку myHEX (входные данные) преобразует в десятичное result2. (речь идёт о примере Preobraz.rar) т.е. присваиваешь значение своей текстовой точки точке myHEX, потом своей точке, которая для связи с контроллером, передаёшь результат работы подпрограммы FF_255, т.е. result2. Другими словами CALL FF_255( ), Вызов подпрограммы, (функции) преобразует текстовую переменную myHEX в десятичное целое result2, эти точки участвуют в работе подпрограммы. про пост выше. zzz это та точка которую тебе нужно писать в контроллер. xxx это текстовое значение (мемори) которое нужно чтобы ввести тектовую сторку типа "CAFE", текстовое отображение числа "51966" в формате HEX. Когда разберёшься, наверно удивишься как всё просто. |
Автор: | pavelzii [ Чт апр 23, 2009 09:23 ] |
Заголовок сообщения: | |
Сделал все как вы сказали, и все получилось отлично. Оказалось все просто и легко. Осталась только проблема многократного ввода, числа в переменную zzz, какие для этого можно использовать функции?, т.е. сначала например АААА, а потом FFFF. |
Автор: | Олег [ Чт апр 23, 2009 12:57 ] |
Заголовок сообщения: | |
myHEX= "АААА" CALL FF_255( ) zzz = result2 Потом когда нужно myHEX= "FFFF" CALL FF_255( ) zzz = result2 А если нужно вызвать окно для редактирования и изменить значение вручную, в скрипт на клик вставляещ: xxx = Hex(zzz) 'Только для того чтобы в окне редактирования отображалось текущее значение EditPoint(xxx, "Set Text to", FALSE ,FALSE ) myHEX= xxx CALL FF_255( ) zzz = result2 |
Автор: | pavelzii [ Чт апр 23, 2009 15:38 ] |
Заголовок сообщения: | |
Огромное Вам спасибо, за помощь у меня все получилось. Проблема состояла в том,что когда я создал новый проект и скопировал туда все точки и скрипты из Вашего проекта у меня при первом вводе в контроллер записывалось правильное значение,а при повторном вводе переменной xxx в память контроллера записывался 0. Но когда я взял изначально Ваш проект удалил из него то что мне было не нужно, добавил точку zzz с реальным адресом, и проделал "на клик" xxx = Hex(zzz) EditPoint(xxx, "Set Text to", FALSE ,FALSE ) myHEX= xxx CALL FF_255( ) zzz = result2 все заработало. Хотел бы от себя выразить Вам благодарность за помощь,за разъяснение по поводу САLL FF_255 () и за этот форум в частности. Побольше бы таких людей как ВЫ. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа (Russia: MSK) |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |