小弟最近做了一个项目,smart控制3台伺服电机,走modbus控制,本体自带串口连接触摸屏(触摸屏没有网口), 又增加一信号板用来连接三台伺服。
伺服的控制通过modbus的轮询来控制,轮询结构如下
1。读伺服1报警码 ( 1字)
2。读伺服2报警码
3。读伺服3报警码
4。读伺服1位置 (2字)
5。读伺服2位置
6。读伺服3位置
7。写伺服1运动指令 (7字)
8。写伺服2运动指令
9。写伺服3运动指令
按照上述结构,实测响应延迟在3.5s。。即触摸屏按下按钮大约3.5秒,电机开始转动。。
大家谁做过类似的项目,你们的延迟多少?
还是我哪里搞错了呢?延迟实在是太大了,大家帮忙看看,谢谢了
梯形图太占地方,轮询程序转化为下面格式:
Network 1
LD SM0.1
R M13.0, 4
R M14.0, 3
R M15.0, 3
R M10.1, 6
R M12.1, 3
Network 2
// MODBUS主站初始化,波特率19200,无奇偶校验,端口号1 = 可选 CM01 信号板上的 RS-485 ,超时1000ms
LD SM0.0
= L60.0
LD SM0.0
= L63.7
LD L60.0
CALL SBR20, L63.7, 19200, 0, 1, +1000, M10.0, MB20
Network 3
// 避过首次扫描
LDN SM0.1
EU
S M13.1, 1
Network 4
// 轴1报警代码读取 16进制1013转化成10进制
LD M13.1
= L60.0
LD M13.1
EU
= L63.7
LD L60.0
CALL SBR21, L63.7, 1, 0, 44116, +1, &VB122, M10.1, MB21
Network 5
LD M10.1
EU
S M13.2, 1
R M13.1, 1
Network 6
// 轴2报警代码读取
LD M13.2
= L60.0
LD M13.2
EU
= L63.7
LD L60.0
CALL SBR21, L63.7, 2, 0, 44116, +1, &VB142, M10.2, MB22
Network 7
LD M10.2
EU
S M13.3, 1
R M13.2, 1
Network 8
// 轴3报警代码读取
LD M13.3
= L60.0
LD M13.3
EU
= L63.7
LD L60.0
CALL SBR21, L63.7, 3, 0, 44116, +1, &VB162, M10.3, MB23
Network 9
LD M10.3
EU
S M14.1, 1
R M13.3, 1
Network 10
// 通讯读取的报警代码大于0,小于84,将对应报警位输出
LD SM0.0
LPS
AW>= VW122, +1
AW<= VW122, +84
= M1.0
LRD
AW>= VW142, +1
AW<= VW142, +84
= M2.0
LPP
AW>= VW162, +1
AW<= VW162, +84
= M3.0
Network 11
LD M14.1
= L60.0
LD M14.1
EU
= L63.7
LD L60.0
CALL SBR21, L63.7, 1, 0, 44098, +2, &VB124, M10.4, MB24
Network 12
// 读取轴1位置 16进制1001转化为10进制
LD M10.4
EU
S M14.2, 1
R M14.1, 1
Network 13
// 读取轴2位置
LD M14.2
= L60.0
LD M14.2
EU
= L63.7
LD L60.0
CALL SBR21, L63.7, 2, 0, 44098, +2, &VB144, M10.5, MB25
Network 14
LD M10.5
EU
S M14.3, 1
R M14.2, 1
Network 15
// 读取轴3位置
LD M14.3
= L60.0
LD M14.3
EU
= L63.7
LD L60.0
CALL SBR21, L63.7, 3, 0, 44098, +2, &VB164, M10.6, MB26
Network 16
LD M10.6
EU
S M15.1, 1
R M14.3, 1
Network 17
// 通讯数据地址是 0x7200-0x7206,根据指令的不同,需要的数据也不一样, 16进制7200转化为10进制为29184
LD M15.1
= L60.0
LD M15.1
EU
= L63.7
LD L60.0
CALL SBR21, L63.7, 1, 1, 429185, +7, &VB300, M12.1, MB27
Network 18
LD M12.1
EU
S M15.2, 1
R M15.1, 1
Network 19
// 通讯数据地址是 0x7200-0x7206,根据指令的不同,需要的数据也不一样, 16进制7200转化为10进制为29184
LD M15.2
= L60.0
LD M15.2
EU
= L63.7
LD L60.0
CALL SBR21, L63.7, 2, 1, 429185, +7, &VB320, M12.2, MB28
Network 20
LD M12.2
EU
S M15.3, 1
R M15.2, 1
Network 21
// 通讯数据地址是 0x7200-0x7206,根据指令的不同,需要的数据也不一样, 16进制7200转化为10进制为29184
LD M15.3
= L60.0
LD M15.3
EU
= L63.7
LD L60.0
CALL SBR21, L63.7, 3, 1, 429185, +7, &VB340, M12.3, MB29
Network 22
LD M12.3
EU
S M13.1, 1
R M15.3, 1