PDA

Просмотр полной версии : Панели оператора СП270. Вопросы и ответы



Страницы : 1 2 [3] 4

SokolovS
12.09.2014, 16:02
Делал ли кто-нибудь кнопку с подтверждением?
Есть желание сделать кнопку включения режима "пожар" на экране и естественно, нужно избежать случайных нажатий, но не создавая дополнительных сложностей для включения
Самый простой вариант, конечно, сделать окно подтверждения, которое вызывается кнопкой, а само действие запуска режима выполняется только по нажатии кнопки в окне, но он не слишком элегантен.

parovoZZ
12.09.2014, 16:13
Есть вопросец)))

У меня ПЛК100 + МВ110 + МУ110 и надо подключить СП270. ПЛК100 с МВ110 и МУ110 подключены по 485 интерфейсу и работают по протоколу ОВЕН (ПЛК100 мастер). Вопрос - СП270 для работы с ПЛК100 надо делать мастером, а ПЛК100 в слэйв. Как тогда подключить СП270 к ПЛК? На тот же интерфейс или на RS232? Уживутся ли ОВЕН мастер с MODBUS slave в ПЛК?

petera
12.09.2014, 16:51
Делал ли кто-нибудь кнопку с подтверждением?
Есть желание сделать кнопку включения режима "пожар" на экране и естественно, нужно избежать случайных нажатий, но не создавая дополнительных сложностей для включения
Самый простой вариант, конечно, сделать окно подтверждения, которое вызывается кнопкой, а само действие запуска режима выполняется только по нажатии кнопки в окне, но он не слишком элегантен.
Что значит кнопка с подтверждением, как Вы планируете подтверждать действие.
Чем не подходит окно с подтверждением действия?
14367--->14368--->14369--->14370

Здесь я использую сигнальное окно.
14371

petera
12.09.2014, 17:00
Есть вопросец)))

У меня ПЛК100 + МВ110 + МУ110 и надо подключить СП270. ПЛК100 с МВ110 и МУ110 подключены по 485 интерфейсу и работают по протоколу ОВЕН (ПЛК100 мастер). Вопрос - СП270 для работы с ПЛК100 надо делать мастером, а ПЛК100 в слэйв. Как тогда подключить СП270 к ПЛК? На тот же интерфейс или на RS232? Уживутся ли ОВЕН мастер с MODBUS slave в ПЛК?
Все нормально уживется если панель подключать к порту ПЛК RS232. Порты ведь будут разные.

SokolovS
12.09.2014, 17:26
Что значит кнопка с подтверждением, как Вы планируете подтверждать действие.
Чем не подходит окно с подтверждением действия?
14367--->14368--->14369--->14370

Здесь я использую сигнальное окно.
14371Можно узнать почему именно сигнальное окно?

Вариант с таким подтверждением я и имел в виду
Но он слишком примитивен и, подозреваю, ближе к компьютерному интерфейсу, что для рабочих может быть не совсем понятно
Я себе представлял в виде реализации аналога выключателя с крышкой, вроде такого:
14374

parovoZZ
12.09.2014, 18:56
Все нормально уживется если панель подключать к порту ПЛК RS232. Порты ведь будут разные.

А на один, значит, никак?
А как указать по какому интерфейсу какой протокол?


Ещё вопросец - как в панель передать отрицательное число (температура, например). Вообще, в панель можно залить программу?

И сколько регистров в панельке? А то у меня набирается что-то порядка 30))) Адресов хватит?

SokolovS
15.09.2014, 15:06
Можно узнать почему именно сигнальное окно?

Вариант с таким подтверждением я и имел в виду
Но он слишком примитивен и, подозреваю, ближе к компьютерному интерфейсу, что для рабочих может быть не совсем понятно
Я себе представлял в виде реализации аналога выключателя с крышкой, вроде такого:
14374В общем, нарисовал что-то
Возможно, кому-нибудь пригодится
У кнопки три состояния: норма, снята блокировка, сработала. Снятие блокировки и включение по нажатию. Выключение не поддерживается. Если снять блокировку и ничего не делать, через определённое время (1 регистр, х0.1с) кнопка снова заблокируется, при этом виден исчезающий прогрессбар.
Используется PSB3 для отсчёта времени, бит блокировки, бит состояния вкл/выкл режим пожара, бит установки состояния, бит оповещения и регистр времени задержки блокировки

parovoZZ
16.09.2014, 17:22
А ещё вопрос - есть битовый регистр. Как из панели подобраться к каждому из битов в регистре??? Даже в битовой кнопке есть только адрес регистра.

petera
16.09.2014, 20:21
А ещё вопрос - есть битовый регистр. Как из панели подобраться к каждому из битов в регистре??? Даже в битовой кнопке есть только адрес регистра.
Начните с изучения протокола ModBus.
Маленький ликбез http://www.owen.ru/forum/showthread.php?t=16243&p=124358&viewfull=1#post124358
в этой же теме конкретно про кнопку http://www.owen.ru/forum/showthread.php?t=16243&p=124349&viewfull=1#post124349
И конечно изучите распределение соответствие регистров в конфигурации ПЛК адресам регистров ModBus
http://www.owen.ru/forum/attachment.php?attachmentid=12345&d=1395648726

SokolovS
17.09.2014, 14:42
Возможно ли выполнять какое-либо действие при включении заставки?
Хочу осуществлять выход с запароленного экрана.

petera
17.09.2014, 16:57
Возможно ли выполнять какое-либо действие при включении заставки?
Хочу осуществлять выход с запароленного экрана.По подробнее можно?

SokolovS
17.09.2014, 17:26
Есть два экрана - основной и с настройками
На основном присутствует запароленная кнопка перехода на экран настроек
Я хочу чтобы при выключении экрана панель переходила с экрана настроек на основной

parovoZZ
17.09.2014, 22:42
а как организовать сдвиг для выравнивания? ведь в параметрах модуля всегда задается адрес регистра, т.е. сдвиг получается автоматически.
у меня в панели сп270 в любом элементе доступны только регистры PSB и psw. я так понимаю, что при указании первого указываем адрес регистра, а при указании второго адрес бита. если рекомендуется адрес регистра панели начинать с 255, то как быть с адресами битов? если так, то в параметрах кнопки надо указывать PSB и вычислять его? в плк же мы указываем адрес регистра?

petera
17.09.2014, 23:18
а как организовать сдвиг для выравнивания? ведь в параметрах модуля всегда задается адрес регистра, т.е. сдвиг получается автоматически.
у меня в панели сп270 в любом элементе доступны только регистры PSB и psw. я так понимаю, что при указании первого указываем адрес регистра, а при указании второго адрес бита. если рекомендуется адрес регистра панели начинать с 255, то как быть с адресами битов? если так, то в параметрах кнопки надо указывать PSB и вычислять его? в плк же мы указываем адрес регистра?
Вы бы для начала так и сказали, что панель у Вас Slave, а ПЛК Master!!! Потому что в вопросе: -"есть битовый регистр. Как из панели подобраться к каждому из битов в регистре??? Даже в битовой кнопке есть только адрес регистра" это не совсем не очевидно.
Если панель у Вас Slave, а ПЛК Master, то забываем про выравнивание и на картинку в посте #573 не смотрим. А смотрим сюда
http://www.owen.ru/forum/attachment.php?attachmentid=12241&d=1394708722
Для тог, что бы Вас поняли прикладывайте к своим вопросам картинки-скриншоты конфигурации ПЛК и элементов на экране панели. А то Вы там, а мы тут.
Для кнопок с битами PSB, в конфигурации ПЛК должно быть, например так
14453

ЗЫ. Если панель у Вас Slave, а ПЛК Master, то из панели "подобраться к битам 8 bit input module" нельзя, т.к. панель подчиненное устройство. Это ПЛК будет "подбираться к битам панели":)

petera
17.09.2014, 23:32
Есть два экрана - основной и с настройками
На основном присутствует запароленная кнопка перехода на экран настроек
Я хочу чтобы при выключении экрана панель переходила с экрана настроек на основной
Пока ответа нет:(

parovoZZ
18.09.2014, 00:45
]

ЗЫ. Если панель у Вас Slave, а ПЛК Master, то из панели "подобраться к битам 8 bit input module" нельзя, т.к. панель подчиненное устройство. Это ПЛК будет "подбираться к битам панели":)

так PSB 300 и psw 300 бдут находиться по разным адресам или по одному и тому же? как из плк подобраться к PSB 300? PSB - это битовый регистр?

а разве в панели нельзя создать 8 bit input register?

