收藏 分享(赏)

S7200PLC自由口编程泣血心得.doc

上传人:weiwoduzun 文档编号:2681353 上传时间:2018-09-25 格式:DOC 页数:13 大小:200.50KB
下载 相关 举报
S7200PLC自由口编程泣血心得.doc_第1页
第1页 / 共13页
S7200PLC自由口编程泣血心得.doc_第2页
第2页 / 共13页
S7200PLC自由口编程泣血心得.doc_第3页
第3页 / 共13页
S7200PLC自由口编程泣血心得.doc_第4页
第4页 / 共13页
S7200PLC自由口编程泣血心得.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、S7200PLC 编程心得一、S7200 同 485 质量流量控制器( MFC)地脚接法序号 S7200 地脚 (1 号)MFC 设备地脚 (2 号)MFC 设备地脚1 3 号针(B-) 4,(A+) 4,(A+)2 8 号针 (A+) 3, (B-) 3, (B-)注:S7200 的发送同 485 设备的接收相连,S7200 的接收同 485 设备发送相连。二、S7200 同 485 设备的通讯调试程序200PLC 和电脑用 PPI 电缆连接,关闭 200 编程软件。200 和串口软件通讯不需要地址,一般串口软件是什么数据都收。1 PLC 给串口软件发数据,可用下面程序数据块:vb101 2

2、5vb102 26vb103 27vb104 28vb105 29程序块:网络 1LD SM0.1MOVB 9, SMB30MOVB 5, VB100网络 2LD SM4.5XMT VB100, 0串口软件设置为:无校验,每个字符 8 个数据位,波特率 9600,设置正确的端口号这样串口软件就可以收到 25 26 27 28 29 ,而且能收到很多。2 用串口软件给 PLC 发数据 ,串口软件设置同上,代码如下网络 1LD SM0.1MOVB 9, SMB30MOVB 156, SMB87MOVW 0, SMW90MOVW 200, SMW92MOVB 200, SMB94网络 2LDB, S

3、MB88MOVW +5, SMW92MOVB 255, SMB94ATCH INT_0, 23ATCH INT_1, 9ENI将上面这段程序添加到主程序中,对 PLC 的端口 0 进行初始化。这段程序以 SM0.1 为触发条件,每当 PLC 进入 RUN 状态时执行一次。MOVB 9, SMB30 该指令将端口 0 设置为 9600,8,N,1 自由口方式MOVB 2#11000100, SMB87 SM87.7=1 允许端口 0 接收字符SM87.6=1 当检测到与 SMB88 中相同的字符时开始接收,并将该字符当作信息的首字符SM87.5=0 不检测信息的结束字符SM87.4=0 不检测端

4、口空闲状态SM87.3=0 定时器为内部字符定时器,意思是 PLC 开始接收信息后(检测到起始字符),每接收到一个字符就启动定时器,当定时器到达在 SMW92 中设置的时间后,即认为定时器超时SM87.2=1 允许在定时器超时后停止接收,并产生接收完成中断SM87.1=0 忽略 Break 条件MOVB , SMB88 设置接收起始字符为 ASCII 码的”,当 TC35 收到AT+CMGS=后将返回”,当 PLC 收到”后发送 PDU 数据包MOVW +5, SMW92 设置定时器超时时间为 5 msMOVB 255, SMB94 设置 RCV 指令接收的最大字符数位 255ATCH INT

5、_0, 23 中断时间 23 为端口 0 接收完成中断,将该中断连接到中断 0ATCH INT_1, 9 中断时间 9 为端口 0 发送完成中断,将该中断连接到中断 1ENI 中断允许2. 接收 TC35 的信息Network 2LD SM0.0RCV VB100, 0在初始化程序中,端口 0 以被允许接收来自 TC35 的信息,在主程序中添加上面的程序将端口 0 置于接收状态。这时端口 0 将检测收到的字符,当收到”时即开始接收,并把收到的信息保存到 VB101 开始的存储器中(VB100 中将保存每次收到的字符的个数,当接收结束时,该位置被清零)。3. 发 AT 指令PLC 要向 TC35

6、 发送两部分内容来发送一条短消息,首先是 AT 指令(AT+CMGS=18 ),当收到”后,发送 PDU 数据包。这里, 我们用 M0.0 的上升沿来触发 PLC 发送 AT 指令。在主程序中添加下面指令Network 3LD M0.0EUR SM87.7, 1RCV VB100, 0XMT VB0, 0R SM87.7, 1 SM87.7 置 0,禁止在端口 0 接收信息RCV VB100, 0 执行 RCV 指令,停止端口 0 的接收。XMT VB0, 0 发送 AT 指令到 TC35这里需要特别注意的是,在初始化程序中,端口 0 已被置为接收状态,此时如果直接发送AT 指令,将会导致端口

