完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Model Bus通信在工业上比较常用,最近需要开发与西门子PLC的model bus通信,需要读写连续地址,逻辑看起来没有问题,代码调试还没有做
private short[] ReadModelBus(ushort[] channel, int[] IO, out string msg) //可以写入多个IO或WORD { msg = “”; if (channel == null) { msg = “channel不能为空!”; return null; } if (IO != null) { if (channel.Length != IO.Length) { msg = “channel和IO值不一致!”; return null; } } ushort maxValue = channel.Max(); ushort minValue = channel.Min(); short[] datas = new short[maxValue - minValue]; int result = -1; bool bResult = tcpip.ReadMultiWordData(minValue, (ushort)(maxValue - minValue), datas, out result); //读出从最小到最大channel的所有的数据 if (!bResult) { if (result == -1) { msg = “不能连接PLC!”; return null; } else if (result != 0) { msg = string.Format(“Modbus TCP异常码={0:d02}”, result); return null; } } if (IO == null) { short[] RET_VALUE = new short[channel.Length]; for (int i = 0; i 《 channel.Length; i++) { RET_VALUE = (short)datas[channel - minValue]; } return RET_VALUE; } else { short[] RET_VALUE = new short[channel.Length]; for (int i = 0; i 《 channel.Length; i++) { RET_VALUE = (short)((datas[channel - minValue] 》》 IO) & 0x0001); } return RET_VALUE; } } |
|
|
|
只有小组成员才能发言,加入小组>>
922浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 14:37 , Processed in 0.898646 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号