Йо!.. Сначала разберись с аппаратной частью - модулем ввода.
Подключи датчик к модулю и прям в конфигураторе попробуй посмотреть, как работает модуль и что он показывает с датчика (в конфигураторе Мх110 есть пункт Прибор -> Состояние входов и выходов).
Вот там ты увидишь, как прибор видит датчик и что он показывает. Ну, утрированно - увидишь, что датчик показывает +25 градусов какие-нибудь. Погреешь его зажигалкой или рукой - температура вырастет.
Если с аппаратной частью всё ОКей - то больше её не трогай (считаем что модуль отдаёт данные правильно и верно).
Если НЕ окей - то тогда надо проверить, правильно ли ты датчик подключил, верно ли настроен тип датчика в модуле.
Дальше надо выдумать то, как читать датчик из ПРки. Многие пытаются его тащить как Float, но у меня не получалось из-за разного порядка байтов и прочего.
Если ты посмотришь инструкцию на модуль аналоговго ввода (в плане переменных ModBus), то ты увидишь что модуль умеет отдавать данные как FLOAT, а ещё умеет отдавать как "Число + Положение десятичной точки". Мне этот способ больше нравится, потому что всё читается как целое значение.
Ну, типа один канал отдаёт целое число "123", а второй отдаёт "1". И получается что 123 / 10 в степени 1 = 123 / 10 = 12,3 градуса.
В ПРке есть блок "fPOW" (возведение в степень) и блок "fDIV" - деление. Вот с ними можно замутить.
И третье. У меня просто так связь была, но переменные НЕ читались, пока я не ставил разрешение их опроса и чтения. Может это мой глюк или ещё что-то - но проверь и это.
Я сделал булевую переменную "EnableMBWork" и воткнул её значение во все модули ввода-вывода и переменные, которые я опрашиваю.
Саму переменную константой сделал всегда равной True. После этого всё завелось.
![]()




Ответить с цитированием