This is topic FBD распаковка битов регистров Modbus RTU in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
Задача: необходимо написать программу распаковки побитно 10 регистров. Распаковка этих регистров должна осуществляться постоянно и одновременно.
Написали, сейчас работает такой вариант: В шаблонах программ создана программа «Распаковка_битов». У нее есть один входной аргумент и 16 выходных.
В каналах узла создано 10 каналов класса CALL. Каждый из этих 10 каналов настроен на вызов одного и того же шаблона программы «Распаковка_битов».
Входной аргумент каждого из 10 каналов типа CALL связан со «своим» регистром протокола ModbusRTU. На данный момент программа работает при запуске профайлера, все биты регистров отображаются
Таким образом организована одновременная распаковка 10 регистров через вызов одного и того же шаблона программы.
Можно ли так делать? Не будет ли «конфликтов» при одновременной распаковке в один момент двух или более регистров? Или, все-таки, необходимо описывать функциональными блоками в программе распаковку каждого из 10 регистров отдельно?
Posted by Romсheg (Участник № / Member № 3792) on :
А не проще данные получать в каналы класса HEX16 напрямую, и работать с битами через его атрибуты бит1-бит16? А городить огород из подобных конструкций конечно можно, и это даже не противоречит канонам системы ТМ, но это, имхо, одевание штанов через голову...
Posted by sinegub_mihail (Участник № / Member № 4460) on :
Это мы слыхали что так можно, тогда встречный вопрос - если мне надо в разных программах пользоваться одним битом из 16 всех, как тогда ? вызывать весь канал HEX16 ???
Posted by Romсheg (Участник № / Member № 3792) on :
Зачем? Аргумент типа BOOL привязываете к атрибуту нужного бита этого канала и все...
Posted by sinegub_mihail (Участник № / Member № 4460) on :
не будет ли стопора...
Posted by Romсheg (Участник № / Member № 3792) on :
И вообще нет понятия "вызывать весь канал": передача данных в вызываемый шаблон - это передача данных, а не вызов канала. Если я передаю двухбайтовое значение в программу, то нет проблем выделить из него любой бит состояния, ведь побитовых или булевых операций никто не отменял. Что называется "в один клик" все делается.
Posted by A40 (Участник № / Member № 3999) on :
А какая разница? Я имею ввиду по скорости.
Posted by Romсheg (Участник № / Member № 3792) on :
А в чем вы видите "стопор"?
Posted by sinegub_mihail (Участник № / Member № 4460) on :
А не проще данные получать в каналы класса HEX16 напрямую, и работать с битами через его атрибуты бит1-бит16?
Объясни где и как пользоваться и настраивать атрибуты и как привязать аргумент экрана к этим битам
Posted by sinegub_mihail (Участник № / Member № 4460) on :
sinegub_mihail@ukr.net
Posted by sinegub_mihail (Участник № / Member № 4460) on :
еще есть вопрос по линейной интерполяции, в мониторах для DOS такой FBD блок не поддерживатеся, как его реализовать на techno ST
Posted by Romсheg (Участник № / Member № 3792) on :
Зачем что-то настраивать? У каждого канала HEX16 есть эти атрибуты. Откройте справочную систему по данному типу каналов - там все четко описано.
Как привязывать аргументы к атрибутам канала? Странный вопрос, потому что если вы этого не знаете, то вы ТМ6 видите в первый раз в жизни. Тут надо справочную систему с самого начала начинать читать тогда.
Posted by sinegub_mihail (Участник № / Member № 4460) on :
разобрался, не внимательный. спс
Posted by sinegub_mihail (Участник № / Member № 4460) on :
По поводу этого можете что то подсказать ????
1) вопрос по линейной интерполяции, в мониторах для DOS такой FBD блок не поддерживатеся, как его реализовать на techno ST ???
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Создать двумерный массив глобальных переменных и прямым арифметическим преобразованием обрабатывайте сигнал.