西门子(中国)有限公司(SLC)

注册 登录

  签到   每日登录:+1西币 +1经验值我的支持中心

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。

技术论坛


编辑推荐: 关闭

请填写推广理由:

wincc与从站进行自由口RS485通讯的问题

作者 主题
游士

经验值: 206
发帖数: 94
精华帖: 0
主题:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 2011-12-30 09:21:34
请教各位目前有以下问题
wincc作为主站,从站位一个带有RS485端口的自由口通讯,目前已经通过串口调试工具读出和写入数据成功,以读取为例:
在串口调试工具发送数据端发送数据如下:
5A 17 00 FF 7B 00 01 11 00 FF FF FF FF 50 00 00 01 06 00 03 01 01 00 07 00 FE 前面的数据均是传输格式等,后面的几位03 01 01 00 07 00 FE中,01表示读取位数,01代表参数号,00 07 FE是校验
串口调试返回的数据,即读出的数据如下:
5A 1E 00 00 7B 00 01 11 00 FF FF FF FF 50 00 00 01 0D 00 03 01 01 00 07 00 03 10 00 00 00 01 25 B6 前面一样是传输协议和格式等,后面的 03 10 00 00 00 01 25 B6 其中01 25 是01号参数内的参数值,即125.
以上是读取01号参数的值为125的数据帧格式。读出和写入大致差不多。
请教一下怎么通过KEP或者其他让wincc与其通讯,并读取该从站的例如01号的参数值。而且wincc的显示框中仅显示125这个参数值。
看到用USER configrable server 进行做的,但是具体怎么做,不了解,求教各位。。。
最好的永远没有
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=5&a_id=949325

至圣

经验值: 11160
发帖数: 4936
精华帖: 80
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 1楼 2011-12-30 10:23:04
首先在KepServerEx里新建一个通道



然后选择用户组态驱动



设置正确的通讯参数



然后添加设备,后面都选默认



打开设备的属性,点击按钮进入数据收发组态窗口



添加一个变量,楼主这个是一个BCD码数据,选择短整型,数据格式选择2字节BCD码



在右侧窗口为Read写指令



因为楼主的协议返回数据是固定长度的,所以设置固定读取33个字节结束



因为返回数据是第31字节开始的01 25,所以开始字节设置为31



设置完成后,更新服务器,即可实现读取变量了

 
以下网友喜欢您的帖子:

  
游士

经验值: 206
发帖数: 94
精华帖: 0
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 2楼 2011-12-31 10:10:22
请问一下如果是读的话是否最后的的3个步骤有变化?
最好的永远没有
以下网友喜欢您的帖子:

  
游士

经验值: 206
发帖数: 94
精华帖: 0
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 3楼 2011-12-31 10:10:53
不好意思,打错了,请问一下如果是写入的话是否最后的的3个步骤有变化?
最好的永远没有
以下网友喜欢您的帖子:

  
至圣

经验值: 11160
发帖数: 4936
精华帖: 80
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 4楼 2011-12-31 14:17:31
写数据要在指定数据位置写数据,如果有校验还有执行写校验码的指令,不需要执行读响应和更新变量的指令。
 
以下网友喜欢您的帖子:

  
游士

经验值: 206
发帖数: 94
精华帖: 0
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 5楼 2011-12-31 15:07:33
在要写入的数据区位置加上write date ,然后只写入一次数值不考虑修改数值引起的校验变化的话,好像仍然写不进去数值。。求解
最好的永远没有
以下网友喜欢您的帖子:

  
游士

经验值: 206
发帖数: 94
精华帖: 0
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 7楼 2012-01-04 09:39:00
试了多次,写入还是不得其法,youhm,能否再帮忙看下:
我用串口调试工具写入如下数据:
5A 1C 00 FF 7B 00 01 11 00 FF FF FF FF 51 00 00 01 0B 00 03 01 01 01 05 00 00 00 00 00 77 7D
其中后半部分03 01 01 01 05 00 00 00 00 00 77 7D 中 01 01是一个数据 和参数号位1 其他的 77代表写入的参数值,7D为从1C到77的和校验(BCC)
串口调试工具返回数据:
5A 19 00 00 7B 00 01 11 00 FF FF FF FF 51 00 00 01 08 00 03 01 01 01 05 00 03 10 E6

