Автор Тема: Пытаюсь разобраться с управление по лан.  (Прочитано 1174 раз)

Flat

  • Новичок
  • *
1. Правильно ли я понял что перед отправкой команд надо авторизоваться на контроллере с помощью CODE_CMD_REQUEST?
2. Что ставить в CMD_IDENTIFICATION? Его задаю я по желанию? к примеру могу использовать всегда 0?
3. Правильно ли я понимаю что контрольная сумма это сумма всех байт методом XOR с начальным байтом FF.
4.  Последовательность байт в структурах пакетов   – обратный,   «от младшего к старшему». Это касается всего запроса или только поля данных ?
     то есть  к примеру пароль (0x01 0x23 0x45 0x67 0x89  0xAB 0xCD 0xEF) надо передавать DATA[1] =  0x01  или 0xEF?

Administrator

  • Администратор
  • Ветеран
  • *****
1. Да, перед отправкой команд (после подключения сокета) нужно авторизоваться. Авторизация действительна для всей сессии до разрыва подключения.
2. Любое число, лучше использовать random. Идентификатор будет одинаковым для запроса и ответа. В идеальном случае идентификаторы должны быть разными для разных запросов. Но  это уже на усмотрение пользователя.
3. Начальное значение Xor_Temp = $FF, затем побайтовое сложение всех элементов передаваемого пакета Xor_Temp = Xor_Temp + (byte), затем Xor $FF.
4. Это касается каждого поля (структуры) внутри пакета. Например, поле Length состоит из 2 байт - при передаче следует сначала младший, затем старший байт.
 

Flat

  • Новичок
  • *
вроде все бегает. но не понятно работает опрос входа in0.

После авторизации на контроллере, посылаю команду 0xD4,0x2,0x2,0x4,0x4,0x0,0x20,0x0,0x0,0x0. На входе in 0 ничего нет.
Приходит ответ  8,2,2,4,7,0,18,226,14,0,231,0,0 (dec)
 - на входах ничего нет типа. маска 11100111.
Подаю на вход 5 вольт. повторно шлю команду. ответ   232,2,2,4,7,0,18,226,14,32,231,0,0 (dec)
согласно таблицы включился INT_5
Снимаю 5 вольт со входа. ответ не меняется.
5 вольт беру с выхода контроллера.

А мне нужно програмно отслеживать хотя бы 1 вход контроллера на вкл/выкл.
Set zero и  in1 заняты концевиками.


1 Вопрос почему при снятии напряжения не обновляется ответ ?
2. Соответствие  таблицы выходов в мануале реальным выходам ? не нашел такого в мануале.
В таблице выходов прописаны биты с 0 по 7 и пронумерованы INT_x соответственно битам.


Flat

  • Новичок
  • *
тоже самое происходит и с опросм in1 и setzero. ответ не меняется от наличия питания.
НО концевые отрабатывают нормально. кроме случая если  так в ноле и его снова туда отправить.
такое ощущение что контроллер то видит нормально ситуацию по входам... но на повторные опросы выдает старую команду

Flat

  • Новичок
  • *
Ответ будет ? Может прошивка есть ?

Administrator

  • Администратор
  • Ветеран
  • *****
Чтобы повторно ожидать сигнал на вход нужно командой SET_MASK_EVENT отправить 0 на этот вход.

"1 Вопрос почему при снятии напряжения не обновляется ответ ? " - потому что для обработки сигнала в дальнейшем тексте программы может не хватить времени.
Например, импульсный сигнал появился на входе и пропал, а до обработки этого сигнала по программе дело еще не дошло. В этом случае без сохранения значения сигнал пропадет. Т.е. 1 на входе будет сохраняться о тех пор, пока этот сигнал не будет обработан в программе и принудительно не сброшен командой SET_MASK_EVENT.

"2. Соответствие  таблицы выходов в мануале реальным выходам ? не нашел такого в мануале. " - выходов или входов?
Нумерация входов подряд - в том порядке, как они промаркированы на самом блоке.

Roman

  • Новичок
  • *
Мы тоже пытались разобраться и даже много достигли.
Потеряв две недели нам удалось с контроллера siemens S7-1200 Искать ноль, управлять двигателем старт-стоп, изменять скорость , ускорение, опрашивать состояние и даже считывать входа на драйвере.
Но, стабильной и быстрой работы (нам нужно быстродействие 2 об/сек с остановками после каждого оборота и проверкой входа) достигнуть не удалось. Плохо описаны процедуры, приходилось много тыкаться и пробовать разные варианты. Постоянно возникает ошибка ЕС, на которую уже просто перестали обращать внимание. Писали в поддержку, нам отвечали и пытались помочь, мы правда пытались сделать так, что бы они заработали по сети так, как задумывал производитель, идея то хорошая, но, принято решение, поставить на контроллер плату высокочастотных выходов и управлять в режиме драйвера. А все мытарства с управлением по LAN забыть как страшный сон и неудачный опыт.
Резюме: задумка очень хорошая, но протокол нужно взять из стандартных и популярных, а не выдумывать всякую дичь.
Мы верим в Вас и уверены, что Электропривод в силах сделать удобное в использовании устройство, надеемся, так и будет. Ждём обновлений.

Flat

  • Новичок
  • *
Re: Пытаюсь разобраться с управление по лан.
« Ответ #7 : 20 Августа 2020, 15:36:29 »
Чтобы повторно ожидать сигнал на вход нужно командой SET_MASK_EVENT отправить 0 на этот вход.

Продолжаем разбираться. На прошлом объекте выкрутились в ручную. На новом уже не получается. необходимо считать вход сет зеро.
Изначально он без проблем прочитывается. пытаюсь сбросить  SET_MASK_EVENT отправить 0 на этот вход. (не на этот а на все входы). Состояние порта обнуляется, но он перестает работать как в режиме скан зерро так и присылать ответ о состоянии входа. Слал и SET_MASK_EVENT 1. результат тот-же. как все таки мне циклически его опрашивать ?