This is topic Принудительная запись в СПАД in forum Редактор Базы Каналов (Математика) / Channel Base Editor at Форум TRACE MODE: техническая поддержка.
Мне необходимо организовать принудительную запись в СПАД всех каналов на каждом цикле. Я завел канал "ЗАПИСЬ" типа OUTPUT подтип ДИАГНОСТИКА:ПОТЕРЯ_СПАД. Далее я пытался применить четыре варианта посылки значения (10 и 0x10 по документации непонятно имеются в виду шестнадцатеричные или десятичные числа) в этот канал: 1) На канал "ЗАПИСЬ" навесил процедуру УПРАВЛЕНИЕ, которая пишет 10 в ЗАПИСЬ_In 2) Завел канал типа I подтип управление, на который навесил процедуру УПРАВЛЕНИЕ, которая пишет 10 в ЗАПИСЬ_In 3) Написал IL метапрограмму, которая пишет 10 в ЗАПИСЬ_In 4) Завел постоянно изменяющийся канал типа I (СИСТЕМНЫЙ:время_выполнения), на который навесил процедуру ТРАНСЛЯЦИЯ, которая пишет 10 в ЗАПИСЬ_In Во всех четырех случаях получил один и тот же результат - в СПАД пишутся только изменяющиеся каналы. Каналы, значение которых неизменно, попадают в СПАД только в момент запуска проекта.
Как мне решить проблему принудительной записи на каждом цикле?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Что-то очень сложное у Вас получилось на FBD все можно было легко сделать. И не совсем понятно откуда значение 10, там разные есть значения (формат DEC)? Скорее всего у Вас значение канала, управления архивацией, не меняется по Вашему алгоритму. Попробуйте сделать обычную FBD - будет гораздо проще.
Posted by fherbeck (Участник № / Member № 1012) on :
quote:Отправитель / Originally posted by AdAstra Technical Support: Что-то очень сложное у Вас получилось на FBD все можно было легко сделать. И не совсем понятно откуда значение 10, там разные есть значения (формат DEC)?
Сейчас к сожалению нет под рукой документации, но насколько я помню, там перечислены различные значения для различных действий и написано, что любое другое значение - принудительное сохранение в СПАД всех каналов. 10 - это значение не попадающее в список, приведенный в документации - т.е. сохранение всех каналов. Вопрос следующий - перечисленные в доке значения десятичные или шестнадцатеричные?
quote:Отправитель / Originally posted by AdAstra Technical Support: Скорее всего у Вас значение канала, управления архивацией, не меняется по Вашему алгоритму. Попробуйте сделать обычную FBD - будет гораздо проще.
А я и делал обычную FBD состоящую из одного блока MOVE и пытался вешать ее как на процедуру управления канала ПОТЕРЯ СПАД, так и на процедуру трансляции этого же канала. Результат нулевой. Или нужно подключить эту FBD программу куда-то в другое место? Может быть в релизе 5.15 принудительное сохранение не работает? А у Вас случаем нет рабочего примера с принудительной записью в СПАД?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1) Формат значений десятичный. 2) Просто установка канала в значение 10 должного результата не даст. Дело в том, что принудительная запись в СПАД производится только по изменению значения канала с нулевого значения на ненулевое. То есть - FBD-программа должна с определенным периодом посылать в канал в течение одного такта значение 10, а потом снова сбрасывать его в ноль. Сделать это можно, например, контролируя значение остатка от деления текущих секунд на уставку периода в секундах и когда она равна 0 - по значению условия через блок SEL подавать на вход канала значение 10 или 0. Понадобится всего 4 блока: TIME, %, == и SEL.