




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档-下载后可编辑在变电站用交流配电盘上S7—200PLC得到的运用贵阳市南供电局110kV观水变电站是贵阳市南明区的主要供电站,变电站用配电盘运行的稳定可靠性直接影响到向整个区大部分的生产、生活供电,原用的配电盘系统功能简单、自动化程度不高、控制方式落后,对供电局实现无人值守变电站和配网自动化带来很多不变,也不能时刻保证城区电网供电的电源质量。
设备改造中使用了西门子公司的224XP-CPU、TP270人机界面、EM221数字量输入模块、EM222数字量输出模块和CP243-1以太网通讯模块。
图1企业照片
图2系统结构图
型号
数量
备注
224XP
1
AC/DC/R/Port×2
EM221×8
4
DC24V
EM222×8
2
DC24V
243-1
1
TP270
1
10寸
GKR-02
2
DIRISAP
1
OF
40
DC24V
CD630A
2
MICRO
1
NS200A
2
NS125A
6
C65/63A
28
24V/2.5A
1
MicroWin4.0
1
ProTools/Pro6.0
1
图3应用中的画面
在设计过程中的问题就是如何将智能仪表的数据通过S7-200PLC读到TP270上。本系统中的智能仪表用的是MODBUS_RUT协议,只能做从站使用,也就是说S7-200PLC必须做主站去读取仪表的数据,在现行的资料中只有S7--200PLC做MODBUS从站的资料,要S7-200PLC做主站就只有自己编写用自由口做MODBUS主站的程序,由于仪表提供的数据较多且数据地,,,,H-CN主站的程序,由于仪表提供的数据较多且数据地址分散,再加上要求每秒刷新,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验,在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:(OB1主要功能为初始化端口为自由口,初始化发送和接收的数据格式,设定轮询时间,轮询和中断连接;SBR5和SBR6做发送和接收数据的CRC校验,CRC检验主要通过字节异或循环,移位循环和公式异或做发送数据的CRC校验;中断1为接收数据;中断2对接收CRC校验结果验证)
OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306
MOVDVB1200,VD1400
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
经过改造的设备自2022年7月运行以来,系统稳定、功能强大、操作简单,赢得了用户的一致好评,为变电站的无人值守和变电站的安全运行提供了有利保障。
,址分散,再加上要求每秒刷新,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验,在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:
OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306,
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
经过改造的设备自2022年7月运行以来,系统稳定、功能强大、操作简单,赢得了用户的一致好评,为变电站的无人值守和变电站的安全运行提供了有利保障。
,,,H-CN主站的程序,由于仪表提供的数据较多且数据地址分散,再加上要求每秒刷新,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验,在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:(OB1主要功能为初始化端口为自由口,初始化发送和接收的数据格式,设定轮询时间,轮询和中断连接;SBR5和SBR6做发送和接收数据的CRC校验,CRC检验主要通过字节异或循环,移位循环和公式异或做发送数据的CRC校验;中断1为接收数据;中断2对接收CRC校验结果验证)
OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306
MOVDVB1200,VD1400
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
地址分散,再加上要求每秒刷新,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验,在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:
OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0,;n,bsp;设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306
MOVDVB1200,VD1400
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
经过改造的设备自2022年7月运行以来,系统稳定、功能强大、操作简单,赢得了用户的一致好评,为变电站的无人值守和变电站的安全运行提供了有利保障。
,,,,H-CN主站的程序,由于仪表提供的数据较多且数据地址分散,再加上要求每秒刷新,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验,在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:(OB1主要功能为初始化端口为自由口,初始化发送和接收的数据格式,设定轮询时间,轮询和中断连接;SBR5和SBR6做发送和接收数据的CRC校验,CRC检验主要通过字节异或循环,移位循环和公式异或做发送数据的CRC校验;中断1为接收数据;中断2对接收CRC校验结果验证)
OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306
MOVDVB1200,VD1400
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
经过改造的设备自2022年7月运行以来,系统稳定、功能强大、操作简单,赢得了用户的一致好评,为变电站的无人值守和变电站的安全运行提供了有利保障。
,red;mso-bidi-font-size:10.5pt"OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306
MOVDVB1200,VD1400
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
经过改造的设备自2022年7月运行以来,系统稳定、功能强大、操作简单,赢得了用户的一致好评,为变电站的无人值守和变电站的安全运行提供了有利保障。
,址分散,再加上要求每秒刷新,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验,在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:
OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306,
MOVDVB1200,VD1400
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
经过改造的设备自2022年7月运行以来,系统稳定、功能强大、操作简单,赢得了用户的一致好评,为变电站的无人值守和变电站的安全运行提供了有利保障。
,,,H-CN主站的程序,由于仪表提供的数据较多且数据地址分散,再加上要求每秒刷新,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验,在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:(OB1主要功能为初始化端口为自由口,初始化发送和接收的数据格式,设定轮询时间,轮询和中断连接;SBR5和SBR6做发送和接收数据的CRC校验,CRC检验主要通过字节异或循环,移位循环和公式异或做发送数据的CRC校验;中断1为接收数据;中断2对接收CRC校验结果验证)
OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306
MOVDVB1200,VD1400
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
地址分散,再加上要求每秒刷新,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验,在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:
OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB,nb,sp;16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0,;设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306
MOVDVB1200,VD1400
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
经过改造的设备自2022年7月运行以来,系统稳定、功能强大、操作简单,赢得了用户的一致好评,为变电站的无人值守和变电站的安全运行提供了有利保障。
,,,,H-CN主站的程序,由于仪表提供的数据较多且数据地址分散,再加上要求每秒刷新,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验,在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:(OB1主要功能为初始化端口为自由口,初始化发送和接收的数据格式,设定轮询时间,轮询和中断连接;SBR5和SBR6做发送和接收数据的CRC校验,CRC检验主要通过字节异或循环,移位循环和公式异或做发送数据的CRC校验;中断1为接收数据;中断2对接收CRC校验结果验证)
OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306
MOVDVB1200,VD1400
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
经过改造的设备自2022年7月运行以来,系统稳定、功能强大、操作简单,赢得了用户的一致好评,为变电站的无人值守和变电站的安全运行提供了有利保障。
,"class=MsoNormal2.0?mso-char-indent-count:char;LAYOUT-GRID-MODE:21pt;TEXT-INDENT:150%;LINE-HEIGHT:OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306
MOVDVB1200,VD1400
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDAlways_On:SM0.0CRC16字传递
MOVBVB1307,VB1100
MOVBVB1306,VB1101
INT1
LDAlways_On:SM0.0
RCVVB2200,0
INT2
LDSM86.7
OSM86.6
OSM86.0
CRETI
LDAlways_On:SM0.0
MOVDVD2204,VD1204
LDAlways_On:SM0.0
CALLCRC16:SBR6
LDWVW1100,VW2208
CRETI
LDW=16#0,C1
MOVDVD2204,VD2500
LDW=16#1,C1
MOVDVD2204,VD2504
…………
经过改造的设备自2022年7月运行以来,系统稳定、功能强大、操作简单,赢得了用户的一致好评,为变电站的无人值守和变电站的安全运行提供了有利保障。
,址分散,再加上要求每秒刷新,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验,在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:
OB1
LDSM0.1初始化端口
MOVB16#09,SMB30
MOVB16#9C,SMB87
MOVW+150,SMW92
MOVW+0,SMW90
MOVB50,SMB94
LDSM0.1初始化发送数据
MOVB16#08,VB2100
MOVB16#05,VB2101
MOVB16#03,VB2102
MOVB16#03,VB2103
MOVB16#0,VB2104
MOVB16#0,VB2105
MOVB16#02,VB2106
LDSM0.1初始化接收数据
MOVB16#09,VB1200
MOVB16#05,VB1201
MOVB16#03,VB1202
MOVB16#04,VB1203
LDSM0.0设定轮询时间
ANT96
TONT32,+150
LDSM0.0
AT32
TONT96,+150
LDT32
EU
LDC1
CTUC1,16#10
LDSM0.0
AW=16#0,C1
EU
MOVW16#0300,VW2103发送轮询数据
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#1,C1
EU
MOVW16#0302,VW2103
CALLCRC:SBR5
XMTVB2100,0
LDSM0.0
AW=16#02,C1
EU
MOVW16#0304,VW2103
CALLCRC:SBR5
XMTVB2100,0
…………
LDSM0.7中断连接
ATCHINT_0:INT0,9
ATCHINT_1:INT1,23
ENI
SRB6(SBR5同SBR6)
LDAlways_On:SM0.0读出数据长度,初始化CRC字
MOVBVB1200,VB1301
MOVWVW1300,VW1302
-I16#02,VW1302
MOVW16#FFFF,VW1306,
FORVW1304,16#1,VW1302
LDAlways_On:SM0.0字节异或循环
+D16#1,VD1400
MOVB*VD1400,VB1410
XORBVB1410,VB1307
FORVW1310,16#1,16#08
LDAlways_On:SM0.0移位循环
MOVWVW1306,VW1420
SRWVW1306,1
LDSM1.1公式异或
XORW16#A001,VW1306
NEXT
NEXT
LDA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人项目包干合同标准文本
- 公司住房借款合同标准文本
- 公司物品赠与合同标准文本
- 中介代售商品房合同标准文本
- 关于长期合同标准文本
- 充抵车库合同样本
- 个人聘请司机合同标准文本
- 企业贷款购车合同标准文本
- 2003园林施工合同样本
- 买材料简易合同标准文本
- 煤矿供电保护接地知识的培训
- 上海交大科技成果转移转化实践简版
- 简单的设计合同(3篇)2023年
- 《阿Q正传》《边城》比较阅读课件28张 统编版高中语文选择性必修下册
- 2023年小学语文教师学科专业知识考试试题及答案
- GB/T 7702.5-1997煤质颗粒活性炭试验方法水容量的测定
- GB/T 17747.3-2011天然气压缩因子的计算第3部分:用物性值进行计算
- 变电站一键顺控操作过程常见异常与处置措施探讨
- 六年级下册语文人教部编版课件综合性学习:奋斗的历程(课件)
- 人工呼吸的三种方式和操作方法课件
- 项目基坑坍塌事故专项应急预案桌面演练脚本
评论
0/150
提交评论