网上搜到的:
创新互联公司是一家专注网站建设、网络营销策划、小程序定制开发、电子商务建设、网络推广、移动互联开发、研究、服务为一体的技术型公司。公司成立十载以来,已经为上千家混凝土泵车各业的企业公司提供互联网服务。现在,服务的上千家客户与我们一路同行,见证我们的成长;未来,我们一起分享成功的喜悦。
pc从西门子plc读取数据的方法有两类:
1是通过wincc这类组态软件
2是自己用高级语言(vb、vc等等),方法主要有:
opc(西门子simaticnet opc、第三方kepware opc)
prodave(西门子的一个软件包,提高vb和c的通讯函数库)
simticnet软件提供了几个通讯dll(此法是一般的第三方scada所采用)
可以用其他组态软件,比如组态王。也可以用vb编写一程序然后从plc读取数据再写入数据库。如果不需要监控画面,我觉得vb好些。
12601, 转换成16进制是3139,16进制 ASC吗31对应字符1, 39对应9。 后面的用这个思路去转换就对上了。
0001 2569这两个应该是和格式相关的字符。0001一般就是开始的意思。
一个变量包含两个字符,转换算法如下。
1。 取高位字符,除以H100, H是VB中16进制表示法。 除以H100效果是右移8位。 位了保险起见,再和H00FF做与运算,保证取得的ASC码是合法的。
2。取低位字符,与H00FF做与运算,去掉高位数据,剩下的就是低位ASC码。
3。将ASC码转换为字符,用CHR函数即可,然后连接所有的字符即可得String
a = (":010612000020C70D0A")'这里肯定有问题
括号必须在引号里面,不然编译不过的
你的问题是没有发送确认符,一般串口指令末尾都有换行确认符vbCr,下位机接收到vbCr后才认为是一条完整指令,改成下面的试验
Dim a As String = ":010612000020C70D0A" vbCr
这个圈里的是通讯过程中传送的Asc码,包含了PLc的站号地址、指令、起始符等内容,具体要看你的PLc通讯协议。通讯与开关量是两回事,你得补习下与通讯相关的内容。