Это может быть баг симулятора(онлайн режима), кстати, уже не раз подобные баги встречались!
Какая-то непоследовательность, в смысле, обычно Вы всё предполагаете и предполагаете, даже там, где это не требуется, а здесь, всё, фантазия кончилась!
Вид для печати
Сергей0308 какой баг?, человек включает и выключает входы, ОЛ текстом отображает битовую маску, согласно замкнутым входам, а выудить требуемый бит кто-то не может - сам ПР, либо ОЛ или кто?
Очень просто, ОЛ выводит байт ответа, какой получил из слейва, ведь предполагалось, что получим байт, в младшем бите которого, находится состояние ОДНОГО входа (Внешний вид байта в этом случае совпадает с внешним видом отображения одного бита). Упростили программисты, так сказать, себе жизнь. Никто же не думал, что "шальной" слейв в ответ на запрос состояния ОДНОГО входа пришлет состояние ВСЕХ.
Один бит Modbus передать не может, как минимум передается один байт. А вот кто-то не может вычленить из байта требуемый запросом бит
з.ы. вот вижу только работу онлайн отладки, а на экран что нибудь передается?
Сергей0308 у китайцев, документацию? вы шутите? :) Это же клепают не крупные фирмы типа chint и им подобные.....
Сергей0308 Цена определяющий фактор. Но с китайцами нужен глаз да глаз. Например один иностранец купил на тао-бао подобную плату реле, все бы хорошо, но вот байты CRC китайцы перепутали.
Второе устройство с перепутанной CRC как-то тут на форуме показывали.
и опять же, вытащить нужные биты из запроса данного конкретного реле для любой Scada не представляет сложности. Сложность возникла у ПР
Ну, это опять ваша гипотеза, давайте не будем фантазировать, скажем как оно есть на самом деле на данный момент, в смысле, пока трудности возникли только у ТС! Ранее подобные реле уже обсуждали на форуме(даже я в этом участвовал) и успешно все проблемы разрешались! В смысле, ничего не стоит проверить на другом устройстве или ОРС сервером!
Сергей0308 реле были другие, там спокойно через холдинги все читалось, и входы и выходы и управление реле.
https://owen.ru/forum/attachment.php...2&d=1392751544
А я разве говорил, что один бит?Цитата:
Очень просто, ОЛ выводит байт ответа, какой получил из слейва, ведь предполагалось, что получим байт, в младшем бите которого, находится состояние ОДНОГО входа
petera а слейв считает, спросили 0 регистр DI, какая разница какой ты там бит хочешь посмотреть - держи байт и разбирайся сам :)
слейв не прав?, должен был сделать смещение в 0 бит запрашиваемый и выдать байт в таком виде? Вроде у него не Coils запрашивают, а DI, DO
нашли ошибку, будем надеяться её поправят, тут главное охватить как можно больше ситуаций, например вейнтек сколько бы бит не запрашивать, формирует запрос заполнить байт полностью Вложение 69829 и вот появляется вопрос, если слейв заточен под конкретный запрос будет ли он отвечать, выдавая свои discret inputs или ответит ошибкой 02
imaex это набор, расположенный в байте, среди которого и надо определить требуемый, вроде не задача слейва смещать запрашиваемый бит в 0-й бит в данном случае.
imaex смотрите протокол пожалуйста, раз сами на него ссылались. 0х01 это регистры DO - Read Coil Status запрос НЕСКОЛЬКИХ состояний Coils
битовая маска выходов. Для входов аналогично.Цитата:
Значения DO в ответе находятся в одном байте и соответствуют значению битов.
Значения битов определяются как 1 = ON и 0 = OFF.
Описание реле соответствуют протоколу? вроде да, почему на запрос бита 4 слейв должен отвечать только 0 или 1 ? на каком таком основании?
Это как раз ОЛ должен при использовании переменной Bool и выставлении бита 4 наложить маску на ответ и выдать в переменную true или false.
А не слейв вам заранее все подготовить. И тут реально напрашивается переменная Byte, int чтобы уже в программе на один запрос самим разложить на биты.
а не делать 4 и более запросов, учитывая что ПР не поддерживает групповые запросы вообще.
melky, Вы такой многословный, я поражаюсь. За мыслью не успеваете, когда пишите. Очевидно, что в результате и рождаются перлы вроде:
ТщательнЕЕ надо.Цитата:
Вроде у него не Coils запрашивают, а DI, DO
imaex ну имел ввиду не в единственном экземпляре :)
з.ы. я уже сам запутался, вроде как запрашивая С 4-го бита например 5 DI то в байте ответа в нулевом бите должен оказаться 4-й Coil, в 1-м 5-й, во 2-м - 6-й и так далее и в последнем байте ответа пустые части должны быть заполнены нулями....
Чтобы за железку найти проверить этот момент с ответом слейва...
Так что вероятно petera прав, просто слейв тут предполагает что запросы всегда с 0 бита и минималка 8 бит типа
надо доставать английский документ и сидеть переводить, а то на просторах на русском кто во что горазд, видимо так же и китайцы поступили :(
kondor3000 смена адреса есть в примерах по ссылкам на платы, можно через парсер посмотреть