весь этот разговор к чему - если использовать 8 bit регистры для отображения состояния чего-либо, то глупо использовать только нулевой бит из восьми. остальные 7 просто пропадают((((

petera
18.09.2014, 01:05
так PSB 300 и psw 300 бдут находиться по разным адресам или по одному и тому же? как из плк подобраться к PSB 300? PSB - это битовый регистр?

а разве в панели нельзя создать 8 bit input register?

весь этот разговор к чему - если использовать 8 bit регистры для отображения состояния чего-либо, то глупо использовать только нулевой бит из восьми. остальные 7 просто пропадают((((
1. Адресные пространства регистров PSW(Word) и PSB(bit) не пересекаются, это физически отдельные области памяти панели.
2.PSB это отдельные биты, с точки зрения ПЛК это область 0х (ссылка 0х) 00001-09999 - Discrete Output Coils - однобитовый тип, доступен на чтение и на запись.
3. "а разве в панели нельзя создать 8 bit input register?" это глупость, в панели ничего не нужно создавать. С точки зрения ПЛК он обращается к непрерывному полю бит, с любого адреса в этом поле, и длина запроса может быть не 8 бит.
4. "если использовать 8 bit регистры для отображения состояния чего-либо, то глупо использовать только нулевой бит из восьми. остальные 7 просто пропадают". Что бы не пропадали используйте остальные 7, неужели у Вас в проекте будет только одна кнопка? Ведь этот модуль читает не один бит, а сразу восемь идущих подряд. Кроме того, чего их жалеть, если их в настройках панели по умолчанию аж 1024-255=769 штук, если мало, то можно увеличить. А вообще это издержки работы через модули в конфигурации ПЛК. Если хотите иметь доступ только к 1 или 2 или 3 или... бит, то пишите свой обмен с использованием библиотек Кодесиса.

ЗЫ. Для того, чтобы добраться к биту PSB300, нужно в ПЛК для 8 bit input register задать адрес регистра в диапазоне от 293 до 300. Если он будет 293, то PSB300 будет в седьмом бите 8 bit input register, а если адрес будет 300, то PSB300 будет в нулевом бите 8 bit input register. Для других значений адреса 8 bit input register положение PSB300 посчитаете сами. Я же вроде все понятно нарисовал http://www.owen.ru/forum/showthread.php?t=8604&p=146103&viewfull=1#post146103

Alex_1985
18.09.2014, 15:37
Здравствуйте не получается подсоединить СП270 к МОДУС 5684-0 (Через модуль Модус 5672). Есть ли примеры реализации через комплект МОДУС+СП270? Заранее благодарен.

parovoZZ
19.09.2014, 13:50
Так адресацию PSB тоже надо начинать с 256 адреса? А как в 8 bit input module записать? В параметрах модуля команды только на чтение.

А что ещё за параметры модуля
"адрес входов"
"адрес выходов"
"адрес диагностики"

Если я правильно понял, то регистр 8 bit input module с адресом 256 и регистр Register input module с адресом 256 не пересекутся?

А где они физически находятся? В конфигурации Universal Modbus device указан адрес сп270, значит при установлении связи с ней ПЛК разметит адресное пространство в панели?

parovoZZ
19.09.2014, 14:04
И ещё вопрос.
Если панелька Slave, то где лучше хранить настройки? В PFW регистрах панельки или в ПЛК? Если, к примеру, панелька отвалится, то они не будут доступны?

petera
19.09.2014, 14:23
parovoZZ, какой у Вас ПЛК?

parovoZZ
19.09.2014, 15:27
ОВЕН ПЛК100

petera
19.09.2014, 15:43
Так адресацию PSB тоже надо начинать с 256 адреса? А как в 8 bit input module записать? В параметрах модуля команды только на чтение.

А что ещё за параметры модуля
"адрес входов"
"адрес выходов"
"адрес диагностики"

Если я правильно понял, то регистр 8 bit input module с адресом 256 и регистр Register input module с адресом 256 не пересекутся?

А где они физически находятся? В конфигурации Universal Modbus device указан адрес сп270, значит при установлении связи с ней ПЛК разметит адресное пространство в панели?

1. Адресацию PSB, PSW, PFW можно начинать с любого адреса, но в адресах от 0 до 255 находятся системные регистры PSB, PSW, PFW и если Вы, не зная их назначения, запишите в них чего нибудь, то не обижайтесь после этого на панель:rolleyes:
2."А как в 8 bit input module записать?" Ни как, само название input module говорит, что модуль предназначен для чтения. Для записи нужен другой модуль, который output module :)
3."регистр 8 bit input module с адресом 256 и регистр Register input module с адресом 256 не пересекутся?" Не пересекутся.
4.А где они физически находятся? Кто они:confused:, если Вы про 8 bit input module и Register input module, то они находятся в ПЛК, каждый модуль по очереди формирует запрос к панели, на пример на запись регистров и получает ответ от панели о результате операции, или на чтение регистров панели и получает от нее содержимое затребованных регистров. ПЛК никакого адресного пространства в панели не делает, адресное пространство в панели существует даже если к ней не подключен ПЛК, это ее внутренняя память в виде трех непрерывных областей регистров PSW, PFW, PSB.

Про марку ПЛК ответа не получил, по этому сделал учебный проект для ПЛК100
14470
и для панели
14471

parovoZZ
19.09.2014, 17:19
Хорошо, спасибо!
Только не понятно - два universal modbus device с одним адресом - допустимо?

Про адресное пространство я имел ввиду инициализацию переменных, но раз там только регистры, то ясно.

Ещё вопрос - как в один и тот же регистр и писать и читать из него же (хочу в панельке сделать чтение и запись настроек через один цифровой дисплей.

petera
19.09.2014, 21:39
Хорошо, спасибо!
Только не понятно - два universal modbus device с одним адресом - допустимо?

Про адресное пространство я имел ввиду инициализацию переменных, но раз там только регистры, то ясно.

Ещё вопрос - как в один и тот же регистр и писать и читать из него же (хочу в панельке сделать чтение и запись настроек через один цифровой дисплей.
1. "два universal modbus device с одним адресом - допустимо?" - Допустимо, хоть 100 штук.
2. "как в один и тот же регистр и писать и читать из него же?" - Нужно иметь Register input module(для чтения) и Register output module(для записи) с одинаковыми адресами регистра.
Для увеличения скорости реакции панели и уменьшения трафика, все input module поместите в один universal modbus device, а все output module помести в другой universal modbus device, как в моем примере.
Для universal modbus device, в котором модули input, установите для параметра (6) Work mode значение By poll time. Т.е. ПЛК все время, с заданной периодичностью читает регистры панели (органы управления и элементы ввода)
Для universal modbus device, в котором модули output, установите для параметра (6) Work mode значение By value change или By command. В первом случае запись в регистры панели будет только при изменении значения в переменных output module, а во втором нужно в программе командовать записью в нужные регистры панели. Возможно понадобятся несколько universal modbus device с модулями input, для одних Work mode - By poll time, а для других Work mode - By comman. Это понадобится например для: -"хочу в панельке сделать чтение и запись настроек через один цифровой дисплей". Потому что, если хранить настройки в ПЛК, то после включения питания все настройки в ПЛК могут обнулиться, если Вы вздумаете в панели для ввода/вывода настроек использовать регистры PSW, а не PFW.

Не понятно ваше упорное желание иметь ПЛК мастером, а панель слейвом. Сплошной "геморрой" будет. Куда лучше наоборот сделать - панель мастер, а ПЛК слейв. Все переменные в модуле Slave ПЛК энергонезависимые. Значения переменных всегда актуальные, даже если панель "отвалиться". Конфигурирование Modbus Slave в ПЛК значительно проще чем Modbus Master. Скорость реакция системы ПЛК-панель будет выше.

parovoZZ
20.09.2014, 00:20
а как командовать записью в регистры из программы?
у меня есть модули мв и му - для них плк мастер. если я на этот же интерфейс повешу панель мастер - косяка не произойдет? или лучше панель цеплять на отдельный 232?
и еще вопрос
адрес ввода, адрес вывода, адрес диагностики - это что?
есть еще вопрос по графику архивных данных - у меня их 16 штук и у всех указана область хранения psw 500-psw507. так и должно быть?
а если переменные в плк обозначить var retain? мне же настройки в панельке не за чем хранить.

IIeroniux
21.09.2014, 12:47
есть еще вопрос по графику архивных данных - у меня их 16 штук и у всех указана область хранения psw 500-psw507. так и должно быть?
У вас 16 входных переменных (4х1, 4х2 и т.д.) графика?
В области хранения PSW 500-506 хранятся координаты одной точки + дата + время.
В вашем случае (PSW500-507) либо у вас две выборки WORD, либо одна DWORD + время.
Текущие данные нужны для перемещения по тренду курсора с помощью 'Кнопка события'. Ставите две кнопки, выбираете в них действия: next item, prev item. Запускаете проект. Теперь при нажатии кнопок у вас появится курсор, который будет перемещаться по графику. В ячейке psw 500 будет отображаться текущее значение под курсором.
Как посмотреть где на самом деле хранятся данные архивного графика? Входите в свойства графика, переходите на вкладку управления. Там указан область хранения PSW/PFW и начальный номер регистра хранения. Количество регистров, выделяемых под хранение, меняется автоматически. В зависимости от количества входных переменных и точек графика.


а если переменные в плк обозначить var retain? мне же настройки в панельке не за чем хранить.
Настройки в панели можно сохранять в регистрах PFW панели. В таком случае они сохранятся при отключении питания.

SokolovS
25.09.2014, 11:30
В этой теме http://www.owen.ru/forum/showthread.php?t=13179 выложены системные регистры панели
Среди них есть настройки портов
В своём проекте я использую оба порта. PLC настроен в мастер и занимается опросом оборудования. Download настроен подчинённым и будет подключаться у заказчика. Думаю, возможность настройки параметров по этому порту без перепрошивки панели будет весьма полезной. Делал ли кто-нибудь окно таких настроек?

petera
25.09.2014, 11:48
В этой теме http://www.owen.ru/forum/showthread.php?t=13179 выложены системные регистры панели
Среди них есть настройки портов
В своём проекте я использую оба порта. PLC настроен в мастер и занимается опросом оборудования. Download настроен подчинённым и будет подключаться у заказчика. Думаю, возможность настройки параметров по этому порту без перепрошивки панели будет весьма полезной. Делал ли кто-нибудь окно таких настроек?
На счет окна настроек Вам нужно к Андрею обратиться. http://www.owen.ru/forum/showthread.php?t=16765
На видео это окно на 46 сек.

http://youtu.be/qBxvqbina98

SokolovS
25.09.2014, 11:54
Исчёрпывающе, спасибо

SokolovS
26.09.2014, 17:25
В этой теме http://www.owen.ru/forum/showthread.php?t=13179 выложены системные регистры панели
Среди них есть настройки портов
В своём проекте я использую оба порта. PLC настроен в мастер и занимается опросом оборудования. Download настроен подчинённым и будет подключаться у заказчика. Думаю, возможность настройки параметров по этому порту без перепрошивки панели будет весьма полезной. Делал ли кто-нибудь окно таких настроек?
В приложении мой вариант реализации такого окна настроек для порта Download
Размещение элементов управления, правда, строго скопировал с такового у Андрея
На панели НЕ тестировалось, корректность работы проверялась только в симуляторе по значениям в регистрах

SokolovS
06.10.2014, 10:44
Вариашечка
Сделал отдельным экраном, так гораздо приятнее и универсальнее
Если кто-нибудь подскажет как конкатенацию строк сделать, попробую сделать поле, отображающее текущие настройки сети

SokolovS
06.10.2014, 11:06
И теперь вопрос
Вроде видел работу панелью со временем, но не знаю как искать
Мне требуется задавать текущее время и день недели в панели, а также время и день недели нескольких событий. Ну и делать всякие дела по наступлении событий этих.
Возможно такое? Какова реакция на потерю питания будет?

petera
06.10.2014, 11:32
Если кто-нибудь подскажет как конкатенацию строк сделать, попробую сделать поле, отображающее текущие настройки сети
А что что четыре вариационных текста разделенных запятыми Вас не устраивают?

petera
06.10.2014, 12:16
Вариашечка
Сделал отдельным экраном, так гораздо приятнее и универсальнее
Только не знаю как спрятать поле адреса если панель мастер
.............
Здесь помогут регистры
PSW74,75 для порта PLC
14633
и PSW64,65 для порта Download
14634

Если ограничится из всех протоколов, имеющихся в панели http://www.owen.ru/forum/showthread.php?t=14132&p=101140&viewfull=1#post101140,только протоколом ModBus, то


Настройки порта
PSW64(74)
PSW65(75)


Порт не используется
0
0


Modbus RTU (Панель мастер)
5
13


Modbus ASCII (Панель мастер)
22
15


Modbus RTU Slave (ПЛК мастер)
23
5



В скобках регистры для порта PLC

Таким образом показывать поле адреса панели нужно (использовать IF) если, например, PSW64 или PSW74 равно 23 для выбранного порта.

Эдуард_Н
06.10.2014, 18:10
Подскажите как можно с помощью панели задавать время работы блока "Blink" в ПЛК 160 ?

petera
06.10.2014, 21:22
Подскажите как можно с помощью панели задавать время работы блока "Blink" в ПЛК 160 ?
Смотрите пример на диске, который идет с ПЛК
14645
или можно скачать отсюда http://www.owen.ru/forum/showthread.php?t=13581
Пример http://kipshop.ru/Primeri/HMI/03_06_PLC1XX+SP270[Master]_timer.zip

SokolovS
22.10.2014, 12:18
Проблема раз:
СП270 сильно умная, МУ110 не понимает глубины полёта мысли.
Использую для управления модулем скриптовую функцию Writes и регистр 50й (в него записывается состояние сразу всех выходов, это удобно), ожидая от неё запроса 0x10. Однако панелька оптимизирует запросы и, поскольку изменить требуется только один регистр, посылает запрос 0х06. К сожалению, МУ110 обрабатывать такие не умеет. Есть ли какой-либо способ уговорить панель использовать запрос 0х10? Ну, кроме работы с портом напрямую.

Проблема два:
Трудно выделить ключевые моменты, поэтому описываю целиком ситуацию.
Та же СП270 и МУ110. За обмен информацией отвечает скрипт. Его задача - при наличии разрешения (PSB) отправить регистры (PSW) по заданному адресу. Разрешение сделано с прицелом на расширение, поэтому бит разрешения сразу в скрипте устанавливается сразу и не снимается.
Теперь ситуация. Сразу после запуска панели она устанавливает нужное состояние выходов модуля. Как только действия оператора приводят к тому, что состояние выходов должно измениться, панель выполняет это (выходы переходят в нужное состояние) и тут же виснет (появляется микросхемка), перезагружается и всё по новой.
Причём:
1) Комментирование строчки скрипта, отвечающей за установку бита (SetPSB(...); ), делает прошивку стабильной.
2) Перенос строчки в другое место и усиленная проверка на ошибки ничего не меняет.
3) При закомментированной строчке скрипта тот же самый бит, установленный любым другим способом (вручную кнопкой управления битом или функциональной областью), не приводит к зависанию панели.
К сожалению, в "поле" у меня не было особой возможности и желания проводить эксперименты. Панельку работать заставил, однако неплохо бы знать причину такого поведения. Сталкивался ли кто-нибудь с подобным?

SokolovS
22.10.2014, 16:36
Спасибо, но хотелось бы решить это на скриптах

petera
24.10.2014, 17:54
Спасибо, но хотелось бы решить это на скриптах
Вариант №1
14935
Создаем команду 0х10 прямо в функции

//В примере адрес устройства равен 1
//Данные с маской выхoдов МУ в регистре PSW300
//*************************************************
BYTE snd[11]={0x01,0x10,0x00,0x32,0x00,0x01,0x02};//буфер для посылки команды slave
//[0]-адрес устройства(0x01)
//[1]-Код функции ModbusRTU 0x10 -запись нескольких регистров
//[2]-ст.байт адреса начального регистра(0x00)
//[3]-мл.байт адреса начального регистра(0x32)
//[4]-ст.байт количества регистров(0x00)
//[5]-мл.байт количества регистров(0x01)
//[6]-количество байтов(0x02)
//[7]-ст.байт значения в регистре(Определим ниже)
//[8]-мл.байт значения в регистре(Определим ниже)
//[9]-ст.байт CRC(Определим ниже)
//[10]-мл.байт CRC(Определим ниже)

BYTE rcv[8];//буфер для приема ответа от slave
//[0]-адрес устройства
//[1]-Код функции ModbusRTU-запись нескольких регистров 0x10
//[2]-ст.байт адреса начального регистра(0x00)
//[3]-мл.байт адреса начального регистра(0x32)
//[4]-ст.байт количества регистров(0x00)
//[5]-мл.байт количества регистров(0x01)
//[6]-ст.байт CRC
//[7]-мл.байт CRC

snd[7]=HIBYTE(PSW[300]);
snd[8]=LOBYTE(PSW[300]);
snd[9]=HIBYTE(Crc(snd,9));//дополнить команду CRC, сначала Hi
snd[10]=LOBYTE(Crc(snd,9));//затем Lo
//Crc() -внутренняя функция, ее писать не надо

Enter(PLC);//Захватить порт PLC
Send(PLC,snd,11);//Отправить команду
Receive(PLC,rcv,8,1000,6);//Получить ответ (тайм-аут 1000мс)
Leave(PLC);//Освободить порт
Вариант №2
14936
Создаем глобальную функцию для записи маски выходов в МУ110 с любым адресом

BYTE MY_16WRITE(BYTE Adres, WORD Mask)
{
BYTE rcv[8];//буфер для приема ответа от slave
//[0]-адрес устройства
//[1]-Код функции ModbusRTU-запись нескольких регистров 0x10
//[2]-ст.байт адреса начального регистра(0x00)
//[3]-мл.байт адреса начального регистра(0x32)
//[4]-ст.байт количества регистров(0x00)
//[5]-мл.байт количества регистров(0x01)
//[6]-ст.байт CRC
//[7]-мл.байт CRC
BYTE snd[11]={0x01,0x10,0x00,0x32,0x00,0x01,0x02};//буфер для посылки команды slave
//[0]-адрес устройства
//[1]-Код функции ModbusRTU 0x10 -запись нескольких регистров
//[2]-ст.байт адреса начального регистра
//[3]-мл.байт адреса начального регистра
//[4]-ст.байт количества регистров
//[5]-мл.байт количества регистров
//[6]-количество байтов
//[7]-ст.байт значения в регистре
//[8]-мл.байт значения в регистре
//[9]-ст.байт CRC
//[10]-мл.байт CRC
snd[0]=Adres;
snd[7]=HIBYTE(Mask);//Данные с маской выхoдов МУ110 сначала Hi
snd[8]=LOBYTE(Mask);затем Lo
snd[9]=HIBYTE(Crc(snd,9));//дополнить команду CRC, сначала Hi
snd[10]=LOBYTE(Crc(snd,9));//затем Lo
//Crc() -внутренняя функция, ее писать не надо

Enter(PLC);//Захватить порт PLC
Send(PLC,snd,11);//Отправить команду
Receive(PLC,rcv,8,1000,6);//Получить ответ (тайм-аут 1000мс)
Leave(PLC);//Освободить порт
//Надо бы сделать проверку ошибок
//обмена, хотя бы CRC ответа сравнить
return TRUE;//Пока так
}
Теперь эту свою функцию можем использовать в любых местах любых скриптов наравне с стандартными функциями Write() или Writes()
Например

//Используется глобальная функцияMY_16WRITE(BYTE Adres, WORD Mask)
//где
//Adres -Адрес устройства
//Mask -маска выходов
MY_16WRITE(1,PSW[300]);//Запись в МУ110 с адресом 1, маска в PSW300
MY_16WRITE(16,PSW[301]);//Запись в МУ110 с адресом 16, маска в PSW301
MY_16WRITE(32,PSW[302]);//Запись в МУ110 с адресом 32, маска в PSW302

UPD. Обновил вложения и картинки (были ошибки)

SokolovS
27.10.2014, 07:58
То есть единственный вариант победить это - работа с портом напрямую
Спасибо большое
Ничего не поделаешь, буду пробовать реализовать

petera
27.10.2014, 10:12
После создания своих функций в секции "Глобальная функция", а в этой секции глобальных функций может быть несколько, обращение к ним из скриптов ничем не отличается от обращения к встроенным функциям.
Для MY_16WRITE(BYTE Adres, WORD Mask)
Аргументы Adres и Mask могут быть константами, регистрами панели или результатом вычислений в текущем скрипте.

petera
27.10.2014, 16:21
Что очень круто наваяли.:)
Изначально ведь нужно было записать всего один регистр командой 0х10. И в этом, частном случае нужно формировать посылку всего из 11 байт. Зачем своя функция для записи больше чем один регистр? По тому, что если регистров больше чем один, то и Writes() будет использовать команду 0х10.
А уж групповая посылка 124 регистров за раз это наверно через чур много.
А в этом фрагменте

switch (objType) {
case MODBUS_RTU_REGS_3X:
bSend[1] = 0x0f;
case MODBUS_RTU_REGS_4X:
bSend[1] = 0x10;
default:
return Writes(comID, staID, objType, add1, regs, pRegs); //don't know what to do
}
Для ссылки 3х команда 0x0f не применима
http://www.owen.ru/forum/attachment.php?attachmentid=12621&d=1397777586

SokolovS
27.10.2014, 16:36
Проще слепить свою универсальную функцию и не мучиться потом
Забавно, что панель записать позволяет в 3х регистры... Убрал досадную оплошность, спасибо.

petera
27.10.2014, 16:55
В панели вроде работает, только не могу проверить обработку ошибок. Использую симулятор слейва PeakHMI http://www.hmisys.com/

petera
27.10.2014, 17:02
Проще слепить свою универсальную функцию и не мучиться потом
Забавно, что панель записать позволяет в 3х регистры... Убрал досадную оплошность, спасибо.
Для универсальности не хватает запись в системные регистры PSW70..73 для порта PLC или PSW60..63 для порта Download результатов обмена.

SokolovS
28.10.2014, 14:23
Сейчас доведём до идеала :)
Чтобы не ошибиться, в первом регистре успешные попытки связи, во втором все безуспешные, в третьем все таймауты, в четвёртом все ошибки данных, причём второй равен сумме третьего и четвёртого, всё верно?

petera
28.10.2014, 14:32
Сейчас доведём до идеала :)
Чтобы не ошибиться, в первом регистре успешные попытки связи, во втором все безуспешные, в третьем все таймауты, в четвёртом все ошибки данных, причём второй равен сумме третьего и четвёртого, всё верно?
Верно, только как ошибки данных проверять будем?
ЗЫ. В смысле, каким образом их воспроизвести?

SokolovS
28.10.2014, 14:43
Увеличить таймаут до десяти секунд, подключить вместо нормального устройства просто терминал и любой ответ заслать

petera
28.10.2014, 14:55
Увеличить таймаут до десяти секунд, подключить вместо нормального устройства просто терминал и любой ответ заслать
Любой ответ нельзя.
14968

ЗЫ. Во вложении описание протокола

petera
28.10.2014, 15:09
Популярно о Модбас https://sites.google.com/site/fieldbusbook/seti/modbus/modbuseducation
14971

SokolovS
28.10.2014, 15:15
Насколько я понимаю, соответствие RS-485 будет обеспечено терминалом при передаче (если порт правильно настроен), а соответствие стандарту Modbus и правильность ответа проверяет уже скрипт.
Вот новая функция, проверить по-прежнему нет возможности
const BYTES_PER_REG = 2;
const N_RETRIES = 3;
const RETRY_TIMEOUT = 1000; //ms
BOOL MWrites(int comID, int staID, int objType, int add1, int regs, void* pRegs) {
BYTE bSend[256], bRecieve[256], i;
WORD bBytesToSend = 0, bBytesRecieved = 65535;
BYTE nRetry = N_RETRIES; //Количество попыток повтора
BYTE offset_PSW_log;
int CrcSum;

switch (comID) {
case DOWNLOAD:
offset_PSW_log = 60;
break;
case PLC:
offset_PSW_log = 70;
break;
default:
return Writes(comID, staID, objType, add1, regs, pRegs); //don't know what to do
}

bSend[0] = staID;
switch (objType) {
case MODBUS_RTU_REGS_4X:
bSend[1] = 0x10;
break;
default:
return Writes(comID, staID, objType, add1, regs, pRegs); //don't know what to do
}
bSend[2] = HIBYTE(add1);
bSend[3] = LOBYTE(add1);
bSend[4] = HIBYTE(regs);
bSend[5] = LOBYTE(regs);
bSend[6] = regs * BYTES_PER_REG;
bBytesToSend = 7;

for (i=0; i<regs*2; i++) {
bSend[bBytesToSend] = ((BYTE*)pRegs)[i];
bBytesToSend++;
}

CrcSum = Crc(bSend, bBytesToSend);
bSend[bBytesToSend] = LOBYTE(CrcSum);
bSend[bBytesToSend + 1] = HIBYTE(CrcSum);
bBytesToSend += 2;

if (bBytesToSend > 256)
return FALSE;

Enter(comID);//Захватить порт PLC
do {
if (bBytesRecieved != 65535) { //Была ошибка связи
PSW[offset_PSW_log+1]++;
if (bBytesRecieved != 0) // Ошибка данных
PSW[offset_PSW_log+3]++;
//else //Таймаут
// PSW[offset_PSW_log+2]++;
}

Send(comID, bSend, bBytesToSend);//Отправить команду
bBytesRecieved = Receive(comID, bRecieve, 256, RETRY_TIMEOUT, 6);//Получить ответ (тайм-аут 1000мс)
} while ((bBytesRecieved == 0 || //Если данные получены
bRecieve[0] != staID || //От правильного устройства
bRecieve[1] != bSend[1] || //Правильной функцией
MAKEWORD(bRecieve[3], bRecieve[2]) != add1 || // По правильному адресу
MAKEWORD(bRecieve[5], bRecieve[4]) != regs || // Правильное количество регистров
Crc(bRecieve, bBytesRecieved) != 0 //Контрольная сумма в порядке
) && (nRetry--)>0); //... то всё ок, иначе отнимаем попытку и, если они остались, пытаемся ещё
Leave(comID);//Освободить порт

if (nRetry>0) { //Если попытки остались, значит, последняя попытка связи была успешной
PSW[offset_PSW_log]++;
return TRUE;
} else
return FALSE;
}

petera
28.10.2014, 15:40
Скрипт не проверяет ситуацию ошибок второго типа, например если мастер пытается записать регистр в слейв по несуществующему адресу регистра, то в ответ будет послан пакет из 5 байт, а не из 8.
//[0]-адрес устройства
//[1]-Код функции ModbusRTU с индикацией ошибки-запись нескольких регистров 0x90
//[2]-код ошибки (0x02)
//[3]-ст.байт CRC
//[4]-мл.байт CRC
см пост#620

ЗЫ. Стандартые процедуры обмена при ошибках записывают в регистре PSW61(PSW71) число не успешных попыток обмена без учета повторных попыток, а в PSW62(PSW72) и PSW64(PSW73) с учетом повторных попыток, т.е. если число повторов задано 3, то при тайм-ауте PSW61(PSW71)=N, а PSW62(PSW72)=3хN, где N-число команд записи

SokolovS
28.10.2014, 15:59
А теперь? :)

bRecieve[1] != bSend[1] || //Правильной функцией
По задумке эта строка проверяет чего там вернуло устройство, и в случае возвращённой ошибки там будет не 0х10, а 0х90. Скрипт ещё несколько раз помучает устройство и отстанет, записав всё в ошибки. По задумке.

petera
28.10.2014, 16:09
Если нам не важна причина ошибок, тот же неверный адрес регистра, для дальнейшего принятия решений, то тогда можно ограничится и просто констатацией ошибки.

SokolovS
28.10.2014, 16:21
Я не вижу других вариантов
Штатные функции не поддерживают такого и смысла расширять возможности нет

petera
28.10.2014, 16:44
Самое интересное, что похоже без наших усилий в регистры PSW62(PSW72) панель и так сама пишет даже для команд Send() и Receive()
Регистры PSW63(PSW73) проверяю.

ЗЫ PSW60(PSW70) (Успешные попытки) автоматически не обновляются

petera
28.10.2014, 16:54
В общем тайм-аут Receive() вызывает автоматическое увеличение PSW62(PSW72) на 1
PSW60(PSW71), PSW61(PSW71), PSW63(PSW73) автоматически не увеличиваются.

SokolovS
03.11.2014, 11:39
Правда? Хм... Ну убрал тогда таймауты

Makc
18.11.2014, 07:38
Помогите с проблемой: создаю проект (панель мастер, частотник слэцв) в проекте создаю две кнопки управления (пуск и стоп чп), в настройках этими кнопками указываю Регистр: 0х, адрес регистра пуска 0 для стоп 1. загружаю проект в панель, перезагружаю ее, все работает: нажимаю на пуск на частотнике загорается кнопка пуск - частотник стартует, нажимаю стоп - на частотник приходит команда стоп, частотник останавливается. все ок. на этом этапе нет проблем.
в проекте создаю "цифровой дисплей" регистр 4х (инпутЪ), адрес 1 (должен отображать частоту на выходе частотника), также добавляю цифровой ввод регистр 3х (холдинг) (типо задание Hz).
гружу в панель. перезагружаю ее и тут возникают проблемы, вылазиет окно в котором сообщается: потеря связи с плк.
ожидание в настройках панели выставил 250мс. когда были только кнопки проблем небыло со связью.

petera
18.11.2014, 09:47
в проекте создаю "цифровой дисплей" регистр 4х (инпутЪ), адрес 1 (должен отображать частоту на выходе частотника), также добавляю цифровой ввод регистр 3х (холдинг) (типо задание Hz).
гружу в панель. перезагружаю ее и тут возникают проблемы, вылазиет окно в котором сообщается: потеря связи с плк.
ожидание в настройках панели выставил 250мс. когда были только кнопки проблем небыло со связью.
Ссылка 3х это Input register, а не Holding.
3х только чтение, по этому и не работает. Замените на 4х
http://www.owen.ru/forum/attachment.php?attachmentid=12621&d=1397777586
ЗЫ. Если частота находится действительно в регистре Input, то и для дисплея нужно ссылку поменять на 3х.

Makc
18.11.2014, 12:15
Ссылка 3х это Input register, а не Holding.
3х только чтение, по этому и не работает. Замените на 4х
http://www.owen.ru/forum/attachment.php?attachmentid=12621&d=1397777586
ЗЫ. Если частота находится действительно в регистре Input, то и для дисплея нужно ссылку поменять на 3х.
с этим получилось, просто читал в инструкции:
4х – запрос к ПЛК будет производиться по функции 0х04
29 (Read Input Registers);
ƒ 3х – запрос к ПЛК будет производиться по функции 0х03
(Read Holding Registers);
ƒ 0х – запрос к ПЛК будет производиться по функции 0х01
(Read Coil Status);
ƒ 1х – запрос к ПЛК будет производиться по функции 0х02
(Read Input Status).
поэтому и подумал что 4х это input.

Получилось записывать задание в частотник. но почему-то все равно появляется окошко ""потеря связи..." порт PLC адрес№ 1".
длина кабеля всего 20метров, никаких огромных наводок здесь быть не может, помещение отдельностоящее от цеха. может кто сталкивался с пробелмой? У частотника и панели одинаковые параметры обмена: 9600, 8БИТЬ, стоп бит1, контроль четности отсутствует.

petera
18.11.2014, 13:37
с этим получилось, просто читал в инструкции:
4х – запрос к ПЛК будет производиться по функции 0х04
29 (Read Input Registers);
ƒ 3х – запрос к ПЛК будет производиться по функции 0х03
(Read Holding Registers);
ƒ 0х – запрос к ПЛК будет производиться по функции 0х01
(Read Coil Status);
ƒ 1х – запрос к ПЛК будет производиться по функции 0х02
(Read Input Status).
поэтому и подумал что 4х это input.

Получилось записывать задание в частотник. но почему-то все равно появляется окошко ""потеря связи..." порт PLC адрес№ 1".
длина кабеля всего 20метров, никаких огромных наводок здесь быть не может, помещение отдельностоящее от цеха. может кто сталкивался с пробелмой? У частотника и панели одинаковые параметры обмена: 9600, 8БИТЬ, стоп бит1, контроль четности отсутствует.
Я же Вам табличку показал!
Не путайте, ссылки 3х и 4х для чтения используют команды 04 и 03 соответственно !!!
15266

ЗЫ. Никаких наводок у Вас нет. Неправильная адресация. Может у частотника и нет никаких регистров 3х.
Попробуйте оставить только ц.дисплей и поиграйтесь с 3х/4х для него.

Makc
18.11.2014, 19:30
Я же Вам табличку показал!
Не путайте, ссылки 3х и 4х для чтения используют команды 04 и 03 соответственно !!!
15266

ЗЫ. Никаких наводок у Вас нет. Неправильная адресация. Может у частотника и нет никаких регистров 3х.
Попробуйте оставить только ц.дисплей и поиграйтесь с 3х/4х для него.


OPC сервером получалось читать инпуты и писать в холдинг.
завтра отдельно попробую прочитать инпуты, спасибо за помощь, завтра отпишусь :)

Makc
19.11.2014, 05:14
если на дисплее СП270 оставляю только кнопки управления coil + цифровой ввод (ссылка 4х) то все работает, окна потери связи не появляется.
если на дисплее оставляю те же кнопки управления coil + цифровой дисплей (ссылка 3х) то опять начинает вываливатсья окно потери связи.

Если опрашиваю частотник OPC сервером все работает, и опрос инпут регистров и запись в холдинг.

непонятно где искать проблему.

petera
19.11.2014, 07:42
если на дисплее СП270 оставляю только кнопки управления coil + цифровой ввод (ссылка 4х) то все работает, окна потери связи не появляется.
если на дисплее оставляю те же кнопки управления coil + цифровой дисплей (ссылка 3х) то опять начинает вываливатсья окно потери связи.

Если опрашиваю частотник OPC сервером все работает, и опрос инпут регистров и запись в холдинг.

непонятно где искать проблему.
Какие номера регистров для дисплея и цифрового ввода?
Где посмотреть карту регистров для Вашего частотника?
Что будет если на экране оставить только дисплей со ссылкой 3х?
Что будет, если и для дисплея сделать ссылку 4х?

ЗЫ. желательно ответить на все вопросы

Makc
19.11.2014, 08:00
Где посмотреть карту регистров для Вашего частотника?
www.erman.ru/dl.php?did=35 <<< pdf руководство по эксплуатации на стр51 команды ModBus.
стр 61 карта регистров состояний (только чтение) т.е. инпут
стр 63 карта регистров управлений (чтение/запись) т.е. холдинг


Что будет, если и для дисплея сделать ссылку 4х?
Если для дисплея сделать ссылку 4х, то он опрашивает холдинг, т.е. регистры управления частотником.

Yegor
19.11.2014, 09:46
СП270 глупая в плане опроса по модбасу. Если активны сразу несколько элементов, ссылающиеся на 3x и 4x, то она начинает заикаться, скорее всего, из-за одновременной отправки запросов. Решение, к которому я пришёл — планировать опрос вручную с помощью функциональных областей с функциями копирования из 3x/4x в PSW большими блоками.

petera
19.11.2014, 10:29
СП270 глупая в плане опроса по модбасу. Если активны сразу несколько элементов, ссылающиеся на 3x и 4x, то она начинает заикаться, скорее всего, из-за одновременной отправки запросов. Решение, к которому я пришёл — планировать опрос вручную с помощью функциональных областей с функциями копирования из 3x/4x в PSW большими блоками.
В данном случае на экране всего два элемента один читает регистр 3х(дисплей), второй читает регистр 4х(ц.ввод).
Ни какой одновременной отправки запросов быть не может для Modbus по определению.
Пример
15299
Результат
15300
Теперь запросы/ответы с привязкой ко времени
15301

www.erman.ru/dl.php?did=35 (http://www.erman.ru/dl.php?did=35) <<< pdf руководство по эксплуатации на стр51 команды ModBus.
стр 61 карта регистров состояний (только чтение) т.е. инпут
стр 63 карта регистров управлений (чтение/запись) т.е. холдинг
Если для дисплея сделать ссылку 4х, то он опрашивает холдинг, т.е. регистры управления частотником.
А какие настройки у дисплея - на вкладке "Управление" какой тип данных и на вкладке "Вид" какой формат?

Makc
19.11.2014, 11:26
А какие настройки у дисплея - на вкладке "Управление" какой тип данных и на вкладке "Вид" какой формат?


15303 15304
так же пробовал ставить Dec во вкладке "ВИД">формат.
цифровой ввод работает именно с Dec
Тип данных WORD - т.к. 1 регистр нам нужен.

petera
19.11.2014, 13:12
Ну не знаю, что еще предложить панель честно шлет команду 04 для чтения регистров 3х:(. Судя по Вашим картинкам на дисплее должно отображаться выпрямленное напряжение
15307
Осталось только попробовать увеличить коммуникационный интервал
15308

Boris_K
19.11.2014, 13:28
Если нужно прочитать какой-то регистр в ПЛК, и вывести в цифровом дисплее, то в его настройках доступны команды как 4х, так и 3х. Или аналогично, бит можно читать как командой 1х, так и 0х. Вроде бы всегда нормально работает. Но что предпочтительнее использовать, ссылки на только чтение или на чтение/запись?

petera
19.11.2014, 13:50
Если нужно прочитать какой-то регистр в ПЛК, и вывести в цифровом дисплее, то в его настройках доступны команды как 4х, так и 3х. Или аналогично, бит можно читать как командой 1х, так и 0х. Вроде бы всегда нормально работает. Но что предпочтительнее использовать, ссылки на только чтение или на чтение/запись?
Для ПЛК ОВЕН нет никакой разницы, области памяти регистров 3х и 4х у них совпадают. Аналогично и биты 0х и 1х.

Makc
19.11.2014, 17:14
Ну не знаю, что еще предложить панель честно шлет команду 04 для чтения регистров 3х:(. Судя по Вашим картинкам на дисплее должно отображаться выпрямленное напряжение
15307
Осталось только попробовать увеличить коммуникационный интервал
15308
к сожелению интервал уже пробовал увеличивать (до 500мс, думаю выше уже нет смысла)

Makc
19.11.2014, 17:15
а как можно увидеть запрос панели? если вообще можно...

Yegor
19.11.2014, 17:36
Подцепить её к компу, а на компе организовать слейв собственного изготовления, которым вы сможете увидеть и записать всё, что захотите.

petera
20.11.2014, 10:39
а как можно увидеть запрос панели? если вообще можно...
См. в моем посте #638.
Использовал PeakHMI MODBUS Serial RTU Slave simulator http://www.peakhmi.com/Downloads/PeakHMI%20Slave%20Simulators.htm и Free Serial Port Monitor http://www.serial-port-monitor.com/index.html
Можно ограничится только Slave simulator
1. Запустить MODBUS Serial RTU Slave. Настройки коммуникации д.б. аналогичными настройкам в панели. После изменения настроек возможно придется перезапустить программу, чтобы настройки вступили в действие.
2. Подключить панель к ПК используя порт PLC. Кабель тот же, что и для программирования. И включить ее
15338
Можно видеть и протокол коммуникации и содержимое регистров. Содержимое регистров можно менять.
Если использовать и монитор порта, то его надо запускать первым. Важно выбрать в параметрах схему отображения "Default"
Затем п.1 и 2.
15339

Makc
25.11.2014, 07:25
Разобрался я почему панель не понимает ответа частотника. потому что частотник в ответе шлет какието 4е байта после контрольной суммы (которых не должно быть) 15414
Вот и думаю как сейчас выйти из ситуации....
А вот по холддинг регистрам от частотника такого мусора в ответе нет.

petera
06.12.2014, 22:00
Разобрался я почему панель не понимает ответа частотника. потому что частотник в ответе шлет какието 4е байта после контрольной суммы (которых не должно быть) 15414
Вот и думаю как сейчас выйти из ситуации....
А вот по холддинг регистрам от частотника такого мусора в ответе нет.
Как вариант решения http://www.owen.ru/forum/showthread.php?t=19771&p=154633&viewfull=1#post154633
Требует проверки с реальным частотником.

Сергей Геннадьевич
14.01.2015, 17:10
СП270 не работает по 485, хотя по 232 все отлично. распиновка как в руководстве (4,7)...в чем может быть проблема???

Роман_33
16.01.2015, 11:55
Здравствуйте коллеги. Ввиду "импортозамещения" пришлось "на лету" осваивать ОВЕН (ПЛК 110 и СП270). Оборудование вижу в первый раз, а времени не так уж много. С чем то разобрался, с чем то еще нет. Скажите, могу ли я привязать изменение цвета объекта (конкретно насоса выбранного на панели инструментов) к переменной INT, допустим насос остановлен-0-серый цвет, насос работает-1-зеленый цвет, авария насоса-2-красный цвет и т.д. Пытался делать, но получается только какая то анимация а не смена цвета.

Роман_33
16.01.2015, 14:54
Спасибо! Анимация не нужна. Нужно именно выделение цветом. Можно чуть подробнее вот об этом "А если использовать условные обозначения насоса, например, треугольник в круге или другое плоское изображение, то можно без проблем сделать, да же с миганием при аварии. "

Роман_33
19.01.2015, 11:37
Спасибо! А как создать такую группу? И еще вопрос по экранам и окнам. Если я создаю например второй экран, то его элементы видно на первом экране, так и должно быть? Если я создаю окно, то оно почему то открывается где то в углу, наполовину ,а то и больше скрыто, как его позиционировать? Прошу простить за дурацкие вопросы, все таки семь лет работы с Сименсом дают некую зашоренность.

Роман_33
19.01.2015, 14:08
Спасибо! С окнами и экранами разобрался!

maximov2009
20.01.2015, 12:07
Добрый день. Подскажите пожалуйста можно ли на СП 270 сделать выход из спящего режима (хранитель экрана) по внешней комманде. Желательно бы с переходом на соответствующий экран. Через функциональное поле переход получается, а вот вывести из спячки нет.
С уважением.

petera
20.01.2015, 13:31
Добрый день. Подскажите пожалуйста можно ли на СП 270 сделать выход из спящего режима (хранитель экрана) по внешней комманде. Желательно бы с переходом на соответствующий экран. Через функциональное поле переход получается, а вот вывести из спячки нет.
С уважением.
http://www.owen.ru/forum/attachment.php?attachmentid=11962&d=1392751544Вроде уже объяснял, но где не помню.
Не все так страшно, как кажется. Используйте "Яркость экрана" со свойствами "Глобальный".
16277
Из спячки экран выходит от заданного бита управления.
Только учтите, что пока этот бит в "1", то подсветка не выключится никогда, т.е нужен импульс на пробуждение, хотя может когда-то нужна и блокировка выключения подсветки

Адрей
20.01.2015, 16:09
Петр пора открывать онлайн уроки раз в месяц собираемся на канале ютюб в групу и обсуждаем накопившие вопросы.

maximov2009
21.01.2015, 06:37
Добрый день. Спасибо, всё получилось. Только не получилось 0х780, а получилось 4х780. Дело наверное в том, что использую не контроллер а ПР 110.
С уважением.

DENth
30.01.2015, 16:36
Приветствую! Помогите разобраться. Создал пять кнопок PSB с 400 по 404. Вывел цифровой дисплей для отображения PSB400. Вопрос в том, почему нажатие на кнопки 401-404 приводит к изменению значения на дисплее. 401 - значение 2, 402 - 4, 403 - 8 и т.д. Как-будто я использую не PSB, а PSW. Но я уже перепроверил десять раз. Везде стоит PSB, тип правда Word, но там еще можно выбрать только DWord.

petera
30.01.2015, 16:48
Приветствую! Помогите разобраться. Создал пять кнопок PSB с 400 по 404. Вывел цифровой дисплей для отображения PSB400. Вопрос в том, почему нажатие на кнопки 401-404 приводит к изменению значения на дисплее. 401 - значение 2, 402 - 4, 403 - 8 и т.д. Как-будто я использую не PSB, а PSW. Но я уже перепроверил десять раз. Везде стоит PSB, тип правда Word, но там еще можно выбрать только DWord.
Потому, что регистры PSB могут быть представлены группами по 8 бит, как один регистр (Byte, Word, DWord) и эти группы могут использоваться в операциях копирования и даже в арифметических операциях.
Адрес первого регистра в группе должен быть кратным 8.
http://www.owen.ru/forum/showthread.php?t=15352&p=113602&highlight=%E3%F0%F3%EF%EF%EE%E2%FB%E5#post113602

http://www.owen.ru/forum/showthread.php?t=14132&p=113560&viewfull=1#post113560

http://www.owen.ru/forum/showthread.php?t=14132&p=113593&viewfull=1#post113593

Таким образом Ваш дисплей отображает регистр PSB[400..407] для Word или PSB[400..415] для DWord как одно число:rolleyes:

DENth
30.01.2015, 16:56
Спасибо за подсказку! Правда от этого не легче. Придется подтянуть матчасть по Вашим ссылкам и переосмыслить то, что я уже нагородил в своих поделках.

petera
30.01.2015, 17:02
Спасибо за подсказку! Правда от этого не легче. Придется подтянуть матчасть по Вашим ссылкам и переосмыслить то, что я уже нагородил в своих поделках.
А, что Вы хотели увидеть на дисплее с регистром PSB400? И зачем был нужен такой дисплей?

ЗЫ. Вот Вам дисплей на один бит
16477

16478>>>><<<<16480

Боднар Олег Миколайович
01.02.2015, 18:00
Добрый день.
Был создан проект который заливался в панель для проверки, потом этот же проект нужно было залить в другую панель, процесс загрузки проходит как положено, но на екране в место рисунка белое поле, создали новый простейший проект и залили, все нормально отображается. Почему существующий проект не отображается?

DENth
02.02.2015, 09:44
А, что Вы хотели увидеть на дисплее с регистром PSB400? И зачем был нужен такой дисплей?

Да собственно сам дисплей я использовал для отладки. А отлаживал такую вещь: над кнопкой расположил вариационный текст. Если PSB400 = 0, то на кнопке надпись Вкл., 1 - на кнопке Выкл. Но так как создал еще кнопок с последующими адресами - PSB401,402... То увидел, что вариационный текст зависим уже и от них, а не только от PSB400. Отсюда и вопрос. Вот сижу думаю =)

Kip_i_a
06.02.2015, 08:07
Всем доброго времени суток! Решил освоить для себя новое. Приобрел панель сп270 и плк 160! Задумал вывести измерения с датчика давления в панель сп270 на цифровом дисплее 16607,написал нужную программу в codesys,16606 загрузил ее 16609 в плк160! Теперь мне нужно вывести эти показания 17.77 (аналоговый выход с плк 160) на панель.Вот мой проект полностью 16608 красным прямоугольником показан ЦИФРОВОЙ ДИСПЛЕЙ на который должен выводиться параметр 17.77 с датчика давления! Руководство было прочитано от корки до корки много раз, затруднение вызвало только "Настройка параметров проекта" и как вывести измерения с плк160 на панель сп270! Спасибо за помощь, буду признателен)

petera
06.02.2015, 10:36
Всем доброго времени суток! Решил освоить для себя новое. Приобрел панель сп270 и плк 160! Задумал вывести измерения с датчика давления в панель сп270 на цифровом дисплее 16607,написал нужную программу в codesys,16606 загрузил ее 16609 в плк160! Теперь мне нужно вывести эти показания 17.77 (аналоговый выход с плк 160) на панель.Вот мой проект полностью 16608 красным прямоугольником показан ЦИФРОВОЙ ДИСПЛЕЙ на который должен выводиться параметр 17.77 с датчика давления! Руководство было прочитано от корки до корки много раз, затруднение вызвало только "Настройка параметров проекта" и как вывести измерения с плк160 на панель сп270! Спасибо за помощь, буду признателен)
http://www.owen.ru/forum/attachment.php?attachmentid=11962&d=1392751544 Зачем выводить аналоговый выход ПЛК если "Задумал вывести измерения с датчика давления в панель сп270 на цифровом дисплее". Надо выводить аналоговый вход, а не выход!
В ПЛК
-добавить в Slave модуль Float, присвоит переменной в нем имя, например, Davlenie_HMI
-в программе присвоить Davlenie_HMI:=Davlenie
-определить какой адрес регистра Modbus будет у Davlenie_HMI.
В панели
-в настройках порта PLC задать скорость, формат, четность такими же как у порта ПЛК были заданы в кодесис
-включить галку "Поменять Word"
-для дисплея на на закладке "Управление" в поле "Регистр" [4x] [Адрес, который был определен в ПЛК для Davlenie_HMI], тип данных DWord
-на закладке "Вид" задать "Формат"-Float, Длина -всего 5, дробная 2.

Посмотрите здесь http://www.owen.ru/forum/showthread.php?t=4044&p=137739&viewfull=1#post137739

Kip_i_a
09.02.2015, 08:48
Спасибо!Попробую.

Kip_i_a
09.02.2015, 09:24
Сделал все так как вы написали, но теперь на панели мигает окно с надписью "Потеря связи":rolleyes:

Василий Кашуба
09.02.2015, 10:07
Сделал все так как вы написали, но теперь на панели мигает окно с надписью "Потеря связи":rolleyes:
Проверьте ещё раз адресацию регистров, или выкладывайте свой проект.

petera
09.02.2015, 10:27
Сделал все так как вы написали, но теперь на панели мигает окно с надписью "Потеря связи":rolleyes:


Проверьте ещё раз адресацию регистров, или выкладывайте свой проект.
Считайте адрес регистра Float с учетом выравнивания
http://www.owen.ru/forum/attachment.php?attachmentid=12345&d=1395648726
А то небось вставили модуль Float сразу за единственным 8 bits и думаете, что адрес у Float будет равен "1".
Хоть бы показали конфигурацию Slave полностью.

Kip_i_a
09.02.2015, 10:50
16641 16642 16643 16644 16646 16645 16647 16648 16649 16650 вот, еще я думаю проблемы с заливкой программы в плк 160

petera
09.02.2015, 12:14
Вы бы архив с этим простым примером прикрепили бы, быстро бы нашлось, может Вы повключали лишних опций в настройках панели
Не понятно, зачем Вам LIN_TRAFO, если только не планируется, например, в дальнейшем использовать датчики с разным диапазоном, то такая функция уже есть в самом входе ПЛК. Используйте Min FV и Max FV для задания диапазона измерения в физических величинах
16653

Kip_i_a
10.02.2015, 03:45
16662 вот мой проект

Kip_i_a
10.02.2015, 03:47
Только не ругайтесь:rolleyes: если там неразбериха будет

petera
10.02.2015, 10:06
16662 вот мой проект


Только не ругайтесь:rolleyes: если там неразбериха будет
На счет неразберих не понял:confused:
Оба проекта правильные, все должно работать, если только:
-не перепутали места подключения кабеля. ПЛК д.б. RS232 (не Debug), панель д.б. PLC (не Download);
-не исправный кабель ПЛК-панель.
Последнее вполне вероятно из-за конструкции кабеля, часто отваливаются проводки от ножек разъема DB9(со стороны панели). Если нечем прозвонить кабель, то можно взять вместо кабеля КС-2 кабель КС-1 (тот, что идет в комплекте с ПЛК для программирования). Кабелем КС-1 панель можно подключать к порту RS232 (не Debug) и сэкономить на специальном кабеле КС-2(кабель панель-ПЛК).

Kip_i_a
10.02.2015, 10:32
Попытка была, я на счет замены кабеля кс-1 на кс-2 ,безрезультатно, НО...перезагрузив панель и плк 160 все получилось,спасибо большое за помощь!

petera
10.02.2015, 11:03
Попытка была, я на счет замены кабеля кс-1 на кс-2 ,безрезультатно, НО...перезагрузив панель и плк 160 все получилось,спасибо большое за помощь!
Вот только зачем Вы, в присланном проекте, для дисплея задали число знаков всего 5, а дробная -4. Диапазон датчика 0-10.0 и теперь дисплей вместо значения, например, 15.34 будет показывать значение в экспоненциальной форме 1.5340 +01(1.5340 е+01), это значение будет "вылазить" за границы рамки дисплея.

Kip_i_a
11.02.2015, 04:39
Сейчас исправлю,спасибо за подсказку

denisdmitrich
18.02.2015, 12:40
подскажите, пожалуйста! имеется панель сп 270 и трм 201, к которому подключен температурный датчик. Делаю пробную конфигурацию, чтобы выводить данные с ТРМа на панель. сделал два способа индикации в панели: цифровой дисплей и линейка от 0 до 100 градусов. ТРМ показывает 25,5 градусов. Что делать, если панель показывает вместо 25,5 градусов 255? С цифровым индикатором в панели все понятно. А что делать с линейкой? вот настройка линейки 16776,16777 , вот настройки связи 16778.

SokolovS
18.02.2015, 13:42
Максимум данных попробуйте задать в 10 раз больше. Столько, сколько фактически будет в регистре
1000, то есть

Mal
03.03.2015, 15:00
Был тут такой вопрос - и ответ на него:

Доброе время суток.
Пытаюсь загрузить проект в СП270 (2012 года выпуска), кабель соединил согласно инструкции (рисунок В.2.), операционка Win7, преобразователь MOXA Uport 1150I. Панель переходит в режим программирования - пишет Loading... а программа-конфигуратор через некоторое время выдаёт Time out и просит проверить кабель. На этом процесс заканчивается.... Что и где я делаю не так ?
Тут "изучая" форумы МОХА наткнулся на версию программы driv_win_uport1p_v1.6.7_build_10082011 и о чудо именно этот билд и заработал, без проблем и без запинок....
И у меня та же проблема, только преобразователь MOXA Uport 1150, без "i". Конфигуратор загружает драйвер, через раз, иногда доходит до загрузки проекта и выдает Time out, check the cable. Может, кто-то может посоветовать, как это исправить? Заранее спасибо!

petera
03.03.2015, 15:27
Был тут такой вопрос - и ответ на него:

И у меня та же проблема, только преобразователь MOXA Uport 1150, без "i". Конфигуратор загружает драйвер, через раз, иногда доходит до загрузки проекта и выдает Time out, check the cable. Может, кто-то может посоветовать, как это исправить? Заранее спасибо!
Скорей всего отвалились пайки в разъемах кабеля для программирования панели и контакт между проводом и ножкой разъема только за счет кембрика. Пошевелили кабель -контакт есть, еще раз пошевелили -его уже нет, по этому через раз программируется.
Это стандартная ситуация. Нужно разобрать разъемы и подергать проводки пинцетом, отвалившиеся припаять.

Mal
03.03.2015, 15:50
Скорей всего отвалились пайки в разъемах кабеля для программирования панели и контакт между проводом и ножкой разъема только за счет кембрика. Пошевелили кабель -контакт есть, еще раз пошевелили -его уже нет, по этому через раз программируется.
Это стандартная ситуация. Нужно разобрать разъемы и подергать проводки пинцетом, отвалившиеся припаять.
Спасибо, проверю кабель ещё раз, хотя я и делал это ещё когда конфигуратор сказал мне сделать это)
Не может ли быть ещё какого-то решения?