7、 0 发生通讯冲突,而导致其不能正常工作。因此,我们在发送指令前必须先禁止接收(将 SM87.7 复 0)然后执行 RCV 指令,RCV 指令执行时将会检测SM87.7 的状态,当发现 SM87.7=0 时,即停止端口 0 的接收。这里我们建议,在使用XMT 指令前,首先执行 R SM87.7, 1、 RCV VB100, 0 两条指令(VB100 可以换成其他地址)。XMT 指令指向 VB0,我们将 AT 指令写在 VB0 开始的数据块中4. 发送 PDU 数据包当 AT 指令发送完成时,PLC 会产生一个中断,在初始化程序中,我们已经将这个中断连接到 INT_1(ATCH INT_1, 9

8、),在这个中断中,我们重新把端口 0 置于接收状态,用来接收 TC35 返回的“,同时我们将 M0.0 复位以便检测下一次发送请求并清空 RCV 指令的接收缓冲区。将下面指令添加到 INT_1 中:Network 1LD M0.0S SM87.7, 1RCV VB100, 0R M0.0, 1Network 2LD SM0.0FILL +0, VW100, 10TC35 接收到 AT+CMGS=18 后,返回”,PLC 接收到”后开始将接收到的字符保存到VB101 开始的存储区,并且每接收一个字符即启动定时器,超过 5 ms 仍接收不到下一个字符时,就认为本次接收已经完成,产生接收完成中断。在

9、初始化程序中我们已经将该中断连接到 INT_0(ATCH INT_0, 23)。将下面指令添加到 INT_0 中:Network 1LDB= VB101, S M0.1, 1在中断程序中不易执行过多程序,因此我们在这里判断 VB101 是否为”,如果是则表示TC35 等待接收 PDU 数据,我们通过 M0.1 在主程序中触发发送 PDU 数据。将下面这段程序添加到主程序中:Network 4LD M0.1EUR SM87.7, 1RCV VB100, 0XMT VB20, 0与发送 AT 指令一样,我们首先要停止端口 0 的接收,然后发送 PDU 数据包,PDU 数据包保存在 VB21 开始的

10、数据块中,VB20 中保存 XMT 指令要发送的字节数目。 5. 判断发送状态在发送完成中断中,我们要重新置端口 0 为接收状态,同时复位 M0.1,并将 RCV 指令判断的起始字符由原来的”改为”+” ,因为 TC35 接收到 PDU 数举包后会返回”+CMGS: x”表示发送成功,或者” +CMS ERROR: 500”表示发送失败,将下面的指令添加到 INT_1 中Network 3LD M0.1S SM87.7, 1MOVB +, SMB88RCV VB100, 0R M0.1, 1在接收完成中断中(INT_0)我们可以通过判断 VB104 的状态来判断发送是否成功,如果发送成功,VB

11、104=”G” ,如果不成功 VB104=”S”。将下面的指令添加到 INT_0 中Network 2LDB= VB104, GMOVB , SMB88Network 3LDB= VB104, SMOVB , SMB88S M0.0, 1如果成功则将 RCV 指令的起始字符恢复为”,如果不成功则将 RCV 指令的起始字符恢复为”同时置位 M0.0 重新发送短消息。将整个程序下载到 PLC 中,每次置位 M0.0 即可以向 13801234567 发送一条短消息,短消息内容为“天气” 。只要更改数据块中的内容,即可向不同的手机号码发送不同内容的短消息。整个程序如下:MAINNetwork 1LD

12、 SM0.1MOVB 9, SMB30MOVB 2#11000100, SMB87MOVB , SMB88MOVW +5, SMW92MOVB 255, SMB94ATCH INT_0, 23ATCH INT_1, 9ENINetwork 2LD SM0.0RCV VB100, 0Network 3LD M0.0EUR SM87.7, 1RCV VB100, 0XMT VB0, 0Network 4LD M0.1EUR SM87.7, 1RCV VB100, 0XMT VB20, 0INT_0Network 1LDB= VB101, S M0.1, 1Network 2LDB= VB104,

13、GMOVB , SMB88Network 3LDB= VB104, SMOVB , SMB88S M0.0, 1INT_1Network 1LD M0.0S SM87.7, 1RCV VB100, 0R M0.0, 1Network 2LD SM0.0FILL +0, VW100, 10Network 3LD M0.1S SM87.7, 1MOVB +, SMB88RCV VB100, 0R M0.1, 1四、 总结这里我们总结以下自由口编程的一般原则:1. SM0.1 触发端口初始化,连接发送完成和接收完成中断(中断事件 9 和 23)2. SM0.0 触发 RCV 指令3. XMT 指令用上升沿触发,并在指令运行前先停止端口 0 的接收(复位 SM87.7,执行 RCV 指令)4. 在发送完成中断中,重新置端口 0 为接收状态(置位 SM87.7,执行 RCV 指令),清空 RCV 指令的接收缓冲

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报