cpu13.ru - форум OMRON http://cpu13.ru/ |
|
Ввести переменную http://cpu13.ru/viewtopic.php?f=4&t=108 |
Страница 1 из 1 |
Автор: | Игорь [ Вт мар 27, 2007 15:12 ] |
Заголовок сообщения: | Ввести переменную |
Подскажите пожалуста как и с помощью каких меню (если это вообще возможно) можно ввести переменную. Смысл такой есть 16 Set-ов c адресами 3200.00 - 3200.15 Мне бы хотелось ввести переменную Х и изменять ее соответсвенно от 00 до 15. Каким образом это можно сделать чтобы не вставлять 16 сетов, а использовать только один. |
Автор: | Олег [ Вт мар 27, 2007 19:44 ] |
Заголовок сообщения: | |
открываешь в программере "Watch Window" записываешь туда слово с адресом 3200, по двойному щелчку откроется окно с предложением ввести новое значение, нажать на кнопку "Binary>>" число будет представлено по битам. далее нужно прочитать подсказку внизу этого окна. Например нажатие на "J" меняет состояние выделенного бита на противоположное. |
Автор: | Игорь [ Ср мар 28, 2007 09:57 ] |
Заголовок сообщения: | |
Олег хотелось бы уточнить. Каким блоком можно присвоить переменной х (int) значение +1 при срабатывании контакта 200.00 ? Т.е сработал контакт 200.00 значение х=+1. Сработал контакт 200.01 значение х=+3 ? |
Автор: | Олег [ Ср мар 28, 2007 18:40 ] |
Заголовок сообщения: | |
Что-то я уже и не догоняю о чём вопрос. Первый как я понял, был о том как из программера, в онлайне быстро менять состояние битов в одном слове. второй вопрос кажется уже про другое... LD 200.00 MOV(021) +1 D10 LD 200.01 MOV(021) +3 D10 переключи программер на мнемонику и скопируй текст туда, потом переключи обратно в лад. |
Автор: | Алексей [ Ср мар 28, 2007 19:43 ] |
Заголовок сообщения: | |
На данном сайте заходишь в "Файлы" (см. выше) и скачиваешь файл W340-E1-2 R1.00.zip. Это русское руководство по программированию. Там все конкретно описано с примерами. А на вскидку я бы вместо SET использовал бы @MOV. В адресс 3200 пересылал бы переменную Х изменяемую от 00 до 15 (0000-FFFF в HEX).А вообще в W340-E1-2 R1.00.zip очень много ответов на разные вопросы. Качай- не пожалеешь! |
Автор: | pavelzii [ Пн окт 19, 2009 09:37 ] |
Заголовок сообщения: | Re: Ввести переменную |
Момогите разобраться. Есть задача ввести в переменную D0 из скады число в формате BCD, как это сделать из скады я разобрался, но остался другой вопрос. В каком формате должна быть переменная D0 в программере UINT_BCD? или она может быть просто UINT. |
Автор: | Олег [ Пн окт 19, 2009 09:50 ] |
Заголовок сообщения: | Re: Ввести переменную |
Если скада супервайзор, D0 может быть в любом формате который нужен для программы. Если в настройках точки указать формат который используется в контроллере, супервайзор сам переделает число в понятное нам десятичное. |
Автор: | pavelzii [ Пн окт 19, 2009 10:29 ] |
Заголовок сообщения: | Re: Ввести переменную |
Скада у меня Supervisor. Если я все правильно понял со скады я ввожу 100 в BCD, значит в программе будет использоваться число 256 (Decimal) что эквивалентно 0100 (HEX). Значит если мне надо чтобы в программе фигурировало число 256 литров к примеру, мне нужно в ВСВ со скады ввести число 100??? |
Автор: | Сергей Сергеевич [ Пн окт 19, 2009 11:12 ] |
Заголовок сообщения: | Re: Ввести переменную |
Нет. Надо вводить 256. Просто в настройках поля ввода надо указать BCD - если потом в программе это число обрабатывается как BCD или UINT если оно обрабатывается в HEX. Пример: Вы ввели число 256 и ячейка в BCD - тогда обрабатывать его (складывать вычитать умножать) нужно с помощью инструкций работающих с BCD - например, +B d0 #256 - прибваить к D0 256 в формате BCD. Иначе вычисления пойдут неправильно. А вообще проще всего по устанавливать разные типы в поле ввода и посмотреть как они отображаются в контроллере - сами все поймете. Все это для контроллеров типа CJ/CS. |
Автор: | pavelzii [ Пн окт 19, 2009 11:53 ] |
Заголовок сообщения: | Re: Ввести переменную |
Уважаемый, Сергей Сергеевич, после проделанных операций по изменению поля ввода, все встало на свои места. Как я понял если в программе мне необходимо обрабатывать число 256 в ячейке UINT, в Hex мне со скады необходимо вводить число 256 с настроенным полем ввода BCD, или же в ячейке UINT_BCD и дальнейшую работу вести с функциями относящимися к BCD. Вопрос может показаться глупым, просто я только начал осваивать написание программ и поэтому пытаюсь узнать как можно больше. Раньше занимался только визуализацией и мне как программисты говорили так и делал, а сейчас предстоит самому кое - какие мелочи писать. Вопрос: "Можно в программе переменные UINT обрабатывать не HEX, а DEC(в дясятичном формате)???" |
Автор: | Сергей Сергеевич [ Пн окт 19, 2009 12:58 ] |
Заголовок сообщения: | Re: Ввести переменную |
Все значения в контроллере хранятся в двоичном коде - набор нулей и единиц. HEX, BCD, DEC??(видимо FLOAT - число с плавающей точкой) это только метод отображения данного значения. НО. Значение 20bcd - будет хранится в виде 10100 (соответствует 14hex) 20hex - 100000 (или 32bcd). 20float - 100000110100000 (соответствует 41A0hex или 16800bcd или 2,0e+1 float). То есть если вы ввели значение 256 - это ваше значение в bcd формате - он удобен для понимания. Для того что бы его преобразовать в число 2,56e+2 - то есть в 256 в формат float нужно использовать 2 инструкции: 1. Перевод 256 bcd в формат hex: BIN #256 d0 - в ячейке D0 получим число 100hex 2. Перевод 100hex в float FLT d0 d2 - в ячейках d2 и d3 будет лежать 2,56e+2 (числа в формате float занимают 2 слова) и с ним можно работать как с числом с плавающей точкой, используя инструкции для них (содержат букву F, например +F d2 d4 d6 - сложить d2 и d4 и сохранить в d6). Просто не нужно забывать в каком виде у вас хранится значение и использовать соответствующие инструкции для преобразования из одного формата в другой. Надеюсь ответил на ваш вопрос. Я его так понял:) Добавлено: Тип точки в контроллере для слов всегда оставляю CHANNEL - я так понимаю это отображать как есть без предварительного преобразования в нужный формат. Советую делать так же, а то запутаетесь, особенно при небольшом опыте написания программ. |
Автор: | pavelzii [ Пн окт 19, 2009 13:56 ] |
Заголовок сообщения: | Re: Ввести переменную |
Огромное спасибо, за такое подробное разъяснение материала, теперь мне все ясно))) |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа (Russia: MSK) |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |