Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: ТРМ151

  1. #1

    По умолчанию ТРМ151

    Как при помощи Visual Basic 5.0 менять уставку в в трм 151 процессе работы если это вооще возможно. Люди поделитесь опытом и если возможно примерами.

  2. #2

    По умолчанию

    Общий алгоритм таков... качаете руководлство по прибору отсюда http://www.owen.ru/support/45592687, находите в неи параметр, который хотите менять, берете библиотеку для связи с приборами ОВЕН отсюда http://www.owen.ru/device/64305906 и пишите свой софт

  3. #3

    По умолчанию

    Спасибо за внимание к моему вопросу
    Все что вы написали я уже проделал и в результате уставка становится в 0 а конкретное значение задать не получается.

  4. #4

    По умолчанию

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


    а вы правда Vb5 используете, а не Vb6?

  5. #5

    По умолчанию

    1.как просили кусок кода
    адрес у прибора 24
    Case 24

    ' res2 = WriteStoredDotS(24, 0, "SP.lu", 25, -1)
    2. Я действительно использую Visual Basic 5.0
    Последний раз редактировалось Mihail; 15.10.2008 в 16:31.

  6. #6

    По умолчанию

    а что функция возвращает в res2?

  7. #7

    По умолчанию

    Ничего не возвращает и уставка становится равной 0
    Если вы знаете как это делать то просто пришлите пример я кода. Я со своей стороны поподробнее опешу результат испытания.

  8. #8

    По умолчанию

    Цитата Сообщение от Mihail Посмотреть сообщение
    Ничего не возвращает и уставка становится равной 0
    так не бывает. функция возвращает код ошибки. полагаю, что у вас это -104 (размер поля данных не соответствует ожидаемому).

    параметр SP.Lu задает уставку для программы\шага\ПС и имеет сквозную индексацию от 0 до 239. то есть вызывать функцию надо так:

    res2 = WriteStoredDotS(24, 0, "SP.lu", 25, 0)

    это для первого ПС на первом шаге первой программы.

    и, наконец, из-за некоторого непонимания между прибором и owen_io.dll далеко не все значения можно записать этой функцией. поэтому предлагаю вам использовать такую замену:

    Код:
    'Универсальная функция для обмена с устройствами по протоколу OWEN
    Private Declare Function OwenIO Lib "owen_io" _
    (ByVal adr As Long, _
      ByVal adr_type As Long, _
      ByVal is_read As Long, _
      ByVal cmd As String, _
      ByVal params As String, _
      param_sz As Long) _
     As Long
    
    Private Function WriteStoredDot(ByVal adr As Long, ByVal adr_type As Long, _
        ByVal cmd As String, ByVal Value As Single, ByVal index As Integer) As Long
        
        Dim intval As Integer
        Dim sign As Integer
        Dim dot As Integer
        Dim sz As Long
        Dim buf As String
        
        If Abs(Value) * 100 <= 65536 Then
            intval = CInt(Value * 100)
            dot = 32
        ElseIf Abs(Value) * 10 <= 65536 Then
            intval = CInt(Value * 10)
            dot = 16
        Else
            intval = CInt(Value)
            dot = 0
        End If
       
        If intval < 0 Then
            sign = 128
            intval = -intval
        Else
            sign = 0
        End If
    
        If (intval < 16) Then
            buf = Chr(sign + dot + intval)
            sz = 1
        ElseIf intval < 256 Then
            buf = Chr(sign + dot)
            buf = buf + Chr(intval)
            sz = 2
        Else
            If intval \ 256 < 16 Then
                buf = Chr(sign + dot + intval \ 256)
                buf = buf + Chr(intval And &HFF)
                sz = 2
            Else
                buf = Chr(sign + dot)
                buf = buf + Chr(intval \ 256)
                buf = buf + Chr(intval And &HFF)
                sz = 3
            End If
        End If
    
        If index <> -1 Then
            buf = buf + Chr(index \ 256)
            buf = buf + Chr(index And &HFF)
            sz = sz + 2
        End If
    
        buf = buf + Space(15)
    
        WriteStoredDot = OwenIO(adr, adr_type, 0, cmd, buf, sz)
    End Function
    Последний раз редактировалось Дмитрий Егоренков; 16.10.2008 в 13:49.

  9. #9

    По умолчанию

    Спасибо большое завтра протестирую и сообщу о результатах.
    Где найти подробное описание команды WriteStoreDot = OwenIO(adr, adr_type, 0, cmd, buf, sz)
    Дайте адрес или само описание а то не очень в программирование но мне очень хочется научится.
    Последний раз редактировалось Mihail; 16.10.2008 в 16:38.

  10. #10

    По умолчанию

    все функции owen_io.dll есть в описании библиотеки. описание входит в поставку или может быть отдельно скачано здесь - http://www.owen.ru/device/64305906.

    OwenIO() - универсальная функция для связи по протоколу овен. возвращаемое ей значение (код ошибки) присваивается в этой строке специальной переменной VB, название которой совпадает с именем функции. это значение станет кодом возврата функции WriteStoreDot().

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

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