Страница 214 из 250

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 07 апр 2023, 12:41
Number17
8bit писал(а):
Number17 писал(а):Вопрос 1: МАС содержит 6 байт, почему старшая половина слова не равна 0?
почему должна быть равна 0 ?

Полагаю что потому, что в слове должно содержаться значение не более 255, т.е. значащими должны быть только младшие 8мь разрядов. Но старшая половина может быть !=0, но при этом быть незначащей.

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 07 апр 2023, 15:08
8bit
Number17 писал(а):Полагаю что потому, что в слове должно содержаться значение не более 255


с чего бы это ?

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 07 апр 2023, 15:58
Number17
8bit писал(а):
Number17 писал(а):Полагаю что потому, что в слове должно содержаться значение не более 255


с чего бы это ?


Стандарты IEEE определяют 48-разрядный (6 октетов( байт) ) MAC-адрес. Полагаю в каждой из ячеек (9135-9140) содержится один октет из 6-ти.
Или как то не так?

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 07 апр 2023, 16:03
8bit
Number17 писал(а):Полагаю в каждой из ячеек (9135-9140) содержится один октет из 6-ти.


верно
а что содержит этот октет ?

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 07 апр 2023, 16:07
Number17
8bit писал(а):
Number17 писал(а):Полагаю в каждой из ячеек (9135-9140) содержится один октет из 6-ти.


верно
а что содержит этот октет ?


Значение от 0x00 до 0xFF должно быть ). Не так ?

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 10 апр 2023, 11:14
8bit
Number17 писал(а):
8bit писал(а):
Number17 писал(а):Полагаю в каждой из ячеек (9135-9140) содержится один октет из 6-ти.


верно
а что содержит этот октет ?


Значение от 0x00 до 0xFF должно быть ). Не так ?


Weintek хранит MAC адрес как символы и отображать его надо через объект ASCII

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 11 апр 2023, 10:09
Number17
8bit писал(а):
Number17 писал(а):Weintek хранит MAC адрес как символы и отображать его надо через объект ASCII


