Пятница, выходной.Я твёрдо решил, что потрачу и его на работу с 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