Kip_i_a
04.03.2015, 03:37
Всем привет! Возможно ли сделать проект, при нажатии кнопки "Пуск" начинается отсчет времени в обратную сторону ...начиная с 60 сек. до 0. При достижении "0" кнопка "Стоп" меняет надпись на "Пуск" т.е. должна перейти в исходное положение! (кнопка "Пуск/Стоп" не фиксирована)

maximov2009
04.03.2015, 07:29
И у меня та же проблема, только преобразователь MOXA Uport 1150, !
Добрый день. Аналогичная проблема с тем же преобразователем. В другие устройства всё заливается без пробдем, значит проводки все на месте а с СП270 не захотел работать никак. Проблема была ещё год назад, решить не смог. Купил простой юсб ту ком за 500 руб, залетает без проблем.

petera
04.03.2015, 12:04
Всем привет! Возможно ли сделать проект, при нажатии кнопки "Пуск" начинается отсчет времени в обратную сторону ...начиная с 60 сек. до 0. При достижении "0" кнопка "Стоп" меняет надпись на "Пуск" т.е. должна перейти в исходное положение! (кнопка "Пуск/Стоп" не фиксирована)
Совершенно не понятные исходные данные
1. Что делает кнопка, каким битом она управляет, какое ее действие включить, выключить, реверс или мгновенно включить?
2. Что значит кнопка не фиксирована?
3. Наверно Вы хотели сказать, что при нажатии кнопки надпись "Пуск" меняется на "Стоп" и через 60 сек надпись на кнопке становится "Пуск"?
4. А если до истечения 60 с опять нажать на кнопку, что должно произойти?

