Hi, everybody! Please, help me in my question..
My problem: I have a module MVI56E-MCM (PLC: 1756-L75 ControlLogix5575, RSLogix 5000, v20). This module get analog signals by modbus from several devices. I have no way to check how my program will work because of the project is not yet completed and equipment is not delivered. But I don't know how MVI-module get analog signals, in which format! In 16# (IEEE-754) or in Decimal??
Slave device, for example this: (http://vlagomery-nefti.ru/vlagomer-nefti-vsn-2.html) (hygrometer crude oil) give to a module analog signal by modbus and write this parametr in MVI1.DATA.ReadData[0]. In which format MVI get this parametr? In HEX, or in DEC? Type of value "MVI1.DATA.ReadData[0]" is INT and this can't by canged! Do I need convert this value to Decimal in my program or NOT?
Please help me.
Привет всем! Пожалуйста, помогите мне с моим вопросом..
Моя проблема: У меня стоит модуль MVI56E-MCM (PLC: 1756-L75 ControlLogix5575, RSLogix 5000, v20). Этот модуль получает аналоговые сигналы по Модбасу от нескольких устройств. У меня нет возможности проверить как моя программа будет работать, так как проект еще не закончен, оборудование не поставлено. Но я не знаю как этот MVI-модуль получает эти аналоговые сигналы, в каком формате! В 16# (IEEE-754) или в Десятичном??
Slave устройство, например это: (http://vlagomery-nefti.ru/vlagomer-nefti-vsn-2.html) (влагомер сырой нефти) передает на модуль аналоговый сигнал по модбасу и записывает этот параметр в MVI1.DATA.ReadData[0]. Но в каком формате MVI получает этот параметр? В HEX или в DEC? Тип переменой "MVI1.DATA.ReadData[0]" INT ф он не может быть изменен! Нужно ли мне конвертировать эту переменную в Десятичный формат в моей программе или нет?
Пожалуйста помогите мне.
MVI56E-MCM. Modbus. Analog signals
-
- Posts: 80
- Joined: Wed Apr 30, 2014 6:16 pm
Re: MVI56E-MCM. Modbus. Analog signals
You are looking for the answer in the wrong place. The modbus module only get INT words because that is part of the standard.
You have to go to the instrument's datasheet and see how it's built the communications table. For example:
3000: Pressure (High)
3001: Pressure (Low)
This means that the instrument put a double integer (32bits) in two INT words. In your PLC you have to write the modbus command to point the instrument (device id), read two words (maybe using function 3) and write them in ReadCode(0) and ReadCode(1). Finally, your application has to put together both words to get a DINT.
Normally, vendors encapsulate decimal numbers in DINT using multipliers. For example: 50, 23 psi coulbe 5023 is you multiplied by 100 in the instrument (then you have to divide by 100 in the PLC and save the resut in a REAL). All of this information is in the instrumet's datasheet.
You have to go to the instrument's datasheet and see how it's built the communications table. For example:
3000: Pressure (High)
3001: Pressure (Low)
This means that the instrument put a double integer (32bits) in two INT words. In your PLC you have to write the modbus command to point the instrument (device id), read two words (maybe using function 3) and write them in ReadCode(0) and ReadCode(1). Finally, your application has to put together both words to get a DINT.
Normally, vendors encapsulate decimal numbers in DINT using multipliers. For example: 50, 23 psi coulbe 5023 is you multiplied by 100 in the instrument (then you have to divide by 100 in the PLC and save the resut in a REAL). All of this information is in the instrumet's datasheet.
-
- Posts: 12
- Joined: Tue Jul 02, 2013 5:37 pm