上一个提问的问题一直没有解决,就是一台仪表与PLC之间的通讯,也请过有多年经验的师傅到现场,也没能解决,PLC始终读取不到仪表发送的数据。我想既然PC可以接收到仪表发送的数据,能不能将PC接收到的数据再发送给PLC,这个过程要用到什么软件,怎么才能实现,PLC是200smart,st30,有COM1通讯扩展信号板,请各位大神帮帮忙。
图片说明:
钻石用户推荐最佳答案
应该都可以的。
PC接收到的数据再发送给PLC也可以。你的PC安装组态软件就很简单。如果没有的话就要搞个程序,不熟悉的话也挺累,还不如PLC直接读。有类似通信例程可以参考的。用通信中断事件
类似程序给你参考
Network 1 // 初始化通信,9600,8.,N,1
LD SM0.1 //首次扫描
MOVB 2#10001, SMB30 //设置PLC 通信口
MOVB 2#11100100, SMB87 //设置接收和结束条件(使能接收、使用起始和结束字符)
MOVB 16#3D, SMB88 //定义起始字符“#”
MOVB 16#0D, SMB89 //定义结束字符(回车=16#0D)
MOVW 5, SMW92 //设置定时器超时数值
MOVB 15, SMB94 //信息接收最大字符数
ATCH INT1, 9 // 连接9号中断(发送完成)到中断子层序INT1
ATCH INT0, 23 // 连接23号中断(接收完成)到中断子层序INT0
ENI //使能中断程序
(2)定时轮询仪表参数:
Network 2 // 定时轮询仪表参数
LD SM0.5 //每秒钟执行
EU //边沿触发
A SM4.5 //当通信口处于空闲状态
MOVB 1, VB1555 //进入发送步骤
(3)...........:
Network 3 // 转换仪表地址为ASCII码
LD SM0.0 //始终执行
BTI VB10, LW5 //字节转换整数
+I 16#30, LW5 //转换成ASCII码
ITB LW5, VB1503 //存入发送缓存区
Network 4 //发送步骤
LDB= VB1555, 1 //发送步骤时
EU
R SM87.7, 1 //发送中取消接收模式
RCV VB1560, 0 //发送中取消接收模式
XMT VB1500, 0 //端口0发送VB1500的数据报文
Network 5 //通信口空闲则接收
LD SM4.5 //通信口空闲标志
RCV VB1560, 0 //接收数据到VB1560开始的接收缓存区
Network 6 //接收完成
LD SM0.5 //每秒执行
ED
AB>= VB1555, 1 //接收步骤时
STR VB1580, 2, VD1520 //转换接收的字符串转换成实数
MOVR VD1520, VD20 //转换后存入测量值存储区
MOVB 0, VB1555 //完成一个周期的通信工作复位状态字节
发送完成中断程序INT1
Network 1 // 发送完成,开始使能接收程序
LD SM0.0 //始终执行
S SM87.7, 1 //发送完成使能接收程序
RCV VB1560, 0 //接收
Network 2 //接收设置进入接收步骤
LDB= VB1555, 1 //如果在发送步骤则
MOVB 2, VB1555 //进入接收步骤
(5)接收完成中断程序INT0
Network 1 //接收完成进入接收后处理步骤
LD SM0.0 //始终执行
MOVB 3, VB1555 //进入接收后处理程序
Network 2 //接收完成将接收到数据存入缓存区
LD SM0.0 //始终执行
SCPY VB1560, VB1580 //接收后数据复制到字符处理区
提问者对于答案的评价:
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc279793.html