我编写了一自由口协议程序,建立传感器与PLC之间的通讯,可是调试时没能接收到数据,不知是何原因,现将程序贴出来,麻烦各位帮忙分析下啊,不甚感激了。
MAIN:
Network 1 // 网络标题
// 网络注释
LD SM0.1
CALL SBR0
Network 2
LD SM0.0
ATH VB203, VB300, 12(接收到的是16进制表示的ASCII,因此与转换成十进制数,如30H转换成0)
SBR0:
Network 1 // 网络标题
// 网络注释
LD SM0.1
MOVB 16#09, SMB30
MOVB 16#9C, SMB87
MOVW 100, SMW92
MOVW 0, SMW90
MOVB 100, SMB94
ENI
ATCH INT0, 9
MOVB 150, SMB34
ATCH INT1, 10
INT0:
Network 1 // 网络标题
// 网络注释
LD SM0.0
RCV VB200, 0
MOVB 250, SMB34
ATCH INT1, 10
INT1:
Network 1 // 网络标题
// 网络注释
LD SM0.0
DTCH 10
XMT VB100, 0
数据块,因为需要想传感器发送命令,即0A 0D 01 0D,不知是否在这里定义。
VB100 4
VB101 16#0A
VB102 16#0D
VB103 16#1
VB104 16#0D
谢谢各位了,看看程序哪里出错了,为什么接收不到数据呢,我用串口调试软件可以接收的,还请能否告知如何将16进制ASCII转换成所需要的十进制数呢,是用ATH指令吗?
问题补充:
补充一个问题:我用串口调试软件可以接收到232信号,但为什么就接收不到485信号呢,我接线是这样的:传感器---485接线方式(3/5/8)----PC/PPI电缆----台式机(串口调试软件),这种接法对吗?可就是总显示通信超时。另外,我接收到232信号是这样的:传感器----232接线----台式机,这样就可以接收。我还试了这样接线:传感器---232接线---PC/PPPI电缆---PLC---USB/PPI电缆---step7-micro/win,可最后在状态表监控时收到VB200在0、1之间变化,VB201显示为43H,其他以后为0,而实际上VB200应为0A,VB201应为0D,我的传感器可以通过开关设置信号输出方式(232或485),谢谢各位了。
最佳答案
先用串口软件发送0A 0D 01 0D,如果串口软件能收到传感器数据,那么再检查程序。
提问者对于答案的评价:
谢谢您 我已经建立通讯了 谢谢您在网上贴出的那个问答式通用通讯协议
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345129.html