Микроконтроллеры

Oct 10, 2009 00:52

Пятница, выходной.Я твёрдо решил, что потрачу и его на работу с Siemens S7-200. Безумно нравится с ними работать. Железо в чистом виде.Интересное, и твёрдое.

Как и договорился, с Данилой встретился в 315. Начали химичить.

занавес.

акт 1.

На этот раз мы должны были подать на него аналоговый сигнал, и вывести график напряжения на панельку, а также значение в виде Double.
Данила и вчера сидел с этой работой, многое сделал, но что-то у него не заладилось с приведением типов.

Начали работу.
Взяли 2 блока питания: один от робота Василия, второй - хрен знает откуда, но по виду - ветеран, т.к. обмотан изолентой. Берём 2 провода, зачищаем, при помощи изоленты крепим их к проводу блока питания, и кидаем на входы миконтроллера:

+ на A+
корпус на M

Запускаем, получем на входе, в адресе AIW0 (Analog Input Word 0) значение в 32527.
Что это за размерность мы не знаем, но знаем то, что к типу double эта падлюка никак не хочет. Попытка запихать её в аккумулятор, а оттуда вытащить в double оканчивается значением NULL, получаемой на входе блока деления. Данила делил на 1000, чтобы получить значеня с запятыми,но так ничего и не выходило. Ладно, хрен с ней, тогда пытаемся в самом начале использовать блок не MOV_W а MOV, но на выходе выходит лишь ASCII.
Ок, тогда сначала MOV_W, затем MOV_I, потом MOV_R.
Опять, по NULL'ам.

блять, занавес опускатся.

антракт

акт 2.
Сидим думаем, что за херня.
Тогда я настаиваю на F1 и курении манов, чем мы и занимаемся ближайший час.
Данила пробует передать значения через аккумулятор, с задержкой, с использованием таймера, но попытка проваливается, по причине убогости идеи и реализации.(была у нас гипотеза, о том, что сигнал не успевает вовремя проскочить, поэтому решили таймер поставить, но оба жопой чуяли, что не в нём дело.)
В итоге после чтения мана решили просто запихать запятую туда после деления.
Вот схема:

тумбер M5.0 - MOV_W(Move word) - I_S(Integer to string) - S_D(String to double)

И вот, наше значение появляется ввиде 32,527.
Ура, мы это сделали.
Вприпрыжку бежим на аспирантскую парковку, в поисках умного человека, способного оценить все наши попытки.

В нашей идее он видит капли просвещения, однако, проверив все входы осциллографом, заявляет, что напряженийце-то, всего 25. А что такое 32, 527??.

(умный человек уходит, двое других падают в обморок)

занавес падает.

антракт

акт 3.
Ладно, тогда разберёмся что к чему.
Проверяем эти числа, и откуда они берутся.
Меняем блок питания Василия на ветерана в изоленте.
Значение остаётся тем же.
Значит, верно, значит подаётся, но что это? На милливольты не похоже - слишком мало.
Решаем снова всё пересобрать, но более тщательно.
Тут замечаем странность - в момент отключения питания - показатели не падают.Программа продолжает работать, замеряя напряжение.Очень странно. Сидим спорим. Через минуты полторы показатели начинают снижаться, и на графике отображается кривая. Что за херь, почему так долго???

Поступает идея о том, что отображаемого числа не хватает на отображение точного заряда, но позже мнение меняется на более верное - что виной всему конденсатор,нажравшийся вдоволь энергии. Пытаемся выяснить что за конденсатор и где эта падла сидит.
Смотрим за медленным падением напряжения. Внезапно мне приходит в голову идея помочь ему быстрее сдохнуть, и я начинаю танец с бубном: бью об ладони блок питания. Показатели спадают за считанные секунды, и замирают в районе 1,7400.
...
и через пару секунд внезапно растут.
Ну мы естественно в ауте полном, радуемся как дети, что придумали вечный двигатель, бесконечную энергетическую батарейку, и даём ей название НЕХ (Неведомая Ёбаная Хуйня). Кстати к моменту придумыванию названия, НЕХ доростает до 5,63... .
Сидим думаем, что же произошло.

Смотрим настройки программы, проверяем порты.
Ага, идея, почему бы не пихнать жало осциллографа в контроллер и не проверить напряжение непосредственно в ячейке входа.
Ага, так оно и есть, 2 вольта, еле заметный прыжок на четверть клетки, и вечный НЕХ падает до 4,320.

Проверяем B+.
Приблизительно то же значение - а вот и вечный конденсатор.
В итоге приходим к тому, что значения, полученные на входе получают называение у.е. Siemens,  а в дальнейшем будут поделены приблизительно на 2,5 и переведутся в вольты (правда этого мы уже не писали, т.к. долго смеялись над НЕХ).

Что до серьёза, то могу сказать, что лабу мы всё-таки сделали, и отчёт будет намного шире обычных рамок, т.к. эта лаба оказалась интереснее предидущих. Радует, что влезли глубже и всё-таки разобрались почему появилась НЕХ - это заряд на корпусе блока+минимальные остатки энергии.

Итак, занавес, господа.

P.S.:
также, мы проверяли значения не только A+, но и B+.
Та же борода.

Вот пост Данилы: juick.com/salamahin/310844

work, siemens, микроконтроллеры, НЕХ

Previous post Next post
Up