Форум Zentec

Программное обеспечение => Вопросы по zWorkbench => Тема начата: Max от 29 марта 2016, 14:37:49

Название: Вопросы
Отправлено: Max от 29 марта 2016, 14:37:49
Разрабатываю программу для М100s... периодически возникают глупые вопросы, ответы на большинство из них я нахожу в справке, на форуме или порывшись в программах для вентиляции на ZetFBD... Но это удается не всегда. Вот первый вопрос:
Как разделить дробную переменную? Пробовал блок DIV - но проверка дает ошибку и говорит что с остатком можно делить только целочисленное значение. А блока для деления дробного я не нашел...
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 29 марта 2016, 14:44:17
Хм. Действительно дробный тип не делится, думаю его тогда надо исключить из списка, дабы не смущать пользователей.

Я делаю так 2.5\0.5=5    =    2.5* (1\0.5)=2.5*2=5.
Название: Re: Вопросы
Отправлено: Max от 29 марта 2016, 14:47:18
Цитата: VoronovMaksim88 от 29 марта 2016, 14:44:17
Хм. Действительно дробный тип не делится, думаю его тогда надо исключить из списка, дабы не смущать пользователей.

Я делаю так 2.5\0.5=5    =    2.5* (1\0.5)=2.5*2=5.
Во, нашел.. оказывается в блоке Mull можно выбрать деление вместо умножения... чтобы не умножать на дроби
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 29 марта 2016, 15:00:01
Да, точно, вспомнил !!!
Название: Re: Вопросы
Отправлено: mike от 29 марта 2016, 15:27:16
А это есть в справке.
Название: Re: Вопросы
Отправлено: Max от 30 марта 2016, 12:23:08
Небольшой вопрос.
Как мне сформировать импульс записи в подчиненное устройство?
Ситуация такая:
У меня контроллер M100 по одному порту мастер, по второму слейв. Мастер он для панели Z033.
Уставку температуры я буду хранить в EEPROM контроллера. Нужно чтобы была возможность записывать эту уставку со скада-системы. Также уставка должна меняться в панели Z033. При изменении уставки в панели - она должна поменяться в контроллере, и при замене уставки со скады она должна поменяться в контроллере и в панели.
Пока я сделал так, как в скрине. Сигнал en на запись из панели тоже пока не придумал откуда взять.
Пока не сообразил как это лучше сделать.
Название: Re: Вопросы
Отправлено: mike от 30 марта 2016, 12:42:00
Извините, очень занят, отвечу всем вечером.
Максима пропустим вперед.
Нужна двухсторонняя синхронизация СКАДы и панели?
Название: Re: Вопросы
Отправлено: mike от 30 марта 2016, 12:48:42
Да, понял.
Стандартный макрос работы с панелью вам в помощь.

В открытом виде в прицепе.
Называется Z033_set
Название: Re: Вопросы
Отправлено: Max от 30 марта 2016, 12:56:01
Цитата: mike от 30 марта 2016, 12:48:42
Да, понял.
Стандартный макрос работы с панелью вам в помощь.

В открытом виде в прицепе.
Называется Z033_set
Так я его и использовал.
Не понимаю как мне сформировать импульс на запись в панель при изменении переменной со скады.
И почему-то если я в отладке меню "руками" переменную в EEPROM контроллера - она не изменяется в программе. Видимо что-то не так делаю...
хотя похоже начал что-то понимать :) может сейчас и разберусь
Название: Re: Вопросы
Отправлено: mike от 30 марта 2016, 13:02:31
Суть простая.
В исходном состоянии (нет внешней записи или записи по сети) происходит чтение уставки из панели (блок R) и запись полученного значения в переменную SET, которая имеет признак сохранения в ПЗУ и доступ по сети на чтение/запись.

В случае записи по сети, в первом цикле программы (с момента факта записи) происходит установка RS триггера, который блокирует в этом же цикле функцию чтения из панели.
Одновременно, с приходом строба от детектора записи по сети, сбрасывается счетчик. Этот счетчик нужен для того, что бы не убить ПЗУ в панели, если изменения со скады идут функцией JOG.

Через 5 секунд после последнего детектирования записи на выходе блока И формируется импульс, разрешающий запись значения в регистр панели.

После успешной отправки команды происходит самосброс и переход в режим чтения.

