PDA

Просмотр полной версии : Приведение типов для связи с СП107



Bigcrash
27.05.2021, 14:32
Добрый день.
В свое время были куплены 2 электросчетчика АВВ, интегрированы в систему посредством сбора данных через ПЛК160М2. В карте регистров счетчика все виды энергий идут как Usigned, что в принципе понятно и логично. Подключил по RS232, создал WORDы (2 byte), загнал это все в СП107 и все было хорошо до прошлой недели, пока ..... в одном и счетчиков WORDa стало мало и показания превратились в галиматью. Быстро осознав свою ошибку, убрал Input Module, заменив их 32bit Input Module. Показания в ПЛК пришли в норму, а вот в СП107... Для 1 счетчика, у которого пока WORDa хватает все показывает ровно, а второй кажет хрен пойми что. Там порядок байт меняется (если да, то как их изменить в панели) или что я делаю не так? (в СП107 типы переменных переделал с WORD на DWORD разумеется).

Евгений Кислов
27.05.2021, 14:37
Добрый день.
В свое время были куплены 2 электросчетчика АВВ, интегрированы в систему посредством сбора данных через ПЛК160М2. В карте регистров счетчика все виды энергий идут как Usigned, что в принципе понятно и логично. Подключил по RS232, создал WORDы (2 byte), загнал это все в СП107 и все было хорошо до прошлой недели, пока ..... в одном и счетчиков WORDa стало мало и показания превратились в галиматью. Быстро осознав свою ошибку, убрал Input Module, заменив их 32bit Input Module. Показания в ПЛК пришли в норму, а вот в СП107... Для 1 счетчика, у которого пока WORDa хватает все показывает ровно, а второй кажет хрен пойми что. Там порядок байт меняется (если да, то как их изменить в панели) или что я делаю не так? (в СП107 типы переменных переделал с WORD на DWORD разумеется).

Добрый день.
Используйте библиотеку OwenCommunication - в ней есть функция WORD2_TO_DWORD (которая позволяет и порядок байт менять при конвертации).

Bigcrash
27.05.2021, 15:01
Евгений, в вашем посте (https://owen.ru/forum/showthread.php?t=31816) указывается, что
Библиотеку можно использовать в версиях CODESYS V3.5 SP11 Patch 5 и выше.
В CS 2.3 (для ПЛК 160) она будет работать?

Евгений Кислов
27.05.2021, 15:02
Евгений, в вашем посте (https://owen.ru/forum/showthread.php?t=31816) указывается, что
В CS 2.3 (для ПЛК 160) она будет работать?

В CS2.3 она не будет работать.
Но насколько я понял - вопрос-то у вас про СПК и CS3.5?

Bigcrash
27.05.2021, 15:07
Я неверно панель указал, не СП107, а СП307 (https://owen.ru/product/sp3xx) в связке с ПЛК160 (https://owen.ru/product/plk160). Можно ли такое осуществить через функциональную область для конкретных регистров?

A.Simonov
27.05.2021, 16:23
Я неверно панель указал, не СП107, а СП307 (https://owen.ru/product/sp3xx) в связке с ПЛК160 (https://owen.ru/product/plk160). Можно ли такое осуществить через функциональную область для конкретных регистров?

Добрый день.

Как вариант можно переставить данные на самом ПЛК, в любом нужном вам порядке и передать их в панель.
addrFloat объявляете как POINTER TO ARRAY [0..3] OF BYTE
55296

Плюс, как я помню в настройках панели была галочка позволяющая менять порядок регистров (находится в настройках интерфейса).

Bigcrash
27.05.2021, 16:39
Добрый день.

Как вариант можно переставить данные на самом ПЛК, в любом нужном вам порядке и передать их в панель.
addrFloat объявляете как POINTER TO ARRAY [0..3] OF BYTE
55296

Плюс, как я помню в настройках панели была галочка позволяющая менять порядок регистров (находится в настройках интерфейса).

Галочка есть, но она применит настройки ко всему проекту.

A.Simonov
27.05.2021, 16:57
Галочка есть, но она применит настройки ко всему проекту.

Тогда только внутри ПЛК менять байты/регистры.
Можно еще с помощью библиотеки OSCAT (там есть функции DWORD_OF_BYTE, DWORD_OF_WORD, SWAP_BYTE, SWAP_BYTE2 и т.п.)
https://ftp.owen.ru/CoDeSys3/98_Books/oscat_basic333_ru.pdf
https://ftp.owen.ru/CoDeSys23/05_Library/02_Library/oscat_basic_333.lib