Кстати да, проще плату переставить в новую панель, там даже чтобы батарейку заменить, надо плату снимать. 2 мин на всё.
Кстати да, проще плату переставить в новую панель, там даже чтобы батарейку заменить, надо плату снимать. 2 мин на всё.
Здравствуйте!
Начал рассматривать пример программ для ПЛК 1хх (с сайта). Запускаю программу №4 (Задание ШИМ на выходе ПЛК) и на выходе ПИД 0 (все в режиме эмуляции).
Входные данные ввожу, но на выходе все равно 0. Есть кто рассмотрел данный пример?
Последний раз редактировалось Habib_1; 24.08.2023 в 05:18.
Здравствуйте!
Если я к RS-485, который соединяет ПЛК и МВ, подключаюсь параллельно преобразователем интерфейса USB/RS485, чтобы прослушать порт, то данные в этом порту идут, но в codesys уже не поступают на переменные.
Так и должно быть?
Данные идут на прослушке такого типа:
3a 31 35 30 33 30 31 31 38 30 30 32 38 41 37 0d0a
3a 31 36 30 33 30 31 31 38 30 30 32 38 41 36 0d0a
3a 31 30 30 33 30 31 31 38 30 30 32 38 41 43 0d0a
что то не похоже на modbus rtu?
Последний раз редактировалось senkos; 24.08.2023 в 09:42.
если Вы включились в сеть как мастер то конечно другой мастер может перестать получать данные
а по поводу посылок это ascii , вот описание например MODBUS Message ASCII framing
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Круто, спасибо! И точно у меня ASCII был выставлен в настройках RS485.
Теперь такие красивые читаемые пакеты шлет:
00:00:00.717 - Request: 16 03 01 18 00 28 c7 08
00:00:00.717 - ID: 22, Fn: 3 (Read HR), addr: 280, count: 40, CRC: 0x8c7
00:00:00.868 - Request: 10 03 01 18 00 28 c7 6e
00:00:00.868 - ID: 16, Fn: 3 (Read HR), addr: 280, count: 40, CRC: 0x6ec7
00:00:01.032 - Request: 11 03 01 18 00 28 c6 bf
00:00:01.032 - ID: 17, Fn: 3 (Read HR), addr: 280, count: 40, CRC: 0xbfc6
Решил панель сделать Мастером.
В конфигурации ПЛК воссоздал образ структуры COMPRESSOR по каждому компрессору свои переменные.
На скрине отражается это: scr-1.jpg
Если все правильно я понял, то у меня возникли сложности:
1) Как в панели из первого WORDа получить биты, в них будут передаваться с ПЛК в панель алармы и статусы. Или же так и прописать их отдельными переменными в структуре и в конфигурации ПЛК, по 8шт WORD на каждый компрессор.
2) Каким образом мне присвоить выходам значения члена массива COMPRESSORS[k]?
Вручную присвоить каждому выходу свое значение это наверное не вариант?
Последний раз редактировалось senkos; 24.08.2023 в 22:05.
Вы не совсем правильно поняли, в структуре вы можете оставить байты ( у меня на скрине с байтами), а можно сделать маску WORD.
Упаковка и распаковка в программе ПЛК через точку, только в байте 8 бит, а в регистре 16 бит
например упаковка Mask.0:=b0; Mask.1:=b1; Mask.2:=b3; и т. д. или распаковка b0:=Mask.0; b1:=Mask.1; b2:=Mask.2; и т. д.
А вот в панели нет байт, соответственно обращение ко всем 16 битам будет в одном WORD, например 4х0 бит 0, 4х0 бит 1 ...... 4х0 бит 15
С байтами в ПЛК, у вас получится, 1 байт - биты с 0 по7 и 2 байт - биты с 0 по 7, а в панели регистр с битами с 0 по 15
Чтобы не путаться и написал сделайте WORD, например упаковали бит 10 (Mask.10:=b10)
и получили в панели 10 бит (4х0 бит 10)
Последний раз редактировалось kondor3000; 24.08.2023 в 22:26.
Упаковка и распаковка это про создание WORD из двух BYTE и наоборот?
А каким образом мне присвоить каждому выходу QB7.10 ... QB7.17 значения из COMPRESSORS[1]? Неужели вручную писать %QB7.10 := COMPRESSORS[1].bSignal12;...
То есть как мне проитерировать выходы чтобы в цикле их заполнить?
Или как привязать COMPRESSORS[1..7] OF COMPRESSOR к выходам QB7.xxx
Последний раз редактировалось senkos; 24.08.2023 в 22:39.