您现在所在的是:

台达论坛

回帖:13个,阅读:2863 [上一页] [1] [2] [下一页]
50
844638002
文章数:5
年度积分:50
历史总积分:50
品牌积分(台达):0
注册时间:2019/5/8
发站内信
发表于:2019/5/8 8:58:57
#0楼
我们做的是台达电机控制方向盘,需要同时接收方向盘的转数,还需要给方向盘同时发送控制其动作的命令,同时发送读写会有延迟,请问应该怎么做呢?
19254
pqsh 版主
文章数:7424
年度积分:1084
历史总积分:19254
品牌积分(台达):25
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2019/5/8 10:52:55
#1楼
因为不知道你的连接方式.
如果通讯,232的应该支持同时读写.但在程序上是有顺序的,后台通讯是同时的,延迟看具体情况.
如果是硬线连接,高速脉冲,di/do同时也是没问题的.
所以具体描述一下设备情况.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
85318
ZCMY 版主
文章数:47403
年度积分:1377
历史总积分:85318
品牌积分(台达):193
注册时间:2004/3/16
发站内信
2018论坛贡献奖
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(三)
2016论坛优秀版主
2015论坛优秀版主
2014论坛优秀版主
2014相约国庆
2013论坛优秀版主
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
发表于:2019/5/8 11:13:05
#2楼
没什么问题;
42315
YXBK 版主
文章数:19441
年度积分:2729
历史总积分:42315
品牌积分(台达):205
注册时间:2007/4/14
发站内信
2015论坛优秀版主
2015春节活动
2013论坛优秀版主
2012论坛优秀版主
发表于:2019/5/8 13:58:59
#3楼
通讯肯定会有延时,问题是你能不能接受这个时间,如果不能还支持其他的控制方式吗,我之前就碰到过PLC与变频器通讯造成延时而影响工艺,后来改成模拟量控制问题解决了。
大家一起学习
50
844638002
文章数:5
年度积分:50
历史总积分:50
品牌积分(台达):0
注册时间:2019/5/8
发站内信
发表于:2019/5/8 15:27:28
#4楼
回复 #1楼 pqsh
我对设备情况不是很了解,我这面使用C++写的PC客户端程序,用的modbus,然后发送不同功能码的数据包,只读取数据或只发送数据没有延迟,两个数据包一起发就会出现延迟。
50
844638002
文章数:5
年度积分:50
历史总积分:50
品牌积分(台达):0
注册时间:2019/5/8
发站内信
发表于:2019/5/8 15:30:37
#5楼
回复 #3楼 YXBK
这个延时要想办法解决,因为想实时读取方向盘的转数,还要在车辆碰撞时发送让方相盘抖一下的命令,如果有延迟,抖动延迟两秒,就很鸡肋了。请问一下,你以前的解决方法,谢谢
42315
YXBK 版主
文章数:19441
年度积分:2729
历史总积分:42315
品牌积分(台达):205
注册时间:2007/4/14
发站内信
2015论坛优秀版主
2015春节活动
2013论坛优秀版主
2012论坛优秀版主
发表于:2019/5/8 16:00:13
#6楼
以下是引用8446380022019/5/8 15:30:37的发言:
这个延时要想办法解决,因为想实时读取方向盘的转数,还要在车辆碰撞时发送让方相盘抖一下的命令,如果有延迟,抖动延迟两秒,就很鸡肋了。请问一下,你以前的解决方法,谢谢

