Тема / Topic: Не записывается значение в дискретный параметр
fenestarh
Junior Member / Новичок
Участник № / Member № 6982
отправлено / posted
Доброго времени! Использую W_Word(16) для чтения значений по MBE. Работаю с битами, для записи использую следующую конструкцию: в кнопке, по нажатию передаю по XOR некую маску (maska = 2^n, где n - номер бита) в качестве источника использую Rout_Word(3) привязанный к этому же адресу что и приёмник, а приёмником выступает W_Word(16). Такая конструкция необходима для переключения 1-го бита.
Всё прекрасно работает, я могу менять состояния битов и всё прекрасно отображается до тех пор, пока в контроллере не поменяется значение этого регистра. Отображается всё корректно, в Rout_Word(3) лежит корректное число, а вот изменить состояния бита вышеуказанным способом, не получается. Складывается ощущение, что TRM думает, что бит не поменялся и не пишет новое значение в W_Word(16). Подскажите, как мне обойти это ограничение на запись, или может быть, есть иной способ с инвертированием битов?
Сообщения / Posts 14 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Надо каналу, связанному с приемником W_Word(16), в настройках периода пересчета "Единица измерения" = CALC EXE.
Сообщения / Posts 17320 | Из / From: Россия
| IP / IP: IP адрес / IP address |
fenestarh
Junior Member / Новичок
Участник № / Member № 6982
отправлено / posted
quote:Отправитель / Originally posted by AdAstra Technical Support: Надо каналу, связанному с приемником W_Word(16), в настройках периода пересчета "Единица измерения" = CALC EXE.
fenestarh
Junior Member / Новичок
Участник № / Member № 6982
отправлено / posted
Интересная ситуация получается.
Если я выставляю у канала Период пересчета (единицы) (38, FRQ_D) в CALC EXE, то при попытке записи в него из программы, следующие регистры (передаваемые аргумантами в программу и имеющие Период пересчёта CALC EXE) инициализируются 0-ми. Версия TRM 6.10.2
Да и сами каналы работают очень странно. Переключаю XOR-ом биты из кнопки. При "быстром" нажатии на кнопки могут не "переключаться", а могут и взводиться/слетать рядом стоящие биты.
Сообщения / Posts 14 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Пришлите, пожалуйста, Ваш тестовый проект (файл *.prj, в котором наблюдаются описанные эффекты) со ссылкой на этот пост и описанием порядка воспроизведения конфликтных ситуаций.
Сообщения / Posts 17320 | Из / From: Россия
| IP / IP: IP адрес / IP address |
fenestarh
Junior Member / Новичок
Участник № / Member № 6982
отправлено / posted
Прошу прощения за столь долгий ответ. Письмо с проектом отправил на hotline@adastra.ru.
Сообщения / Posts 14 | Из / From: Russia
| IP / IP: IP адрес / IP address |
fenestarh
Junior Member / Новичок
Участник № / Member № 6982
отправлено / posted
quote:Отправитель / Originally posted by AdAstra Technical Support: Если Вы задали в программе аргументы OUT и используете их значения в проекте, надо задать и функции их формирования, например,
Не совсем понял. Дело в том, что в функции я как раз и не могу работать с ними. При попытке записи в один из каналов, остальные заполняются нулями, хотя я их не трогаю.
Сообщения / Posts 14 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Программа при каждом своем вызове генерирует сигналы на всех OUT-аргументах. Если для какого-либо OUT-аргумента в программе нет функции, на нем генерируется то же значение, которое было на нем до текущего вызова программы. В Вашем случае "0".
Если функция есть, соответствующее значение вычисляется и передается на выход.
ДЛЯ ВСЕХ OUT-АРГУМЕНТОВ ДОЛЖНЫ БЫТЬ ФУНКЦИИ В ЭТОЙ ПРОГРАММЕ. Если в данной программе какие-то сигналы не должны формироваться, их надо формировать в другой программе.
В присланном Вами примере были введены указанные Выше дополнения и проведена проверка на эмуляторе ModSim32. Никаких нарушений не обнаружено.
Сообщения / Posts 17320 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Вам отправлен модифицированный проект с различными вариантами обеспечения необходимого функционала. Вам следует вернуть в примере IP-адрес Modbus-источника к Вашему.
Сообщения / Posts 17320 | Из / From: Россия
| IP / IP: IP адрес / IP address |