Ошибки обмена конечно не будет
Мне кажется для оценки максимальной скорости нужно сократить объём обмена до минимума, вплоть до одного регистра, и последовательно увеличивать объём обмена (и/или добавления команд записи) до момента возникновения ошибок.
Не смотрели, какой реальный цикл ПЛК отображается при работе?
часть первая, открытие: запускаете КДС, выбираете открыть или из меню Файл->Открыть или нажать на иконку папки, далее в выпадающем списке Тип файла выбираете библиотека и ищите в какой папке расположена та самая библиотека
часть вторая, свойства: по любому ПОУ жмете ПКМ, в контекстном меню выбираете свойства объекта, в появившемся окошке выбираете полный и ставите галку применить ко всем, после этого все файлы доступны для редактирования
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Всем привет!
И, возвращаясь к нашим баранам, настроил работу по MODBUS (RS-485, RTU, 115200) с 9ю драйверами SMSD условно параллельно, при этом операции записи/чтения по MODBUS не прерываются другими потоками.
Вылезает глюк при записи в регистры TARGET_POS ИЛИ ABS (команда write single register), в отладке выглядит так:
1.png
постоянно заходит в 26 строчку и выдает ошибку EXC_HW
сверху видно что буфер корректный, корректность буфера проверил подключившись моксой к линии RS:
2.png
Код проекта
plk_project_mb_manual.zip
Подскажите пожалуйста куда копать
Тут как понимаю может сбиваться работа порта ПЛК, или библиотеки Modbus.lib, которую я расшарил, но ничего в ней не менял (пока)
на форуме встречал что меняли очистку данных порта в коде Modbus.lib
Порт можно попробовать закрывать и заново открывать, но закрытия порта не встречал ни у кого в коде, т.е. никто этим не пользуется
а также были проблемы при изменении буфера во время записи по модбасу, но у меня буфер не меняется (или я так считаю), это видно в отладке на скрине выше
Помогло переоткрытие порта.
Интересно что тут на форуме я подобной проблемы ни у кого не встречал.
Ещё сделал как тут:
https://owen.ru/forum/showthread.php...l=1#post219530
а именно поправил 7 строчку
Было бы неплохо если бы представители Овна наконец заметили (т.е. передали бы своим разработчикам) косяк в своей библиотеке, о котором пишут на форуме, когда мусор из порта считывается в рабочий буферКод:WHILE SysComRead(ComHandle, ADR(DataBuf[20]), SIZEOF(DataBuf) - 20, 0) <> 0 DO;
Последний раз редактировалось Millyvolt2; 14.11.2023 в 12:38.