Mal
04.03.2015, 14:36
Добрый день. Аналогичная проблема с тем же преобразователем. В другие устройства всё заливается без пробдем, значит проводки все на месте а с СП270 не захотел работать никак. Проблема была ещё год назад, решить не смог. Купил простой юсб ту ком за 500 руб, залетает без проблем.

Спасибо! лучшее - враг хорошего)

petera
04.03.2015, 14:58
Всем привет! Возможно ли сделать проект, при нажатии кнопки "Пуск" начинается отсчет времени в обратную сторону ...начиная с 60 сек. до 0. При достижении "0" кнопка "Стоп" меняет надпись на "Пуск" т.е. должна перейти в исходное положение! (кнопка "Пуск/Стоп" не фиксирована)

Совершенно не понятные исходные данные
1. Что делает кнопка, каким битом она управляет, какое ее действие включить, выключить, реверс или мгновенно включить?
2. Что значит кнопка не фиксирована?
3. Наверно Вы хотели сказать, что при нажатии кнопки надпись "Пуск" меняется на "Стоп" и через 60 сек надпись на кнопке становится "Пуск"?
4. А если до истечения 60 с опять нажать на кнопку, что должно произойти?
А в ответ тишина...
Ну тогда буду делать предположения.
1. Пусть кнопка "Пуск/Стоп" управляет битом PSB300
2. Пусть состояние PSB300=1 соответствует состоянию ПУСК, а состояние PSB300=0 соответствует состоянию СТОП
3а. Вариант действия кнопки "Включить".
после нажатия устанавливается бит PSB300, надпись на кнопке меняется на СТОП, через заданный интервал времени бит PSB300 автоматически сбрасывается, надпись на кнопке меняется на ПУСК.
3б. Вариант действия кнопки "Реверс".
после нажатия устанавливается бит PSB300, надпись на кнопке меняется на СТОП, через заданный интервал времени или после повторного нажатия кнопки, бит PSB300 автоматически сбрасывается, надпись на кнопке меняется на ПУСК.
16962

На вспомогательные "украшательства" внимания не обращаем. Нужны только три ф.области. Счетчик времени находится в регистре PSW256

http://youtu.be/meYW5YMiwLs


ЗЫ. В примере интервал 15с, можно больше, просто кино будет длинным.

UPD. Очень похожий вопрос http://www.owen.ru/forum/showthread.php?t=16832&p=132725&viewfull=1#post132725

Так и что там с моим ранее заданным вопросом, может СП270 открыть окно без элементов управления, отсчитать определенное время и закрыться?
И вариант ответа http://www.owen.ru/forum/showthread.php?t=16832&p=132738&viewfull=1#post132738
http://www.owen.ru/forum/attachment.php?attachmentid=12142&d=1393872639

Kip_i_a
05.03.2015, 04:49
Извините, не мог ответить!
Вот проект 16968
Спасибо что все подробно объяснили! Буду пробовать

Kip_i_a
05.03.2015, 05:01
Сделаю по вашему образцу:)

petera
05.03.2015, 06:51
Сделаю по вашему образцу:)
В моем примере из поста 693, последняя ф.область "Счетчик =0" нестандартная, http://www.owen.ru/forum/showthread.php?t=14132&p=163913&viewfull=1#post163913
Она нужна только для обнуления индикатора оставшегося времени если кнопка с реверсом бита, и в принципе эта ф.область не нужна

Владимир Дубоделов
06.03.2015, 23:29
Уважаемый, Petera!
В примере (окно 693) на панели имеются комментарии- как это делается ?
Заранее спасибо
В. Д.

Владимир Дубоделов
08.03.2015, 19:19
Petera, спасибо за подробный ответ. Теперь все понятно.

Mal
09.03.2015, 10:12
немного стыдно признаваться, но вот ответ на мои мучения с MOXA Uport 1150 - цитата из FAQ-ов панели СП270:

Вопрос:

При загрузке проекта в панель на экране появляется соответствующая пиктограмма, но строка загрузки не бежит. Через некоторое время конфигуратор выдает ошибку Time-Out. Подключение произвожу через преобразователь Usb-Com специально купленным кабелем КС4 «без переходника». Что я не так делаю?



Ответ:

Если версия конфигуратора соответствует (см.выше), причина в системе защиты MS Windows.

Для работы через преобразователь Usb-Com, необходимо отключить Брандмауэр Windows или другой установленный на данном компьютере файрвол.

Отключение Брандмауэр: Пуск/Настройка/Панель управления/Брандмауэр Windows.
Надеюсь, кому-то поможет, мне вот помогло)

