Показано с 1 по 10 из 95

Тема: невероятно медленный опрос модулей МВ110-220.8АС

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Sergey666 Во-первых, нечего пенять на техноблогосферу, коли не читал мой блог. Пишу я там только тогда, когда разберусь. Потому и написал, что ближе к осени. К примеру пост про модули IO от ОВЕНа вынашивался полгода. А статья про Modbus в двух частях (с анализом сигналов осциллографом и логическим анализатором и тем, как работают CodeSys v2 и CodeSys v3) вынашивается уже второй год. Так-то.
    Что касается самого "бложока" - дык ему 12ый год идёт. С 2009 года-то. Известный ресурс в узких кругах, между прочим.

    Во-вторых, после того как я увидел этот пример на говнокоде (так это называлось во все времена) - без именований переменных, без комментариев и пояснений в логике, меня стошнило.
    Так как я прогал на разных языках (QB, VB, VC++, PHP, 1C 7.7, MCS-51, AVR, Pascal/Delphi), то судить право имею: во всех языках (а кое-где даже в командах разработки) есть правила оформления кода, именования переменных (причём с разными нотациями), оформления комментариев и отступов, работы с константами и магическими числами. Вкус к понятному коду у меня привит с 1997 года, ибо нефиг.
    И по форуму я вижу, что большинство разрабов под ПЛК делают такую хрень. Открываешь проект, который тебе с пафосом прислали как супер-важный-пример, а там понаписано всякого типа "pr3", "i", "j = pr8 / 10 + i-5", и ты сидишь и офигеваешь.
    Или, что ещё хуже нет никаких проверок границ массивов, валидности указателей, длины буферов, логической валидности принятых данных. Это же, чёрт побери, АЗЫ грамотного программирования: сначала проверил все параметры функции (или FB в нашем случае), потом начал действовать или вывалил код ошибки!
    И вот эти люди (включая Sergey666) будут мне указывать на бложик и на статьи?... Пха!
    Я против этого, и я буду от этого воротить свой нос. И тут меня не перешибёшь ничем: есть понятный код, а есть говнокод.
    При том, что есть обратные примеры, и в разделе ПРок чел с аватаром волка ("ты заходи если чё") быстро рисует отличные понятные FBD на OWL.

    В-третьих, по поводу "разберусь - напишу статью". А вот тут я и скажу следующее: Валенок вон в третий (или пятый) раз объясняет одно и то же с этими STRING.
    Все (как и я сам) спрашивают пример. И где он? Кто-то, включая Валенка самого, подготовил картинки скриншоты, пояснения (то, почему мы так делаем и на каких принципах это построено)? Валенок давал код в теме, которую жахнули... и - всё.
    У меня многие проекты делаются с посыла "если никто, то это сделаю я" и "задолбало". Вот и задолбало. Сделаю пост!

    В-четвёртых, в DWORD меня тянет, так как в VC++ на 32-битной платформе это 4 байта. И осталась привычка с приведением типов указателей к чему угодно. Что например можно склеить DWORD, а потом взять memcpy какой-нить и хажнуть (void*)&dwVariable в REAL. Про то и спрашивал, как тут в CodeSys делают.

    kondor3000 А ты отрицательную температуру потести так. Косяк вылазит на отрицательных.
    Вон, если дома разрабатываешь, возьми чего-нить из морозилки и на датчик положи - и зацени что будет.

    SBeaR Во, про это и надо будет написать в посте. Что, мол, работает не во всех случаях, и надо смотреть на докуму и на практику.
    Хм... про 4ТД интересно. Я нашёл докуму - https://docs.owen.ru/product/moduli_...14#topic-40914 - а там пишут, что якобы он поддерживает команду 0x03 и может отдавать несколько регистров.
    А в реале, значит, ни фига. Значит баг =)

  2. #2

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Хм... про 4ТД интересно. Я нашёл докуму - https://docs.owen.ru/product/moduli_...14#topic-40914 - а там пишут, что якобы он поддерживает команду 0x03 и может отдавать несколько регистров.
    А в реале, значит, ни фига. Значит баг =)
    Формально мануал не врет, так как он отдает два регистра (например 62 и 63 для первого датчика), а два это уже несколько . А вот уже три и более отдавать не хочет.

  3. #3

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение

    kondor3000 А ты отрицательную температуру потести так. Косяк вылазит на отрицательных.
    Вон, если дома разрабатываешь, возьми чего-нить из морозилки и на датчик положи - и зацени что будет.
    Даже с морозилкой связываться не надо, у меня в моей библиотеке есть блоки разложения REAL на BYTE и WORD и сборки обратно и перестановка местами WORD.
    Взял отрицательный REAL, разложил, так там и байты и ворды положительные и целочисленные, так что пофигу. Скрин из программы выложил. WORD_ы.jpg
    А принцип разложения и сборки байтов и вордов, всё равно сводится к ADR() и указателям, как писал Sergey666. Пример кода выкладывал выше.

    Проблемы могут быть только с целочисленными значениями без смещения точки, по этому поводу уже писал выше. Достаточно объявить переменные как INT и присвоить им значения считанных WORD.
    Последний раз редактировалось kondor3000; 30.06.2021 в 12:39.

Похожие темы

  1. Опрос модулей МВ110-хх
    от Antonio-oz в разделе Мх110
    Ответов: 2
    Последнее сообщение: 14.12.2019, 14:49
  2. Ответов: 2
    Последнее сообщение: 13.03.2015, 01:00
  3. Ответов: 5
    Последнее сообщение: 20.02.2013, 01:44
  4. Опрос несколько модулей МВ110 через лектус
    от llx89 в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 20.02.2013, 01:44
  5. Ответов: 9
    Последнее сообщение: 17.03.2011, 05:48

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •