Разрабатываю программу для М100s... периодически возникают глупые вопросы, ответы на большинство из них я нахожу в справке, на форуме или порывшись в программах для вентиляции на ZetFBD... Но это удается не всегда. Вот первый вопрос:
Как разделить дробную переменную? Пробовал блок DIV - но проверка дает ошибку и говорит что с остатком можно делить только целочисленное значение. А блока для деления дробного я не нашел...
Хм. Действительно дробный тип не делится, думаю его тогда надо исключить из списка, дабы не смущать пользователей.
Я делаю так 2.5\0.5=5 = 2.5* (1\0.5)=2.5*2=5.
Цитата: VoronovMaksim88 от 29 марта 2016, 14:44:17
Хм. Действительно дробный тип не делится, думаю его тогда надо исключить из списка, дабы не смущать пользователей.
Я делаю так 2.5\0.5=5 = 2.5* (1\0.5)=2.5*2=5.
Во, нашел.. оказывается в блоке Mull можно выбрать деление вместо умножения... чтобы не умножать на дроби
Да, точно, вспомнил !!!
А это есть в справке.
Небольшой вопрос.
Как мне сформировать импульс записи в подчиненное устройство?
Ситуация такая:
У меня контроллер M100 по одному порту мастер, по второму слейв. Мастер он для панели Z033.
Уставку температуры я буду хранить в EEPROM контроллера. Нужно чтобы была возможность записывать эту уставку со скада-системы. Также уставка должна меняться в панели Z033. При изменении уставки в панели - она должна поменяться в контроллере, и при замене уставки со скады она должна поменяться в контроллере и в панели.
Пока я сделал так, как в скрине. Сигнал en на запись из панели тоже пока не придумал откуда взять.
Пока не сообразил как это лучше сделать.
Извините, очень занят, отвечу всем вечером.
Максима пропустим вперед.
Нужна двухсторонняя синхронизация СКАДы и панели?
Да, понял.
Стандартный макрос работы с панелью вам в помощь.
В открытом виде в прицепе.
Называется Z033_set
Цитата: mike от 30 марта 2016, 12:48:42
Да, понял.
Стандартный макрос работы с панелью вам в помощь.
В открытом виде в прицепе.
Называется Z033_set
Так я его и использовал.
Не понимаю как мне сформировать импульс на запись в панель при изменении переменной со скады.
И почему-то если я в отладке меню "руками" переменную в EEPROM контроллера - она не изменяется в программе. Видимо что-то не так делаю...
хотя похоже начал что-то понимать :) может сейчас и разберусь
Суть простая.
В исходном состоянии (нет внешней записи или записи по сети) происходит чтение уставки из панели (блок R) и запись полученного значения в переменную SET, которая имеет признак сохранения в ПЗУ и доступ по сети на чтение/запись.
В случае записи по сети, в первом цикле программы (с момента факта записи) происходит установка RS триггера, который блокирует в этом же цикле функцию чтения из панели.
Одновременно, с приходом строба от детектора записи по сети, сбрасывается счетчик. Этот счетчик нужен для того, что бы не убить ПЗУ в панели, если изменения со скады идут функцией JOG.
Через 5 секунд после последнего детектирования записи на выходе блока И формируется импульс, разрешающий запись значения в регистр панели.
После успешной отправки команды происходит самосброс и переход в режим чтения.
Таким образом происходит двухсторонняя синхронизация данных.
Не уверен на 100 процентов, но попробуйте так
Развернуть макрсос с уставкой, там есть переменная set, это и есть уставка. И есть два входа set и ^wr_set на них надо подать уставку со скады и строб записи этой уставки.
Ответ мой не точный, потому что для точного ответа надо самому попробовать.
Со скады писать сразу в переменную СЕТ.
Строб выдаст автоматом, как запишите в переменную.
Внешняя запись в этом макросе не используется в вашей задаче.
Если скады под рукой нет, то для проверки создайте еще один контроллер в этом же проекте, для него создайте мнемосхему. На мнемосхеме поставьте поле ввода. Соедините контроллеры через виртуальный порт через рабочую станцию.
Отлаживайте в симуляторе.
Цитата: mike от 30 марта 2016, 13:22:00
Со скады писать сразу в переменную СЕТ.
Строб выдаст автоматом, как запишите в переменную.
Внешняя запись в этом макросе не используется в вашей задаче.
Если скады под рукой нет, то для проверки создайте еще один контроллер в этом же проекте, для него создайте мнемосхему. На мнемосхеме поставьте поле ввода. Соедините контроллеры через виртуальный порт через рабочую станцию.
Отлаживайте в симуляторе.
Да, я разобрался. Спасибо!
Во время наладки один момент - иметь бы общий экран переменных модбас... Так быстрее бы сообразил.
Цитата: mike от 30 марта 2016, 13:22:00
Если скады под рукой нет, то для проверки создайте еще один контроллер в этом же проекте, для него создайте мнемосхему. На мнемосхеме поставьте поле ввода. Соедините контроллеры через виртуальный порт через рабочую станцию.
Отлаживайте в симуляторе.
То есть есть возможность использовать симулятор вместо скады ? А поподробнее об этом можно?
Попробовал со скадой. Все работает :)
Цитата: VoronovMaksim88 от 30 марта 2016, 13:51:14
Цитата: mike от 30 марта 2016, 13:22:00
Если скады под рукой нет, то для проверки создайте еще один контроллер в этом же проекте, для него создайте мнемосхему. На мнемосхеме поставьте поле ввода. Соедините контроллеры через виртуальный порт через рабочую станцию.
Отлаживайте в симуляторе.
То есть есть возможность использовать симулятор вместо скады ? А поподробнее об этом можно?
Есть, чуть позже расскажу как
Прошу понимающих людей объяснить мне в чём проблема. При проверке вылетает ошибка "переменная не должна быть константой", но она у меня и так не константа.
Из-за мнемосхемы ругается.
попробуйте через промежуточную переменную.
или создайте вход ФБ и к нему снаружи подключите VAR59
Коллеги, кто подскажет как изменить путь по умолчанию экспортирования файла?
А вроде в последнюю открытую папку сохраняет
У меня всё время в "мои документы" сохраняет.
День добрый.
Кто подскажет как решить задачку:
Есть контроллер М100. Он по com0 слэйв. Его постоянно опрашивает OPC сервер, и иногда (пусть например раз в сутки), что-то записывает.
Вопрос: как контроллеру понять опрашивал ли его сервер в течении последних 10-ти секунд ? Иначе говоря возможно ли реализовать контроль связи с мастером, если мастер не пишет постоянно какую-нибудь переменную ?
Если мастер периодически (раз в секунду) пишет, то тут проблем нет. Ловим стробы записи и всё хорошо.
К сожалению, такой возможности нет. Пока не реализован блок, который определяет, что происходит чтение регистров по Modbus.
Понял. Спасибо.
Надеюсь есть в планах.
Я тоже просил эту функцию.
У некоторых устройств аппаратно имеется функция таймаута связи с мастером, для выставления аварийных значений выходов.
Обычно, как Вы сами писали, создается переменная,
в которую пишется +1. Если значение не меняется, то значит связи нет.
День добрый.
Почему при сортировке по адресу за номером 15 не следует номер 16 ?
В разных макросах находятся переменные.
Кстати, было бы интересно услышать мнения и предложения по работе сортировщика
Да нет, вроде не в разных. Тут видимо особенность сортировки древовидного списка по разным полям. Те элементы, которые являются ветками не перемещаются, поэтому макрос AIN_MUX вклинился между переменными главной схемы. А если попробовать сначала отсортировать по названию, а потом по адресу?
Попробую
Помогла перезагрузка. :)
В следующий раз попробую сперва сортировать про имени.
Да, сортировка по названию, а потом по адресу решает проблему.
Подскажите, а есть ли кнопка "снять все точки отладки" ?
Есть.
Alt + F9
Так же напомню, что все горячие клавиши доступны для просмотра и редактирования в меню настроек
А вот и нет ))
Alt+F9 снимает точки отладки только с выделенных вх\вых, но не снимет точки отладки если они внутри макроса.
Я имел ввиду какую-то глобальную кнопку, что снять точки отладки во всём проекте.
А!
Пишите в пожелалки.
Можно выделить все точки в списке (с помощью кнопки Shift) и удалить их все вместе
В списке переменных ? Или есть какой-то список точек отладки ?
Все же удобно было бы просто кнопку "снять все ТО"
Есть список точек отладки, там можно и условия остановки настроить. К сожалению, пока в документации нет подробного описания этой возможности, постараемся добавить в ближайшем релизе.
Отлично. Спасибо.
Цитата: Artem от 25 сентября 2016, 15:27:15
Есть список точек отладки, там можно и условия остановки настроить. К сожалению, пока в документации нет подробного описания этой возможности, постараемся добавить в ближайшем релизе.
Как отобразить этот список? У меня под поляной ничего больше нет.
в меню окна
Цитата: serge197a от 05 ноября 2016, 13:41:19
в меню окна
Вроде везде посмотрел. Нигде нет "Точки отладки". Можете на картинке ткнуть?
тут