SokolovS
12.03.2015, 10:49
Насколько я понимаю, соответствие RS-485 будет обеспечено терминалом при передаче (если порт правильно настроен), а соответствие стандарту Modbus и правильность ответа проверяет уже скрипт.
Вот новая функция, проверить по-прежнему нет возможности
const BYTES_PER_REG = 2;
const N_RETRIES = 3;
const RETRY_TIMEOUT = 1000; //ms
BOOL MWrites(int comID, int staID, int objType, int add1, int regs, void* pRegs) {
BYTE bSend[256], bRecieve[256], i;
WORD bBytesToSend = 0, bBytesRecieved = 65535;
BYTE nRetry = N_RETRIES; //Количество попыток повтора
BYTE offset_PSW_log;
int CrcSum;

switch (comID) {
case DOWNLOAD:
offset_PSW_log = 60;
break;
case PLC:
offset_PSW_log = 70;
break;
default:
return Writes(comID, staID, objType, add1, regs, pRegs); //don't know what to do
}

bSend[0] = staID;
switch (objType) {
case MODBUS_RTU_REGS_4X:
bSend[1] = 0x10;
break;
default:
return Writes(comID, staID, objType, add1, regs, pRegs); //don't know what to do
}
bSend[2] = HIBYTE(add1);
bSend[3] = LOBYTE(add1);
bSend[4] = HIBYTE(regs);
bSend[5] = LOBYTE(regs);
bSend[6] = regs * BYTES_PER_REG;
bBytesToSend = 7;

for (i=0; i<regs*2; i++) {
bSend[bBytesToSend] = ((BYTE*)pRegs)[i];
bBytesToSend++;
}

CrcSum = Crc(bSend, bBytesToSend);
bSend[bBytesToSend] = LOBYTE(CrcSum);
bSend[bBytesToSend + 1] = HIBYTE(CrcSum);
bBytesToSend += 2;

if (bBytesToSend > 256)
return FALSE;

Enter(comID);//Захватить порт PLC
do {
if (bBytesRecieved != 65535) { //Была ошибка связи
PSW[offset_PSW_log+1]++;
if (bBytesRecieved != 0) // Ошибка данных
PSW[offset_PSW_log+3]++;
//else //Таймаут
// PSW[offset_PSW_log+2]++;
}

Send(comID, bSend, bBytesToSend);//Отправить команду
bBytesRecieved = Receive(comID, bRecieve, 256, RETRY_TIMEOUT, 6);//Получить ответ (тайм-аут 1000мс)
} while ((bBytesRecieved == 0 || //Если данные получены
bRecieve[0] != staID || //От правильного устройства
bRecieve[1] != bSend[1] || //Правильной функцией
MAKEWORD(bRecieve[3], bRecieve[2]) != add1 || // По правильному адресу
MAKEWORD(bRecieve[5], bRecieve[4]) != regs || // Правильное количество регистров
Crc(bRecieve, bBytesRecieved) != 0 //Контрольная сумма в порядке
) && (nRetry--)>0); //... то всё ок, иначе отнимаем попытку и, если они остались, пытаемся ещё
Leave(comID);//Освободить порт

if (nRetry>0) { //Если попытки остались, значит, последняя попытка связи была успешной
PSW[offset_PSW_log]++;
return TRUE;
} else
return FALSE;
}Добрался потестить. Отправляет запрос с неправильным порядком байт
Исправил, вот эта штука работоспособна (полный цикл тестирования не проводился):
const BYTES_PER_REG = 2;
const N_RETRIES = 3;
const RETRY_TIMEOUT = 1000; //ms
BOOL MWrites(int comID, int staID, int objType, int add1, int regs, void* pRegs) {
BYTE bSend[256], bRecieve[256], i;
WORD bBytesToSend = 0, bBytesRecieved = 65535;
BYTE nRetry = N_RETRIES; //Количество попыток повтора
BYTE offset_PSW_log;
int CrcSum;

switch (comID) {
case DOWNLOAD:
offset_PSW_log = 60;
break;
case PLC:
offset_PSW_log = 70;
break;
default:
return Writes(comID, staID, objType, add1, regs, pRegs); //don't know what to do
}

bSend[0] = staID;
switch (objType) {
case MODBUS_RTU_REGS_4X:
bSend[1] = 0x10;
break;
default:
return Writes(comID, staID, objType, add1, regs, pRegs); //don't know what to do
}
bSend[2] = HIBYTE(add1);
bSend[3] = LOBYTE(add1);
bSend[4] = HIBYTE(regs);
bSend[5] = LOBYTE(regs);
bSend[6] = regs * BYTES_PER_REG;
bBytesToSend = 7;

for (i=0; i<regs; i++) {
bSend[bBytesToSend] = HIBYTE(((WORD*)pRegs)[i]);
bBytesToSend++;
bSend[bBytesToSend] = LOBYTE(((WORD*)pRegs)[i]);
bBytesToSend++;
}

CrcSum = Crc(bSend, bBytesToSend);
bSend[bBytesToSend] = HIBYTE(CrcSum);
bSend[bBytesToSend + 1] = LOBYTE(CrcSum);
bBytesToSend += 2;

if (bBytesToSend > 256)
return FALSE;

Enter(comID);//Захватить порт PLC
do {
if (bBytesRecieved != 65535) { //Была ошибка связи
PSW[offset_PSW_log+1]++;
if (bBytesRecieved != 0) // Ошибка данных
PSW[offset_PSW_log+2]++;
//else //Таймаут
// PSW[offset_PSW_log+3]++;
}

Send(comID, bSend, bBytesToSend);//Отправить команду
bBytesRecieved = Receive(comID, bRecieve, 256, RETRY_TIMEOUT, 6);//Получить ответ (тайм-аут 1000мс)
} while ((bBytesRecieved == 0 || //Если данные получены
bRecieve[0] != staID || //От правильного устройства
bRecieve[1] != bSend[1] || //Правильной функцией
MAKEWORD(bRecieve[3], bRecieve[2]) != add1 || // По правильному адресу
MAKEWORD(bRecieve[5], bRecieve[4]) != regs || // Правильное количество регистров
Crc(bRecieve, bBytesRecieved) != 0 //Контрольная сумма в порядке
) && (--nRetry)>0); //... то всё ок, иначе отнимаем попытку и, если они остались, пытаемся ещё
Leave(comID);//Освободить порт

if (nRetry>0) { //Если попытки остались, значит, последняя попытка связи была успешной
PSW[offset_PSW_log]++;
return TRUE;
} else
return FALSE;
}

susanin
12.03.2015, 14:16
Коллеги. Возник такой вопрос:

Необходимо проверить введенное значение в числовое поле по нажатии кнопки "ENT" на цифровой клавиатуре определенному условию.
К примеру: Есть несколько цифровых полей ввода, их сумма не должна превышать определенного значения. При превышении должно выдаваться предупреждение.

petera
12.03.2015, 14:40
Коллеги. Возник такой вопрос:

Необходимо проверить введенное значение в числовое поле по нажатии кнопки "ENT" на цифровой клавиатуре определенному условию.
К примеру: Есть несколько цифровых полей ввода, их сумма не должна превышать определенного значения. При превышении должно выдаваться предупреждение.
Легко, но чур не на Си, я в нем не силен.
Сколько переменных в сумме и где предел хранится будет или он константа? Предупреждение какое хотите, окно или лампа или звук?

ЗЫ. Могу сделать на основе этих наработок
http://www.owen.ru/forum/showthread.php?t=14406&p=146080&viewfull=1#post146080

http://www.owen.ru/forum/showthread.php?t=18059&p=146061&viewfull=1#post146061 и посты ниже в той же теме

susanin
12.03.2015, 14:48
Предел константа, храниться в энергонезависимой памяти, к примеру PFW[256]. Количество переменных в сумме 7 (7 полей ввода).

petera
12.03.2015, 16:43
Предел константа, храниться в энергонезависимой памяти, к примеру PFW[256]. Количество переменных в сумме 7 (7 полей ввода).
В общем пока столкнулся с проблемой.
Если вводить значения с нуля, то работает вот так

http://youtu.be/IuPnP8wJeYA

Но когда пытаюсь редактировать значения, то нельзя ввести значения меньше расчетного, даже меньше того, что было в поле ввода

http://youtu.be/Gu58Ds1zIW0
Только если редактируемое поле вначале обнулить, тогда можно вводить новые значения. Если так устраивает, то могу проект предъявить, если нет, тогда буду думать дальше

susanin
12.03.2015, 17:09
Интересное решение. ))
В принципе приемлемо. Только хотел несколько иного - попробую тоже что нибудь придумать.

Так как программирование под ОВЕН не основное занятие то все делается медленно ((

rovki
14.03.2015, 21:32
Как по нажатию одной кнопки упр. битом управлять 2 слейвами ?Переадресация ,вроде как может только читать (4х) ,а мне нужно писать бит в 2устройства????Спасибо
Может через функциональную кнопку сделать?

rovki
14.03.2015, 22:58
Спасибо ,а как время на панели установить нужное ,дату показывает верно ,а веся не то .

petera
14.03.2015, 23:07
Спасибо ,а как время на панели установить нужное ,дату показывает верно ,а веся не то .
Анатолий, дополнение к предыдущему вопросу.
Для реализации в ф.кнопке действия обычной кнопки "Мгновенно включить" нужно прописать функции для бит для двух событий ф.кнопки
1. Событие "Pressing" -возникает однократно в момент нажатия кнопки
17161
2. Событие "Releasing" -возникает однократно в момент отпускания кнопки
17162

Для коррекции времени и даты нужно вызывать экран 60002 обычной кнопкой "Переход на экран"

rovki
14.03.2015, 23:20
Анатолий, дополнение к предыдущему вопросу.
Для реализации в ф.кнопке действия обычной кнопки "Мгновенно включить" нужно прописать функции для бит для двух событий ф.кнопки
1. Событие "Pressing" -возникает однократно в момент нажатия кнопки
17161
2. Событие "Releasing" -возникает однократно в момент отпускания кнопки
17162

Для коррекции времени и даты нужно вызывать экран 60002 обычной кнопкой "Переход на экран"
Спасибо за оперативность

rovki
15.03.2015, 17:14
Не совсем понятно -функциональная кнопка ,функция копирования регистра .Почему в источнике и приемнике стоит 4х(3х) ,если читается содержимое из одного регистра 1 устройства и записывается в другой регистр второго устройства ????:confused:

petera
15.03.2015, 20:18
Не совсем понятно -функциональная кнопка ,функция копирования регистра .Почему в источнике и приемнике стоит 4х(3х) ,если читается содержимое из одного регистра 1 устройства и записывается в другой регистр второго устройства ????:confused:
Потому, что с по стандарту Modbus адрес регистра в первом устройстве 4х772(3х772), а адрес регистра во втором 4х516

rovki
15.03.2015, 20:27
НО значения одного перепишутся во второй ??путаница между адресами и кодами операциями у меня в голове :D

rovki
15.03.2015, 20:53
Спасибо ,понял .успокоили :o

SokolovS
23.03.2015, 13:44
Спасибо
Буду смотреть

cerceli
25.03.2015, 16:27
Помогите пожалуйста, Панель СП270(мастер)9600,четность отсутствует,2 стоп бита, формат данных 8 бит. ПЧ слейв, тоже самое.Взаимодействуют хорошо, идет чтение, запись до включения модуляции, после ловит потерю связи.Что может быть причиной?

rovki
25.03.2015, 23:54
Помехи(наводки) ,не согласованность кабеля ....

GooDz
19.05.2015, 10:23
Добрый день. Подскажите мне пожалуйста как реализовать мне такую схему.
Есть плк150, мдвв и панель СП207. Считывание данных по TCP IP с контроллера. Сделал простой пример, на панели создал кнопку с фиксацией и при нажатии ее срабатывал выход №1 на МДВВ. Все работает отлично. Данные на SCADA считываются. Но я хочу что б и со SCADA мог также нажать кнопку и срабатывал выход №1 МДВВ, и при этом менялась состояние кнопки и на панели. Не могу вот это сделать. подскажите как? Делал пример на s7-1200 и сименовской панели, там все работает меняю значение тега в scade и на панели меняется, а если меняю на панели то и в scada меняется.

Василий Кашуба
19.05.2015, 11:47
Добрый день. Подскажите мне пожалуйста как реализовать мне такую схему.
Есть плк150, мдвв и панель СП207. Считывание данных по TCP IP с контроллера. Сделал простой пример, на панели создал кнопку с фиксацией и при нажатии ее срабатывал выход №1 на МДВВ. Все работает отлично. Данные на SCADA считываются. Но я хочу что б и со SCADA мог также нажать кнопку и срабатывал выход №1 МДВВ, и при этом менялась состояние кнопки и на панели. Не могу вот это сделать. подскажите как? Делал пример на s7-1200 и сименовской панели, там все работает меняю значение тега в scade и на панели меняется, а если меняю на панели то и в scada меняется.
Уточните СП207 или СП270, а также СП207 или СПК207?

GooDz
20.05.2015, 11:01
Уточните СП207 или СП270, а также СП207 или СПК207?

Панель СП270, извините с планшета писал, не заметил ошибку

petera
20.05.2015, 11:35
Добрый день. Подскажите мне пожалуйста как реализовать мне такую схему.
Есть плк150, мдвв и панель СП207. Считывание данных по TCP IP с контроллера. Сделал простой пример, на панели создал кнопку с фиксацией и при нажатии ее срабатывал выход №1 на МДВВ. Все работает отлично. Данные на SCADA считываются. Но я хочу что б и со SCADA мог также нажать кнопку и срабатывал выход №1 МДВВ, и при этом менялась состояние кнопки и на панели. Не могу вот это сделать. подскажите как? Делал пример на s7-1200 и сименовской панели, там все работает меняю значение тега в scade и на панели меняется, а если меняю на панели то и в scada меняется.


Панель СП270, извините с планшета писал, не заметил ошибку
Самый простой способ. http://www.owen.ru/forum/showthread.php?t=14199&p=146969&viewfull=1#post146969
SCADA и панель должны быть мастерами, а ПЛК слейвом.
Создать в конфигурации ПЛК один слейв, но с несколькими портами один TCP для скады и второй RS232 для панели.
18254
Для этого варианта все переменные в слейве будут доступны и скаде и панели.
Если нужно делать не все перемененные общими для скады и панели, а только часть из них, то вариант №2 по той же ссылке.
В этом случае нужно вставить Modbus Slave в другой Modbus Slave
18255
Для этого варианта только переменные встроенного Modbus Slave общими для обоих мест.

Аналогичное решение здесь http://www.owen.ru/forum/showthread.php?t=20762&p=165101&viewfull=1#post165101

GooDz
20.05.2015, 11:57
Спасибо, получилось, теперь все понятно!

Makc
20.05.2015, 17:15
Подскажите, может кто сталкивался с такой проблемой, ответа не нашел.
:
1). Необходимо записывать в Coil частотника с 270 панели число (от 0 до 4000 HEXом). не могу понять как записывать регистр из памяти 270 панели PSB, в Coil частотника (необходимо записывать функцией Force Multiple Coils 0F), пока получилось только функцией Force Single Coil 05, но это не дело так как для записи двух байт панель отправляеть для каждого бита отдельное сообщение частотника ( ну и при этом происходит что частота изменяется несколько раз на частотнике так не одним сообщением запись происходит).
2). Хотим с помощью цифрового ввода записывать в частотник задание от 0 до 100% (но при этом чтобы сама панель отправляла число HEXом(частотник понимает HEX задание от 0 до 4000). не нашел возможности перевести десятичное задание в 16ти ричное
Помогите, зарание спасибо )

petera
20.05.2015, 21:48
Подскажите, может кто сталкивался с такой проблемой, ответа не нашел.
:
1). Необходимо записывать в Coil частотника с 270 панели число (от 0 до 4000 HEXом). не могу понять как записывать регистр из памяти 270 панели PSB, в Coil частотника (необходимо записывать функцией Force Multiple Coils 0F), пока получилось только функцией Force Single Coil 05, но это не дело так как для записи двух байт панель отправляеть для каждого бита отдельное сообщение частотника ( ну и при этом происходит что частота изменяется несколько раз на частотнике так не одним сообщением запись происходит).
2). Хотим с помощью цифрового ввода записывать в частотник задание от 0 до 100% (но при этом чтобы сама панель отправляла число HEXом(частотник понимает HEX задание от 0 до 4000). не нашел возможности перевести десятичное задание в 16ти ричное
Помогите, зарание спасибо )
1. Действительно запись регистров 0х(по Вашему Coil) выполняются командой 05 http://www.owen.ru/forum/showthread.php?t=14132&p=139313&viewfull=1#post139313
Единственный выход -написать свой скрипт на Си по аналогии с этим http://www.owen.ru/forum/showthread.php?t=8604&p=149572&viewfull=1#post149572

