我是第一次用西门子的300的开发环境,现在又个项目是CP340实现MODBUS通信,我知道难度比较大,主要是300的我第一次用,通讯之前都是用小型PLC做的,我知道 CP340要自己写CRC校验,通讯帧格式也要自己写,所以我要提前准备,不然现场我真的要冒汗了。我想问,下面的这段程序,我怎么弄到开发环境里呀,那位大侠能帮我写到300系统里,给成附件的形式让我看看吗?我都搞不到程序里去 见笑了,西门子的FB FC 这些比较陌生,之前只是看过些书,希望哪位好心人帮我转下,给个附件形式
FUNCTION_BLOCK "WCRC_FB"
TITLE =
VERSION : 0.1
VAR_INPUT
db_no : INT ;
dbb_no : INT ;
byte_len : INT ;
END_VAR
VAR_OUTPUT
wcrc : WORD ;
END_VAR
VAR
old_wcrc : WORD ;
c : BYTE ;
j : INT ;
END_VAR
VAR_TEMP
db_no1 : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L #db_no
T #db_no1
OPN DB [#db_no1]
// 发送指令的起始字节放在指针AR1中
L #dbb_no
LAR1
//初始化old_wcrc=0xffff;
L W#16#FFFF
T #old_wcrc
// 进入大循环,byte_len:需要计算CRC的字节个数
loop: L #byte_len
L 0
<=I
JC end
//c:字节
L DBB [AR1,P#0.0]
T #c
//字节与crc寄存器异或
L #old_wcrc
L #c
XOW
T #old_wcrc
//j:位个数
L 0
T #j
//判断一个字节是否计算完,j是否为8
a: L #j
L 8
>=I
JC b
//得到lsb位
L #old_wcrc
L W#16#1
AW
//判断lsb,为1:右移一位;为0:右移一位与1021异或。位指针加1
JZ c
L #old_wcrc
SRW 1
L W#16#1021
XOW
T #old_wcrc
c: L #old_wcrc
SRW 1
T #old_wcrc
L 1
L #j
+I
T #j
JU a
b: L -1
L #byte_len
+I
T #byte_len
//指向下一个字节
+AR1 P#1.0
//输出最终的CRC值
JU loop
end: L #old_wcrc
T #wcrc
BE
END_FUNCTION_BLOCK