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

Связь между InTouch и программируемыми логическими контроллерами, компьютерами
и другими устройствами.

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

Сообщение DenSV » Пн апр 07, 2008 3:12 pm

Помогите разрешить проблему!

На компе (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 (два регистра) – все нормально. Идет чтение и запись.


Заранее благодарен.
DenSV
 
Сообщения: 8
Зарегистрирован: Ср май 30, 2007 4:51 pm

Сообщение Admin » Чт апр 10, 2008 10:41 am

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

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

Все адреса Вашего контроллера должны быть в его спецификации, запись поддерживают не любые адреса.
Все, что Вам нужно, это правильно указать соответствие типов данных регистрам ПЛК.
Admin
Site Admin
 
Сообщения: 294
Зарегистрирован: Пт май 04, 2007 7:32 pm

Сообщение Din » Пт май 08, 2009 2:39 pm

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


Вернуться в Связь InTouch с ПЛК

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10