2. Это у Вас какое-то завихрение в головах случилось:rolleyes:. Что значит "при этом чтобы сама панель отправляла число HEXом(частотник понимает HEX задание от 0 до 4000"
Это в руководстве на частотник значения в регистрах приведены в Hex. А так все данные передаются потоком ноликов и единиц, т.е. в двоичном формате. Все эти Hex или Oct придуманы только для человека, а компьютеры и другие цифровые устройства и даже Ваш частотник оперируют двоичными данными. Вот только человеку не свойственно считать в двоичной системе счисления, ведь у него не два пальца на руках, а десять:rolleyes:. Вот и придумали яйцеголовые как упростить восприятие и запись этих ноликов и единиц в более или менее приемлемой для человека форме. И появились Восьмеричная система счисления (https://ru.wikipedia.org/wiki/%D0%92%D0%BE%D1%81%D1%8C%D0%BC%D0%B5%D1%80%D0%B8%D 1%87%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0 %B5%D0%BC%D0%B0_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0% B5%D0%BD%D0%B8%D1%8F) и Шестнадцатеричная система счисления (https://ru.wikipedia.org/wiki/%D0%A8%D0%B5%D1%81%D1%82%D0%BD%D0%B0%D0%B4%D1%86%D 0%B0%D1%82%D0%B5%D1%80%D0%B8%D1%87%D0%BD%D0%B0%D1% 8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1% 81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F )
А по сути число-то одно и тоже, как его не представляй, хоть bin, хоть Hex, хоть Oct.
Вот например представление числа в регистре PSW256 в различных системах счисления

https://www.youtube.com/watch?v=0FK3TzrSNMk
Меняйте(вводите) хоть в двоичном, хоть в десятичном, хоть в шестнадцатеричном формате, а суть числа одна и та же.
По этому если ввести число 16384 в цифровой ввод с форматом Dec или Unsigned, то и получится, что в частотник пойдет число 4000 в Hex.
Это Вам не переводом чисел нужно заниматься, а масштабированием оных значений, что бы вводить числа в диапазоне от 0 до 100, а посылались значения в диапазоне от 0 до 16384.
Но это уже другой разговор.

Makc
21.05.2015, 10:19
1. Действительно запись регистров 0х(по Вашему Coil) выполняются командой 05 http://www.owen.ru/forum/showthread.php?t=14132&p=139313&viewfull=1#post139313
Единственный выход -написать свой скрипт на Си по аналогии с этим http://www.owen.ru/forum/showthread.php?t=8604&p=149572&viewfull=1#post149572

2. Это у Вас какое-то завихрение в головах случилось:rolleyes:. Что значит "при этом чтобы сама панель отправляла число HEXом(частотник понимает HEX задание от 0 до 4000"
Это в руководстве на частотник значения в регистрах приведены в Hex. А так все данные передаются потоком ноликов и единиц, т.е. в двоичном формате. Все эти Hex или Oct придуманы только для человека, а компьютеры и другие цифровые устройства и даже Ваш частотник оперируют двоичными данными. Вот только человеку не свойственно считать в двоичной системе счисления, ведь у него не два пальца на руках, а десять:rolleyes:. Вот и придумали яйцеголовые как упростить восприятие и запись этих ноликов и единиц в более или менее приемлемой для человека форме. И появились Восьмеричная система счисления (https://ru.wikipedia.org/wiki/%D0%92%D0%BE%D1%81%D1%8C%D0%BC%D0%B5%D1%80%D0%B8%D 1%87%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0 %B5%D0%BC%D0%B0_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0% B5%D0%BD%D0%B8%D1%8F) и Шестнадцатеричная система счисления (https://ru.wikipedia.org/wiki/%D0%A8%D0%B5%D1%81%D1%82%D0%BD%D0%B0%D0%B4%D1%86%D 0%B0%D1%82%D0%B5%D1%80%D0%B8%D1%87%D0%BD%D0%B0%D1% 8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1% 81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F )
А по сути число-то одно и тоже, как его не представляй, хоть bin, хоть Hex, хоть Oct.
Вот например представление числа в регистре PSW256 в различных системах счисления

https://www.youtube.com/watch?v=0FK3TzrSNMk
Меняйте(вводите) хоть в двоичном, хоть в десятичном, хоть в шестнадцатеричном формате, а суть числа одна и та же.
По этому если ввести число 16384 в цифровой ввод с форматом Dec или Unsigned, то и получится, что в частотник пойдет число 4000 в Hex.
Это Вам не переводом чисел нужно заниматься, а масштабированием оных значений, что бы вводить числа в диапазоне от 0 до 100, а посылались значения в диапазоне от 0 до 16384.
Но это уже другой разговор.

Да Вы правы, что 4000 (HEX), что 16384 (DEC) побитно записываются одинакого, а какие есть возможности масштабирования у панельки? т.е. нужно чтобы человек вводил от 0 до 100 а в регистр памяти это уже записывалось отмасштабированным в 0-16384 к примеру.

petera
22.05.2015, 00:15
в память PFW как написано в инструкции лушче ничего не писать
http://www.owen.ru/forum/attachment.php?attachmentid=11962&d=1392751544 Вот это да. И где это написано?
Память PFW -энергонезависимая и в нее можно писать. И даже нужно тогда, когда необходимо сохранять данные даже после выключения питания, например различные настройки, например если в примере с вводом частоты частотника вместо PSW256 использовать PFW256, то заданное значение частоты останется в поле ввода даже после отключения питания панели.

один адрес PSW занимает 1 регистр
Не всегда один, может и два регистра занимать, например для значений Float(c плавающей точкой) нужно два регистра (Dword).
Например для вычислений в примере из #754 фактически задействованы два регистра PSW500 и PSW501
18301
здесь тип данных для PSW500 - DWord потому, что используются вычисления с плавающей точкой
18302
и в следующей функции тоже
18303


как можно во вкладке "объект" блока "если" добавить в столб "имя модуля" другие модули?
Для этого нужно прочитать тему о том, как делать графические макросы http://www.owen.ru/forum/showthread.php?t=14406

susanin
08.06.2015, 11:21
В том то и дело что по F7 ошибок нет!! Пишет все отлично!

petera
08.06.2015, 11:33
В том то и дело что по F7 ошибок нет!! Пишет все отлично!
Проект с функциями покажите.

susanin
08.06.2015, 11:36
Как то так..

petera
08.06.2015, 11:55
Как то так..
Выбросить из глобальной функции
"int iMaxRecipe = 10;"
18495
И поместить эту строку в каждую функцию
18496 18497

susanin
08.06.2015, 12:01
Понял. Спасибо!

А почему глобальную переменную нельзя объявить в глобальной функции?

ASo
08.06.2015, 12:10
Потому, что она будет локальной в рамках этой функции.

petera
08.06.2015, 12:12
Понял. Спасибо!

А почему глобальную переменную нельзя объявить в глобальной функции?
Тогда так
18498
или так
18499

АлександрШ
12.06.2015, 06:18
ПЛК150 + СП270. Нет связи. Посмотрите, что не так?

petera
12.06.2015, 10:11
ПЛК150 + СП270. Нет связи. Посмотрите, что не так?
18555
По этому здесь нужно задать скорость 115200. Соответственно и в панели для порта PLC
18556

Попутный вопрос. А зачем Вы для порта Download задали режим работы Master?
18557

Правильным будет "Порт загрузки не используется.

АлександрШ
12.06.2015, 20:16
18555
По этому здесь нужно задать скорость 115200. Соответственно и в панели для порта PLC
18556

Попутный вопрос. А зачем Вы для порта Download задали режим работы Master?
18557

Правильным будет "Порт загрузки не используется.

Спасибо. Проверю только в понедельник, на работе.
Если не использовать порт Download, как загружать панель?

petera
13.06.2015, 13:53
Спасибо. Проверю только в понедельник, на работе.
Если не использовать порт Download, как загружать панель?
Как обычно, эта настройка не влияет на заливку проекта. Просто порт Download, помимо основного назначения, может использоваться наравне с портом PLC, т.е. для подключения оборудования (ПЛК, модули В/В, SCADA) вот в этом случае и нужна эта настройка для порта Download.

АлександрШ
13.06.2015, 20:17
Как обычно, эта настройка не влияет на заливку проекта. Просто порт Download, помимо основного назначения, может использоваться наравне с портом PLC, т.е. для подключения оборудования (ПЛК, модули В/В, SCADA) вот в этом случае и нужна эта настройка для порта Download.

Спасибо. Коротко, доходчиво. Теперь дожить до понедельника. Ещё раз спасибо.

Makc
23.06.2015, 18:59
Есть необходимость при переключении бита (кнопка управления битом), чтобы вываливалось подтверждение(что то вроде Вы действительно хотите запустить преобразователь частоты? Да/Нет). есть решение стандартное? или как можно реализовать?

petera
24.06.2015, 06:14
Есть необходимость при переключении бита (кнопка управления битом), чтобы вываливалось подтверждение(что то вроде Вы действительно хотите запустить преобразователь частоты? Да/Нет). есть решение стандартное? или как можно реализовать?
Ну и сделайте так, как описываете.
Для "вываливающегося сообщения" используйте окно, на котором расположены кнопки "Да" и "Нет".
1. Самый простой способ для вызова окна использовать одноименную кнопку
18709

18710
Только в данном случае есть один недостаток -при запущенном ПЧ кнопка "Пуск" все равно будет вызывать окно подтверждения.

https://www.youtube.com/watch?v=hEsSy3dlrLQ

2. Усовершенствованный способ. Вместо кнопки вызова окна использовать функциональную кнопку
18711
Фишка в том, что используются две функции открыть и закрыть одно и тоже окно, только для функции закрытия окна используется бит подтверждения, в качестве которого используется бит "Пуск" в частотнике.

https://www.youtube.com/watch?v=8uJzrPcK3Ak

egik
26.06.2015, 21:55
Здравствуйте !Не подскажите пожалуйста, столкнулся с такой проблемой в модбас слейф в конфигурации ПЛК160 при указании обмена данных с панелью СП270 мастер, идет сначало 8 бит -кнопки две,потом 2 байт(6шт.) ввод времени,затрудняюсь с указанием номера регистра(кнопки 0х,ввод 4х - эт ясно)ну а далее номера и с зонами выравнивания чуток не понял,можете подсказать на данном примере!
вот как я прикинул 8 бит моей инфы, потом 8 бит пустых для выравнивания,потом 8 бит моей инфы(16-24), потом 2шт. 2 байтовых с моей инфой нумерация 25,26.
потом 8 бит для выравнивания и 4шт 2 байтовых с номером 35-38 - верно ли понял извените если глупый вопрос очень надо!)

Василий Кашуба
26.06.2015, 22:15
Здравствуйте !Не подскажите пожалуйста, столкнулся с такой проблемой в модбас слейф в конфигурации ПЛК160 при указании обмена данных с панелью СП270 мастер, идет сначало 8 бит -кнопки две,потом 2 байт(6шт.) ввод времени,затрудняюсь с указанием номера регистра(кнопки 0х,ввод 4х - эт ясно)ну а далее номера и с зонами выравнивания чуток не понял,можете подсказать на данном примере!
вот как я прикинул 8 бит моей инфы, потом 8 бит пустых для выравнивания,потом 8 бит моей инфы(16-24), потом 2шт. 2 байтовых с моей инфой нумерация 25,26.
потом 8 бит для выравнивания и 4шт 2 байтовых с номером 35-38 - верно ли понял извените если глупый вопрос очень надо!)
Посмотрите здесь.

egik
28.06.2015, 15:15
Здравствуйте!Не подскажите пожалуйста, столкнулся с такой проблемой в модбас слейф в конфигурации ПЛК160 при указании обмена данных с панелью СП270 мастер, идет сначало 8 бит -кнопки две,потом 2 байт(6шт.) ввод времени,затрудняюсь с указанием номера регистра(кнопки 0х,ввод 4х - эт ясно)ну а далее номера и с зонами выравнивания чуток не понял,можете подсказать на данном примере! вот как я прикинул 8 бит моей инфы, потом 8 бит пустых для выравнивания,потом 8 бит моей инфы(16-24), потом 2шт. 2 байтовых с моей инфой нумерация 25,26. потом 8 бит для выравнивания и 4шт 2 байтовых с номером 35-38 - верно ли понял извените если глупый вопрос очень надо!)

egik
28.06.2015, 15:17
Спасибо сейчас погляжу!)

rovki
01.07.2015, 15:15
использовал старую панель для проекта со старым конфигуратором-загрузка проекта через адаптер юсб\ком шла отлично.а новая панель с новым конфигуратором не хочет загружать проект-таймаут\проверьте кабель пишет...винда 8 стоит .в чем причина:confused:

Mal
08.07.2015, 16:02
Посоветуйте, пожалуйста, можно ли сделать элемент "цифровой ввод" невидимым или сделать так, чтобы после ввода задания число на этом элементе изменялось при изменении задания другим способом?

petera
08.07.2015, 19:56
Посоветуйте, пожалуйста, можно ли сделать элемент "цифровой ввод" невидимым или сделать так, чтобы после ввода задания число на этом элементе изменялось при изменении задания другим способом?
http://www.owen.ru/forum/attachment.php?attachmentid=11962&d=1392751544 Зачем невидимый ввод, я не понял. Куда тогда пальцем тыкать:rolleyes:
Но если очень хочется, то можно

https://www.youtube.com/watch?v=pxCXgwVYLzI

Делайте цвет текста = цвету экрана
18931 18932

petera
08.07.2015, 20:56
Продолжение...

...или сделать так, чтобы после ввода задания число на этом элементе изменялось при изменении задания другим способом?
А какие Вы видите препятствия для этого:confused:

https://www.youtube.com/watch?v=YcRz6eVgBiY

SokolovS
09.07.2015, 08:05
Возможно, имеется в виду, что задание хранится где-то в подчинённом контроллере и может изменяться не только с панели
Соответственно, на панели должно отображаться правильное значение во всех случаях

petera
09.07.2015, 10:33
Возможно, имеется в виду, что задание хранится где-то в подчинённом контроллере и может изменяться не только с панели
Соответственно, на панели должно отображаться правильное значение во всех случаях
Возможно, но тогда вопросы нужно было задавать более конкретные.
На случай если задание хранится где-то в подчинённом контроллере и может изменяться не только с панели и панели должно отображаться правильное значение во всех случаях есть простое решение, если ПЛК будет слейвом.
а) слейв в слейве
б) несколько разных портов для одного слейва.
http://www.owen.ru/forum/showthread.php?t=8604&p=171114&viewfull=1#post171114
выбор варианта зависит от уровня доступа к переменным в слейве из разных мест -или ко всем или только к некоторым из них.

Mal
10.07.2015, 09:59
Возможно, имеется в виду, что задание хранится где-то в подчинённом контроллере и может изменяться не только с панели
Соответственно, на панели должно отображаться правильное значение во всех случаях
именно так, спасибо. а если мастером является именно контроллер, а задание берётся с разных регистров одной панели?

SokolovS
10.07.2015, 10:22
По-моему проще всего будет так:
В панели отображение значения и запись значения в разные регистры (в свойствах ввода данных установлена галка "Чтение" и соответствующий регистр)
Контроллер постоянно или по изменению пишет в регистр чтения ввода данных панели текущее значение параметра
Контроллер постоянно считывает из панели значение в регистре для записи либо бит-признак записи в него и обновляет значение параметра если запись была. После обновления параметра контроллер обязательно должен сбросить значение для записи либо бит-признак

petera
10.07.2015, 10:31
именно так, спасибо. а если мастером является именно контроллер, а задание берётся с разных регистров одной панели?
Если панель одна, то незачем использовать разные регистры для ввода одной и той же уставки. Почему не использовать один и тот же регистр в разных местах(экранах) панели?

Mal
13.07.2015, 09:27
Спасибо большое за помощь!

Если панель одна, то незачем использовать разные регистры для ввода одной и той же уставки. Почему не использовать один и тот же регистр в разных местах(экранах) панели?
Вы правы.

wulf
24.07.2015, 10:01
Всем доброго дня. Помогите подружить СП270 и ПЛК110-30 через RS485. Через RS232 проблем нет. Проблема в расстоянии: от панели до ПЛК порядка 8 метров. На такие расстояния 232 ставить не рекомендуется. Решил соединить через 485. После этого начались проблемы. Выкладываю оба проекта. Заранее спасибо.

petera
24.07.2015, 10:36
Всем доброго дня. Помогите подружить СП270 и ПЛК110-30 через RS485. Через RS232 проблем нет. Проблема в расстоянии: от панели до ПЛК порядка 8 метров. На такие расстояния 232 ставить не рекомендуется. Решил соединить через 485. После этого начались проблемы. Выкладываю оба проекта. Заранее спасибо.
Проблемы в чем заключаются?
При беглом осмотре
-панель имеет адрес "1"
19085

- а мастер в ПЛК обращается к устройству с адресом "10"
19086

wulf
24.07.2015, 10:49
Спасибо за беглый осмотр. Это я уже исправил. Ситуация не поменялась. Попробовал подключиться через разъем Download с изменение настроек порта - та же ситуация.

petera
24.07.2015, 11:17
Спасибо за беглый осмотр. Это я уже исправил. Ситуация не поменялась. Попробовал подключиться через разъем Download с изменение настроек порта - та же ситуация.
Так и не услышал в чем же заключаются проблемы?
При подключении ПЛК через разъем Download нужно перевести работу порта в режим связи с ПЛК. Для этого обязательно наличие перемычки между 6 и 5 кон. в разъеме порта Download.
Может у Вас линии А и В перепутаны?
19087

wulf
24.07.2015, 11:22
Линии А и В не перепутаны. А проблема заключается в том, что при подключении этой связки через 485 связка не работает. Нет отклика в ПЛК на действия в панели, нет индикации счета в панели при счете в ПЛК. При переключении на 232 работает идеально. 485 подключение сделал как В.5 РЭ. И теперь не могу понять: или настройки неверные или физически с подключением напутал. Хотя физическое подключение перепроверяли посторонние люди. Там всё нормально. Остаётся только настройки соединения.

wulf
24.07.2015, 11:31
Линии А и В не перепутаны. Проблема в том, что при 485 соединении связка не работает. Счет в ПЛК не отображается в панели, переключения в панели не отображаются в ПЛК. Хотя при переходе на 232 связка работает идеально. Физически подключение в соответствии с В.5 РЭ. При этом распайку смотрели разные люди, проблем не нашли. Значит проблема неработоспособности в настройках. Хотя до сих пор не пойму где.

wulf
24.07.2015, 11:32
Извиняюсь, два раза написал одно и тоже.

wulf
24.07.2015, 14:02
Вопрос к разработчикам: ПЛК 110-30Р по документам имеет 2 разъема 485 (485-1 и 485-2). Расположены они: 485-1 - 2 и 3 контакт в нижнем ряду нижней планке и так же на верхней планке нижнего ряда. ПЛК 110-32 имеет 1 разъем 485, который расположен: 2 контакт в верхнем ряду нижней планки и третий контакт в нижнем ряду нижний планки. Написал я это для того, чтобы было видно: они отличаются по расположению клемм.
Собственно вопрос такой: ПЛК110-30Р, лежащий передо мной, имеет 1 разъем 485, по клеммам расположенный как на ПЛК 110-32. Так как же на него подключить 485 интерфейс? Если подключать как на 110-30, то схема такая: NC+B, второй 485 подключается A+ +U1. Если подключать как 110-32, то подключение такое: А+В. Получается, что имея ПЛК 110-30, RS485 я должен подключить как ПЛК110-32. Но при таком подключении связи нет.

Так что делать????

_Mikhail
24.07.2015, 14:10
Вопрос к разработчикам: ПЛК 110-30Р по документам имеет 2 разъема 485 (485-1 и 485-2). Расположены они: 485-1 - 2 и 3 контакт в нижнем ряду нижней планке и так же на верхней планке нижнего ряда. ПЛК 110-32 имеет 1 разъем 485, который расположен: 2 контакт в верхнем ряду нижней планки и третий контакт в нижнем ряду нижний планки. Написал я это для того, чтобы было видно: они отличаются по расположению клемм.
Собственно вопрос такой: ПЛК110-30Р, лежащий передо мной, имеет 1 разъем 485, по клеммам расположенный как на ПЛК 110-32. Так как же на него подключить 485 интерфейс? Если подключать как на 110-30, то схема такая: NC+B, второй 485 подключается A+ +U1. Если подключать как 110-32, то подключение такое: А+В. Получается, что имея ПЛК 110-30, RS485 я должен подключить как ПЛК110-32. Но при таком подключении связи нет.


Так что делать????
ПЛК 110-30 имеет 2 разъема 485. Я их уже несколько штук поставил и один на еще столе лежит, так что если у тебя 110-30 у него должно быть 2 интерфейса а не 1

wulf
24.07.2015, 14:23
Подключил 485 так, как написано в РЭ. По надписям на ПЛК RS485 подключается как NC и В. После чего связь начала работать.
Вопрос к представителям ОВЕН: у Вас есть ОТК или присутствует проверка после сборки или перед отправкой? Из-за Ваших косяков потерял 2 дня. Обидно, что качество Ваших приборов падает.

wulf
24.07.2015, 14:27
Я тоже ставлю второй ПЛК110-30. Первый был 110-60. И на всех 2 интерфейса 485. По всей видимости, на ПЛК наклеили другие обозначения от 110-32. Потому и потерял 2 дня, что подключал, руководствуясь надписями на ПЛК

Maxsvell
02.08.2015, 12:24
Доброго дня всем!!!Зашел в тупик!!!Не знаю куда двигаться!Подскажите пожалуйста(желательно на моих же примерах)! Имеется конфигурация станка СП270(slave) и плк 110-60М(master). Написал программу для ТПА Д-3134 на плк 110-60(master). Нужно привязать экран СП270 как (slave),но на сп270 чтобы было отображение входных и выходных сигналов от плк,а так же изменение временных задержек для плк,откуда он считывал бы данные. Все форумы по этой связки перечитал,делал как и советовали на примерах,но ни чего не получается(скорее всего из-за не знания куда чего прописывать)!!!!Проект прикладываю во вложении.Просьба ОГРОМНАЯ, подскажите пожалуйста на моих примерах(хотя бы на одном)что куда, и как прописывать.Программа дл плк уже написана и отлажена до мелочей.Заранее благодарен всем откликнувшимся!)))

