Понял) То есть без дополнительного тэга никак.
Понял) То есть без дополнительного тэга никак.
Последний раз редактировалось energvk; 15.12.2014 в 15:41.
Подскажите, пожалуйста:
Объявляю в конфигурации ПЛК MODBUS TCP Master, создаю в нём несколько тэгов и среди них тэг: 32bit output module
Создаю в Master OPC Server Modbus TCP SLAVE с соответствующим набором тэгов.
Присваиваю 32bit output module в ПЛК значение 16#FFFFFF00 - вижу в сервере правильное значение,
Присваиваю 16#FFFFFF01, значение в сервере не меняется - 16#FFFFFF00, хотя вижу в "запросах" данные передаются корректно.
Присваиваю 16#FFFFFFFF, значение в сервере 0.
Меняю в сервере свойство тэга "тип данных в сервере" с UINT32 на DOUBLE и всё становится хорошо.
Вопрос: почему не работает тип данных в устройстве UINT32 = в сервере UINT32 - для тэга ПЛК 32bit output module ?
Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.
Ошибка проявилась.
Ошибка будет исправлена в следующей версии (3.1.3)
Спасибо.
Сообщите, пожалуйста когда появится новая версия.
Вопрос для самоконтроля: для того чтобы тэг TCP мастера работал в режиме передачи "по изменению значения", период опроса ставим в ноль, правильно? Уже поставил и работает, спрашиваю, потому что в ПЛК для этого есть отдельная опция "by value change", а здесь нет.
Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.
Новая версия выложена на сайт.
Спасибо.
Хочу получать время последнего удачного опроса. Создаю тег timeofpoll (server_only, int32). В скрипте после чтения прописываю:
Но после опроса никаких значений нет. Что я делаю не правильно?Код:-- Initialization function OnInit() end -- Uninitialization function OnClose() end -- Processing function OnRead() val,qual=server.ReadCurrentTag(); if qual==192 then timeofpoll= time.TimeNow( ); end; end
Вы делаете неправильно. Во первых, вы не производите запись в тег (для этого есть специальные функции). Во-вторых тег ServerOnly никак не может определить был ли опрос корректным или нет. В-третьих, вы пытаетесь в тег типа Int записать время - так не получится.
Вам нужно сделать так - при помощи тега ServerOnly отследить признак качества другого тега, который непосредственно опрашивает регистр. Если признак будет достоверным, то произвести запись в текущий тег любого значения - оно запишется с текущей меткой времени.
function OnRead()
val,qual=server.ReadTagByRelativeName("Tag1");
if qual==192 then
server.WriteCurrentTag(true,192);
end;
end
На верхнем уровне - отслеживайте метку времени времени этой переменной. В MasterSCADA для этого есть функция расчета TimeStamp( ), также ФБ "Метка времени" (закладка "Работа со временем" палитры ФБ).
Спасибо.
Огромное спасибо, всё получилось.
Выявился странный глюк. Почему то опрос устройства повторяется несколько раз:
Количество повторов равняется заданному количеству повторов при ошибке, но при этом не выдерживается время между повторами. И ошибок нет при опросе. Т.е. все переменные ОК, кроме тех, которые SERVER_ONLY (они COM_FAILURE)Код:06-01-2015 21:01:16.087 гайдара-99а.гайдара-99а:Стоп опроса устройства (t = 3101 ms) (H42 0,3091,10 ) 06-01-2015 21:01:12.986 гайдара-99а.гайдара-99а:Старт опроса устройства 06-01-2015 21:01:12.986 гайдара-99а.гайдара-99а:Стоп опроса устройства (t = 8099 ms) (H42 0,3091,8 ) 06-01-2015 21:01:04.886 гайдара-99а.гайдара-99а:Старт опроса устройства 06-01-2015 21:01:04.886 гайдара-99а.гайдара-99а:Стоп опроса устройства (t = 8426 ms) (H42 0,3421,4 ) 06-01-2015 21:00:56.461 гайдара-99а.гайдара-99а:Старт опроса устройства 06-01-2015 21:00:56.461 гайдара-99а.гайдара-99а:Стоп опроса устройства (t = 8641 ms) (H42 0,3630,11 ) 06-01-2015 21:00:47.819 гайдара-99а.гайдара-99а:Старт опроса устройства 06-01-2015 21:00:47.819 гайдара-99а.гайдара-99а:Стоп опроса устройства (t = 8991 ms) (H42 0,1496,4 ) 06-01-2015 21:00:41.319 гайдара-99а:Соединение установлено хх.хх.ххх.х ххх 06-01-2015 21:00:38.829 гайдара-99а:Попытка соединения хх.хх.ххх.х ххх 06-01-2015 21:00:38.828 гайдара-99а.гайдара-99а:Старт опроса устройства 06-01-2015 21:00:38.822 Server:Cтарт конфигурации C:\ProgramData\InSAT\MasterOPC Universal Modbus Server\SERVERCFG\test.mbp 06-01-2015 21:00:38.822 Server:MasterOPC Universal Modbus Server Demo 32 Build - 3.1.3