Таким образом происходит двухсторонняя синхронизация данных.
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 30 марта 2016, 13:04:02
Не уверен на 100 процентов, но попробуйте так
Развернуть макрсос с уставкой, там есть переменная set, это и есть уставка. И есть два входа set и ^wr_set на них надо подать уставку со скады и строб записи этой уставки.

Ответ мой не точный, потому что для точного ответа надо самому попробовать.


Название: Re: Вопросы
Отправлено: mike от 30 марта 2016, 13:22:00
Со скады писать сразу в переменную СЕТ.
Строб выдаст автоматом, как запишите в переменную.
Внешняя запись в этом макросе не используется в вашей задаче.
Если скады под рукой нет, то для проверки создайте еще один контроллер в этом же проекте, для него создайте мнемосхему. На мнемосхеме поставьте поле ввода. Соедините контроллеры через виртуальный порт через рабочую станцию.
Отлаживайте в симуляторе.
Название: Re: Вопросы
Отправлено: Max от 30 марта 2016, 13:25:09
Цитата: mike от 30 марта 2016, 13:22:00
Со скады писать сразу в переменную СЕТ.
Строб выдаст автоматом, как запишите в переменную.
Внешняя запись в этом макросе не используется в вашей задаче.
Если скады под рукой нет, то для проверки создайте еще один контроллер в этом же проекте, для него создайте мнемосхему. На мнемосхеме поставьте поле ввода. Соедините контроллеры через виртуальный порт через рабочую станцию.
Отлаживайте в симуляторе.
Да, я разобрался. Спасибо!
Во время наладки один момент - иметь бы общий экран переменных модбас... Так быстрее бы сообразил.
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 30 марта 2016, 13:51:14
Цитата: mike от 30 марта 2016, 13:22:00
Если скады под рукой нет, то для проверки создайте еще один контроллер в этом же проекте, для него создайте мнемосхему. На мнемосхеме поставьте поле ввода. Соедините контроллеры через виртуальный порт через рабочую станцию.
Отлаживайте в симуляторе.

То есть есть возможность использовать симулятор вместо скады ? А поподробнее об этом можно?
Название: Re: Вопросы
Отправлено: Max от 30 марта 2016, 13:58:13
Попробовал со скадой. Все работает :)
Название: Re: Вопросы
Отправлено: mike от 30 марта 2016, 14:01:51
Цитата: VoronovMaksim88 от 30 марта 2016, 13:51:14
Цитата: mike от 30 марта 2016, 13:22:00
Если скады под рукой нет, то для проверки создайте еще один контроллер в этом же проекте, для него создайте мнемосхему. На мнемосхеме поставьте поле ввода. Соедините контроллеры через виртуальный порт через рабочую станцию.
Отлаживайте в симуляторе.

То есть есть возможность использовать симулятор вместо скады ? А поподробнее об этом можно?

Есть, чуть позже расскажу как
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 31 марта 2016, 05:01:02
Прошу понимающих людей объяснить мне в чём проблема. При проверке вылетает ошибка "переменная не должна быть константой", но она у меня и так не константа.
Название: Re: Вопросы
Отправлено: serge197a от 31 марта 2016, 09:55:04
Из-за мнемосхемы ругается.
попробуйте через промежуточную переменную.
или создайте вход ФБ и к нему снаружи подключите VAR59
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 20 апреля 2016, 14:03:13
Коллеги, кто подскажет как изменить путь по умолчанию экспортирования файла?
Название: Re: Вопросы
Отправлено: mike от 20 апреля 2016, 14:19:39
А вроде в последнюю открытую папку сохраняет
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 20 апреля 2016, 14:49:05
У меня всё время в "мои документы" сохраняет.
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 16 июня 2016, 08:11:28
День добрый.
Кто подскажет как решить задачку:

Есть контроллер М100. Он по com0 слэйв. Его постоянно опрашивает OPC сервер, и иногда (пусть например раз в сутки), что-то записывает.

Вопрос: как контроллеру понять опрашивал ли его сервер в течении последних 10-ти секунд ? Иначе говоря возможно ли реализовать контроль связи с мастером, если мастер не пишет постоянно какую-нибудь переменную ?

