Просмотр полной версии : Панели оператора СП3xx. Вопросы и ответы
Страницы :
1
2
[
3]
4
5
6
7
8
9
10
11
12
13
14
15
16
17
konst_smn
23.05.2017, 10:32
del...
Ответ нашел, попробую :).
Минеев Антон
26.05.2017, 08:23
Да, ответ помог:
31252
Так все вижу - все меняется...
А вот таблица:
31253
Там вместо времени прочерки...
Народ, добрый день... Вопрос не закрыт... Есть 3 дисплея вывода в 16#, где часы, минуты и секунды отображаются. Есть таблица - в которой мне нужно их выводить на разных строках. Там прочерки...
Может чего в регистрах таблицы?
PSW300 ?
PSW308 ?
PSW316 ?
и т.д. Причем значение значение в 1 столбец пишется именно с этими регистрами. Формат времени H:M:S31375
Евгений Кислов
26.05.2017, 08:29
Антон, свяжитесь со мной по skype, пожалуйста.
Есть 2 экрана на СП307.
Когда остаюсь на 2 экране, нужно, чтобы через минуту переключался полноценно на 1 экран. Использую стандартные срества, которые находятся в Настройках. Получается так, оно вроде переходит на экран 1, но при нажатии на него, снова появляется экран 2. Или так и должно быть? Или все таки есть способ полноценно автоматически переключить экран?
Евгений Кислов
02.06.2017, 15:14
Есть 2 экрана на СП307.
Когда остаюсь на 2 экране, нужно, чтобы через минуту переключался полноценно на 1 экран. Использую стандартные срества, которые находятся в Настройках. Получается так, оно вроде переходит на экран 1, но при нажатии на него, снова появляется экран 2. Или так и должно быть? Или все таки есть способ полноценно автоматически переключить экран?
Стандартные средства реализуют скринсэйвер - так что да, при нажатии на экран-скринсейвер вы должны вернуться на экран, на котором были до того, как включился скринсэйвер.
Вашу задачу (переключение экрана в случае заданного периода неактивности), в моем понимании, нельзя решить простыми средствами.
Стандартные средства реализуют скринсэйвер - так что да, при нажатии на экран-скринсейвер вы должны вернуться на экран, на котором были до того, как включился скринсэйвер.
Вашу задачу (переключение экрана в случае заданного периода неактивности), в моем понимании, нельзя решить простыми средствами.
Я понял. Спасибо!
SokolovS
02.06.2017, 16:35
Вашу задачу (переключение экрана в случае заданного периода неактивности), в моем понимании, нельзя решить простыми средствами.
А сложными можно?
Евгений Кислов
02.06.2017, 18:23
А сложными можно?
Итак, формулировка задачи: по истечению заданного периода неактивности оператора произвести переход на экран 1.
1. В настройках проекта выбираем режим Заставка, указываем интервал и номер экрана заставки - 1.
2. На экране 1 размещаем функциональную область, тип запуска - Переход на экран элемента. В ней инвертируем выбранный нами бит (например, PSB400) и выполняем макрос с функцией WakeupScreen.
3. На экране 1 размещаем функциональную область, тип запуска - После загрузки проекта. В ней сбрасываем в FALSE бит PSB400.
4. Создаем глобальную функциональную область, тип запуска - от бита PSB400. В ней осуществляем переход на экран 1.
Shurakip
04.06.2017, 16:37
Добрый день. Получил СП307, залил программу. Появляется табличка " соединение PLС порт 1". как избавиться?
Евгений Кислов
04.06.2017, 18:05
Добрый день. Получил СП307, залил программу. Появляется табличка " соединение PLС порт 1". как избавиться?
Видимо, в проекте подразумевается опрос устройств, которые будут подключены к этому порту. Окно сигнализирует об отсутствии ответа от этих устройств, после их подключения оно не будет появляться (если опрос в проекте настроен корректно).
Shurakip
04.06.2017, 19:14
оно то появляется, то исчезает. снизил скорость до 9600. не сказал бы, что это помогло
Видимо, в проекте подразумевается опрос устройств, которые будут подключены к этому порту. Окно сигнализирует об отсутствии ответа от этих устройств, после их подключения оно не будет появляться (если опрос в проекте настроен корректно).
Евгений Кислов
04.06.2017, 19:41
Значит, проблема на уровне настройки обмена. Проверьте соответствие сетевых настроек устройств (четность, кол-во стоп бит), адреса устройств, адреса регистров, функции Modbus, распиновку кабеля и т.д.
Shurakip
04.06.2017, 21:16
Без настроек обмена вообще виснет. Интересно то, что при появлении этой таблички все работает. Есть показания и управление. Наблюдаю два часа уже. Табличка пропала и пока не появляется.
Евгений Кислов
04.06.2017, 21:20
Без настроек обмена вообще виснет. Интересно то, что при появлении этой таблички все работает. Есть показания и управление. Наблюдаю два часа уже. Табличка пропала и пока не появляется.
Пришлите, пожалуйста, проект для панели и описание подключенных к ней устройств на support@owen.ru
Shurakip
05.06.2017, 10:15
Пришлите, пожалуйста, проект для панели и описание подключенных к ней устройств на support@owen.ru
как и что пометить в письме? или пометить кому...?
Евгений Кислов
05.06.2017, 10:18
как и что пометить в письме? или пометить кому...?
Можно ничего не помечать - просто обозначить ваши контакты для связи и компанию, в письме продублировать описание проблемы и все необходимые материалы (проекты, руководства на др. устройства и т.д.).
Без настроек обмена вообще виснет. Интересно то, что при появлении этой таблички все работает. Есть показания и управление. Наблюдаю два часа уже. Табличка пропала и пока не появляется.
Если панель подключена к ПЛК ОВЕН, то как правило при включении питания, ПЛК переходит в рабочий режим позже панели из-за этого может возникать эта табличка. Когда ПЛК завершит свою инициализацию, то окошко пропадает.
Можно делать в панели стартовый экран(Экран приветствия) без элементов, с которого автоматически с заданной задержкой переходить на главный экран.
Skyblazer
07.06.2017, 22:48
в режиме эмуляции offline макросы выполняются?
Евгений Кислов
08.06.2017, 06:49
в режиме эмуляции offline макросы выполняются?
Добрый день. Нет, в эмуляции макросы не работают.
Добрый день.
Не получается соединить СП307Б и ПЛК100.К-М, на пробной программе все работает.
А на той, которую прописываю, не проходят сигналы ни в панель, ни из панели.
Настройки панели: 115200, 8, нет, 1, галочка на передаче данных есть, адрес 1, RTU Slave/ порт PLC.
Настройки плк: Modbus (Master), speed 11520, data 8 bits, one stop bit, RTU. Пробовал порт RS232 и RS485.
Обратил внимание на ошибку при загрузке проекта в плк.31743
Подскажите, что не так...
Евгений Кислов
21.06.2017, 07:32
Добрый день.
Не получается соединить СП307Б и ПЛК100.К-М, на пробной программе все работает.
А на той, которую прописываю, не проходят сигналы ни в панель, ни из панели.
Настройки панели: 115200, 8, нет, 1, галочка на передаче данных есть, адрес 1, RTU Slave/ порт PLC.
Настройки плк: Modbus (Master), speed 11520, data 8 bits, one stop bit, RTU. Пробовал порт RS232 и RS485.
Обратил внимание на ошибку при загрузке проекта в плк.31743
Подскажите, что не так...
Добрый день. Отправьте, пожалуйста, проекты для обоих устройств на support@owen.ru
Укажите версию прошивки ПЛК (можно посмотреть через PLC browser в Codesys, команда PLC Info).
Добрый день. Получил СП307, залил программу. Появляется табличка " соединение PLС порт 1". как избавиться?
Имею такую же проблему. Обратил внимание, что табличка появляется так же при обращении к несуществующему регистру в ПЛК.
-----------------
Вопрос по СП307: опрос регистров ПЛК выполняется только для активного экрана или читаются все регистры проекта для всех экранов?
Евгений Кислов
21.06.2017, 09:05
Имею такую же проблему. Обратил внимание, что табличка появляется так же при обращении к несуществующему регистру в ПЛК.
-----------------
Вопрос по СП307: опрос регистров ПЛК выполняется только для активного экрана или читаются все регистры проекта для всех экранов?
Исключите из проекта обращение к несуществующим регистрам ПЛК - тогда сообщения об ошибке появляться, естественно, не будет.
Если опрос настроен через графические элементы - то он ведется только для активного экрана.
Исключите из проекта обращение к несуществующим регистрам ПЛК - тогда сообщения об ошибке появляться, естественно, не будет.
Если опрос настроен через графические элементы - то он ведется только для активного экрана.
Небольшое дополнение
Если в проекте помимо графических элементов есть графики или элементы архивирования, то обращение к регистрам ПЛК будет даже если графики или элементы архивирования расположены на не активных экранах.
Если на активном экране есть ф.области с функциями чтения регистров ПЛК, то обращение к регистрам ПЛК будет даже если условия вызова ф.области не выполняются.
Евгений Кислов
21.06.2017, 10:21
Небольшое дополнение
Если в проекте помимо графических элементов есть графики или элементы архивирования, то обращение к регистрам ПЛК будет даже если графики или элементы архивирования расположены на не активных экранах.
Если на активном экране есть ф.области с функциями чтения регистров ПЛК, то обращение к регистрам ПЛК будет даже если условия вызова ф.области не выполняются.
Спасибо за уточнение, жаль, что оно не получилось полностью корректным.
Элементы архивирования (например, Архивирование на USB) генерируют запросы по Modbus только в том случае, если открыт экран, на котором они расположены. Поэтому в большинстве случаев имеет смысл делать их глобальными.
тут http://www.owen.ru/forum/showthread.php?t=22915&p=206286&viewfull=1#post206286 уже обсуждалось про импорт из csv, а получится импортировать значение в таблице, допустим от 0 до 50 и передавать это значение через определенный промежуток времени на частотник в виде управляющего сигнала? или обязательно нужно промежуточное звено между СП и ПЧ в виде ПЛК? или можно обойтись ПР200? с ПР200 уже имел дело, и очень понравилась простота программирования. задача управлять насосами фонтана по заданной программе, например написанной в таблице csv.31764
Евгений Кислов
22.06.2017, 06:43
получится импортировать значение в таблице, допустим от 0 до 50 и передавать это значение через определенный промежуток времени на частотник в виде управляющего сигнала?
Импорт CSV поддержан, передать импортированные значения по Modbus тоже не составит труда.
Есть панель СП307.
Мне необходимо отключить звук при нажатии кнопок. Нашел, что регистру PFW2 нужно присвоить 1. Но тогда происходит полностью отключение звука, а мне надо, чтобы при возникновении определенных условий звук был. Возможно это реализовать?
И еще при запуске эмуляции OffLine макросы не выполняются, это нормально?
Евгений Кислов
26.06.2017, 11:57
Есть панель СП307.
Мне необходимо отключить звук при нажатии кнопок. Нашел, что регистру PFW2 нужно присвоить 1. Но тогда происходит полностью отключение звука, а мне надо, чтобы при возникновении определенных условий звук был. Возможно это реализовать?
И еще при запуске эмуляции OffLine макросы не выполняются, это нормально?
1. Можно отключить звук нажатий на элементы через PFW2, и при определенных условиях активировать его через элемент Зуммер или макрос (функция Beep).
2. Да, в эмуляции макросы не работают.
1. Можно отключить звук нажатий на элементы через PFW2, и при определенных условиях активировать его через элемент Зуммер или макрос (функция Beep).
Beep не работает, а вот Зуммер работает.
Евгений Кислов
26.06.2017, 12:28
Beep не работает, а вот Зуммер работает.
Не соглашусь - Beep тоже работает.
Как выглядит макрос и каким образом его вызываете?
Создаю макрос, в нем одна команда Beep();. Далее создаю функциональную область,ставлю условие запуска циклическое, в функциях указываю вызвать мой макрос. Не пищит.
Евгений Кислов
26.06.2017, 12:42
Создаю макрос, в нем одна команда Beep();. Далее создаю функциональную область,ставлю условие запуска циклическое, в функциях указываю вызвать мой макрос. Не пищит.
Да, воспроизвел - если PFW=1, то Beep не работает. Справедливое замечание.
Панель СП307 включается со второго или третьего раза, другие включаются такие же соответственно без проблем. Питание ОВЕН БП60Б-Д4 24 В. Других потребителей нет. Везти к вам?
Евгений Кислов
11.07.2017, 09:00
Панель СП307 включается со второго или третьего раза, другие включаются такие же соответственно без проблем. Питание ОВЕН БП60Б-Д4 24 В. Других потребителей нет. Везти к вам?
Да, в сервисный центр.
SokolovS
14.07.2017, 10:39
Доброго дня
Помнится, с СП270 была проблема убегания встроенных часов как самих по себе, так и в зависимости от нагрузки
Подскажите пожалуйста, наблюдается ли такая проблема с СП3хх?
Вообще, есть ли в этой панели энергонезависимые часы?
Доброго дня
Помнится, с СП270 была проблема убегания встроенных часов как самих по себе, так и в зависимости от нагрузки
Подскажите пожалуйста, наблюдается ли такая проблема с СП3хх?
Вообще, есть ли в этой панели энергонезависимые часы?
Часы есть, номер экрана для настройки то же 60002.
По точности хода - тоже не хронометр.
SokolovS
14.07.2017, 11:15
Часы есть, номер экрана для настройки то же 60002.
По точности хода - тоже не хронометр.
Понятно, что не хронометр
Помнится, у СП270 по нескольку десятков секунд в сутки убегало
И зависело от нагрузки на панель
Здесь как обстоит ситуация?
И что с энергонезависимостью?
Спасибо
Понятно, что не хронометр
Помнится, у СП270 по нескольку десятков секунд в сутки убегало
И зависело от нагрузки на панель
Здесь как обстоит ситуация?
И что с энергонезависимостью?
Спасибо
Что значит, энергонезависимость?
Часы сделаны на отдельной "часовой" микросхеме от Даллас, с питанием от резервной батарейки.
Экспериментов зависимости хода часов от режимов работы панели я не делал.
SokolovS
14.07.2017, 11:42
Что значит, энергонезависимость?
Часы сделаны на отдельной "часовой" микросхеме от Даллас, с питанием от резервной батарейки.Спасибо, именно это я и имел в виду
Экспериментов зависимости хода часов от режимов работы панели я не делал.Понятно
Будет возможность, обязательно поэкспериментирую
Подскажите, возможно ли применение в макросах массивов или динамической адресации?
Евгений Кислов
14.07.2017, 12:56
Подскажите, возможно ли применение в макросах массивов или динамической адресации?
Да, конечно. Тут, например, использовались массивы:
http://www.owen.ru/uploads/aip_47_sait_kislov_36-37.pdf
Евгений, использую функцию Copy из вашего примера. Компиляция проходит без ошибок, а при записи конфигурации в панель выходит ошибка32097
Причем ваш пример загружается и работает нормально, может быть надо что-то настроить-подключить?
Добрый день! Подскажите:
- есть возможность вызывать запись на USB флеш непосредственно из макроса, например какой-нибудь функцией? Вариант с дерганьем бита управления понятен.
- если вызвать запись на USB флеш непосредственно из макроса, как остановить выполнение макроса до момента завершения записи на USB флеш? Или в макросе получить значение успешного завершения записи в этом же цикле выполнения макроса?
Евгений Кислов
18.07.2017, 20:18
Добрый день! Подскажите:
- есть возможность вызывать запись на USB флеш непосредственно из макроса, например какой-нибудь функцией? Вариант с дерганьем бита управления понятен.
- если вызвать запись на USB флеш непосредственно из макроса, как остановить выполнение макроса до момента завершения записи на USB флеш? Или в макросе получить значение успешного завершения записи в этом же цикле выполнения макроса?
- если вариант с дерганьем бита не подходит, то смотрите в сторону Stdio.h - fopen, fwrite, fclose и вся прочая обвязка и обработка.
- макрос, работающий с файлами, должен вызываться в параллельном режиме. после закрытия файла инкрементируйте счетчик - если значение изменилось, то запись произошла. о том, была ли она успешной, можно судить по косвенным признакам - увеличившемуся размеру файла и т.д.
Стр 195 РП СП3ХХ регистры доступа первого-девятого уровня: при открытии более высокого уровня доступа бит предыдущего уровня сбрасывается в 0 или остается равным 1? Симуляция на ПК бит предыдущего уровня доступа сбрасывает в 0, а панель бит предыдущего доступа оставляет как 1.
Евгений Кислов
21.07.2017, 06:55
Стр 195 РП СП3ХХ регистры доступа первого-девятого уровня: при открытии более высокого уровня доступа бит предыдущего уровня сбрасывается в 0 или остается равным 1? Симуляция на ПК бит предыдущего уровня доступа сбрасывает в 0, а панель бит предыдущего доступа оставляет как 1.
Все верно. Если в панели уже есть открытые уровни доступа, то при открытии более высокого они сохранятся.
Пример:
1. активирован первый уровень доступ - PSB60 ВКЛ - доступны для ввода элементы первого уровня.
2. активирован второй уровень доступа - PSB60 ВКЛ, PSB61 ВКЛ - доступны для ввода элементы первого и второго уровня.
3. если вручную сбросить PSB60, то элементы первого уровня станут недоступны для ввода.
Евгений, спасибо за оперативные ответы. Еще вопросик - можно ли в интерфейсе окна разработки наряду с элементами указывать текстовые комментарии (как после // в си) - т.е. текст, который виден в окне конфигуратора, но не виден при выполнении программы в панели?
Евгений Кислов
21.07.2017, 17:37
Евгений, спасибо за оперативные ответы. Еще вопросик - можно ли в интерфейсе окна разработки наряду с элементами указывать текстовые комментарии (как после // в си) - т.е. текст, который виден в окне конфигуратора, но не виден при выполнении программы в панели?
Используйте обычный элемент Текст с битом видимости PSB1 (он всегда FALSE, так что текст не будет отображаться на экране панели).
Евгений, добрый день! Поясните, пож-та: элемент Экспорт CSV, вкладка данные, элемент кол-во регистров что определяет? он как-то должен зависить от размера буфера данных если выбран циклический буфер? В моем случае запись на USB происходит только если указать кол-во регистров 0 и записывается в таком случае весь ненулевой буфер.
Евгений Кислов
25.07.2017, 17:49
Евгений, добрый день! Поясните, пож-та: элемент Экспорт CSV, вкладка данные, элемент кол-во регистров что определяет? он как-то должен зависить от размера буфера данных если выбран циклический буфер? В моем случае запись на USB происходит только если указать кол-во регистров 0 и записывается в таком случае весь ненулевой буфер.
Добрый день. См. Руководство пользователя, п. 9.7.1. Пример из этого пункта доступен на сайте:
http://www.owen.ru/uploads/sp307_archivation.zip
Если коротко - то это кол-во строк, записываемых в файл при вызове действия экспорта.
Спасибо, я изучил эти примеры ранее. В том то и вопрос, если в вашем примере http://www.owen.ru/uploads/sp307_archivation.zip в элементе Экспорт CSV, вкладка данные, элемент кол-во регистров выставить 1 (также как и 2, 3) то экспортируется какая-то билиберда, но не первая (две , три) строка буфера. В билиберде кол-во экспортируемых строк соответствует выставленному значению. Может быть при выставлении 1 нужно давать правильный адрес строки?
Евгений Кислов
25.07.2017, 20:37
Если вы меняете кол-во регистров, то нужно соответствующим образом поменять кол-во записей в элементе Архивирование в панели.
Евгений, можно ли в элементе архивирование USB вывод столбцов дата и время перенести в начало данных в файле экспорта? Чтобы первыми были дата и время, а потом столбцы, которые формируются в закладке данные. Сбор данных времени PSW30-35 понятен, но образует 6 столбцов в файле экспорта. Хотелось бы видеть в файле экспорта: два столбца дата и время, затем основные данные экспорта.
Евгений Кислов
26.07.2017, 10:21
Евгений, можно ли в элементе архивирование USB вывод столбцов дата и время перенести в начало данных в файле экспорта? Чтобы первыми были дата и время, а потом столбцы, которые формируются в закладке данные. Сбор данных времени PSW30-35 понятен, но образует 6 столбцов в файле экспорта. Хотелось бы видеть в файле экспорта: два столбца дата и время, затем основные данные экспорта.
Можно - собирайте строки с датой и временем в макросах, записывайте их в регистры, в элементе Архивирование на USB выбирайте тип данных STRING.
Евгений, можно ли в элементе архивирование USB вывод столбцов дата и время перенести в начало данных в файле экспорта? Чтобы первыми были дата и время, а потом столбцы, которые формируются в закладке данные. Сбор данных времени PSW30-35 понятен, но образует 6 столбцов в файле экспорта. Хотелось бы видеть в файле экспорта: два столбца дата и время, затем основные данные экспорта.
Регистры PSW30-35 для сбора данных времени не нужны!!!
Достаточно вкл. эту галку
32232
Оставить только регистры с данными
32233
И все.
32235
Идем дальше. ) А как сделать чтобы дата и время были первыми столбцами?
Евгений Кислов
26.07.2017, 10:33
Идем дальше. ) А как сделать чтобы дата и время были первыми столбцами?
Просто добавляйте архивируемые переменные в нужном порядке:
32236
А для элемента Архивирование USB это можно применить? Там запрашивается регистр данных.
Евгений Кислов
26.07.2017, 12:17
А для элемента Архивирование USB это можно применить? Там запрашивается регистр данных.
Можно, там настройки совершенно аналогичные. Выбирайте тип данных STRING - и архивируйте строку, которую сформировали нужным вам образом и записали в регистры панели.
Прикладываю абстрактный пример для запуска в эмуляции (в корне диска D создастся файл CE.csv). Чтобы использовать в панели, выберите ID устройства = 0. Вам нужно будет только формировать требуемые строки не через Текстовый ввод, а в макросе.
32240
Т.е. я должен дату и время преобразовать в текст, записать в регистры, а потом сохранить? а готовые значения времени в формате текст в регистрах есть? Может быть использовать экспорт текущего времени из настроек?
Евгений Кислов
26.07.2017, 12:58
Т.е. я должен дату и время преобразовать в текст, записать в регистры, а потом сохранить? а готовые значения времени в формате текст в регистрах есть? Может быть использовать экспорт текущего времени из настроек?
"Экспорт текущего времени из настроек" - в этом случае у вас всего равно будет шесть отдельных значений, которые придется склеивать в две строки (Date/Time). Так что придется создать макрос - но это не должно составить труда.
Т.е. я должен дату и время преобразовать в текст, записать в регистры, а потом сохранить? а готовые значения времени в формате текст в регистрах есть? Может быть использовать экспорт текущего времени из настроек?
В Си есть функция форматной печати в строку. С учетом тог, что дата и время в регистрах PSW30..PSW35 в двоично-десятичном формате получим
sprintf((char*)&PSW[1000], "%4X-%2.2X-%2.2X %2.2X:%2.2X:%2.2X ", PSW[30], PSW[31], PSW[32], PSW[33], PSW[34], PSW[35]);
здесь в десяти регистрах PSW1000...PSW1009 получится строка вида 2017-07-26 13:36:15
32243
32244
Вот такое сообщение.32281
Видимо это связано с групповым сохранением не более 120 регистров, но почему мне не дает сохранить более 10 (дата-время)+24 (данные) регистров? Ну и текст сообщения надо бы поправить...
Евгений Кислов
28.07.2017, 07:07
Вот такое сообщение.32281
Видимо это связано с групповым сохранением не более 120 регистров, но почему мне не дает сохранить более 10 (дата-время)+24 (данные) регистров? Ну и текст сообщения надо бы поправить...
Выложите ваш проект, пожалуйста (или отправьте мне на почту).
Действительно, есть ограничение в 127 регистров на один элемент архивации.
Евгений, добрый день! Направил вам архив проекта электронкой, письмо дошло? а то в наше время электронного спама...
Евгений Кислов
28.07.2017, 14:12
Евгений, добрый день! Направил вам архив проекта электронкой, письмо дошло? а то в наше время электронного спама...
Да, получил. Отпишусь в начале следующей недели.
a_gricaj
28.07.2017, 23:56
Подскажите пожалуйста почему макрос не компилируется :
32290
Ввел в глобальном макросе одну строчку: SetPSB(301);
Где ошибка?
a_gricaj
29.07.2017, 00:59
Подскажите пожалуйста почему макрос не компилируется :
32290
Ввел в глобальном макросе одну строчку: SetPSB(301);
Где ошибка?
Разобрался вроде, правильно ли я понял, что глобальный макрос используется только для описания переменных????
Разобрался вроде, правильно ли я понял, что глобальный макрос используется только для описания переменных????
Не только.
В глобальном макросе Вы можете писать функции, которые затем можно использовать в макросах наравне со стандартными функциями Си.
Например.
Глобальный макрос
32291
Макрос Таймер
Измеряет продолжительность включенного состояния бита PSB300 в секундах (дискретность 0,1 сек)
32294
Макрос генерации случайных чисел в диапазоне от А до В
32293
akledirs
07.08.2017, 08:44
Возможно ли подключить 3 панели СП310-Р к одному ПЛК. Было бы здорово просто подключить к коммутатору и пусть меж собой битики и байтики там гоняют панельки и контроллеры.
Евгений Кислов
07.08.2017, 08:49
Возможно ли подключить 3 панели СП310-Р к одному ПЛК. Было бы здорово просто подключить к коммутатору и пусть меж собой битики и байтики там гоняют панельки и контроллеры.
Да, с Modbus TCP это возможно.
Добрый день! СП310-Slave, обмен с ПЛК304 через библитеку Овена по Modbus RTU. С регистрами все ясно. Опрашиваю биты. Использую команду 01х. Запрашиваю бит 264, кол-во битов в запросе-1. В буфере с нулевым индексом 0 или 1 бита 264. Все нормально.
Запрашиваю группу 2 (3) бита - 264 и 265 (266), в ответ в буфере с нулевым индексом приходит число соответствующее битам 264+8 бит, т.е. 33 регистр области PSB.
Все работает. Но не соответствует логике запроса.
Так должно быть?
Евгений Кислов
09.08.2017, 08:38
Добрый день! СП310-Slave, обмен с ПЛК304 через библитеку Овена по Modbus RTU. С регистрами все ясно. Опрашиваю биты. Использую команду 01х. Запрашиваю бит 264, кол-во битов в запросе-1. В буфере с нулевым индексом 0 или 1 бита 264. Все нормально.
Запрашиваю группу 2 (3) бита - 264 и 265 (266), в ответ в буфере с нулевым индексом приходит число соответствующее битам 264+8 бит, т.е. 33 регистр области PSB.
Все работает. Но не соответствует логике запроса.
Так должно быть?
Вы, вероятно, при запросе одного (двух, трех) бит получаете весь байт, из которого следует выделить значащие биты.
Скорее всего - это особенность библиотеки.
как вывести значение времени линии данных архивного графика в отдельное поле вывода (панель СП310)?
все привет
подскажите, кто уже неплохо разбирается в Конфигураторе СП3хх- есть ли что-то типа "битовый переключатель" где состоянию Вкл можно было бы присвоит бит №1, а состоянию Выкл - бит №2?
Пытаюсь сделать отображение состояния задвижки, а штатные библиотеки арматуры ну что-то прям совсем неупотребимые в реальной жизни. Я понимаю, что взяли много от китайцев, но блин W***** простительно не знать наших стандартов отображения арматуры и механизмов на технологических схемах, то от нашего производителя ждёшь бОльшего внимания к нашим нуждам))).
Есть какой-нибудь редактор, где можно было бы самому cделать элемент, типа редактор карт в CS?
или подскажите где поискать "рукописную" библиотеку элементов? может от W*** можно использовать?
Евгений Кислов
15.08.2017, 17:58
Добрый день. Опишите более подробно, что вам нужно. Судя по первой половине поста - 2-битный индикатор (на 4 состояния, типа ВКЛ/ОТКЛ/Неопределенное состояние/Ремонт). Я вас правильно понял?
По второй половине вопроса - практически для любого элемента можно настроить внешний вид через загруженные изображения (кнопка Библиотека). Или я неправильно понял посыл?
2-битный индикатор (на 4 состояния, типа ВКЛ/ОТКЛ/Неопределенное состояние/Ремонт). Я вас правильно понял?
в общем-то да. минимум 2 битный, в идеале - n-бит.
собственно, о чём речь
есть стандарты, обозначения на принципиальных схемах запорно-регулирующей арматуры, электрических двигателей и механизмов, средств автоматизации, как по стандарту DIN, так и по ГОСТ. И нужно стандартное ГОСТовское изображение арматуры(про насос другой разговор) типа такого
32635
и цветами отображается состояние арматуры - закрыто/открыто
32636
при этом цвет 1 - это бит№1(=1), цвет 2 - бит №2(=1). Это минимум.
а в идеале, если бы ещё привязать бит№3 - контакт SF электродвигателя, и красить фон или окружность двигателя при отключении - вас бы просто носили на руках
Я не могу сказать крупному заказчику, что я плевать хотел на ТЗ, на его корпоративные требования, на его корпоративные стандарты (которые калька с ГОСТа и DIN, потому что генподрядчик китайцы, технологи немцы, EPC контракторы итальянцы, генпроектировщики китайцы и тд) , на его операторов, которые задают вопрос, глядя на то, что предлагается в Конфигураторе - что это такое?
вот такая вот задача у нас. На данном этапе мы кое-как согласовали документацию, но к наладке на объекте мы должны сделать :)
практически для любого элемента можно настроить внешний вид через загруженные изображения (кнопка Библиотека)может я что-то не понял. Да, можно подсунуть другое "изображение" для состояния Выкл к примеру, перед этим его нарисовав (отдельная блин работа!) и загрузив в библиотеку, но моя самодельная картинка будет статической картинкой, а не настраиваемым элементом, я не могу картинке настроить цвет, фон, заполнение, рамку и т.д. - во вкладке "Цвет". Нужна настройка. Вот я про что.
Ладно, сами всё нарисуем, но дайте хотя бы простую инструкцию в чём рисовать и как интегрировать, чтобы можно было настраивать элемент
или сделайте импорт библиотек формата flb.
Потому как загрузить в дефолтную библиотеку покемонов и трансформеров - это конечно здорово, спасибо ребята, я посмеялся, но хотелось бы поддерживать отечественного производителя без насилия над собой.
п.с. И кстати - у панелей W***k в редакторе работает отображение элементов в состоянии 0, 1, и т.д..
У вас это не работает. точнее работает, но только для анимированных элементов.
А я просто хочу посмотреть, как у меня будет выглядеть весь экран в состоянии всех битов =1, всех битовых индикаторов, скрытых надписей, переключателей и тд
или я не разобрался до конца в интерфейсе?
Добрый день, какие возможности в сенсорных панелях есть для сохранения введеных данных, после отключения питания.
Я работаю над проектом, где есть плк100 и сп307б, параметров которые можно вводить много, каким образом можно ускорить этот процесс. В идеале, чтобы сохранялись ранее введеные параметры.
И еще, какие преимущества дает флешка в сп3ххр?
Евгений Кислов
16.08.2017, 11:48
Добрый день, какие возможности в сенсорных панелях есть для сохранения введеных данных, после отключения питания.
Я работаю над проектом, где есть плк100 и сп307б, параметров которые можно вводить много, каким образом можно ускорить этот процесс. В идеале, чтобы сохранялись ранее введеные параметры.
И еще, какие преимущества дает флешка в сп3ххр?
Используйте энергонезависимые регистры PFW.
И еще, какие преимущества дает флешка в сп3ххр?
Очевидные - позволяет архивировать данные на USB-накопитель и, потом, например можно открыть их на ПК, построить графики в Excel и т.д.
В случае ведения архива в панели придется вытягивать архивы по Modbus - это не всегда является удобным вариантом.
Евгений Кислов
16.08.2017, 11:53
Да, можно подсунуть другое "изображение" для состояния Выкл к примеру, перед этим его нарисовав (отдельная блин работа!) и загрузив в библиотеку, но моя самодельная картинка будет статической картинкой, а не настраиваемым элементом, я не могу картинке настроить цвет, фон, заполнение, рамку и т.д. - во вкладке "Цвет". Нужна настройка. Вот я про что.
Ладно, сами всё нарисуем, но дайте хотя бы простую инструкцию в чём рисовать и как интегрировать, чтобы можно было настраивать элемент
или сделайте импорт библиотек формата flb.
Такой функционал не предусмотрен. Можно использовать элемент Динамическое изображение, и через макрос в зависимости от состояния нужных битов генерировать номер отображаемой элементом картинки. Соответственно, потребуется дополнительная работа - в основном, нарисовать нужные картинки.
Собственно, все упомянутые настройки доступны у сенсорных панельных контроллеров СПК. Там можно динамизировать через переменные практически все, что душе угодно:
http://www.owen.ru/catalog/panelnij_programmiruemij_logicheskij_kontroller_ov en_spk107/opisanie
Панель, все же, достаточно простое устройство, и конфигуратор с сотнями настраиваемых параметров порадует, скажем так, только незначительное количество особых пользователей.
А я просто хочу посмотреть, как у меня будет выглядеть весь экран в состоянии всех битов =1, всех битовых индикаторов, скрытых надписей, переключателей и тд
или я не разобрался до конца в интерфейсе?
Прошу прощения, отредактировал пост. Такая возможность есть - выберите 1 и нажмите на желтую руку.
Такой функционал не предусмотрен. Можно использовать элемент Динамическое изображение, и через макрос в зависимости от состояния нужных битов генерировать номер отображаемой элементом картинки. Соответственно, потребуется дополнительная работа - в основном, нарисовать нужные картинки.ну то что не предусмотрен, понятно, чудес не ждали
а вот с этого момента можно поподробнее, чего-то не догоняю как выкрутиться. Там используется 16 битов, у меня в наличии только 2.
Собственно, все упомянутые настройки доступны у сенсорных панельных контроллеров СПК. Там можно динамизировать через переменные практически все, что душе угодно:
http://www.owen.ru/catalog/panelnij_programmiruemij_logicheskij_kontroller_ov en_spk107/opisanieвы не будете больше развивать свой Конфигуратор?
серия 100 крайне неудобна из-за отсутствия Ethernet
серия 200 - CoDeSys 3.5 ? а нельзя прикрутить СП3хх туда? решения 2 в 1 крайне неудобны из-за того, что операторский интерфейс может находится в одном месте, а шкаф контроллера - в другом, и одна панель работать на несколько независимых локальных САУ.
Панель, все же, достаточно простое устройство, и конфигуратор с сотнями настраиваемых параметров порадуем, скажем так, только незначительное количество особых пользователей.Панель это лицо компании. Если контроллер стоит в шкафу и кроме АСУшников никто в него не лезет, то лицо Заказчика смотрит в вашу панель. И от качества интерфейса оператора складывается впечатление о всей продукции.
да много не надо, не надо сотни параметров. Сделайте ГОСТовскую библиотеку основных элементов, или дайте энтузиастам возможность сделать самим. Вот готов написать типа ТЗ разработчикам по 3-5 элементам, которые жизненно необходимы, если сделаете - вы реально будете №1 .
Такой возможности действительно нет. Спасибо за обратную связь, передам разработчикам.
ок, спасибо, очень ждём
про 2ух битный индикатор я так понял вы предлагаете либо СПК и в3.5, либо через динамическое изображение как-то заколхозить смену изображения?
Евгений Кислов
16.08.2017, 13:13
про 2ух битный индикатор я так понял вы предлагаете либо СПК и в3.5, либо через динамическое изображение как-то заколхозить смену изображения?
Есть как минимум еще одно решение - накладывание элементов друг на друга и манипуляция их битами видимости.
Но простых готовых решений нет - это верно.
Конкретно в вашем случае - не будет ли удобнее использовать несколько отдельных битовых индикаторов для клапана (можно настроить один раз, сгруппировать и потом тиражировать).
ок, спасибо, очень ждём
По поводу переключения изображения для битовых элементов в редакторе - я отредактировал предыдущий пост, см. там.
Там используется 16 битов, у меня в наличии только 2.
Элемент Динамическое изображение отображает картинку, номер которой совпадает со значением в регистре, привязанном к элементу.
Вы можете в макросе проверять состояния заданных битов и по условию формировать значение этого регистра.
Вот готов написать типа ТЗ разработчикам по 3-5 элементам, которые жизненно необходимы, если сделаете - вы реально будете №1 .
Если не сложно - напишите и отправьте мне на почту, пожалуйста.
И еще укажите номера стандартов (DIN, ГОСТ и т.д.), на которые вы ориентируетесь. Буду крайне признателен.
Есть как минимум еще одно решение - накладывание элементов друг на друга и манипуляция их битами видимости.
Но простых готовых решений нет - это верно.да, вероятно это проще всего.
Только проверьте, если я правильно понял применение бита видимости?
индикатор №1
состояние Вкл - бит1=1 - чекбокс "Видимый" поставить, "Бит видимости" - поставить галочку и привязать бит1
состояние Выкл бит1=0 чекбокс "Видимый" снять, "Бит видимости" - поставить галочку и привязать бит1
?
индикатор №2
состояние Вкл - бит2=1 - чекбокс "Видимый" поставить, "Бит видимости" - поставить галочку и привязать бит2
состояние Выкл бит2=0 чекбокс "Видимый" снять, "Бит видимости" - поставить галочку и привязать бит2
?
и потом наложить из друг на друга.
По поводу переключения изображения для битовых элементов в редакторе - я отредактировал предыдущий пост, см. там.:) вот даже ни разу не подумал про это)))) спасибо
Евгений Кислов
16.08.2017, 13:42
Нет, бит видимости - он универсальный на весь элемент, он не связан с состояниями ВКЛ/ВЫКЛ. Он будет нужен только для одного элемента. На него можно опять же воздействовать из макроса.
Если есть возможность - свяжитесь со мной по skype, пожалуйста.
Евгений Кислов
16.08.2017, 13:48
Выкладываю простейший пример, посмотрите в эмуляции - станет ясно, что я имел в виду.
п.с. И кстати - у панелей W***k в редакторе работает отображение элементов в состоянии 0, 1, и т.д..
У вас это не работает. точнее работает, но только для анимированных элементов.
А я просто хочу посмотреть, как у меня будет выглядеть весь экран в состоянии всех битов =1, всех битовых индикаторов, скрытых надписей, переключателей и тд
или я не разобрался до конца в интерфейсе?
И здесь работает
32642
32643
бит видимости - он универсальный на весь элементнепонятный функционал его, в привязке к индикатору и сочетание с чекбоксом "Видимый"
это дополнительное управление отображением ВСЕГО элемента на экране вне зависимости состояния бита самого индикатора?
а что тогда делает чекбокс "Видимый"? в мануале написано он тупо скрывает ВЕСЬ элемент (кстати текст надписи при этом остаётся, как так-то? какая-то непонятная логика у разрабов)
и бит видимости тоже скрывает весь элемент
скайп к сожалению не могу, заблокирован( если без него никак, то нужен таймаут, надо пиво купить сисадминам))
в какое время удобно?
Евгений Кислов
16.08.2017, 14:05
непонятный функционал его, в привязке к индикатору и сочетание с чекбоксом "Видимый"
это дополнительное управление отображением ВСЕГО элемента на экране вне зависимости состояния бита самого индикатора?
а что тогда делает чекбокс "Видимый"? в мануале написано он тупо скрывает ВЕСЬ элемент (кстати текст надписи при этом остаётся, как так-то? какая-то непонятная логика у разрабов)
и бит видимости тоже скрывает весь элемент
скайп к сожалению не могу, заблокирован( если без него никак, то нужен таймаут, надо пиво купить сисадминам))
в какое время удобно?
Чекбокс Видимый не влияет на активность элемента (он нужен, например, для невидимой кнопки).
Бит видимости влияет - если он в FALSE, то элемент не виден и не активен.
Удобно до 16-00 по московскому времени, в любой будний день.
И здесь работает
ага, увидели уже, спасибо
просто у W**** перключение автоматом, а здесь ещё "дай пять" нажать надо :D
в спешке не допёр
кстати, вот чего я не увидел в Конфигураторе, так вот этой очень удобной штуки
при выборе типа элемента, сразу можно посмотреть его вид в разных состояниях и количество состояний
Евгений Кислов
16.08.2017, 18:04
кстати, вот чего я не увидел в Конфигураторе, так вот этой очень удобной штуки
при выборе типа элемента, сразу можно посмотреть его вид в разных состояниях и количество состояний
Предпросмотр есть. У битового индикатора в настройках видно, какие изображения используются для состояний ВКЛ и ВЫКЛ (но надо переключать их, чтобы увидеть, это верно).
Global, если будут еще вопросы - напишите нам на support@owen.ru, пожалуйста - это поможет оперативнее их решать.
Предпросмотр есть. У битового индикатора в настройках видно, какие изображения используются для состояний ВКЛ и ВЫКЛ (но надо переключать их, чтобы увидеть, это верно).
я про другое. Я про предпросмотр состояния в окне Библиотеки, а не в окне настроек выбранного типа.
В конфигураторе надо выбрать элемент и в окне настройки переключить его.
и только тогда я увижу, что в состоянии Выкл он к примеру синего цвета.
Сразу в Библиотеке элементов этого увидеть невозможно. Приходиться делать много лишних движений
уже сам нашёл) надо залезть в папку установки Конфигуратора и вручную переместить нужные папки с нужным файлом индикатора (заранее запишите название типа элемента когда смотрите в Галерее и найдите его папку) из папки Gallery в подпапку Map в той же самой папке Gallery. Тогда эта папка с индикатором будет видна в списке в Библиотеке
почему так криво сделано, ну чтоп скучно не было видимо;)
Совсем необязательно так делать.
Можно прямо в библиотеке добавлять рисунки, создавать свои папки.
32660
А можно совместить это с редактированием внешнего вида элемента.
Используйте энергонезависимые регистры PFW.
Очевидные - позволяет архивировать данные на USB-накопитель и, потом, например можно открыть их на ПК, построить графики в Excel и т.д.
В случае ведения архива в панели придется вытягивать архивы по Modbus - это не всегда является удобным вариантом.
Добрый день, заменил регистры в панели, они сохраняются. Но теперь их не понимает контроллер, что теперь поменять в плк?
Евгений Кислов
17.08.2017, 11:04
Добрый день, заменил регистры в панели, теперь их не понимает контроллер, что теперь поменять в плк?
Адресация по Modbus для PFW имеет смещение в +10000.
Если у вас, например, был PSW300, то вы в ПЛК задавали регистр номер 300.
Теперь у вас PFW300, и в ПЛК надо задать регистр номер 10300.
Адресация по Modbus для PFW имеет смещение в +10000.
Если у вас, например, был PSW300, то вы в ПЛК задавали регистр номер 300.
Теперь у вас PFW300, и в ПЛК надо задать регистр номер 10300.
Получилось, буду ща все менять. Спасибо.
Добрый день! Для отключения звука СП310 присваиваю PFW2=1, отключения звука не происходит. Что я делаю не так?
Евгений Кислов
17.08.2017, 15:29
Добрый день! Для отключения звука СП310 присваиваю PFW2=1, отключения звука не происходит. Что я делаю не так?
Требуется перезагрузить панель по питанию, чтобы настройка вступила в силу.
Добрый день, уважаемые. Помогите решить проблему. Имеется связка S7-1500 и панель СП310-Р. Подключение по modbusTCP. Необходимо на панели отображать состояние дискретных входов ПЛК с адресами I8.0-I8.7. При запросе регистра 1х64, как впрочем и 0х64 получаю состояние бита Q8.0, а до входов достучаться не могу. Где ошибка
Евгений Кислов
21.08.2017, 20:32
Добрый день, уважаемые. Помогите решить проблему. Имеется связка S7-1500 и панель СП310-Р. Подключение по modbusTCP. Необходимо на панели отображать состояние дискретных входов ПЛК с адресами I8.0-I8.7. При запросе регистра 1х64, как впрочем и 0х64 получаю состояние бита Q8.0, а до входов достучаться не могу. Где ошибка
Ошибки нет - вам надо найти подходящий мануал для ПЛК. Можно начать с этого:
https://cache.industry.siemens.com/dl/files/380/94766380/att_57741/v1/net_modbus_tcp_s7-1500_en.pdf
За мануал спасибо, он у меня есть, только при чем тут ПЛК, если другой панелью все вычитывается? Не получается именно в этой связке.
Евгений Кислов
22.08.2017, 06:47
За мануал спасибо, он у меня есть, только при чем тут ПЛК, если другой панелью все вычитывается? Не получается именно в этой связке.
Панель отправляет запрос по Modbus с указанием заданной области данных (Coils/Discrete Inputs и т.д.) и номера бита/регистра. Про I/Q/DB и т.д. она ничего не знает. Другая панель, вероятно, имеет готовый драйвер с адресацией.
В руководстве ПЛК должно быть описано, как соотносятся (если соотносятся) физические адреса с modbus-адресами.
Собственно, в документе по ссылке описан блок Modbus TCP Server - можно положить в него любые данные ПЛК, которое будут прочитаны панелью.
В другой панели специально использовал чистый modbus tcp драйвер. В общем всё пошло, оказывается не работает только в эмуляторе. На живой панели всё ОК. Спасибо за внимание.
AngryMoonk
24.08.2017, 15:13
Здравствуйте подскажите как вывести текст на текстовый дисплей из макроса?
Здравствуйте подскажите как вывести текст на текстовый дисплей из макроса?
Сишной функцией sprintf()
Например
sprintf((char*)&PSW[1000], "My Text");
Получите в текстовом дисплее с регистром PSW1000 текст - "My Text"
http://www.owen.ru/forum/showthread.php?t=22915&p=253487&viewfull=1#post253487
AngryMoonk
24.08.2017, 15:51
Сишной функцией sprintf()
Например
sprintf((char*)&PSW[1000], "My Text");
Получите в текстовом дисплее с регистром PSW1000 текст - "My Text"
http://www.owen.ru/forum/showthread.php?t=22915&p=253487&viewfull=1#post253487
Спасибо! Ещё один вопрос не как не могу победить можно ли полностью очищать график XY+ модель. Как обычный график? Русский язык поддерживает текстовый дисплей?
Евгений Кислов
24.08.2017, 15:59
Спасибо! Ещё один вопрос не как не могу победить можно ли полностью очищать график XY+ модель. Как обычный график? Русский язык поддерживает текстовый дисплей?
1. Можно очищать с помощью обнуления регистров графика.
2. Поддерживает, Win-1251.
AngryMoonk
24.08.2017, 16:07
1. Можно очищать с помощью обнуления регистров графика.
2. Поддерживает, Win-1251.
Пробовал он просто перерисовывает следующую пару точек в 0.
Русский язык поддерживает текстовый дисплей?
Дисплей-то поддерживает русский.
А вот редактор макросов нет:(
По этому сообщения на русском придется выводить с помощью кодов ASCII
Например
Если сообщение - "Мой текст"
то как-то так придется делать.
sprintf((char*)&PSW[1000], "\xCC\xEE\xE9\x20\xF2\xE5\xEA\xF1\xF2");
Пробовал он просто перерисовывает следующую пару точек в 0.
Не регистры очищать нужно, а циклический буфер устанавливать в начальное состояние
Например если график в проекте всего один, и данные будут в области PSW с авторазмещением
32817
То циклический буфер расположен в PSW4096 и PSW4098 начальные значения - 4100
32816
А если данные в PFW, то соответственно заменить
PSW4096 и PSW4098 на PFW4096 и PFW4098
AngryMoonk
24.08.2017, 17:23
Спасибо большое. Буду пробовать.
AngryMoonk
25.08.2017, 08:55
Не регистры очищать нужно, а циклический буфер устанавливать в начальное состояние
Например если график в проекте всего один, и данные будут в области PSW с авторазмещением
32817
То циклический буфер расположен в PSW4096 и PSW4098 начальные значения - 4100
32816
А если данные в PFW, то соответственно заменить
PSW4096 и PSW4098 на PFW4096 и PFW4098
Не даёт так сбросить график. Выдаёт ошибку неверное значение поля 0-4095.
Евгений Кислов
25.08.2017, 09:32
Собственно, да - я ошибся, а Petera все пояснил правильно.
AngryMoonk, посмотрите приложенный пример, запустите его в эмуляции. В нем данные графика размешаются начиная с регистра PSW300.
Не даёт так сбросить график. Выдаёт ошибку неверное значение поля 0-4095. Какая у вас версия конфигуратора у меня нет таких функций как у вас.
Сочувствую :(
https://www.youtube.com/watch?v=Vr24eZGEmJE
Возьмите готовую кнопку из вложенного проекта.
ЗЫ
Дело не в версии конфигуратора.
AngryMoonk
25.08.2017, 09:44
Собственно, да - я ошибся, а Petera все пояснил правильно.
AngryMoonk, посмотрите приложенный пример, запустите его в эмуляции. В нем данные графика размешаются начиная с регистра PSW300.
Спасибо сделал работает.
AngryMoonk
25.08.2017, 09:52
Сочувствую :(
https://www.youtube.com/watch?v=Vr24eZGEmJE
Возьмите готовую из вложенного проекта.
ЗЫ
Дело не в версии конфигуратора.
даже так не хочет.
https://youtu.be/Tq5TCL4NPWk
даже так не хочет.
https://youtu.be/Tq5TCL4NPWk
Так Вы и не меняйте ничего внутри, и будет работать.
AngryMoonk
25.08.2017, 11:34
Так Вы и не меняйте ничего внутри, и будет работать.
Все равно не сбрасывает. Сделал как посоветовал Евгений Кислов работает. Спасибо большое за помощь
Подскажите, пожалуйста, каким образом передать время из проекта ПЛК в панель?
ПЛК160, Codesys 2.3. В проекте есть переменная типа TIME, какие нужно сделать преобразования (или не нужно), чтобы в читаемом виде передавать данные на панель оператора СП310. Какой элемент на панели использовать для отображения времени?
Заранее благодарен.
Евгений Кислов
28.08.2017, 08:39
Подскажите, пожалуйста, каким образом передать время из проекта ПЛК в панель?
ПЛК160, Codesys 2.3. В проекте есть переменная типа TIME, какие нужно сделать преобразования (или не нужно), чтобы в читаемом виде передавать данные на панель оператора СП310. Какой элемент на панели использовать для отображения времени?
Заранее благодарен.
Зависит от того, как именно вы хотите отображать время.
Можно в ПЛК конвертировать его в набор целочисленных переменных (день-часы-минуты-секунды-миллисекунды) и отображать в панели с помощью нескольких Цифровых дисплеев.
Можно подготовить в ПЛК форматированную строку (например, "день 3, 12:13:14") и в панели отобразить ее с помощью текстового дисплея.
Евгений Кислов, переменная вот такая Remain:= TON1.PT - TON1.ET;, значения будут не больше 60 минут.
Каким образом можно разбить переменную на минуты/секунды для передачи на панель в наборе целочисленных переменных?
К примеру, Remain = T#54m45s, миллисекунды не нужны на панели.
[B]...переменная вот такая Remain:= TON1.PT - TON1.ET;
Преобразовать Remain в DWORD
Remain_HMI:= TIME_TO_DWORD(Remain);
Переменную Remain_HMI ---> в слейв ПЛК (4byte)
Можно ли передать в панель, подключенную к ПЛК, текстовую строку 6 символов, для отображения. Как передать и чем отображать?
Евгений Кислов
30.08.2017, 10:20
Можно ли передать в панель, подключенную к ПЛК, текстовую строку 6 символов, для отображения. Как передать и чем отображать?
Да, можно. См. пример:
http://www.owen.ru/upl_files/PO/SP300CODESYS2.3_v1.1.zip
D поле текстовый ввод, если установить цвет текста черный цвет фона беоый, то при вводе на панели с клавиатуры поле закрашивается черным и вводимые символы не видны до нажатия ентер. Как изменить цвет выделения поля при вводе? Или убрать выделение?
Евгений Кислов
30.08.2017, 11:05
D поле текстовый ввод, если установить цвет текста черный цвет фона беоый, то при вводе на панели с клавиатуры поле закрашивается черным и вводимые символы не видны до нажатия ентер. Как изменить цвет выделения поля при вводе? Или убрать выделение?
Цвет выделения изменить нельзя, убрать его - тоже.
Единственный вариант - изменить цвет текста.
Добрый день, хотел сделать маломальскую анимацию из меняющихся картинок, нарисовал картинки, при помощи фотошопа убрал фон, в форматах гиф и пнг получилось сохранить. При загрузке в панель (СП307б) фон появился, есть ли способ убрать его, или сделать прозрачным?
33012
Евгений Кислов
07.09.2017, 10:13
Добрый день, хотел сделать маломальскую анимацию из меняющихся картинок, нарисовал картинки, при помощи фотошопа убрал фон, в форматах гиф и пнг получилось сохранить. При загрузке в панель (СП307б) фон появился, есть ли способ убрать его, или сделать прозрачным?
33012
При добавлении изображений ставите галочку Прозрачность?
33013
При добавлении изображений ставите галочку Прозрачность?
33013
Поставил, все получилось, продолжаю работу...
Спасибо:)
Разъясните темному,
Вот запись в панель по функции 4 идет групповая допустим из ТРМ138, а запись по функции 3 в ТРМ уставок как идет и осуществляется.
С , модбас и макросы начал осваивать только, но пока вообще темный. Изучаю примеры и начало программирования с помощником, но он знает только С немного..
Евгений Кислов
12.09.2017, 10:23
Добрый день. 3x и 4x - это не номера функций, а обозначения областей памяти Modbus - Input-регистры (3x) и holding-регистры (4x).
Для записи в ТРМ необходимо использовать элемент ввода с 4x, и при этом переключить системный бит PFW36.2 в состояние ВКЛ для выбора функции записи 0x10 (как того требует РЭ на ТРМ).
Подробнее см. в FAQ, п. 3.8:
http://www.owen.ru/catalog/sensornie_paneli_operatora_oven_sp3xx/81265010
Разъясните темному,
Вот запись в панель по функции 4 идет групповая допустим из ТРМ138, а запись по функции 3 в ТРМ уставок как идет и осуществляется.
С , модбас и макросы начал осваивать только, но пока вообще темный. Изучаю примеры и начало программирования с помощником, но он знает только С немного..
Для темного :rolleyes:
Маленькая табличка
http://www.owen.ru/forum/attachment.php?attachmentid=12621&d=1397777586
Функции 04 и 03 - чтение, а не запись
Какая будет использоваться зависит от ссылки на области регистров слейва
04 для области 3х
03 для области 4х
Тип области адресов зависит от этих префиксов
33095 33096
Панель сама выберет правильную функцию для чтения.
Разбираюсь потихоньку, СПАСИБО. Понял так, 3 и 4 это чтение но разных по назначению регистров.
Ещё вопрос, в паспорте ТРМа названы адреса модбаса, и адрес восьмого канала float ст.слово дан 26, а в примере на панель адрес восьмого канала 38.
В паспорте похоже ошибка?
И записывать уставки я хочу не с цифрового ввода, а из макроса по времени.
Разбираюсь потихоньку, СПАСИБО. Понял так, 3 и 4 это чтение но разных по назначению регистров.
Ещё вопрос, в паспорте ТРМа названы адреса модбаса, и адрес восьмого канала float ст.слово дан 26, а в примере на панель адрес восьмого канала 38.
В паспорте похоже ошибка?
И записывать уставки я хочу не с цифрового ввода, а из макроса по времени.
Ни какой ошибки нет
В таблице из руководства адреса регистров указаны в шестнадцатеричном формате(Hex), а в примере для дисплеев адреса задаются в десятичном формате(Dec)
26(Hex) = 38(Dec)
Понял, спасибо. Постепенно появляется свет в конце ...
В паспорте на панель написано что запись значений в слейв устройства производится однократно с отключением ожидания ответа.
Я хочу периодически переписывать значения уставок в ТРМ, будет ли это работать?
Понял, спасибо. Постепенно появляется свет в конце ...
В паспорте на панель написано что запись значений в слейв устройства производится однократно с отключением ожидания ответа.
Я хочу периодически переписывать значения уставок в ТРМ, будет ли это работать?
А почему не не должно работать?
ЗЫ. Только не делайте вот это
при этом переключить системный бит PFW36.2 в состояние ВКЛ для выбора функции записи 0x10 (как того требует РЭ на ТРМ)
Потому, что для ТРМ138 для записи в регистры слейва нужна функция 06.
В руководстве на панель не описан регистр PFW36.
Пока мучить буду макрос, в примерах вроде всё разжевано, собрать бы это всё в единый макрос правильно, остальное вроде пока понятно. Спасибо.
alexx751
12.09.2017, 13:13
Что-то не совсем понял - по TCP доступ к отдельным битам через 4х невозможен (при выборе у, допустим, "переключателя с индикацией" порта PLC опция выбора 4х появляется, выбираем сконфигурированное подключение TCP - исчезает)?
Что-то не совсем понял - по TCP доступ к отдельным битам через 4х невозможен (при выборе у, допустим, "переключателя с индикацией" порта PLC опция выбора 4х появляется, выбираем сконфигурированное подключение TCP - исчезает)?
В этой версии конфигуратора нет.
Ждите новую, более старшую версию
alexx751
12.09.2017, 13:56
И как работать с битами? (просто наводку дайте, попробую сам разобраться).
И может обладаете инфой когда старшая версия выйдет?
Заранее спасибо.
И как работать с битами? (просто наводку дайте, попробую сам разобраться).
....
Совсем забыл...
Если в качестве слейва используется ПЛК ОВЕН, то следует заметить, что в конфигурации слейва ПЛК биты(0х) и регистры(4х) находятся в одной и той же области памяти.
http://www.owen.ru/forum/attachment.php?attachmentid=12345&d=1395648726
т.е. например бит 01, регистра 4х01 тоже самое, что и бит 0х17.
Таким образом можно вместо разрядов регистров 4х использовать соответствующие биты 0х
alexx751
12.09.2017, 16:26
Я так и делаю (правда в эмуляторе). Связь начинает рваться. Работает если только адреса 0, 16, 32 и т.д.
ПЛК 154 реальный...
Я так и делаю (правда в эмуляторе). Связь начинает рваться. Работает если только адреса 0, 16, 32 и т.д.
ПЛК 154 реальный...
Подтверждаю, но эмулятор не показатель!.
Например в эмуляторе и в Modbus RTU для кнопок нельзя использовать 4хNN.mm, эмулятор вылетает с ошибкой.
Надо проверить в реальной панели.
А почему не не должно работать?
ЗЫ. Только не делайте вот это
Потому, что для ТРМ138 для записи в регистры слейва нужна функция 06.
Добрый день.
Макрос почти сделал с помощником, но много вопросов.
При прописывании функции 06 на запись в прибор компилятор панели ругается. В примерах везде использовано 4х. и 3х.
И ещё вопрос, чтение из прибора текущей температуры идет в шестнадцатеричном виде, мне нужно изменять это значение, добавляя 1 градус каждые 5 минут и записывать в прибор. Нужно ли переводить значение в десятичный вид? И в каком виде записывать значение в регистр уставки прибора, в DWORD, десятичном или как? Там два регистра , уставки и усредненное значение. Есть ли ограничения на количество раз записей в прибор?
При прописывании функции 06 на запись в прибор компилятор панели ругается. В примерах везде использовано 4х. и 3х.
Просто Вы не знакомы с элементарными понятиями из теории Modbus. Вы путаете функции с адресными ссылками
Популярно можно ознакомится здесь https://sites.google.com/site/fieldbusbook/seti/modbus/modbuseducation
4x и 3х это не функции, а ссылки к областям памяти слева.
В общем случае существуют четыре области
0х - область дискретных выходов (доступны чтение и запись)
1х - область дискретных входов (доступно только чтение)
3х - область входных регистров (доступно только чтение)
4х - область выходных регистров (доступны чтение и запись)
Для каждой области существуют свои функции(команды) для записи или чтения. Так вот функция 06 это команда для записи одного значения в регистр из области 4х
Я сделал маленькую шпаргалку
http://www.owen.ru/forum/attachment.php?attachmentid=12621&d=1397777586
Панель сама выберет нужную функцию, в зависимости от заданного в Write() или Read() 4х или 3х
И ещё вопрос, чтение из прибора текущей температуры идет в шестнадцатеричном виде, мне нужно изменять это значение, добавляя 1 градус каждые 5 минут и записывать в прибор. Нужно ли переводить значение в десятичный вид? И в каком виде записывать значение в регистр уставки прибора, в DWORD, десятичном или как?
Какие глупости. Из прибора читаются ПРОСТО значения и ни в каком не шестнадцатеричном виде.
Ни какой разницы между десятичным и шестнадцатеричным представлением одного и того же значения нет. Hex или Oct придумано только для человека, в основном используется для вывода на экран или бумагу, а компьютеры оперируют наборами ноликов и единичек
123(Dec) = 7B(Hex) = 173(Oct) = 1111011(Bin) и это одно и тоже значение!
Вы же записываете в прибор число, а не символьную строку.
Если записываете значение переменной Ustavka, то вообще задумываться не о чем.
Просто Write(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_DWORD, Ustavka);
или если значение уставки в регистре PSW[256]
Write(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_DWORD, *(DWORD*)(PSW + 256));
Если константу, то как Вам больше нравится хотите
Write(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_DWORD, 123); десятичное представление
или
Write(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_DWORD, 0173); восьмеричное представление
или
Write(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_DWORD, 0х7В); шестнадцатеричное представление
Извиняйте что путаю, я же писал что совсем темный, с "С" и модбасом дел вообще не имел, программировал только в LD и FBD и с однофамильными комплектами, где прописывать ручками ничего не надо. Макрос и писал как вы строки набросали, но возникли сомнения в правильности понимания процесса, так как помощник ничего не понимает в оборудовании а я в "С" и его тонкостях. Допилю макрос и выложу. Спасибо за понимание.
Извиняйте что путаю, я же писал что совсем темный, с "С" и модбасом дел вообще не имел, программировал только в LD и FBD и с однофамильными комплектами, где прописывать ручками ничего не надо. Макрос и писал как вы строки набросали, но возникли сомнения в правильности понимания процесса, так как помощник ничего не понимает в оборудовании а я в "С" и его тонкостях. Допилю макрос и выложу. Спасибо за понимание.
Ничего страшного, научитесь!
Если Ваш макрос делает только
чтение из прибора текущей температуры идет в шестнадцатеричном виде,мне нужно изменять это значение, добавляя 1 градус каждые 5 минут и записывать в прибор
то и в панели можно обойтись без программирования на Си, штатными средствами, например одной только функциональной областью.
На счет научитесь, это смело сказано, почитал первоисточники, чтобы освоить это нужно этим заниматься постоянно, а не раз в пятилетку.
По записи в панель я понял что можно обойтись без макросов с помощью цифровых панелей .
Прикрепил проект . Связка СП307-ТРМ138 один канал локальный макрос.
Возможны путаница и не стыковки.
На счет научитесь, это смело сказано, почитал первоисточники, чтобы освоить это нужно этим заниматься постоянно, а не раз в пятилетку.
По записи в панель я понял что можно обойтись без макросов с помощью цифровых панелей .
Прикрепил проект . Связка СП307-ТРМ138 один канал локальный макрос.
Возможны путаница и не стыковки.
Т.к. у Вас в макросе есть цикл do....while, то
- сделайте режим выполнения макроса -Параллельный
33170
- и дайте панели возможность обслуживать элементы экрана (маленькая задержка в теле цикла)
33171
иначе не сможете на экране нажимать кнопку и вводить какие-либо значения пока макрос не завершит свою работу.
Функция sleep() работать не будет, замените ее на Delay
Дополнение...
33172
Ведь PSW256 это не тоже самое, что и 3х256
33173
И почему 3х256?
33174
И с чего Вы взяли, что уставка в формате DWORD?
33175
Один регистр - 0х0011
А это значит формат - Word !
И адрес регистра в руководстве в шестнадцатеричном представлении приведен, по этому не
Write(PLC, 16, MODBUS_RTU_REG_4X, 11, 0, TYPE_DWORD, CurTemp);
а так
Write(PLC, 16, MODBUS_RTU_REG_4X, 17, 0, TYPE_WORD, CurTemp);
или так
Write(PLC, 16, MODBUS_RTU_REG_4X, 0х11, 0, TYPE_WORD, CurTemp);
Ошибки исправлю. Спасибо.
Опять же вопрос, считываю я два регистра и как получается что я делаю вычисления и записываю только один регистр?
И в принципе макрос работоспособен?
Ящик на объекте стоит в другом городе и управление пока в ручном режиме даже без контроля текущей температуры.
Датчики не знают как к ТРМу подключить.
Исправленный проект.
Ошибки исправлю. Спасибо.
И в принципе макрос работоспособен?
Ящик на объекте стоит в другом городе и управление пока в ручном режиме даже без контроля текущей температуры.
Датчики не знают как к ТРМу подключить.
Исправленный проект.
Сомневаюсь, я :(
Много путаницы.
Вот зачем это?
33188
Убрать категорически!!!
Кроме того, значение температуры из ТРМ в регистре 3х0003 будет получено в виде числа с плавающей точкой(Float)
33189
А у дисплея формат - целое без знаковое число(Unsigned)
33190
Вопрос о том как текущая температура из ТРМ попадет в регистр PSW256 и соответственно в макрос остается не раскрытым:rolleyes:
33191
Да и формат не тот. Не может CurTemp,если ее читать из регистра 0х0003, быть DWORD, только float
Кроме того Вы читаете из ТРМ значение температуры в формате Float, а максимальную температуру задаете в регистре PSW260 в формате UINT и соответственно в макросе сравниваете между собой не сравниваемые величины.
Либо читайте другой регистр - 0х0001 значение в формате INT.
Такая запись при объявлении переменных
DWORD CurTemp=PSW[256];
WORD MaxTemp=PSW[260];
WORD SleepSec=PSW[258];
WORD StartTemp=PSW[256];
По моему не прокатит. Боюсь, что компилятор при загрузке проекта в панель будет ругаться.
Уж лучше использовать директивы #define
например
#define SleepSec PSW[258]
#define MaxTemp *(float*)(PSW + 260) // При условии, что Вы все таки исправите на экране цифровой ввод для MaxTemp (тип данных DWord, формат Float)
33193 33194
Вот зачем это?
Нажмите на изображение для увеличения.
Название: Захват-1.png
Просмотров: 1
Размер: 37.2 Кб
ID: 33188
Убрать категорически!!!
Это было в примере чтение текущей температуры с ТРМ138.
Вот зачем это?
Нажмите на изображение для увеличения.
Название: Захват-1.png
Просмотров: 1
Размер: 37.2 Кб
ID: 33188
Убрать категорически!!!
Это было в примере чтение текущей температуры с ТРМ138.
Убрать!
Вы не могли бы конкретно описать, что должен делать Ваш макрос?
Что у Вас означают переменные
StartTemp - если это начальная температура, то почему она записывается в самом конце?
Описание процесса.
При нажатии кнопки старт, вызывается макрос для первого канала регулировки температуры. Для этого записывается стартовая температура, ниже на один градус текущей или равна текущей. В ТРМ138 нет ПИДа, нельзя построить набор температуры по времени. Меня поставили перед фактом существования уже закупленного комплекта и его запуска в работу. Далее, идет набор температуры по времени до заданной, потом выдержка заданное время набранной температуры и всё, конец макроса и сброс уставки на стартовую.
В панели программа управления, а ТРМ контроль температуры и исполнительные клапана.
Я решил что такое можно сделать для данной связки, и вот мучаюсь осваивая для себя новую область.
Каналов будет восемь.
Описание процесса.
При нажатии кнопки старт, вызывается макрос для первого канала регулировки температуры. Для этого записывается стартовая температура, ниже на один градус текущей или равна текущей. В ТРМ138 нет ПИДа, нельзя построить набор температуры по времени. Меня поставили перед фактом существования уже закупленного комплекта и его запуска в работу. Далее, идет набор температуры по времени до заданной, потом выдержка заданное время набранной температуры и всё, конец макроса и сброс уставки на стартовую.
В панели программа управления, а ТРМ контроль температуры и исполнительные клапана.
Я решил что такое можно сделать для данной связки, и вот мучаюсь осваивая для себя новую область.
Каналов будет восемь.
Уточните
Для этого записывается стартовая температура, ниже на один градус текущей или равна текущей
Все таки равная или меньше на 1?
и в конце
конец макроса и сброс уставки на стартовую
на какую стартовую, ту что была в начале или в конце нужно уставке присвоить значение текущей температуры
ЗЫ.
А может все таки в начале нужно уставку записывать на 1 больше текущего значения иначе если она будет меньше текущего значения, то и нагрев не пойдет?
Вариант
33199
Для такого распределения регистров, макрос может быть таким
33200
#define SleepMin PSW[258]
#define MaxTemp *(float*)(PSW + 260)
#define StartTemp *(float*)(PSW + 256)
float CurTemp;
unsigned int CurMinute;
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x03, 0, TYPE_DWORD, &CurTemp);
StartTemp = CurTemp;
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, (int)(StartTemp + 1));
do {
CurMinute = (PSW[34] / 16) * 10 + PSW[34] % 16;
if (CurMinute % 5 == 0) {
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x03, 0, TYPE_DWORD, &CurTemp);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, (int)(CurTemp + 1));
}
Delay(10);
} while ( CurTemp < MaxTemp );
Delay(SleepMin * 60000U);
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x03, 0, TYPE_DWORD, &CurTemp);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x11, 0, TYPE_WORD, (int)CurTemp);
ResetPSB(256);
ЗЫ,
Внимание, нашел и исправил "очепятку"
Было
do {
CurMinute = (PSW[34] / 16) * 10 + PSW[34] % 16;
if (CurMinute % 5 == 0) {
Read(PLC, 16, MODBUS_RTU_REG_3X, 0, 0х03, TYPE_DWORD, &CurTemp);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, (int)(CurTemp + 1));
}
Должно быть
do {
CurMinute = (PSW[34] / 16) * 10 + PSW[34] % 16;
if (CurMinute % 5 == 0) {
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x03, 0, TYPE_DWORD, &CurTemp);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, (int)(CurTemp + 1));
}
Ну как бы понятно что стартовая температура - это температура, с которой начинается процесс нагрева. И соответственно она должна быть равна или ниже текущей температуры чтобы регулятор не включал ВУ пока она не будет задана выше. Как её вводить и что вводить, текущая температура может гулять от времени года, утро или день. камера не остыла от предыдущего процесса и она может быть разная. Вот я и думал вводить её с цифрового ввода в зависимости от состояния текущей температуры. И в конце процесса нагрева она снова должна переписываться в прибор чтобы регулятор встал и ВУ не включалось, а иначе как остановить регулятор. Как то так.
И думаю может все переменные привести к одному виду WORD int и читать 0х001. вроде как есть такая возможность, большой точности там не надо, сотые и десятые градуса не надо ловить.
И что цифровая панель чтения из прибора
Вот зачем это??
Убрать категорически!!!
не будет работать на запись в регистры?
Добрый день.
Есть связка 310+ПР220-24. Связь по modbus rtu. Панель 310 - мастер.
В связке всё работает нормально.
Ниже кусок экрана панели.
33214
На панели есть выключатель 4х512.
Когда я его включаю в ПР-ку уходит время для таймера.
ПР-ка возвращает 1 в 4х513 пока таймер работает.
Как только время закончилось в 4х513 прилетает 0.
Я уже всю голову себе сломал как сделать так, чтобы как только в 4х513 прилетает 0, то выключатель 4х512 так же выключался и открывалось окно с ID=2? Собственно вторая часть с окном, это не столь важна.
Добрый день.
Есть связка 310+ПР220-24. Связь по modbus rtu. Панель 310 - мастер.
В связке всё работает нормально.
Ниже кусок экрана панели.
33214
На панели есть выключатель 4х512.
Когда я его включаю в ПР-ку уходит время для таймера.
ПР-ка возвращает 1 в 4х513 пока таймер работает.
Как только время закончилось в 4х513 прилетает 0.
Я уже всю голову себе сломал как сделать так, чтобы как только в 4х513 прилетает 0, то выключатель 4х512 так же выключался и открывалось окно с ID=2? Собственно вторая часть с окном, это не столь важна.
Значит надо как только в 4х513 прилетает 0, т.е. по спаду бита 0 в 4х513 запускать ф.область с функциями 1. Выкл бит 0 в 4х512; 2 Вызвать окно с ID=2.
Только вот ф.область может запускаться только по фронту бита, а по спаду пока нет.
Однако можно воспользоваться ГМ "НЕ" из моей библиотеки http://www.owen.ru/forum/showthread.php?t=25052&p=232246&viewfull=1#post232246
На вход(Операнд) подавать бит 0 в 4х513, а на выходе(Результат) использовать промежуточный PSB. И уже от этого PSB запускать ф.область с функциями Выкл бит 0 в 4х512; 2 Вызвать окно с ID=2.
https://www.youtube.com/watch?v=d2QhPySsOok
И что цифровая панель чтения из прибора
Вот зачем это??
Убрать категорически!!!
не будет работать на запись в регистры?
Эта галка
33215
Совсем не запись в регистр PSW256, т.е не 3x0003 ---> PSW256.
А сия галка включает динамическую переадресацию.
Т.е. если галка включена, то на самом деле адрес регистра в ТРМ будет вычисляться по формуле
Адрес=БазовыйАдрес + Коеффициент х СодержимоеИндексногоРегистра.
В данном случае
3 + N x (Содержимое регистра PSW256)
где коэффициент N задается на этой вкладке
33216
Таким образом панель будет читать из ТРМ именно 3x0003 регистр если только PSW256 = 0.
А если задать N=5, то меняя в процессе работы панели содержимое регистра PSW256 от 0 до 7 можно на этот один дисплей выводит температуру любого из восьми каналов.
По этому я и спрашивал неоднократно
33217
Но от Вас никакого ответа не получил.
В моем макросе CurTemp читается непосредственно из ТРМ
Да, спасибо, разобрался, т.е. для цифровой индикации текущей температуры не надо использовать ту форму что я использую.
А в макросе прописать строку чтения из прибора и записи в регистр. Как туго то доходит...
Вот пробный проект, хочу завтра съездить посмотреть что получилось, там все равно монтаж надо ещё доделывать.
Вот пробный проект, хочу завтра съездить посмотреть что получилось, там все равно монтаж надо ещё доделывать.
Ну вот опять двадцать пять:rolleyes:
Уж и не знаю, что с Вами делать. Зачем я текст макроса выкладывал?
Поймите, что нельзя так сделать
WORD CurTemp=PSW[256];
.......
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x01, 0, TYPE_WORD, &CurTemp);
..............................................
Потому, что в ТРМ значения текущей температуры в формате float, а не WORD
С таким подходом Вы ничего похожего на текущую температуру не прочитаете.
ЗЫ.
Например, если в ТРМ температура 123.456 градусов, то в CurTemp получите
либо 17142 либо 59769, в зависимости от некоторых нюансов
Rake Runner
20.09.2017, 15:23
Ну вот опять двадцать пять:rolleyes:
Уж и не знаю, что с Вами делать. Зачем я текст макроса выкладывал?
Поймите, что нельзя так сделать
WORD CurTemp=PSW[256];
.......
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x01, 0, TYPE_WORD, &CurTemp);
..............................................
Потому, что в ТРМ значения текущей температуры в формате float, а не WORD
С таким подходом Вы ничего похожего на текущую температуру не прочитаете.
По адресу 0x01 таки в WORD (точнее, в INT, не суть):
33239
Мне логика paul-th понятна - ему же достаточно прибавать целое число (а не, например, 1.5).
Только прибавить, вероятно, надо 10, а не 1 (В ТРМ вроде для 25.5 в регистре 1 будет 255 и т.д.).
По адресу 0x01 таки в WORD (точнее, в INT, не суть):
33239
Мне логика paul-th понятна - ему же достаточно прибавать целое число (а не, например, 1.5).
В точку!
А бревна-то я и не заметил, тогда беру свои слова обратно.
Однако можно воспользоваться ГМ "НЕ" из моей библиотеки http://www.owen.ru/forum/showthread.php?t=25052&p=232246&viewfull=1#post232246
На вход(Операнд) подавать бит 0 в 4х513, а на выходе(Результат) использовать промежуточный PSB. И уже от этого PSB запускать ф.область с функциями Выкл бит 0 в 4х512; 2 Вызвать окно с ID=2.
Спасибо огромное. Всё получилось. И даже лучше чем хотел.... Но возникла другая проблема - при включении панели каждый раз появляется окно ID=2 т.к. при включении в регистре 4х513 0, а после функции НЕ соответственно 1. И появляется окно 2. Что можно сделать?
И ещё вопрос по "дисплею для таймера" из ГМ можно ли его делать невидимым? Я хочу наложить два дисплея друг на друга и в зависимости от условий отображать один из двух.
Присвоение WORD CurTemp=PSW[256]; я убрал, только забыл исправить, оставил WORD CurTemp;
прибавлять буду по 10. и записывать в в конце процесса буду 100. Завтра по результату отпишусь.
СПАСИБО.
Приобрели СП310р.
Пропал красный цвет. Брак или мог при отладке интерфейса что-нибудь записать?
Евгений Кислов
21.09.2017, 09:51
Приобрели СП310р.
Пропал красный цвет. Брак или мог при отладке интерфейса что-нибудь записать?
Что значит "пропал красный цвет"? Можете подробнее описать проблему и выложить проект, в котором она наблюдается?
при отображении любой графики на панельке нету красной составляющей в цвете.
33249 упарвляем через ПЛК клапанами и снимаем инфу с датчиков, строим графики.
Сегодня вылезла ошибка переполнение psw при работе с трендами, но я уменьшил кол-во срезов и она пропала.
ща на другой панельке попробую
Евгений Кислов
21.09.2017, 10:31
при отображении любой графики на панельке нету красной составляющей в цвете.
33249 упарвляем через ПЛК клапанами и снимаем инфу с датчиков, строим графики.
Сегодня вылезла ошибка переполнение psw при работе с трендами, но я уменьшил кол-во срезов и она пропала.
ща на другой панельке попробую
Проблема возникла в какой-то определенный момент или проявилась уже при первой загрузке проекта?
Попробуйте сделать принудительную загрузку проекта (см. в Руководстве пользователя п. 6.2).
Проблема возникла в какой-то определенный момент или проявилась уже при первой загрузке проекта?
Попробуйте сделать принудительную загрузку проекта (см. в Руководстве пользователя п. 6.2).
вчера все было нормально, целый день с панелькой работал.
попробовал на другой СП310р, там все нормально.
Евгений Кислов
21.09.2017, 10:50
вчера все было нормально, целый день с панелькой работал.
попробовал на другой СП310р, там все нормально.
При работе с трендами используйте область память PFW, а не PSW (чтобы не было "переполнения").
Попробуйте сделать принудительную загрузку проекта, если красный цвет не будет отображаться - отправьте панель в сервисный центр.
И, если не сложно, сделайте фото дисплея "без красной составляющей цвета", пожалуйста.
При работе с трендами используйте область память PFW, а не PSW (чтобы не было "переполнения").
Попробуйте сделать принудительную загрузку проекта, если красный цвет не будет отображаться - отправьте панель в сервисный центр.
И, если не сложно, сделайте фото дисплея "без красной составляющей цвета", пожалуйста.
Сделал принудительную загрузку проекта, изображение стало нормальным.
Спасибо.
Итоги дня так сказать.
Проект залился в панель без проблем, но нет соединения с ТРМ, сообщение "Соединение PLC 16". Параметры соединения установил как в мануале на панель и в приборе тоже, провода проверил, распайку кабеля проверил, местами А и В менял. Терминаторов там нет, они обязательны? Шкаф не знаю где купили в готовом виде.
Ещё вопрос, как использовать PFW для хранения параметров и в программе? компилятор макроса ругается на это.
Итоги дня так сказать.
Проект залился в панель без проблем, но нет соединения с ТРМ, сообщение "Соединение PLC 16". Параметры соединения установил как в мануале на панель и в приборе тоже, провода проверил, распайку кабеля проверил, местами А и В менял. Терминаторов там нет, они обязательны? Шкаф не знаю где купили в готовом виде.
Ещё вопрос, как использовать PFW для хранения параметров и в программе? компилятор макроса ругается на это.
Потеря связи возникает из-за не совпадения настроек параметров соединения.
Как правило начинающие игнорируют такой параметр как "Контроль четности"
В ТРМ значения по умолчанию
33262
Где отмечено, что контроль четности -"Нет"
А у Вас в проекте панели
33263
Контроль четности включен - контролируется четность. А нужно включить "Нет"
Регистры PFW можно только читать или писать через Read() и Write()
UINT Ustavka;
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 256, 0, TYPE_WORD, &Ustavka);
Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 256, 0, TYPE_WORD, Ustavka);
Использовать PFW в вычислениях напрямую нельзя.
Ну да я в ТРМ установил как в панели контроль четности. А терминатор нужен или нет?
В PFW я хотел хранить время выдержки и максимальную температуру нагрева, а то их значения обнуляются при выключении панели.
Т.е. в цифровом вводе задать регистр PFW и в макросе переписывать значение в PSW, я правильно понял?
Не запускается режим онлайн эмуляции на конфигураторе СП3хх. Конфигуратор просит установить интерфейсы панели. В файл\настройки проекта\устройство выбран modbus rtu master. Как запустить?
Не запускается режим онлайн эмуляции на конфигураторе СП3хх. Конфигуратор просит установить интерфейсы панели. В файл\настройки проекта\устройство выбран modbus rtu master. Как запустить?
Теперь уже никак. Придется создавать новый проект и копи/пастить экраны из старого проекта в новый.
ВАЖНО!
Онлайн эмуляция работает только с настройками портов modbus rtu master.
При создании новых проектов следует СРАЗУ, на начальном этапе выбирать для портов панели modbus rtu master (для Download можно - Не используется)
Потому, что если изначально был выбран тип modbus ASCII master или mobbus slave, то даже если в последующем Вы измените тип на rtu master, это не помогает. Проект не перестраивается и эмулятор не будет запускаться в онлайн.
petera Спасибо ещё раз, связь наладилась, процесс пошел. То что касается температуры и ТРМа всё хорошо работает, логика цикла выполняется правильно.
Но есть но.
В выдержками времени, по задержке и работа в цикле происходит не понятно что.
Задал увеличение уставки на 10 единиц, Мах Темп 40 гр. время выдержки 10 мин. внутри цикла 5 мин., первое изменение произошло не через 5 минут, а через 2 минуты и сразу на 20 градусов, текущая была 22 гр. и цикл встал на ожидание выдержки, она закончилась через 3 мин. вместо 10.
Сделал увеличение 2 единицы и время выдержки 5 мин. Увеличение температуры произошло так же через две минуты, но уже на 6 градусов и следующее увеличение произошло буквально через 20 сек. на 12 градусов, уставка достигла 40 гр. цикл встал на выдержку.
Что то со временем не так и с суммированием, что сделать чтобы было нормально?
Спасибо. А эмуляция на СП3хх у всех с трудом работает? У меня что-то медленно информация обновляется, эмулятор вылетает и вообще не все пременные работают. (Пробовал пример со страницы панели с ПР200). Может посоветуете какие-то предпочтительные настройки modbus?
petera Спасибо ещё раз, связь наладилась, процесс пошел. То что касается температуры и ТРМа всё хорошо работает, логика цикла выполняется правильно.
Но есть но.
В выдержками времени, по задержке и работа в цикле происходит не понятно что.
Задал увеличение уставки на 10 единиц, Мах Темп 40 гр. время выдержки 10 мин. внутри цикла 5 мин., первое изменение произошло не через 5 минут, а через 2 минуты и сразу на 20 градусов, текущая была 22 гр. и цикл встал на ожидание выдержки, она закончилась через 3 мин. вместо 10.
Сделал увеличение 2 единицы и время выдержки 5 мин. Увеличение температуры произошло так же через две минуты, но уже на 6 градусов и следующее увеличение произошло буквально через 20 сек. на 12 градусов, уставка достигла 40 гр. цикл встал на выдержку.
Что то со временем не так и с суммированием, что сделать чтобы было нормально?
Покажите проект с последними изменениями
ЗЫ.
Задал увеличение уставки на 10 единиц, Мах Темп 40 гр. время выдержки 10 мин. внутри цикла 5 мин., первое изменение произошло не через 5 минут, а через 2 минуты и сразу на 20 градусов, текущая была 22 гр. и цикл встал на ожидание выдержки,
Так и должно работать :
.............................................
do {
CurMinute = (PSW[34] / 16) * 10 + PSW[34] % 16;
if (CurMinute % 5 == 0)
{ CurTemp = CurTemp + 10;
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp);
}
Delay(10);
} while ( CurTemp < MaxTemp );
..................................................
Пятиминутное изменение уставки привязано к часам панели и происходит каждые 0, 5, 10, 15 ... 55 мин. По этому если запустили макрос в 14:53 или 17:13, то первое изменение и произойдет через 2 минуты - в 14:55 или 17:15
И так как условие if (CurMinute % 5 == 0) будет истинно в течение последующих 60 секунд, то и тело if
{ CurTemp = CurTemp + 10;
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp);
}
будет выполнятся непрерывно, и будет казаться, что "сразу на 20 градусов"
Тут надо использовать другой источник времени - регистр PSW38. Формат у него DWord.
В PSW38 находится время работы панели от момента включения. Дискретность 0,1 сек.
Ну да, я так примерно и думал об этом формате задания промежутков и событий.
А можно на "С" сваять какое то стандартное и понятное, для меня. реле времени и событие фиксировалось как то там по переднему фронту?
И опять же как быть с выдержкой на delay.она тоже сильно не соответствует тому что задано.
Ну да, я так примерно и думал об этом формате задания промежутков и событий.
А можно на "С" сваять какое то стандартное и понятное, для меня. реле времени и событие фиксировалось как то там по переднему фронту?
И опять же как быть с выдержкой на delay.она тоже сильно не соответствует тому что задано.
Можно. Используйте регистр PSW38
Например http://www.owen.ru/forum/showthread.php?t=22915&p=253752&viewfull=1#post253752
Или так
WORD MaxTemp=PSW[260];
WORD CurTemp;
UINT tm;
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x01, 0, TYPE_WORD, &CurTemp);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp);
tm = *(DWORD*)(PSW + 38);
do {
if (*(DWORD*)(PSW + 38) >= tm + 3000) // 3000 это 5 х 60 х 10
{ CurTemp = CurTemp + 10;
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp);
tm = *(DWORD*)(PSW + 38);
}
Delay(10);
} while ((CurTemp < MaxTemp) && GetPSBStatus(256));
Про Delay у меня то же есть соображения. Я думаю, что неверно задано объявление
WORD CurMinute;
Нужно
DWORD CurMinute;
Потому, что диапазон чисел у Word от 0 до 65535. И результат операции SleepMinute * 60000 превышает это самое 65535
В моем варианте было
SleepMinute * 60000U
Хорошо, спасибо. Проверю только в понедельник. Я упустил букву U,думал она ничего не значит, и больше минуты с небольшим время невозможно задать в моем варианте.
Ещё вопрос, на один экран не влазят все восемь окон восьми каналов.
Я так понял что работать будут одновременно только макросы расположенные на активном окне или я не прав и можно сделать окна глобальными?
Хорошо, спасибо. Проверю только в понедельник.
Ещё вопрос, на один экран не влазят все восемь окон восьми каналов.
Я так понял что работать будут одновременно только макросы расположенные на активном окне или я не прав и можно сделать окна глобальными?
В вашем случае в теле макроса есть цикл do...while по этому запущенный на одном экране он будет продолжатся и после переходе на другой экран, пока будет истинно while.
А режим выполнения макроса -"Параллельный" и маленькая Delay() внутри do...while позволяет нажимать кнопки на экранах и как следствие ходит по любым экранам и запускать другие макросы.
Т.е. все восемь макросов будут работать параллельно не зависимо от экранов
О. Это здорово. То что надо.
О. Это здорово. То что надо.
Предлагаю вариант макроса для одного канала
WORD MaxTemp=PSW[260];
WORD CurTemp;
WORD SleepMinute=PSW[258];
UINT tm;
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x01, 0, TYPE_WORD, &CurTemp);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp);
tm = *(DWORD*)(PSW + 38);
do {
if (*(DWORD*)(PSW + 38) >= tm + 3000) // 3000 это 5 х 60 х 10
{ CurTemp = CurTemp + 10;
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp);
tm = *(DWORD*)(PSW + 38);
}
Delay(10);
} while ((CurTemp < MaxTemp) && GetPSBStatus(256));
// --- ожидание выдержки ---
tm = *(DWORD*)(PSW + 38);
while ((*(DWORD*)(PSW + 38) < tm + SleepMinute * 600) && GetPSBStatus(256))
{
Delay(10);
}
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x11, 0, TYPE_WORD, 10 );
ResetPSB(256);
Он нужен только один!
И запускать его нужно в ф.области от бита PSB256, как и было сделано Вами в первоначальном варианте - бит PSB256 устанавливается и сбрасывается от переключателя с действием "Инверсия"
33270
Дополнительных макросов не нужно
Условие досрочного выкл. бита PSB256 проверяется в самом макросе. И в этом случае макрос завершит работу.
Нужно заменить ГМ "НЕ" на F_TRIGGER.
F_TRIGGER и R_TRIGGER добавил в библиотеку http://www.owen.ru/forum/showthread.php?t=25052&p=258412&viewfull=1#post258412
Petera, спасибо огромное за ответы. У меня отпуск на 5 дней. Я во вторник обязательно попробую и отпишусь по результатам.
Да, понял, по предыдущей записи что можно все в одном сделать. Макрос скопировал.
Не получается в одном макросе, второй макрос у нас переписывает уставку на 10 градусов при любом неожиданном нажатии на кнопку.
Да, понял, по предыдущей записи что можно все в одном сделать. Макрос скопировал.
Не получается в одном макросе, второй макрос у нас переписывает уставку на 10 градусов при любом неожиданном нажатии на кнопку.
http://www.owen.ru/forum/attachment.php?attachmentid=11962&d=1392751544
Мой вариант макроса при повторном нажатии на переключатель в любой момент, или в процессе нагрева или в процессе выдержки, останавливает процесс и записывает уставку 10.
do {
...........
} while ((CurTemp < MaxTemp) && GetPSBStatus(256));
.............
while ((*(DWORD*)(PSW + 38) < tm + SleepMinute * 600) && GetPSBStatus(256))
.............
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x11, 0, TYPE_WORD, 10 );
Тогда зачем еще какой-то макрос делать?
Добрый день.
В Конфигураторе СП300 в свойствах кнопок и ламп во вкладке "Кнопка" при нажатии на "Изменить" можно выбрать вид элемента (файл.xjt) из галереи.
Как можно отредактировать файл.xjt чтобы создать свой вид элемента с сохранением возможности изменять цвет кнопки и цвет рамки?
Спасибо!!! Все работает как надо. Один канал исправно работает. Осталось размножить на восемь каналов. Дописал две строки для сохранения редко изменяемых параметров в PFW, тоже работает нормально.
У заказчика по мере готовности появились новые хотелки, управлять запуском и остановкой парового котла с той же панели, но я его пока разочаровал необходимостью новых затрат и времени.
Аварийку бы ещё какую сделать, но не знаю кто за ней смотреть будет, принцип "включили на ночь" и до утра никого нет.
Евгений Кислов
26.09.2017, 07:04
Добрый день.
В Конфигураторе СП300 в свойствах кнопок и ламп во вкладке "Кнопка" при нажатии на "Изменить" можно выбрать вид элемента (файл.xjt) из галереи.
Как можно отредактировать файл.xjt чтобы создать свой вид элемента с сохранением возможности изменять цвет кнопки и цвет рамки?
Добрый день. К сожалению, такой возможности не предусмотрено.
Пробовал пример со страницы панели с ПР200 [url]http://www.owen.ru/uploads/sp310_pr200modbus_v2.zip.
СП3хх- использовал онлайн эмулятор, ПР200 - живьем.
Есть след вопросы:
1. В эмуляторе при нажатии на переключатель с индикацией приложение стабильно вылетает с ошибкой. Пробовал на разных компах с семеркой и десяткой. Что не так?
2. В параметрах порта убрал галку "переставить word в float" соответственно в пр200 в настройках установил галку старшим регистром вперед. В результате отображение переменных F2...F5 отсталось нормальным, F1 отображается неверно, причем оно не зависить от расстановки галок в настройках ПР200 "старшим регистром вперед" и "старшим байтом вперед". Что происходит?
Пробовал пример со страницы панели с ПР200 [url]http://www.owen.ru/uploads/sp310_pr200modbus_v2.zip.
СП3хх- использовал онлайн эмулятор, ПР200 - живьем.
Есть след вопросы:
1. В эмуляторе при нажатии на переключатель с индикацией приложение стабильно вылетает с ошибкой. Пробовал на разных компах с семеркой и десяткой. Что не так?
2. В параметрах порта убрал галку "переставить word в float" соответственно в пр200 в настройках установил галку старшим регистром вперед. В результате отображение переменных F2...F5 отсталось нормальным, F1 отображается неверно, причем оно не зависить от расстановки галок в настройках ПР200 "старшим регистром вперед" и "старшим байтом вперед". Что происходит?
Эмулятор не работает с битовыми переменными типа 4хNNN.mm
ЗЫ.
п.2
т.к. настройка в параметрах порта "переставить word в float" влияет только на чтение/запись единичных переменных DWord или Float.
Отображение переменных F2...F5 происходит через промежуточные PSW, в которые значения регистров копируются функцией "Копировать блок регистров". На эту функцию настройки "переставить word в float" не действует.
А действует только на правильность отображения перемеренной F1
Настройки вернуть как было в проектах изначально.
Добрый день. Это снова я.
Размножил макросы и попробовал это дело на панели. Сначала запустил сразу четыре макроса и панель встала не на что не реагируя. Помогло только отключение питания. Попробовал по одному макросу запускать. Работает только первый макрос нормально, остальные не работают, не переписывается текущее значение в уставку, пишет какие то непонятные цифры. Останов макросов происходит нормально с перезаписью на 10 единиц. Регистры все проверил всё соответствует.
В чем может быть проблема?
Проблема похоже в ТРМе, что в регистре положения точки? Потому что некоторые каналы читает со сдвигом влево вместо 11 гр. пишет 1.1, а другие каналы наоборот, вместо 7 гр. пишет 700. В восьмом канале ничего не происходит вообще. Как её там поправить я не знаю. На табло прибора и на панели текущее значение отображает нормально. Читать буду с регистров других. Но самое печальное что более трех макросов одновременно не могут работать, при запуске четвертого макроса панель встает и все процессы тоже.
Добрый день. Это снова я.
Размножил макросы и попробовал это дело на панели. Сначала запустил сразу четыре макроса и панель встала не на что не реагируя. Помогло только отключение питания. Попробовал по одному макросу запускать. Работает только первый макрос нормально, остальные не работают, не переписывается текущее значение в уставку, пишет какие то непонятные цифры. Останов макросов происходит нормально с перезаписью на 10 единиц. Регистры все проверил всё соответствует.
В чем может быть проблема?
Проблема похоже в ТРМе, что в регистре положения точки? Потому что некоторые каналы читает со сдвигом влево вместо 11 гр. пишет 1.1, а другие каналы наоборот, вместо 7 гр. пишет 700. В восьмом канале ничего не происходит вообще. Как её там поправить я не знаю. На табло прибора и на панели текущее значение отображает нормально. Читать буду с регистров других. Но самое печальное что более трех макросов одновременно не могут работать, при запуске четвертого макроса панель встает и все процессы тоже.
В общем 8 параллельных макросов панель не тянет, мне удалось запустить только четыре одновременно работающих.
По этому нужно отказаться от циклов do...while и использовать вместо этого case и сделать один макрос для всех каналов
33352
static UINT tm1, tm2, tm3, tm4, tm5, tm6, tm7, tm8;
static int State1, State2, State3, State4, State5, State6, State7, State8;
static int CurTemp1, CurTemp2, CurTemp3, CurTemp4, CurTemp5, CurTemp6, CurTemp7, CurTemp8;
static int SleepMinute1, SleepMinute2, SleepMinute3, SleepMinute4, SleepMinute5, SleepMinute6, SleepMinute7, SleepMinute8;
static int MaxTemp1, MaxTemp2, MaxTemp3, MaxTemp4, MaxTemp5, MaxTemp6, MaxTemp7, MaxTemp8;
//--------- Canal 1 -----------------
if (!GetPSBStatus(256) && State1 > 0) {
State1 = 99;
}
switch (State1) {
case 0:
if (GetPSBStatus(256)) {
State1 = 1;
}
else break;
case 1:
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 256, 0, TYPE_WORD, &SleepMinute1);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 258, 0, TYPE_WORD, &MaxTemp1);
Read(PLC, 16, MODBUS_RTU_REG_3X, 0X01, 0, TYPE_WORD, &CurTemp1);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp1);
tm1 = *(DWORD*)(PSW + 38);
State1 = 2;
case 2:
if (*(DWORD*)(PSW + 38) >= tm1 + 1800) {
tm1 = *(DWORD*)(PSW + 38);
CurTemp1 = CurTemp1 + 10;
if (CurTemp1 <= MaxTemp1) {
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp1);
break;
}
else {
State1 = 3;
}
}
case 3:
if ((*(DWORD*)(PSW + 38) >= tm1 + SleepMinute1 * 600)) {
ResetPSB(256);
State1 = 99;
}
else break;
case 99:
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x11, 0, TYPE_WORD, 10 );
State1 = 0;
}
//--------- Canal 2 -----------------
if (!GetPSBStatus(257) && State2 > 0) {
State2 = 99;
}
switch (State2) {
case 0:
if (GetPSBStatus(257)) {
State2 = 1;
}
else break;
case 1:
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 260, 0, TYPE_WORD, &SleepMinute2);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 262, 0, TYPE_WORD, &MaxTemp2);
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x06, 0, TYPE_WORD, &CurTemp2);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x15, 0, TYPE_WORD, CurTemp2);
tm2 = *(DWORD*)(PSW + 38);
State2 = 2;
case 2:
if (*(DWORD*)(PSW + 38) >= tm2 + 1800) {
tm2 = *(DWORD*)(PSW + 38);
CurTemp2 = CurTemp2 + 10;
if (CurTemp2 <= MaxTemp2) {
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x15, 0, TYPE_WORD, CurTemp2);
break;
}
else {
State2 = 3;
}
}
case 3:
if ((*(DWORD*)(PSW + 38) >= tm2 + SleepMinute2 * 600)) {
ResetPSB(257);
State2 = 99;
}
else break;
case 99:
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x15, 0, TYPE_WORD, 10 );
State2 = 0;
}
//--------- Canal 3 -----------------
if (!GetPSBStatus(258) && State3 > 0) {
State3 = 99;
}
switch (State3) {
case 0:
if (GetPSBStatus(258)) {
State3 = 1;
}
else break;
case 1:
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 264, 0, TYPE_WORD, &SleepMinute3);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 266, 0, TYPE_WORD, &MaxTemp3);
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x0B, 0, TYPE_WORD, &CurTemp3);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x19, 0, TYPE_WORD, CurTemp3);
tm3 = *(DWORD*)(PSW + 38);
State3 = 2;
case 2:
if (*(DWORD*)(PSW + 38) >= tm3 + 1800) {
tm3 = *(DWORD*)(PSW + 38);
CurTemp3 = CurTemp3 + 10;
if (CurTemp3 <= MaxTemp3) {
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x19, 0, TYPE_WORD, CurTemp3);
break;
}
else {
State3 = 3;
}
}
case 3:
if ((*(DWORD*)(PSW + 38) >= tm3 + SleepMinute3 * 600)) {
ResetPSB(258);
State3 = 99;
}
else break;
case 99:
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x19, 0, TYPE_WORD, 10 );
State3 = 0;
}
//--------- Canal 4 -----------------
if (!GetPSBStatus(259) && State4 > 0) {
State4 = 99;
}
switch (State4) {
case 0:
if (GetPSBStatus(259)) {
State4 = 1;
}
else break;
case 1:
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 268, 0, TYPE_WORD, &SleepMinute4);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 270, 0, TYPE_WORD, &MaxTemp4);
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x10, 0, TYPE_WORD, &CurTemp4);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x1D, 0, TYPE_WORD, CurTemp4);
tm4 = *(DWORD*)(PSW + 38);
State4 = 2;
case 2:
if (*(DWORD*)(PSW + 38) >= tm4 + 1800) {
tm4 = *(DWORD*)(PSW + 38);
CurTemp4 = CurTemp4 + 10;
if (CurTemp4 <= MaxTemp4) {
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x1D, 0, TYPE_WORD, CurTemp4);
break;
}
else {
State4 = 3;
}
}
case 3:
if ((*(DWORD*)(PSW + 38) >= tm4 + SleepMinute4 * 600)) {
ResetPSB(259);
State4 = 99;
}
else break;
case 99:
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x1D, 0, TYPE_WORD, 10 );
State4 = 0;
}
//--------- Canal 5 -----------------
if (!GetPSBStatus(260) && State5 > 0) {
State5 = 99;
}
switch (State5) {
case 0:
if (GetPSBStatus(260)) {
State5 = 1;
}
else break;
case 1:
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 272, 0, TYPE_WORD, &SleepMinute5);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 274, 0, TYPE_WORD, &MaxTemp5);
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x15, 0, TYPE_WORD, &CurTemp5);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x21, 0, TYPE_WORD, CurTemp5);
tm5 = *(DWORD*)(PSW + 38);
State5 = 2;
case 2:
if (*(DWORD*)(PSW + 38) >= tm5 + 1800) {
tm5 = *(DWORD*)(PSW + 38);
CurTemp5 = CurTemp5 + 10;
if (CurTemp5 <= MaxTemp5) {
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x21, 0, TYPE_WORD, CurTemp5);
break;
}
else {
State5 = 3;
}
}
case 3:
if ((*(DWORD*)(PSW + 38) >= tm5 + SleepMinute5 * 600)) {
ResetPSB(260);
State5 = 99;
}
else break;
case 99:
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x21, 0, TYPE_WORD, 10 );
State5 = 0;
}
//--------- Canal 6 -----------------
if (!GetPSBStatus(261) && State6 > 0) {
State6 = 99;
}
switch (State6) {
case 0:
if (GetPSBStatus(261)) {
State6 = 1;
}
else break;
case 1:
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 276, 0, TYPE_WORD, &SleepMinute6);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 278, 0, TYPE_WORD, &MaxTemp6);
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x1A, 0, TYPE_WORD, &CurTemp6);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x25, 0, TYPE_WORD, CurTemp6);
tm6 = *(DWORD*)(PSW + 38);
State6 = 2;
case 2:
if (*(DWORD*)(PSW + 38) >= tm6 + 1800) {
tm6 = *(DWORD*)(PSW + 38);
CurTemp6 = CurTemp6 + 10;
if (CurTemp6 <= MaxTemp6) {
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x25, 0, TYPE_WORD, CurTemp6);
break;
}
else {
State6 = 3;
}
}
case 3:
if ((*(DWORD*)(PSW + 38) >= tm6 + SleepMinute6 * 600)) {
ResetPSB(261);
State6 = 99;
}
else break;
case 99:
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x25, 0, TYPE_WORD, 10 );
State6 = 0;
}
//--------- Canal 7 -----------------
if (!GetPSBStatus(262) && State7 > 0) {
State7 = 99;
}
switch (State7) {
case 0:
if (GetPSBStatus(262)) {
State7 = 1;
}
else break;
case 1:
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 280, 0, TYPE_WORD, &SleepMinute7);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 282, 0, TYPE_WORD, &MaxTemp7);
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x1F, 0, TYPE_WORD, &CurTemp7);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x29, 0, TYPE_WORD, CurTemp7);
tm7 = *(DWORD*)(PSW + 38);
State7 = 2;
case 2:
if (*(DWORD*)(PSW + 38) >= tm7 + 1800) {
tm7 = *(DWORD*)(PSW + 38);
CurTemp7 = CurTemp7 + 10;
if (CurTemp7 <= MaxTemp7) {
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x29, 0, TYPE_WORD, CurTemp7);
break;
}
else {
State7 = 3;
}
}
case 3:
if ((*(DWORD*)(PSW + 38) >= tm7 + SleepMinute7 * 600)) {
ResetPSB(262);
State7 = 99;
}
else break;
case 99:
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x29, 0, TYPE_WORD, 10 );
State7 = 0;
}
//--------- Canal 8 -----------------
if (!GetPSBStatus(263) && State8 > 0) {
State8 = 99;
}
switch (State8) {
case 0:
if (GetPSBStatus(263)) {
State8 = 1;
}
else break;
case 1:
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 284, 0, TYPE_WORD, &SleepMinute8);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 286, 0, TYPE_WORD, &MaxTemp8);
Read(PLC, 16, MODBUS_RTU_REG_3X, 0x24, 0, TYPE_WORD, &CurTemp8);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x2D, 0, TYPE_WORD, CurTemp8);
tm8 = *(DWORD*)(PSW + 38);
State8 = 2;
case 2:
if (*(DWORD*)(PSW + 38) >= tm8 + 1800) {
tm8 = *(DWORD*)(PSW + 38);
CurTemp8 = CurTemp8 + 10;
if (CurTemp8 <= MaxTemp8) {
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x2D, 0, TYPE_WORD, CurTemp8);
break;
}
else {
State8 = 3;
}
}
case 3:
if ((*(DWORD*)(PSW + 38) >= tm8 + SleepMinute8 * 600)) {
ResetPSB(263);
State8 = 99;
}
else break;
case 99:
Write(PLC, 16, MODBUS_RTU_REG_4X, 0x2D, 0, TYPE_WORD, 10 );
State8 = 0;
}
"Волшебное" слово static в объявлении переменных обязательно!
Макрос нужно запускать в ф.области с типом - Непрерывно.
33353 33354
Режим выполнения макроса - Последовательный.
Ф.область должна быть глобальной.
Контроль кнопок ПУСК/СТОП сделан в самом макросе. По этому нужно использовать обычные кнопки.
33355 33356
Проверил работу. Полет нормальный.
Измененный проект во вложении.
ЗЫ.
Конечно можно использовать 8 отдельных макросов и 8 ф.областей.
Но зачем, если и в одном макросе все работает?
А я сижу как раз ковыряю это дело. Вы на чем проверяли? С ТРМом 138?
Потому что у меня не читает текущее значение правильно с регистров 0Х06,0Х0b,0X10,0X15,0X1a,0X1f,0Х24, а читает только правильно с 0X01, я переписал чтение с регистров float, может я неправильно форму записи номера регистра использую? Там есть в каждом канале регистр положения десятичной точки. как с ним работать? Четыре макроса не удавалось запустить. Три работали. В понедельник проверю работу макроса.Спасибо.
А я сижу как раз ковыряю это дело. Вы на чем проверяли? С ТРМом 138?
Потому что у меня не читает текущее значение правильно с регистров 0Х06,0Х0b,0X10,0X15,0X1a,0X1f,0Х24, а читает только правильно с 0X01, я переписал чтение с регистров float, может я неправильно форму записи номера регистра использую? Там есть в каждом канале регистр положения десятичной точки. как с ним работать? Четыре макроса не удавалось запустить. Три работали. В понедельник проверю работу макроса.Спасибо.
ТРМ у меня нет. Во многих случаях, при отсутствии реального железа, я использую "PeakHMI MODBUS serial RTU slave simulator"
33368
33367
33369 33370
33371 33372
Незаменимый инструмент, совершенно бесплатный.
33366
http://www.hmisys.com/
Там есть в каждом канале регистр положения десятичной точки. как с ним работать?
Все очень просто.
Из ТРМ можно читать значения или формате Float или Int.
Float - это вещественные числа или числа с плавающей запятой(точкой), тут присутствуют и целые и дробные числа
Int - это только целые числа, дробных нет. Но можно интерпретировать их как числа с фиксированной точкой(запятой), если договорится о требуемой точности представления. Для этого между двумя заранее определёнными разрядами ставится запятая для превращения целого числа в дробное. Например, целое число 1234 после вставки запятой превращается в дробное 12,34.
Так вот в регистре положения десятичной точки и находится число которое указывает сколько знаков после запятой(или от конца числа) отводится под дробную часть в измеренном значении.
Например.
Пусть температура среды равна 123,4гр.
если в регистре положения десятичной точки 0, то в регистре значения температуры получим 123
если в регистре положения десятичной точки 1, то в регистре значения температуры получим 1234
если в регистре положения десятичной точки 2, то в регистре значения температуры получим 12340
Аналогичные настройки есть и у дисплея панели для целых чисел(Dec, Unsigned)
33374 33375
По этому, если Вы у дисплея задали число знаков после запятой =1, то и В ТРМ в регистре положения десятичной точки должна быть 1.
В противном случае будет так
некоторые каналы читает со сдвигом влево вместо 11 гр. пишет 1.1, а другие каналы наоборот, вместо 7 гр. пишет 700
В первом случае в регистре положения десятичной точки число 0, а во втором - в регистре положения десятичной точки число 3.
А алогичный регистр положения десятичной точки есть и для уставок. И здесь нужно быть аккуратным. Если в регистре положения десятичной точки для уставки, например 1 канала 0x0010, записано
- число 0, то CurTemp1 = CurTemp1 + 10; увеличивает уставку на 10гр
- число 1, то CurTemp1 = CurTemp1 + 10; увеличивает уставку на 1,0гр
- число 2, то CurTemp1 = CurTemp1 + 10; увеличивает уставку на 0,10гр
и т.д.
В принципе можно принудительно записать в регистры положения десятичной точки для всех каналов измерения число 1. Добавить по одной строчке
case 1:
Write(PLC, 16, MODBUS_RTU_REG_4X, 0, 0, TYPE_WORD, 1);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 256, 0, TYPE_WORD, &SleepMinute1);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 258, 0, TYPE_WORD, &MaxTemp1);
Read(PLC, 16, MODBUS_RTU_REG_3X, 0X01, 0, TYPE_WORD, &CurTemp1);
Write(PLC, 16, MODBUS_RTU_REG_4X, 0X11, 0, TYPE_WORD, CurTemp1);
tm1 = *(DWORD*)(PSW + 38);
State1 = 2;
Тут же можно для однозначности добавит запись в регистры положения десятичной точки уставок для всех каналов нужное число.
Спасибо, понял, так и сделаю. По регистрам уставок вроде всё в порядке, а вот по регистрам в int десятичной точки похоже бардак и надо их переписать.
Проще наверно написать отдельный макрос и залить и выполнить его отдельно один раз, а потом уже залить основную программу, чтобы уже не лазить по готовой программе. Я то думал что это возможно в ТРМе ручками сделать, но нет.
Добрый день, господа.
В проекте создал окно в которое вставил "таблицу отображения данных":
33378
Проблема заключается в том, что отсчёт начинается с 0, а мне нужно строго с единицы.
С этим можно что-то сделать?
Евгений Кислов
29.09.2017, 13:18
Добрый день, господа.
В проекте создал окно в которое вставил "таблицу отображения данных":
33378
Проблема заключается в том, что отсчёт начинается с 0, а мне нужно строго с единицы.
С этим можно что-то сделать?
Можно отключить столбец с нумерацией и добавить свой столбец с заранее заданными значениями (1, 2, 3 и т.д.).
Можно отключить столбец с нумерацией и добавить свой столбец с заранее заданными значениями (1, 2, 3 и т.д.).
Блин. Тупанул. :)
Добрый всем вечер.
Отчет по применению. petera макрос как бы работает, позволяет запускать сразу восемь каналов и панель не виснет, но, в работе самих каналов ничего не изменилось, нормально работает только первый канал. Загрузка в регистры десятичной точки вроде как вообще не происходит и исполнение этих команд приводит к перебоям связи с ТРМом. Пробовал запускать отдельным макросом эти восемь строк, при запуске макроса идет сбой связи. Вписывал строки в основной макрос, ничего не изменяется, со второго по шестой канал перезапись идет, но цифры не те со сдвигом точки как и было до этого, при запуске седьмого и восьмого каналов идет сбой связи с ТРМом и не видно что идет вообще какая то перезапись. Правильно исполняется во всех каналах последняя строка перезаписи 10 единиц в уставку.
Добрый всем вечер.
Отчет по применению. petera макрос как бы работает, позволяет запускать сразу восемь каналов и панель не виснет, но, в работе самих каналов ничего не изменилось, нормально работает только первый канал. Загрузка в регистры десятичной точки вроде как вообще не происходит и исполнение этих команд приводит к перебоям связи с ТРМом. Пробовал запускать отдельным макросом эти восемь строк, при запуске макроса идет сбой связи. Вписывал строки в основной макрос, ничего не изменяется, со второго по шестой канал перезапись идет, но цифры не те со сдвигом точки как и было до этого, при запуске седьмого и восьмого каналов идет сбой связи с ТРМом и не видно что идет вообще какая то перезапись. Правильно исполняется во всех каналах последняя строка перезаписи 10 единиц в уставку.
Ну а в первом канале можно записать положение дес.точки? Какое-нибудь?
"Дни-часы-минуты" это что? Показания часов реального времени панели? Или это тоже "дисплей для таймера". Ведь дисплея с таким форматом я не делал.
Добрый вечер, уважаемый Petera.
Возникла проблема, о которой я не сразу подумал - максимальное количество дней в уставке 30. Те 720 часов. А в "дисплее для таймера" максимум 99 часов. Возможно ли прикрутить ещё один знак для таймера или сделать "дисплей для таймера" вида ДД:ЧЧ:ММ?
PS моя попытка найти как создавать такие "ГМ" не привела к успеху. Если есть ссылка, то киньте пожалуйста.
PPS спасибо за ГМ "Время наработки". Отличная вещь. Пригодится чуть позже. :rolleyes:
Ну а в первом канале можно записать положение дес.точки? Какое-нибудь?
Я вообще то переписывал значение десятичной точки для всех восьми каналов, включая первый. Результата не увидел, получил сбой связи при запуске седьмого и восьмого канала. Причин не знаю, не моя это тема.
Добрый день. Стоит задача реализовать Символьное поле ввода/вывода. То есть при нажатии на текстовом поле вызывается диалог с несколькими текстовыми строками и при выборе одной из строк устанавливается один из битов переменной в ПЛК. В символьном поле ввода/вывода отображается текст соответствующей выбранной текстовой строки.
Пока ничего не получается. Пытаюсь реализовать через вызов окна с кнопками. Но выяснилось, что если под открытым окном на основном экране есть кнопки, то они нажимаются сквозь окно. Как решить эту проблему?
Добрый день. Стоит задача реализовать Символьное поле ввода/вывода. То есть при нажатии на текстовом поле вызывается диалог с несколькими текстовыми строками и при выборе одной из строк устанавливается один из битов переменной в ПЛК. В символьном поле ввода/вывода отображается текст соответствующей выбранной текстовой строки.
Пока ничего не получается. Пытаюсь реализовать через вызов окна с кнопками. Но выяснилось, что если под открытым окном на основном экране есть кнопки, то они нажимаются сквозь окно. Как решить эту проблему?
Как сделать выпадающие списки можно посмотреть в моих примерах http://www.owen.ru/forum/showthread.php?t=17566&p=139727&viewfull=1#post139727
http://www.owen.ru/forum/attachment.php?attachmentid=13286&d=1402766858
Пытаюсь реализовать через вызов окна с кнопками. Но выяснилось, что если под открытым окном на основном экране есть кнопки, то они нажимаются сквозь окно. Как решить эту проблему?
Этот эффект только в эмуляторе!!!
В панели кнопки под окнами не нажимаются!!!!
Во вложении пример для СП300
33575
Выпадающие списки - это окна с набором ф.кнопок
33576
Каждая кнопка
- присвоить значение
- закрыть окно
Поля выбора - бутерброд из
Вариационного текста
33578 33579
И такого же размера ф.кнопки, можно невидимой, а можно ее просто поместить под вариационный текст.
33577
Кнопка вызывает окно со списком
На втором экране кнопки с оформлением подходящим для списков
33580
Как сделать выпадающие списки можно посмотреть в моих примерах
Петр, большое спасибо за примеры и разъяснения. Отдельная благодарность за кнопки с оформлением. Очень интересна была бы информация как их сделать самостоятельно.
Добавил в Ваш пример Экран 3 со своим "Списком". Различия следующие:
1. Символьное поле ввода/вывода организовано по чтению/записи битов регистра в ПЛК (бит 0, бит 1, бит2), а не значения регистра в ПЛК.
2. Для того, чтобы на экране не нажимались кнопки (за пределами окна) при вызванном окне, а также для закрытия окна при нажатии вне окна, весь Экран закрыт скрытой функциональной кнопкой в верхнем слое.
Доброго дня.
Возникла странная проблема с окном печати в СП307
Вызываю окно 62002 функциональной кнопкой.
33616
поле загрузки в проект при нажатии кнопки печать окно печати открывается и сразу закрывается.
причём я вижу в окне которое мелькает те данные которые мне нужны.
Не могу понять что происходит - все остальные окна (кроме печати) ведут себя адекватно.
Проверил биты печати - больше нигде не используются.
Доброго дня.
Возникла странная проблема с окном печати в СП307
Вызываю окно 62002 функциональной кнопкой.
33616
поле загрузки в проект при нажатии кнопки печать окно печати открывается и сразу закрывается.
причём я вижу в окне которое мелькает те данные которые мне нужны.
Не могу понять что происходит - все остальные окна (кроме печати) ведут себя адекватно.
Проверил биты печати - больше нигде не используются.
А я разве говорил, что окно печати нужно принудительно открывать?
Ни каких ф.областей с открытием окна 62002!
У окна печати в свойствах есть бит управления
33617
Присвойте ему, например, PSB256
Для печати Вам нужна обычная кнопка и не на окне печати, а на любом экране
33618
Здесь бит - тот, который в настройках окна печати, т.е. PSB256
Действие кнопки - ВКЛ. пока нажата
33619
А я разве говорил, что окно печати нужно принудительно открывать?
Ни каких ф.областей с открытием окна 62002!
У окна печати в свойствах есть бит управления
Присвойте ему, например, PSB256
Для печати Вам нужна обычная кнопка и не на окне печати, а на любом экране
Здесь бит - тот, который в настройках окна печати, т.е. PSB256
Действие кнопки - ВКЛ. пока нажата
Всё так и есть.
По кнопке срабатывает отправка на печать.... как обычно НО:
1) в эмуляторе происходит отправка на печать, но лист пустой. возможно так и должно быть, т.к. это эмулятор.
2) в панели тоже тоже пикает, но принтер не реагирует. возможно проблема с настройками принтера или проекта.
3) подключил к компу через COM порт и начал слушать. Ничего не шлёт панель. Пуст эфир.
Как ещё проверить пока не придумал, но есть ещё один принтер только кабель не распаян.
Всё так и есть.
По кнопке срабатывает отправка на печать.... как обычно НО:
1) в эмуляторе происходит отправка на печать, но лист пустой. возможно так и должно быть, т.к. это эмулятор.
2) в панели тоже тоже пикает, но принтер не реагирует. возможно проблема с настройками принтера или проекта.
3) подключил к компу через COM порт и начал слушать. Ничего не шлёт панель. Пуст эфир.
Как ещё проверить пока не придумал, но есть ещё один принтер только кабель не распаян.
1) в эмуляторе происходит отправка на печать, но лист пустой. возможно так и должно быть, т.к. это эмулятор.
Панель печатает на матричном принтер, а эмулятор посылает данные диспетчеру печати Windows, а не напрямую в COM порт.
Из-за этого лист пустой, хотя если в настройках принтера Windows перенаправить вывод печати в файл, то можно увидеть, что лист на самом деле не пустой :)
33626
Это не что иное, как ESC команды(Epson ESP/p) управления принтером. Тут не все символы "печатные"
33627
Можно по таблице ESC кодов посмотреть, что это за команды
ЗЫ
1B 40 == ESC @ (инициализация принтера)
0D == (CR)Возврат каретки
1B 74 01 == (ESC t 1) Выбирает таблицу символов 1 (0, 1, 48,49)
1B 36 == ESC 6) Включает печать символов с кодами 128-159 (десятичные) как символов
1B 52 00 == (ESC R 0) Выбирает международный набор символов n=0 - США
1B 50 == (ESC P) Устанавливает размер символов 10 cpi
1B 32 == (ESC 2) Устанавливает промежуток между сторками равный 1/6 дюйма
1B 43 46 == (ESC C 112) Установить длинну страницы в строках n=112
0D == (CR) Возврат каретки
0C == (FF) На новую страницу
0D == (CR) Возврат каретки
2) в панели тоже тоже пикает, но принтер не реагирует. возможно проблема с настройками принтера или проекта.
Наверно так и есть.
Принтер должен подключаться только к порту Download
В проекте в настройках порта Download - Порт не используется
В настройках принтера (наверно это DIP переключатели)
Скорость передачи ТОЛЬКО 9600 и никакой другой!
Контроль четности - чет. (even)
Управление потоком - аппаратное ( не XON/XOFF)
Кабель для подключения
ДАННЫЕ передаются только в одну сторону - из панели в принтер, поэтому кабель "нестандартный"
панель --- принтер
2(RXD) --- 8(CTS) READY/BUSY Готовность принтера (Сигнал из принтера в панель)
3(TXD) --- 3(TXD) Данные (Сигнал из панели в принтер)
5(GND) --- 5(GND) Земля
Последние вести с полей:
Сумел подключить принтер к компу и через эмулятор даже напечатал кракозябры - хоть и не лучший результат, но хоть так. Дальше надо играть с настройками принтера, что само по себе не просто - нет у него DIPов только софт.
Попытка подключить к панели не увенчалась успехом. Возможно настройки или возможно принтер не подходит.
Буду бороться дальше.
PS программа которая слушает COM порт так ничего и не увидела от панели.
Последние вести с полей:
Сумел подключить принтер к компу и через эмулятор даже напечатал кракозябры - хоть и не лучший результат, но хоть так. Дальше надо играть с настройками принтера, что само по себе не просто - нет у него DIPов только софт.
Попытка подключить к панели не увенчалась успехом. Возможно настройки или возможно принтер не подходит.
Буду бороться дальше.
PS программа которая слушает COM порт так ничего и не увидела от панели.
Фамилия принтера?
Фамилия принтера?
APS EPM203-MRS
есть ещё в наличии но пока без кабеля:
ALFAPANEL 3.24 HS
able DV0147
Карасев Александр Сергеев
17.10.2017, 14:45
Здравствуйте.
Помогите разобраться со следующей проблемой.
Передаю из ПЛК 110 в панель СП307 через элемент "цифровой дисплей" данные. Передаваемое значение 3-х значное число. В панели элемент "цифровой дисплей" настроен так что бы отображать 2 знака т. к. это необходимо и достаточно но отображение числа идет не с сотен, а единиц. Для примера допустим предается число 195,на панели отображается 95, а надо 19.
Здравствуйте.
Помогите разобраться со следующей проблемой.
Передаю из ПЛК 110 в панель СП307 через элемент "цифровой дисплей" данные. Передаваемое значение 3-х значное число. В панели элемент "цифровой дисплей" настроен так что бы отображать 2 знака т. к. это необходимо и достаточно но отображение числа идет не с сотен, а единиц. Для примера допустим предается число 195,на панели отображается 95, а надо 19.
А масштабирование в дисплее использовать пробовали?
ЗЫ
33716
Результат
33717
Yury Evgenev
18.10.2017, 18:07
Ломается проект при портирований с СП200 на СП300.
А именно: элемент "историческая таблица" вдруг стал группой. Вкладка "события" исчезла. Теперь там группа с какими то внутренними регистрами. Как портировать правильно?
Евгений Кислов
18.10.2017, 19:21
Ломается проект при портирований с СП200 на СП300.
А именно: элемент "историческая таблица" вдруг стал группой. Вкладка "события" исчезла. Теперь там группа с какими то внутренними регистрами. Как портировать правильно?
Как указано в руководстве пользователя - экспорт происходит корректно, если проект для СП270 был создан в версии 2.С.6F.
У вас, очевидно, проект изначально был создан в версии 2.82. В этом случае следует пересоздать таблицу.
Yury Evgenev
18.10.2017, 21:22
Да. в старой версии делал. Потом качал 2.С.6F и преобразовывал к её версии. Потом открывал в СП300 конфигураторе. Я просто пересохранил проект в новой версии. Я правильно сделал или есть нюансы портирования?
Евгений Кислов
19.10.2017, 06:53
Да. в старой версии делал. Потом качал 2.С.6F и преобразовывал к её версии. Потом открывал в СП300 конфигураторе. Я просто пересохранил проект в новой версии. Я правильно сделал или есть нюансы портирования?
Нюанс только один - в СП300 корректно импортируются проекты из СП200 2.С.6F, но не из более ранних версий.
В вашем случае - следует пересоздать таблицу в СП300.
Евгений76
06.11.2017, 06:37
Здравствуйте! Хочу подсоединить панель СП307, 310 к частотнику АВВ580, у него 485 вход есть, возможно? Требуется управление пуск стоп скорость индикация скорости, тока, подключение к одной панели 3-х частотников,
Евгений Кислов
06.11.2017, 09:29
Здравствуйте! Хочу подсоединить панель СП307, 310 к частотнику АВВ580, у него 485 вход есть, возможно? Требуется управление пуск стоп скорость индикация скорости, тока, подключение к одной панели 3-х частотников,
Если частотники поддерживают протокол Modbus RTU - то возможно.
Добрый день.
Пытаюсь разобраться с самым "загадочным" параметром в Конфигураторе СП300 - "Задержка отправки".
Находится в Настройки проекта/Устройства/Параметры порта.
Описание в Руководстве пользователя: Задержка между запросами (для режима Master).
Сохраняется в регистре PFW35 (для PLC-порт) и в регистре PFW25 (для Download-порт).
В описании Руководства пользователя к этим регистрам указано: таймаут связи :confused:.
В Конфигураторе СП200 этот параметр назывался Коммуникационный интервал.
Вот здесь http://www.owen.ru/forum/showthread.php?t=8604&p=202521&viewfull=1#post202521
Уважаемый petera называет его также "периодом опроса".
1. Не надо было уменьшать время тайм-аута по умолчанию http://www.owen.ru/forum/showthread....l=1#post201255. Пусть бы оставалась 1000 мс.
2. Если у Вас такие "задумчивые" слейвы, то период их опроса
34028
нужно сделать не менее чем задержка их ответа.
В Конфигураторе СП300:
ЗЫ.
В дополнение к выше сказанному.
Может Ваши слейвы, те же МВ110 не успевают выполнять команды и еще не готовы к приему следующей посылки от панели, из-за этого тоже будут ошибки связи.
Ведь если здесь стоит 0
34030
то панель "пуляет" запросы к слейвам с максимально возможной частотой, может для МВ110 или ПР нужно не менее, например, 10мс между запросами? А они, к примеру, приходят от панели каждые 5 мс. Цифры условные, но такое может быть.
есть случаи решения проблем с "тормозами" панели http://www.owen.ru/forum/showthread.php?t=22915&p=247518&viewfull=1#post247518
Непонятно, "Задержка отправки" это все-таки период опроса или задержка между окончанием одного опроса и началом другого? Какие рекомендации по его установке? Что означает нулевое значение?
Евгений Кислов
08.11.2017, 12:48
Непонятно, "Задержка отправки" это все-таки период опроса или задержка между окончанием одного опроса и началом другого?
Второе.
Какие рекомендации по его установке?
Для большинства приборов 10-20 мс будет достаточно.
Что означает нулевое значение?
То, что следующий запрос будет отправлен сразу после получения ответа на предыдущий, без дополнительных задержек.
Tesla-pip
13.11.2017, 11:58
Можно ли сделать так чтобы сенсорная панель была мастером сети с ПР200, но вся исполняемая программа была в ПР200, а сенсорная панель использовалась только для отображения некоторых значений передаваемых ей ПР200, и в качестве управления (вместо тумблеров и кнопок)?
Евгений Кислов
13.11.2017, 12:08
Можно ли сделать так чтобы сенсорная панель была мастером сети с ПР200, но вся исполняемая программа была в ПР200, а сенсорная панель использовалась только для отображения некоторых значений передаваемых ей ПР200, и в качестве управления (вместо тумблеров и кнопок)?
Да, конечно.
Tesla-pip
13.11.2017, 12:22
А то, что ПР200 программируется в “OWEN Logic”, а СП3… – кстати; в чем программируется СП3?
Евгений Кислов
13.11.2017, 12:23
А то, что ПР200 программируется в “OWEN Logic”, а СП3… – кстати; в чем программируется СП3?
В конфигураторе СП300. Посмотрите ссылку в моей подписи - по ней найдете и ПО, и документацию, и пример настройки обмена между панелью и ПР200.
Здравствуйте! Есть ли возможность в конфигураторе СП300 сделать экспорт/импорт сообщений таблицы тревог, журнала исторических событий?
Или может другие не "стандартные" способы их заполнения.
Евгений Кислов
05.12.2017, 18:24
Здравствуйте! Есть ли возможность в конфигураторе СП300 сделать экспорт/импорт сообщений таблицы тревог, журнала исторических событий?
Или может другие не "стандартные" способы их заполнения.
Такой возможности не предусмотрено.
День добрый!
Элемент Историческая таблица имеет очень интересную возможность - выбирать текущий индекс в таблице нажатием непосредственно на саму таблицу, который визуализируется рамкой. Как это реализовано и возможно ли добиться того же самого от таблицы вывода данных например?
Евгений Кислов
12.12.2017, 08:09
День добрый!
Элемент Историческая таблица имеет очень интересную возможность - выбирать текущий индекс в таблице нажатием непосредственно на саму таблицу, который визуализируется рамкой. Как это реализовано и возможно ли добиться того же самого от таблицы вывода данных например?
Добрый день. У таблицы вывода данных такая возможность отсутствует.
У Исторической таблицы она есть, т.к. есть возможность квитирования выделенного сообщения.
Всем коллегам здравствовать!
Подскажите начинающему:
- как сделать, чтобы по какому-то биту кнопка или лампа появлялась или пряталась? А то у меня всё выходит, что она спрятана всегда. Только надпись от неё по биту появляется и пропадает
- что означает вызов макроса "параллельный" и "последовательный"?
Евгений Кислов
13.12.2017, 08:06
Всем коллегам здравствовать!
Подскажите начинающему:
- как сделать, чтобы по какому-то биту кнопка или лампа появлялась или пряталась? А то у меня всё выходит, что она спрятана всегда. Только надпись от неё по биту появляется и пропадает
- что означает вызов макроса "параллельный" и "последовательный"?
Добрый день.
1. Посмотрите пример: http://www.owen.ru/uploads/example_basicelements.zip
2. Последовательный - макрос выполняется в блокирующем режиме (т.е. пока он не выполнится - никаких других операций выполняться не будет, в т.ч. отрисовки визуализации), параллельный - в неблокирующем. Параллельный режим может потребоваться, например, при работе с файлами.
спасибо, завтра буду пробовать. Сегодня под рукой девайсов нет
Коллеги, прошу подсказать, - возможно ли написать самому какую-то фунцию (по типу API HMI Function, видимых в редакторе макросов) для вызова её из макроса? Или можно макрос из макроса вызвать?
Как вообще это делается?
Евгений Кислов
08.01.2018, 15:55
Коллеги, прошу подсказать, - возможно ли написать самому какую-то фунцию (по типу API HMI Function, видимых в редакторе макросов) для вызова её из макроса? Или можно макрос из макроса вызвать?
Как вообще это делается?
Тела функций описываются в глобальном макросе, и потом их можно вызвать в пользовательских.
Посмотрите пример архивации с помощью макросов - там это есть.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot