Fellow PLC afficianados,
I'm having some difficulties reading registers from a Emerson Coriolis transmitter.
The following equipment is used:
Emerson Coriolis transmitter modell 2700.
http://www2.emersonprocess.com/fr-f...tters/1700-2700-transmitters/Pages/index.aspx
Siemens 315F PN/DP CPU
Siemens CP 341 with dongle.
***********************************
Configuration:
CP341
see attached image cp341 config.
Emerson micro motion 2700
Interface RS485 two wire.
Protocol Modbus Ascii
baudrate 9600
data bits 7
stop bits 1
parity even.
**********************************
PLC program:
FB7 p_rcv_rk, FB8 p_snd_rk
FC 51 Send:
called in OB1
calls fb8
CALL "P_SND_RK" , "SEND IDB"
SF :='S'
REQ :="SEND WORK DB".P_SND_RK_REQ
R :="SEND WORK DB".P_SND_RK_R
LADDR :="SEND WORK DB".P_SND_RK_WORK_LADDR
DB_NO :="SEND WORK DB".P_SND_RK_WORK_DB_NO
DBB_NO :="SEND WORK DB".P_SND_RK_WORK_DBB_NO
LEN :="SEND WORK DB".P_SND_RK_WORK_LEN
R_CPU_NO:=
R_TYP :=
R_NO :=
R_OFFSET:=
R_CF_BYT:=
R_CF_BIT:=
DONE :="SEND WORK DB".P_SND_RK_DONE
ERROR :="SEND WORK DB".P_SND_RK_ERROR
STATUS :="SEND WORK DB".P_SND_RK_WORK_STATUS
P_SND_RK_REQ is set when send done bit is set and 2 second pulse triggers.
this works Trx is blinking every 2 seconds.
P_SND_RK_WORK_LADDR is 256 according to HW config.
P_SND_RK_WORK_DB_NO is 52
P_SND_RK_WORK_DBB_NO is 12 for offset to char array.
"SEND WORK DB".P_SND_RK_WORK_LEN is 32 for char array.
DB 52
The message frame
The Message frame is built like this:
start = : (3A)
address = 1 (30)
function code = 3 (03)
register = 7 (37)
nr of registers = 1 (30)
error check = F4
carriage return = 0D
line feed = 0A
so the array of chars in db52 is 32 bit looking like this:
3A 3031 3033 30303037 30303031 F4 0D 0A
Using this setup im not getting a response from the transmitter. Any input on what I'm doing wrong?
I'm having some difficulties reading registers from a Emerson Coriolis transmitter.
The following equipment is used:
Emerson Coriolis transmitter modell 2700.
http://www2.emersonprocess.com/fr-f...tters/1700-2700-transmitters/Pages/index.aspx
Siemens 315F PN/DP CPU
Siemens CP 341 with dongle.
***********************************
Configuration:
CP341
see attached image cp341 config.
Emerson micro motion 2700
Interface RS485 two wire.
Protocol Modbus Ascii
baudrate 9600
data bits 7
stop bits 1
parity even.
**********************************
PLC program:
FB7 p_rcv_rk, FB8 p_snd_rk
FC 51 Send:
called in OB1
calls fb8
CALL "P_SND_RK" , "SEND IDB"
SF :='S'
REQ :="SEND WORK DB".P_SND_RK_REQ
R :="SEND WORK DB".P_SND_RK_R
LADDR :="SEND WORK DB".P_SND_RK_WORK_LADDR
DB_NO :="SEND WORK DB".P_SND_RK_WORK_DB_NO
DBB_NO :="SEND WORK DB".P_SND_RK_WORK_DBB_NO
LEN :="SEND WORK DB".P_SND_RK_WORK_LEN
R_CPU_NO:=
R_TYP :=
R_NO :=
R_OFFSET:=
R_CF_BYT:=
R_CF_BIT:=
DONE :="SEND WORK DB".P_SND_RK_DONE
ERROR :="SEND WORK DB".P_SND_RK_ERROR
STATUS :="SEND WORK DB".P_SND_RK_WORK_STATUS
P_SND_RK_REQ is set when send done bit is set and 2 second pulse triggers.
this works Trx is blinking every 2 seconds.
P_SND_RK_WORK_LADDR is 256 according to HW config.
P_SND_RK_WORK_DB_NO is 52
P_SND_RK_WORK_DBB_NO is 12 for offset to char array.
"SEND WORK DB".P_SND_RK_WORK_LEN is 32 for char array.
DB 52
The message frame
The Message frame is built like this:
start = : (3A)
address = 1 (30)
function code = 3 (03)
register = 7 (37)
nr of registers = 1 (30)
error check = F4
carriage return = 0D
line feed = 0A
so the array of chars in db52 is 32 bit looking like this:
3A 3031 3033 30303037 30303031 F4 0D 0A
Using this setup im not getting a response from the transmitter. Any input on what I'm doing wrong?
Last edited: