TODOPIC
FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: Gokuden en 06 de Noviembre de 2005, 20:22:00
-
buenas. necesito una ayudadita aqui porfavor..
estoy realizando una automatización en un central azucarero el cual incorpora monitorear diferentes variables en los molinos y centrifugas de azucar en un software escada llamado inusoft y impace. ya los hice en plc y cd600.. pero me falto meter la temperatura de las centrifugas en el software.. todo va por una red 485 por modbus..
se acabo el presupuesto y no hay para adquirir modulos analogicos para los plc. y como estoy de pasantia y me toco ese proyecto necesito terminarlo. lo estoy haciendo con pic y conectandome a la red 485 y modbus..
no toco el C. solo asm y picbasic. lei los otros post y me fui a la web del amigo palaconcurso.. me baje el pdf de modbus over serial line.. estoy trabajando con la funcion 3 de modbus..
el pc me manda a mi los siguientes datos, esclavo = 02h, funcion = 03h, 3 datos raros que al parecer no los uso en el esclavo que son = 00h 04h 00h, y dos de crc..
yo en el pic me quedo esperando por el 2.. pero si si es 2, espero el 3. y asi susecisamente. no solo pregunto por el 2 para responder porque en la red 485 todos estan mandando datos y si por casualidad alguien manda un 2, el pic pensarà que soy yo y tengo que responder..
ese no es el problema porque en el LOG del Inusoft veo que yo respondo, el problema es que me da CRC incorrect.. no logro hacer eso bien. calcular el CRC..
segui los pasos que estan en el pdf pero algo hice mal.. no se que es...
alguien lo ha hecho antes , (no es C porfavor)???
-
mira sinceramente soy nuevo en esto, voy a hacer algo similar y voy comenzando, buscando informacion en la red encontre este proyecto, no se si te sirva
http://www.modbus.pl/
y estos datos que te han de ser de gran ayuda
http://www.modbus.org/specs.php
-
aaaaaaaa
si encuentras informacion por favor subela
-
Hola:
esta es una rutina de calculo de crc hecha en basic:
;calculo de crc
Poly con $8408 " CRC polynomial
I VAR BYTE
pData VAR BYTE
X VAR BYTE
CRC VAR WORD
C_Data VAR WORD
VALor var BYTE[3] " Holds 3 values passed to CRC routiine
VALor[0] = $AA
VALor[1] = $05
VALor[2] = $01
Begin:
CRC = $FFFF
for X = 0 TO 2
pData = VALor[X]
gosub Calc_CRC
next X
CRC = ~CRC
hserout [IHEX CRC.LowByte,IHEX CRC.HighByte,13,10]
pause 1000
goto Begin
Calc_CRC:
C_Data = $00FF & pData
CRC = CRC ^ C_Data
for I = 0 to 7
if CRC.Bit0 = 1 then
CRC = (CRC >> 1) ^ Poly
else
CRC = CRC >> 1
endif
next I
return
espero te sirva
Jorge