Вы, кстати, проверяли мой код у себя?То есть у меня банально из ФБ опроса по модбасу только изредка выходит "тру" на статусе
Можно его "оформить" в FB и пользовать в CFC, "подсовывая" номера слэйвов, адреса регистров и их количество...
Вы, кстати, проверяли мой код у себя?То есть у меня банально из ФБ опроса по модбасу только изредка выходит "тру" на статусе
Можно его "оформить" в FB и пользовать в CFC, "подсовывая" номера слэйвов, адреса регистров и их количество...
Последний раз редактировалось Spawn; 14.04.2022 в 08:00.
Сейчас планирую заняться, спасибо. Суть проблемы не в языке, суть в моей голове. Я не понимаю что я упускаю. То ли порт закрывать после опроса, то ли фиксировать как-то данные из буфера в момент подтверждения отработки опроса... Почитал ещё форум, много похожего, но никакой конкретики. Пока склоняюсь к рабочему варианту осваивать ST и брать его для ФБ, а тело писать на CFC. Суть ST мне понятна, только матчасть надо подтянуть.
При успешном открытии порта и пока идет обмен, его трогать не нужно. Информацию из буфера, желательно, забирать тогда, когда выполняются оба условия (Complete = TRUE и Exception = 0).
Потестировал примеры из архива на ST и Ваш код, все работает. Вероятно так и буду обходить проблему. Но все равно надо понять в чем косяк. Пробовал реализовать вытаскивание через буфер только при условии что ошибок нет и Cmpl тру, но один черт, нужные параметры появляются, но не висят постоянно. В вашем коде и в примере, в буфере в результате опроса все висит постоянно. В моем случае - в буфере адовые поскакушки, потому что успешный опрос входов модуля происходит раз в несколько секунд и на очень короткое время. И вот тут я и не могу понять где загвоздка. В теории все настройки одинаковые и т.д. Я бы грешил на что-то вроде того, что программа маленькая и банально слишком быстро катается по циклу, но ведь и в примере она такая же. И вот тут-то я и спотыкаюсь об отсутсвие теоретической подготовки =( То есть все настройки одни и те же, я опрашиваю один и тот же модуль с теми же таймаутами и т.д. Но в моей программе на CFC не хватает чего-то, что заставляет работать блок опроса непрерывно, а не как у меня - раз в n секунд и то хз равномерно или нет.
Господа специалисты! Есть еще один архиважный вопрос. Наколдовал я себе и опросы и все остальное. Разобрался, посмотрел на СТ и т.д. Теперь началось самое интересное. Суть вопроса: Есть система, 63-й в роли мастера, опрашивает три частотника, считывая с них рабочую частоту или задание. С этим проблем нет. Но дальше мне нужно записать в два FC-051 командное слово и задание и тут начинается ад. В первый частотник командное слово пишется. Пишу его в регистр 50000, по адресу 49999. Пишу через MB_WR_REGS. При это задание не хочет писаться ни в какую. Пытался писать его и в 50009 и в 3099 - нет и все. А для полного ада - если выставить таймауты вменяемые - то опрос начинает крутится так шустро, что буфер превращается в кашу. И второй частотник не запускается и первый падает в ноль. Если на втором поставить дикий тайминг, что-то вроде 300мс, то первый запускается. а цикл опроса зависает на втором. Подскажите куда копать. Я с форума упер конструкцию с триггерами, которая должна держать в работе блок, покуда он не запишет все, но эта история не работает. В мыслях сделать отдельно опрос первых трех частотников, закрытие порта и отдельную запись в два рабочих. Либо каким-то образом привызявать запись к изменению задания, но я и задание пока не смог забросить в частотник. Код завтра сюда добавлю, сегодня нет возможности. Но может кто сталкивался с такой историей и потычет пальцем в какую сторону копать?
С какого вы пишите в регистр 50000, по адресу 49999 ?
Разберитесь с регистрами сначала. Скрины адресов выложите.
Частотники создают сильные помехи, поэтому обязательно частотники относите подальше, резисторы 120 Ом на вход выход 485 порта, провода в экраны, экраны заземлить перед входом в ПЛК.
Сделайте новый проект и полностью чтение, запись с одним частотником наладьте.
Последний раз редактировалось kondor3000; 20.04.2022 в 16:31.