




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自由口通讯协议详细注解西门子PLC的编程风格本人太喜欢了,用了国产仿西门子的都感觉缺这缺那的,很不爽,等吧。希望国内PLC工程师多多努力。对于西门子的东西,也有遗憾的地,如PPI协议人家不公开,MODBUS有库,好象要购买。这篇文是组态王SIMATIC S7-200系列PLC之间的通讯协议的本人读书注解与心得,从中也可学到作者的思路,学习PLC先从通信协议入手,为何不妥呢?与初学者切磋与共享这个协议。 锤子此协议为亚控公司为实现组态王与德国西门子公司SIMATIC S7-200系列PLC之间的通讯而制上位机从PLC中读数据:上位机发送读指令:BYTE1: PLC地址 (1255)BYTE2: 0x00 (读指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(132 n)BYTE7: 数据类型(1,2,4 m)BYTE8-11: 保留BYTE12: 校验字节 PLC应答:读成功时:BYTE1: PLC地址 (1255)BYTE2: 0x00 (读指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(132 n)BYTE7: 数据类型(1,2,4 m)BYTE8-n*m+8: 数据BYTEn*m+9: 校验字节 读失败时:BYTE1: PLC地址 (1255)BYTE2: 0x80 (读指令失败代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(132 n)BYTE7: 数据类型(1,2,4 m)BYTE8: 0x01(校验错代码)BYTE9-11: 保留BYTE12: 校验字节上位机向PLC中写入数据:上位机发送写指令:BYTE1: PLC地址 (1255)BYTE2: 0x01 (写指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1 n)BYTE7: 数据类型(1,2,4 m)BYTE8-11: 写入数据BYTE12: 校验字节 PLC应答: 写成功时:BYTE1: PLC地址 (1255)BYTE2: 0x01 (写指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1 n)BYTE7: 数据类型(1,2,4 m)BYTE8-11: 保留BYTE12: 校验字节写失败时:BYTE1: PLC地址 (1255)BYTE2: 0x81 (写指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1 n)BYTE7: 数据类型(1,2,4 m)BYTE8: 0x01(校验错代码)BYTE9-11: 保留BYTE12: 校验字节*S7200自由口通讯程序电台S7200自由口通讯程序亚控公司修改时间:2000.10.2王培哲MAINLD SM0.1CALL SBR_0:SBR0 /初始化子程序LD SM0.7= SM30.0SBR_0:初始化子程序SUBROUTINE COMMENTS Press F1 for help and example programLD SM0.0MOVW +2, VW8 /PLC自由口地址,此处每台机器需设不同的地址LD SM0.0MOVB 9, SMB30 /通讯参数,波特率9600,自由口通讯MOVD &VB100, VD40/ VB100:接收缓冲区的首字节MOVW +10, VW54/ VW54:存放发送数据按字节异或校验的次数,10次校验完已/接收了11个字节了,最后一个12号字节是校验。MOVB 12, VB150MOVB VB9, VB151/ VB151赋以本机地址MOVD &VB151, VD60/ 发送首地址VD60赋以地址MOVB 6, SMB34ATCH INT_0:INT0, 10ATCH INT_1:INT1, 8ENIINT_0:/用作初始化几个参数。每次接受新一帧数据前调用,完了就进入INT_2(接受地址,/并判断,)LD SM0.0DTCH 10MOVD VD40, VD46/初始化 VD46为VD40MOVW +10, VW44/初始化异或校验的次数MOVW +10, VW54/初始化异或校验的次数ATCH INT_2:INT2, 8 /接受中断起用服务程序INT2INT_1:/延时转向INT0/网络正常时这里应该很少调用LD SM0.0MOVB 5, SMB34ATCH INT_0:INT0, 10INT_2:接受地址,并判断LDB= SMB2, VB9 /地址和本机相符MOVW VW8, AC0/ AC0这时存入的是本机地址MOVB 255, SMB34/255MS的长延时监控,如超过将做异常处理回到初始化重新再来接/收,要知道传送一个字节是毫秒级的。就是200字节左右看做异常ATCH INT_3:INT3, 8 /起用中断服务INT3,接受包ATCH INT_5:INT5, 10 /起用延时监控服务INT5CRETILDB= SMB2, VB9 /地址和本机不符NOTATCH INT_0:INT0, 10 /返回中断入口ATCH INT_1:INT1, 8INT_3:/主接受服务程序,同时做异或校验LD SM0.0XORW SMW1, AC0/ AC0上次已存入本机地址,这次做第一次异或,记住异或的次数MOVB SMB2, *VD46/ 指针VD46这时指向VB100,即将读写代码存入VB100INCD VD46/指针VD46指向VB101DECW VW44/异或的次数VW44-1=10-1=9LD SM1.0 /完成预定的接受字节数/10次异或完就接收11/个字节,一桢是12个字节,第12字节是校验位,ATCH INT_4:INT4, 8 /起用通讯数据处理主程序/第12字节交INT4比较/处理INT4:/通讯数据处理主服务程序LD SM0.0BMB VB100, VB152, 6/接受报头拷贝到发送报头/ VB100存读写代码,VB151赋以本/机地址,VB152存读写代码LD SM0.0DTCH 8 /暂停响应接受中断INCD VD46/ VD46这时指向VB111,MOVB SMB2, *VD46/校验位存入*VD46即VB111XORW SMW1, AC0/ AC0是前11个字节的异或ANDW 16#FF, AC0 /检查异或校验LDN SM1.0 /异或校验错误MOVB VB100, AC0/ VB100存读写代码MOVB 16#80, AC1ORW AC0, AC1/这步运算,如读AC1=0X80,如写AC1=0X81MOVB AC1, VB152/ VB152存入发送帧的BYTE2,VB151是BYTE1:本机地址MOVB 16#1, VB158/ VB158:BYTE8: 0x01(校验错代码)MOVW +10, VW54/10次异或的次数JMP 3 /校验错误,向PC返回错误码LD SM1.0 /异或正确/两数相同异或结果=0,很好理解MOVW +4, VW34ATCH INT_8:INT8, 8 /起用服务程序INT8响应接受中断,接受包尾LD SM0.0 /数据处理LPSAB= VB101, 0 /V寄存器/ VB101数据类型MOVD &VB0, VD50/ VB0作为基寄存器LRDAB= VB101, 1 /Q寄存器/ VB101数据类型MOVD &QB0, VD50/ QB0作为基寄存器LRDAB= VB101, 2 /I寄存器/ VB101数据类型MOVD &IB0, VD50/ IB0作为基寄存器LRDMOVW +0, VW56/VW56,VW58组成VD56,好理解LRDMOVW VW102, VW58/ VW102:BYTE4-5: 起始偏移地址(0-9999)LPP+D VD56, VD50/VW56,VW58组成VD56,好理解LDB= VB100, 0 /读 /PLC向PC发送数据MOVB VB104, AC0/ VB104:BYTE6: 数据个数(132 n)MOVB VB105, AC1/VB105:BYTE7: 数据类型(1,2,4 m)MUL AC1, AC0BMB *VD50, VB158, AC0/VB158开始存数据,AC0个数+I +8, AC0MOVW AC0, VW54-I +2, VW54MOVB AC0, VB150LDB= VB100, 1 /写 /PLC从PC接受数据BMB VB106, *VD50, VB105MOVW +10, VW54MOVB 12, VB150LBL 3LD SM0.0MOVB 50, SMB34/50MS后发送,是否长了点?ATCH INT_6:INT6, 10 /延时起用INT6,置位发送电平MOVD VD60, VD66/ 发送首地址VD60赋以地址vb151MOVB *VD66, AC0MOVB 0, VB250 /发送数据异或校验次数监视LBL 0 /循环求发送数据异或校验/发送数据异或校验LD SM0.0/循环求发送数据异或校验INCD VD66/循环求发送数据异或校验MOVB *VD66, AC1/循环求发送数据异或校验XORW AC1, AC0/循环求发送数据异或校验INCB VB250/循环求发送数据异或校验LDB= VB250, 150 /若校验次数超过150次,退出MOVB 6, SMB34ATCH INT_7:INT7, 10CRETILD SM0.0/求发送数据异或校验DECW VW54/求发送数据异或校验LDN SM1.0 /若发送校验未完成预定的次数,跳转到循环0JMP 0/求发送数据异或校验LD SM0.0INCD VD66MOVB AC0, *VD66/计算异或校验在AC0,然后存入*VD66,这时*VD66指向BETE12LD SM0.0MOVB VB150, AC0/ VB150存字节总数,这是XMT指令要求的格式+I +4, AC0/为什么加4?MOVB AC0, VB150INT_5:接受时间监控服务程序LD SM0.0MOVD VD40, VD46MOVW +10, VW44MOVB 5, SMB34ATCH INT_1:INT1, 8ATCH INT_0:INT0, 10INT_6:发送数据LD SM0.0MOVB 250, SMB34ATCH IN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年云南省昭通市镇雄县三校高二下学期第二次月考语文试题
- 北京市第101中学2017-2018学年高一上学期期中考试化学试题
- 2025年全面租赁车辆合同
- 2025年高压电工考试题库:高压设备故障诊断与设备优化试题
- 一年级语文口语表达能力测试题
- 企业数据保护及服务外包协议
- 在线购物平台对美容产品购买行为的改变-洞察及研究
- 教师招聘考试题库与模拟试题
- 微型机器人生物检测-洞察及研究
- 矿物材料检测技术优化-洞察及研究
- 2025年百里香酚行业研究报告及未来行业发展趋势预测
- 2025年网络信息安全技术岗位专业知识试卷及答案解析
- 2025四川广元市园区建设投资集团有限公司招聘13人考试模拟试题及答案解析
- 检验员技能测试题及答案
- 化学原电池教学课件
- 2025四川省水电投资经营集团有限公司所属电力公司员工招聘6人考试参考试题及答案解析
- 新疆劳动就业白皮书课件
- 视觉障碍老人护理指南
- 宠物医院建设方案(3篇)
- 2025年中学生法治素养竞赛题库及答案
- 《“高效办成一件事”2025年度第二批重点事项清单》知识解读
评论
0/150
提交评论