如何在 MATLAB 中通过 HTTP 向工业运动控制器发送/写入数据?
How can I send /write data to the Industrial Motion Controller via HTTP in MATLAB?
我可以在 MATLAB 中使用 HTTP 从运动控制器读取数据。
在 MATLAB 中请求代码...
api = 'http://192.168.0.105';
url = [api 'kas/plcvariables?variables=Velocity&format=text'];
options = weboptions('ContentType', text);
data = webread(url, options);
但是,我无法在MATLAB中写入运动控制器,数据格式为"text"或"json",没关系。如何写入运动控制器?
写作格式 json
PUT http://198.51.100.0/kas/plcvariables?format=json { "MachineSpeed"
: {"value" : "100.000000"}, " IntegerVar " : {"value" : "20"},
“UntitledST.LocalVariable” : {"value" : "’SampleString’”} }
在文本中
PUT http://198.51.100.0/kas/plcvariables?format=text
MachineSpeed=100.000000,IntegerVar=20,UntitledST.LocalVariable=’SampleString’
我在 Matlab 中尝试了一些代码,最后一个在下面。
api = 'http://192.168.0.105';
url = [api 'kas/plcvariables?'];
ab = struct('value', '10000.00');
data.V = {ab};
options = webopitons('MediaType', 'application/json',
'RequestMethod', 'POST', 'ContentType', 'json');
response = webwrite(url, data, options);
但他们都给出了以下相同的错误。
使用 readContentFromWebService 时出错(第 45 行)服务器返回消息:"Not Found" for URL,'http://192.168.0.105/kas/plcvariables?' (使用 HTTP 响应代码 404)。
我想我不知道正确的 URL 地址,你能帮我写一个正确的 URL 运动控制器地址吗?
在 Martin (kollmorgen.com/en-us/developer-network/…) 的帮助下,我找出了我的错误所在。我与上面的 link 和下面的代码
共享代码给任何可能需要它的人
int main() {
CURLcode ret;
CURL *curl_easy_handle;
curl_global_init(CURL_GLOBAL_ALL);
std::string jsonstr = "{\"Position\" : {\"value\" : \"4000\"}}";
struct curl_slist *headers;
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "charset: utf-8");
curl_easy_handle = curl_easy_init();
if (curl_easy_handle == NULL) {
return 128;
}
curl_easy_setopt(curl_easy_handle, CURLOPT_URL, "http://192.168.0.105/kas/plcvariables?format=json");
curl_easy_setopt(curl_easy_handle, CURLOPT_CUSTOMREQUEST, "PUT");
curl_easy_setopt(curl_easy_handle, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl_easy_handle, CURLOPT_POSTFIELDS, jsonstr.c_str());
curl_easy_setopt(curl_easy_handle, CURLOPT_USERAGENT, "libcrp/0.1");
ret = curl_easy_perform(curl_easy_handle);
curl_easy_cleanup(curl_easy_handle);
curl_global_cleanup();
curl_easy_handle = NULL;
curl_slist_free_all(headers);
headers = NULL;
}
我可以在 MATLAB 中使用 HTTP 从运动控制器读取数据。
在 MATLAB 中请求代码...
api = 'http://192.168.0.105';
url = [api 'kas/plcvariables?variables=Velocity&format=text'];
options = weboptions('ContentType', text);
data = webread(url, options);
但是,我无法在MATLAB中写入运动控制器,数据格式为"text"或"json",没关系。如何写入运动控制器?
写作格式 json
PUT http://198.51.100.0/kas/plcvariables?format=json { "MachineSpeed"
: {"value" : "100.000000"}, " IntegerVar " : {"value" : "20"},
“UntitledST.LocalVariable” : {"value" : "’SampleString’”} }
在文本中
PUT http://198.51.100.0/kas/plcvariables?format=text
MachineSpeed=100.000000,IntegerVar=20,UntitledST.LocalVariable=’SampleString’
我在 Matlab 中尝试了一些代码,最后一个在下面。
api = 'http://192.168.0.105';
url = [api 'kas/plcvariables?'];
ab = struct('value', '10000.00');
data.V = {ab};
options = webopitons('MediaType', 'application/json',
'RequestMethod', 'POST', 'ContentType', 'json');
response = webwrite(url, data, options);
但他们都给出了以下相同的错误。
使用 readContentFromWebService 时出错(第 45 行)服务器返回消息:"Not Found" for URL,'http://192.168.0.105/kas/plcvariables?' (使用 HTTP 响应代码 404)。
我想我不知道正确的 URL 地址,你能帮我写一个正确的 URL 运动控制器地址吗?
在 Martin (kollmorgen.com/en-us/developer-network/…) 的帮助下,我找出了我的错误所在。我与上面的 link 和下面的代码
共享代码给任何可能需要它的人int main() {
CURLcode ret;
CURL *curl_easy_handle;
curl_global_init(CURL_GLOBAL_ALL);
std::string jsonstr = "{\"Position\" : {\"value\" : \"4000\"}}";
struct curl_slist *headers;
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "charset: utf-8");
curl_easy_handle = curl_easy_init();
if (curl_easy_handle == NULL) {
return 128;
}
curl_easy_setopt(curl_easy_handle, CURLOPT_URL, "http://192.168.0.105/kas/plcvariables?format=json");
curl_easy_setopt(curl_easy_handle, CURLOPT_CUSTOMREQUEST, "PUT");
curl_easy_setopt(curl_easy_handle, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl_easy_handle, CURLOPT_POSTFIELDS, jsonstr.c_str());
curl_easy_setopt(curl_easy_handle, CURLOPT_USERAGENT, "libcrp/0.1");
ret = curl_easy_perform(curl_easy_handle);
curl_easy_cleanup(curl_easy_handle);
curl_global_cleanup();
curl_easy_handle = NULL;
curl_slist_free_all(headers);
headers = NULL;
}