串行通信的问题??? 点击:1213 | 回复:10



天方夜弹

    
  • 精华:1帖
  • 求助:1帖
  • 帖子:8帖 | 23回
  • 年度积分:0
  • 历史总积分:76
  • 注册:2004年6月20日
发表于:2006-07-17 14:25:00
楼主
看了N天书,对串行通信一个问题始终无法理解,手头又没有东西可做实验,还请知道的点拔一二:
   1: 如果PLC用串行和周边设备用8bit格式通信(设PLC资料暂存器格式为16bit),那么是否通信前先要用数据位移指令把要传送的数据先分割开?16bit分成上下两部份,占用两个暂存器?
   2: 如果用16bit格式通信,那么又要把要发送的数据在暂存器中前移8bit?



wlhjly

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:38
  • 注册:2004年11月16日
发表于:2006-07-17 15:27:00
1楼
你的上位机有的是什么软件,串行通讯还包括一个起始位,一到两位停止位,以及奇偶校验位.
实际串行通信一般采用485\422接口(两根线绞起来)连接多台设备,最后用232/485转接口连接就行.
详细请电话联系13488188720


九月

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 24回
  • 年度积分:0
  • 历史总积分:44
  • 注册:2006年6月16日
发表于:2006-07-17 15:28:00
2楼
如果是PLC用串行和周边设备通讯
也没这么麻烦呀
只要用通讯指令设置好通讯协议

在编些传送指令就行了

天方夜弹

  • 精华:1帖
  • 求助:1帖
  • 帖子:8帖 | 23回
  • 年度积分:0
  • 历史总积分:76
  • 注册:2004年6月20日
发表于:2006-07-17 17:39:00
3楼
谢谢热心作答。上位机是台达PLC。如下例程,RTU 8bit格式:
PLC → VFD-B,PLC 傳送: 01 06 2000 0012 02 07
PLC 傳送資料暫存器 (PLC 傳送訊息)
暫存器 DATA 說明
D100 下 01 H Address
D101 下 06 H Function
D102 下 20 H
D103 下 00 H
資料位址
data address
暫存器 DATA 說明
D104 下 00 H
D105 下 12 H
資料內容
data content
D106 下 02 H CRC CHK Low
D107 下 07 H CRC CHK High

PLC写入变频器參數位址H2000 寫入內容為H12

1:D100到107的数据发送前都需先写入?
2:要写入的内容H12先要拆分成2部份,高位放入D104低位放入D105?
3:如果要写往H2000的数据是变化的,从一个暂存器取源数据发送,那么又要用smov指令在发送前拆分源数据,把16bit分成2个8bit?

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-07-17 19:56:00
4楼
看来楼主是使用的RS指令
(1)D100~D107的数据发送前均需要按照下级设备的协议格式预先写入你与发送的数据内容,如果与台达VFD-B系列变频器通讯,建议使用MODBUS便利指令
(2)如果你将M1161=ON,即设置为8位模式,就要将0012分割成两部分。如果M1161=OFF,则没有必要将0012分割成两部分
(3)如果是8为模式,写入H2000的内容无论是否变化,均要拆为两部分,然后分别传送到寄存器D中

天方夜弹

  • 精华:1帖
  • 求助:1帖
  • 帖子:8帖 | 23回
  • 年度积分:0
  • 历史总积分:76
  • 注册:2004年6月20日
发表于:2006-07-17 20:57:00
5楼
引用((2)如果你将M1161=ON,即设置为8位模式,就要将0012分割成两部分。如果M1161=OFF,则没有必要将0012分割成两部分
)。但在16bit格式中,0012正好被分开在2个不同的暂存器中,那又该如何移动呢?继续请教?如下:ASCII 16bit格式:
暫存器 DATA 說明
D100 下 ‘:’ 3A H STX
D100 上 ‘0’ 30 H ADR 1
D101 下 ‘1’ 31 H ADR 0 ADR (1,0)為變頻器位址
D101 上 ‘0’ 30 H CMD 1
D102 下 ‘3’ 33 H CMD 0 CMD (1,0)為指令碼
D102 上 ‘2’ 32 H
D103 下 ‘1’ 31 H
D103 上 ‘0’ 30 H
D104 下 ‘1’ 31 H
起始資料位址
Starting data address
D104 上 ‘0’ 30 H
D105 下 ‘0’ 30 H
D105 上 ‘0’ 30 H
D106 下 ‘6’ 36 H
資料 (word) 個數
Number of data(count by word)
D106 上 ‘D’ 44 H LRC CHK 1
D107 下 ‘4’ 34 H LRC CHK 0
LRC CHK (0,1) 為錯誤檢查碼
D107 上 CR A H
D108 下 LF D H END

正好要送的数据整体往后移动了8个bit,如果每个暂存器的数据都要手工移动,是不是太复杂了?有没有简便的操作?

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-07-17 21:41:00
6楼
使用MODBUS便利指令,应用指令API 100和API101 

天方夜弹

  • 精华:1帖
  • 求助:1帖
  • 帖子:8帖 | 23回
  • 年度积分:0
  • 历史总积分:76
  • 注册:2004年6月20日
发表于:2006-07-17 21:48:00
7楼
人太菜,问题多,请莫烦,请lesing du先生继续指点,不胜感激!

1:如果只用RS指令,我的理解是否正确?

2:使用MODBUS便利指令,用台达PLC,其它公司的外围设备只要支持MODBUS都可以连接通信吗?

3:如果要求反应速度快(每10msPLC做一次数学运算并和伺服器做一次通信要求伺服改变速度),RS适应吗?

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-07-18 08:03:00
8楼
(1)楼主关于RS指令的理解是正确的。
(2)使用Modbus便利指令,用台达PLC,外围设备只要支持modbus协议,就可以和PLC通讯。
(3)10ms做一次通讯应该可以,如果要让PLC和外围设备通讯速率加快,只要将PLC和外围设备的通讯速率设置为最大就可以了。如果外围设备支持115200的通讯速率,请尽量将速率设置为115200bps,以保证通讯的快速性

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-07-18 11:32:00
9楼
当PLC和台达变频器通讯时,通讯速率为9600bps,RTU模式,如果传送的数据为8个bytes,那么完成一次通讯大概需要25ms的时间,当然数据越多,时间越长,提高通讯速率,可以缩短通讯时间 。

天方夜弹

  • 精华:1帖
  • 求助:1帖
  • 帖子:8帖 | 23回
  • 年度积分:0
  • 历史总积分:76
  • 注册:2004年6月20日
发表于:2006-07-18 13:57:00
10楼
哦,这样,我得修改我的整体设计方案了。

                  谢谢lesing.du先生!

热门招聘
相关主题

官方公众号

智造工程师