Вопросы

Автор Max, 29 марта 2016, 14:37:49

« назад - далее »

Max

Разрабатываю программу для М100s... периодически возникают глупые вопросы, ответы на большинство из них я нахожу в справке, на форуме или порывшись в программах для вентиляции на ZetFBD... Но это удается не всегда. Вот первый вопрос:
Как разделить дробную переменную? Пробовал блок DIV - но проверка дает ошибку и говорит что с остатком можно делить только целочисленное значение. А блока для деления дробного я не нашел...

VoronovMaksim88

Хм. Действительно дробный тип не делится, думаю его тогда надо исключить из списка, дабы не смущать пользователей.

Я делаю так 2.5\0.5=5    =    2.5* (1\0.5)=2.5*2=5.

Max

Цитата: VoronovMaksim88 от 29 марта 2016, 14:44:17
Хм. Действительно дробный тип не делится, думаю его тогда надо исключить из списка, дабы не смущать пользователей.

Я делаю так 2.5\0.5=5    =    2.5* (1\0.5)=2.5*2=5.
Во, нашел.. оказывается в блоке Mull можно выбрать деление вместо умножения... чтобы не умножать на дроби

VoronovMaksim88

Да, точно, вспомнил !!!

mike

А это есть в справке.

Max

Небольшой вопрос.
Как мне сформировать импульс записи в подчиненное устройство?
Ситуация такая:
У меня контроллер M100 по одному порту мастер, по второму слейв. Мастер он для панели Z033.
Уставку температуры я буду хранить в EEPROM контроллера. Нужно чтобы была возможность записывать эту уставку со скада-системы. Также уставка должна меняться в панели Z033. При изменении уставки в панели - она должна поменяться в контроллере, и при замене уставки со скады она должна поменяться в контроллере и в панели.
Пока я сделал так, как в скрине. Сигнал en на запись из панели тоже пока не придумал откуда взять.
Пока не сообразил как это лучше сделать.

mike

Извините, очень занят, отвечу всем вечером.
Максима пропустим вперед.
Нужна двухсторонняя синхронизация СКАДы и панели?

mike

Да, понял.
Стандартный макрос работы с панелью вам в помощь.

В открытом виде в прицепе.
Называется Z033_set

Max

#8
Цитата: mike от 30 марта 2016, 12:48:42
Да, понял.
Стандартный макрос работы с панелью вам в помощь.

В открытом виде в прицепе.
Называется Z033_set
Так я его и использовал.
Не понимаю как мне сформировать импульс на запись в панель при изменении переменной со скады.
И почему-то если я в отладке меню "руками" переменную в EEPROM контроллера - она не изменяется в программе. Видимо что-то не так делаю...
хотя похоже начал что-то понимать :) может сейчас и разберусь

mike

Суть простая.
В исходном состоянии (нет внешней записи или записи по сети) происходит чтение уставки из панели (блок R) и запись полученного значения в переменную SET, которая имеет признак сохранения в ПЗУ и доступ по сети на чтение/запись.

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

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

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

Таким образом происходит двухсторонняя синхронизация данных.

VoronovMaksim88

Не уверен на 100 процентов, но попробуйте так
Развернуть макрсос с уставкой, там есть переменная set, это и есть уставка. И есть два входа set и ^wr_set на них надо подать уставку со скады и строб записи этой уставки.

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



mike

Со скады писать сразу в переменную СЕТ.
Строб выдаст автоматом, как запишите в переменную.
Внешняя запись в этом макросе не используется в вашей задаче.
Если скады под рукой нет, то для проверки создайте еще один контроллер в этом же проекте, для него создайте мнемосхему. На мнемосхеме поставьте поле ввода. Соедините контроллеры через виртуальный порт через рабочую станцию.
Отлаживайте в симуляторе.

Max

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

VoronovMaksim88

Цитата: mike от 30 марта 2016, 13:22:00
Если скады под рукой нет, то для проверки создайте еще один контроллер в этом же проекте, для него создайте мнемосхему. На мнемосхеме поставьте поле ввода. Соедините контроллеры через виртуальный порт через рабочую станцию.
Отлаживайте в симуляторе.

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

Max

Попробовал со скадой. Все работает :)