我有一台外设,是RS232接口的,需要同PLC200通信,我将端口0用作自由端口通信,通过RS232转RS485连接,外设RS232通信参数:115200bps、1位停止位、8位数据位、1位偶校验。当PLC向外设发送16#03后,外设才能向PLC发送ASCII,格式是{XXX.XXX}.我按200PLC使用手册编写了程序但是怎么都不能通信,请教各位老师给我指点指点,谢谢
以下是程序
主程序
LD SMO.1
MOVB 16#59, SMB30 端口0初始化 115200bps
MOVB 16#E0, SMB87 接受控制字
MOVB 16#7B, SMB88 消息字符的开始
MOVB 16#7D, SMB89 消息字符的结束
MOVB 20, SMB94 接受最大字符
MOVB 5, VB10 发送最大字符
MOVB 16#03 VB11 发送字符
ATCH INT_0:INT0, 9 中断连接发送完成中断事件
ATCH INT_2:INT2, 23 中断连接接受完成中断事件
ENI 开放中断
XMT VB10, 0 发送命令 端口0
中断0程序
LD SM0.0
MOVB 20, SMB34 中断时间
ATCH INT_1:INT1, 10
CRETI
中断1程序
LD SM0.0
DTCH 10
RCV VB100, 0 接受命令 端口
中断程序2
LD SM0.0
MOVB 20, SNB34
ATCH INT_3:INT3, 10
CRETI
中断3程序
LD SM0.0
DTCH 10
XTM VB10, 0
各位老师给我看看是哪里不对,老通信不了。
最佳答案
你需要个串口调试工具软件和USB转485转换器。
1.首先把电脑当成你的外设通过485方式与PLC直接通信,在串口调试工具里面把通信参数按你上面的要求来设置,首先看看PLC有没有把16#03数据发送出来,如果发送出来了,你的串口调试工具里面可以接收到数据的。
2.模拟外设把要发送的ASCII码数据通过调试工具发送给PLC,观察SMB86寄存器状态,检查PLC有没有收到?
3.PLC收到ASCII数据后还需要ATH指令转换才能进一步使用。
通过这几个步骤,通常可以知道问题在哪里,然后再去进一步解决相应问题,希望对你有帮助。
提问者对于答案的评价:
感谢给予无私的支持,现已经做好了,谢谢
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc197386.html