Если мастер периодически (раз в секунду) пишет, то тут проблем нет. Ловим стробы записи и всё хорошо.
Название: Re: Вопросы
Отправлено: Artem от 16 июня 2016, 08:44:30
К сожалению, такой возможности нет. Пока не реализован блок, который определяет, что происходит чтение регистров по Modbus.
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 16 июня 2016, 08:50:30
Понял. Спасибо.
Надеюсь есть в планах.
Название: Re: Вопросы
Отправлено: mike от 16 июня 2016, 09:08:01
Я тоже просил эту функцию.
Название: Re: Вопросы
Отправлено: serge197a от 16 июня 2016, 09:18:32
У некоторых устройств аппаратно имеется функция таймаута связи с мастером, для выставления аварийных значений выходов. 

Обычно, как Вы сами писали, создается переменная,
в которую пишется +1.  Если значение не меняется, то значит связи нет.
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 17 августа 2016, 14:38:04
День добрый.
Почему при сортировке по адресу за номером 15 не следует номер 16 ?
Название: Re: Вопросы
Отправлено: mike от 17 августа 2016, 15:02:39
В разных макросах находятся переменные.
Кстати, было бы интересно услышать мнения и предложения по работе сортировщика
Название: Re: Вопросы
Отправлено: Artem от 17 августа 2016, 16:40:17
Да нет, вроде не в разных. Тут видимо особенность сортировки древовидного списка по разным полям. Те элементы, которые являются ветками не перемещаются, поэтому макрос AIN_MUX вклинился между переменными главной схемы. А если попробовать сначала отсортировать по названию, а потом по адресу?
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 17 августа 2016, 18:10:08
Попробую
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 18 августа 2016, 03:21:15
Помогла перезагрузка.  :)
В следующий раз попробую сперва сортировать про имени.
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 18 августа 2016, 05:06:01
Да, сортировка по названию, а потом по адресу решает проблему.
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 24 сентября 2016, 15:02:10
Подскажите, а есть ли кнопка "снять все точки отладки" ?
Название: Re: Вопросы
Отправлено: mike от 24 сентября 2016, 16:14:25
Есть.
Alt + F9
Так же напомню, что все горячие клавиши доступны для просмотра и редактирования в меню настроек
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 24 сентября 2016, 16:42:55
А вот и нет ))

Alt+F9 снимает точки отладки только с выделенных вх\вых, но не снимет точки отладки если они внутри макроса.

Я имел ввиду какую-то глобальную кнопку, что снять точки отладки во всём проекте. 
Название: Re: Вопросы
Отправлено: mike от 24 сентября 2016, 17:53:32
А!
Пишите в пожелалки.
Название: Re: Вопросы
Отправлено: Artem от 24 сентября 2016, 21:25:22
Можно выделить все точки в списке (с помощью кнопки Shift) и удалить их все вместе
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 25 сентября 2016, 04:33:39
В списке переменных ? Или есть какой-то список точек отладки ?
Все же удобно было бы просто кнопку "снять все ТО"
Название: Re: Вопросы
Отправлено: Artem от 25 сентября 2016, 15:27:15
Есть список точек отладки, там можно и условия остановки настроить. К сожалению, пока в документации нет подробного описания этой возможности, постараемся добавить в ближайшем релизе.
Название: Re: Вопросы
Отправлено: VoronovMaksim88 от 25 сентября 2016, 18:17:12
Отлично. Спасибо.
Название: Re: Вопросы
Отправлено: PA3JlUBHOE от 05 ноября 2016, 12:43:52
Цитата: Artem от 25 сентября 2016, 15:27:15
Есть список точек отладки, там можно и условия остановки настроить. К сожалению, пока в документации нет подробного описания этой возможности, постараемся добавить в ближайшем релизе.

Как отобразить этот список? У меня под поляной ничего больше нет.
Название: Re: Вопросы
Отправлено: serge197a от 05 ноября 2016, 13:41:19
 в меню окна
Название: Re: Вопросы
Отправлено: PA3JlUBHOE от 05 ноября 2016, 14:50:33
Цитата: serge197a от 05 ноября 2016, 13:41:19
в меню окна
Вроде везде посмотрел. Нигде нет "Точки отладки". Можете на картинке ткнуть?
Название: Re: Вопросы
Отправлено: serge197a от 05 ноября 2016, 15:06:42
тут