Из программы нету доступа к внутренним переменным ФБ
ModBus.lib не открыть CoDeSysом - она зашифрована.
Потому тогда если TimeOut:=10s, то ошибка появится через 3ms? Это так правильно, так и должно быть?
У Вас есть рабочая библиотека и пример?
Из программы нету доступа к внутренним переменным ФБ
ModBus.lib не открыть CoDeSysом - она зашифрована.
Потому тогда если TimeOut:=10s, то ошибка появится через 3ms? Это так правильно, так и должно быть?
У Вас есть рабочая библиотека и пример?
Библиотека - рабочая.
После вызова блока с Enable:= true вызывайте его с Enable:= false до окончания операции обмена с устройством, и только после этого анализируйте ошибку.
Версия твоей библиотеки какая? у моей 27.05.09 10:22:38
Какая разница? Для Вашего примера они все рабочие.
ASo, если лень смотреть версию библиотеки, так зачем вообще загрязнять форум?
CoDeSys на открытие функции в библиотеки ругается вот-так:
Новый точечный рисунок.jpg
Не взглянуть и не посмотреть как они работают
Если на против функции стоит символ X , то эту функцию не раскрыть.
спасибо!!!
Теперь понятно в чем проблема, когда видны внутренности библиотечного ФБ:
T_FRTU: TIME := T#3ms; (* межкадровый интервал режима RTU *)
Он слишком мал для скорости 4800 и 9600 бит/сек.
Вот как он влияет на таймер который отвечает за ошибку 255 (функция MB_UNI_IO):
Новый точечный рисунок.jpg
Длина кадра для скорости 4800бит/сек = 8*(11/4800)=18,3мс (расчет из источника https://sites.google.com/site/fieldb...-rtu-ascii-rus)
На скорости 19200 бит/сек и выше - ФБ, проверил работает.
Для скорости 4800 бит/сек- ФБ начинает работать только если поменять T_FRTU=10ms и выше.