PDA

Просмотр полной версии : Сетевые переменные



piligrim
01.07.2022, 12:55
Здравствуйте!
Подскажите пожалуйста как передать значение переменной с плавающей запятой по сети
от ПР200. В основном интересует как используются регистры "смещение десятичной точки",
т.к. регистры сетевых переменных в ПР200 имеют целочисленный тип INT (напр-р регистр 512)
Могу ли я использовать регистр к примеру 512 реле ПР200 для сетевой переменной с плавающей запятой?
Если нет, то как правильно это сделать? Спасибо!
OwenLogik при таком объявлении не ругается.

EFrol
01.07.2022, 14:52
Передать куда?

Dimensy
01.07.2022, 14:54
Могу ли я использовать регистр к примеру 512 реле ПР200 для сетевой переменной с плавающей запятой?
Если нет, то как правильно это сделать? Спасибо!
OwenLogik при таком объявлении не ругается.

Можете

61494

Или у вас в сети гуляет целочисленная переменная, которую на обоих концах нужно представить с запятой?

piligrim
01.07.2022, 15:16
ИПП120 должна прочитать регистр 512 - ПР200.

piligrim
01.07.2022, 15:17
ИПП120 должна прочитать регистр 512 - ПР200.

ИПП120 должна прочитать регистр 512 - ПР200.

piligrim
01.07.2022, 15:17
Передать куда?

ИПП120 должна прочитать регистр 512 - ПР200.

kondor3000
01.07.2022, 15:19
ИПП120 должна прочитать регистр 512 - ПР200.

Cкрин вам уже дали, адрес переменной с плавающей запятой будет 512, но займёт она 2 регистра 512 и 513.
Для экономии регистров, можно переменную умножить на 10 и конвертировать в INT, тогда передаёте целочисленную через 1 регистр 512, а в панели ставите 1 знак после запятой (либо конвертируете обратно и делите на 10 в других устройствах)
Например температура 23.5, при умножении и конвертации получаете 235, передаёте в панель одним регистром, в панели (с одним знаком после запятой) будет 23.5

piligrim
01.07.2022, 15:27
Можете

61494

Или у вас в сети гуляет целочисленная переменная, которую на обоих концах нужно представить с запятой?

Спасибо за ответ.
Но в карте адресов регистров для ПР200 адрес регистра 512 у ПР200 представлен типом INT
и даны адреса регистров для смещения плавающей точки. Хотелось бы узнать как это использовать при случае.

kondor3000
01.07.2022, 17:57
Спасибо за ответ.
Но в карте адресов регистров для ПР200 адрес регистра 512 у ПР200 представлен типом INT
и даны адреса регистров для смещения плавающей точки. Хотелось бы узнать как это использовать при случае.

Какую переменную вы назначите, такая и будет, читайте мой пост выше.
INT и WORD занимает 1 регистр или 16 бит, DWORD и REAL (FLOAT) два регистра (два WORD) или 32 бита. Учите типы и представление переменных .

Dimensy
01.07.2022, 20:31
Спасибо за ответ.
Но в карте адресов регистров для ПР200 адрес регистра 512 у ПР200 представлен типом INT
и даны адреса регистров для смещения плавающей точки. Хотелось бы узнать как это использовать при случае.

Т.е., у вас есть ПР200 с какой-то зашитой в него программой и вы хотите к нему подключить панель ИПП120, так? Что тогда за регистры для смещения плавающей точки?

piligrim
04.07.2022, 08:57
Т.е., у вас есть ПР200 с какой-то зашитой в него программой и вы хотите к нему подключить панель ИПП120, так? Что тогда за регистры для смещения плавающей точки?

Здравствуйте.
Да, именно так!
Во вложении, шаблон сетевого устройства. Регистры про которые идет речь dp1 - dp4

Dimensy
04.07.2022, 10:34
Здравствуйте.
Да, именно так!
Во вложении, шаблон сетевого устройства. Регистры про которые идет речь dp1 - dp4

1. регистры смещения точки dp1 - dp4 - это для аналоговых входов AI1_INT - AI4_INT, т.е. к 512 регистру не имеют значение.
2. а вы уверены, что именно этот шаблон используется в вашей программе?

piligrim
04.07.2022, 10:46
1. регистры смещения точки dp1 - dp4 - это для аналоговых входов AI1_INT - AI4_INT, т.е. к 512 регистру не имеют значение.
2. а вы уверены, что именно этот шаблон используется в вашей программе?
Спасибо за разъяснение.
Я использую именно ПР200 и ИПП120 в проекте.
И наверное это единственный шаблон адресов регистров для ПР200.:confused:
Скачан с онлайн базы шаблонов именно для этого устройства.
Или есть еще какое то ПР200 о котором я не знаю?:(

Dimensy
04.07.2022, 14:46
Спасибо за разъяснение.
Я использую именно ПР200 и ИПП120 в проекте.
И наверное это единственный шаблон адресов регистров для ПР200.:confused:
Скачан с онлайн базы шаблонов именно для этого устройства.
Или есть еще какое то ПР200 о котором я не знаю?:(

Если у вас есть доступ к коду программы, вы можете сами нарисовать какую угодно карту регистров для ПР-ки, например сделать регистр 512 не для int а для float (будет занимать тогда 512 и 513 регистры)

kondor3000
04.07.2022, 15:19
Спасибо за разъяснение.
Я использую именно ПР200 и ИПП120 в проекте.
И наверное это единственный шаблон адресов регистров для ПР200.:confused:
Скачан с онлайн базы шаблонов именно для этого устройства.
Или есть еще какое то ПР200 о котором я не знаю?:(

Не забивайте себе голову и не морочте голову людям. Нафига вам этот шаблон? Это и не шаблон вовсе, а карта регистров доступных пользователю ПР.
Если вы пишите программу, то и назначайте сами регистры. Все уже написано выше. Для обмена используются регистры с 512 до 575 (всего 64 шт.), если ПР слейв.
И прочитайте внимательно, что написал, про уменьшение кол-ва используемых регистров.

piligrim
07.07.2022, 08:42
Здравствуйте.
С регистрами разобрались. Вопросов по ним пока больше нет.)
Скажите пожалуйста, блоки bm_in_ и In-to-Var (собрать/разобрать битовую маску) в симуляторе не работают?

kondor3000
07.07.2022, 09:32
Здравствуйте.
С регистрами разобрались. Вопросов по ним пока больше нет.)
Скажите пожалуйста, блоки bm_in_ и In-to-Var (собрать/разобрать битовую маску) в симуляторе не работают?

Сбор и разбор маски работает в симуляторе. На самом деле макросы сбора и разбора маски очень простые, см скрин 615526155061553
Советую написать свои на 8, 12, 16 бит

piligrim
07.07.2022, 10:02
Я понимаю что они простые, но вчера проверял несколько раз. В симуляторе не работали.

kondor3000
07.07.2022, 10:14
Я понимаю что они простые, но вчера проверял несколько раз. В симуляторе не работали.

Не работает в симуляторе, если вы переменные не сделали энергонезависимыми (хоть на время), или переменная не подключена, например к выходу (или не выведена, например на экран). Выше 3 скрин работа в симуляторе.

piligrim
07.07.2022, 10:44
Да понял. Спасибо!