Страница 1 из 1

Проблема с записью в устройство

СообщениеДобавлено: Пн апр 07, 2008 3:12 pm
DenSV
Помогите разрешить проблему!

На компе (XP Pro, SP2) установлен InTouch 9.5 и KEPServer MODBUS Ethernet.

Код на чтение 03
Код на запись 16 (10 Нех)

Имею устройство, с которого нужно считывать и записывать данные по MODBUS TCP. Для хранения данных в устройстве выделяется 2 регистра (например, 400013 и 400014 по 16 бит каждый, тип WORD). Хотя само число хранится в регистре 400013. В 400014 всегда 0.
При чтении ОДНОГО регистра содержащего число (400013) проблем нет. При попытке записи в этот регистр устройство ругается и выдает

/// D register No. error (A No. outside the range has been specified.) ///

Решили, что для записи (и чтения тоже) корректно указывать два регистра. В хелпе для MODBUS Ethernet так вроде можно сделать если использовать массив 400013 [rows][cols], например 400013 [1][2] (или 400013 [2] ). В этом случае при чтении также все нормально, однако при попытке записи ругается уже InTouch:

/// Failed to poke item "400013 [2]" for Access Name "ys1700_frca1" ///

В чем беда???? Может, кто сталкивался? Есть подозрение, что ошибка в синтаксисе, тогда как указывать правильно в InTouch 9.5 и в KEPServer?


Примечание: Для сравнения воспользовались MBENET от wonderware.
При указании в строке Item Name для тега следующего адреса: 400013 I – возможно только чтение плюс KEPServer выдает ошибку (см выше).
Если указать 400013-400014 I (два регистра) – все нормально. Идет чтение и запись.


Заранее благодарен.

СообщениеДобавлено: Чт апр 10, 2008 10:41 am
Admin
В Интчае целые имеют по 32 бита, поэтому если Вы пишете такое целое в WORD то сервер ругается.
С другой стороны, в Интаче нет встроенных массивов, поэтому может возникать вторая ошибка. У целого можно взять нужный бит так INT.xx где xx=00-15

400013-400014 I - это и есть целое со знаком, как и 400013 L
U - целое без знака, F - действительное, а 400001-400002 M - четыре символа ASCII.

Все адреса Вашего контроллера должны быть в его спецификации, запись поддерживают не любые адреса.
Все, что Вам нужно, это правильно указать соответствие типов данных регистрам ПЛК.

СообщениеДобавлено: Пт май 08, 2009 2:39 pm
Din
А если необходимо поменять старший регистр с младшим, при чтении значения с плавающей запятой? То как тогда быть???