西门子plc
德国西门子(siemens)公司生产的可编程序控制器在我国的应用也相当广泛,在冶金、化工、印刷生产线等领域都有应用。西门子(siemens)公司的plc产品包括logo、s7-200、s7-1200、s7-300、s7-400等。 西门子s7系列plc体积小、速度快、标准化,具有网络通信能力,功能更强,可靠性高。s7系列plc产品可分为微型plc(如s7-200),小规模性能要求的plc(如s7-300)和中、高性能要求的plc(如s7-400)等。
crc校验
rc即循环冗余校验码(cyclic redundancy check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(crc)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
工作原理
循环冗余校验码(crc)的基本原理是:在k位信息码后再拼接r位的校验码,整个编码长度为n位,因此,这种编码也叫(n,k)码。对于一个给定的(n,k)码,可以证明存在一个最高次幂为n-k=r的多项式g(x)。根据g(x)可以生成k位信息的校验码,而g(x)叫做这个crc码的生成多项式。
校验码的具体生成过程为:假设要发送的信息用多项式c(x)表示,将c(x)左移r位(可表示成c(x)*2r),这样c(x)的右边就会空出r位,这就是校验码的位置。用 c(x)*2r 除以生成多项式g(x)得到的余数就是校验码。任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。
plc的crc校验程序
方法1:计算法
主程序:ob1
network 1
ld m0.0
eu
call sbr0, ac0 /
incb vb0
incb vb0
xmt 发送接收缓冲区, 0
network 2
ld m0.1
eu
call sbr0, ac0
aw《》 ac0, +0
movb 1, ac0
sbr_0:sbr0
var_output
crc:int;
end_var
var
count:int;
ptr:dword;
end_var
begin
network 1
// movw ac0, *#ptr 用于发送,直接将crc写入发送缓冲区,然后mmodbusbufr加2。
//
ld sm0.0
movw 16#ffff, ac0
bti vb0, lw2
movd &vb0, ld4
incd ld4
for ac2, +1, lw2
xorb *ld4, ac0
for ac1, +1, +8
srw ac0, 1
ld sm1.1
xorw 16#a001, ac0
next
ld sm0.0
incd ld4
next
network 2
// movw ac0, #crc 用于接收
// 如果程序无须接收,则可删除这一行,删除crc这个out参数。
//
//
//
// movw ac0, *#ptr 用于发送
// 直接将crc写入发送缓冲区,然后mmodbusbufr加2。
// 如果程序无须发送,则可删除这一行。
ld sm0.0
swap ac0
movw ac0, lw0
movw ac0, *ld4
network 3 // 网络标题
// 网络注释
end_subroutine_block
interrupt_block int_0:int0
title=中断程序注释
begin
network 1 // 网络标题
// 网络注释
end_interrupt_block
方法2:查表法
organization_block 主程序:ob1
title=和方法1不同的是多了个初始化,简化了crc计算过程,缩短了时间。
// 调用方法和方法1一样
begin
network 1 // 网络标题
// 初始化crc表,需要512个字节。vb2256---------vb2767
ld sm0.1
call sbr0
network 2 // 网络标题
// 发送
ld m0.0
eu
call sbr1, ac0 //ac0在此无用
incb vb2000
incb vb2000
xmt 发送接收缓冲区, 0
network 3
// 接收完成后检查接收的数据对错,如果计算结果为0,则说明传输正确。
ld m0.1
eu
call sbr1, ac0
aw《》 ac0, +0
movb 1, ac0
end_organization_block
subroutine_block sbr_0:sbr0
title=子程序注释
var
index1:int;
index2:int;
end_var
begin
network 1
ld sm0.0
movd &vb2256, ac3
movd +0, ac2
for lw0, +1, +256
movw ac2, ac0
for lw2, +1, +8
srw ac0, 1
network 2
ld sm1.1
xorw 16#a001, ac0
network 3
next
network 4
ld sm0.0
movw ac0, *ac3
incw ac2
+i +2, ac3
network 5
next
network 6 // 网络标题
// 网络注释
end_subroutine_block
subroutine_block sbr_1:sbr1
title=子程序注释
var_output
crc:int;
end_var
var
count:int;
ptr:dword;
end_var
begin
network 1
ld sm0.0
bti vb2000, lw2
movd &vb2000, ld4
incd ld4
xord ac0, ac0
movd 16#ffff, ac2
for ac1, +1, lw2
movb *ld4, ac0
xorw ac2, ac0
andw 16#ff, ac0
slw ac0, 1
movd &vb2256, ac3
+i ac0, ac3
swap ac2
andw 16#ff, ac2
xorw *ac3, ac2
incd ld4
network 2
next
network 3
ld sm0.0
swap ac2
movw ac2, lw0
movw ac2, *ld4
network 4 // 网络标题
// 网络注释
end_subroutine_block
interrupt_block int_0:int0
title=中断程序注释
begin
network 1 // 网络标题
// 网络注释
end_interrupt_block
涡轮流量计安装时容易出现的问题
西门子全交流变频驱动系统在电厂卸船机上应用及其速度同步与电流
盘点2019年五大未来技术趋势
一文详解外凸与内凸法规
荣耀V9好在哪里?有什么亮点?值不值得买?
西门子plc的crc校验程序
几种常用Reader输入流的使用方式
南方电网海南公司启动电网提升三年行动计划 加速推进海南电网“脱胎换骨”
2018电视机顶盒十大品牌,揭秘最值得入手的十大电视盒子
疫情之下医疗物资不够用,3D打印技术来帮忙
放弃使用3.5mm耳机口改用Type-C接口的原因
TLE9879汽车三相马达驱动解决方案
GSA数据显示:全球80家运营商部署符合3GPP标准的5G技术
新型室内分布系统WFDS应用与分析
MIMO天线增益不同引起的吞吐量波动
如何在IC封装中分析并解决与具体引线键合相关的设计问题?
2018年全球智能手机市场总结及2019年趋势展望 – 五大特点
卖爆了!检测设备上的传感器严重短缺
中国引力波探测首次得到五个激光反射器的信号
采购一体成型电感你所要知道的五大要点