-
SysComRead & SysComWrite
Добрый день!
Подскажите, кто знает, как реализованы функции SysComRead & SysComWrite? Когда происходит собственно чтение и передача в порт? В промежутках между вызовами PLC_PRG (как, например, устанавливаются выходы ПЛК), или PLC_PRG прерывается и происходит прием/передача?
-
нет, прием и передача идут несколько циклов программы, если память не отшибает, когда переделывал пример опроса Меркурия с UNM на данные библиотеки.
-
Эмм... скажем так...
Если посчитать количество переданных байт в секунду на скорости 115200 по формуле:
V_byte = V_com * d / (d + 1 + s + p) / 8
где:
V_com — битрейт (например: 115200), бод;
d — количество бит данных; (8)
s — количество стоповых бит; (1)
p — количество бит четности, p = 1 если бит четности присутствует, или p = 0 если бит четности отсутствует;
единица в знаменателе отражает наличие стартового бита.
то получаецо за 1ms ~ 11 байт так?. Предположим запрос 10 байт задержка 1ms и ответ 10 байт итого на круг 3ms. Eсли цикл ПЛК 10ms то запрос-ответ может быть реализован в одном цикле (Ну если SysComRead & SysComWrite на прерываниях)? А если прием передача происходят между циклами то нужно два цикла ПЛК (или 20ms).
-
ну отправили в проекте Вы команду SysComWrite и считаете что процессор всё бросил и пошел заниматься отправкой. Прерывание наступает согласно очередности и приоритетности и надеяться что в этом же цикле можно получить ответ очень беспечно, Вы даже не пытаетесь учитывать что на другом конце соединения тоже нужно принять, обработать о отправить ответ. Поэтому ожидание ответа всегда делается в следующем цикле. И кстати в плк Вы выставляете минимальное время, а сколько идет сам цикл можно узнать только по усредненному значению из модуля статистики
-
lazy ага, а байты принятые вы как считать собираетесь ? все бросить и только этим и заниматься ? а программа ?