Страница 383 из 498 ПерваяПервая ... 283333373381382383384385393433483 ... ПоследняяПоследняя
Показано с 3,821 по 3,830 из 4972

Тема: Области применения ПР110(примеры реализации)

  1. #3821
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,687

    По умолчанию

    э, может не в тему, но как запихнуть год-месяц-число в 2 байта ?

    20D1 - это 2013 год 1-е января
    213E - это уже 2013 20 апреля

    Данный стандарт вроде международный, на аппаратуре часто применяют в идентификаторах даты выпуска. Да и в компьютерах он применяется.
    Задача из 4-х байт сделать 2-х байтовую запись в данном формате.

    На входе 1-е 2 байта это год 2013, 2045 и т.д.
    2-е 2 байта месяц и число

    запись на входе 2013 01 01 - на выходе 20D1
    2013 04 20 - на выходе 213E

  2. #3822

    Smile Когда контроллеры были дорогими

    Просили примеров, пожалуйста
    Во времена царя Гороха столкнулись с необходимостью расширения количества выходов контроллера. Вставить-добавить в корзину было нечего. Сочинили элементарный коммутатор. Электронщики напаяли релюшек с тиристорами, благо их было предостаточно.
    Внешняя ОС нужна была для однозначной интерпретации состояния коммутатора.
    От "клонирования" аналоговых выходов мы как-то уклонились, но если очень нужно, то можно
    Вложения Вложения

  3. #3823

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    э, может не в тему, но как запихнуть год-месяц-число в 2 байта ?

    20D1 - это 2013 год 1-е января
    213E - это уже 2013 20 апреля

    Данный стандарт вроде международный, на аппаратуре часто применяют в идентификаторах даты выпуска. Да и в компьютерах он применяется.
    Задача из 4-х байт сделать 2-х байтовую запись в данном формате.

    На входе 1-е 2 байта это год 2013, 2045 и т.д.
    2-е 2 байта месяц и число

    запись на входе 2013 01 01 - на выходе 20D1
    2013 04 20 - на выходе 213E
    Например, отсчет начать с 1.1.1970. Или еще попозже.
    Вспомним проблему 2K. У меня в хозяйстве несколько компов прекрасно пережили новогоднюю ночь 2000 года, т.к. ОС и CMOS было всё-равно что там в BIOS`е отсчет с 1900 года шел.

  4. #3824
    Пользователь
    Регистрация
    21.01.2011
    Адрес
    еБург
    Сообщений
    890

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    э, может не в тему, но как запихнуть год-месяц-число в 2 байта?
    можно сделать так как это было сделано ещё во времена DOSа, в FAT
    Последний раз редактировалось AI!; 20.04.2013 в 13:24.
    начинающий профессионал

  5. #3825
    Пользователь
    Регистрация
    21.01.2011
    Адрес
    еБург
    Сообщений
    890

    По умолчанию

    Цитата Сообщение от Асутупист Посмотреть сообщение
    всё-равно что там в BIOS`е отсчет с 1900 года шел.
    BIOS считал правильно, он отображал не правильно.

    а ПО не смотрит на то как BIOS отображает, только на то как считает.
    начинающий профессионал

  6. #3826
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,687

    По умолчанию

    зы, я не знаю как правильно сделать...
    Да, отсчет надо начинать, так как есть высокосные года и данная цифра в 2-х байтах будет меняться от этого.
    Собственно на вход функции, макроса надо подать 3-и цисла в десятичном формате, как это воспринимает человек, не сильно напрягая мозг с переводом в hex .
    пер.1 //год - 2013
    пер.2 // месяц - 5
    пер.3 // число - 27
    На выходе получить число в 16-ричном формате 217А (ну или какое там получится по факту) в принципе с 1900 года отсчитывать не надо, можно с 2000 или даже с 2010, ибо живем мы уже тут.

    Можно, и даже лучше, в качестве переменной для нач. расчета ввести переменную высокосного года. Ну например
    пер.4 // начальный год отсчета - 2005
    пер.5 // что это за год - 3 (0 высокосный, 1 - 1-й после высокосного, 2 - 2-й, 3 - 3-й)
    И считать уже от введенных переменных 4 и 5

    Можно усовершенствовать добавив переменный 6 и 7 - число и месяц начала отсчета. И добавив второй выход функции - разница

  7. #3827
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,254

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    зы, я не знаю как правильно сделать...
    Да, отсчет надо начинать, так как есть высокосные года и данная цифра в 2-х байтах будет меняться от этого.
    Собственно на вход функции, макроса надо подать 3-и цисла в десятичном формате, как это воспринимает человек, не сильно напрягая мозг с переводом в hex .
    пер.1 //год - 2013
    пер.2 // месяц - 5
    пер.3 // число - 27
    На выходе получить число в 16-ричном формате 217А (ну или какое там получится по факту) в принципе с 1900 года отсчитывать не надо, можно с 2000 или даже с 2010, ибо живем мы уже тут.

    Можно, и даже лучше, в качестве переменной для нач. расчета ввести переменную высокосного года. Ну например
    пер.4 // начальный год отсчета - 2005
    пер.5 // что это за год - 3 (0 высокосный, 1 - 1-й после высокосного, 2 - 2-й, 3 - 3-й)
    И считать уже от введенных переменных 4 и 5

    Можно усовершенствовать добавив переменный 6 и 7 - число и месяц начала отсчета. И добавив второй выход функции - разница
    Поднятая тема, очень смахивает на скрытую пропаганду моего предложения, вести отсчет в секундах, в моих то макросах учитывается и високосные года

  8. #3828
    Пользователь
    Регистрация
    21.01.2011
    Адрес
    еБург
    Сообщений
    890

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    зы, я не знаю как правильно сделать...
    есть много правильных решений.
    выбор за вами.

    я уже приводил ссылки на 2 варианта - UNIX-время и DOS-вариант используемый в FAT.
    ну и третий вариант - для каждого числа отдельная 8/16/32 битная переменная.
    Последний раз редактировалось AI!; 20.04.2013 в 20:05.
    начинающий профессионал

  9. #3829
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,687

    По умолчанию

    capzap откровенно говоря ничего скрытого, просто сейчас нахожусь на обучении по сименс контроллерам и там одна из функций возвращает год, число и месяц именно в 2-х байтах HEX форматах отсчитывая значение от 1990 года. Проблема ввести подобное число руками, потому что надо считать. Вот и подумал. а можно ли сделать подобный макрос на ПР110(114)

    идея то простая, указав макросу начальную точку отсчета, потом запрашивать разницу исодя из проойденного времени, выставлять дату времени и т.д.

  10. #3830
    Пользователь
    Регистрация
    21.01.2011
    Адрес
    еБург
    Сообщений
    890

    По умолчанию

    насколько я понимаю, макрос уже есть.
    он считает от 1970г

    разница между искомой датой и 1.1.1990 в летосчислении этого макроса = нужное вам летосчисление

    PS если тот макрос что ужеесть считает только в секундах, то просто надо ответ разделить на число секунд в сутках, и получим сутки.
    начинающий профессионал

Страница 383 из 498 ПерваяПервая ... 283333373381382383384385393433483 ... ПоследняяПоследняя

Ваши права

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