Helic
Forum Member / Участник форума
Участник № / Member № 3274
отправлено / posted
Здравствуйте. Выходной аргумент программы имеет тип "string" и привязан к атрибуту "Коментарий" канала.Каким образом передать значение аргумента программы в Отчет тревог.
Сообщения / Posts 45 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Baikal_E
Forum Haunter / Завсегдатай форума
Участник № / Member № 4135
отправлено / posted
Вот один из способов : в вашей программе каждому значению типа string присваиваете порядковый номер от 1 до N. Например: 1 - давление превышено; 2 - температура пониженная; .. 8 - недостаточно горючего. ... N - экстренный останов.
Далее создаете пользовательский словарь с сообщениями, которые в программе имеют номера. Далее создаете канал, связанный с системной переменной @Message типа OUTPUT и этот канал связываете с пользовательским словарем. Затем из программы подаете во входное значение созданного канала номер сообщения. В результате вы получите в Отчете тревог ваше значение типа string . Если значений типа string больше 8, то придется создать еще один пользовательский словарь с каналом, связанным с системной переменной @Message типа OUTPUT и создать еще один канал Call, который вызывает программу. В этой программе все атрибуты (из предыдущей программы) с номером больше 8 переопределить, т.е. 9 будет 1 10 будет 2 и т.д до 8 И также значения от 1 до 8 посылаете на вход второго созданного канала. Таким образом можете читать в отчете тревог уже 16 атрибутов типа string.
Сообщения / Posts 127 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Запись длинных строк в канал CALL
Для канала CALL.STRING:
если в канале установлен флаг Отчет тревог (43,EB), при каждом изменении CALL.STRING.R значение соответствующего аргумента (или комментарий) записывается в ОТ (не более 48 символов);
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Baikal_E
Forum Haunter / Завсегдатай форума
Участник № / Member № 4135
отправлено / posted
Если я правильно понял, канал CALL.STRING - это канал Call с типом вызова String. C какого релиза появился данный тип вызова канала Call?
Сообщения / Posts 127 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Baikal_E
Forum Haunter / Завсегдатай форума
Участник № / Member № 4135
отправлено / posted
Что в текущем релизе работает-это понятно . Скажите, пожалуйста, с какого релиза появился данный канал , т.к. мы используем в проектах разные релизы.
Сообщения / Posts 127 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Selya
Forum Member / Участник форума
Участник № / Member № 6591
отправлено / posted
Сделал, как посоветовали во 2ом сообщении темы. Канал Message_OUT привязан к системной переменной @Message и к Пользовательскому словарю.
Далее в программе на Техно ST отправляю в Отчёт тревог сообщения следующим образом:
отправлено / posted
Действительно, в одном такте канал может выдать только одно сообщение из привязанного к нему "Словаря сообщений". Чтобы выдать последовательно 2 сообщения, надо предусмотреть, чтобы программа выдавала соответствующие команды последовательно на разных тактах.
Кроме того, если количество передаваемых таким образом сообщений ОТ больше 8, целесообразно использовать не системную переменную @Message и "Пользовательский словарь", а канал HEX16 с установленным флажком "Параметры/Вид представления DEC" (см. документацию "Архивирование/Отчет тревог узла/Сообщения по каналам/Сообщения по каналам HEX16 и HEX32").
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Selya
Forum Member / Участник форума
Участник № / Member № 6591
отправлено / posted
Действительно, этот вариант с HEX16/HEX32 мне больше подходит. А есть какой-то простой способ прервать выполнение программы и перейти в следующий такт? Не хочется изобретать велосипед.
Сообщения / Posts 32 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Если 2 сообщения всегда должны выводиться в ОТ последовательно, то может быть есть смысл объединить их в одно сообщение? Если выбор сообщения зависит от каких-то условий, то при правильном построении программы будет выводиться только одно сообщение.
Selya
Forum Member / Участник форума
Участник № / Member № 6591
отправлено / posted
Нет, сообщения в ОТ выводятся не последовательно, между ними есть ещё операции, которые тоже могут выводиться в ОТ через Словари сообщений Для_канала_Событие, Для_FLOAT. Про goto уже догадался. С ним и без того сложная программа получается ещё запутанней.
Сообщения / Posts 32 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Selya
Forum Member / Участник форума
Участник № / Member № 6591
отправлено / posted
Пришёл к такому не очень красивому, но работающему решению: на каждое сообщение создаю собственный канал и все эти каналы привязываю к одному Словарю сообщений. Тогда вводимые последовательно сообщения будут последовательно отображаться: