PDA

Просмотр полной версии : OPC сервер не считывает младший бит 32-разрядного слова



Roman62rus
27.04.2015, 18:19
Имеется контроллер FX3U, нужно считать его входы. Считываем с помощью универсального MODBUS OPC сервера. Считываем целым словом, потом его распаковываем на биты. И самый младший бит (вход X0) всегда равен нулю, хотя на контроллере соответствующий индикатор горит, и девелопер считывает этот бит верно. Все остальные биты норм. Адрес, по которому считываем, проверен многократно. Да и проделывалось это не раз на другом контроллере (тип тот же). Не могут какие-либо с первого взгляда незаметные настройки OPC сервера так влиять?

SCADAMaster
27.04.2015, 19:32
Считайте нужное значение не по битам, а целиком. Возьмите полученное значение, впишите его в калькулятор Windows и посмотрите чему равен нулевой бит.

Roman62rus
27.04.2015, 20:07
Так я и считываю не по битам, а целым словом (см. первое сообщение!). И в калькулятор заносил, нулю равен младший бит. Теперь, наоборот, есть смысл проверить, как будет считывать один этот бит. Но это только завтра.
Одновременное подключение и Модбаса, и девелопера не может портить картину?

SCADAMaster
27.04.2015, 20:17
А причем здесь тогда сервер? Что ему пришло, то он и выдал. Можете конечно для страховки проанализировать Modbus ответ устройства - какие именно данные поступают.
Остальные биты соответсвуют? Может быть чередование байт перепутано?

Roman62rus
27.04.2015, 21:32
Утопающий хватается за соломинку. Что-то делать ведь надо.
Сервер может быть и ни при чём. Но проверить надо всё. Чередование байт по умолчанию, да оно и работало прежде нормально. Штука в том, что все остальные входы контроллера считываются правильно (хотя, если уж проверять, то перебором всех возможных комбинаций, а на это нет ни времени, ни технической возможности). Попробую копировать входы в холдинг регистерс и читать уже их.

UPD Начал с того, что стал считывать отдельно этот бит. Он считывается правильно. Решил так и оставить, а вот причина такого эффекта так и осталась невыясненной.