不是说了吗,改模拟量控制了,不用通讯了,不过你这是一对一估计延迟也就零点几秒吧。
+5
大家一起学习
19254
pqsh 版主
文章数:7424
年度积分:1084
历史总积分:19254
品牌积分(台达):25
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2019/5/8 16:04:02
#7楼
那你用的通讯.通讯用的485还是232还是tcp?
你发了什么数据包?一起发(同时是不可能的)是什么意思?出现了什么情况的延迟?
你要求很严格的话,不如直接用硬线发方向盘抖动.
方向盘读数也可以不用通讯方式,车辆碰撞又是怎么回事?
实在不行,你把你服务的图纸发来,或者把你的C++有关部分的程序发来.
+5
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
50
844638002
文章数:5
年度积分:50
历史总积分:50
品牌积分(台达):0
注册时间:2019/5/8
发站内信
发表于:2019/5/8 16:16:15
#8楼
回复 #7楼 pqsh
两个要求,实时读数,然后碰撞是模拟的条件,碰撞了我就发抖动的命令。简单说就是读数和发送抖动命令,modbustcp  03和10两个功能码,现在是我发送03读数据 然后再发写数据的时候,联机监控,会显示plc D0 接到数据的时间和我发送的时间延迟了两秒或更久。硬线是什么?
50
844638002
文章数:5
年度积分:50
历史总积分:50
品牌积分(台达):0
注册时间:2019/5/8
发站内信
发表于:2019/5/8 16:46:41
#9楼
回复 #7楼 pqsh
//C++中连接和发送的语句
static int acpt = -1, ct = -1;
if(ct != 0)
{
ct = tcpModbusSocket.Connect("192.168.1.5",502);
if(ct == 0)
{
tcpModbusSocket.SendtoService("192.168.1.5",502,(char*)&modbusSRPacket,sizeof(ModbusSRPacket));
     }
}
else
{
tcpModbusSocket.SendtoService("192.168.1.5",502,(char*)&modbusSWPacket,sizeof(ModbusSWPacket));
tcpModbusSocket.SendtoService("192.168.1.5",502,(char*)&modbusSRPacket,sizeof(ModbusSRPacket));
}

发送的数据包
//modbus发送读数据请求数据包
struct ModbusSRPacket
{
ModbusSRPacket()
{
ask_high = 0x00;
ask_low = 0x00;
sign_high = 0x00;
sign_low = 0x00;
length_high = 0x00;
length_low = 0x06;
unit_sign = 0x01;
func_code = 0x03;
start_addr_high = 0x00;
start_addr_low = 0x04;
num_register_high = 0x00;
num_register_low = 0x05;
}
byte ask_high;//事务处理标识符
byte ask_low;//事务处理标识符
byte sign_high;//协议标识符
byte sign_low;//协议标识符
byte length_high;//数据长度
byte length_low;//数据长度
byte unit_sign;//设备地址
byte func_code;//功能码
byte start_addr_high;//起始地址
byte start_addr_low;//起始地址
byte num_register_high;//寄存器数量
byte num_register_low;//寄存器数量
};
//modbus发送写数据的数据包
struct ModbusSWPacket
{
ModbusSWPacket()
{
ask_high = 0x00;
ask_low = 0x00;
sign_high = 0x00;
sign_low = 0x00;
length_high = 0x00;
length_low = 0x0F;
unit_sign = 0x01;
func_code = 0x10;
start_addr_high = 0x00;
start_addr_low = 0x00;
num_register_high = 0x00;
num_register_low = 0x04;
num_write_bt = 0x08;
Self_Alignment_high = 0x00;
Self_Alignment_low = 0x00;
My_ShakeVal_high=0x00;
My_ShakeVal_low=0x00;
My_ShakeFre_high=0x00;
My_ShakeFre_low=0x00;
Steer_Damp_high=0x00;
Steer_Damp_low=0x35;

}

byte ask_high;//事务处理标识符
byte ask_low;//事务处理标识符
byte sign_high;//协议标识符
byte sign_low;//协议标识符
byte length_high;//数据长度
byte length_low;//数据长度
byte unit_sign;//设备地址
byte func_code;//功能码
byte start_addr_high;//起始地址
byte start_addr_low;//起始地址
byte num_register_high;//寄存器数量
byte num_register_low;//寄存器数量
byte num_write_bt;//写字节的个数
byte Self_Alignment_high;//
byte Self_Alignment_low;//方向盘是否回正 0回 1不回 3震动
byte My_ShakeVal_high;
byte My_ShakeVal_low;//方向盘晃动量 幅度  100
byte My_ShakeFre_high;
byte My_ShakeFre_low;//方向盘晃动频率 600
byte Steer_Damp_high;
byte Steer_Damp_low;//扭矩 阻尼  45

};

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

78.0005