在仅写入1号参数,并且仅改变一次数值 即写入77的情况下,按照读的步骤,不要respond 和 update tag 其他均一样的情况下,连接后发现一直写不进去,而读一直是可以的,请教一下是否哪里有问题。。。。急!!
最好的永远没有
以下网友喜欢您的帖子:

  
至圣

经验值: 11160
发帖数: 4936
精华帖: 80
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 8楼 2012-01-04 11:12:02
你是否执行了写操作,也就是在OPC客户端执行写改变变量。
 
以下网友喜欢您的帖子:

  
游士

经验值: 206
发帖数: 94
精华帖: 0
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 9楼 2012-01-04 12:35:18
如果在OPC客户端的synchronous write 进行写入数值,确实可以改变从站的数值,怎么可以让其自动写入呢?而不是从OPC客户端进行同步写入呢?如果加上write date 在opc客户端的synchronous write时就改变不了写入值了,此时Tag2的在线观察仍然是bad。是不是其他的未执行呢?
最好的永远没有
以下网友喜欢您的帖子:

  
至圣

经验值: 11160
发帖数: 4936
精华帖: 80
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 10楼 2012-01-04 13:33:58
quote:以下是引用学徒级人物在2012-01-04 12:35:18的发言:
如果在OPC客户端的synchronous write 进行写入数值,确实可以改变从站的数值,怎么可以让其自动写入呢?而不是从OPC客户端进行同步写入呢?如果加上write date 在opc客户端的synchronous write时就改变不了写入值了,此时Tag2的在线观察仍然是bad。是不是其他的未执行呢?

写入当然要用OPC客户端里,你要自动写入那你就控制OPC客户端进行写入操作就可以了,“在线观察仍然是bad”和写没关系,你写的时候不要更新变量,加上write date,你要设置正确的校验方式,也就是校验码的位置不能是固定的,要用计算校验码的指令。
 
以下网友喜欢您的帖子:

  
游士

经验值: 206
发帖数: 94
精华帖: 0
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 11楼 2012-01-04 15:11:28
如果以上操作正确后,在线观察Tag2仍是bad ,而不像读取时的变量Tag1 的VALUE值是可以与wincc连接显示的,我只需要在wincc的输入输出域上显示该变量就可得到读取的值,那么如果写入需要在OPC客户端更新,而不能通过Tag2来进行修改吗?
最好的永远没有
以下网友喜欢您的帖子:

  
至圣

经验值: 11160
发帖数: 4936
精华帖: 80
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 12楼 2012-01-04 18:59:37
wincc里通过OPC通道访问这个变量,WinCC就是客户端啊,修改WinCC里的变量就可以了。
 
以下网友喜欢您的帖子:

  
游士

经验值: 206
发帖数: 94
精华帖: 0
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 13楼 2012-01-05 13:20:36
请问如果写入数据的校验方式可以自己定义吗?比如我现在的校验方式是从第2位数据到底30位数据相加后取低位,然后将低位转换成2进制后取反加1的方式校验的,但目前我试了check sum里的所有校验,均不行,问了相关人员,说这个不是一个标准的校验方式,那么我可以自己去编辑这种校验吗?按照我说的校验方式,感觉很像LRC 8位校验,但是选择后还是校验失败,把LRC和crc校验都试了一遍 包括下面的数据格式也每个试了,还是校验失败。。。请教这种校验是哪种校验,或者可以自己编辑校验方法吗?
最好的永远没有
以下网友喜欢您的帖子:

  
至圣

经验值: 11160
发帖数: 4936
精华帖: 80
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 14楼 2012-01-05 15:20:00
选择8位LRC校验就可以了,LRC ( 8 - bit ) ,从第二个字节开始计算Start设为1,一直到校验字节前End 设为0(这个是倒数的)。
 