Ну вот теперь всё понятно ). Спасибо.

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 18 апр 2023, 13:48
smile-dimon
доброго времени всем!
Бьюсь,бьюсь с прошивкой,вернее со составлением макроса...с помощью примеров и гугла кое что удалось,но не могу понять:
Код: Выделить всё
GetData (nn[0], "RTU1", 4x_Bit, 1#102, 1)
GetData (nn[1], "RTU1", 4x_Bit, 2#102, 1)
GetData (nn[2], "RTU1", 4x_Bit, 3#102, 1)
GetData (nn[3], "RTU1", 4x_Bit, 4#100, 1)
GetData (nn[4], "RTU1", 4x_Bit, 5#100, 1)
GetData (nn[5], "RTU1", 4x_Bit, 6#100, 1)
GetData (nn[6], "RTU1", 4x_Bit, 7#102, 1)
GetData (nn[7], "RTU1", 4x_Bit, 8#102, 1)
GetData (nn[8], "RTU1", 4x_Bit, 9#102, 1)
GetData (nn[9], "RTU1", 4x_Bit, 10#102, 1)
GetData (nn[10], "RTU1", 4x_Bit, 11#102, 1)
GetData (nn[11], "RTU1", 4x_Bit, 12#102, 1)
GetData (nn[12], "RTU1", 4x_Bit, 13#102, 1)
GetData (nn[13], "RTU1", 4x_Bit, 14#102, 1)

for n=0 to 14 step 1

if nn[n]==true then
SetData(on, "Local HMI", LB, 100, 1)
//else
if nn[n]==false then
SetData(off, "Local HMI", LB, 100, 1)
end if
end if
next n

по этому коду,выходит что пока каждый бит не сработает не будет установлен положительный бит?
Или я что не правильно делаю?Пишу как бы шаблон...но на объектах кол-во устройств варьируется от 5 до 15 и мне нужно что бы с минимальными изменениями(а лучше без них,потому что прошиваются большинство удаленно) работало на всех.В идеале бы конечно что бы большинство приборов проверялось на сработку и тем самым LB-100 переходил в true(...кол-во конечно могу подогнать к каждому объекту).А если нет,то соответственно в false.И не могу понять,они для выполнения условия должны быть всегда и все в сработке или же это за все время работы панели?Макрос стоит в периодическом выполнении.

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 18 апр 2023, 15:21
dimensy
smile-dimon писал(а):доброго времени всем!
Бьюсь,бьюсь с прошивкой,вернее со составлением макроса...с помощью примеров и гугла кое что удалось,но не могу понять:
Код: Выделить всё
GetData (nn[0], "RTU1", 4x_Bit, 1#102, 1)
GetData (nn[1], "RTU1", 4x_Bit, 2#102, 1)
GetData (nn[2], "RTU1", 4x_Bit, 3#102, 1)
GetData (nn[3], "RTU1", 4x_Bit, 4#100, 1)
GetData (nn[4], "RTU1", 4x_Bit, 5#100, 1)
GetData (nn[5], "RTU1", 4x_Bit, 6#100, 1)
GetData (nn[6], "RTU1", 4x_Bit, 7#102, 1)
GetData (nn[7], "RTU1", 4x_Bit, 8#102, 1)
GetData (nn[8], "RTU1", 4x_Bit, 9#102, 1)
GetData (nn[9], "RTU1", 4x_Bit, 10#102, 1)
GetData (nn[10], "RTU1", 4x_Bit, 11#102, 1)
GetData (nn[11], "RTU1", 4x_Bit, 12#102, 1)
GetData (nn[12], "RTU1", 4x_Bit, 13#102, 1)
GetData (nn[13], "RTU1", 4x_Bit, 14#102, 1)

for n=0 to 14 step 1

if nn[n]==true then
SetData(on, "Local HMI", LB, 100, 1)
//else
if nn[n]==false then
SetData(off, "Local HMI", LB, 100, 1)
end if
end if
next n

по этому коду,выходит что пока каждый бит не сработает не будет установлен положительный бит?
Или я что не правильно делаю?Пишу как бы шаблон...но на объектах кол-во устройств варьируется от 5 до 15 и мне нужно что бы с минимальными изменениями(а лучше без них,потому что прошиваются большинство удаленно) работало на всех.В идеале бы конечно что бы большинство приборов проверялось на сработку и тем самым LB-100 переходил в true(...кол-во конечно могу подогнать к каждому объекту).А если нет,то соответственно в false.И не могу понять,они для выполнения условия должны быть всегда и все в сработке или же это за все время работы панели?Макрос стоит в периодическом выполнении.


1. Побитово читать из регистра не очень хорошая идея. Правильней будет прочитать весь регистр, а потом, при необходимости работать с битами
2. Не знаю, но вроде запись при чтении 2#100 неверна. Если это второй бит регистра 100, то должно быть 10002
3. По коду у вас LB-100 выставится в 1 при любом одном положительном бите и обратно уже не сбросится
И скорректируйте вопрос, пожалуйста, я нифига не понял что значит "В идеале бы конечно что бы большинство приборов проверялось на сработку и тем самым LB-100 переходил в true(...кол-во конечно могу подогнать к каждому объекту)"

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 18 апр 2023, 16:19
smile-dimon
1. Побитово читать из регистра не очень хорошая идея. Правильней будет прочитать весь регистр, а потом, при необходимости работать с битами
2. Не знаю, но вроде запись при чтении 2#100 неверна. Если это второй бит регистра 100, то должно быть 10002
3. По коду у вас LB-100 выставится в 1 при любом одном положительном бите и обратно уже не сбросится
И скорректируйте вопрос, пожалуйста, я нифига не понял что значит "В идеале бы конечно что бы большинство приборов проверялось на сработку и тем самым LB-100 переходил в true(...кол-во конечно могу подогнать к каждому объекту)"


да,это я не внимателен,2#100 это моя ошибка.Все биты идут по первому (102) регистру,вернее сказать на 001 регистре есть три состояния- 00100-сост.прибора,00101-первый порог и 00102-второй порог.До решетки это локальные модбас адреса приборов 1-14.
Попробую перефразировать:В определенный момент времени, по задумке, оператор должен выполнить ТО приборов. При ТО естественно должно произойти срабатывание порогов,т.е. при сработке 2го порога всех приборов у оператора появляется кнопка с откладыванием ТО приборов на определенное время,до следующего периода.Если я там прописываю 'else',то кнопка появляется и снова пропадает.А мне необходимо что бы оператор провел ТО всем приборам и нажал кнопку,при этом дата следующего ТО сдвинулась. Кроме того некоторые приборы могут отсутствовать,в ремонте или неисправны.
Как то так,вроде описал.