petera
02.08.2015, 13:06
Доброго дня всем!!!Зашел в тупик!!!Не знаю куда двигаться!Подскажите пожалуйста(желательно на моих же примерах)! Имеется конфигурация станка СП270(slave) и плк 110-60М(master). Написал программу для ТПА Д-3134 на плк 110-60(master). Нужно привязать экран СП270 как (slave),но на сп270 чтобы было отображение входных и выходных сигналов от плк,а так же изменение временных задержек для плк,откуда он считывал бы данные. Все форумы по этой связки перечитал,делал как и советовали на примерах,но ни чего не получается(скорее всего из-за не знания куда чего прописывать)!!!!Проект прикладываю во вложении.Просьба ОГРОМНАЯ, подскажите пожалуйста на моих примерах(хотя бы на одном)что куда, и как прописывать.Программа дл плк уже написана и отлажена до мелочей.Заранее благодарен всем откликнувшимся!)))
1. Параметры настроек порта панели не соответствуют параметрам настройки порта ПЛК, ну или наоборот:).
Если взять за основу настройки порта ПЛК
19243
Здесь нужно заменить тип протокола с ASCII на RTU. Панель в режиме Slave не умеет работать с ASCII.
В настройках порта ПЛК указано, что контроля четности при передаче пакетов нет. Это нормально.
А вот в настройках панели контроль четности есть
19244
Нужно исправить, как указано на картинке.

Ну а дальше веселее
- каша в конфигурации Modbus masterа
- несоответствие битов управления лампами , тому что прописано в "каше" из конфигуратора

ЗЫ. Идеология программы в ПЛК - полный бред.
Вместо тог, чтобы использовать отдельные программы, Вы сделали ФБ.
19246
А вот здесь

Программа дл плк уже написана и отлажена до мелочей
Не верю:)
Как можно было ее отладить, если в программе не используются входы и выходы ПЛК?
19247
Вместо этого используются переменные из панели
19248
А Вы же говорите

Зашел в тупик!!!Не знаю куда двигаться!.... Нужно привязать экран СП270 как (slave),но на сп270 чтобы было отображение входных и выходных сигналов от плк,а так же изменение временных задержек для плк,откуда он считывал бы данные. Все форумы по этой связки перечитал,делал как и советовали на примерах,но ни чего не получается(скорее всего из-за не знания куда чего прописывать)!!!!
То есть и с панели нельзя управлять Вашей программой. Немудрено! Ведь на экранах нет ни одной кнопки, везде есть только лампы.
Это Вы с ламп пытаетесь получить сигнал на управление?
19249
Ведь именно для чтения состояния бит панели используются 8 bits input module. :)

Maxsvell
02.08.2015, 14:50
На самом деле входы и выходы плк я прописал вначале самой отладке программы.Ну а поосле, когда пытался соединить СП270 с плк, прописал вх и вых. на том что я и выложил. НУ а по поводду RTU и ASCII я переставлял уже на самом объекте,где не принесло ожидаемого результата,(т.е. ни каких реакций)."Ведь именно для чтения состояния бит панели используются 8 bits input module." а отсюда поподробнее... Или не???

Maxsvell
02.08.2015, 15:03
"ЗЫ. Идеология программы в ПЛК - полный бред.
Вместо тог, чтобы использовать отдельные программы, Вы сделали ФБ."
Вопрос встречный- как могут отдельные программы, осуществлять связь с главной программой????19250 без ФБ, как на форуме отписывались(ЗЫ.я все делал ка и советовали на форуме)

petera
02.08.2015, 16:00
Вопрос встречный- как могут отдельные программы, осуществлять связь с главной программой???? без ФБ, как на форуме отписывались(ЗЫ.я все делал ка и советовали на форуме)
А при чем здесь без ФБ. Основная программа может состоят из отдельных программных компонент (POU)
19251
А как известно к программным компонентам относятся функциональные блоки, функции и программы
19252
Почувствуйте разницу между ФБ и программой и когда нужно делать ФБ, а когда программу.
19253 19254
Программа существует в единственном экземпляре, а ФБ может быть несколько экземпляров.
ФБ следует использовать, когда в основной программе нужно использовать несколько одинаковых POU, например RS триггеров и пр. А в остальном программа и ФБ работают одинаково, одинаково и вызываются из основной программы.
Какой смысл в Ваше программе использовать модуль "Naladka_1" в виде ФБ, что будет две или 10 "Наладок"?
Нет, только одна. Так и используйте программу.
Вот Ваша "TPA_3134_500_OKOK2.pro" но в которой не ФБ, а программы.
19256
И работать будет точно так же.

ЗЫ. Но это "идеология" программирования, хотите применяйте, хотите нет. Все равно экраны панели работать не будут потому, что там совсем другие проблемы.

Maxsvell
02.08.2015, 16:43
"ЗЫ. Но это "идеология" программирования, хотите применяйте, хотите нет. Все равно экраны панели работать не будут потому, что там совсем другие проблемы."
Какие другие проблемы??? И почему не будут работать экраны панели???Ну а насчет PRG_Program - я понял!

Maxsvell
02.08.2015, 16:52
"Ведь именно для чтения состояния бит панели используются 8 bits input module"
А как тогда использовать бит ПЛК, чтобы отображались на панели???

petera
02.08.2015, 17:20
С точки зрения мастера ПЛК в панели есть биты и регистры.
Для того, чтобы прочитать состояние регистров или бит панели в мастере нужно использовать модули, в названии которых есть "input".
А для изменения состояния регистров и бит панели в мастере нужно использовать модули, в названии которых есть "output".
Вы же в программе используете оба вида модулей
19258
Если не понимаете разницу между ними, тогда почему решили сделать так, а не сделать все модули одинаковыми?

Но дело не только в типах модулей, а еще в не понимании адресации бит и регистров панели и как эти адреса правильно использовать в модулях "input" и "output".

ЗЫ. Но прежде чем углубляться в вопросы взаимодействия ПЛК и панели, Вам следует доделать программу. А именно вместо использования всех этих D1, D2, ... и прочих D и W1, W2, ... и прочих W в модулях Modbus присвойте в конфигурации эти имена входам и выходам контроллера, как это и должно было бы быть. А в модулях Modbus придется использовать совсем другие имена. А что бы информация о состояниях входов и выходов ПЛК попала на лампы панели придется в программе копировать переменные на входах/выходах ПЛК в переменные в модулях Modbus,

Maxsvell
02.08.2015, 17:32
С точки зрения мастера ПЛК в панели есть биты и регистры.
Для того, чтобы прочитать состояние регистров или бит панели в мастере нужно использовать модули, в названии которых есть "input".
А для изменения состояния регистров и бит панели в мастере нужно использовать модули, в названии которых есть "output".
Вы же в программе используете оба вида модулей
19258
Если не понимаете разницу между ними, тогда почему решили сделать так, а не сделать все модули одинаковыми?

Но дело не только в типах модулей, а еще в не понимании адресации бит и регистров панели и как эти адреса правильно использовать в модулях "input" и "output".

Хорошо!!!Тогда подскажите пожалуйста как правильно надо сделать?(хот бы на одном примере)

petera
02.08.2015, 17:40
Хорошо!!!Тогда подскажите пожалуйста как правильно надо сделать?(хот бы на одном примере)
ЗЫ. Но прежде чем углубляться в вопросы взаимодействия ПЛК и панели, Вам следует доделать программу. А именно вместо использования всех этих D1, D2, ... и прочих D и W1, W2, ... и прочих W в модулях Modbus присвойте в конфигурации эти имена входам и выходам контроллера, как это и должно было бы быть. А в модулях Modbus придется использовать совсем другие имена. А что бы информация о состояниях входов и выходов ПЛК попала на лампы панели придется в программе копировать переменные на входах/выходах ПЛК в переменные в модулях Modbus.
Когда это проделаете, то выкладывайте новый вариант программы.

Maxsvell
02.08.2015, 18:04
[QUOTE=petera;Но дело не только в типах модулей, а еще в не понимании адресации бит и регистров панели и как эти адреса правильно использовать в модулях "input" и "output"
,[/QUOTE]


Подскажите тогда пожалуйста как правило нужно мне использовать модули "input" и "output" именно в моем проекте?

petera
02.08.2015, 18:13
Подскажите тогда пожалуйста как правило нужно мне использовать модули "input" и "output" именно в моем проекте?
В примере ошибки!!! Что на ошибках показывать? Потом будет "мучительно больно" все переделывать!!

ЗЫ. Неужели не понятно, что
19262
D1, D2, D3...D8 это не значения на входах ПЛК и никогда не будут соответствовать тому, что будет на выделенных входах ПЛК.
Что Вы тогда хотите увидеть на лампах панели? Всегда будет "0".

Maxsvell
02.08.2015, 18:17
Так правильно будет?????

petera
02.08.2015, 18:31
Так правильно будет?????
А что поменялось? Я так и не понял.

Maxsvell
02.08.2015, 18:36
Поменялись входы и выходы на плк, а вот что прописывать на входах и выходах универсального устройстве модбас не совсем понятно...

petera
02.08.2015, 18:40
Поменялись входы и выходы на плк, а вот что прописывать на входах и выходах универсального устройстве модбас не совсем понятно...
И где, в каком месте они поменялись? Все как было так и осталось Входы и выходы плк вообще не имеют имен и в программе фактически не используются!!!
19263
И так далее все входы и выходы в соответствии со схемой подключения.

ЗЫ. Еще раз повторяю, что 8bit input/output module относятся только к обмену между ПЛК и панелью и никакого отношения к физическим входам/ выходам ПЛК отношения не имеют.
Господи, ну неужели не дошло еще.

Maxsvell
02.08.2015, 18:53
И где, в каком месте они поменялись? Все как было так и осталось Входы и выходы плк вообще не имеют имен и в программе фактически не используются!!!
19263
И так далее все входы и выходы в соответствии со схемой подключения.

ЗЫ. Еще раз повторяю, что 8bit input/output module относятся только к обмену между ПЛК и панелью и никакого отношения к физическим входам/ выходам ПЛК отношения не имеют.
Господи, ну неужели не дошло еще.
Да уже дошло)))У меня изначально, до подключения панели так и было,прописаны в плк все входы выходы, а поосля почемуто по подсказкам переделал так как и стало((

petera
02.08.2015, 19:11
Да уже дошло)))У меня изначально, до подключения панели так и было,прописаны в плк все входы выходы, а поосля почемуто по подсказкам переделал так как и стало((
Ну вот, совсем другое дело:)

Maxsvell
02.08.2015, 19:13
Было изначально вот так!

Maxsvell
02.08.2015, 19:14
Тогда что нужно прописывать в 8bit input/output module, чтобы виделись все входы и выходы на панели?

petera
02.08.2015, 19:20
Тогда что нужно прописывать в 8bit input/output module, чтобы виделись все входы и выходы на панели?
Все модули у Вас будут output, за исключением четырех последних(для таймеров), но и в них нужны исправления.
Пока пример простого обмена между ПЛК и панелью
19267

19268

Maxsvell
02.08.2015, 19:41
Я понял так- что нужно для обмена вх и вых на панели и отображения на ней, отдельную программу писать??

petera
02.08.2015, 20:03
Я понял так- что нужно для обмена вх и вых на панели и отображения на ней, отдельную программу писать??
Ну это громко сказано "программу"
Добавить в конце PLC_PRG
19273
Это если в модулях 8 bit output имена будут hmi_Dxx и hmi_Wxx

Посмотрите в моем примере, как адресуются 8 bit output и как они привязаны к лампам на панели потому, что в Вашем варианте совершенно не правильно.

Maxsvell
02.08.2015, 20:22
объясните мне что за кем идет???Т.е. от чего начинать отсчет, или что является 257,258,259...Не понял...

petera
02.08.2015, 21:00
объясните мне что за кем идет???Т.е. от чего начинать отсчет, или что является 257,258,259...Не понял...
Для начала.
1. В панели есть регистры -PSW и PFW. Они 16 бит -Word. Могут использоваться так же и как 32 битные -DWord
2. В панели есть отдельные биты -PSB.
Доступ к регистрам PSW и PFW с помощью модулей Register input/output, для переменных Word или с помощью 32 bit input/output, для переменных DWord или Real input/output
А с помощью 8 bits input/output можно обращаться только к битам PSB.
PSB ни как не пересекаются с регистрами PSW.
По этому если вы решили использовать модуль 8 bits output, то лампа на экране панели никак не может быть привязана к разряду регистра PSW
19275
Если хотите, что бы лампа управлялась разрядом регистра PSW, то в ПЛК нужно было бы использовать Register output module. Тогда один регистр будет сразу на 16 ламп.
И так если Вы выбираете 8 bits output module, то он как и следует из названия, будет управлять сразу восемью лампами, привязанными к восьми подряд идущими битами PSB.
При этом адрес, который будет указан в настройках модуля, соответствует первому биту в группе из восьми, а остальные биты модуля имеют следующие по порядку номера.
19276
И так далее для следующих модулей.
В панели будет так
19277 19278 19279

petera
02.08.2015, 21:18
Кстати, в проекте панели удалите не нужные элементы. Они Вам в дальнейшем не понадобятся.
19281
Кроме того в настройках порта ПЛК не забудьте изменить ASCII на RTU
19282

Maxsvell
03.08.2015, 17:40
"petera" Спасибо вам ОГРОМНОЕ за помощь и терпение))).Объясните мне пожалуйста, как мне теперь разобраться с изменением времени в таймерах, с панели?В проекте плк я их убрал все потому что ,как вы и сказали "Все модули у Вас будут output, за исключением четырех последних(для таймеров), но и в них нужны исправления."Какие это исправления?

petera
04.08.2015, 11:49
После небольшого перерыва, продолжим.
19315
Использование энергонезависимого регистра панели -правильно.
Но нужно использовать без знаковый формат данных
19316
Так же можно задать, если хотите, ограничения вводимым значениям.
19317
Только не понятно почему такие разрывы между
1-PSW300
2-PSW400
3-PSW500
4-PSW600
Почему не сделать по порядку PSW300, PSW301, PSW302, PSW303 :confused:

petera
04.08.2015, 11:52
Попутно покажу как можно загрузить в панель начальные значения уставок сразу при загрузке в панель проекта.
1.
19318
2.
19319
3.
19320
4.
19321
5.
19322
Это в предположении, что уставки будут находится в регистрах по порядку - PSW300, PSW301, PSW302, PSW303.
С проектом в панели все.

petera
04.08.2015, 13:37
Теперь будем изменять программу так, чтобы обеспечить ввод времени из панели в ПЛК.
1. Нужно изменить настройки режима работы UMD, где идет запись в лампы. Нужен режим работы по изменению значений в 8 bits output.
19323
2. Добавить еще один UMD
19325
3. Внутри второго UMD нужно добавить четыре модуля Register input.
19326
Обратите внимание на то, что к адресам регистров PFW нужно прибавить 10000 http://www.owen.ru/forum/showthread.php?t=14257
4.
Теперь придется редактировать программу.
Сложность заключается в том, что Вы для своих модулей-программ не используете входные переменные, а ссылаетесь в них на глобальные переменные.
придется искать в разделах объявления каждой программы "t3", "t5", "t7", "t9" и удалять эти строчки.
19327
5.
Теперь нужно преобразовать значения WORD, полученные из панели, в формат TIME, необходимый для таймеров
19328
6. Опять из-за идеологии Вашей программы придется использовать глобальные переменные, т.е. при вводе "t3", "t5", "t7", "t9" указывать именно глобальные
19329
Или сразу вручную объявить эти переменные как глобальные
19330

ЗЫ. Если не справитесь, то проект во вложении

Maxsvell
04.08.2015, 16:22
"petera" доброго вам дня!Спасибо вам большое за столь подробные разъяснения( ну вот почему нельзя так в мануале по конфигурации писать:)) Все сделал по вашей инструкции))
В процессе написания появились вопросы:
1.
19334
2.
19335

Ну а в целом БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО за помощь!!!
В субботу выйду на работу и попробую проект в работе))Потом отпишусь.

petera
04.08.2015, 16:35
"petera" доброго вам дня!Спасибо вам большое за столь подробные разъяснения( ну вот почему нельзя так в мануале по конфигурации писать:)) Все сделал по вашей инструкции))
В процессе написания появились вопросы:
1.
19334
2.
19335

Ну а в целом БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО за помощь!!!
В субботу выйду на работу и попробую проект в работе))Потом отпишусь.
1. В переменной TIME время представлено в миллисекундах, а из панели мы читаем значения в секундах, по этому сек. нужно умножить на 1000.
2. По пункту 2, что Вам не понравилось? Ошибок и предупреждений ведь нет.
Или кол. данных в Вашем проекте больше чем в моем?
19341

Maxsvell
04.08.2015, 16:48
2. По пункту 2, что Вам не понравилось? Ошибок и предупреждений ведь нет.
Или кол. данных в Вашем проекте больше чем в моем?
19341
Мне то все нравится)) Самое главное что проходит компиляцию! А вот по кол-ву данных у меня и возник вопрос)

petera
04.08.2015, 17:04
Мне то все нравится)) Самое главное что проходит компиляцию! А вот по кол-ву данных у меня и возник вопрос)
Можно еще дальше пойти :rolleyes:
1. Было
19342

2. Исключить из компиляции неиспользуемые POU
19343

3. Стало
19344

Maxsvell
04.08.2015, 17:09
Теперь все стало понятно!)) Спасибо вам!

Maxsvell
12.08.2015, 16:27
Спасибо за помощь petera! Все работает!))))

prod
13.08.2015, 10:35
Добрый день, при программировании и подключении возникли следующие проблемы
1) в эмуляторе сп200 autowin почему-то не работает эмуляция панели с подключенным ПЛК пишет что нет лицензии и работа возможно 30 минут и предлагается нажать на ок, после чего ничего не появляется
19514
2) не получается соединить плк160 мастер и сп270 слэйв для пробы хочу реализовать включение лампочки в панели и выхода в плк одной кнопкой и выключение другой проект для сп и плк во вложениях
ЗЫ заранее спасибо

petera
13.08.2015, 20:50
Добрый день, при программировании и подключении возникли следующие проблемы
1) в эмуляторе сп200 autowin почему-то не работает эмуляция панели с подключенным ПЛК пишет что нет лицензии и работа возможно 30 минут и предлагается нажать на ок, после чего ничего не появляется
19514
2) не получается соединить плк160 мастер и сп270 слэйв для пробы хочу реализовать включение лампочки в панели и выхода в плк одной кнопкой и выключение другой проект для сп и плк во вложениях
ЗЫ заранее спасибо
Да....Бяда....:rolleyes:
Похоже эмуляция онлайн в режиме панель-Modbus Slave не предусмотрена(не работает). Так, что не судьба попробовать "включение лампочки в панели и выхода в плк одной кнопкой и выключение другой"
Вопрос -А зачем Вам такая конфигурация, в чем преимущества? По мне так одни минусы.
Делайте панель мастером, тогда попробуете.