以下网友喜欢您的帖子:

  
游士

经验值: 206
发帖数: 94
精华帖: 0
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 15楼 2012-01-05 16:49:59
谢谢youhm的一直支持,我刚刚试了,刚刚的那种校验方式是LRC (8-bit)校验,是校验的区域没有选对,start是1 ,end是0,这样的话校验是对的,但是现在又有问题出来了,就是我在变量Tag2下的write 右边发送字符串,如下:
write char 5A
.....(中间为字符串)
write char 77 (该值是我要写入的数值)
check sum
transmit
其中没有插入 write date
这样来做的时候 运行 ,在OPC client 中监控的时候发现 Tag2 的value值一直是UNKNOW ,显示 bad
此时右点击该变量,选择synchronous write 此时不管写入何值,从站的当前值都会变为77,这说明写进去了,校验也对了。
然后 再做如下实验,在数据区插入write date 如下:
write char 5A
.....(中间为字符串)
write date
write char 00
write char 00
write char 00
write char 00
write char 75 (该值是我要写入的数值)
check sum
transmit
这个时候监控opc clinet 发现Tag2变量当前值仍然是unknown , bad ,然后同样再去写入值时,不管写入值是多少,此时从站的值都不改变了,也就是此时写不进去了
而且此时我用wincc连接opc变量,读的一个变量tag1 能选入opc下的变量,写的变量tag2选不进opc下的变
量,请教一下写入数据是否还是哪里有问题??
最好的永远没有
以下网友喜欢您的帖子:

  
至圣

经验值: 11160
发帖数: 4936
精华帖: 80
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 16楼 2012-01-05 21:35:45
这样写代码应该没啥问题了,你最后一个字节变成75又是什么意思,前面试验的不都是77吗

“Tag2 的value值一直是UNKNOW ,显示 bad”这和读更新变量有关,和写没关系
 
以下网友喜欢您的帖子:

  
游士

经验值: 206
发帖数: 94
精华帖: 0
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 17楼 2012-01-05 22:53:06
后面的75我是换一个写入值(如果是77 也一样的),现在就是插入write date后不管我写入多少,在同步写入里写入都改变不了当前值了,只有什么都不加的情况下,也就是第一种情况,没有插入write date,比如此时我写入write char75,那么在同步写入里,我不管写入多少,最后值都是变成75的(这时没有write date,所以我觉得值变成75也是对的),感觉好像write date没有用一样。我明天再试试看看,写不可以。
最好的永远没有
以下网友喜欢您的帖子:

  
游士

经验值: 206
发帖数: 94
精华帖: 0
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 楼主 18楼 2012-01-05 22:54:26
另一个就是如果一直显示BAD UNKNOW 的话,wincc创建opc后添加OPC变量读的变量添加的进去,写的变量添加不进去
最好的永远没有
以下网友喜欢您的帖子:

  
至圣

经验值: 11160
发帖数: 4936
精华帖: 80
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 19楼 2012-01-05 23:13:48
quote:以下是引用学徒级人物在2012-01-05 22:53:06的发言:
后面的75我是换一个写入值(如果是77 也一样的),现在就是插入write date后不管我写入多少,在同步写入里写入都改变不了当前值了,只有什么都不加的情况下,也就是第一种情况,没有插入write date,比如此时我写入write char75,那么在同步写入里,我不管写入多少,最后值都是变成75的(这时没有write date,所以我觉得值变成75也是对的),感觉好像write date没有用一样。我明天再试试看看,写不可以。

那说明你写的协议可能没弄清楚。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 11160
发帖数: 4936
精华帖: 80
回复:wincc与从站进行自由口RS485通讯的问题


只看楼主 20楼 2012-01-05 23:15:13
quote:以下是引用学徒级人物在2012-01-05 22:54:26的发言:
另一个就是如果一直显示BAD UNKNOW 的话,wincc创建opc后添加OPC变量读的变量添加的进去,写的变量添加不进去

怎么叫写的变量,难道你把一个变量读写分成了两个变量?
 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
扫描打开手机版
您收到0封站内信:
×
×