prod
14.08.2015, 10:02
Да....Бяда....:rolleyes:
Похоже эмуляция онлайн в режиме панель-Modbus Slave не предусмотрена(не работает). Так, что не судьба попробовать "включение лампочки в панели и выхода в плк одной кнопкой и выключение другой"
Вопрос -А зачем Вам такая конфигурация, в чем преимущества? По мне так одни минусы.
Делайте панель мастером, тогда попробуете.

бяда бяда
О! спасибо!!! интересная особенность эмулятора...
у мну в системе только плк и панель и в принципе преимуществ нету что слейв что мастер
но вот незадача даже если панель мастер почему-то при эмуляции без панели снова нету связи...может я что-то делаю не так?
я открываю проект кодесис запускаю его в эмуляции
открываю проект в конфигураторе запускаю эмуляцию...и...(барабанная дробь)... появляется окношко эмулированной панели жму на виртуальную кнопачку и....чтот ничего не отображается в кодесисе....
пробовал залить проект кодесиса на плк и запускать...результат тот же
но при заливке в железяки(панель и плк) все работает и отображается в кодесисе...

petera
14.08.2015, 10:29
бяда бяда
О! спасибо!!! интересная особенность эмулятора...
у мну в системе только плк и панель и в принципе преимуществ нету что слейв что мастер
но вот незадача даже если панель мастер почему-то при эмуляции без панели снова нету связи...может я что-то делаю не так?
я открываю проект кодесис запускаю его в эмуляции
открываю проект в конфигураторе запускаю эмуляцию...и...(барабанная дробь)... появляется окношко эмулированной панели жму на виртуальную кнопачку и....чтот ничего не отображается в кодесисе....
пробовал залить проект кодесиса на плк и запускать...результат тот же
но при заливке в железяки(панель и плк) все работает и отображается в кодесисе...
http://www.owen.ru/forum/attachment.php?attachmentid=11950&d=1392750738 А с чего Вы взяли, что кодесис в эмуляции может заменить реальный контроллер?
Так у Вас ничего не выйдет. Это только конфигуратор панели эмулирует работу реальной панели, причем только 30 мин., дальше пере запускать нужно. Причем к компьютеру нужно подключать реальный ПЛК.

prod
21.08.2015, 13:29
http://www.owen.ru/forum/attachment.php?attachmentid=11950&d=1392750738 А с чего Вы взяли, что кодесис в эмуляции может заменить реальный контроллер?
Так у Вас ничего не выйдет. Это только конфигуратор панели эмулирует работу реальной панели, причем только 30 мин., дальше пере запускать нужно. Причем к компьютеру нужно подключать реальный ПЛК.
спасибо ваши рекомендации очень помогли!

Maxsvell
24.08.2015, 17:36
Всем привет!
Возвращаюсь к предыдущей "больной "теме.
petera правильно сказал, что:

Почувствуйте разницу между ФБ и программой и когда нужно делать ФБ, а когда программу.
19253 19254
Программа существует в единственном экземпляре, а ФБ может быть несколько экземпляров.
ФБ следует использовать, когда в основной программе нужно использовать несколько одинаковых POU, например RS триггеров и пр. А в остальном программа и ФБ работают одинаково, одинаково и вызываются из основной программы.
Вот тут то и получается что "Программа это программный компонент (POU), способный формировать про-
извольное число значений во время вычислений. Значения всех переменных про-
граммы сохраняются между вызовами." а у ФБ –программный компонент (POU), который прини-
мает и возвращает произвольное число значений функциональный блок не формирует возвращаемое значение.
Но по совету petera я переименовал ФБ в ПРОГРАММУ.Тут он был прав, но теоретически.

Какой смысл в Ваше программе использовать модуль "Naladka_1" в виде ФБ, что будет две или 10 "Наладок"?
Нет, только одна. Так и используйте программу.
Вот Ваша "TPA_3134_500_OKOK2.pro" но в которой не ФБ, а программы.
19256
И работать будет точно так же.
НЕТ, не будет она работать точно также!В процессе отладки появилась проблема:После аварийной остановки машины оператором нам требуется перезапустить все эти программы с начала, по умолчанию они продолжают свою работу с тех шагов, которые были активны до остановки. Я вспомнил, что в программе когда существовал ФБ, такой проблемы не было!Значит делаю выводы, что применить ФБ все таки было правильней?!

petera
25.08.2015, 03:06
Всем привет!
Возвращаюсь к предыдущей "больной "теме.
petera правильно сказал, что:

Вот тут то и получается что "Программа это программный компонент (POU), способный формировать про-
извольное число значений во время вычислений. Значения всех переменных про-
граммы сохраняются между вызовами." а у ФБ –программный компонент (POU), который прини-
мает и возвращает произвольное число значений функциональный блок не формирует возвращаемое значение.
Но по совету petera я переименовал ФБ в ПРОГРАММУ.Тут он был прав, но теоретически.

НЕТ, не будет она работать точно также!В процессе отладки появилась проблема:После аварийной остановки машины оператором нам требуется перезапустить все эти программы с начала, по умолчанию они продолжают свою работу с тех шагов, которые были активны до остановки. Я вспомнил, что в программе когда существовал ФБ, такой проблемы не было!Значит делаю выводы, что применить ФБ все таки было правильней?!
Не нашли ответов здесь http://www.owen.ru/forum/showthread.php?t=10555&p=178605&viewfull=1#post178605 и решили сделать крайним меня:confused:
Дело было не в бабине..., т.е. не в замене ФБ на программы, а как правильно Вы заметили, не так делаете:)


Сообщение от amn Посмотреть сообщение
В PLC_PRG создаете переменную init. В самой первой строке пишете
if not init then
init:= true;
(*здесь инициализируем нужные переменные*)
end_if

Если в дальнейшем понадобится снова проинициализировать переменные, то через триггер сбрасываем init:
init:=false;
Не помогло! Или я (что вернее всего) не так что то делаю.
И в программах и в ФБ значения всех переменных, в Вашем случае триггеров, сохраняются между вызовами.
А так как изначально вызов отдельных программ у Вас сделан через EN/ENO, то не смотря на то, что в программах предусмотрен сброс триггеров с помощью кнопки D10 фактически триггеры будут сброшены только в той программе у которой вход EN активный. Остальные программы просто не вызываются и соответственно ничего не знают про нажатие кнопки D10, по этому триггеры в них останутся не сброшенными.
Тоже самое было бы если Вы использовали ФБ, а не программы.

Я вспомнил, что в программе когда существовал ФБ, такой проблемы не было!Значит делаю выводы, что применить ФБ все таки было правильней?!
Выводы ошибочные и не соответствуют действительности.


ЗЫ. Попробуйте так
19648

Maxsvell
25.08.2015, 07:35
[QUOTE=petera;178851]Не нашли ответов здесь http://www.owen.ru/forum/showthread.php?t=10555&p=178605&viewfull=1#post178605 и решили сделать крайним меня:confused:

Что вы!!!Я ни как не хотел сделать вас крайним , а тем более обидеть! Извините если все таки обидел. Я писал свои размышления "вслух":)



Выводы ошибочные и не соответствуют действительности.
Я обязательно проверю, потом отпишусь.
"petera" спасибо за подсказку:D, обязательно попробую, как вы мне предложили

forpiv
01.09.2015, 09:03
Продолжаю задавать вопрос на тему эмуляции :) Просто до сего дня обходились второй панелью, а тут припёрло.
В проекте панель мастер, плк 160 слейв. Панель подключена к плк через разъём RS232 при помощи кабеля КС1. Отключаю кабель от панели и через адаптер RS232-USB подключаю к ПК. В программе запускаю онлайн эмуляцию, выбираю COM порт адаптера, настраиваю скорость адаптера в соответствии с настройками в ПЛК и панели и... Ничего не работает! Пробовал и напрямую к 232 подключать и через scada встраивать - не работает.
Где я ошибаюсь?

petera
01.09.2015, 10:02
Продолжаю задавать вопрос на тему эмуляции :) Просто до сего дня обходились второй панелью, а тут припёрло.
В проекте панель мастер, плк 160 слейв. Панель подключена к плк через разъём RS232 при помощи кабеля КС1. Отключаю кабель от панели и через адаптер RS232-USB подключаю к ПК. В программе запускаю онлайн эмуляцию, выбираю COM порт адаптера, настраиваю скорость адаптера в соответствии с настройками в ПЛК и панели и... Ничего не работает! Пробовал и напрямую к 232 подключать и через scada встраивать - не работает.
Где я ошибаюсь?
Через этот адаптер панель программируется?
Если да, то должна работать и эмуляция. Тем более эмуляция должна работать и с сом портом ПК.
настраивать скорость адаптера в соответствии с настройками в ПЛК и панели не надо, эмулятор сам все настроит.
При первом запуске онлайн эмулятора нужно выбрать номер порта компьютера, к которому подключен ПЛК
1.
19728
2.
19729

Если этого не сделать, то номер порта будет пустым.
Выбирать нужно естественно существующий порт, в том числе тот, который в системе получил адаптер RS232-USB.

forpiv
03.09.2015, 11:05
Да, через этот адаптер панель программируется.
Сделал простой проект: на панели разместил кнопку, которая зажигает лампу при удержании кнопки - регистры 1х. Подключаю панель к плк нажимаю кнопку, лампа загорается. Все можно наблюдать при подключении к плк в онлайн.
Отключаю разъем от панели и через usb-232 подключаю к ПК, запускаю эмуляцию, указываю сом-порт адаптера. В эмуляции панели кнопка нажимается но лампа не загорается и естественно в онлайн подключении к плк дискреты не меняются.
Может я неправильно понимаю принцип эмуляции? В онлайн эмуляции панели при нажатии кнопки должна загораться лампа? Или не должна? Пробовал на разных ПК-безрезультатно.
Проект панели и плк прилагаю. Объясните, пожалуйста, что НЕ ТАК!

forpiv
04.09.2015, 03:57
Спасибо ОГРОМНОЕ. Все заработало.
Мы, дилетанты-графоманы-рукоблудники, как делаем? Сначала все пишем, подключаем, задаем глупые вопросы по форумам. Не получается или посылают на форуме, тогда начинаем читать документацию. А если получилось, тогда зачем читать документацию? :) Вот так и с ASCII получилось - работает ну и ладно. Вы бы видели каких кренделей мы тут понаписали в проекте на мельницу, мнооого бы таких вопросов "а зачем" задали бы. А сейчас и так работает и в интач тянется и на панели показывает. За то контора на халяву, на голом этузазизьме, модернизацию автоматики мельницы получила, а мы "на кошках" потренировались.
Еще раз СПАСИБО.

Makc
07.09.2015, 05:22
Добрый день! Такая ситуация: есть необходимость управлять пятью преобразователями частоты через сп270(ModBus RTU),
как избавиться от ошибки при потери связи с одним из частотников? ( панель мастер).
Например пропала связь с частотником №3 (условно), взвелся какой нибудь бит, а остальные частотники опрашиваются дальше...

Makc
07.09.2015, 16:23
Есть ли возможность присвоить регистру PSB логическую единицу, если например по внешнему опрошенному регистру 4х100500 лежит значение 5?
И так же если по тому же регистру лежит не 5 а например число 100 то нужно чтобы регистр PSB стал логическим 0.
Есть такая возможность у панели? как можно реализовать?

Адрей
07.09.2015, 20:08
Есть ли возможность присвоить регистру PSB логическую единицу, если например по внешнему опрошенному регистру 4х100500 лежит значение 5?
И так же если по тому же регистру лежит не 5 а например число 100 то нужно чтобы регистр PSB стал логическим 0.
Есть такая возможность у панели? как можно реализовать?
Пишим условие для функции на Си

WORD i;
Read(HMI_LOCAL_MCH,0,TYPE_PSW,100500,0,TYPE_WORD,&i);
if(i==5)SetPSB(256);
if(i==100)ResetPSB(256);
return;

Makc
09.09.2015, 15:39
А если при создании панели выбрать для порта PLC slave, а для порта Download выбрать master, панель будет работать одновременно в двух режимах и мастера и слейва?

petera
09.09.2015, 15:45
А если при создании панели выбрать для порта PLC slave, а для порта Download выбрать master, панель будет работать одновременно в двух режимах и мастера и слейва?
Да, но только по каждому порту свой режим. Т.е. PLC - slave и Download - master или наоборот.

ЗЫ. При использовании порта Download для подключения оборудования обязательно наличие перемычки между 6 и 5 кон. в разъеме Download.

Makc
11.09.2015, 06:21
Да, но только по каждому порту свой режим. Т.е. PLC - slave и Download - master

ЗЫ. При использовании порта Download для подключения оборудования обязательно наличие перемычки между 6 и 5 кон. в разъеме Download.

Ну получается что оба порта PLC, Download могут работать и оба в мастере и оба в слейве? и получится опрашивать с помощью панели какие то устройства и при этом в то же время опрашивать панель с другой стороны?

petera
11.09.2015, 07:27
Ну получается что оба порта PLC, Download могут работать и оба в мастере и оба в слейве? и получится опрашивать с помощью панели какие то устройства и при этом в то же время опрашивать панель с другой стороны?
Ну почему такие выводы?
По одному порту -мастер, а по второму -слейв. В любой комбинации. Даже можно сделать ретранслятор:rolleyes:

Makc
11.09.2015, 09:16
Ну почему такие выводы?
По одному порту -мастер, а по второму -слейв. В любой комбинации. Даже можно сделать ретранслятор:rolleyes:

Спасибо =)

ВЗМП
21.09.2015, 11:26
здравствуйте!
на прошлой неделе начал осваивать СП270. прочитал всю тему. кое-что получилось (вывод переменных с плк110 на экран), а кое-что - нет - ввод данных с панели в плк.
в частности нужно управлять битом с панели. желательна кнопка с фиксацией. делаю как в прикрепленном проекте, но бит не меняется. в чем ошибаюсь?

и еще объясните по рабоче-крестьянски, когда есть смысл делать панель мастером, а когда - слейвом?

petera
21.09.2015, 11:40
здравствуйте!
на прошлой неделе начал осваивать СП270. прочитал всю тему. кое-что получилось (вывод переменных с плк110 на экран), а кое-что - нет - ввод данных с панели в плк.
в частности нужно управлять битом с панели. желательна кнопка с фиксацией. делаю как в прикрепленном проекте, но бит не меняется. в чем ошибаюсь?

и еще объясните по рабоче-крестьянски, когда есть смысл делать панель мастером, а когда - слейвом?
ИМХО.
http://smayli.ru/generatonadpisey/generator.php?col_r=255&col_g=16&col_b=8&text=%D0%9F%D0%B0%D0%BD%D0%B5%D0%BB%D1%8C%20%D0%B4 %D0%B5%D0%BB%D0%B0%D0%B9%20%D0%BC%D0%B0%D1%81%D1%8 2%D0%B5%D1%80%D0%BE%D0%BC%23%23%20-%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0!&intro=1&outro=4&delay=3&repeat=0&back=0&back_r=255&back_g=255&back_b=255
ЗЫ. Что значит не меняется? Где не меняется? Когда не меняется?
Разве не устанавливается значение p_sost2=1 после нажатия кнопки на экране?
Может Вы хотели, чтобы кнопка при следующем нажатии еще и сбрасывала (p_sost2=0)? Если да, то действие у кнопки должно быть "Реверс", а не "Включить"

Адрей
21.09.2015, 11:54
и еще объясните по рабоче-крестьянски, когда есть смысл делать панель мастером, а когда - слейвом?
Все зависит от приоритетов.
Простой пример.
В операторной 12 отметки имеется центральный шкаф управления автоматикой в нем находятся СП270 его используем мастером через нее задаем основные параметры в ПЛК, но на рабочем месте 0 отметке стоит другой шкаф управления который связан с шкафом 12 отметки по rs-485 и в нем установлена панель оператора ИП320 и модули сбора информации шлейфом одной сити в этом случае используем панель и модули слейвом.

ВЗМП
21.09.2015, 13:11
ИМХО.
http://smayli.ru/generatonadpisey/generator.php?col_r=255&col_g=16&col_b=8&text=%D0%9F%D0%B0%D0%BD%D0%B5%D0%BB%D1%8C%20%D0%B4 %D0%B5%D0%BB%D0%B0%D0%B9%20%D0%BC%D0%B0%D1%81%D1%8 2%D0%B5%D1%80%D0%BE%D0%BC%23%23%20-%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0!&intro=1&outro=4&delay=3&repeat=0&back=0&back_r=255&back_g=255&back_b=255
так и поступил, т.к. примеры и документация для такой конфигурации оказалась понятнее.

ЗЫ. Что значит не меняется? Где не меняется? Когда не меняется?
Разве не устанавливается значение p_sost2=1 после нажатия кнопки на экране?
не устанавливается. в смысле бит p_sost2.0 не становится 1 в плк.
а вообще сам подход верный?

Может Вы хотели, чтобы кнопка при следующем нажатии еще и сбрасывала (p_sost2=0)? Если да, то действие у кнопки должно быть "Реверс", а не "Включить"
да, хотел. спасибо, учту это, переделаю.

что означает меню "чтение" в "переключателе бита"?

petera
21.09.2015, 14:35
не устанавливается. в смысле бит p_sost2.0 не становится 1 в плк.
а вообще сам подход верный?
Подход верный.
И почему у Вас не устанавливается я не знаю. У меня все работает. Может Вы не там смотрите:rolleyes:
Исходное состояние
20059
Кнопка на экране темная.
Нажимаю кнопку, она становится светло зеленой.
Смотреть результат можно сразу в конфигурации ПЛК p_sost2=1
20060
Другое дело, что больше кнопка не работает, нужно или в конфигурации ПЛК вручную изменить значение для p_sost2=0 или действие для кнопки изменить на "Реверс"

что означает меню "чтение" в "переключателе бита"?
Переключатель с подсветкой -два в одном(кнопка + лампа). Опция чтение в настройках относится к лампе. Если ее не трогать, то переключатель будет показывать состояние того же бита, которым управляет. Но можно управлять одним битом, а отображать значение совсем другого, даже в другом устройстве или в самой панели. Для этого нужно поставить галку "Чтение" и указать нужный бит.